午夜伦理在线-午夜伦理在线观看-午夜毛片免费看-午夜美女久久久久爽久久-午夜免费


曙海教育集團(tuán)論壇Linux專區(qū)Linux技術(shù)討論區(qū) → 嵌入式實時Linux的技術(shù)研究


  共有9452人關(guān)注過本帖樹形打印

主題:嵌入式實時Linux的技術(shù)研究

美女呀,離線,留言給我吧!
wangxinxin
  1樓 個性首頁 | 博客 | 信息 | 搜索 | 郵箱 | 主頁 | UC


加好友 發(fā)短信
等級:青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊:2010-11-12 11:08:23
嵌入式實時Linux的技術(shù)研究  發(fā)帖心情 Post By:2010-11-15 13:46:29

PC硬件使用的增加是近年來高端嵌入式系統(tǒng)的一個最重要的發(fā)展。由于這個趨勢,嵌入式系統(tǒng)的硬件成本大大地下降了,然而應(yīng)用于嵌入式PC平臺的軟件系統(tǒng)卻沒有太多的選擇。

  目前嵌入式操作系統(tǒng)主要有Palm OS,WindowsCE,EPOC,LinuxCE,QNX.ECOS,LYNX等,但這些系統(tǒng)一般都價格昂貴、不具有良好的可移植性。由于linux具有適應(yīng)于多種CPU和多種硬件平臺、性能穩(wěn)定、裁剪性能好,開發(fā)和使用都很容易等特點,越來越多的人傾向于將Linux嵌入到移動計算平臺、信息家電、媒體手機(jī)及其它產(chǎn)品中去。這同時也對Linux的實時性提出了更高的要求。

  我們參加開發(fā)的上海數(shù)字技術(shù)中心的電子警察系統(tǒng)就是這樣一個基于PC平臺的嵌入式系統(tǒng)。它的主要功能是安裝在十字路口上監(jiān)視闖紅燈的汽車,錄制這些鏡頭,并適時通過網(wǎng)絡(luò)傳回總監(jiān)控中心。該系統(tǒng)原來采用Vxworks作為運(yùn)作平臺,然而由于Vxworks的昂貴,且只能安裝一臺機(jī)器,因此將Linux改制成嵌入式的、具有一定實時性的系統(tǒng)平臺。

  1 硬件需求

  考慮到實際的系統(tǒng)功能和系統(tǒng)開發(fā)的難度,我們決定選擇X86體系作為平臺,底板采PCM-5864/L板,CPU選擇Intel的P55C系列,同時它也支持PC104接口。I/O方面,PCM-5864/L支持EIDE、FDD、Keyboard、Mouse、RS-232、USB等接口,同時也集成了10Mbps/l00Mbps網(wǎng)卡。另外PCM-5864/L還集成了顯卡,并提供36位TTL的LCD接口、LVDS接口和Video-in/TV-out接口。由于電子磁盤體積小、抗震性能也較好的特點,我們選用M-Systems公司的DiskOnChip2000作為存儲設(shè)備,這樣比較適合該系統(tǒng)戶外作業(yè)的特性。Doc2000還提供了安裝的工具包、Linux下的驅(qū)動程序和對不同版本Linux內(nèi)核的Patch。安裝時只需對Linux內(nèi)核和Lilo進(jìn)行相應(yīng)修改即可。這樣的硬件選擇使系統(tǒng)開發(fā)的難度大大降低了。

  2 嵌入Linux主要解決的幾個問題

  由于采用X86體系作為平臺,大大降低了嵌入化Linux的難度,主要要考慮的問題可分為以下幾個方面:

  2.1 非虛擬內(nèi)存

  Linux采用虛擬內(nèi)存技術(shù),當(dāng)數(shù)據(jù)溢出內(nèi)存時,可以將其交換到磁盤交換空間巾去,這對程序員來說是不可見的。然而,普通的嵌入式系統(tǒng)不需要這種強(qiáng)大的功能。實際上,可能不希望它在實時的關(guān)鍵系統(tǒng)里,因為它會帶來無法控制的時問因素。因此,考慮將虛擬內(nèi)存的功能去掉。然而,清除Linux的虛擬內(nèi)存代碼非常費事,我們采用一種迂回的方法,即將交換空間的大小設(shè)置為零。這樣,如果你寫的程序比實際的內(nèi)存大,系統(tǒng)就會當(dāng)作你的運(yùn)行用盡了交換空間來處理;這個程序?qū)⒉粫\(yùn)行,或者malloc將會失靈。這只是一種臨時的解決方案,系統(tǒng)中存在許多冗余未清除的代碼,如果進(jìn)一步改進(jìn)可以縮小系統(tǒng)體積。

  2.2 處理文件系統(tǒng)

  許多嵌入式系統(tǒng)沒有磁盤或者文件系統(tǒng),Linux不需要它們也能運(yùn)行,這樣可以在系統(tǒng)啟動時就將操作系統(tǒng)和預(yù)先編好的應(yīng)用程序全都加載到內(nèi)存中去。然而.考慮到以后的擴(kuò)展,我們分析了Linux當(dāng)前的文件系統(tǒng),將與系統(tǒng)和程序運(yùn)行相關(guān)的文件析取出來,移植到Doc上面.這樣就能為應(yīng)用程序的開發(fā)人員提供更方便的接口。

  2.3 設(shè)置啟動(Lilo和BIOS)

  當(dāng)PC系統(tǒng)啟動時,由BIOS執(zhí)行了一些低水平的CPU初始化和其它硬件的配置,然后辨認(rèn)哪個磁盤里有操作系統(tǒng),把操作系統(tǒng)復(fù)制到RAM并且轉(zhuǎn)向它。在PC上運(yùn)行的Linux依靠PC的BIOS來提供這些配置和OS加戟功能。由于選擇了X86系列作為平臺,同樣可以通過設(shè)置BIOS來設(shè)定由Doc啟動。我們將內(nèi)核安裝在Doc上。同時修改目錄/etc下的lilo.config文件,使Lilo記錄內(nèi)核代碼在存儲設(shè)備上的位置,然后將Lilo安裝在Doc上。這樣當(dāng)系統(tǒng)啟動時.BIOS指定Doc為啟動設(shè)備,這時Lilo被執(zhí)行。它指出Linux內(nèi)核的位置,加載內(nèi)核。

  2.4 設(shè)備驅(qū)動程序的編寫

  由于采用通用PC平臺,有許多驅(qū)動程序都不需要自己再編寫了。系統(tǒng)中,唯一需要編寫驅(qū)動程序的設(shè)備是上海數(shù)字中心的數(shù)據(jù)采集卡.該卡采用的是Bt848芯片。Bt848是一塊很常用的芯片.許多驅(qū)動程序都非常相近,因此編寫它的驅(qū)動程序有很好的例子可以參考,相應(yīng)的,編寫應(yīng)用程序只需調(diào)用驅(qū)動程序提供的接口即可,如同操作文件一樣。

  3 Linux的實時性分析

  以上簡要介紹了實現(xiàn)Linux的嵌入化過程,在嵌入化Linux的同時,還考慮提高它的實時性。于是著手分析Linux的實時性能和存在的不足。

  概括來講,影響操作系統(tǒng)實時性能的主要有3個方面:

  (1)外部中斷管理

  我們知道,外部中斷發(fā)生時,操作系統(tǒng)調(diào)用中斷處理程序.進(jìn)入核心態(tài)。為了保證系統(tǒng)執(zhí)行的正確性,要求內(nèi)核狀態(tài)不重入,也即保證這部分關(guān)鍵代碼執(zhí)行結(jié)束之前不被打斷。因此,這時進(jìn)入關(guān)中模式,這是外部中斷管理中影響Linux性能的一個關(guān)鍵的地方。在這段時間內(nèi),操作系統(tǒng)負(fù)責(zé)將中斷發(fā)送到相應(yīng)的設(shè)備驅(qū)動程序去處理,系統(tǒng)不能進(jìn)行其它任何工作,為了減少這個過程損耗的時間,Linux內(nèi)核利用底半處理過程(bottom-half-handler)幫助實現(xiàn)中斷的快速處理。在Linux設(shè)備驅(qū)動程序中,往往將最關(guān)鍵最迅速的部分處理完成之后,將剩余部分任務(wù)放置到隊列中。當(dāng)中斷響應(yīng)完成后.再執(zhí)行剩余部分的任務(wù)。在Linux中,主要設(shè)置了以下幾個數(shù)據(jù)結(jié)構(gòu)來標(biāo)志未完成的任務(wù)。

  enum{

  TIMER_BH=0,CONSOLE_BH,TQUEUE_BH,DIGI_BH,SERIAL_BH,RISCOM8_BH,SPECIALIX_BH,

  ESP_BH,NET_BH,SCSI_BH,IMMEDIATE_BH,KEYBOARD_BH,CYCLADES_BH,CM206_BH,

  JS_BH,MACSERIAL_BHISICOM_BH

  };

  上面每一項標(biāo)識未完成任務(wù)的隊列類型,不同隊列的任務(wù)輕重緩急不同。

  extern unsigned long bh_active;

  extern unsigned long bh_mask;

  extern void(*bh_base[32])(void);

  bh_base代表的指針數(shù)組中可包含32個不同的底半處理過程。bh_mask和札bh_active的數(shù)據(jù)位分別代表對應(yīng)的底半處理過程是否安裝和激活。如果bh_mask的第N位為1.則說明bh_base數(shù)組的第N個元素包含某個底半處理過程的地址;如果bh_active的第N位為1.則說明必須由調(diào)度程序在適當(dāng)?shù)臅r候調(diào)用第N個底半處理過程。這些數(shù)據(jù)結(jié)構(gòu)的設(shè)置一般是在外部設(shè)備初始化和中斷處理函數(shù)運(yùn)行時進(jìn)行的。如:在serialc中進(jìn)行serial設(shè)備的初始化,它調(diào)用語句init_bh(SERIAL_BH,do_serial_bh);來設(shè)置bh_base[]數(shù)組中相應(yīng)于SERIAL_BH的那一項。又如:在serial設(shè)備的處理程序中通過語句queue_task(&info->tqueue,&tq_serial);將不是很緊急的任務(wù)放入tq_serial隊列中,等中斷處理函數(shù)結(jié)束,由bh_base中注冊的底半處理程序處理隊列中的任務(wù)。

  中斷管理的第二個關(guān)鍵部分即是系統(tǒng)是否允許中斷嵌套的能力,也就是說,當(dāng)響應(yīng)一個中斷時,是否允許其它更高優(yōu)先級的中斷打斷,等更高優(yōu)先級的中斷處理完畢,是否還能恢復(fù)原來中斷處理的現(xiàn)場。通過這項功能,系統(tǒng)設(shè)計者可以指示外部中斷的優(yōu)先級,從而確保高優(yōu)先級的任務(wù)能及時處理。Linux允許中斷嵌套,它是利用外部中斷管理器來設(shè)置中斷的優(yōu)先級的。在Linux的中斷處理程序的啟動過程中,它一般調(diào)用語句mask_and_ack_8259A(irq);來設(shè)置8259中的int_mask寄存器.使優(yōu)先級比此中斷低的中斷不能發(fā)生。在中斷處理程序離開時,調(diào)用enable_8259A_irq(irq)來改回8259中int_mask寄存器原來的值。因此,intr類中斷的優(yōu)先級由硬件8259來決定.

  由此可見,Linux的中斷管理部分具有高效的特點,已經(jīng)可以滿足許多軟實時任務(wù)的要求


