嵌入式系統(tǒng)第2講基本概念_第1頁
嵌入式系統(tǒng)第2講基本概念_第2頁
嵌入式系統(tǒng)第2講基本概念_第3頁
嵌入式系統(tǒng)第2講基本概念_第4頁
嵌入式系統(tǒng)第2講基本概念_第5頁
已閱讀5頁,還剩106頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

嵌入式系統(tǒng)應(yīng)用——ARM與C/OS-Ⅱ第二講基本概念及設(shè)計(jì)方法安徽工業(yè)大學(xué)計(jì)算機(jī)學(xué)院本節(jié)提要1324嵌入式系統(tǒng)硬件基礎(chǔ)嵌入式BSP的基本概念嵌入式系統(tǒng)軟件基礎(chǔ)嵌入式系統(tǒng)設(shè)計(jì)方法5一個(gè)嵌入式設(shè)計(jì)方法實(shí)例馮·諾依曼體系結(jié)構(gòu)和哈佛體系結(jié)構(gòu)CISC與RISC影響CPU性能的因素存儲器系統(tǒng)I/O接口一、嵌入式系統(tǒng)硬件基礎(chǔ)主要介紹:典型嵌入式系統(tǒng)基本組成-硬件MPU微處理器電源模塊時(shí)鐘復(fù)位FlashRAMROMUSBLCDKeyboard外圍電路Other外設(shè)1.1馮·諾依曼體系結(jié)構(gòu)模型指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器存儲器程序指令0指令1指令2指令3指令4數(shù)據(jù)數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2ARM7采用1.2哈佛體系結(jié)構(gòu)指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器程序存儲器指令0指令1指令2數(shù)據(jù)存儲器數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2地址指令地址數(shù)據(jù)ARM9采用哈佛體系結(jié)構(gòu)獨(dú)立的程序存儲器和數(shù)據(jù)存儲器為數(shù)字信號處理提供了較高的性能,因此仍被廣泛使用。實(shí)時(shí)處理信號會(huì)對數(shù)據(jù)存取系統(tǒng)帶來兩方面的壓力:1)大量的數(shù)據(jù)流通過CPU;2)數(shù)據(jù)必須在一個(gè)精確的時(shí)間間隔內(nèi)被處理,而不是恰巧輪到CPU時(shí)進(jìn)行處理。讓兩個(gè)存儲器有不同的端口將提供較大的存儲器帶寬,數(shù)據(jù)和程序不必再競爭同一個(gè)端口,因此數(shù)據(jù)適時(shí)的移動(dòng)更加容易。1.3CISC和RISCCISC:復(fù)雜指令集(ComplexInstructionSetComputer)具有大量的指令和尋址方式8/2原則:80%的程序只使用20%的指令大多數(shù)程序只使用少量的指令就能夠運(yùn)行。RISC:精簡指令集(ReducedInstructionSetComputer)1979年美國加州大學(xué)伯克利分校提出,它將精選出來的指令在流水線處理器中高效執(zhí)行。目前還在發(fā)展和豐富過程中。在通道中只包含最有用的指令確保數(shù)據(jù)通道快速執(zhí)行每一條指令使CPU硬件結(jié)構(gòu)設(shè)計(jì)變得更為簡單CISC與RISC的數(shù)據(jù)通道IFIDREGALUMEM開始退出IFIDALUMEMREG微操作通道開始退出單通數(shù)據(jù)通道EXEXRISC體系結(jié)構(gòu)的特點(diǎn)大多數(shù)指令只需要執(zhí)行簡單和基本的功能,執(zhí)行過程在一個(gè)機(jī)器周期內(nèi)完成;由于存儲器訪問指令執(zhí)行時(shí)間長,盡量減少這類指令,只保留Load/Store指令;芯片邏輯采用硬布線邏輯以減少指令解釋的開銷,而不采用或少采用微碼技術(shù);減少指令數(shù)和尋址方式,簡化控制部件,提高執(zhí)行速度;指令格式固定,指令譯碼簡單;編譯開銷很大,應(yīng)盡可能優(yōu)化。ARM體系結(jié)構(gòu)在RISC基礎(chǔ)上新增的特殊技術(shù)所有的指令都可以根據(jù)前面的執(zhí)行結(jié)果決定是否被執(zhí)行,從而提高指令的執(zhí)行效率;可用Load/Store指令批量傳送數(shù)據(jù),以提高數(shù)據(jù)的傳輸效果;可在一條數(shù)據(jù)處理指令中同時(shí)完成邏輯處理和移位處理。RISC和CISC架構(gòu)各有優(yōu)點(diǎn),現(xiàn)代的CPU往往采用CISC的外圍,內(nèi)部加入RISC特性。如超常指令集CPU就是融合了RISC和CISC的優(yōu)勢,是CPU的未來發(fā)展方向之一。1.4影響CPU性能的因素:流水線、超標(biāo)量和緩存流水線技術(shù):幾個(gè)指令可以并行執(zhí)行。提高了CPU的運(yùn)行效率內(nèi)部信息流要求通暢流動(dòng)譯碼取指執(zhí)行add譯碼取指執(zhí)行sub譯碼取指執(zhí)行cmp時(shí)間AddSubCmpARM7:三級流水線ARM9:五級流水線ARM10:六級流水線ARM11:八級流水線三級流水線每周期執(zhí)行一條指令的吞吐量是理想情況。由于取指的存儲器訪問和執(zhí)行的數(shù)據(jù)路徑占用都是不可同時(shí)共享的資源,對多周期指令來說,就會(huì)產(chǎn)生流水線阻塞。如:STR指令的數(shù)據(jù)傳送周期既需要存儲器訪問,又要占用數(shù)據(jù)通道,因此第3條指令的執(zhí)行要等第2條指令的數(shù)據(jù)傳送周期結(jié)束后才能運(yùn)行。雖然第3、4條指令都在正常時(shí)鐘周期被讀出,但譯碼時(shí)間被推遲,造成第5條指令的取指延遲。decodefetchaddexcutedecodefetchstrcalc:addr時(shí)間123dataxferfetchadddecodeexcutefetchadddecodeexcutedecodefetchaddexcute45ARM的流水線設(shè)計(jì)問題縮短程序執(zhí)行時(shí)間流水線的相關(guān)問題結(jié)構(gòu)相關(guān)、數(shù)據(jù)相關(guān)、控制相關(guān)等1)提高時(shí)鐘頻率。時(shí)鐘周期縮短,即每周期完成的工作量減少,就要求簡化流水線的邏輯,從而要增加流水線級數(shù);2)減小CPI。必須改善3級流水線中阻塞狀況,從而需要解決流水線的相關(guān)問題。流水線的相關(guān)問題流水線的結(jié)構(gòu)相關(guān):指指令在流水線中重疊執(zhí)行時(shí),產(chǎn)生資源沖突。在3級馮·諾依曼結(jié)構(gòu)中,數(shù)據(jù)和指令在同一存儲器中,幾乎每一時(shí)鐘周期都必須訪問存儲器(取指或傳數(shù)據(jù)),因此訪問數(shù)據(jù)存儲器時(shí)就必須停止取指令存儲器。ARM的解決方案是:1)采用分離式數(shù)據(jù)cache和指令cache。此法解決了取指和數(shù)據(jù)傳送的沖突、減小了CPI2)ALU中采用單獨(dú)加法器來完成地址計(jì)算。使執(zhí)行周期的運(yùn)算不再產(chǎn)生資源沖突。流水線的相關(guān)問題續(xù)流水線的數(shù)據(jù)相關(guān):指當(dāng)前指令需要前面指令的執(zhí)行結(jié)果。ARM的解決方案是:1)定向(旁路或短路)技術(shù)。將前面指令的執(zhí)行結(jié)果直接傳給后面需要的指令,而不必寫入寄存器。2)流水線互鎖技術(shù)。指令需要的數(shù)據(jù)因以前的指令未完成而沒有準(zhǔn)備好時(shí)就產(chǎn)生管道互鎖?;ユi發(fā)生時(shí),流水線將停止這個(gè)指令的執(zhí)行,直到數(shù)據(jù)準(zhǔn)備好為止。流水線的控制相關(guān):發(fā)生在流水線遇到分支指令和其它需要改變PC值的指令時(shí)。ARM的解決方案是:1)引入延時(shí)分支。2)盡早計(jì)算出分支轉(zhuǎn)移成功時(shí)的PC值。ARM的5級流水線取指:將指令從存儲器中取出,放入指令流水線中。指令譯碼:對指令譯碼,從寄存器堆中讀取寄存器操作數(shù)。執(zhí)行:把一個(gè)操作數(shù)移位,產(chǎn)生ALU結(jié)果。數(shù)據(jù)緩存:若需要?jiǎng)t訪問數(shù)據(jù)存儲器;否則ALU的結(jié)果只是簡單的緩沖一個(gè)時(shí)鐘周期,使所有的指令具有同樣的流水線流程。寫回:將指令產(chǎn)生的結(jié)果回寫到寄存器堆,包括任何從存儲器讀取的數(shù)據(jù)。減少了在每個(gè)時(shí)鐘周期內(nèi)必須完成的最大工作量,進(jìn)而允許使用較高的時(shí)鐘頻率。5級流水線分為:超標(biāo)量執(zhí)行superscalarmachine超標(biāo)量執(zhí)行:超標(biāo)量CPU采用多條流水線結(jié)構(gòu)。超標(biāo)量技術(shù):就是通過重復(fù)設(shè)置多套指令執(zhí)行部件,同時(shí)處理并完成多條指令,實(shí)現(xiàn)并行操作來達(dá)到提高處理速度的目的。超標(biāo)量處理機(jī):一個(gè)時(shí)鐘周期內(nèi)同時(shí)執(zhí)行多條指令的處理機(jī)。ARM7、ARM9、ARM11都是單周期指令機(jī);ARM公司推出新一代處理器Cortex-A8處理器將是超標(biāo)量機(jī)。

