資源描述:
《南寧達(dá)內(nèi)嵌入式實(shí)時(shí)linux的技術(shù)研究》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、達(dá)內(nèi)嵌入式南寧達(dá)內(nèi)嵌入式實(shí)時(shí)Linux的技術(shù)研究PC硬件使用的增加是近年來高端嵌入式系統(tǒng)的一個(gè)最重要的發(fā)展。由于這個(gè)趨勢,嵌入式系統(tǒng)的硬件成本大大地下降了,然而應(yīng)用于嵌入式PC平臺的軟件系統(tǒng)卻沒有太多的選擇。目前嵌入式操作系統(tǒng)主要有PalmOS,WindowsCE,EPOC,LinuxCE,QNX.ECOS,LYNX等,但這些系統(tǒng)一般都價(jià)格昂貴、不具有良好的可移植性。由于linux具有適應(yīng)于多種CPU和多種硬件平臺、性能穩(wěn)定、裁剪性能好,開發(fā)和使用都很容易等特點(diǎn),越來越多的人傾向于將Linux嵌入到移動(dòng)計(jì)算平臺、信息家電、媒體手機(jī)及其它產(chǎn)品中去。這同時(shí)也對Linux的實(shí)時(shí)性提出了更高的要求。我
2、們參加開發(fā)的上海數(shù)字技術(shù)中心的電子警察系統(tǒng)就是這樣一個(gè)基于PC平臺的嵌入式系統(tǒng)。它的主要功能是安裝在十字路口上監(jiān)視闖紅燈的汽車,錄制這些鏡頭,并適時(shí)通過網(wǎng)絡(luò)傳回總監(jiān)控中心。該系統(tǒng)原來采用Vxworks作為運(yùn)作平臺,然而由于Vxworks的昂貴,且只能安裝一臺機(jī)器,因此將Linux改制成嵌入式的、具有一定實(shí)時(shí)性的系統(tǒng)平臺。1硬件需求考慮到實(shí)際的系統(tǒng)功能和系統(tǒng)開發(fā)的難度,我們決定選擇X86體系作為平臺,底板采PCM-5864/L板,CPU選擇Intel的P55C系列,同時(shí)它也支持PC104接口。I/O方面,PCM-5864/L支持EIDE、FDD、Keyboard、Mouse、RS-232、USB
3、等接口,同時(shí)也集成了10Mbps/l00Mbps網(wǎng)卡。另外PCM-5864/L還集成了顯卡,并提供36位TTL的LCD接口、LVDS接口和Video-in/TV-out接口。由于電子磁盤體積小、抗震性能也較好的特點(diǎn),我們選用M-Systems公司的DiskOnChip2000作為存儲設(shè)備,這樣比較適合該系統(tǒng)戶外作業(yè)的特性。Doc2000還提供了安裝的工具包、Linux下的驅(qū)動(dòng)程序和對不同版本Linux內(nèi)核的Patch。安裝時(shí)只需對Linux內(nèi)核和Lilo進(jìn)行相應(yīng)修改即可。這樣的硬件選擇使系統(tǒng)開發(fā)的難度大大降低了。2嵌入Linux主要解決的幾個(gè)問題由于采用X86體系作為平臺,大大降低了嵌入化Li
4、nux的難度,主要要考慮的問題可分為以下幾個(gè)方面:達(dá)內(nèi)嵌入式2.1非虛擬內(nèi)存Linux采用虛擬內(nèi)存技術(shù),當(dāng)數(shù)據(jù)溢出內(nèi)存時(shí),可以將其交換到磁盤交換空間巾去,這對程序員來說是不可見的。然而,普通的嵌入式系統(tǒng)不需要這種強(qiáng)大的功能。實(shí)際上,可能不希望它在實(shí)時(shí)的關(guān)鍵系統(tǒng)里,因?yàn)樗鼤?huì)帶來無法控制的時(shí)問因素。因此,考慮將虛擬內(nèi)存的功能去掉。然而,清除Linux的虛擬內(nèi)存代碼非常費(fèi)事,我們采用一種迂回的方法,即將交換空間的大小設(shè)置為零。這樣,如果你寫的程序比實(shí)際的內(nèi)存大,系統(tǒng)就會(huì)當(dāng)作你的運(yùn)行用盡了交換空間來處理;這個(gè)程序?qū)⒉粫?huì)運(yùn)行,或者malloc將會(huì)失靈。這只是一種臨時(shí)的解決方案,系統(tǒng)中存在許多冗余未清除的
5、代碼,如果進(jìn)一步改進(jìn)可以縮小系統(tǒng)體積。2.2處理文件系統(tǒng)許多嵌入式系統(tǒng)沒有磁盤或者文件系統(tǒng),Linux不需要它們也能運(yùn)行,這樣可以在系統(tǒng)啟動(dòng)時(shí)就將操作系統(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è)置啟動(dòng)(Lilo和BIOS)當(dāng)PC系統(tǒng)啟動(dòng)時(shí),由BIOS執(zhí)行了一些低水平的CPU初始化和其它硬件的配置,然后辨認(rèn)哪個(gè)磁盤里有操作系統(tǒng),把操作系統(tǒng)復(fù)制到RAM并且轉(zhuǎn)向它。在PC上運(yùn)行的Linux依靠PC的BIOS來提供這些配置和OS加戟功
6、能。由于選擇了X86系列作為平臺,同樣可以通過設(shè)置BIOS來設(shè)定由Doc啟動(dòng)。我們將內(nèi)核安裝在Doc上。同時(shí)修改目錄/etc下的lilo.config文件,使Lilo記錄內(nèi)核代碼在存儲設(shè)備上的位置,然后將Lilo安裝在Doc上。這樣當(dāng)系統(tǒng)啟動(dòng)時(shí).BIOS指定Doc為啟動(dòng)設(shè)備,這時(shí)Lilo被執(zhí)行。它指出Linux內(nèi)核的位置,加載內(nèi)核。2.4設(shè)備驅(qū)動(dòng)程序的編寫由于采用通用PC平臺,有許多驅(qū)動(dòng)程序都不需要自己再編寫了。系統(tǒng)中,唯一需要編寫驅(qū)動(dòng)程序的設(shè)備是上海數(shù)字中心的數(shù)據(jù)采集卡.該卡采用的是Bt848芯片。Bt848是一塊很常用的芯片.許多驅(qū)動(dòng)程序都非常相近,因此編寫它的驅(qū)動(dòng)程序有很好的例子可以參考
7、,相應(yīng)的,編寫應(yīng)用程序只需調(diào)用驅(qū)動(dòng)程序提供的接口即可,如同操作文件一樣。達(dá)內(nèi)嵌入式3Linux的實(shí)時(shí)性分析以上簡要介紹了實(shí)現(xiàn)Linux的嵌入化過程,在嵌入化Linux的同時(shí),還考慮提高它的實(shí)時(shí)性。于是著手分析Linux的實(shí)時(shí)性能和存在的不足。概括來講,影響操作系統(tǒng)實(shí)時(shí)性能的主要有3個(gè)方面:(1)外部中斷管理我們知道,外部中斷發(fā)生時(shí),操作系統(tǒng)調(diào)用中斷處理程序.進(jìn)入核心態(tài)。為了保證系統(tǒng)執(zhí)行的正確性,要