支持(0中立(0反對(0單帖管理 | 引用 | 回復(fù) 回到頂部

返回版面帖子列表

嵌入式實時Linux的技術(shù)研究








簽名
主站蜘蛛池模板: 最新国产精品自拍 | 亚洲精品久久久久久久网站 | 亚洲精品一区vv国产 | 色一涩| 黄黄视频在线观看 | 亚洲欧美一区二区三区在线播放 | 欧美精品做人一级爱免费 | 激情网址大全 | 成人黄网18免费观看的网站 | 成年人网站在线观看视频 | 国产成人三级经典中文 | 日韩经典一区 | 欧美成人国产一区二区 | 日本人69视频在线观看 | 一级特黄性生活大片免费观看 | 亚洲欧美h | 一级黄大片 | 国产成人v视频在线观看 | 亚洲制服一区 | 色天天影视 | 国产精品一区二区久久不卡 | 亚洲六月丁香色婷婷综合久久 | 黄色一级免费大片 | 亚洲黄色免费网址 | 成人免费大片a毛片 | 亚洲精品高清在线观看 | 大杳焦伊人久久综合热 | 视频在线亚洲 | www.99色.com| 亚洲国产精品久久久久网站 | 亚洲精品小说一区二区三区 | 91宅男| 成人a一级毛片免费看 | 日韩欧美精品综合久久 | 美国毛片在线观看 | 美女扒开胸罩露出奶了无遮挡免费 | 中文无线乱码二三四区 | 丰满的大乳老师三级在线观看 | 中文字幕在线永久 | 欧美爱片 | 婷婷伊人 |