嵌入式系統(tǒng)復(fù)習(xí)2012新_第1頁(yè)
嵌入式系統(tǒng)復(fù)習(xí)2012新_第2頁(yè)
嵌入式系統(tǒng)復(fù)習(xí)2012新_第3頁(yè)
嵌入式系統(tǒng)復(fù)習(xí)2012新_第4頁(yè)
嵌入式系統(tǒng)復(fù)習(xí)2012新_第5頁(yè)
已閱讀5頁(yè),還剩180頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

何為嵌入式系統(tǒng)第1、2、3、4、5、8、12、13、14、23。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第1頁(yè)!何為嵌入式系統(tǒng)嵌入式系統(tǒng),英文全稱為EmbededSystem。IEEE的定義:嵌入式系統(tǒng)是“控制、監(jiān)視或者輔助裝置、機(jī)器和設(shè)備運(yùn)行的裝置”。業(yè)界普遍采用的定義:嵌入式系統(tǒng)是以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗等嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第2頁(yè)!理解嵌入式系統(tǒng)嵌入式系統(tǒng)是與應(yīng)用緊密結(jié)合的,是面向用戶、面向產(chǎn)品、面向應(yīng)用的。嵌入式系統(tǒng)是一個(gè)技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的知識(shí)集成系統(tǒng)。嵌入式系統(tǒng)可定制、可裁減。嵌入式系統(tǒng)中的軟件一般都固化在存儲(chǔ)器芯片或單片機(jī)本身中。嵌入式系統(tǒng)本身不具備自主開發(fā)能力。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第3頁(yè)!嵌入式系統(tǒng)的基本結(jié)構(gòu)嵌入式系統(tǒng)可以籠統(tǒng)地分為硬件和軟件兩部分。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第4頁(yè)!嵌入式系統(tǒng)的特點(diǎn)嵌入式系統(tǒng)是與應(yīng)用緊密結(jié)合的。嵌入式系統(tǒng)具有很強(qiáng)的專用性,可定制、可裁減,且必須結(jié)合實(shí)際系統(tǒng)需求進(jìn)行合理的裁減利用。嵌入式系統(tǒng)是一個(gè)技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的知識(shí)集成系統(tǒng)。嵌入式系統(tǒng)必須有采用專用的開發(fā)工具和環(huán)境才能進(jìn)行開發(fā)。嵌入式系統(tǒng)具有通用計(jì)算機(jī)的功能,但實(shí)現(xiàn)了小型化的體積和高的運(yùn)行可靠性。嵌入式系統(tǒng)需要根據(jù)不同的處理器來進(jìn)行定制。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第5頁(yè)!1.3嵌入式操作系統(tǒng)概述監(jiān)控程序操作系統(tǒng)實(shí)時(shí)操作系統(tǒng)分時(shí)操作系統(tǒng)多道批處理操作系統(tǒng)時(shí)間先后適用于多個(gè)用戶共享系統(tǒng)資源適用于計(jì)算中心等較大的計(jì)算機(jī)系統(tǒng)適用于嵌入式設(shè)備和有實(shí)時(shí)性要求的系統(tǒng)中嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第6頁(yè)!1.3嵌入式操作系統(tǒng)實(shí)時(shí)操作系統(tǒng)的特點(diǎn)

IEEE的實(shí)時(shí)UNIX分委會(huì)認(rèn)為實(shí)時(shí)操作系統(tǒng)應(yīng)具備以下的幾點(diǎn):異步的事件響應(yīng)切換時(shí)間和中斷延遲時(shí)間確定優(yōu)先級(jí)中斷和調(diào)度搶占式調(diào)度內(nèi)存鎖定連續(xù)文件同步嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第7頁(yè)!1.3嵌入式操作系統(tǒng)實(shí)時(shí)操作系統(tǒng)的特點(diǎn)一般實(shí)時(shí)操作系統(tǒng)應(yīng)用于實(shí)時(shí)處理系統(tǒng)的上位機(jī)和實(shí)時(shí)查詢系統(tǒng)等實(shí)時(shí)性較弱的實(shí)時(shí)系統(tǒng),并且提供了開發(fā)、調(diào)試、運(yùn)用一致的環(huán)境。

嵌入式實(shí)時(shí)操作系統(tǒng)應(yīng)用于實(shí)時(shí)性要求高的實(shí)時(shí)控制系統(tǒng),而且應(yīng)用程序的開發(fā)過程是通過交叉開發(fā)來完成的,即開發(fā)環(huán)境與運(yùn)行環(huán)境是不一致。嵌入式實(shí)時(shí)操作系統(tǒng)具有規(guī)模小(一般在幾K~幾十K內(nèi))、可固化使用實(shí)時(shí)性強(qiáng)(在毫秒或微秒數(shù)量級(jí)上)的特點(diǎn)

。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第8頁(yè)!1.3嵌入式操作系統(tǒng)基本概念

操作系統(tǒng)是計(jì)算機(jī)中最基本的程序。操作系統(tǒng)負(fù)責(zé)計(jì)算機(jī)系統(tǒng)中全部軟硬資源的分配與回收、控制與協(xié)調(diào)等并發(fā)的活動(dòng);操作系統(tǒng)提供用戶接口,使用戶獲得良好的工作環(huán)境;操作系統(tǒng)為用戶擴(kuò)展新的系統(tǒng)功能提供軟件平臺(tái)?!僮飨到y(tǒng)硬件硬件驅(qū)動(dòng)操作系統(tǒng)用戶程序嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第9頁(yè)!1.3嵌入式操作系統(tǒng)基本概念

代碼的臨界區(qū)也稱為臨界區(qū),指處理時(shí)不可分割的代碼,運(yùn)行這些代碼不允許被打斷。一旦這部分代碼開始執(zhí)行,則不允許任何中斷打入(這不是絕對(duì)的,如果中斷不調(diào)用任何包含臨界區(qū)的代碼,也不訪問任何臨界區(qū)使用的共享資源,這個(gè)中斷可能可以執(zhí)行)。為確保臨界區(qū)代碼的執(zhí)行,在進(jìn)入臨界區(qū)之前要關(guān)中斷,而臨界區(qū)代碼執(zhí)行完成以后要立即開中斷。

——代碼的臨界區(qū)嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第10頁(yè)!任務(wù)A共享資源任務(wù)B任務(wù)C信號(hào)量1.3嵌入式操作系統(tǒng)基本概念

可以被一個(gè)以上任務(wù)使用的資源叫做共享資源。為了防止數(shù)據(jù)被破壞,每個(gè)任務(wù)在與共享資源打交道時(shí),必須獨(dú)占該資源,這叫做互斥?!蚕碣Y源訪問共享資源之前申請(qǐng)信號(hào)量其它任務(wù)訪問受阻而不能使用共享資源得到允許后,才能使用共享資源嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第11頁(yè)!1.3嵌入式操作系統(tǒng)基本概念

當(dāng)多任務(wù)內(nèi)核決定運(yùn)行另外的任務(wù)時(shí),它保存正在運(yùn)行任務(wù)的當(dāng)前狀態(tài),即CPU寄存器中的全部?jī)?nèi)容。這些內(nèi)容保存在任務(wù)的當(dāng)前狀態(tài)保存區(qū),也就是任務(wù)自已的棧區(qū)之中。入棧工作完成以后,就把下一個(gè)將要運(yùn)行的任務(wù)的當(dāng)前狀態(tài)從任務(wù)的棧中重新裝入CPU的寄予存器,并開始下一個(gè)任務(wù)的運(yùn)行。這個(gè)過程就稱為任務(wù)切換。這個(gè)過程增加了應(yīng)用程序的額外負(fù)荷。CPU的內(nèi)部寄存器越多,額外負(fù)荷就越重。做任務(wù)切換所需要的時(shí)間取決于CPU有多少寄存器要入棧?!蝿?wù)切換嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第12頁(yè)!1.3嵌入式操作系統(tǒng)基本概念

