freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于arm9的μcosⅱ嵌入式系統(tǒng)移植畢業(yè)設(shè)計(編輯修改稿)

2024-07-21 16:39 本頁面
 

【文章內(nèi)容簡介】 會出現(xiàn)不兼容的問題,這時需要對操作系統(tǒng)進行移植,使它能夠在使用的CPU 上運行。μC/OSII 的移植需滿足以下的要求:1. 處理器的 C 編譯器可產(chǎn)生可重入代碼; 2. 進入和退出臨界區(qū)代碼可以使用 C 進行調(diào)用; 3. 處理器必須支持具有定時中斷源的硬件中斷; 4. 處理器必須能夠容納一定的數(shù)據(jù)硬件堆棧; 5. 處理器需要有交換數(shù)據(jù)的指令,使其能夠在 CPU 的寄存器和內(nèi)核及堆棧間進行數(shù)據(jù)的交換。 移植步驟μC/OSⅡ作為實時操作系統(tǒng)操作系統(tǒng),在設(shè)計初期就已經(jīng)充分考慮了可移植性,針對不同的CPU版本,μC/OSⅡ的移植核心環(huán)節(jié)就是改寫一些與處理器硬件相關(guān)的函數(shù)。移植工作包括以下內(nèi)容:1. 用define設(shè)置一些常量的值()2. 聲明10個指定的數(shù)據(jù)類型() 3. 用define聲明2個宏() 4. 用 C 語言編寫6個簡單函數(shù)() 5. 根據(jù)硬件編寫了4個函數(shù)(OS_CPU_ ) 。簡而言之。雖然這增加了文件編譯的時間,但是增強了可移植性。,為了避免重新編譯已編譯的內(nèi)容,增加的頭文件必須添加在頭文件列表的最后。 內(nèi)核是一個系統(tǒng)的核心,根據(jù)不同的需要和應(yīng)用,我們可以對內(nèi)核進行定制和裁剪,從而提高了實時性。 文件 define定義的常量,宏和類型定義(與處理器相關(guān))。眾所周知,不同的處理器字長是不相同的,尤其是,μC/OSⅡ代碼不使用與編譯器相關(guān)的C的short(短整),int(整型)和long(長整)等數(shù)據(jù)類型。所以為了移植的成功,需要對μC/OSⅡ中的數(shù)據(jù)類型進行重新的定義。與所有的實時內(nèi)核一樣,μC/OSⅡ需要先將中斷禁止再進行訪問代碼臨界段,且在訪問完畢重新允許中斷。μC/OSⅡ定義了兩個宏來禁止和允許中斷:OS_ENTER_CRITICAL() 和OS_EXIT_CRITICAL()。結(jié)構(gòu)常量OS_STK_GROWTH是用來改變堆棧生長方式。因為不同的微處理器和微控制器堆棧生長方式不同,μC/OSⅡ中可以通過改變OS_STK_GROWTH的值來改變堆棧生長方式當(dāng)把OS_STK_GROWTH值置0,堆棧的生長方式是從下往上長。當(dāng)把OS_STK_GROWTH值置1,堆棧的生長方式是從上往下長。OS_TASK_SW()是一個在μC/OSⅡ進行任務(wù)切換(低任務(wù)優(yōu)先級級到最高優(yōu)先級任務(wù))時被調(diào)用的宏。任務(wù)切換只是簡單的把處于當(dāng)前優(yōu)先級任務(wù)處理器的寄存器保存到將被掛起的任務(wù)堆棧中,同時將更高優(yōu)先級的任務(wù)從堆棧中恢復(fù)出來。 文件 μC/OSⅡ的移植中需要編寫六個簡單的C函數(shù):OSTaskStkInit()OSTaskCreateHook()OSTaskDelHook()OSTaskSwHook()OSTaskStatHook()OSTimeTickHook()唯一必要的函數(shù)是OSTaskStkInit(),其它五個函數(shù)需要聲明但沒必要包含代碼。 OSTaskStkInt()OSTaskCreate()和 OSTaskCreateExt()通過調(diào)用OSTaskStkInt()進行任務(wù)的堆棧結(jié)構(gòu)的初始化。OSTaskCreate()和 OSTaskCreateExt()會得到傳遞任務(wù)地址,pdata指針,任務(wù)堆棧棧頂和任務(wù)優(yōu)先級等參數(shù),為了堆棧結(jié)構(gòu)初始化的正確性,OSTaskStkInt()只需要上述的三個和一個附加在OSTaskCreateExt()中得到的選項。一旦堆棧初始化, OSTaskCreate()和 OSTaskCreateExt()會獲得OSTaskStkInit()返回堆棧指向的地址,并將其保存至任務(wù)控制塊(OS_TCB)中。處理器文檔會指明堆棧指針會是指向下個堆棧的空閑位置,還是指向了最后存入數(shù)據(jù)的堆棧單元位置。 OSTaskCreateHook()OSTaskCreateHook()是一個允許擴展μC/OSⅡ的功能的函數(shù),在用OSTaskCreate()或OSTaskCreateExt()建立任務(wù)的時候會被調(diào)用。當(dāng)OSTaskCreateHook()被調(diào)用時,能夠收到指向已建立的任務(wù)的OS_TCB 的指針,可用于訪問任務(wù)的附加數(shù)據(jù)(MMU 寄存器,浮點寄存器,以及調(diào)試的信息等)和其它所有結(jié)構(gòu)成員。在此移植過程中不需要具體的OSTaskCreateHook()函數(shù)代碼, 置0時。()OSTaskDelHook()在刪除任務(wù)時被調(diào)用。當(dāng)OSTaskDelHook()被調(diào)用時,能夠收到指向正被刪除任務(wù)的OS_TCB的指針,可用來檢測TCB擴展建立與否并進行某些清楚操作。OSTaskDelHook()無返回值。在此移植過程中不需要具體的OSTaskDelHook()函數(shù)代碼, 置0時。 OSTaskSwHook()OSTaskSwHook()是一個與任務(wù)切換相關(guān)的函數(shù)。不論任務(wù)切換是通過OSCtxSw()還是OSIntCtxSw() 進行的切換操作,都需要調(diào)用該函數(shù)。注意:在調(diào)用OSTaskSwHook()期間中斷是一直處于禁止?fàn)顟B(tài)。任務(wù)切換的時間越短,任務(wù)執(zhí)行效率越高,所以在任務(wù)切換的時候盡量將
點擊復(fù)制文檔內(nèi)容
數(shù)學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1