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

正文內(nèi)容

基于arm9的μcos--ⅱ嵌入式系統(tǒng)移植(編輯修改稿)

2024-10-06 18:30 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 需將所用頭文件放到 文件中即可 。 需要增加的頭文件必須需放在 頭文件的最后 , 為了避免在編譯過程中將已編譯的內(nèi)容 再 重新 進(jìn)行 編譯 。 內(nèi)核是一個(gè)系統(tǒng)的核心,而 就是用來配置內(nèi)核的頭文件,根據(jù)不同的需要和應(yīng)用,我們可以對(duì)內(nèi)核進(jìn)行定制和裁剪,從而提高了實(shí)時(shí)性。 :由 define 重新定義 的 與處理器相關(guān)的宏 , 數(shù)據(jù) 類型和常量 存放在這個(gè)文件中 。 眾所周知,處理器有 8 位 , 16 位, 32 位, 64 位甚至 128 位 , 對(duì)應(yīng)到不同處理器的操作系統(tǒng)中位數(shù)是不一樣的 ,否則會(huì)發(fā)生無法兼容的問題, μC/OSⅡ 中 不使用 C中使用頻繁的 short(短整), int(整型)和 long(長(zhǎng)整)等數(shù)據(jù)類 型 。 所以為了能夠與處理器的字長(zhǎng)相匹配,需要對(duì) μC/OSⅡ 中的數(shù)據(jù)類型進(jìn)行重新的定義。 在任何的操作系統(tǒng)中,中斷都是必不可少的,否則在更高優(yōu)先級(jí)的任務(wù)發(fā)生時(shí),無法對(duì)其進(jìn)行處理,可能導(dǎo)致系統(tǒng)的崩潰。 在類似這種情況下 , 需要對(duì) μC/OSⅡ 進(jìn)行中斷的禁止操作 , 且在訪問代碼結(jié)束重新將中斷置為允許狀態(tài)。所以在 μC/OSⅡ中有兩個(gè)宏 : OS_ENTER_CRITICAL()(中斷禁止) 和 OS_EXIT_CRITICAL()(中斷允許) 。 結(jié)構(gòu)常量 OS_STK_GROWTH 是在移植過程中專門為改變堆棧生長(zhǎng)方式而定義的一 個(gè)宏: 將其置 1 時(shí)生長(zhǎng)方式是從上往下,置 0 則相反。 在執(zhí)行中斷,或者任務(wù)優(yōu)先級(jí)變化的時(shí)候,需要任務(wù)的切換(低任務(wù)優(yōu)先級(jí)級(jí)到最高優(yōu)先級(jí)任務(wù))。任務(wù)切換簡(jiǎn)而言之就是將當(dāng)前任務(wù)的寄存器和狀態(tài)字保存到堆棧中并把更高優(yōu)先級(jí)任務(wù)從堆棧中恢復(fù)出來。 任務(wù)切換的時(shí)候需要 OS_TASK_SW(),在 移植過程中需要對(duì)這個(gè)宏 重新 定義。 μC/OSⅡ 的移植中需要用 C 語言編寫六個(gè)簡(jiǎn)單的函數(shù): 1. OSTaskStkInit() 2. OSTaskCreateHook() 大慶師范學(xué)院本科畢業(yè)論文(設(shè)計(jì)) 7 3. OSTaskDelHook() 4. OSTaskSwHook() 5. OSTaskStatHook() 6. OSTimeTickHook() 在移植過程中, OSTaskStkInit()是唯一需要進(jìn)行改 寫的 函數(shù) ,其余的五個(gè) 鉤子 函數(shù) (掛機(jī)函數(shù)) ,只需要對(duì)其聲明, 不需要詳細(xì)的代碼 , 且由于只是 聲明,所以在 內(nèi)核配置文件 中 需要 將 OS_CPU_HOOKS_EN 的值 設(shè)置 為 0。 OSTaskStkInt() OSTaskStkInt() :初始化堆棧 歐諾個(gè)能 函數(shù)。 在 早期 任務(wù)創(chuàng)建 時(shí) 使用OSTaskCreate() 和 OSTaskCreateExt() 調(diào)用 OSTaskStkInt() , 在 這 個(gè) 過 程 中OSTaskStkInt()獲得通過 的 pdata 指針,任務(wù)堆棧棧頂和任務(wù)優(yōu)先級(jí) 和其它參數(shù) 參數(shù) ,以 確保正確 的初始化 堆棧結(jié)構(gòu)。 OSTaskCreateHook() OSTaskCreateHook(): μC/OSⅡ 的功能擴(kuò)展的允許與否,在創(chuàng)建任務(wù)的時(shí)候通過這個(gè)函數(shù)進(jìn)行功能設(shè)置。 建立任務(wù)之后會(huì)返回一個(gè) OS_TCB 的指針,在選擇擴(kuò)展功能的時(shí)候,該指針會(huì)傳給 OSTaskCreateHook(),通過這個(gè)指針訪問任務(wù)的附加數(shù)據(jù)( MMU 寄存器 ,浮點(diǎn)寄存器,以及調(diào)試的信息等)和結(jié)構(gòu)成員。從而決定可允許擴(kuò)展的成員。 OSTaskDelHook() OSTaskDelHook(): 用于任務(wù)的刪除。 任務(wù)建立之后會(huì)返回一個(gè) OS_TCB 指針,在刪除任務(wù)的時(shí)候,該指針會(huì)傳給OSTaskDelHook(),通過這個(gè)指針訪問任務(wù)的附加數(shù)據(jù)和結(jié)構(gòu)成員。從而決定刪除的對(duì)象 。 OSTaskSwHook() OSTaskSwHook():優(yōu)先級(jí)改變,或者中斷發(fā)生,進(jìn)行任務(wù)切換的時(shí)候調(diào)用的函數(shù)。調(diào)用 OSTaskSwHook()期間 中斷 應(yīng)該 處于 禁止 的狀況,這是為了防止程序的崩潰 。任務(wù)切換的時(shí)間越短,任務(wù)執(zhí)行效率越高,所以在任務(wù)切換的時(shí)候盡量將代碼簡(jiǎn)化,OSTaskSwHook()無參數(shù),也沒有返回值。 大慶師范學(xué)院本科畢業(yè)論文(設(shè)計(jì)) 8 OSTaskStatHook() OSTaskStatHook():進(jìn)行擴(kuò)展統(tǒng)計(jì)功能的函數(shù)。 OSTaskStatHook()無參數(shù),無返回值。 OSTimeTickHook() OSTaskTimeHook(): 應(yīng)用于每一個(gè)時(shí)鐘節(jié)拍中 。事實(shí)上, OSTaskTimeHook()是在節(jié)拍被 μC/OSⅡ 真正處理,并通 知實(shí)例或應(yīng)用程序之前被調(diào)用。 OSTaskTimeHook()無參數(shù),無返回值。 四個(gè)匯編函數(shù)的編寫是 μC/OSⅡ 移植的重點(diǎn): 1. OSStartHighRdy() 2. OSCtxSw() 3. OSIntCtxSw() 4. OSTickISR() 為了節(jié)省空間和內(nèi)存,將所有與處理器相關(guān)的函數(shù)、代碼集中放到 文件中。 OSStartHighRdy() OSStartHighRdy(): 選擇優(yōu)先級(jí)最高的任務(wù)執(zhí)行 。 OSStart 是開始運(yùn)行任務(wù)的函數(shù),在運(yùn) 行開始之后可以 調(diào)用 OSStartHighRdy()選擇 優(yōu)先級(jí)最高的任務(wù) 執(zhí)行。在任務(wù)切換之后和恢復(fù)先前任務(wù)之前需要將此函數(shù)的 OSRunning 設(shè)置為 0。 OSCtxSw() OSCtxSw():執(zhí)行最高優(yōu)先級(jí)的任務(wù)是 μC/OSⅡ 的特點(diǎn)之一,而 OSCtxSw()就是基于此而創(chuàng)建的函數(shù)。 調(diào)用 任務(wù)切換函數(shù)的時(shí)候 中斷 也必須處于禁止?fàn)顟B(tài)。 OSIntCtxSw() OSIntCtxSw(): μC/OSⅡ 中唯一與 微 處理器相關(guān)的函數(shù) 。 OSTickISR() OSTickISR(): 為了滿足時(shí)間期滿和延遲功能而編寫的函數(shù)。 大慶師范學(xué)院本科畢業(yè)論文(設(shè)計(jì)) 9 第五章 實(shí)例移植 本章是在基于第四章內(nèi)容的基礎(chǔ)上,進(jìn)行一個(gè)詳細(xì)的代碼實(shí)例移植。通過源碼介紹、軟件設(shè)置和仿真調(diào)試,實(shí)現(xiàn) ARM9 開發(fā)板上 LED 燈的控制。 函數(shù)配置 實(shí)例移植是驗(yàn)證移植成功的關(guān)鍵。通過網(wǎng)絡(luò)或其它途徑獲得 μC/OSⅡ 的源代碼,對(duì)于一些在第四章描述的變量、宏和函數(shù)進(jìn)行重新定義和配置。 源代碼如圖 51 所示: 圖 51 源代碼文件夾 在 S3C2440 文件夾 下有 兩個(gè)子文件夾,分別是 includes 和 source,如圖 52 所示: 圖 52 S3C2440 文件夾下的文件 在 includes 文件中包括 、 、 、 、 、 、 、 , 這些文件都是一些與芯片相關(guān)的頭文件。 如圖 53 所示: 圖 53 includes 文件夾 在 source 文件中包括 、 、 、 、 、大慶師范學(xué)院本科畢業(yè)論文(設(shè)計(jì)) 10 、 、 、 、 、 等, 這些都是一些與芯片相關(guān)的源文件, 這里的 函數(shù)可以寫入測(cè)試程序,執(zhí)行測(cè)試操作 ,如圖 54: 圖 54 source 文件夾 uCOS_II 文件夾中包含了四個(gè)文件夾,分別是 API、 include、 arm、 SOURCE。 圖 55 uCOS_II 文件夾 在 API 文件夾中只有一個(gè)應(yīng)用配置相關(guān)的頭文件: ,如圖 56 所示: 圖 56 API 文件夾 include中有三個(gè)文件: 、 ,其中 進(jìn)行配置,如圖 57: 圖 57 include 文件夾 arm文件夾中也是三個(gè)文件: 、 、 ,其中后兩個(gè)大慶師范學(xué)院本科畢業(yè)論文(設(shè)計(jì)) 11 是需要進(jìn)行配置的文件,如圖 58 所示: 圖 58 arm 文件夾 在 SOURCE文件夾中有一個(gè) API文件夾(包含 )和 、 、 、 、 、 、 、 、 、 、 和 文件 , 這些是一些與系統(tǒng)服務(wù)相關(guān)的函數(shù)文件,比如消息機(jī)制,內(nèi)存共享,信號(hào)量等 函數(shù)。 圖 58 所示: 圖
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1