調(diào)度是內(nèi)核的主要職責(zé)之一。調(diào)度就是決定該輪到哪個(gè)任務(wù)運(yùn)行了。多數(shù)實(shí)時(shí)內(nèi)核是基于優(yōu)先級(jí)調(diào)度法的。每個(gè)任務(wù)根據(jù)其重要程序的不同被賦予一定的優(yōu)先級(jí)?;趦?yōu)先級(jí)的調(diào)度法指CPU總是讓處在就緒態(tài)的優(yōu)先級(jí)最高的任務(wù)先運(yùn)行。然而究竟何時(shí)讓高優(yōu)先級(jí)任務(wù)掌握CPU的使用權(quán),有兩種不同的情況,這要看用的是什么類型的內(nèi)核,是非占先式的還是占先式的內(nèi)核?!{(diào)度嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第13頁(yè)!1.3嵌入式操作系統(tǒng)基本概念

當(dāng)系統(tǒng)響應(yīng)時(shí)間很重要時(shí),要使用占先式內(nèi)核。因此絕大多數(shù)商業(yè)上銷售的實(shí)時(shí)內(nèi)核都是占先式內(nèi)核。最高優(yōu)先級(jí)的任務(wù)一旦就緒,總能得到CPU的控制權(quán)。當(dāng)一個(gè)運(yùn)行著的任務(wù)使一個(gè)比它優(yōu)先級(jí)高的任務(wù)進(jìn)入了就緒狀態(tài),當(dāng)前任務(wù)的CPU使用權(quán)就被剝奪了,或者說被掛起了,那個(gè)高優(yōu)先級(jí)的任務(wù)立刻得到了CPU的控制權(quán)。如果是中斷服務(wù)子程序使一個(gè)高優(yōu)先級(jí)的任務(wù)進(jìn)入就緒態(tài),中斷完成時(shí),中斷了的任務(wù)被掛起,優(yōu)先級(jí)高的那個(gè)任務(wù)開始運(yùn)行?!枷仁絻?nèi)核嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第14頁(yè)!1.3嵌入式操作系統(tǒng)基本概念

中斷是一種硬件機(jī)制,用于通知CPU有個(gè)異步事件發(fā)生了。中斷一旦被識(shí)別,CPU保存部分(或全部)上下文即部分或全部寄存器的值,跳轉(zhuǎn)到專門的子程序,稱為中斷服務(wù)子程序(ISR)。中斷服務(wù)子程序做事件處理,處理完成后,程序回到:1.在前后臺(tái)系統(tǒng)中,程序回到后臺(tái)程序;2.對(duì)非占先式內(nèi)核而言,程序回到被中斷了的任務(wù);3.對(duì)占先式內(nèi)核而言,讓進(jìn)入就緒態(tài)的優(yōu)先級(jí)最高的任務(wù)開始運(yùn)行。——中斷嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第15頁(yè)!1.3嵌入式操作系統(tǒng)基本概念

時(shí)鐘節(jié)拍是特定的周期性中斷。這個(gè)中斷可以看作是系統(tǒng)心臟的脈動(dòng)。中斷之間的時(shí)間間隔取決于不同應(yīng)用,一般在10ms到200ms之間。時(shí)鐘的節(jié)拍式中斷使得內(nèi)核可以將任務(wù)延時(shí)若干個(gè)整數(shù)時(shí)鐘節(jié)拍,以及當(dāng)任務(wù)等待事件發(fā)生時(shí),提供等待超時(shí)的依據(jù)。時(shí)鐘節(jié)拍率越快,系統(tǒng)的額外開銷就越大?!獣r(shí)鐘節(jié)拍嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第16頁(yè)!1.3嵌入式操作系統(tǒng)實(shí)時(shí)操作系統(tǒng)的優(yōu)缺點(diǎn)優(yōu)點(diǎn):在嵌入式實(shí)時(shí)操作系統(tǒng)環(huán)境下開發(fā)實(shí)時(shí)應(yīng)用程序使程序的設(shè)計(jì)和擴(kuò)展變得容易,不需要大的改動(dòng)就可以增加新的功能。通過將應(yīng)用程序分割成若干獨(dú)立的任務(wù)模塊,使應(yīng)用程序的設(shè)計(jì)過程大為簡(jiǎn)化;而且對(duì)實(shí)時(shí)性要求苛刻的事件都得到了快速、可靠的處理。通過有效的系統(tǒng)服務(wù),嵌入式實(shí)時(shí)操作系統(tǒng)使得系統(tǒng)資源得到更好的利用。缺點(diǎn):但是,使用嵌入式實(shí)時(shí)操作系統(tǒng)還需要額外的ROM/RAM開銷,2~5%的CPU額外負(fù)荷,以及內(nèi)核的費(fèi)用。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第17頁(yè)!TheStoryofuC/OS

美國(guó)人JeanLabrosse1992年編寫的商業(yè)軟件的昂貴應(yīng)用面覆蓋了諸多領(lǐng)域,如照相機(jī)、醫(yī)療器械、音響設(shè)備、發(fā)動(dòng)機(jī)控制、高速公路電話系統(tǒng)、自動(dòng)提款機(jī)等1998年uC/OS-II,目前的版本uC/OS-IIV2.51.ucos-ii.嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第18頁(yè)!任務(wù)task典型的一個(gè)無限循環(huán)。voidmytask(void*pdata){for(;;){dosomething;waiting;dosomething;}}支持64個(gè)任務(wù),每個(gè)任務(wù)一個(gè)特定的優(yōu)先級(jí)。優(yōu)先級(jí)越高,數(shù)字越小系統(tǒng)占用了兩個(gè)任務(wù),空閑任務(wù)和統(tǒng)計(jì)任務(wù)。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第19頁(yè)!任務(wù)控制塊結(jié)構(gòu)Structos_tcb{

OS_STK*OSTCBStkPtr;structos_tcb*OSTCBNext;structos_tcb*OSTCBprev;OS_EVENT*OSTCBEventPtr;void*OSTCBMsg;INT16UOSTCBDly;INT8UOSTCBStat;INT8UOSTCBPrio;INT8UOSTCBX,OSTCBY,OSTCBBitX,OSTCBBitY;}OS_TCB嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第20頁(yè)!任務(wù)的狀態(tài)OSTCBStat運(yùn)行,就緒,等待,掛起…可以有多個(gè)準(zhǔn)備就緒的任務(wù),但一個(gè)時(shí)刻只有一個(gè)任務(wù)可以運(yùn)行,OSHighRdy掛起隊(duì)列郵箱信號(hào)量低四位OSTCBStat嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第21頁(yè)!任務(wù)的調(diào)度就緒任務(wù)表:用于存貯每個(gè)任務(wù)的就緒狀態(tài)標(biāo)志。由兩個(gè)變量組成:OSRedyGrp:8位,每位表示一組(8個(gè))任務(wù)中是否有就緒的任務(wù)。OSRdyTbl[]:位圖方式表示某個(gè)任務(wù)是否就緒。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第22頁(yè)!根據(jù)優(yōu)先級(jí)找到任務(wù)在就緒任務(wù)表中的位置嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第23頁(yè)!根據(jù)優(yōu)先級(jí)確定就緒表從上面的計(jì)算我們可以得到:若第n位置1,則應(yīng)該與2n相或。uC/OS中,把2n的n=0-7的8個(gè)值

先計(jì)算好存在數(shù)組OSMapTbl[7]中,也就是:OSMapTbl[0]=20=0x1;OSMapTbl[1]=21=0x2;

……

OSMapTbl[7]=27=0x80;嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第24頁(yè)!根據(jù)就緒表確定最高優(yōu)先級(jí)(1)兩個(gè)關(guān)鍵:優(yōu)先級(jí)數(shù)分解為高三位和低三位分別確定;高優(yōu)先級(jí)有著小的優(yōu)先級(jí)號(hào);嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第25頁(yè)!源代碼中使用了查表法查表法具有確定的時(shí)間,增加了系統(tǒng)的可預(yù)測(cè)性,uC/OS中所有的系統(tǒng)調(diào)用時(shí)間都是確定的High3=OSUnMapTbl[OSRdyGrp];Low3=OSUnMapTbl[OSRdyTbl[High3]];Prio=(Hign3<<3)+Low3;?為什么頻繁的使用查表法?請(qǐng)問OSUnMapTbl的來歷;嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第26頁(yè)!任務(wù)間通信手段提供OS_ENTER_CRITICAL和OS_EXIT_CRITICAL來對(duì)臨界資源進(jìn)行保護(hù)OSSchedLock()禁止調(diào)度保護(hù)任務(wù)級(jí)的共享資源。提供了經(jīng)典操作系統(tǒng)任務(wù)間通信方法:信號(hào)量、郵箱、消息隊(duì)列,事件標(biāo)志。

嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第27頁(yè)!信號(hào)量semaphoreuC/OS中信號(hào)量由兩部分組成:信號(hào)量的計(jì)數(shù)值和等待該信號(hào)任務(wù)的等待任務(wù)表。信號(hào)量的計(jì)數(shù)值可以為二進(jìn)制,也可以是其他整數(shù)。系統(tǒng)通過OSSemPend()和OSSemPost()來支持信號(hào)量的兩種原子操作P()和V()。P()操作減少信號(hào)量的值,如果新的信號(hào)量的值不大于0,則操作阻塞;V()操作增加信號(hào)量的值。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第28頁(yè)!多任務(wù)的啟動(dòng)首先創(chuàng)建任務(wù)最后調(diào)用OSStart開始多任務(wù)調(diào)度voidmain(){OSInit();…..OSTaskcreat()…..OSStart();}嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第29頁(yè)!揭開神秘的面紗—任務(wù)調(diào)度全程追蹤Forexample1創(chuàng)建2個(gè)任務(wù),每個(gè)任務(wù)僅僅是進(jìn)行延時(shí),延時(shí)不同的時(shí)間片,不同優(yōu)先級(jí)voidTask1(void)voidTask2(void){{ while(1)while(1) {{ blinkled1(); blinkled2(); Task1Data++; Task2Data++;OSTimeDly(25);OSTimeDly(50);}}}}嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第30頁(yè)!voidOSStart(void){INT8Uy,x;if(OSRunning==FALSE){判斷是否沒有啟動(dòng)內(nèi)核

y=OSUnMapTbl[OSRdyGrp];x=OSUnMapTbl[OSRdyTbl[y]];OSPrioHighRdy=(INT8U)((y<<3)+x);找到優(yōu)先級(jí)最高的準(zhǔn)備就緒任務(wù)

OSPrioCur=OSPrioHighRdy;當(dāng)前運(yùn)行任務(wù)優(yōu)先級(jí)

OSTCBHighRdy=OSTCBPrioTbl[OSPrioHighRdy];根據(jù)任務(wù)優(yōu)先級(jí)找到任務(wù)

OSTCBCur=OSTCBHighRdy;OSStartHighRdy();讓優(yōu)先級(jí)最高的任務(wù)運(yùn)行起來}}嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第31頁(yè)!voidOSTimeDly(INT16Uticks){if(ticks>0){確保tick大于0OS_ENTER_CRITICAL();進(jìn)入臨界段代碼

if((OSRdyTbl[OSTCBCur->OSTCBY]&=~OSTCBCur->OSTCBBitX)==0){/*Delaycurrenttask*/OSRdyGrp&=~OSTCBCur->OSTCBBitY;設(shè)置任務(wù)為非就緒狀態(tài)

}OSTCBCur->OSTCBDly=ticks;在TCB中裝載延時(shí)數(shù)

OS_EXIT_CRITICAL();退出臨界段代碼

OSSched();調(diào)度下一個(gè)任務(wù)開始運(yùn)行

}}嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第32頁(yè)!OS_TASK_SW任務(wù)的上下文切換通過sc系統(tǒng)調(diào)用指令完成保護(hù)當(dāng)前任務(wù)的現(xiàn)場(chǎng)恢復(fù)新任務(wù)的現(xiàn)場(chǎng)執(zhí)行中斷返回指令開始執(zhí)行新的任務(wù)嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第33頁(yè)!voidOSTimeTick(void){OS_TCB*ptcb;ptcb=OSTCBList;---OSTCB鏈表指針while(ptcb->OSTCBPrio!=OS_IDLE_PRIO){看是不是空閑任務(wù),空閑任務(wù)是最后的任務(wù)

if(ptcb->OSTCBDly!=0){是否延時(shí)

if(--ptcb->OSTCBDly==0){延時(shí)減一,看是否延時(shí)結(jié)束

if(!(ptcb->OSTCBStat&OS_STAT_SUSPEND)){OSRdyGrp|=ptcb->OSTCBBitY;是的話將其列入準(zhǔn)備就緒表

OSRdyTbl[ptcb->OSTCBY]|=ptcb->OSTCBBitX;}else{ptcb->OSTCBDly=1;}}}ptcb=ptcb->OSTCBNext;指針指向下一個(gè)TCB結(jié)構(gòu)

}OSTime++;變量加一,記錄系統(tǒng)啟動(dòng)以來的時(shí)鐘滴答數(shù)

}嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第34頁(yè)!時(shí)間任務(wù)一任務(wù)二OSStartTimeTickTimeTick12550TimeTick空閑任務(wù)嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第35頁(yè)!uC/OS的移植代碼分為三部分:與CPU無關(guān)的內(nèi)核代碼,包括os_core.c,os_mbox.c,os_mem.c,os_q.c,os_sem.c,os_task.c,os_time.c,ucos_ii.c,ucos_ii.h;與應(yīng)用相關(guān)的設(shè)置頭文件,包括:os_cfg.h,include.h;處理器相關(guān)的代碼,包括:os_cpu.h,os_cpu_a.asm,os_cpu.c.c。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第36頁(yè)!uC/OS的改進(jìn)固定的基于優(yōu)先級(jí)的調(diào)度,不支持時(shí)間片,使用起來不方便。一個(gè)任務(wù)的基礎(chǔ)上增加一個(gè)基于時(shí)間片的微型調(diào)度核在對(duì)臨界資源的訪問上使用關(guān)閉中斷實(shí)現(xiàn),沒有使用CPU提供的硬件指令,例如測(cè)試并置位。系統(tǒng)時(shí)鐘中斷,沒有提供用戶使用定時(shí)器,可以借鑒linux的定時(shí)器加以修改可以加上文件系統(tǒng)和TCP/IP協(xié)議棧嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第37頁(yè)!ARMCortex-M3體系結(jié)構(gòu)1.ARM介紹2.ARMCortex-M3處理器內(nèi)核概述3.Cortex-M3模塊的內(nèi)部方框圖4.編程模式5.內(nèi)部寄存器6.系統(tǒng)異常(中斷)7.嵌套向量中斷控制器(NVIC)8.存儲(chǔ)器保護(hù)單元(MPU)嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第38頁(yè)!2.1ARM簡(jiǎn)介將技術(shù)授權(quán)給其它芯片廠商形成各具特色的ARM芯片...已有100多家公司與ARM公司訂購(gòu)技術(shù)使用許可協(xié)議嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第39頁(yè)!2.1ARM簡(jiǎn)介ARM7系列簡(jiǎn)介

ARM7TDMI是ARM公司1995年推出的個(gè)處理器,也是目前用量最多的一個(gè)內(nèi)核。該系列包括ARM7TDMI、ARM7TDMI-S、帶有高速緩存處理器宏單元的ARM720T和擴(kuò)充了Jazelle的ARM7EJ-S。該系列處理器提供Thumb16位壓縮指令集和EmbededICE軟件調(diào)試方式,適用于更大規(guī)模的SoC設(shè)計(jì)中。

ARM7系列廣泛應(yīng)用于多媒體和嵌入式設(shè)備,包括Internet設(shè)備、網(wǎng)絡(luò)和調(diào)制解調(diào)器設(shè)備,以及移動(dòng)電話、PDA等無線設(shè)備。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第40頁(yè)!2.1ARM簡(jiǎn)介該系列為含有DSP指令集的綜合處理器,包括ARM926EJ-S、帶有高速緩存處理器宏單元的ARM966E-S/ARM946E-S。其內(nèi)核在ARM7處理器內(nèi)核的基礎(chǔ)上使用了Jazelle增強(qiáng)技術(shù),該技術(shù)支持一種新的Java操作狀態(tài),允許在硬件中執(zhí)行Java字節(jié)碼。

ARM9E系列主要應(yīng)用于下一代無線設(shè)備、數(shù)字消費(fèi)品、成像設(shè)備、工業(yè)控制、存儲(chǔ)設(shè)備和網(wǎng)絡(luò)設(shè)備等領(lǐng)域。ARM9E系列簡(jiǎn)介嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第41頁(yè)!2.1ARM簡(jiǎn)介Xscale簡(jiǎn)介

IntelXscale微控制器則提供全性能、高性價(jià)比、低功耗的解決方案,支持16位Thumb指令并集成數(shù)字信號(hào)處理(DSP)指令。主要應(yīng)用于手提式通訊和消費(fèi)電子類設(shè)備。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第42頁(yè)!2.1ARM簡(jiǎn)介CortexTM-A8處理器簡(jiǎn)介

該處理器是ARM公司所開發(fā)的基于ARMv7架構(gòu)的首款應(yīng)用級(jí)處理器,其特色是運(yùn)用了可增加代碼密度和加強(qiáng)性能的技術(shù)、可支持多媒體以及信號(hào)處理能力的NEONTM技術(shù)、以及能夠支持Java和其他文字代碼語(yǔ)言的提前和即時(shí)編譯的Jazelle@RTC技術(shù)。眾多先進(jìn)的技術(shù)使其適用于家電以及電子行業(yè)等各種高端的應(yīng)用領(lǐng)域。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第43頁(yè)!2.1ARM簡(jiǎn)介CortexTM-M3處理器簡(jiǎn)介

該處理器是首款基于ARMv7-M架構(gòu)的處理器,采用了純Thumb2指令的執(zhí)行方式,具有極高的運(yùn)算能力和中斷響應(yīng)能力。

Cortex-M3主要應(yīng)用于汽車車身系統(tǒng),工業(yè)控制系統(tǒng)和無線網(wǎng)絡(luò)等對(duì)功耗和成本敏感的嵌入式應(yīng)用領(lǐng)域。目前最便宜的基于該內(nèi)核的ARM單片機(jī)售價(jià)為1美元。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第44頁(yè)!處理器內(nèi)核嵌套向量中斷控制器(NVIC)存儲(chǔ)器保護(hù)單元(MPU)總線接口低成本調(diào)試解決方案