65nm工藝、功耗<300mW、主頻1GHZ,主要用于視頻、游戲等超標(biāo)量執(zhí)行執(zhí)行1預(yù)取指令CACHE譯碼2譯碼1執(zhí)行2執(zhí)行1預(yù)取譯碼2譯碼1執(zhí)行2流水線1流水線2數(shù)據(jù)超標(biāo)量與流水線技術(shù)是兼容的,要在一個(gè)時(shí)鐘周期內(nèi)同時(shí)處理多條指令,超標(biāo)量處理機(jī)必須有兩條以上的流水線、多個(gè)能獨(dú)立工作的操作部件。從而帶來了多流水線的調(diào)度問題和操作部件的資源沖突問題,因而控制邏輯比較復(fù)雜。超標(biāo)量執(zhí)行中的數(shù)據(jù)相關(guān):

subr2,r1,r0;

mulr4,r3,r2;單流水線的標(biāo)量處理機(jī)只有連續(xù)出現(xiàn)相同操作的指令序列時(shí)流水線才能不“斷流”,功能部件的效率才能充分發(fā)揮。超標(biāo)量處理機(jī)正好相反,它希望相同操作的指令不要連續(xù)出現(xiàn),否則會(huì)發(fā)生資源沖突。這一要求正好符合一般標(biāo)量程序的特點(diǎn)。高速緩存(CACHE)1、為什么采用高速緩存微處理器的時(shí)鐘頻率比內(nèi)存速度提高快得多,高速緩存可以提高內(nèi)存的平均性能。2、高速緩存的工作原理高速緩存是一種小型、快速的存儲器,它保存部分主存內(nèi)容的拷貝。CPU高速緩存控制器CACHE主存數(shù)據(jù)數(shù)據(jù)地址總線和總線橋CPU低速設(shè)備橋數(shù)據(jù)高速總線存儲器高速設(shè)備低速設(shè)備低速總線1.5存儲器系統(tǒng)RAM:隨機(jī)存取存儲器,SRAM:靜態(tài)隨機(jī)存儲器,DRAM:動(dòng)態(tài)隨機(jī)存儲器

