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

正文內(nèi)容

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

2025-07-23 15:11 本頁面


【正文】 主程序代碼 20 武昌工學(xué)院畢業(yè)論文(設(shè)計(jì))專用稿紙 1 1 概 述 研究的目的及意義 181。C/OSII是由美國工程師 Jean Labrosse編寫的嵌入式多任務(wù)的實(shí)時(shí)操作系統(tǒng),包括實(shí)時(shí)內(nèi)核、任務(wù)管理、時(shí)鐘管理、任務(wù)間通信 同步 (信號(hào)量、郵箱、消息隊(duì)列 )和內(nèi)存管理。除了有上面的優(yōu)點(diǎn)外, 181。C/OSII它具有 別的操作系統(tǒng)沒有的優(yōu)點(diǎn),具體如下: ( 1) 源代碼開放: 181。C/OSII的源代碼可以免費(fèi)獲取,且標(biāo)有清晰的注釋,可讀性好。 ( 2) 可移植性好: 181。C/OSII的源代碼 90%以上是用 C語言編寫的,可以很容易地把它移植到各類 8位、 16位和 32位處理器上。 ( 3) 穩(wěn)定性高: 181。C/OSII已得到 FAA的標(biāo)準(zhǔn)認(rèn)證,且目前已有上百個(gè)商業(yè)應(yīng)用實(shí)例,其穩(wěn)定性和可靠性是經(jīng)過實(shí)踐驗(yàn)證的。 因此, 181。C/OSII廣泛的應(yīng)用于控制系統(tǒng)中,如 在衍射儀 高壓控制系統(tǒng)中使用181。C/OSII操作系統(tǒng)是一種很好的選擇??刂葡到y(tǒng)是一個(gè)復(fù)雜的系統(tǒng),它需要多個(gè)系統(tǒng)協(xié)同工作。傳統(tǒng)的系統(tǒng)開發(fā)我們往往使用前后臺(tái)的方式,但是這種開發(fā)方式在任務(wù)較簡單的開發(fā)中比較適用,對(duì)于任務(wù)比較復(fù)雜的系統(tǒng)往往力不從心。對(duì)于任務(wù)較多而且復(fù)雜的情況我們就要引入實(shí)時(shí)操作系統(tǒng) RTOS。 RTOS體現(xiàn)了一種新的應(yīng)用程序設(shè)計(jì)思想和開放的框架,用戶在編寫程序時(shí),可以分別編寫各個(gè)任務(wù),不必同時(shí)將所有任務(wù)運(yùn)行的各種可能情況記在心中,大大減小了程序編寫的工作量,而且減小了出錯(cuò)的可能,保證最終程序具有高可靠性,從而 降低程序的復(fù)雜度和開發(fā)周期。由于控制系統(tǒng)功能較復(fù)雜,諸多的功能可以劃分成許多不同的模塊,模塊之間既彼此聯(lián)系又相對(duì)獨(dú)立,可以當(dāng)作不同的任務(wù)來進(jìn)行處理。所以,使用實(shí)時(shí)操作系統(tǒng),將不同的功能劃分成不同的任務(wù)進(jìn)行處理使得設(shè)計(jì)大大簡化。 國內(nèi)外研究狀況綜述 嵌入式系統(tǒng)是繼 IT網(wǎng)絡(luò)技術(shù)之后,又一個(gè)新的技術(shù)發(fā)展方向。中國單片機(jī)二十年論壇總結(jié)出,我國嵌入式起步較早,但總體來說發(fā)展緩慢,和國外的開發(fā)應(yīng)用具有很大的差距,造成這一局面的原因是多方面的。在國內(nèi)嵌入式系統(tǒng)開發(fā)方面,多是一些低層次的應(yīng)用,停留在以前老的技術(shù)基礎(chǔ) 之上。例如,經(jīng)典 51系列單片機(jī)在上世紀(jì)我國的工業(yè)信息化改造過程中發(fā)揮了重要的作用,滲透到生產(chǎn)生活的各個(gè)方面。與此同時(shí)在大學(xué)電類相關(guān)的工科單片機(jī)教學(xué)中,依然是經(jīng)典的 51,微機(jī)原理依然是 8086/88,這顯然體現(xiàn)不了最新的技術(shù)特征,造成了大學(xué)教育與實(shí)際社會(huì)需要的脫節(jié)。國外的大部分高校和國內(nèi)的極少數(shù)大學(xué)相繼開設(shè)嵌入式微處理器設(shè)計(jì)等相關(guān)的前沿性的課程,可見基于 STM32技術(shù)將是未來微控制開發(fā)的主流方向。由于 181。C/OSII系統(tǒng)具有體積小、性能強(qiáng)、功耗低、可靠性高以及面向武昌工學(xué)院畢業(yè)論文(設(shè)計(jì))專用稿紙 2 行業(yè)應(yīng)用的突出特征,目前已經(jīng)被廣泛的應(yīng)用于軍事 國防、消費(fèi)電子、網(wǎng)絡(luò)通信、工業(yè)控制等各個(gè)領(lǐng)域。 今天嵌入式系統(tǒng)帶來的工業(yè)年產(chǎn)值已超過了 1萬億美元, 1997年來自美國嵌入式系統(tǒng)大會(huì) (Embedded System Conference)的報(bào)告指出,未來 5年僅基于嵌入式計(jì)算機(jī)系統(tǒng)的全數(shù)字電視產(chǎn)品,就將在美國產(chǎn)生一個(gè)每年 1500億美元的新市場(chǎng)。美國汽車大王福特公司的高級(jí)經(jīng)理也曾宣稱, “ 福特出售的 ‘ 計(jì)算能力 ’ 已超過了 IBM” ,由此可以想見嵌入式計(jì)算機(jī)工業(yè)的規(guī)模和廣度。 1998年 11月在美國加州舉行的嵌入式系統(tǒng)大會(huì)上,基于 RTOS的 Embedded Inter成為一個(gè)技術(shù)新熱點(diǎn)。在國內(nèi), “ 維納斯計(jì)劃 ” 和 “ 女 媧 計(jì)劃 ” 一度鬧得沸沸揚(yáng)揚(yáng),機(jī)頂盒、信息加電這兩年更成了 IT熱點(diǎn),而實(shí)際上這些都是嵌入式系統(tǒng)在特定環(huán)境下的一個(gè)特定應(yīng)用。據(jù)調(diào)查,目前國際上已有兩百多種嵌入式操作系統(tǒng),而各種各樣的開發(fā)工具、應(yīng)用于嵌入式開發(fā)的儀器設(shè)備更是不可勝數(shù)。在國內(nèi),雖然嵌入式應(yīng)用、開發(fā)很廣,但該領(lǐng)域卻幾乎還是空白,只有三兩家公司和極少數(shù)人員在從事這方面工作。由此可見,嵌入式系統(tǒng)技術(shù)發(fā)展的空間真是無比廣大。 研究的主要內(nèi)容 本文是在基 于 32 位的 ARM 微處理器 STM32 和嵌入式實(shí)時(shí)操作 系統(tǒng)181。C/OSII 上進(jìn)行嵌入式操作系統(tǒng)的移植和功能實(shí)現(xiàn)。通過將嵌入式實(shí)時(shí)操作系統(tǒng)181。C/OSII 移植到 STM32 微處理器上,并對(duì)其進(jìn)行軟件功能的擴(kuò)展和硬件擴(kuò)展,實(shí)現(xiàn)了一個(gè)基本完整的嵌入式實(shí)時(shí)操作系統(tǒng)。建立了基于嵌入式 ARM 處理器的應(yīng)用軟件體系;將 181。C/OSII 移植到 STM32,建立了嵌入式操作系統(tǒng)研究及181。C/OSII 下的開發(fā)環(huán)境體系。包括 181。C/OSII 系統(tǒng)配置、 181。C/OSII 下的移植、啟動(dòng)、測(cè)試和功能實(shí)現(xiàn)等。完成了 基于 STM32 的 181。C/OSII 的應(yīng)用設(shè)計(jì)。 本文主要分為 4 章,章節(jié)安排如下: ( 1) 緒論。主要介紹了開題的背景和研究意義,以及 181。C/OSII 的國內(nèi)外研究現(xiàn)狀。 ( 2) 181。C/OSII 的理論介紹。主要介紹 181。C/OSII 各模塊的基本功能和在STM32 上移植方法。 ( 3) 硬件平臺(tái)介紹及 LCD 屏程序設(shè)計(jì)及調(diào)試。多任務(wù)的建立并實(shí)現(xiàn)基本功能。 ( 4) 結(jié)語。主要介紹本論文中的優(yōu)點(diǎn)和不足之處。 武昌工學(xué)院畢業(yè)論文(設(shè)計(jì))專用稿紙 3 2 181。C/OSII 的理論介紹 181。C/OSII 各模塊的基本功能 181。C/OSII 內(nèi)核結(jié)構(gòu) ( 1) 181。C/OSII 是以源代碼形式提供的實(shí)時(shí)操作系統(tǒng)內(nèi)核,其包含的文件結(jié)構(gòu)如 圖 所示 : 基于 181。C/OSII操作系統(tǒng)進(jìn)行應(yīng)用時(shí),設(shè)計(jì)時(shí) 的主要任務(wù)是將系統(tǒng)合理劃分成多個(gè)任務(wù),并由 RTOS進(jìn)行調(diào)度,任務(wù)之間使用 181。C/OSII提供的系統(tǒng)服務(wù)進(jìn)行通應(yīng)用軟件 (用戶代碼) 181。C/OSII 內(nèi)核文件 (與處理器類型無關(guān)的代碼 ) 181。C/OSII 配置文件 (與應(yīng)用程序有關(guān) ) 移植 181。C/OSII (與處理器類型有關(guān)的代碼) CPU 定時(shí)器 圖 181。C/OSII內(nèi)核結(jié)構(gòu) 軟件 硬件 武昌工學(xué)院畢業(yè)論文(設(shè)計(jì))專用稿紙 4 信,以配合實(shí)現(xiàn)應(yīng)用系統(tǒng)的功能。與前后臺(tái)系統(tǒng)一樣,基于 181。C/OSII的多任務(wù)系統(tǒng)也有一個(gè) main主函數(shù), main函數(shù)由編譯器所帶的 C啟動(dòng)程序調(diào)用。在 main主函數(shù)中主要實(shí)現(xiàn) 181。C/OSII的初始化 OSInit()、任務(wù)創(chuàng)建、一些任務(wù)通信方法的創(chuàng)建、181。C/OSII的多任務(wù)啟動(dòng) OSStart()等常規(guī)操作。另外,還有一些應(yīng)用程序相關(guān)的初始化操作,例如:硬件初始化、數(shù)據(jù)結(jié)構(gòu)初始化等。 ( 2) OSInit()初始化 181。C/OSII所有的變量和數(shù)據(jù)結(jié)構(gòu),并建立空閑任務(wù)OS_TaskIdle(),這個(gè)任務(wù)總是處于就緒態(tài)。 181。C/OSII 內(nèi)核體系結(jié)構(gòu)圖 181。C/OSII內(nèi)核主要對(duì)用戶任務(wù)進(jìn)行調(diào)度和管理,并為任務(wù)間共享資源提供服務(wù)。包含的模塊有任務(wù)管理、任務(wù) 調(diào)度、任務(wù)間通信、時(shí)間管理、內(nèi)核初始化等。181。C/OSII內(nèi)核體系結(jié)構(gòu)如 圖 : 圖 內(nèi)核結(jié)構(gòu)圖 任務(wù)狀態(tài)及其轉(zhuǎn)換關(guān)系 在多任務(wù)系統(tǒng)中,任務(wù)是設(shè)計(jì)者實(shí)現(xiàn)應(yīng)用系統(tǒng)的基本形式,也是 181。C/OSII系統(tǒng)進(jìn)行調(diào)度的基本單元。任務(wù)可以是一個(gè)無限的循環(huán),也可以在一次執(zhí)行后被操作系統(tǒng)刪除。任務(wù)函數(shù)和任何 C函數(shù)一樣,具有一個(gè)返回類型和一個(gè)參數(shù),但是它決不返回。 任務(wù)控制塊( TCB)是一個(gè)數(shù)據(jù)結(jié)構(gòu) OS_TCB,一旦一個(gè)任務(wù)創(chuàng)建,就有一個(gè)和它關(guān)聯(lián) 的 TCB被賦值。當(dāng)任務(wù)的 CPU使用權(quán)被剝奪時(shí),它用來保存該任務(wù)的狀態(tài)。這樣,當(dāng)任務(wù)重新獲得 CPU使用權(quán)時(shí),可以從 TCB中獲取任務(wù)切換前的信息,準(zhǔn)確的繼續(xù)運(yùn)行。 武昌工學(xué)院畢業(yè)論文(設(shè)計(jì))專用稿紙 5 任務(wù)調(diào)度器 181。C/OSII總是運(yùn)行進(jìn)入就緒態(tài)的優(yōu)先級(jí)最高的任務(wù)。任務(wù)調(diào)度器的功能是:在就緒表中查找最高優(yōu)先級(jí)的任務(wù),然后進(jìn)行必要的任務(wù)切換,運(yùn)行該任務(wù)。181。C/OSII的任務(wù)調(diào)度有兩種情況:任務(wù)級(jí)的任務(wù)調(diào)度由 OS_Sched()完成;中斷級(jí)的任務(wù)調(diào)度由 OSIntExt()完成。這兩種任務(wù)調(diào)度情況調(diào)用的任務(wù)切換函數(shù)不同:任務(wù)級(jí)的任務(wù)調(diào)度 OS_Sched()調(diào)用了任務(wù)切換函數(shù) OS_TASK_SW(),而中斷級(jí)的調(diào)度 OSIntExt()調(diào)用了任務(wù)切換函數(shù) OSIntCtxSw()。 任務(wù)級(jí)的任務(wù)調(diào)度是由于有更高優(yōu)先級(jí)的任務(wù)進(jìn)入就緒態(tài),當(dāng)前的任務(wù)的CPU使用權(quán)被剝奪,發(fā)生了任務(wù)到任務(wù)的切換;中斷級(jí)的調(diào)度是指當(dāng)前運(yùn)行的任務(wù)被中斷打斷,由于 ISR運(yùn)行過程中有更高優(yōu)先級(jí)的任務(wù)被激活進(jìn)入就緒態(tài)。而中斷返回前 ISR調(diào)用 OSIntExt()函數(shù),該函數(shù)查找就緒表發(fā)現(xiàn)有必要進(jìn)行任務(wù)切換,從而被中斷的任務(wù)進(jìn)入等待狀態(tài),運(yùn)行被激活的高優(yōu)先級(jí)的任務(wù)。 ( 1) 任務(wù)切 換 任務(wù)切換有兩種: OS_TASK_SW()和 OSIntCtxSw()。任務(wù)級(jí)的任務(wù)切換OS_TASK_SW()是宏調(diào)用,通過軟中斷指令來實(shí)現(xiàn) CPU寄存器內(nèi)容切換。例如:define OS_TASK_SW() asm(“int 32”)。 任務(wù)級(jí)的任務(wù)切換過程: ① 保存當(dāng)前運(yùn)行的任務(wù)的 CPU寄存器值到該任務(wù)的堆棧。如:堆棧指針,程序計(jì)數(shù)器,狀態(tài)寄存器等。 ② 將要運(yùn)行的高優(yōu)先級(jí)的任務(wù)的寄存器值從堆棧恢復(fù)到 CPU寄存器。 ③ 進(jìn)行 TCB的切換,并運(yùn)行任務(wù)。 中斷級(jí)的任務(wù)切換 OSIntCtxSw()是在 OSIntExt()中調(diào)用的,我們一般在用戶ISR中調(diào)用 OSIntExt()以實(shí)現(xiàn)中斷返回前的任務(wù)調(diào)度。由于 ISR已經(jīng)將 CPU寄存器的值存入被中斷的任務(wù)的堆棧中,所以 OSIntCtxSw()的實(shí)現(xiàn)和 OS_TASK_SW()不一樣,具體參見移植文檔。 ( 2) 就緒表 每個(gè)就緒的任務(wù)都放在就緒表中,就緒表有兩個(gè)變量: OSRdyGrp和OSRdyTbl[]。 OSRdyGrp中,將任務(wù)按優(yōu)先級(jí)分組,八個(gè)為一組。 OSRdyGrp的每一位代表每 組任務(wù)是否有進(jìn)入就緒態(tài)的任務(wù)。 在就緒表中查找優(yōu)先級(jí)最高的任務(wù)不需要掃描整個(gè) OSRdyTbl[],只要查優(yōu)先級(jí)判定表 OSUnMapTbl[]。 OSUnMapTbl[]是常量表,所以查找優(yōu)先級(jí)最高的任務(wù)的執(zhí)行時(shí)間為常量,和就緒表的任務(wù)數(shù)無關(guān)。 中斷服務(wù) 在用戶的 ISR中可以調(diào)用 OSIntEnter()和 OSIntExit()通知 181。C/OSII發(fā)生了中斷,這樣可以實(shí)現(xiàn) ISR返回前的任務(wù)調(diào)度。 時(shí)鐘節(jié)拍 181。C/OSII要求用戶提供一個(gè)周期性的時(shí)鐘源,來實(shí)現(xiàn)時(shí)間的延遲和超時(shí)功能,時(shí)鐘節(jié)拍 應(yīng)該每秒發(fā)生 10~100次 /秒。時(shí)鐘節(jié)拍率越高,系統(tǒng)的額外負(fù)荷就武昌工學(xué)院畢業(yè)論文(設(shè)計(jì))專用稿紙 6 越重。 應(yīng)該在多任務(wù)系統(tǒng)啟動(dòng)后,也就是調(diào)用 OSStart()后再開啟時(shí)鐘節(jié)拍器。系統(tǒng)設(shè)計(jì)者可以在第 1個(gè)開始運(yùn)行的任務(wù)中調(diào)用時(shí)鐘節(jié)拍啟動(dòng)函數(shù)。假設(shè)用定時(shí)器TA0作為時(shí)鐘中斷源,那么,在移植過程中實(shí)現(xiàn)了函數(shù) init_timer_ta0(),此函數(shù)用來初始化定時(shí)器 TA0,并將其打開。 181。C/OSII中的時(shí)鐘節(jié)拍服務(wù)是在 ISR中調(diào)用OSTimeTick()實(shí)現(xiàn)的。 OSTimeTick()跟蹤所有任務(wù)的定時(shí)器以及超時(shí)時(shí)限。 181。C/OSII 的 初始化和啟動(dòng) 調(diào)用 181。C/OSII的服務(wù)之前要先調(diào)用系統(tǒng)初始化函數(shù) OSInit()。 OSInit()初始化181。C/OSII所有的變量和數(shù)據(jù)結(jié)構(gòu),并建立空閑任務(wù)。 181。C/OSII初始化任務(wù)控制塊、事件控制塊、消息隊(duì)列緩沖、標(biāo)志控制塊等數(shù)據(jù)結(jié)構(gòu)的空緩沖區(qū)。 多任務(wù)的啟動(dòng)是通過調(diào)用 OSStart()實(shí)現(xiàn)的。啟動(dòng)之前要至少創(chuàng)建一個(gè)任務(wù)。OSStart()調(diào)用就緒任務(wù)啟動(dòng)函數(shù) OSStartHighRdy(),其功能是將任務(wù)棧的值恢復(fù)到 CPU寄存器,并執(zhí)行中斷返回指令,強(qiáng)制執(zhí)行該任務(wù)代碼。 內(nèi)存管理 在 ANSI C中是使用 malloc和 free兩個(gè)函數(shù)來動(dòng)態(tài)分配和釋放內(nèi)存。但在嵌入式實(shí)時(shí)系統(tǒng)中,多次這樣的操作會(huì)導(dǎo)致內(nèi)存碎片,且由于內(nèi)存管理算法的原因,malloc和 free的執(zhí)行時(shí)間也是不確定。 181。C/OSII中把連續(xù)的大塊內(nèi)存按分區(qū)管理。每個(gè)分區(qū)中包含整數(shù)個(gè)大小相同的內(nèi)存塊,但不同分區(qū)之間的內(nèi)存塊大小可以不同。用戶需要?jiǎng)討B(tài)分配內(nèi)存時(shí),系統(tǒng)選擇一個(gè)適當(dāng)?shù)姆謪^(qū),按塊來分配內(nèi)存。釋放內(nèi)存時(shí)將該塊放回它以前所屬的分區(qū),這樣能有效解決碎片問題,同時(shí)執(zhí)行時(shí)間也是固定的。 任務(wù)管理 181。C/OSII中最多可以支 持 64個(gè)任務(wù),分別對(duì)應(yīng)優(yōu)先級(jí) 0~ 63,其中 0為最高優(yōu)先級(jí)。 63為最低級(jí),系統(tǒng)保留了 4個(gè)最高優(yōu)先級(jí)的任務(wù)和 4個(gè)最低優(yōu)先級(jí)的任務(wù),所有用戶可以使用的任務(wù)數(shù)有 56個(gè)。 181。C/OSII提供了任務(wù)管理的各種函數(shù)調(diào)用,
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1