Cortex-M3處理器由以下組件整合CPUCORENVIC總線接口MPU調(diào)試接口可裁剪嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第45頁(yè)!2.2Cortex-M3內(nèi)核概述外部中斷可配置為1~240個(gè)。優(yōu)先級(jí)位可配置為1~8位。中斷優(yōu)先級(jí)可動(dòng)態(tài)地重新配置。優(yōu)先級(jí)分組。分為占先中斷等級(jí)和非占先中斷等級(jí)。支持末尾連鎖(tail-chaining)和遲來(latearrival)中斷。這樣,在兩個(gè)中斷之間沒有多余的狀態(tài)保存和狀態(tài)恢復(fù)指令的情況下,使能背對(duì)背中斷(back-to-backinterrupt)處理。處理器狀態(tài)在進(jìn)入中斷時(shí)自動(dòng)保存,中斷退出時(shí)自動(dòng)恢復(fù),不需要多余的指令。

嵌套向量中斷控制器(NVIC)。它與處理器內(nèi)核緊密結(jié)合實(shí)現(xiàn)低延遲中斷處理。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第46頁(yè)!2.2Cortex-M3內(nèi)核概述AHBLiteICode、DCode和系統(tǒng)總線接口APB專用外設(shè)總線(PPB)接口Bitband支持,bit-band的原子寫和讀訪問。存儲(chǔ)器訪問對(duì)齊。寫緩沖區(qū),用于緩沖寫數(shù)據(jù)。

內(nèi)部總線接口

嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第47頁(yè)!與ARM7TDMI性能大比拼ARM7TDMICortex-M3架構(gòu)ARMv4T(馮.若依曼)ARMv7-M(哈佛)ISA支持Thumb/ARMThumb/Thumb-2流水線3級(jí)3級(jí)+分支預(yù)測(cè)中斷FIQ/IRQ240個(gè)物理中斷中斷延時(shí)24—42個(gè)時(shí)鐘周期12個(gè)時(shí)鐘(末尾連鎖僅6個(gè))休眠保護(hù)無內(nèi)置存儲(chǔ)器保護(hù)無8段存儲(chǔ)器保護(hù)單元硬件除法無2—12個(gè)時(shí)鐘周期運(yùn)行速度0.95DMIPS/MHz1.25DMIPS/MHz功耗0.28mW/MHz0.19mW/MHz面積0.62mm2(僅內(nèi)核)0.86mm2(內(nèi)核+外設(shè))嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第48頁(yè)!優(yōu)化體系架構(gòu)

內(nèi)核基于哈佛結(jié)構(gòu),指令和數(shù)據(jù)可以從存儲(chǔ)器中同時(shí)讀取,對(duì)多個(gè)操作可以并行執(zhí)行,加快了應(yīng)用程序執(zhí)行速度。與ARM7TDMI相比,比Thumb指令每兆赫的效率提高70%,比ARM指令提高35%Dhrystone相關(guān)測(cè)試的性能值1.25DMIPS0.95DMIPS嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第49頁(yè)!帶分支預(yù)測(cè)的3級(jí)流水線Cortex-M3的流水線分為3級(jí),分別為:取指譯碼執(zhí)行取指譯碼執(zhí)行從存儲(chǔ)器裝載一條指令識(shí)別將要被執(zhí)行的指令處理指令并將結(jié)果寫回寄存器在譯碼時(shí)進(jìn)行分支預(yù)測(cè),遇跳轉(zhuǎn)指令也不會(huì)打斷流水線PC值總是指向正在去取指的指令嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第50頁(yè)!三級(jí)流水線結(jié)構(gòu)的指令執(zhí)行順序指令1指令2指令3指令4…………程序存儲(chǔ)器周期1周期2周期3周期4周期5周期6取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行周期2周期1周期3周期4處理器執(zhí)行一條指令的三個(gè)階段在第2個(gè)周期,PC指向指令2,此時(shí)指令1進(jìn)入三級(jí)流水線的譯碼階段,同時(shí)取出指令2。2嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第51頁(yè)!三級(jí)流水線結(jié)構(gòu)的指令執(zhí)行順序指令1指令2指令3指令4…………程序存儲(chǔ)器周期1周期2周期3周期4周期5周期6取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行周期2周期1周期3周期4處理器執(zhí)行一條指令的三個(gè)階段在第4個(gè)周期,指令1執(zhí)行完成,指令2和指令3流水線推進(jìn)一級(jí),同時(shí)開始指令4的取指處理。4嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第52頁(yè)!Cortex-M3帶分支預(yù)測(cè)的3級(jí)流水線推演過程MOVR0,#00ADDSR0,R0,#1CMPR0,#0x7D0BNE

0x00000202BX0X00000300LDRR1,#00……MOVR2,#200x02000x02020x02040x02080x020A0X020C……0x0300地址指令取指譯碼執(zhí)行MOV----step1ADDSMOV--step2CMPADDSMOVstep3BNE

CMPADDSstep4ADDSBNE

CMPstep5因?yàn)閹Х种ьA(yù)測(cè),跳轉(zhuǎn)指令在譯碼時(shí)就被識(shí)別,取指時(shí)流水線自動(dòng)加載跳轉(zhuǎn)后地址的指令。CMPADDSBNE

step6BXBNE

CMPAPSR的Z=0APSR的Z!=0嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第53頁(yè)!2.3Cortex-M3模塊的內(nèi)部方框圖嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第54頁(yè)!特權(quán)訪問和用戶訪問處理模式線程模式特權(quán)訪問用戶訪問始終特權(quán)訪問2.4Cortex-M3的編程模式嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第55頁(yè)!2.4Cortex-M3的編程模式1.線程模式Cortex-M3處理器支持兩種工作模式:線程模式和處理模式2.處理模式在復(fù)位時(shí)處理器進(jìn)入線程模式異常返回時(shí)處理器進(jìn)入線程模式特權(quán)和用戶(非特權(quán))代碼能夠在線程模式下運(yùn)行出現(xiàn)異常時(shí)處理器進(jìn)入處理模式在處理模式中,所有代碼都是特權(quán)訪問的嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第56頁(yè)!CONTROL[0]特權(quán)訪問用戶訪問10特權(quán)訪問和用戶訪問的切換控制寄存器的第0位在處理模式下,通過MSR指令清零CONTROL[0],

退出處理模式進(jìn)入線程模式時(shí)切換到特權(quán)訪問。

MRSR0CONTROLORRR0,R0,#0x01MSRCONTROLR0在處理模式下,通過MSR指令置位CONTROL[0],

退出處理模式進(jìn)入線程模式時(shí)切換到用戶訪問。在線程模式特權(quán)訪問下,通過MSR指令置位CONTROL[0],即可由特權(quán)訪問進(jìn)入用戶訪問。

MOVR0#0X00MSRCONTROLR0嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第57頁(yè)!2.4Cortex-M3的編程模式Cortex-M3內(nèi)核有兩個(gè)堆棧指針:MSP和PSP主堆棧和進(jìn)程堆棧結(jié)束復(fù)位后,所有代碼都使用主堆棧所有異常都使用主堆棧異常處理程序(例如SVC)可以通過改變其在退出時(shí)使用的EXC_RETURN值來改變線程模式使用的堆棧。在線程模式中,使用MSR指令對(duì)CONTROL[1]執(zhí)行寫操作也可以從主堆棧切換到進(jìn)程堆棧。堆棧指針r13是分組寄存器,在SP_main和SP_process之間切換。在任何時(shí)候,進(jìn)程堆棧和主堆棧中只有一個(gè)是可見的,由r13指示。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第58頁(yè)!2.4Cortex-M3的編程模式通過MSR指令修改CONTROL[1]進(jìn)行堆棧切換線程模式主堆棧線程模式進(jìn)程堆棧CONTROL[1]主堆棧進(jìn)程堆棧10控制寄存器的第1位一般通過中斷返回進(jìn)行堆棧切換,MSR指令切換用的極少。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第59頁(yè)!前后臺(tái)系統(tǒng)主堆棧壓棧過程數(shù)據(jù)…數(shù)據(jù)棧頂棧底0x200004000x200003FC0x200003F8數(shù)據(jù)地址數(shù)據(jù)增長(zhǎng)方向在KEILREALVIEW和CROSS編譯器下,堆棧增長(zhǎng)都為滿遞減SP主堆棧嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第60頁(yè)!前后臺(tái)系統(tǒng)主堆棧出棧過程數(shù)據(jù)…數(shù)據(jù)棧底數(shù)據(jù)地址退出中斷主堆棧XPSRPCLRR12R3R2R1R0通用寄存器0x200004000x200003FC0x200003F8SPSPSPSPSPSPSPXPSRPCLRR12R3R2R1R0R1R0SPSPR2XPSRPCLRR12R3退出異常,寄存器恢復(fù)為進(jìn)入前的值。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第61頁(yè)!操作系統(tǒng)主堆棧和進(jìn)程堆棧切換過程主堆棧任務(wù)1任務(wù)2進(jìn)入異常…數(shù)據(jù)SP…數(shù)據(jù)…數(shù)據(jù)棧底棧底棧底…R0SPSP=MSP嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第62頁(yè)!主堆棧和進(jìn)程堆棧的切換OSPendSV......LDRR0,[R6];OSTCBHighRdy->OSTCBStkPtrMSRPSP,R0ORRLR,LR,#0x04BXLR異常返回時(shí),置位第2個(gè)Bit,返回線程模式,并使用進(jìn)程堆棧。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第63頁(yè)!32位通用寄存器R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSRr0~r12,為13個(gè)通用寄存器低寄存器