1)SRAM比DRAM快

2)SRAM比DRAM耗電多

3)DRAM存儲密度比SRAM高得多

4)DRAM需要周期性刷新ROM:只讀存儲器FLASH:閃存SRAM和DRAM1)SRAM2)DRAMCSR/WAddrDataCSR/WCASDataRASAddr輸入輸出接口I/OA/D、D/A鍵盤LCD存儲器接口設(shè)備接口例如USBUSB:UniversalSerialBus,通用串行總線大家生活中常見的與USB有關(guān)的東西有:U盤、移動(dòng)硬盤、無驅(qū)型的MP3(U盤)USB接口的鍵盤、Mouse、打印機(jī)、數(shù)碼相機(jī)……即插即用,熱插撥,系統(tǒng)不需重啟便可工作,且易于擴(kuò)展(127個(gè))USB2.0以低成本實(shí)現(xiàn)高達(dá)480Mb/s的傳輸率(USB1.1的全速設(shè)備可達(dá)12Mb/s)接口標(biāo)準(zhǔn)統(tǒng)一、端口供電一個(gè)典型的USB通訊系統(tǒng)HOST系統(tǒng)HUBDEVICEDDEVICE應(yīng)用軟件+驅(qū)動(dòng)程序+接口芯片HUBU盤其他數(shù)據(jù)采集器驅(qū)動(dòng)代碼+嵌入式處理器+HOST芯片HUBU盤其他數(shù)據(jù)采集器通用系統(tǒng)模型PC機(jī)中的情況嵌入式系統(tǒng)應(yīng)用1324嵌入式系統(tǒng)硬件基礎(chǔ)嵌入式BSP的基本概念嵌入式系統(tǒng)軟件基礎(chǔ)嵌入式系統(tǒng)設(shè)計(jì)方法5一個(gè)嵌入式設(shè)計(jì)方法實(shí)例二、嵌入式系統(tǒng)軟件基礎(chǔ)操作系統(tǒng)的分類嵌入式實(shí)時(shí)操作系統(tǒng)前臺與后臺多任務(wù)(嵌入式應(yīng)用的普遍要求),任務(wù)優(yōu)先級,調(diào)度非占先式與占先式、可重入型函數(shù)主要介紹:3.1操作系統(tǒng)的分類(1)順序執(zhí)行系統(tǒng):系統(tǒng)內(nèi)只含有一個(gè)程序,獨(dú)占CPU的運(yùn)行時(shí)間,按語句順序執(zhí)行該程序,直至執(zhí)行完畢,另一程序才能啟動(dòng)運(yùn)行。如DOS操作系統(tǒng)。(2)分時(shí)操作系統(tǒng):系統(tǒng)內(nèi)同時(shí)可以有多個(gè)程序運(yùn)行,把CPU的時(shí)間按順序分成若干片,每個(gè)時(shí)間片內(nèi)執(zhí)行不同的程序。如UNIX。(3)實(shí)時(shí)操作系統(tǒng):系統(tǒng)內(nèi)有多個(gè)程序運(yùn)行,每個(gè)程序有不同的優(yōu)先級,只有最高優(yōu)先級的任務(wù)才能占有CPU的控制權(quán)。按實(shí)時(shí)性分類強(qiáng)實(shí)時(shí)系統(tǒng),其系統(tǒng)響應(yīng)時(shí)間在毫秒或微秒級(數(shù)控機(jī)床);一般實(shí)時(shí)系統(tǒng),其系統(tǒng)響應(yīng)時(shí)間在毫秒-幾秒的數(shù)量級上,其實(shí)時(shí)性的要求比強(qiáng)實(shí)時(shí)系統(tǒng)要差一些(電子菜譜的查詢)。弱實(shí)時(shí)系統(tǒng),其系統(tǒng)響應(yīng)時(shí)間約為數(shù)十秒或更長(工程機(jī)械)。1)循環(huán)輪詢系統(tǒng):(PollingLoop)最簡單的軟件結(jié)構(gòu)是循環(huán)輪詢,程序依次檢查系統(tǒng)的每一個(gè)輸入條件,一旦條件成立就進(jìn)行相應(yīng)的處理。Initialize()While(true){if(condition_1)action_1();if(condition_2)action_2();……if(condition_n)acition_n();}按軟件結(jié)構(gòu)分類2)事件驅(qū)動(dòng)系統(tǒng):(Event-Drivensystem)事件驅(qū)動(dòng)系統(tǒng)是能對外部事件直接響應(yīng)的系統(tǒng)。它包括前后臺、實(shí)時(shí)多任務(wù)、多處理器等,是嵌入式實(shí)時(shí)系統(tǒng)的主要形式。應(yīng)用程序是一個(gè)無限的循環(huán),循環(huán)中調(diào)用相應(yīng)的函數(shù)完成相應(yīng)的操作,這部分可以看成后臺行為(background)。中斷服務(wù)程序處理異步事件,這部分可以看成前臺行為(foreground)。后臺也可以叫做任務(wù)級,前臺也叫中斷級。很多基于微處理器的產(chǎn)品采用前后臺系統(tǒng)設(shè)計(jì),如電話機(jī)、玩具等。從省電的角度出發(fā),平時(shí)微處理器處在停機(jī)狀態(tài),所有的事都靠中斷服務(wù)來完成。前后臺系統(tǒng)(后臺循環(huán)、前臺中斷)ISRISR后臺前臺ISR時(shí)間代碼的臨界區(qū)也稱為臨界區(qū),指處理時(shí)不可分割的代碼。一旦這部分代碼開始執(zhí)行,則不允許任何中斷打入。在進(jìn)入臨界區(qū)之前要關(guān)中斷,而臨界區(qū)代碼執(zhí)行完以后要立即開中斷(在任務(wù)切換時(shí),地址、指令、數(shù)據(jù)等寄存器堆棧保護(hù))。代碼的臨界區(qū)多任務(wù)(任務(wù)、進(jìn)程和線程)CPU寄存器任務(wù)控制塊1任務(wù)控制塊2任務(wù)控制塊n休眠、就緒、運(yùn)行、掛起、被中斷任務(wù)1任務(wù)2任務(wù)n……CPU寄存器一個(gè)任務(wù),也稱作一個(gè)線程,是一個(gè)簡單的運(yùn)行程序。每個(gè)任務(wù)都是整個(gè)應(yīng)用的某一部分,每個(gè)任務(wù)被賦予一定的優(yōu)先級,有它自己的一套CPU寄存器和自己的棧空間。多任務(wù)運(yùn)行的實(shí)現(xiàn)實(shí)際上是靠CPU在許多任務(wù)之間轉(zhuǎn)換、調(diào)度。

