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

正文內容

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

2025-10-06 18:30 本頁面
 

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