,r0-r7可以被指定通用寄存器的所有指令訪問高寄存器

,r8-r12可以被指定通用寄存器的所有32位指令訪問,不能被16位指令訪問。SP_processSP_main嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第64頁(yè)!鏈接寄存器(LR)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSR鏈接寄存器(LR)在執(zhí)行分支(branch)和鏈接(BL)指令或帶有交換的分支和鏈接指令(BLX)時(shí),LR用于保存PC的返回地址。

主要用于保存子程序的返回地址。

LR也用于異常返回。

嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第65頁(yè)!寄存器(PC)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSR程序計(jì)數(shù)器(PC)程序計(jì)數(shù)器總是指向正在取指的指令。該寄存器的位0始終為0,因此,指令始終與字或半字邊界對(duì)齊。程序狀態(tài)寄存器(XPSR)用于指示程序的運(yùn)行狀態(tài)。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第66頁(yè)!MRS<c><q><Rd><spec_reg>特殊功能程序狀態(tài)寄存器對(duì)程序狀態(tài)寄存器的訪問只能使用MRS和MSR指令

MRS從特殊寄存器讀出數(shù)據(jù),并存入一通用寄存器指令碼條件執(zhí)行指示是16位還是32位指令通用寄存器(R0—R15)特殊功能寄存器

MRSEQ.WR0,PSP嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第67頁(yè)!應(yīng)用狀態(tài)寄存器(APSR)包含條件代碼標(biāo)志。在進(jìn)入異常之前,Cortex-M3處理器將條件代碼標(biāo)志保存在堆棧內(nèi)(硬件壓棧)。您可以使用MSR(2)和MRS(2)指令來訪問APSR。應(yīng)用狀態(tài)寄存器(APSR)嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第68頁(yè)!中斷狀態(tài)寄存器(IPSR)中斷狀態(tài)寄存器(IPSR)包含當(dāng)前激活的異常的ISR編號(hào)。IPSR的位分配ISRNUMBER基礎(chǔ)級(jí)別=0Reset=1NMI=2SVCall=11......31980保留中斷號(hào)嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第69頁(yè)!執(zhí)行狀態(tài)寄存器(EPSR)執(zhí)行狀態(tài)寄存器PSR(EPSR)包含兩個(gè)重疊的區(qū)域:可中斷-可繼續(xù)指令(ICI)區(qū)

多寄存器加載(LDM)和存儲(chǔ)(STM)操作是可中斷的。EPSR的ICI區(qū)用來保存從產(chǎn)生中斷的點(diǎn)繼續(xù)執(zhí)行多寄存器加載和存儲(chǔ)操作時(shí)所必需的信息。

If-then狀態(tài)區(qū)

EPSR的IT區(qū)包含了If-Then指令的執(zhí)行狀態(tài)位。

注:ICI區(qū)和IT區(qū)是重疊的,因此,If-Then模塊內(nèi)的多寄存器加載或存儲(chǔ)操作不具有可中斷-可繼續(xù)功能。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第70頁(yè)!執(zhí)行狀態(tài)寄存器(EPSR)EPSR的位分配

If-Then位。它們是If-Then指令的執(zhí)行狀態(tài)位。包含If-Then模塊的指令數(shù)目和它們的執(zhí)行條件。31272625242316151090保留ICI/ITT保留ICI/IT保留IT嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第71頁(yè)!執(zhí)行狀態(tài)寄存器(EPSR)不能直接訪問EPSR,若想修改EPSR必須發(fā)生以下兩個(gè)事件之一:在執(zhí)行LDM或STM指令時(shí)產(chǎn)生一次中斷執(zhí)行If-Then指令如果出現(xiàn)下列情況,LDM/STM操作重新開始而不是繼續(xù)執(zhí)行:LDM/STM錯(cuò)誤LDM/STM指令位于IT內(nèi)嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第72頁(yè)!特殊功能寄存器BASEPRI可屏蔽等于和低于某個(gè)優(yōu)先級(jí)的中斷。例如,把BASEPRI設(shè)置為0X40(即2<<5),則2和2以上優(yōu)先級(jí)的中斷被屏蔽,只有0和1優(yōu)先級(jí)的中斷不被屏蔽。注:BASEPRI與優(yōu)先級(jí)分組有關(guān),stellaris系列處理器使用高3位來配置。BASEPRI2優(yōu)先級(jí)0優(yōu)先級(jí)1優(yōu)先級(jí)2優(yōu)先級(jí)3優(yōu)先級(jí)4….中斷被屏蔽中斷可響應(yīng)嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第73頁(yè)!特殊功能寄存器控制寄存器(CONTROL)CONTROL寄存器由兩個(gè)狀態(tài)位組成:CONTROL[0]CONTROL[1]0特權(quán)模式主堆棧1用戶模式進(jìn)程堆棧嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第74頁(yè)!系統(tǒng)異常(中斷)什么是異常?只要正常的程序被暫時(shí)中止,處理器就進(jìn)入異常模式。異常包括復(fù)位、系統(tǒng)故障、外設(shè)中斷等事件。ARMCortex-M3處理器的所有異常可以通過NVIC(嵌套向量中斷控制器)進(jìn)行控制,通過NVIC可以設(shè)置各個(gè)異常的優(yōu)先等級(jí)并對(duì)異常進(jìn)行處理。所有異常都在處理器模式(HandlerMode)中處理。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第75頁(yè)!異常類型表異常類型位置優(yōu)先級(jí)[1]描述-0-復(fù)位時(shí)載入向量表的項(xiàng)作為棧頂?shù)刂?。?fù)位1-3(最高)在上電和熱復(fù)位時(shí)調(diào)用。在執(zhí)行條指令時(shí),優(yōu)先級(jí)將降為最低(也就是所謂的激活(中斷)的基礎(chǔ)級(jí)別)。這是異步的。不可屏蔽中斷(NMI)2-2不可停止,也不會(huì)被復(fù)位之外的任何異常搶占。這是異步的。NMI僅可由軟件通過NVIC中斷控制狀態(tài)寄存器來產(chǎn)生。硬故障3-1當(dāng)故障由于優(yōu)先級(jí)或者是可配置的故障處理程序被禁能的原因而無法激活時(shí),所有類型的故障都會(huì)以硬故障的方式激活。這是同步的。存儲(chǔ)器管理4可調(diào)整MPU不匹配,包括訪問沖突(accessviolation)和不匹配。這是同步的。這種異常的優(yōu)先級(jí)可被改變。總線故障5可調(diào)整預(yù)取指故障、存儲(chǔ)器訪問故障和其它地址/存儲(chǔ)器相關(guān)的故障。當(dāng)為精確的總線故障時(shí)是同步的,為不精確的總線故障時(shí)是異步的。你可以使能或禁能這種故障。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第76頁(yè)!Cortex-M3異常有哪些特點(diǎn)?自動(dòng)的狀態(tài)保存和恢復(fù)。處理器在進(jìn)入ISR之前將狀態(tài)寄存器和部分寄存器自動(dòng)壓棧,退出ISR之后它們自動(dòng)出棧,不需要多余的指令。自動(dòng)讀取代碼存儲(chǔ)器或SRAM中包含ISR地址的向量表入口。該操作與狀態(tài)保存同時(shí)執(zhí)行。支持末尾連鎖,在末尾連鎖中,處理器在兩個(gè)ISR之間不需要對(duì)寄存器進(jìn)行出棧和壓棧操作的情況下處理背對(duì)背中斷。中斷優(yōu)先級(jí)可動(dòng)態(tài)重新設(shè)置。Cortex-M3與NVIC之間采用緊耦合(closely-coupled)接口,通過該接口可以及早地對(duì)中斷和高優(yōu)先級(jí)的遲來中斷進(jìn)行處理。中斷數(shù)目可配置為1~240。中斷優(yōu)先級(jí)的數(shù)目可配置為1~8位(1~256級(jí)。Stellaris系列單片機(jī)只支持8級(jí))。處理模式和線程模式具有獨(dú)立的堆棧和特權(quán)等級(jí)。使用C/C++標(biāo)準(zhǔn)的調(diào)用規(guī)范:ARM架構(gòu)的過程調(diào)用標(biāo)準(zhǔn)(PCSAA)執(zhí)行ISR控制傳輸。優(yōu)先級(jí)屏蔽支持臨界區(qū)(關(guān)中斷,使程序不被高優(yōu)先級(jí)異常中斷)。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第77頁(yè)!異常基于優(yōu)先級(jí)的動(dòng)作占先