CPU只有一個(gè),輪番服務(wù)于一系列任務(wù)中的某一個(gè)。多任務(wù)運(yùn)行使CPU的利用率得到最大的發(fā)揮,并使應(yīng)用程序模塊化。在實(shí)際應(yīng)用中,多任務(wù)的最大特點(diǎn)是,開發(fā)人員可以將很復(fù)雜的應(yīng)用程序?qū)哟位H蝿?wù)的狀態(tài)休眠、就緒、運(yùn)行、掛起、被中斷系統(tǒng)內(nèi)核(Kernel)與調(diào)度(Scheduler)多任務(wù)系統(tǒng)中,內(nèi)核負(fù)責(zé)管理各個(gè)任務(wù),或者說為每個(gè)任務(wù)分配CPU時(shí)間,并且負(fù)責(zé)任務(wù)之間的通信。內(nèi)核提供的基本服務(wù)是任務(wù)切換。內(nèi)核本身也增加了應(yīng)用程序的額外負(fù)荷,代碼空間增加ROM用量,內(nèi)核本身的數(shù)據(jù)結(jié)構(gòu)增加了RAM的用量。內(nèi)核本身對CPU的占用時(shí)間一般在2到5個(gè)百分點(diǎn)之間。調(diào)度(Scheduler)是內(nèi)核的主要職責(zé)之一,就是要決定該輪到哪個(gè)任務(wù)運(yùn)行了。多數(shù)實(shí)時(shí)內(nèi)核是基于優(yōu)先級調(diào)度法的。每個(gè)任務(wù)根據(jù)其重要程度的不同被賦予一定的優(yōu)先級。基于優(yōu)先級的調(diào)度法指,CPU總是讓處在就緒態(tài)的優(yōu)先級最高的任務(wù)先運(yùn)行。非占先式與占先式非占先式(non-preemptive)非占先式調(diào)度法也稱作合作型多任務(wù)(cooperativemultitasking),各個(gè)任務(wù)彼此合作共享一個(gè)CPU。中斷服務(wù)可以使一個(gè)高優(yōu)先級的任務(wù)由掛起狀態(tài)變?yōu)榫途w狀態(tài)。但中斷服務(wù)以后控制權(quán)還是回到原來被中斷了的那個(gè)任務(wù),直到該任務(wù)主動(dòng)放棄CPU的使用權(quán)時(shí),那個(gè)高優(yōu)先級的任務(wù)才能獲得CPU的使用權(quán)。非占先式內(nèi)核的一個(gè)特點(diǎn)是幾乎不需要使用信號量保護(hù)共享數(shù)據(jù)。運(yùn)行著的任務(wù)占有CPU,而不必?fù)?dān)心被別的任務(wù)搶占。非占先式內(nèi)核的最大缺陷在于其響應(yīng)高優(yōu)先級的任務(wù)慢,任務(wù)已經(jīng)進(jìn)入就緒態(tài),但還不能運(yùn)行,也許要等很長時(shí)間,直到當(dāng)前運(yùn)行著的任務(wù)釋放CPU。內(nèi)核的任務(wù)級響應(yīng)時(shí)間是不確定的,不知道什么時(shí)候最高優(yōu)先級的任務(wù)才能拿到CPU的控制權(quán),完全取決于應(yīng)用程序什么時(shí)候釋放CPU。非占先式(Non-Preemptive)低優(yōu)先級任務(wù)ISR高優(yōu)先級任務(wù)(1)(2)(3)(4)(5)(6)(7)中斷服務(wù)程序使高優(yōu)先級任務(wù)就緒低優(yōu)先級任務(wù)釋放CPU使用權(quán)TIME當(dāng)系統(tǒng)響應(yīng)時(shí)間很重要時(shí),要使用占先式(preemptive)內(nèi)核。最高優(yōu)先級的任務(wù)一旦就緒,總能得到CPU的控制權(quán)。當(dāng)一個(gè)運(yùn)行著的任務(wù)使一個(gè)比它優(yōu)先級高的任務(wù)進(jìn)入了就緒態(tài),當(dāng)前任務(wù)的CPU使用權(quán)就被剝奪了,或者說被掛起了,那個(gè)高優(yōu)先級的任務(wù)立刻得到了CPU的控制權(quán)。使用占先式內(nèi)核時(shí),應(yīng)用程序不應(yīng)直接使用不可重入型函數(shù)。如果調(diào)入不可重入型函數(shù)時(shí),低優(yōu)先級的任務(wù)CPU的使用權(quán)被高優(yōu)先級任務(wù)剝奪,不可重入型函數(shù)中的數(shù)據(jù)有可能被破壞。占先式(preemptive)占先式(Preemptive)低優(yōu)先級任務(wù)ISR高優(yōu)先級任務(wù)(1)(2)(3)(4)(5)(6)中斷服務(wù)程序使高優(yōu)先級任務(wù)就緒高優(yōu)先級任務(wù)得到CPU使用權(quán)TIME可以被一個(gè)以上的任務(wù)調(diào)用,而不必?fù)?dān)心數(shù)據(jù)的破壞??芍厝胄秃瘮?shù)任何時(shí)候都可以被中斷,一段時(shí)間以后又可以運(yùn)行,而相應(yīng)數(shù)據(jù)不會(huì)丟失??芍厝胄秃瘮?shù)只使用局部變量,即變量保存在CPU寄存器中或堆棧中。一個(gè)不可重入型函數(shù)的例子intTemp;Voidswap(int*x,int*y){ Temp=*x;*X=*Y;*y=Temp;}可重入型函數(shù)一個(gè)可重入型函數(shù)的例子:Voidswap(int*x,int*y){intTemp;

Temp=*x;*X=*Y;*y=Temp;}任務(wù)優(yōu)先級靜態(tài)優(yōu)先級應(yīng)用程序執(zhí)行過程中諸任務(wù)優(yōu)先級不變,則稱之為靜態(tài)優(yōu)先級。在靜態(tài)優(yōu)先級系統(tǒng)中,諸任務(wù)以及它們的時(shí)間約束在程序編譯時(shí)是已知的動(dòng)態(tài)優(yōu)先級應(yīng)用程序執(zhí)行過程中,任務(wù)的優(yōu)先級是可變的,則稱之為動(dòng)態(tài)優(yōu)先級。實(shí)時(shí)內(nèi)核應(yīng)當(dāng)避免出現(xiàn)優(yōu)先級反轉(zhuǎn)問題。優(yōu)先級反轉(zhuǎn)(PriorityInversion)優(yōu)先級反轉(zhuǎn)發(fā)生在一個(gè)高優(yōu)先級的任務(wù)被迫等待一段不確定時(shí)間,圖1中3個(gè)任務(wù)分別為task1、task2和task3,其優(yōu)先級由高到低。從圖1可知,當(dāng)task3占有由信號量(semaphore)保護(hù)的某種共享資源而進(jìn)入臨界區(qū)執(zhí)行時(shí),task1就緒,由于系統(tǒng)的搶占式調(diào)度策略,出現(xiàn)task1搶占task3執(zhí)行。task1執(zhí)行一段時(shí)間后也進(jìn)入臨界區(qū),但此時(shí)task3仍占有此臨界資源的信號量,task1被阻塞,等待task3釋放此信號量。在經(jīng)過這么一段時(shí)間后,task2已處于就緒狀態(tài),于是系統(tǒng)調(diào)度task2執(zhí)行。如果task3在task2的執(zhí)行期間一直沒有能夠被調(diào)度執(zhí)行的話,那task1和task3將一直等到task2執(zhí)行完后才能執(zhí)行,task1更要等到task3釋放它所占有的信號量才能執(zhí)行;如果這段時(shí)間超出task1的最后期限,task1的調(diào)度出現(xiàn)了問題,此時(shí)輕則任務(wù)被長時(shí)間阻塞,重則造成系統(tǒng)崩潰。優(yōu)先級反轉(zhuǎn)原因可歸納為:高優(yōu)先級的任務(wù)task1由于要等待被低優(yōu)先級任務(wù)task3占有的臨界資源而被task2阻塞,而此時(shí)具有中優(yōu)先級的任務(wù)task2搶占了task3的CPU時(shí)間,導(dǎo)致task2先于task1執(zhí)行。信號量(Semaphore)信號量是60年代中期EdgserDijkstra發(fā)明的。信號量實(shí)際上是一種約定機(jī)制,在多任務(wù)內(nèi)核中普遍使用.信號量用于:控制共享資源的使用權(quán)(滿足互斥條件)標(biāo)志某事件的發(fā)生使兩個(gè)任務(wù)的行為同步信號與信號量在英文中都叫做Semaphore,并不加以區(qū)分,它有兩種類型,二進(jìn)制型(binary)和計(jì)數(shù)器型(counting)二值信號量(0、1)計(jì)數(shù)式信號量信號量是一個(gè)可以用來控制多個(gè)進(jìn)程存取共享資源的計(jì)數(shù)器。它經(jīng)常作為一種鎖定機(jī)制來防止當(dāng)一個(gè)進(jìn)程正在存取共享資源時(shí),另一個(gè)進(jìn)程也存取同一資源。

