<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>

    曙海教育集團論壇Linux專區Linux技術討論區 → 嵌入式實時Linux的技術研究


      共有8389人關注過本帖樹形打印

    主題:嵌入式實時Linux的技術研究

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


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

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

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

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

      1 硬件需求

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

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

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

      2.1 非虛擬內存

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

      2.2 處理文件系統

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

      2.3 設置啟動(Lilo和BIOS)

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

      2.4 設備驅動程序的編寫

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

      3 Linux的實時性分析

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

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

      (1)外部中斷管理

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

      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

      };

      上面每一項標識未完成任務的隊列類型,不同隊列的任務輕重緩急不同。

      extern unsigned long bh_active;

      extern unsigned long bh_mask;

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

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

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

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


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

    返回版面帖子列表

    嵌入式實時Linux的技術研究








    簽名
    主站蜘蛛池模板: 国产精品伦一区二区三级视频 | 一个人免费观看www视频| 欧美日韩一区二区成人午夜电影| 国产成人精品123区免费视频| 中国陆超帅精瘦ktv直男少爷| 最近高清日本免费| 免费观看欧美一级特黄| 进进出出稚嫩娇小狭窄| 欧美极度极品另类| 国产免费无码一区二区| 99久久精品免费精品国产| 成人午夜电影在线| 亚洲国产精品久久久天堂| 男女下面一进一出无遮挡se| gogogo高清在线播放| 欧美一区二区三区久久综合| 免费高清在线影片一区| 老师好大好爽办公室视频| 国产精品99久久免费观看| g0g0人体全免费高清大胆视频| 成人做受120视频试看| 人妻少妇精品无码专区动漫| 老外毛片免费视频播放| 国产真实伦在线观看| jlzzjlzz亚洲乱熟在线播放| 成人动漫3d在线观看| 久久精品国产精品亚洲色婷婷| 欧美三级电影院| 亚洲首页在线观看| 笨蛋英子未删1至925下载| 国产精品玩偶在线观看| 一级毛片女人18水真多| 无码h黄肉3d动漫在线观看| 亚洲一区精品无码| 欧美性猛交xxxx乱大交蜜桃| 免费在线观看一区| 精品国产福利在线观看| 国产亚洲精品bt天堂精选| h视频在线观看免费观看| 巨龙征母全文王雪琴笔趣阁 | 青青青国产依人在在线观看高|