在異常處理程序中,一個(gè)新的異常比當(dāng)前的異常優(yōu)先級(jí)更高,處理器打斷當(dāng)前的流程,響應(yīng)優(yōu)先級(jí)更高的異常,此時(shí)產(chǎn)生中斷嵌套。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第78頁(yè)!異?;趦?yōu)先級(jí)的動(dòng)作末尾連鎖是處理器用來加速中斷響應(yīng)的一種機(jī)制。在結(jié)束ISR時(shí),如果存在一個(gè)掛起中斷,其優(yōu)先級(jí)高于正在返回的ISR或線程,那么就會(huì)跳過出棧操作,轉(zhuǎn)而將控制權(quán)讓給新的ISR。末尾連鎖思考題末尾連鎖,為什么會(huì)不需要壓棧?嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第79頁(yè)!異?;趦?yōu)先級(jí)的動(dòng)作在沒有掛起異常或沒有比被壓棧的ISR優(yōu)先級(jí)更高的掛起異常時(shí),處理器執(zhí)行出棧操作,并返回到被壓棧的ISR或線程模式。在響應(yīng)ISR之后,處理器通過出棧操作自動(dòng)將處理器狀態(tài)恢復(fù)為進(jìn)入ISR之前的狀態(tài)。如果在狀態(tài)恢復(fù)過程中出現(xiàn)一個(gè)新的中斷,并且該中斷的優(yōu)先級(jí)比正在返回的ISR或線程更高,則處理器放棄狀態(tài)恢復(fù)操作并將新的中斷作為末尾連鎖來處理。返回嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第80頁(yè)!異?;趦?yōu)先級(jí)的動(dòng)作遲來是處理器用來加速占先的一種機(jī)制。如果在保存前一個(gè)占先的狀態(tài)時(shí)出現(xiàn)一個(gè)優(yōu)先級(jí)更高的中斷,則處理器轉(zhuǎn)去處理優(yōu)先級(jí)更高的中斷,開始該中斷的取向量操作。狀態(tài)保存不會(huì)受到遲來的影響。因?yàn)楸槐4娴臓顟B(tài)對(duì)于兩個(gè)中斷都是一樣的,狀態(tài)保存繼續(xù)執(zhí)行不會(huì)被打斷。處理器對(duì)遲來中斷進(jìn)行管理,直到ISR的條指令進(jìn)入處理器流水線的執(zhí)行階段。返回時(shí),采用常規(guī)的末尾連鎖技術(shù)。

遲來嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第81頁(yè)!異常優(yōu)先級(jí)復(fù)位不可屏蔽中斷硬故障存儲(chǔ)器管理總線故障使用故障SVCall調(diào)試監(jiān)控器PendSVSysTick外部中斷優(yōu)先級(jí)由高到低優(yōu)先級(jí)不可調(diào)整優(yōu)先級(jí)可調(diào)整嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第82頁(yè)!優(yōu)先級(jí)分組中斷優(yōu)先級(jí)區(qū)(PRI_N[7:0])76543210PRI_N占先區(qū)次優(yōu)先區(qū)注意:修改PRIGROUP區(qū)的值可改變占先區(qū)和次優(yōu)先區(qū)的位數(shù)。占先優(yōu)先級(jí)又稱為組優(yōu)先級(jí)如果兩個(gè)掛起異常具有相同的組優(yōu)先級(jí),則掛起異常的編號(hào)越低優(yōu)先級(jí)越高。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第83頁(yè)!異常進(jìn)入步驟從向量表中讀SP更新PC加載流水線更新LR讀向量表硬件壓棧從向量表中讀SP更新PC加載流水線更新LR讀向量表硬件壓棧利用向量表讀出的位置更新PC。直到條指令開始執(zhí)行時(shí),才能處理遲來異常。從向量表指向的位置加載指令。它與寄存器壓棧操作同時(shí)執(zhí)行。

LR設(shè)置為EXC_RETURN,以便從異常中退出。在復(fù)位時(shí),將SP更新為向量表中第1個(gè)字的值。讀存儲(chǔ)器中的向量表,地址為向量表基址+(異常號(hào)*4)。中斷函數(shù)入口。在所選的堆棧上將xPSR、PC、LR、R12、R3、R2、R1、R0壓棧注意:LR的值并非進(jìn)入異常程序的地址注:以上步驟由硬件自動(dòng)完成,僅需12個(gè)時(shí)鐘周期嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第84頁(yè)!異常進(jìn)入內(nèi)部時(shí)序開始?jí)簵:腿∠蛄繅簵5耐瑫r(shí)取指令嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第85頁(yè)!異常退出步驟流程IPSR的位[8:0]是否為0加載來自被壓棧的XPSR的位[8:0]返回線程模式主堆棧是加載當(dāng)前激活的中斷號(hào)進(jìn)入另一個(gè)異常否將PC,xPSR,r0,r1,r2,r3,r12,LR從所選的堆棧中出棧EXC_RETURN[3:0]選擇堆棧=0b1001返回線程模式進(jìn)程堆棧=0b1101嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第86頁(yè)!異常返回行為當(dāng)使用上面的指令將LR的值裝入PC時(shí),寫入PC的值被截取,作為EXC_RETURN的值。EXC_RETURN[3:0]用來提供返回信息,高位全為1。EXC_RETURN[3:0]0bxxx0保留0b0001返回處理模式異常返回,獲得來自主堆棧的狀態(tài)。在返回時(shí)指令執(zhí)行使用主堆棧0b0011保留0b01x1保留0b1001返回線程模式異常返回,獲得來自主堆棧的狀態(tài)返回時(shí)指令執(zhí)行使用主堆棧0b1101返回線程模式異常返回,獲得來自進(jìn)程堆棧的狀態(tài)返回時(shí)指令執(zhí)行使用進(jìn)程堆棧0b1x11保留如果EXC_RETURN[3:0]的值為該表中的保留值,則將導(dǎo)致一個(gè)稱作使用故障的末尾連鎖異常。

如果在線程模式中,或從向量表,或通過任何其它的指令將EXC_RETURN的值加載到PC時(shí),該值看作一個(gè)地址,而不是特殊的值。由于這個(gè)地址范圍被定義為具有永不執(zhí)行(XN)許可,所以將導(dǎo)致存儲(chǔ)器管理故障異常。

嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第87頁(yè)!

ARM公司于2005年推出了Cortex-M3內(nèi)核,就在當(dāng)年ARM公司與其他投資商合伙成立了Luminary(流明諾瑞)公司,由該公司率先設(shè)計(jì)、生產(chǎn)與銷售基于Cortex-M3內(nèi)核的ARM芯片——Stellaris(群星)系列ARM。

Cortex-M3內(nèi)核是ARM公司整個(gè)Cortex內(nèi)核系列中的微控制器系列(M)內(nèi)核,還是其它兩個(gè)系列分別是應(yīng)用處理器系列(A)與實(shí)時(shí)控制處理系列(R),這三個(gè)系列又分別簡(jiǎn)稱為A、R、M系列,當(dāng)然這三個(gè)系列的內(nèi)核分別有各自不同的應(yīng)用場(chǎng)合。

Cortex-M3簡(jiǎn)介嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第88頁(yè)!

Cortex-M3中央內(nèi)核基于哈佛架構(gòu),指令和數(shù)據(jù)各使用一條總線(右圖中所示)。與Cortex-M3不同,ARM7系列處理器使用馮·諾依曼(VonNeumann)架構(gòu),指令和數(shù)據(jù)共用信號(hào)總線以及存儲(chǔ)器。由于指令和數(shù)據(jù)可以從存儲(chǔ)器中同時(shí)讀取,所以Cortex-M3處理器對(duì)多個(gè)操作并行執(zhí)行,加快了應(yīng)用程序的執(zhí)行速度。

Cortex-M3內(nèi)核簡(jiǎn)介一:哈佛架構(gòu)嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第89頁(yè)!