信號量的值是與相應(yīng)資源的使用情況有關(guān)的。當(dāng)它的值大于0時(shí),表示當(dāng)前可用資源的數(shù)量;當(dāng)它的值小于0時(shí),其絕對值表示等待使用該資源的進(jìn)程個(gè)數(shù),即在該信號量隊(duì)列的節(jié)點(diǎn)個(gè)數(shù)。

設(shè)信號量為S,P操作順序執(zhí)行下述兩個(gè)動(dòng)作:①信號量的值減1,即S=S-1;②如果S≥0,則該進(jìn)程繼續(xù)執(zhí)行;如果S<0,則把該進(jìn)程的狀態(tài)置為阻塞態(tài),把相應(yīng)的鏈表節(jié)點(diǎn)連入該信號量隊(duì)列的末尾并放棄處理機(jī),進(jìn)行等待(直至其它進(jìn)程在S上執(zhí)行V操作,把它釋放出來為止)。V操作順序執(zhí)行下述兩個(gè)動(dòng)作:①S值加1,即S=S+1;②如果S>0,則該進(jìn)程繼續(xù)運(yùn)行;如果S≤0,則釋放信號量隊(duì)列上的第一個(gè)PCB(即信號量指針項(xiàng)所指向的PCB)所對應(yīng)的進(jìn)程(把阻塞態(tài)改為就緒態(tài)),執(zhí)行V操作的進(jìn)程繼續(xù)運(yùn)行。死鎖Deadlock死鎖指兩個(gè)任務(wù)無限期地互相等待對方控制著的資源。設(shè)任務(wù)T1正獨(dú)享資源R1,任務(wù)T2在獨(dú)享資源R2,而此時(shí)T1又要獨(dú)享R2,T2也要獨(dú)享R1,于是哪個(gè)任務(wù)都沒法繼續(xù)執(zhí)行,發(fā)生了死鎖。最簡單的防止發(fā)生死鎖的方法是讓每個(gè)任務(wù)都:先得到全部需要的資源再做下一步的工作用同樣的順序去申請多個(gè)資源釋放資源時(shí)使用相反的順序任務(wù)同步信號量是實(shí)現(xiàn)任務(wù)同步的主要手段。全程變量或共享內(nèi)存郵箱或消息隊(duì)列任務(wù)間的通訊(IntertaskCommunication)消息郵箱郵箱是μC/OS-II中另一種通訊機(jī)制,它可以使一個(gè)任務(wù)或者中斷服務(wù)子程序向另一個(gè)任務(wù)發(fā)送一個(gè)指針型的變量。該指針指向一個(gè)包含了特定"消息"的數(shù)據(jù)結(jié)構(gòu)。消息隊(duì)列消息隊(duì)列與其他方式的一些比較:1、信號量使用方便,可以解決很多任務(wù)間的協(xié)調(diào)問題,但是信號量所傳遞的信息有限,而內(nèi)存共享雖然傳遞信息可以大些,但是不標(biāo)準(zhǔn)。消息隊(duì)列作為一種折忠方式用于線程之間的信息交換。2、消息隊(duì)列允許許多的消息排隊(duì),而每個(gè)信息可以有不同長度,而傳統(tǒng)管道中的數(shù)據(jù)僅僅是一個(gè)數(shù)據(jù)流,沒有邊界。(注:Vxworks中采用管道方式)全程變量用全程變量時(shí),必須保證每個(gè)任務(wù)或中斷服務(wù)程序獨(dú)享該變量。中斷服務(wù)中保證獨(dú)享的唯一辦法是關(guān)中斷。如果兩個(gè)任務(wù)共享某變量,各任務(wù)實(shí)現(xiàn)獨(dú)享該變量的辦法可以是關(guān)中斷再開中斷,或使用信號量1324嵌入式系統(tǒng)硬件基礎(chǔ)嵌入式BSP的基本概念嵌入式系統(tǒng)軟件基礎(chǔ)嵌入式系統(tǒng)設(shè)計(jì)方法5一個(gè)嵌入式設(shè)計(jì)方法實(shí)例嵌入式系統(tǒng)的軟/硬件框架嵌入式系統(tǒng)設(shè)計(jì)步驟系統(tǒng)需求分析:確定設(shè)計(jì)任務(wù)和設(shè)計(jì)目標(biāo),并提煉出設(shè)計(jì)規(guī)格說明書,作為正式設(shè)計(jì)指導(dǎo)和驗(yàn)收的標(biāo)準(zhǔn)。系統(tǒng)的需求一般分功能性需求和非功能性需求兩方面。功能性需求是系統(tǒng)的基本功能,如輸入輸出信號、操作方式等;非功能需求包括系統(tǒng)性能、成本、功耗、體積、重量等因素。體系結(jié)構(gòu)設(shè)計(jì):描述系統(tǒng)如何實(shí)現(xiàn)所述的功能和非功能需求,包括對硬件、軟件和執(zhí)行裝置的功能劃分以及系統(tǒng)的軟件、硬件選型等。一個(gè)好的體系結(jié)構(gòu)是設(shè)計(jì)成功與否的關(guān)鍵。硬件/軟件協(xié)同設(shè)計(jì):基于體系結(jié)構(gòu),對系統(tǒng)的軟件、硬件進(jìn)行詳細(xì)設(shè)計(jì)。為了縮短產(chǎn)品開發(fā)周期,設(shè)計(jì)往往是并行的。應(yīng)該說,嵌入式系統(tǒng)設(shè)計(jì)的工作大部分都集中在軟件設(shè)計(jì)上,采用面向?qū)ο蠹夹g(shù)、軟件組件技術(shù)、模塊化設(shè)計(jì)是現(xiàn)代軟件工程經(jīng)常采用的方法。系統(tǒng)集成:把系統(tǒng)的軟件、硬件和執(zhí)行裝置集成在一起,進(jìn)行調(diào)試,發(fā)現(xiàn)并改進(jìn)單元設(shè)計(jì)過程中的錯(cuò)誤。系統(tǒng)測試:對設(shè)計(jì)好的系統(tǒng)進(jìn)行測試,看其是否滿足規(guī)格說明書中給定的功能要求。嵌入式開發(fā)工具與開發(fā)環(huán)境

