電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>嵌入式Linux實(shí)時(shí)優(yōu)化技巧解析

嵌入式Linux實(shí)時(shí)優(yōu)化技巧解析

2017-11-04 | rar | 0.4 MB | 次下載 | 1積分

資料介紹

 嵌入式系統(tǒng)是在有限的空間和有限的資源中運(yùn)行,高效地實(shí)現(xiàn)某種特定功能或功能集合的裝置。
  它的開發(fā)通常受到很多客觀條件的限制,諸如較弱的CPU處理能力、較小的內(nèi)存空間、較少的可供選擇的外設(shè)、有限的電源供應(yīng)等。每個(gè)嵌入式系統(tǒng)的開發(fā)無不是精打細(xì)算,以求用有限的資源發(fā)揮最大的功效。在各種嵌入式系統(tǒng)上運(yùn)行的操作系統(tǒng)中,嵌入式Linux以其免費(fèi)、高可靠性、廣泛的硬件支持以及開放源碼等眾多特性正在獲得越來越多的關(guān)注。其源碼開放特性使得開發(fā)者可以針對(duì)特定的嵌入式系統(tǒng)對(duì)Linux內(nèi)核進(jìn)行修改,以滿足開發(fā)要求,達(dá)到系統(tǒng)最優(yōu)化的目的。嵌入式Linux應(yīng)用中的一大問題是Linux的實(shí)時(shí)性問題。實(shí)時(shí)系統(tǒng)必須在限定時(shí)間內(nèi)對(duì)外部事件作出正確響應(yīng),重點(diǎn)放在對(duì)滿足突發(fā)性、暫時(shí)性的處理需求上。而Linux作為傳統(tǒng)的分時(shí)操作系統(tǒng),關(guān)注更多的是系統(tǒng)的整體數(shù)據(jù)吞吐量。如何提高Linux的實(shí)時(shí)性能是擺在廣大嵌入式系統(tǒng)級(jí)開發(fā)人員面前的挑戰(zhàn)。
  1 相關(guān)研究
  目前市面上有各種Linux發(fā)行版,但嚴(yán)格來說,Linux指的是Linus Torvalds維護(hù)的(及通過主要和鏡像網(wǎng)站發(fā)布的)內(nèi)核。建立嵌入式系統(tǒng)不需要特別的內(nèi)核,一個(gè)嵌入式Linux系統(tǒng)只是代表一個(gè)基于Linux內(nèi)核的嵌入式系統(tǒng),本文后面提及的Linux均指Linux內(nèi)核。目前已有很多改善Linux實(shí)時(shí)性能的工作在進(jìn)行中。最新的2.6版Linux已經(jīng)實(shí)現(xiàn)了可搶占式的內(nèi)核任務(wù)調(diào)度,但是不確定的中斷延時(shí)問題沒有得到解決。即2.6版的Linux高優(yōu)先級(jí)內(nèi)核空間進(jìn)程雖然能像在用戶空間里那樣搶占低優(yōu)先級(jí)進(jìn)程的系統(tǒng)資源,但是從中斷發(fā)出開始到中斷服務(wù)程序的第1條指令開始執(zhí)行的時(shí)間是不確定的。
  除了Linux開發(fā)者的改進(jìn)工作之外,還有一些組織、公司為提高Linux的實(shí)時(shí)性做了大量工作。其中有代表性的是Fsm Labs公司的RT-Linux、Monta Vista公司的MontaVista Linux、由Paolo Mantegazza等人維護(hù)的RTAI(Realtime Application InteRFace)項(xiàng)目。這些項(xiàng)目采用的方法可歸納為兩類:
 ?。?)直接修改Linux內(nèi)核。MontaVista Linux采用的就是這種方法。它將Linux修改成稱為Relatively Fully Preemptable Kernel的可搶占式內(nèi)核,并使現(xiàn)了實(shí)時(shí)調(diào)度機(jī)制和算法,增加了一個(gè)細(xì)粒度定時(shí)器,這樣就將Linux修改成為一個(gè)軟實(shí)時(shí)內(nèi)核。
  (2)“雙內(nèi)核”方式。RTAI項(xiàng)目和RT-Linux采用了這種方法。這種方法將傳統(tǒng)Linux“架空”,作為新增加的小型實(shí)時(shí)內(nèi)核的一個(gè)優(yōu)先級(jí)最低的任務(wù)執(zhí)行,而實(shí)時(shí)任務(wù)則作為優(yōu)先級(jí)最高的任務(wù)。即在實(shí)時(shí)任務(wù)存在的情況下運(yùn)行實(shí)施任務(wù),否則才運(yùn)行Linux本身的任務(wù)。
  MontaVista和RT-Linux的局限性在于它是一個(gè)商用軟件,不遵循GNU 的源代碼開放原則。若要在系統(tǒng)中使用這種Linux,則需要支付一筆頗為可觀的授權(quán)費(fèi)用,這就違背了使用Linux的初衷—— 開源、免費(fèi),能夠發(fā)展自己的知識(shí)產(chǎn)權(quán)。
  RTAI為了實(shí)時(shí)性能舍棄了Linux固有的很多優(yōu)點(diǎn):對(duì)大量硬件的廣泛支持,優(yōu)秀的穩(wěn)定性、可靠性。開發(fā)者一方面要針對(duì)RTAI自定義的一個(gè)硬件抽象層RTHAL(Real Time Hardware Abstraction Layer)重新編寫驅(qū)動(dòng)程序,而且龐大的Linux開發(fā)社區(qū)的成果也無法方便地應(yīng)用到實(shí)時(shí)核心中。
  2 影響Linux實(shí)時(shí)性的因素
  2.1 任務(wù)切換及其延時(shí)
  任務(wù)切換延時(shí)是Linux從一個(gè)進(jìn)程切換到另一個(gè)進(jìn)程所需的時(shí)間,即高優(yōu)先級(jí)進(jìn)程從發(fā)出CPU 資源申請(qǐng)到進(jìn)程的第1條指令開始執(zhí)行的間隔。在實(shí)時(shí)系統(tǒng)中,任務(wù)切換延時(shí)必須越短越好。如之前所提到的,Linux 2.6.X已經(jīng)實(shí)現(xiàn)了可搶占式內(nèi)核,高優(yōu)先級(jí)內(nèi)核空間進(jìn)程可以像在用戶空間中那樣讓CPU在任何時(shí)候停止低優(yōu)先級(jí)進(jìn)程轉(zhuǎn)而執(zhí)行自己。但是有2種例外情況:
  (1)進(jìn)程在臨界區(qū)(Critical Section)中執(zhí)行的時(shí)候不能被其他進(jìn)程搶占;
 ?。?)中斷服務(wù)程序(Interrupt Service Routine)不能被其他進(jìn)程搶占。
  2.2 基于優(yōu)先級(jí)的調(diào)度算法
  在Linux 2.6中,采用了O(1)調(diào)度算法。它是一個(gè)基于優(yōu)先級(jí)的搶先式調(diào)度器,為每一個(gè)進(jìn)程分配一個(gè)唯一的優(yōu)先級(jí),調(diào)度器保證在所有等待運(yùn)行的任務(wù)中,首先被執(zhí)行的總是高優(yōu)先級(jí)的任務(wù),為此高優(yōu)先級(jí)的任務(wù)能夠搶占低優(yōu)先級(jí)的任務(wù)。
  這個(gè)調(diào)度器開銷恒定,與當(dāng)前系統(tǒng)開銷無關(guān),能夠改善系統(tǒng)實(shí)時(shí)性能。但是調(diào)度系統(tǒng)沒有提供除CPU以外的其他資源剝奪運(yùn)行,實(shí)時(shí)性能沒有得到根本改觀。如果兩個(gè)任務(wù)需要使用同一個(gè)資源(如高速緩存),高優(yōu)先級(jí)的任務(wù)已準(zhǔn)備就緒,而此刻低優(yōu)先級(jí)的任務(wù)正在用這個(gè)資源,高優(yōu)先級(jí)的任務(wù)就必須等待,直到低優(yōu)先級(jí)任務(wù)結(jié)束釋放了該資源后才能被執(zhí)行,這被稱為優(yōu)先級(jí)倒置。
  2.3 中斷延時(shí)、中斷服務(wù)程序
  中斷延時(shí)指的是從外設(shè)發(fā)出中斷信號(hào)開始到ISR的第1條指令開始執(zhí)行的時(shí)間間隔。由外部中斷引起的實(shí)時(shí)任務(wù)需求是實(shí)時(shí)系統(tǒng)處理量的主要組成部分,足夠快地中斷響應(yīng)和迅速地中斷服務(wù)程序處理是衡量實(shí)時(shí)系統(tǒng)的重要性能指標(biāo)。不同的ISR執(zhí)行時(shí)間是不一樣的,即使是相同的ISR也可能因?yàn)橛卸鄠€(gè)出口而有不同的執(zhí)行時(shí)間。而ISR執(zhí)行時(shí)外部中斷是被禁用的,造成這樣一種情況,即使Linux的中斷延時(shí)非常小,如果在一個(gè)ISR執(zhí)行時(shí)某個(gè)外設(shè)也產(chǎn)生了一個(gè)中斷信號(hào),因?yàn)檎趫?zhí)行的ISR運(yùn)行時(shí)間的不確定性和不可搶占性,也會(huì)產(chǎn)生Linux的中斷延時(shí)的不可預(yù)測(cè)性。
  3 系統(tǒng)實(shí)時(shí)性能的提高
  3.1 任務(wù)切換機(jī)倒的建立
  在2.1節(jié)中提到進(jìn)程在臨界區(qū)中執(zhí)行的時(shí)候不能被搶占的問題,為了不影響系統(tǒng)穩(wěn)定性、減少調(diào)試和測(cè)試的時(shí)間,我們不打算對(duì)此進(jìn)行修改,而引入一個(gè)機(jī)制保證實(shí)時(shí)任務(wù)能夠得到優(yōu)先執(zhí)行。即在實(shí)時(shí)系統(tǒng)中,只有當(dāng)進(jìn)程的臨界區(qū)能在下一個(gè)實(shí)時(shí)任務(wù)開始之前結(jié)束才被允許進(jìn)入。
  如何判斷下一個(gè)實(shí)時(shí)任務(wù)中斷信號(hào)的產(chǎn)生時(shí)間,一般來說中斷信號(hào)是為了那些開始時(shí)間不可預(yù)測(cè)的任務(wù)而設(shè)定的,它的產(chǎn)生是完全隨機(jī)的。為了使中斷信號(hào)的時(shí)間能夠被預(yù)測(cè),將中斷信號(hào)的產(chǎn)生與時(shí)鐘中斷掛鉤:中斷信號(hào)只能與時(shí)鐘中斷同時(shí)產(chǎn)生。時(shí)鐘中斷由系統(tǒng)計(jì)時(shí)硬件以周期性間隔產(chǎn)生。這個(gè)間隔由內(nèi)核根據(jù)Hz值設(shè)定。Hz是一個(gè)與體系結(jié)構(gòu)有關(guān)的常數(shù),在文件中定義。當(dāng)前的Linux為大多數(shù)平臺(tái)定義的Hz值是100,亦即時(shí)鐘中斷周期是10ms。顯然這是達(dá)不到實(shí)時(shí)系統(tǒng)定時(shí)精度要求的。提高Hz值能夠帶來系統(tǒng)性能提升,但卻是以增加系統(tǒng)開銷為代價(jià)。這就必須仔細(xì)權(quán)衡實(shí)時(shí)性要求和系統(tǒng)開銷的平衡。一種方法是通過大量的測(cè)試確定的實(shí)時(shí)任務(wù)中斷請(qǐng)求發(fā)生的時(shí)間間隔和進(jìn)程在臨界區(qū)中的執(zhí)行時(shí)間,取一個(gè)稍大于大多數(shù)實(shí)時(shí)任務(wù)中斷間隔和臨界區(qū)執(zhí)行時(shí)間的數(shù)值。
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1TC358743XBG評(píng)估板參考手冊(cè)
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開關(guān)電源基礎(chǔ)知識(shí)
  4. 5.73 MB  |  6次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計(jì)
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費(fèi)
  11. 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
  12. 0.70 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21548次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191185次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183278次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)