Cortex-M3處理器是一個(gè)存儲(chǔ)器映射系統(tǒng),為高達(dá)4GB的可尋址存儲(chǔ)空間提供簡(jiǎn)單和固定的存儲(chǔ)器映射,同時(shí),這些空間為代碼(代碼空間)、SRAM(存儲(chǔ)空間),外部存儲(chǔ)器/器件和內(nèi)部/外部外設(shè)提供預(yù)定義的專用地址。另外,還有一個(gè)特殊區(qū)域?qū)iT供廠家使用。 借助bit-banding技術(shù),Cortex-M3處理器可以在簡(jiǎn)單系統(tǒng)中直接對(duì)數(shù)據(jù)的單個(gè)位進(jìn)行訪問。存儲(chǔ)器映射包含兩個(gè)位于SRAM的大小均為1MB的bit-band區(qū)域和映射到32MB別名區(qū)域的外設(shè)空間。在別名區(qū)域中,某個(gè)地址上的加載/存儲(chǔ)操作將直接轉(zhuǎn)化為對(duì)被該地址別名的位的操作。對(duì)別名區(qū)域中的某個(gè)地址進(jìn)行寫操作,如果使其最低有效位置位,那么bit-band位為1,如果使其最低有效位清零,那么bit-band位為零。讀別名后的地址將直接返回適當(dāng)?shù)腷it-band位中的值。除此之外,該操作為原子位操作,其他總線活動(dòng)不能對(duì)其中斷。Cortex-M3存儲(chǔ)器映射:bit-band技術(shù)嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第90頁(yè)!嵌套向量中斷控制器(NVIC):末尾連鎖技術(shù)

NVIC是Cortex-M3處理器中一個(gè)完整的部分,最多可支持240個(gè)外部中斷,每個(gè)外部中斷最多可具有256個(gè)可重新動(dòng)態(tài)劃分的不同優(yōu)先級(jí)別。它支持優(yōu)先級(jí)別中斷源和脈沖中斷源。當(dāng)進(jìn)入中斷時(shí),處理器狀態(tài)會(huì)自動(dòng)保存在硬盤中,NVIC還支持末尾連鎖技術(shù) Cortex-M3處理器使用一個(gè)可以重復(fù)定位的向量表,表中包含了將要執(zhí)行的函數(shù)的地址,可供具體的中斷處理器使用。中斷被接受之后,處理器通過指令總線接口從向量表中獲取地址。向量表復(fù)位時(shí)指向零,編程控制寄存器可以使向量表重新定位。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第91頁(yè)!

嵌套向量中斷控制器(NVIC):

可以在硬件中處理堆棧操作,Cortex-M3處理器免去了在傳統(tǒng)的C語(yǔ)言中斷服務(wù)程序中為了完成堆棧處理所要編寫的匯編程序包,這使應(yīng)用程序的開發(fā)變得更加簡(jiǎn)單。

Cortex-M3處理器使用末尾連鎖(tail-chaining)技術(shù)簡(jiǎn)化了激活的和未決的中斷之間的移動(dòng)。末尾連鎖技術(shù)把需要用時(shí)30個(gè)時(shí)鐘周期才能完成的連續(xù)的堆棧彈出和壓入操作替換為6個(gè)周期就能完成的指令取指,實(shí)現(xiàn)了延遲的降低。處理器狀態(tài)在進(jìn)入中斷時(shí)自動(dòng)保存,在中斷退出時(shí)自動(dòng)恢復(fù),比軟件執(zhí)行用時(shí)更少,大大提高了頻率為100MHz的子系統(tǒng)的性能。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第92頁(yè)!?免去Thumb和ARM代碼的互相切換,對(duì)于早期的處理器來說,這種狀態(tài)切換會(huì)降低性能。?Thumb-2指令集的設(shè)計(jì)是專門面向C語(yǔ)言的,且包括If/Then結(jié)構(gòu)(預(yù)測(cè)接下來的四條語(yǔ)句的條件執(zhí)行)、硬件除法以及本地位域操作。?Thumb-2指令集允許用戶在C代碼層面維護(hù)和修改應(yīng)用程序,C代碼部分非常易于重用。?Thumb-2指令集也包含了調(diào)用匯編代碼的功能:Luminary公司認(rèn)為沒有必要使用任何匯編語(yǔ)言。Thumb-2指令的優(yōu)勢(shì)嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第93頁(yè)!選擇ARM處理器,ARM7還是

Cortex-M3嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第94頁(yè)!嵌入式處理器嵌入式微處理器EMPU嵌入式微控制器MCU嵌入式數(shù)字信號(hào)處理器EDSP片上可編程系統(tǒng)SOPC嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第95頁(yè)!1.3嵌入式操作系統(tǒng)概述計(jì)算機(jī)系統(tǒng)由硬件和軟件組成,在發(fā)展初期沒有操作系統(tǒng)這個(gè)概念,用戶使用監(jiān)控程序來使用計(jì)算機(jī)。隨著計(jì)算機(jī)技術(shù)的發(fā)展,計(jì)算機(jī)系統(tǒng)的硬件、軟件資源也愈來愈豐富,監(jiān)控程序已不能適應(yīng)計(jì)算機(jī)應(yīng)用的要求。于是在六十年代中期監(jiān)控程序又進(jìn)一步發(fā)展形成了操作系統(tǒng)(OperatingSystem)。發(fā)展到現(xiàn)在,廣泛使用的有三種操作系統(tǒng)即多道批處理操作系統(tǒng)、分時(shí)操作系統(tǒng)以及實(shí)時(shí)操作系統(tǒng)。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第96頁(yè)!1.3嵌入式操作系統(tǒng)概述監(jiān)控程序操作系統(tǒng)實(shí)時(shí)操作系統(tǒng)分時(shí)操作系統(tǒng)多道批處理操作系統(tǒng)時(shí)間先后適用于多個(gè)用戶共享系統(tǒng)資源適用于計(jì)算中心等較大的計(jì)算機(jī)系統(tǒng)適用于嵌入式設(shè)備和有實(shí)時(shí)性要求的系統(tǒng)中實(shí)時(shí)操作系統(tǒng)是我們介紹的重點(diǎn)嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第97頁(yè)!1.3嵌入式操作系統(tǒng)實(shí)時(shí)操作系統(tǒng)的特點(diǎn)總的來說實(shí)時(shí)操作系統(tǒng)是事件驅(qū)動(dòng)的,能對(duì)來自外界的作用和信號(hào)在限定的時(shí)間范圍內(nèi)作出響應(yīng)。它強(qiáng)調(diào)的是實(shí)時(shí)性、可靠性和靈活性,與實(shí)時(shí)應(yīng)用軟件相結(jié)合成為有機(jī)的整體起著核心作用,由它來管理和協(xié)調(diào)各項(xiàng)工作,為應(yīng)用軟件提供良好的運(yùn)行軟件環(huán)境及開發(fā)環(huán)境。從實(shí)時(shí)系統(tǒng)的應(yīng)用特點(diǎn)來看實(shí)時(shí)操作系統(tǒng)可以分為兩種:一般實(shí)時(shí)操作系統(tǒng)和嵌入式實(shí)時(shí)操作系統(tǒng)。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第98頁(yè)!基本概念

中斷服務(wù)程序處理異步事件,這部分可以看成前臺(tái)行為,前臺(tái)也叫中斷級(jí)。時(shí)間相關(guān)性很強(qiáng)的關(guān)鍵操作一定是靠中斷服務(wù)程序來保證的。循環(huán)中調(diào)用相應(yīng)的函數(shù)完成相應(yīng)的操作,這部分可以看成后臺(tái)行為,后臺(tái)也可以叫做任務(wù)級(jí)。這種系統(tǒng)在處理的及時(shí)性上比實(shí)際可以做到的要差。ISRISRISRISR后臺(tái)前臺(tái)中斷服務(wù)程序時(shí)間——前后臺(tái)系統(tǒng)嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第99頁(yè)!1.3嵌入式操作系統(tǒng)基本概念

實(shí)時(shí)操作系統(tǒng)是一段在嵌入式系統(tǒng)啟動(dòng)后首先執(zhí)行的背景程序,用戶的應(yīng)用程序是運(yùn)行于RTOS之上的各個(gè)任務(wù),RTOS根據(jù)各個(gè)任務(wù)的要求,進(jìn)行資源(包括存儲(chǔ)器、外設(shè)等)管理、消息管理、任務(wù)調(diào)度、異常處理等工作。在RTOS支持的系統(tǒng)中,每個(gè)任務(wù)均有一個(gè)優(yōu)先級(jí),RTOS根據(jù)各個(gè)任務(wù)的優(yōu)先級(jí),動(dòng)態(tài)地切換各個(gè)任務(wù),保證對(duì)實(shí)時(shí)性的要求?!獙?shí)時(shí)操作系統(tǒng)(RTOS)嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第100頁(yè)!1.3嵌入式操作系統(tǒng)基本概念

程序運(yùn)行時(shí)可使用的軟、硬件環(huán)境統(tǒng)稱為資源。資源可以是輸入輸出設(shè)備,例如打印機(jī)、鍵盤、顯示器。資源也可以是一個(gè)變量、一個(gè)結(jié)構(gòu)或一個(gè)數(shù)組等。——資源嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第101頁(yè)!1.3嵌入式操作系統(tǒng)基本概念