JTAG(JointTestActionGroup,聯(lián)合測試行動(dòng)小組)是一種國際標(biāo)準(zhǔn)測試協(xié)議(IEEE1149.1兼容),主要用于芯片內(nèi)部測試。現(xiàn)在多數(shù)的高級器件都支持JTAG協(xié)議,如DSP、FPGA器件等。標(biāo)準(zhǔn)的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時(shí)鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。

JTAG最初是用來對芯片進(jìn)行測試的,基本原理是在器件內(nèi)部定義一個(gè)TAP(TestAccessPort,測試訪問口)通過專用的JTAG測試工具對內(nèi)部節(jié)點(diǎn)進(jìn)行測試。JTAG測試允許多個(gè)器件通過JTAG接口串聯(lián)在一起,形成一個(gè)JTAG鏈,能實(shí)現(xiàn)對各個(gè)器件分別測試?,F(xiàn)在,JTAG接口還常用于實(shí)現(xiàn)ISP(In-Systemprogrammable,在線編程),對FLASH等器件進(jìn)行編程。

JTAG編程方式是在線編程,傳統(tǒng)生產(chǎn)流程中先對芯片進(jìn)行預(yù)編程現(xiàn)再裝到板上因此而改變,簡化的流程為先固定器件到電路板上,再用JTAG編程,從而大大加快工程進(jìn)度。JTAG接口可對PSD芯片內(nèi)部的所有部件進(jìn)行編程.

