




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
《嵌入式系統(tǒng)原理與開發(fā)》
第19講南京大學(xué)計(jì)算機(jī)系俞建新主講12月15日1南京大學(xué)計(jì)算機(jī)系第1頁第9章嵌入式操作系統(tǒng)概論本講內(nèi)容實(shí)時(shí)系統(tǒng)嵌入式操作系統(tǒng)特點(diǎn)和分類RTOS慣用調(diào)度算法開啟程序bootloader嵌入式操作系統(tǒng)μC/OS-II
12月15日2南京大學(xué)計(jì)算機(jī)系第2頁9.5嵌入式操作系統(tǒng)μC/OS-IIμC/OS-II主要特點(diǎn)μC/OS-II層次μC/OS-II代碼結(jié)構(gòu)μC/OS-II內(nèi)核μC/OS-II任務(wù)調(diào)度μC/OS-II任務(wù)切換μC/OS-II中止處理μC/OS-II時(shí)間管理μC/OS-II任務(wù)間通信μC/OS-II存放管理μC/OS-II移植12月15日3南京大學(xué)計(jì)算機(jī)系第3頁μC/OS-II介紹作者:JeanLabrosse源碼公開嵌入式實(shí)時(shí)系統(tǒng)已被移植到40各種不一樣CPU上/提供技術(shù)服務(wù)支持。12月15日4南京大學(xué)計(jì)算機(jī)系第4頁μC/OS-II主要特點(diǎn)可移植性和可確定性絕大部分代碼用ANSIC編寫與處理器硬件相關(guān)代碼用匯編語言編寫移植條件 移植目標(biāo)處理器要有硬件堆棧指針 CPU內(nèi)容存放器入棧、出棧指令 C編譯器支持內(nèi)嵌匯編或C可擴(kuò)展,可連接匯編模塊 關(guān)中止、開中止可在C語言中實(shí)現(xiàn)12月15日5南京大學(xué)計(jì)算機(jī)系第5頁μC/OS-II主要特點(diǎn)(續(xù)1)搶占式多任務(wù)
能夠管理64個(gè)任務(wù),8個(gè)任務(wù)是系統(tǒng)任務(wù)用戶能夠最多定義56個(gè)任務(wù),每個(gè)任務(wù)優(yōu)先級不相同實(shí)時(shí)性較強(qiáng),參看下表OSVxWorksμC/OS-IIRT-LinuxQNX6供給商WindRiverMicriumFSMlabsQuanturm硬件平臺MC6800080486/33MHz80486/60MHz80486/33MHz任務(wù)切換3.8微秒﹤9微秒不詳12.57微秒中止響應(yīng)﹤3微秒﹤7.5微秒25微秒7.54微秒4種嵌入式操作系統(tǒng)實(shí)時(shí)性能經(jīng)典值12月15日6南京大學(xué)計(jì)算機(jī)系第6頁μC/OS-II主要特點(diǎn)(續(xù)2)可固化可裁剪實(shí)用程序能夠只使用μC/OS-II中需要那些系統(tǒng)服務(wù)任務(wù)由獨(dú)立堆棧μC/OS-II允許每個(gè)任務(wù)由不一樣棧空間嵌套中止管理嵌套層數(shù)可達(dá)255層12月15日7南京大學(xué)計(jì)算機(jī)系第7頁μC/OS-II層次μC/OS-II嵌入式系統(tǒng)軟件架構(gòu)(見下頁),是一個(gè)建立在硬件系統(tǒng)上四層軟件結(jié)構(gòu)最上層是應(yīng)用軟件層API層和支撐軟件層內(nèi)核設(shè)備驅(qū)動(dòng)程序12月15日8南京大學(xué)計(jì)算機(jī)系第8頁μC/OS-II層次示意圖基于μC/OS-II嵌入式系統(tǒng)軟件層次示意圖如右圖所表示12月15日9南京大學(xué)計(jì)算機(jī)系第9頁μC/OS-II代碼結(jié)構(gòu)基于μC/OS-II平臺嵌入式系統(tǒng)體系結(jié)構(gòu)如右下列圖所表示μC/OS-II主要由三大類程序文件組成A類:處理器無關(guān)B類:應(yīng)用程序相關(guān)C類:硬件平臺相關(guān)12月15日10南京大學(xué)計(jì)算機(jī)系第10頁μC/OS-II代碼結(jié)構(gòu)(續(xù))按功效分關(guān)鍵模塊、預(yù)處理模塊、進(jìn)程間通信模塊、內(nèi)存管理模塊、任務(wù)與調(diào)度管理器模塊、時(shí)間管理模塊、移植模塊μC/OS-II源代碼文件組成見教材第344頁表9-512月15日11南京大學(xué)計(jì)算機(jī)系第11頁μC/OS-II代碼結(jié)構(gòu)(續(xù))μC/OS-II任務(wù)代碼有兩種框架結(jié)構(gòu),以以下出:voidUsertask(void*pdata){for(;;){用戶代碼;OSMboxPend();OSQPend();OSSemPend();OSTaskDel(OS_PRIO_SELF);OSTaskSuspend(OS_PRIO_SELF);OSTimeDly();OSTimeDlyHMSM();用戶代碼;}}voidUsertask(void*pdata){用戶代碼;OSTaskDel(OS_PRIO_SELF);}12月15日12南京大學(xué)計(jì)算機(jī)系第12頁μC/OS-II代碼結(jié)構(gòu)(續(xù))對于執(zhí)行無限循環(huán)任務(wù),通常采取第一個(gè)形式;對于只執(zhí)行一次就自我刪除任務(wù),采取第二種形式。以下是推薦μC/OS-II應(yīng)用程序任務(wù)基本結(jié)構(gòu)
voidUsertask(void*pdata){INT8UReturnNum;//返回值InitTimer();//可選for(;;)………..//應(yīng)用程序代碼OSTimeDly(n);//慣用語句}12月15日13南京大學(xué)計(jì)算機(jī)系第13頁μC/OS-II代碼結(jié)構(gòu)(續(xù))μC/OS-II開啟過程Bootloader執(zhí)行完成后,調(diào)用應(yīng)用程序主文件(通常是main.c)里main()函數(shù)。main()函數(shù)在執(zhí)行過程中,除硬件初始化函數(shù)和用戶函數(shù)外,按以下次序執(zhí)行三個(gè)主要μC/OS-II函數(shù):①操作系統(tǒng)初始化OSInit();②任務(wù)創(chuàng)建OSTaskCreate();③任務(wù)調(diào)度開始OSStart()一旦OSStart()函數(shù)開始執(zhí)行,就標(biāo)志著μC/OS-II進(jìn)入了多任務(wù)調(diào)度正常運(yùn)行狀態(tài)12月15日14南京大學(xué)計(jì)算機(jī)系第14頁μC/OS-II內(nèi)核μC/OS-II內(nèi)核只提供任務(wù)調(diào)度、任務(wù)間通信(ITC)與同時(shí)、任務(wù)管理、時(shí)間管理和內(nèi)存管理等基本功效可裁剪編譯到8K左右,全部只有100K左右,消耗資源非常小在小規(guī)模代碼內(nèi)實(shí)現(xiàn)了搶占式任務(wù)調(diào)度、多任務(wù)通信功效12月15日15南京大學(xué)計(jì)算機(jī)系第15頁μC/OS-II內(nèi)核(續(xù)1)μC/OS-II臨界區(qū)μC/OS-II調(diào)用OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()兩個(gè)宏來執(zhí)行關(guān)中止和開中止,對于不一樣體系結(jié)構(gòu),這兩個(gè)宏定義不一樣。OS_CPU.H文件中含有OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()定義12月15日16南京大學(xué)計(jì)算機(jī)系第16頁μC/OS-II內(nèi)核(續(xù)2)μC/OS-II任務(wù)狀態(tài)最大任務(wù)數(shù)64個(gè),最高優(yōu)先級為0,最低優(yōu)先級取值為實(shí)際定義最大任務(wù)數(shù)減1.任務(wù)建立之后,擁有優(yōu)先級,執(zhí)行函數(shù),自用??臻g和任務(wù)控制塊(TCB),在運(yùn)行時(shí)刻能夠完全控制CPU操作以及全部用戶可訪問存放器操作。12月15日17南京大學(xué)計(jì)算機(jī)系第17頁μC/OS-II任務(wù)狀態(tài)轉(zhuǎn)換圖μC/OS-II每個(gè)任務(wù)都是一個(gè)無限循環(huán)。每個(gè)任務(wù)都處于休眠態(tài)、就緒態(tài)、運(yùn)行態(tài)、掛起態(tài)和被中止態(tài)某種狀態(tài)下(任務(wù)狀態(tài)變遷如右圖所表示)12月15日18南京大學(xué)計(jì)算機(jī)系第18頁μC/OS-II內(nèi)核(續(xù)3)休眠態(tài)(dormant)這種狀態(tài)相當(dāng)于該任務(wù)駐留在內(nèi)存中,但還沒有交給內(nèi)核管理。把任務(wù)交給內(nèi)核是經(jīng)過調(diào)用任務(wù)創(chuàng)建函數(shù)實(shí)現(xiàn)μC/OS-II兩個(gè)任務(wù)創(chuàng)建函數(shù) OSTaskCreate()和OSTaskCreateExt()12月15日19南京大學(xué)計(jì)算機(jī)系第19頁μC/OS-II內(nèi)核(續(xù)3)就緒態(tài)(ready)在這種狀態(tài)下意味著該任務(wù)已經(jīng)準(zhǔn)備好,且可運(yùn)行,但因?yàn)樵撊蝿?wù)優(yōu)先級比正在運(yùn)行任務(wù)優(yōu)先級低,所以還暫時(shí)不能運(yùn)行μC/OS-II就緒表為每一個(gè)優(yōu)先級任務(wù)提供了一個(gè)位元,登記該任務(wù)是否就緒,就緒時(shí)取值為1,沒有就緒時(shí)取值為0運(yùn)行態(tài)得到了CPU控制權(quán)正在運(yùn)行之中任務(wù)狀態(tài)12月15日20南京大學(xué)計(jì)算機(jī)系第20頁μC/OS-II內(nèi)核(續(xù)4)掛起態(tài)(pending)或者等候態(tài)(waiting)正在運(yùn)行任務(wù)因?yàn)檎{(diào)用延時(shí)函數(shù)OSTimeDly(),或等候事件信號量而將本身掛起被中止態(tài)(Interrupted)發(fā)生中止時(shí)CPU提供對應(yīng)中止服務(wù),原來正在運(yùn)行任務(wù)暫時(shí)停頓運(yùn)行,進(jìn)入了被中止?fàn)顟B(tài)12月15日21南京大學(xué)計(jì)算機(jī)系第21頁μC/OS-II內(nèi)核(續(xù)5)任務(wù)控制塊OS_TCB內(nèi)查對任務(wù)管理經(jīng)過任務(wù)控制塊OS_TCB(TaskControlBlock)進(jìn)行。任務(wù)控制塊是一個(gè)數(shù)據(jù)結(jié)構(gòu),在任務(wù)創(chuàng)建時(shí)內(nèi)核會(huì)申請一個(gè)空白TCB,而后進(jìn)行初始化,將創(chuàng)建任務(wù)信息填入該TCB各個(gè)字段。當(dāng)任務(wù)CPU使用權(quán)被剝奪時(shí),μC/OS-II用它來保留該任務(wù)狀態(tài)。當(dāng)任務(wù)重新得到CPU使用權(quán)時(shí),任務(wù)控制塊能確保任務(wù)從當(dāng)初被中止處繼續(xù)執(zhí)行。OS_TCB全部駐留在RAM中12月15日22南京大學(xué)計(jì)算機(jī)系第22頁μC/OS-II內(nèi)核(續(xù)6)OS_TCB字段說明OS_TCB數(shù)據(jù)結(jié)構(gòu)中OSTCBX,OSTCBY,OSTCBBitX,OSTCBBitY四個(gè)變量用于加速任務(wù)進(jìn)入就緒態(tài)過程或進(jìn)入等候事件發(fā)生狀態(tài)過程是依據(jù)任務(wù)優(yōu)先級OSTCBPrio計(jì)算得出,計(jì)算公式以下 OSTCBY =OSTCBPrio>>3; OSTCBBitY =OSMapTbl[OSTCBY]; OSTCBX =OSTCBPrio&0x07; OSTCBBitX =OSMapTbl[OSTCBX];12月15日23南京大學(xué)計(jì)算機(jī)系第23頁μC/OS-II任務(wù)調(diào)度μC/OS-II就緒表μC/OS-II就緒任務(wù)登記在就緒表中。就緒表由兩個(gè)變量OSRdyGrp和OSRdyTbl[]組成OSRdyGrp是一個(gè)單字節(jié)整數(shù)變量OSRdyTbl[OS_LOWEST_PRIO/8+1]是單字節(jié)整數(shù)數(shù)組,其元素個(gè)數(shù)定義為最低優(yōu)先級除以8加1,最多可有8個(gè)元素(字節(jié))12月15日24南京大學(xué)計(jì)算機(jī)系第24頁μC/OS-II任務(wù)調(diào)度(續(xù)1)位圖形式μC/OS-II任務(wù)就緒表和就緒實(shí)例12月15日25南京大學(xué)計(jì)算機(jī)系第25頁μC/OS-II任務(wù)調(diào)度(續(xù)2)任務(wù)就緒表操作登記一個(gè)新就緒表操作經(jīng)典指令段刪除不再處于就緒態(tài)任務(wù)指令段從就緒表中找到最高優(yōu)先級任務(wù)12月15日26南京大學(xué)計(jì)算機(jī)系第26頁μC/OS-II任務(wù)調(diào)度(續(xù)3)μC/OS-II任務(wù)調(diào)度μC/OS-II總是運(yùn)行處于就緒態(tài)任務(wù)中優(yōu)先級最高那一個(gè)OSSched()函數(shù)是任務(wù)調(diào)度前導(dǎo)函數(shù),判斷進(jìn)行任務(wù)調(diào)度三個(gè)條件是否滿足。這三個(gè)條件分別是:中止嵌套層數(shù)共享全程變量OSIntNesting=0任務(wù)調(diào)度加鎖層數(shù)共享全程變量OSLockNesting=0就緒表中查找到最高優(yōu)先級任務(wù)優(yōu)先級比當(dāng)前任務(wù)優(yōu)先級高12月15日27南京大學(xué)計(jì)算機(jī)系第27頁μC/OS-II任務(wù)切換也叫做上下文切換(ContextSwitch)當(dāng)μC/OS-II內(nèi)核決定運(yùn)行另外任務(wù)時(shí),它保留正在運(yùn)行任務(wù)上下文,這些內(nèi)容保留在任務(wù)自用堆棧之中。上下文入棧工作完成以后,把下一個(gè)將要執(zhí)行任務(wù)上下文從該任務(wù)自用堆棧中裝入CPU存放器,然后開始該任務(wù)運(yùn)行12月15日28南京大學(xué)計(jì)算機(jī)系第28頁ARM處理器任務(wù)棧上下文存放結(jié)構(gòu)圖12月15日29南京大學(xué)計(jì)算機(jī)系第29頁μC/OS-II中止處理μC/OS-II中中止服務(wù)子程序主要用匯編語言編寫而成中止服務(wù)子程序在執(zhí)行前將被中止任務(wù)執(zhí)行現(xiàn)場保留在自用堆棧中止服務(wù)子程序執(zhí)行事件處理有兩種方法。一個(gè)方法是經(jīng)過OSMBoxPost()、OSQPost()、OSSemPost()等函數(shù)去通知真正做該事件處理那個(gè)任務(wù),讓任務(wù)完成中止事件處理。另外一個(gè)是由中止服務(wù)子程序本身完成事件處理12月15日30南京大學(xué)計(jì)算機(jī)系第30頁μC/OS-II中止處理(續(xù)1)中止服務(wù)子程序偽碼結(jié)構(gòu)以下所表示:保留全部CPU存放器到堆棧;調(diào)用OSIntEnter()或者對OSIntNesting變量加1;執(zhí)行中止服務(wù)代碼,或者發(fā)出IPC消息通知特定任務(wù)去執(zhí)行中止服務(wù);調(diào)用OSIntExit()函數(shù);恢復(fù)全部CPU存放器;執(zhí)行中止返回指令;12月15日31南京大學(xué)計(jì)算機(jī)系第31頁μC/OS-II中止處理(續(xù)2)調(diào)用中止退出函數(shù)OSIntExit()標(biāo)志著中止服務(wù)子程序終止,OSIntExit()將中止嵌套層數(shù)計(jì)數(shù)器減1。當(dāng)中止嵌套計(jì)數(shù)器減到零而且調(diào)度未被禁止(OSLockNesting=0),μC/OS-II要重新開始調(diào)度。12月15日32南京大學(xué)計(jì)算機(jī)系第32頁μC/OS-II時(shí)間管理μC/OS-II能夠提供周期性時(shí)鐘信號,節(jié)拍率10~100Hz。用戶必須在多任務(wù)系統(tǒng)開啟以后即在調(diào)用OSStart()之后激活時(shí)鐘節(jié)拍信號發(fā)生器時(shí)鐘節(jié)拍中止服務(wù)子程序必須用匯編語言編寫每當(dāng)硬件定時(shí)器發(fā)出節(jié)拍中止請求,μC/OS-II就要響應(yīng)這個(gè)中止12月15日33南京大學(xué)計(jì)算機(jī)系第33頁μC/OS-II時(shí)間管理(續(xù))μC/OS-II時(shí)間管理函數(shù)
節(jié)拍延時(shí)函數(shù)OSTimeDly() 該函數(shù)經(jīng)常位于任務(wù)函數(shù)結(jié)束處,用以退出運(yùn)行,用戶能夠借助定義全局常數(shù)OS_TICKS_PER_SECOSTimeDlyHMSM() 該函數(shù)能夠按小時(shí)(H)、分(M)、秒(S)和毫秒(m)來定義時(shí)間OSTimeDlyResume() 依據(jù)需要正處于延時(shí)期任務(wù)能夠被用戶中止延時(shí)
12月15日34南京大學(xué)計(jì)算機(jī)系第34頁μC/OS-II任務(wù)間通信μC/OS-II中保護(hù)任務(wù)間共享數(shù)據(jù)和提供任務(wù)間通信主要三種方式利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()來關(guān)閉中止和打開中止利用函數(shù)OSSchedLock()和OSSchekUnlock()對μC/OS-II中任務(wù)調(diào)度函數(shù)上鎖和開鎖利用信號量、互斥信號量、郵箱和消息隊(duì)列進(jìn)行任務(wù)間通信,屬于事件控制同時(shí)與通信。12月15日35南京大學(xué)計(jì)算機(jī)系第35頁μC/OS-II任務(wù)間通信(續(xù)1)事件控制塊ECB用于實(shí)現(xiàn)信號量管理、互斥型信號量管理、消息郵箱以及消息隊(duì)列管理ITC功效函數(shù)基本數(shù)據(jù)結(jié)構(gòu)μC/OS-IIECB有4種類型:OSSemCreate()、OSMutexCreate()、OSMboxCreate()、OSQCreate()12月15日36南京大學(xué)計(jì)算機(jī)系第36頁μC/OS-II任務(wù)間通信(續(xù)2)基于ECB任務(wù)間通信一個(gè)任務(wù)或者中止服務(wù)子程序能夠經(jīng)過事件控制塊ECB來向另外任務(wù)發(fā)信號事件控制塊作用見下頁圖示12月15日37南京大學(xué)計(jì)算機(jī)系第37頁μC/OS-II任務(wù)間通信(續(xù)3)事件控制塊作用12月15日38南京大學(xué)計(jì)算機(jī)系第38頁μC/OS-II任務(wù)間通信(續(xù)4)上圖ITC操作說明任務(wù)或中止服務(wù)子程序能夠給事件控制塊ECB發(fā)信號。只有任務(wù)能夠等候另一個(gè)任務(wù)或中止服務(wù)子程序經(jīng)過事件控制塊ECB給它發(fā)送信號,而中止服務(wù)子程序是不能等候事件控制塊ECB給它發(fā)送信號。處于等候狀態(tài)任務(wù)能夠指定一個(gè)最長等候時(shí)間多個(gè)任務(wù)能夠同時(shí)等候同一事件發(fā)生。當(dāng)事件控制塊ECB是一個(gè)信號量時(shí),任務(wù)能夠等候它,也能夠給它發(fā)送消息12月15日39南京大學(xué)計(jì)算機(jī)系第39頁μC/OS-II任務(wù)間通信(續(xù)5)信號量控制下任務(wù)間通信在μC/OS-II下,用信號量進(jìn)行任務(wù)間通信時(shí),先用信號量創(chuàng)建函數(shù)OSSemCreate創(chuàng)建一個(gè)信號量,且對該信號量賦初始計(jì)數(shù)值。假如信號量是用來表示一個(gè)或者多個(gè)事件發(fā)生,那么該信號量初始值應(yīng)設(shè)為0假如信號量是用于對共享資源訪問,那么該信號量初始值應(yīng)設(shè)為1假如該信號量是用來表示允許任務(wù)訪問n個(gè)相同資源,那么該初始值顯然應(yīng)該是n,并把該信號量作為一個(gè)可計(jì)數(shù)信號量使用。12月15日40南京大學(xué)計(jì)算機(jī)系第40頁μC/OS-II內(nèi)存管理嵌入式內(nèi)存管理含虛擬存放器:硬件提供MMU,軟件提供虛擬存放器管理模塊不含虛擬存放器:段式管理段式管理下存放器分配固定分區(qū)法 固定分區(qū)法指內(nèi)存中分區(qū)個(gè)數(shù)固定不變,依據(jù)分區(qū)大小不一樣,還能夠分為等分方式和分區(qū)差分方式動(dòng)態(tài)分區(qū)法 各個(gè)分區(qū)大小是在對應(yīng)進(jìn)程需要內(nèi)存時(shí)依據(jù)需要建立12月15日41南京大學(xué)計(jì)算機(jī)系第41頁μC/OS-II內(nèi)存管理(續(xù)1)μC/OS-II內(nèi)存管理改進(jìn)型固定分區(qū)法,由操作系統(tǒng)把連續(xù)大塊內(nèi)存按分區(qū)進(jìn)行管理每個(gè)分區(qū)包含整數(shù)個(gè)大小相同內(nèi)存塊:兩級固定分區(qū)μC/OS-II對malloc()和free()進(jìn)行了改進(jìn)μC/OS-II中使用內(nèi)存控制塊數(shù)據(jù)結(jié)構(gòu)跟蹤每一個(gè)內(nèi)存分區(qū),系統(tǒng)中每個(gè)內(nèi)存分區(qū)都有它自己內(nèi)存控制塊12月15日42南京大學(xué)計(jì)算機(jī)系第42頁μC/OS-II內(nèi)存管理(續(xù)2)μC/OS-II對內(nèi)存管理經(jīng)過以下四個(gè)函數(shù)完成創(chuàng)建一個(gè)內(nèi)存分區(qū):OSMemCreate()分配一個(gè)內(nèi)存塊:OSMemGet()釋放一個(gè)內(nèi)存塊:OSMemPut()查詢一個(gè)內(nèi)存分區(qū)狀態(tài):OSMemQuery()12月15日43南京大學(xué)計(jì)算機(jī)系第43頁μC/OS-II移植移植μC/OS-II必須滿足以下要求處理器C編譯器能產(chǎn)生可重入代碼用C語言能夠打開和關(guān)閉中止處理器支持中止,而且能產(chǎn)生定時(shí)中止處理器支持能夠容納一定量數(shù)據(jù)硬件棧區(qū)處理器有將棧區(qū)指針和其它CPU存放器讀出和存放到棧區(qū)或內(nèi)存中指令12月15日44南京大學(xué)計(jì)算機(jī)系第44頁μC/OS-II移植(續(xù)1)基本配置和定義基本配置和定義全部集中在OS_CPU.H中定義和編譯器相關(guān)數(shù)據(jù)結(jié)構(gòu)定義關(guān)中止和開中止宏定義棧指針增加方向12月15日45南京大學(xué)計(jì)算機(jī)系第45頁μC/OS-II移植(續(xù)2)與移植相關(guān)四個(gè)匯編語言程序OSStartHighRdy():運(yùn)行優(yōu)先級最高任務(wù)OSCtxSw():任務(wù)級任務(wù)切換函數(shù)OSintCtxSw():中止級任務(wù)切換函數(shù)OSTickISR():時(shí)鐘節(jié)拍中止服務(wù)子程序12月15日46南京大學(xué)計(jì)算機(jī)系第46頁需要移植匯編子程序(函數(shù))OSTickISROSTickISR()――時(shí)鐘節(jié)拍中止服務(wù)子程序時(shí)鐘節(jié)拍起源于硬件電路,它是嵌入式操作系統(tǒng)基本定時(shí)單位OSTickISR()首先在被中止任務(wù)棧區(qū)中保留CPU存放器值,調(diào)用OSIntEnter(),該函數(shù)將中止嵌套統(tǒng)計(jì)值OSIntNesting加1OSTickISR()然后調(diào)用OSTimeTick()OSTickISR()最終調(diào)用OSIntExit()12月15日47南京大學(xué)計(jì)算機(jī)系第47頁μC/OS-II移植(續(xù)3)與移植相關(guān)主要C函數(shù)需要在OS_CPU_C.C文件中改寫10個(gè)簡單C函數(shù),其中必須修改函數(shù)是OSTaskStkInit(),其余9個(gè)都是用戶接口函數(shù)用戶接口函數(shù)調(diào)用位置都是在任務(wù)狀態(tài)發(fā)生顯著變動(dòng)地方OSTaskStkInit()函數(shù)用于初始化任務(wù)自用棧區(qū),它在任務(wù)創(chuàng)建時(shí)被調(diào)用,負(fù)責(zé)在內(nèi)存開辟該任務(wù)棧工作區(qū),然后返回該棧棧頂指針stk。12月15日48南京大學(xué)計(jì)算機(jī)系第48頁相關(guān)μC/OS-II源代碼通讀通讀μC/OS-II源
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 歌德與貝多芬閱讀教學(xué)設(shè)計(jì)
- 建筑架子工(普通架子工)復(fù)習(xí)題與答案
- 化工知識練習(xí)題庫(附答案)
- 2025屆廣東省佛山市南海桂城中學(xué)高三第一次模擬考試英語試卷含解析
- 江蘇省連云港市贛榆區(qū)2024-2025學(xué)年高一下學(xué)期4月期中生物試題(原卷版+解析版)
- 睡眠質(zhì)量改善與疾病防治考核試卷
- 私募股權(quán)投資母基金管理與運(yùn)作考核試卷
- 纖維素纖維在生物降解材料中的應(yīng)用考核試卷
- 石棉在玻璃制造中的應(yīng)用考核試卷
- 液壓與液力技術(shù)在醫(yī)療影像設(shè)備中的應(yīng)用考核試卷
- 零碳物流園區(qū)建設(shè)與運(yùn)營模式研究
- 《高速公路改擴(kuò)建工程預(yù)算定額》
- 職場心態(tài)-培訓(xùn)課件
- 品管圈PDCA案例-中醫(yī)醫(yī)院減少住院患者艾灸燙傷率醫(yī)院改善成果匯報(bào)
- 國有企業(yè)戰(zhàn)略規(guī)劃審計(jì)實(shí)施方案
- 腦出血疑難病例討論護(hù)理
- 公園綠地四害監(jiān)測及消殺預(yù)案
- 電梯生產(chǎn)質(zhì)量安全總監(jiān)題庫含答案
- 統(tǒng)編版 高中語文 選擇性必修下 第二單元《邊城》
- 白內(nèi)障患者護(hù)理教學(xué)查房
- 民用無人機(jī)操控員執(zhí)照(CAAC)考試復(fù)習(xí)重點(diǎn)題庫500題(含答案)
評論
0/150
提交評論