一個(gè)任務(wù),也稱作一個(gè)線程,是一個(gè)簡(jiǎn)單的程序,該程序可以認(rèn)為CPU完全屬于該程序自己。實(shí)時(shí)應(yīng)用程序的設(shè)計(jì)過程,包括如何把問題分割成多個(gè)任務(wù),每個(gè)任務(wù)都是整個(gè)應(yīng)用的某一部分,每個(gè)任務(wù)被賦予一定的優(yōu)先級(jí),有它自己的一套CPU寄存器和自己的??臻g?!蝿?wù)嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第102頁(yè)!1.3嵌入式操作系統(tǒng)基本概念

多任務(wù)系統(tǒng)中,內(nèi)核負(fù)責(zé)管理各個(gè)任務(wù),或者說為每個(gè)任務(wù)分配CPU時(shí)間,并且負(fù)責(zé)任務(wù)之間的通信。內(nèi)核提供的基本服務(wù)是任務(wù)切換。使用實(shí)時(shí)內(nèi)核可以大大簡(jiǎn)化應(yīng)用系統(tǒng)的設(shè)計(jì),是因?yàn)閷?shí)時(shí)內(nèi)核允許將應(yīng)用分成若干個(gè)任務(wù),由實(shí)時(shí)內(nèi)核來管理它們。內(nèi)核需要消耗一定的系統(tǒng)資源,比如2%~5%的CPU運(yùn)行時(shí)間、RAM和ROM等。內(nèi)核提供必不可少的系統(tǒng)服務(wù),如信號(hào)量、消息隊(duì)列、延時(shí)等?!獌?nèi)核嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第103頁(yè)!1.3嵌入式操作系統(tǒng)基本概念

非占先式內(nèi)核要求每個(gè)任務(wù)自我放棄CPU的所有權(quán)。非占先式調(diào)度法也稱作合作型多任務(wù),各個(gè)任務(wù)彼此合作共享一個(gè)CPU。異步事件還是由中斷服務(wù)來處理。中斷服務(wù)可以使一個(gè)高優(yōu)先級(jí)的任務(wù)由掛起狀態(tài)變?yōu)榫途w狀態(tài)。但中斷服務(wù)以后控制權(quán)還是回到原來被中斷了的那個(gè)任務(wù),直到該任務(wù)主動(dòng)放棄CPU的使用權(quán)時(shí),那個(gè)高優(yōu)先級(jí)的任務(wù)才能獲得CPU的使用權(quán)?!钦枷仁絻?nèi)核嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第104頁(yè)!1.3嵌入式操作系統(tǒng)基本概念

任務(wù)的優(yōu)先級(jí)是表示任務(wù)被調(diào)度的優(yōu)先程度。每個(gè)任務(wù)都具有優(yōu)先級(jí)。任務(wù)越重要,賦予的優(yōu)先級(jí)應(yīng)越高,越容易被調(diào)度而進(jìn)入運(yùn)行態(tài)?!蝿?wù)優(yōu)先級(jí)嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第105頁(yè)!前后臺(tái)系統(tǒng)1.3嵌入式操作系統(tǒng)基本概念——中斷ISR任務(wù)ISR非占先操作系統(tǒng)任務(wù)A任務(wù)B任務(wù)CISR占先操作系統(tǒng)任務(wù)A任務(wù)B任務(wù)C嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第106頁(yè)!1.3嵌入式操作系統(tǒng)使用實(shí)時(shí)操作系統(tǒng)的必要性

嵌入式實(shí)時(shí)操作系統(tǒng)在目前的嵌入式應(yīng)用中用得越來越廣泛,尤其在功能復(fù)雜、系統(tǒng)龐大的應(yīng)用中顯得愈來愈重要。在嵌入式應(yīng)用中,只有把CPU嵌入到系統(tǒng)中,同時(shí)又把操作系統(tǒng)嵌入進(jìn)去,才是真正的計(jì)算機(jī)嵌入式應(yīng)用。使用實(shí)時(shí)操作系統(tǒng)主要有以下幾個(gè)因素:嵌入式實(shí)時(shí)操作系統(tǒng)提高了系統(tǒng)的可靠性。提高了開發(fā)效率,縮短了開發(fā)周期。嵌入式實(shí)時(shí)操作系統(tǒng)充分發(fā)揮了32位CPU的多任務(wù)潛力。

嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第107頁(yè)!WhatisuC/OS?u:MicroC:controluC/OS:適合于小的、控制器的操作系統(tǒng)小巧公開源代碼,詳細(xì)的注解可剝奪實(shí)時(shí)內(nèi)核可移植性強(qiáng)多任務(wù)

確定性嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第108頁(yè)!概要內(nèi)核結(jié)構(gòu)-任務(wù)以及調(diào)度機(jī)制任務(wù)間通信uC/OS的移植在PC機(jī)上運(yùn)行uC/OS嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第109頁(yè)!任務(wù)的數(shù)據(jù)結(jié)構(gòu)—任務(wù)控制塊任務(wù)控制塊OS_tcb,包括任務(wù)堆棧指針,狀態(tài),優(yōu)先級(jí),任務(wù)表位置,任務(wù)鏈表指針等。所有的任務(wù)控制塊分為兩條鏈表,空閑鏈表和使用鏈表。OSTCBFreeListTCB0TCB1TCBn新任務(wù)TCB(1)空(2)(3)prenext圖4.3TCB的雙向鏈表結(jié)構(gòu)嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第110頁(yè)!任務(wù)的狀態(tài)嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第111頁(yè)!任務(wù)的調(diào)度--OSScheduC/OS是占先式實(shí)時(shí)多任務(wù)內(nèi)核,優(yōu)先級(jí)最高的任務(wù)一旦準(zhǔn)備就緒,則擁有CPU的所有權(quán)開始投入運(yùn)行。uC/OS中不支持時(shí)間片輪轉(zhuǎn)法,每個(gè)任務(wù)的優(yōu)先級(jí)要求不一樣且是唯一的,所以任務(wù)調(diào)度的工作就是:查找準(zhǔn)備就緒的最高優(yōu)先級(jí)的任務(wù)并進(jìn)行上下文切換。嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第112頁(yè)!就緒狀態(tài)標(biāo)志Bit0inOSRdyGrpis1whenanybitinOSRdyTbl[0]is1.Bit1inOSRdyGrpis1whenanybitinOSRdyTbl[1]is1.Bit2inOSRdyGrpis1whenanybitinOSRdyTbl[2]is1.Bit3inOSRdyGrpis1whenanybitinOSRdyTbl[3]is1.Bit4inOSRdyGrpis1whenanybitinOSRdyTbl[4]is1.Bit5inOSRdyGrpis1whenanybitinOSRdyTbl[5]is1.Bit6inOSRdyGrpis1whenanybitinOSRdyTbl[6]is1.Bit7inOSRdyGrpis1whenanybitinOSRdyTbl[7]is1.嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第113頁(yè)!根據(jù)優(yōu)先級(jí)確定就緒表假設(shè)優(yōu)先級(jí)為12的任務(wù)進(jìn)入就緒狀態(tài),12=1100b,則OSRdyTbl[1]的第4位置1,且OSRdyGrp的第1位置1,相應(yīng)的數(shù)學(xué)表達(dá)式為:OSRdyGrp|=0x02;

OSRdyTbl[1]|=0x10;而優(yōu)先級(jí)為21的任務(wù)就緒21=10101b,則OSRdyTbl[2]的第5位置1,且OSRdyGrp的第2位置1,相應(yīng)的數(shù)學(xué)表達(dá)式為:

OSRdyGrp|=0x04;

OSRdyTbl[2]|=0x20;嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第114頁(yè)!根據(jù)優(yōu)先級(jí)確定就緒表利用OSMapTbl,通過任務(wù)的識(shí)別號(hào)-優(yōu)先級(jí)prio來設(shè)置任務(wù)在就緒組和就緒表數(shù)組中相應(yīng)位置的數(shù)學(xué)式為:OSRdyGrp|=OSMapTbl[prio>>3];OSRdyTbl[prio>>3]|=OSMapTbl[prio&0x07];假設(shè)優(yōu)先級(jí)為12,1100bOSRdyGrp|=0x02;OSRdyTbl[1]|=0x10;嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第115頁(yè)!根據(jù)就緒表確定最高優(yōu)先級(jí)(2)通過OSRdyGrp值確定高3位,假設(shè)為0x24=100100b,---〉OSRdyTbl[2]和OSRdyTbl[5],高優(yōu)先級(jí)為2通過OSRdyTbl[2]的值來確定低3位,假設(shè)為0x12=010010b,---〉第2個(gè)和第5個(gè)任務(wù),取高優(yōu)先級(jí)第2個(gè)----〉17嵌入式系統(tǒng)復(fù)習(xí)2012新共185頁(yè),您現(xiàn)在瀏覽的是第116頁(yè)!INT8

溫馨提示

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

評(píng)論

0/150

提交評(píng)論