開發(fā)平臺簡介網(wǎng)口JTAGUSB串口0擴(kuò)展板接口ARM微處理器S3C44B0X擴(kuò)展口2網(wǎng)卡JTAG仿真器ARM3000開發(fā)板集成開發(fā)環(huán)境運(yùn)行平臺開始新工程編輯源代碼交叉編譯連接仿真調(diào)試程序下載臺式/筆記本式PC機(jī)并口JTAG仿真器網(wǎng)絡(luò)接口JTAG接口USB接口串口0ARM3000開發(fā)板串口USB接口以太網(wǎng)口ARMSDTDebugArmDvkARM7處理器執(zhí)行監(jiān)測結(jié)果超級終端ARM3000開發(fā)板實(shí)驗(yàn)流程結(jié)束嵌入式軟件開發(fā)流程嵌入式系統(tǒng)軟件開發(fā)是在傳統(tǒng)軟件工程方法基礎(chǔ)上,增加了實(shí)時(shí)、并發(fā)等設(shè)計(jì)技術(shù)。幾種常用的開發(fā)方法指令集模擬器一種利用PC機(jī)端的仿真開發(fā)軟件模擬調(diào)試的方法。駐留監(jiān)控軟件駐留監(jiān)控程序運(yùn)行在目標(biāo)板上,PC機(jī)端調(diào)試軟件可通過并口、串口、網(wǎng)口與之交互,以完成程序執(zhí)行、存儲器及寄存器讀寫、斷點(diǎn)設(shè)置等任務(wù)JTAG仿真器通過ARM芯片的JTAG邊界掃描口與ARM核進(jìn)行通信,不占用目標(biāo)板的資源,是目前使用最廣泛的調(diào)試手段在線仿真器使用仿真頭代替目標(biāo)板上的CPU,可以完全仿真ARM芯片的行為。但結(jié)構(gòu)較復(fù)雜,價(jià)格昂貴,通常用于ARM硬件開發(fā)中本節(jié)提要1324嵌入式系統(tǒng)硬件基礎(chǔ)嵌入式BSP的基本概念嵌入式系統(tǒng)軟件基礎(chǔ)嵌入式系統(tǒng)設(shè)計(jì)方法5一個(gè)嵌入式設(shè)計(jì)方法實(shí)例工程機(jī)械體系結(jié)構(gòu)可靠設(shè)計(jì)環(huán)境分析成本計(jì)算芯片選擇設(shè)計(jì)接口調(diào)試…關(guān)鍵技術(shù)主要系統(tǒng)平地機(jī)環(huán)境可靠性實(shí)驗(yàn)裝載機(jī)攪拌機(jī)挖掘機(jī)

…軟件選擇開發(fā)…攤鋪機(jī)壓路機(jī)四、嵌入式設(shè)計(jì)方法實(shí)例——工程機(jī)械監(jiān)控器需求分析與評估功能定義與軟硬件選型概要設(shè)計(jì)與軟硬件劃分軟硬件協(xié)同詳細(xì)設(shè)計(jì)集成調(diào)試維護(hù)與升級設(shè)計(jì)步驟工程機(jī)械方面應(yīng)用

工程機(jī)械六大市場領(lǐng)域,均符合國家經(jīng)濟(jì)發(fā)展四大戰(zhàn)略所規(guī)定的資金投向,500億投資,一個(gè)企業(yè)僅裝載機(jī)銷售7000臺。發(fā)展國家基礎(chǔ)設(shè)施建設(shè)西部大開發(fā)發(fā)展城鄉(xiāng)化可持續(xù)發(fā)展交通運(yùn)輸能源工業(yè)原材料工業(yè)農(nóng)林水利城鄉(xiāng)建設(shè)國防工程建設(shè)工程機(jī)械4.1需求分析與評估瀝青路面施工機(jī)群資源配置不合理,施工過程施工過程質(zhì)量、進(jìn)度控制不到位;設(shè)備運(yùn)行狀況不能及時(shí)掌握,故障不能及時(shí)排除;分期付款控制技術(shù);智能控制,動(dòng)力平衡,安全操作存在突出問題監(jiān)控器最重要,及時(shí)掌握設(shè)備運(yùn)行狀況,并進(jìn)行必要故障診斷;其次是智能控制,動(dòng)力平衡,安全操作;GPS定位與GSM通訊,是一個(gè)很好演示,盡量選用汽車使用模塊;協(xié)同控制,機(jī)群化資源配置,并提高施工過程施工過程質(zhì)量,控制進(jìn)度,目前僅僅是一個(gè)發(fā)展方向,還不實(shí)用。監(jiān)控器成本,建議控制在2000-3000元,才有競爭力。開發(fā)時(shí)間,6個(gè)月主要需求4.2功能定義與軟硬件選型8-10臺單機(jī)智能化,攪拌機(jī)、裝載機(jī)、自卸機(jī)、攤鋪機(jī)、壓路機(jī)等,設(shè)計(jì)具有GPS(GlobalPositionSystem)/GSM監(jiān)控器;建立通訊網(wǎng)絡(luò)設(shè)立機(jī)群化控制中心,數(shù)據(jù)庫、顯示屏、施工調(diào)度算法、工藝文件管理等;單機(jī)智能化采用監(jiān)控器,網(wǎng)絡(luò)通訊采用現(xiàn)成設(shè)備,中繼站或短消息,控制中心PC,數(shù)據(jù)庫Ms-SQL,投影儀等;其中這里討論智能化監(jiān)控器機(jī)群通訊與定位方案設(shè)備制造商設(shè)備使用商Internet中央控制室攪拌站GPS移動(dòng)通訊車無線電臺Wirelessnet無線電臺壓路機(jī)無線電臺攤鋪機(jī)無線電臺轉(zhuǎn)運(yùn)車GPS自卸卡車機(jī)群智能化通訊方案圖GPSGPSGPS“”表示因特網(wǎng)“”表示無線以太網(wǎng)“”表示物料轉(zhuǎn)運(yùn)方向該課題的研究目標(biāo)研究智能化的監(jiān)控器:可視化,多級界面可控化,具有人機(jī)接口內(nèi)嵌的故障診斷,結(jié)合數(shù)據(jù)庫進(jìn)行通訊功能通過實(shí)際測試,提高其可靠性,產(chǎn)品化降低成本,提高性能,最終取代國外產(chǎn)品4.3概要設(shè)計(jì)與軟硬件劃分國外同類產(chǎn)品工程機(jī)械智能監(jiān)控器的功能監(jiān)控器的硬件選型——CPU32位CPU將成為未來各種電子設(shè)備的核心ARM系列具有精簡指令集,在各種行業(yè)中已經(jīng)獲得了廣泛的應(yīng)用各種開發(fā)、仿真支持工具比較完善,國內(nèi)也應(yīng)經(jīng)形成了開發(fā)熱潮監(jiān)控器的硬件設(shè)計(jì)方法-1接口:串行口、CAN總線是主要的通訊接口功能:首先是自動(dòng)顯示狀態(tài)參數(shù)、報(bào)警,并具有通訊功能以通用硬件平臺為基礎(chǔ)首先平臺對于監(jiān)控器開發(fā)適用:人機(jī)接口、通訊擴(kuò)展等已有的研發(fā)工作使我們的開發(fā)更為快捷而且硬件可以裁減、擴(kuò)充監(jiān)控器的硬件設(shè)計(jì)方法在這一平臺上我們進(jìn)行功能裁減、擴(kuò)充

