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

正文內(nèi)容

基于stm32的嵌入式操作系統(tǒng)程序設(shè)計及實現(xiàn)本科畢業(yè)論文-文庫吧資料

2024-09-03 15:11本頁面
  

【正文】 opt。這個初值無關(guān)緊要,為0就可以了。這個函數(shù)的功能是當(dāng)一個任務(wù)被創(chuàng)建時,它完成這個任務(wù)堆棧的初始化。 這 10個函數(shù)有 9個是為了擴(kuò)展用戶功能而定義的鉤子函數(shù),這些鉤子函數(shù)可以都為空函數(shù),也可以加上一些用戶需要的擴(kuò)展功能。 OSTCBInitHook ()。 OSTaskStkInit ()。 OSTaskIdleHook ()。 OSTaskCreateHook ()。 ( 5) 與 CPU 相關(guān)的 C 函數(shù)和鉤子函數(shù)( ) 這個文件中包含 10個函數(shù),具體如下: OSInitHookBegin ()。//將要切換的任務(wù)堆棧指 // 針賦給微處理器的堆棧指 // 針從而實現(xiàn)切換 從堆棧中恢 復(fù) R4R11。 //設(shè)置運行任務(wù)為最高優(yōu)先級就緒任務(wù) OSTCBCur = OSTCBHighRdy。 //保存堆棧的指針到任務(wù)控制塊 } 武昌工學(xué)院畢業(yè)論文(設(shè)計)專用稿紙 10 OSTaskSwHook()。中斷服務(wù)程序退出的時候?qū)⒆詣映鰲?R3R0, R12, LR, PC和 xPSR。 ( 4) 任務(wù)級和中斷級任務(wù)切換 因為 CortexM3進(jìn)入異常自動保存寄存器 R3R0, R12, LR, PC和 xPSR這種的特殊機(jī)制,這兩個函數(shù)都是觸發(fā)一次 PendSV來實現(xiàn)任務(wù)的切換。 ( 3) 啟動最高優(yōu)先級任務(wù)運行( OSStartHighRdy()) OSStart()調(diào)用 OSStartHighRdy()來啟動最高優(yōu)先級任務(wù)的運行,從而啟動整個系統(tǒng)。此函數(shù)完成的將中斷狀態(tài)恢復(fù)到關(guān)中斷前的狀態(tài)。 ( 2) 恢復(fù)中斷函數(shù)( OS_CPU_SR_Restore()) 這是宏 OS_EXIT_CRITICAL()的最終實現(xiàn)。 函數(shù) 實現(xiàn) ( 1) 關(guān)中斷函數(shù)( OS_CPU_SR_Save()) 即先保存當(dāng)前的狀態(tài)寄存器然后關(guān)中斷。 OSCtxSw()。 OS_CPU_SR_Restore()。 ( 6) 與處理器相關(guān)的匯編代碼( ) 在 OS_CP 。 void OSStartHighRdy(void)。 void OSCtxSw(void)。因為這個宏也是與處理器相關(guān)的,因此這個宏在 。C/OSII支持兩種方向生長的棧,但對于以 CortexM3為內(nèi)核 的 STM32 微處理器來說,它支持向下增長的滿棧,故需要定義棧增長方向宏為 1。否則編譯時將出錯。} 函數(shù) OS_CPU_SR_Save()和 OS_CPU_SR_Restore(cpu_sr)在 中定義。這兩個宏分別定義如下 : define OS_CRITICAL_METHOD 3 define OS_ENTER_CRITICAL() {cpu_sr = OS_CPU_SR_Save()。C/OSII通過定義兩個宏 OS_ENTER_CRITICAL() 和 OS_EXIT_CRITICAL() 來分別實現(xiàn)中斷的關(guān)閉和打開。這樣的代碼段稱作臨界代碼段。 ( 2) 臨界代碼段 181。在 CortexM3 中寄存器為 32位,故定義堆棧的長度也為 32位。為了方便使用堆棧, 181。C/OSII定義了 float 類型和 double 類型,但為了方便移植它們在 181。故這部分代碼無需修改。 typedef unsigned int OS_CPU_SR。 typedef double FP64。 typedef signed int NT32S。 typedef signed short INT16S。 typedef signed char NT8S。 定義與處理器無關(guān)的數(shù)據(jù)類型 typede f unsigned char BOOLEAN。 ( 5) 處理器有將堆棧指針和其它 CPU寄存器讀出和存儲到堆?;騼?nèi)存中的指令。 ( 3) 處理器支持中斷,并且能產(chǎn)生定時中斷 (通常在 10至 100Hz之間 )。C/OSII的正常運行需要處理器平臺滿足以下要求: ( 1) 處理器的 C編譯器 能產(chǎn)生可重入代碼。 ( 3) 消息隊列 另一種通信機(jī)制,允許一個任務(wù)或者中斷服務(wù)子程序向另一 個任務(wù)發(fā)送以指針方式定義的變量或其它任務(wù),因具體應(yīng)用不同,每個指針指向的包含了消息的數(shù)據(jù)結(jié)構(gòu)的變量類型也有所不同。 互斥型信號量用于處理共享資源 。 信號量用于對共享資源的訪問,用鑰匙符號,符號旁數(shù)字代表可用資源數(shù),對于二值信號量該值為 1。 181。C/OSII提供了任務(wù)管理的各種函數(shù)調(diào)用,包括創(chuàng)建任務(wù),刪除任務(wù),改變?nèi)蝿?wù)的優(yōu)先級,任務(wù)掛起和恢復(fù)等。 63為最低級,系統(tǒng)保留了 4個最高優(yōu)先級的任務(wù)和 4個最低優(yōu)先級的任務(wù),所有用戶可以使用的任務(wù)數(shù)有 56個。 任務(wù)管理 181。用戶需要動態(tài)分配內(nèi)存時,系統(tǒng)選擇一個適當(dāng)?shù)姆謪^(qū),按塊來分配內(nèi)存。C/OSII中把連續(xù)的大塊內(nèi)存按分區(qū)管理。但在嵌入式實時系統(tǒng)中,多次這樣的操作會導(dǎo)致內(nèi)存碎片,且由于內(nèi)存管理算法的原因,malloc和 free的執(zhí)行時間也是不確定。OSStart()調(diào)用就緒任務(wù)啟動函數(shù) OSStartHighRdy(),其功能是將任務(wù)棧的值恢復(fù)到 CPU寄存器,并執(zhí)行中斷返回指令,強(qiáng)制執(zhí)行該任務(wù)代碼。 多任務(wù)的啟動是通過調(diào)用 OSStart()實現(xiàn)的。 181。 OSInit()初始化181。C/OSII 的 初始化和啟動 調(diào)用 181。 OSTimeTick()跟蹤所有任務(wù)的定時器以及超時時限。 181。系統(tǒng)設(shè)計者可以在第 1個開始運行的任務(wù)中調(diào)用時鐘節(jié)拍啟動函數(shù)。時鐘節(jié)拍率越高,系統(tǒng)的額外負(fù)荷就武昌工學(xué)院畢業(yè)論文(設(shè)計)專用稿紙 6 越重。 時鐘節(jié)拍 181。 中斷服務(wù) 在用戶的 ISR中可以調(diào)用 OSIntEnter()和 OSIntExit()通知 181。 在就緒表中查找優(yōu)先級最高的任務(wù)不需要掃描整個 OSRdyTbl[],只要查優(yōu)先級判定表 OSUnMapTbl[]。 OSRdyGrp中,將任務(wù)按優(yōu)先級分組,八個為一組。由于 ISR已經(jīng)將 CPU寄存器的值存入被中斷的任務(wù)的堆棧中,所以 OSIntCtxSw()的實現(xiàn)和 OS_TASK_SW()不一樣,具體參見移植文檔。 ③ 進(jìn)行 TCB的切換,并運行任務(wù)。如:堆棧指針,程序計數(shù)器,狀態(tài)寄存器等。例如:define OS_TASK_SW() asm(“int 32”)。 ( 1) 任務(wù)切 換 任務(wù)切換有兩種: OS_TASK_SW()和 OSIntCtxSw()。 任務(wù)級的任務(wù)調(diào)度是由于有更高優(yōu)先級的任務(wù)進(jìn)入就緒態(tài),當(dāng)前的任務(wù)的CPU使用權(quán)被剝奪,發(fā)生了任務(wù)到任務(wù)的切換;中斷級的調(diào)度是指當(dāng)前運行的任務(wù)被中斷打斷,由于 ISR運行過程中有更高優(yōu)先級的任務(wù)被激活進(jìn)入就緒態(tài)。C/OSII的任務(wù)調(diào)度有兩種情況:任務(wù)級的任務(wù)調(diào)度由 OS_Sched()完成;中斷級的任務(wù)調(diào)度由 OSIntExt()完成。任務(wù)調(diào)度器的功能是:在就緒表中查找最高優(yōu)先級的任務(wù),然后進(jìn)行必要的任務(wù)切換,運行該任務(wù)。 武昌工學(xué)院畢業(yè)論文(設(shè)計)專用稿紙 5 任務(wù)調(diào)度器 181。當(dāng)任務(wù)的 CPU使用權(quán)被剝奪時,它用來保存該任務(wù)的狀態(tài)。任務(wù)函數(shù)和任何 C函數(shù)一樣,具有一個返回類型和一個參數(shù),但是它決不返回。C/OSII系統(tǒng)進(jìn)行調(diào)度的基本單元。181。C/OSII內(nèi)核主要對用戶任務(wù)進(jìn)行調(diào)度和管理,并為任務(wù)間共享資源提供服務(wù)。 181。 ( 2) OSInit()初始化 181。C/OSII的多任務(wù)啟動 OSStart()等常規(guī)操作。在 main主函數(shù)中主要實現(xiàn) 181。與前后臺系統(tǒng)一樣,基于 181。C/OSII (與處理器類型有關(guān)的代碼) CPU 定時器 圖 181。C/OSII 內(nèi)核文件 (與處理器類型無關(guān)的代碼 ) 181。C/OSII操作系統(tǒng)進(jìn)行應(yīng)用時,設(shè)計時 的主要任務(wù)是將系統(tǒng)合理劃分成多個任務(wù),并由 RTOS進(jìn)行調(diào)度,任務(wù)之間使用 181。C/OSII 內(nèi)核結(jié)構(gòu) ( 1) 181。C/OSII 的理論介紹 181。主要介紹本論文中的優(yōu)點和不足之處。多任務(wù)的建立并實現(xiàn)基本功能。C/OSII 各模塊的基本功能和在STM32 上移植方法。C/OSII 的理論介紹。C/OSII 的國內(nèi)外研究現(xiàn)狀。 本文主要分為 4 章,章節(jié)安排如下: ( 1) 緒論。完成了 基于 STM32 的 181。C/OSII 系統(tǒng)配置、 181。C/OSII 下的開發(fā)環(huán)境體系。建立了基于嵌入式 ARM 處理器的應(yīng)用軟件體系;將 181。通過將嵌入式實時操作系統(tǒng)181。 研究的主要內(nèi)容 本文是在基 于 32 位的 ARM 微處理器 STM32 和嵌入式實時操作 系統(tǒng)181。在國內(nèi),雖然嵌入式應(yīng)用、開發(fā)很廣,但該領(lǐng)域卻幾乎還是空白,只有三兩家公司和極少數(shù)人員在從事這方面工作。在國內(nèi), “ 維納斯計劃 ” 和 “ 女 媧 計劃 ” 一度鬧得沸沸揚揚,機(jī)頂盒、信息加電這兩年更成了 IT熱點,而實際上這些都是嵌入式系統(tǒng)在特定環(huán)境下的一個特定應(yīng)用。美國汽車大王福特公司的高級經(jīng)理也曾宣稱, “ 福特出售的 ‘ 計算能力 ’ 已超過了 IBM” ,由此可以想見嵌入式計算機(jī)工業(yè)的規(guī)模和廣度。C/OSII系統(tǒng)具有體積小、性能強(qiáng)、功耗低、可靠性高以及面向武昌工學(xué)院畢業(yè)論文(設(shè)計)專用稿紙 2 行業(yè)應(yīng)用的突出特征,目前已經(jīng)被廣泛的應(yīng)用于軍事 國防、消費電子、網(wǎng)絡(luò)通信、工業(yè)控制等各個領(lǐng)域。國外的大部分高校和國內(nèi)的極少數(shù)大學(xué)相繼開設(shè)嵌入式微處理器設(shè)計等相關(guān)的前沿性的課程,可見基于 STM32技術(shù)將是未來微控制開發(fā)的主流方向。例如,經(jīng)典 51系列單片機(jī)在上世紀(jì)我國的工業(yè)信息化改造過程中發(fā)揮了重要的作用,滲透到生產(chǎn)生活的各個方面。中國單片機(jī)二十年論壇總結(jié)出,我國嵌入式起步較早,但總體來說發(fā)展緩慢,和國外的開發(fā)應(yīng)用具有很大的差距,造成這一局面的原因是多方面的。所以,使用實時操作系統(tǒng),將不同的功能劃分成不同的任務(wù)進(jìn)行處理使得設(shè)計大大簡化。 RTOS體現(xiàn)了一種新的應(yīng)用程序設(shè)計思想和開放的框架,用戶在編寫程序時,可以分別編寫各個任務(wù),不必同時將所有任務(wù)運行的各種可能情況記在心中,大大減小了程序編寫的工作量,而且減小了出錯的可能,保證最終程序具有高可靠性,從而 降低程序的復(fù)雜度和開發(fā)周期。傳統(tǒng)的系統(tǒng)開發(fā)我們往往使用前后臺的方式,但是這種開發(fā)方式在任務(wù)較簡單的開發(fā)中比較適用,對于任務(wù)比較復(fù)雜的系統(tǒng)往往力不從心。C/OSII操作系統(tǒng)是一種很好的選擇。 因此, 181。 ( 3) 穩(wěn)定性高: 181。 ( 2) 可移植性好: 181。C/OSII它具有 別的操作系統(tǒng)沒有的優(yōu)點,具體如下: ( 1) 源代碼開放: 181。C/OSII是由美國工程師 Jean Labrosse編寫的嵌入式多任務(wù)的實時操作系統(tǒng),包括實時內(nèi)核、任務(wù)管理、時鐘管理、任務(wù)間通信 同步 (信號量、郵箱、消息隊列 )和內(nèi)存管理。 16 結(jié) 語 ...................................................................................................18 主要參考文獻(xiàn) ........................................................................................19 附 錄 ...................................................................................................20 附錄 1 主程序代碼 15 調(diào)試 12 硬件結(jié)構(gòu) 3 STM32 上移植方法 C/OSII 的理論介紹 .......................................................................3 181。 transplant 武昌工學(xué)院畢業(yè)論文(設(shè)計)專用稿紙 1 目 錄 1 概 述 ...............................................................................................1 研究的目的及意義 181。C/O
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1