擴(kuò)展性能I/O接口預(yù)留,A/D口預(yù)留,必要時(shí)可以擴(kuò)展采集數(shù)據(jù)總線預(yù)留,便于使用總線擴(kuò)展芯片擴(kuò)展接口監(jiān)控器的硬件結(jié)構(gòu)ARM為CPU,8M內(nèi)存,16MFLASH存儲器兩個(gè)UART分別連接GPS、GSM模塊USB高速下載,JTAG調(diào)試口擴(kuò)展CAN總線接口監(jiān)控器的軟件需求分析監(jiān)控器軟件的特點(diǎn):圖形界面重要:數(shù)字化儀表、模擬顯示儀表加強(qiáng)操作性能:可以控制、菜單顯示多種方式報(bào)警:聲、圖像顯示通訊功能強(qiáng)大:本地通訊和近遠(yuǎn)程通信操作系統(tǒng)選型分析操作系統(tǒng)選型主要考慮如下幾個(gè)方面:車輛設(shè)備要求實(shí)時(shí)操作系統(tǒng)外設(shè)很多,所以必須支持多任務(wù)根據(jù)不同的車輛軟件可裁剪開發(fā)工具要完善,能夠快捷的開發(fā)監(jiān)控器的軟件設(shè)計(jì)方法采用COS-II作為操作系統(tǒng)它是一個(gè)實(shí)時(shí)內(nèi)核支持多任務(wù)管理擴(kuò)展的文件管理系統(tǒng)擴(kuò)展的各種設(shè)備驅(qū)動(dòng)免費(fèi)使用工程機(jī)械智能監(jiān)控器體系結(jié)構(gòu)設(shè)計(jì)智能化監(jiān)控器的指導(dǎo)思想功能和可靠性是工程機(jī)械監(jiān)控器的兩大要素,必須在兩者之間尋找一個(gè)契合點(diǎn)。可靠性設(shè)計(jì)要求:一體化設(shè)計(jì),軟件精簡基本功能軟件考慮:模板設(shè)計(jì),實(shí)用簡單

解決的方法:列舉各種功能,保留必要,去除冗余,插接可靠構(gòu)件設(shè)計(jì),對象封裝,功能的模塊化,軟件的模板化,便于調(diào)用。使技術(shù)人員能夠快速編程學(xué)習(xí)4.4軟硬件協(xié)同詳細(xì)設(shè)計(jì)劃分功能模塊:系統(tǒng)驅(qū)動(dòng)模塊、通訊模塊、圖形顯示模塊、數(shù)據(jù)處理模塊等,在大的模塊下面又分為小的模塊。根據(jù)功能加減模塊:比如機(jī)群智能化就要求具有GPS和GSM功能模塊,而在以后的復(fù)雜機(jī)器中還要有控制功能模塊等。模塊化設(shè)計(jì)方法

首先作出一臺機(jī)器的軟件,對其進(jìn)行提煉作為系統(tǒng)模板:比如首先設(shè)計(jì)攤鋪機(jī)的軟件,根據(jù)它提煉功能模塊,并設(shè)計(jì)壓路機(jī)和裝載機(jī)的軟件。軟件模板要求結(jié)構(gòu)清晰,可以根據(jù)該模板并參考程序添加代碼,完成專用機(jī)型的軟件。模板化使用方法監(jiān)控器的功能要求能實(shí)時(shí)接受總線信息(CAN),簡單處理后在液晶屏上動(dòng)態(tài)刷新能夠針對信息進(jìn)行故障診斷、可以自動(dòng)報(bào)警(液晶屏)接受GPS地理位置信息,確定當(dāng)前位置定時(shí)發(fā)送GSM信息,包括地理、狀態(tài)信息,接收中心站的GSM指令手動(dòng)輸入故障和需要停機(jī)時(shí)間監(jiān)控器的功能模塊1.GPS數(shù)據(jù)處理:使用NMEA01832.GSM數(shù)據(jù)處理:使用AT指令集3.CAN總線數(shù)據(jù)處理4.鍵盤消息處理5.數(shù)據(jù)顯示6.GSM數(shù)據(jù)發(fā)送:使用GSM模塊NationalMarineElectronicsAssociation全國海洋電子協(xié)會(huì)[美]軟件的實(shí)現(xiàn)和技巧采用多任務(wù)任務(wù)一:串行口掃描由于GPS每秒向串行口發(fā)送數(shù)據(jù),GSM指令也送入串行口,因此系統(tǒng)掃描串行口,處理進(jìn)入信息。任務(wù)二:CAN總線掃描系統(tǒng)每隔幾個(gè)毫秒掃描CAN總線的SJA1000內(nèi)部寄存器,查詢是否有新的信息。任務(wù)三:鍵盤掃描 作為人機(jī)接口的重要部分,鍵盤掃描可以手工輸入指令,查詢系統(tǒng)信息。軟件的實(shí)現(xiàn)和技巧CAN總線消息的管理

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論