資料介紹
μC/OS-II是美國(guó)人Jean Labrosse編寫(xiě)的一個(gè)免費(fèi)的、源碼公開(kāi)的嵌入式實(shí)時(shí)內(nèi)核。對(duì)于開(kāi)發(fā)計(jì)算機(jī)嵌入式應(yīng)用產(chǎn)品的技術(shù)人員來(lái)說(shuō)是一個(gè)實(shí)用價(jià)值很高的實(shí)時(shí)嵌入式操作系統(tǒng)ERTOS(Embedded Real Time Operation System)。
要開(kāi)發(fā)出完善的ERTOS,就要在多任務(wù)的調(diào)度和對(duì)I/O設(shè)備操作的穩(wěn)定性、協(xié)調(diào)性方面做出大量的工作,這也是我在開(kāi)發(fā)ERTOS過(guò)程中深深體會(huì)到的重點(diǎn)所在。希望本文能對(duì)開(kāi)發(fā)ERTOS的技術(shù)人員在多任務(wù)信息流和I/O驅(qū)動(dòng)方面有所啟迪。
1 多任務(wù)信息流關(guān)鍵技術(shù)
在討論多任務(wù)信息流之前,先討論一下多任務(wù)的工作狀態(tài)。在μC/OS中,每個(gè)任務(wù)都是無(wú)限循環(huán)的,每個(gè)任務(wù)都處在以下五種狀態(tài)之一:休眠態(tài)、就緒態(tài)、運(yùn)行態(tài)、掛起態(tài)和中斷態(tài),如圖1所示。

在多任務(wù)的調(diào)度和驅(qū)動(dòng)程序的編寫(xiě)過(guò)程中,必然要涉及到公用代碼段和共享存儲(chǔ)區(qū)的保護(hù)問(wèn)題。即使是原有的C函數(shù),可重用性方面在沒(méi)有得到理論和實(shí)踐的驗(yàn)證情況下也需要對(duì)其進(jìn)行保護(hù)。這樣就需要合理的算法對(duì)公用代碼段、共享存儲(chǔ)區(qū)進(jìn)行保護(hù),避免操作系統(tǒng)在運(yùn)行過(guò)程中產(chǎn)生重用性問(wèn)題而導(dǎo)致運(yùn)行結(jié)果不可預(yù)測(cè)。
系統(tǒng)在開(kāi)發(fā)過(guò)程中,既要考慮到減少系統(tǒng)的復(fù)雜程度,也要兼顧其穩(wěn)定性與運(yùn)行效率的要求。這就需要我們對(duì)各種算法進(jìn)行合理的選擇:在穩(wěn)定性可以保障的情況下,選擇相對(duì)簡(jiǎn)單,占用CPU時(shí)間少的算法;在穩(wěn)定性不能保障的情況下,考慮選擇周全的算法。只有這樣才能使操作系統(tǒng)在一定的配置環(huán)境下達(dá)到最高的運(yùn)行效率。
接下來(lái)分別用void CanSendMessageProcess(void *data)、void CanSendMessage(void *data)、void CanReceiveMessageProcess(void *data)和void CanReceiveMessage(void *data)這四個(gè)任務(wù)來(lái)描述在采用消息隊(duì)列、郵箱和信號(hào)量通信機(jī)制時(shí)的信息流的傳遞過(guò)程。
?。?)消息隊(duì)列通信機(jī)制
消息隊(duì)列在初始化的時(shí)候,建立一個(gè)指定空間大小的數(shù)組,這個(gè)數(shù)組在使用的時(shí)候取得了環(huán)形緩沖區(qū)的概念。這個(gè)數(shù)組在運(yùn)行期間不會(huì)被消除,這樣就避免了重復(fù)建立數(shù)組的時(shí)候內(nèi)存空間的泄漏問(wèn)題。當(dāng)一個(gè)任務(wù)向消息隊(duì)列發(fā)送一個(gè)信息的時(shí)候,相應(yīng)的指針加1(OSQIn+1),隊(duì)列滿時(shí)(OSQEntries = OSQSize),OSQIn則與OSQOut指向同一單元。如果在OSQIn指向的單元內(nèi)插入新的指向消息的指針,就構(gòu)成FIFO(First-In-First-Out)隊(duì)列。相反,如果在OSQOut指向單元的下一個(gè)單元插入新的指針,就構(gòu)成LIFO隊(duì)列(Last-In-First-Out)。在本實(shí)例中,我們定義FIFO隊(duì)列。消息指針總是從OSQOut指向的單元取出。OSQStart和OSQEnd定義了消息指針數(shù)組的頭和尾,以便在OSQIn和OSQOut到達(dá)隊(duì)列的邊緣時(shí),進(jìn)行邊界檢查和必要的指針調(diào)整,實(shí)現(xiàn)其循環(huán)功能。
要開(kāi)發(fā)出完善的ERTOS,就要在多任務(wù)的調(diào)度和對(duì)I/O設(shè)備操作的穩(wěn)定性、協(xié)調(diào)性方面做出大量的工作,這也是我在開(kāi)發(fā)ERTOS過(guò)程中深深體會(huì)到的重點(diǎn)所在。希望本文能對(duì)開(kāi)發(fā)ERTOS的技術(shù)人員在多任務(wù)信息流和I/O驅(qū)動(dòng)方面有所啟迪。
1 多任務(wù)信息流關(guān)鍵技術(shù)
在討論多任務(wù)信息流之前,先討論一下多任務(wù)的工作狀態(tài)。在μC/OS中,每個(gè)任務(wù)都是無(wú)限循環(huán)的,每個(gè)任務(wù)都處在以下五種狀態(tài)之一:休眠態(tài)、就緒態(tài)、運(yùn)行態(tài)、掛起態(tài)和中斷態(tài),如圖1所示。

在多任務(wù)的調(diào)度和驅(qū)動(dòng)程序的編寫(xiě)過(guò)程中,必然要涉及到公用代碼段和共享存儲(chǔ)區(qū)的保護(hù)問(wèn)題。即使是原有的C函數(shù),可重用性方面在沒(méi)有得到理論和實(shí)踐的驗(yàn)證情況下也需要對(duì)其進(jìn)行保護(hù)。這樣就需要合理的算法對(duì)公用代碼段、共享存儲(chǔ)區(qū)進(jìn)行保護(hù),避免操作系統(tǒng)在運(yùn)行過(guò)程中產(chǎn)生重用性問(wèn)題而導(dǎo)致運(yùn)行結(jié)果不可預(yù)測(cè)。
系統(tǒng)在開(kāi)發(fā)過(guò)程中,既要考慮到減少系統(tǒng)的復(fù)雜程度,也要兼顧其穩(wěn)定性與運(yùn)行效率的要求。這就需要我們對(duì)各種算法進(jìn)行合理的選擇:在穩(wěn)定性可以保障的情況下,選擇相對(duì)簡(jiǎn)單,占用CPU時(shí)間少的算法;在穩(wěn)定性不能保障的情況下,考慮選擇周全的算法。只有這樣才能使操作系統(tǒng)在一定的配置環(huán)境下達(dá)到最高的運(yùn)行效率。
接下來(lái)分別用void CanSendMessageProcess(void *data)、void CanSendMessage(void *data)、void CanReceiveMessageProcess(void *data)和void CanReceiveMessage(void *data)這四個(gè)任務(wù)來(lái)描述在采用消息隊(duì)列、郵箱和信號(hào)量通信機(jī)制時(shí)的信息流的傳遞過(guò)程。
?。?)消息隊(duì)列通信機(jī)制
消息隊(duì)列在初始化的時(shí)候,建立一個(gè)指定空間大小的數(shù)組,這個(gè)數(shù)組在使用的時(shí)候取得了環(huán)形緩沖區(qū)的概念。這個(gè)數(shù)組在運(yùn)行期間不會(huì)被消除,這樣就避免了重復(fù)建立數(shù)組的時(shí)候內(nèi)存空間的泄漏問(wèn)題。當(dāng)一個(gè)任務(wù)向消息隊(duì)列發(fā)送一個(gè)信息的時(shí)候,相應(yīng)的指針加1(OSQIn+1),隊(duì)列滿時(shí)(OSQEntries = OSQSize),OSQIn則與OSQOut指向同一單元。如果在OSQIn指向的單元內(nèi)插入新的指向消息的指針,就構(gòu)成FIFO(First-In-First-Out)隊(duì)列。相反,如果在OSQOut指向單元的下一個(gè)單元插入新的指針,就構(gòu)成LIFO隊(duì)列(Last-In-First-Out)。在本實(shí)例中,我們定義FIFO隊(duì)列。消息指針總是從OSQOut指向的單元取出。OSQStart和OSQEnd定義了消息指針數(shù)組的頭和尾,以便在OSQIn和OSQOut到達(dá)隊(duì)列的邊緣時(shí),進(jìn)行邊界檢查和必要的指針調(diào)整,實(shí)現(xiàn)其循環(huán)功能。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- μC/OS-II的多任務(wù)系統(tǒng)實(shí)時(shí)性解析 2次下載
- 一種μC/OS-II任務(wù)調(diào)度硬件指令的實(shí)現(xiàn) 2次下載
- μC/OS-II 在Nios上的移植
- μC/OS-II在PC機(jī)上移植的設(shè)計(jì)與實(shí)現(xiàn)
- 基于μC/OS-II的無(wú)線調(diào)度策略分析與實(shí)現(xiàn)
- 基于嵌入式系統(tǒng)μC/OS-II的雙CAN通信構(gòu)件
- 基于μC/OS-II的嵌入式數(shù)控系統(tǒng)分析與設(shè)計(jì)
- 基于μC/OS-II 的CAN總線驅(qū)動(dòng)程序設(shè)計(jì)
- μC OS-II 中擴(kuò)充任務(wù)數(shù)的方法
- μC OS-II 在Nios 上的移植1
- μC OS-II 在配電監(jiān)測(cè)終端儀表中的應(yīng)用
- 編寫(xiě)μC OS-II 實(shí)時(shí)內(nèi)核下的串行驅(qū)動(dòng)
- μC/OS-II 任務(wù)調(diào)度機(jī)制的改進(jìn)
- μC/OS-II 中擴(kuò)充任務(wù)數(shù)的方法
- 基于μC/OS-II的嵌入式音頻系統(tǒng)設(shè)計(jì)
- 基于μC/OS-II和TMS320LF2407A實(shí)現(xiàn)集散式數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì) 2344次閱讀
- 基于AT91R40008芯片和μC/OS-II實(shí)現(xiàn)EPA交換機(jī)的設(shè)計(jì) 3754次閱讀
- 基于MC9S12DP256芯片和μC/OS-II實(shí)現(xiàn)CCP軟件的設(shè)計(jì) 2882次閱讀
- 基于嵌入式工控模塊和μC/OS-II實(shí)現(xiàn)車(chē)載狀態(tài)監(jiān)控系統(tǒng)的設(shè)計(jì) 2064次閱讀
- 基于μC/OS-II操作系統(tǒng)實(shí)現(xiàn)在P89V51RD2微控制器上運(yùn)行 810次閱讀
- 基于μC/OS-II操作系統(tǒng)在SPCE061A上的移植優(yōu)化研研究 850次閱讀
- 基于多任務(wù)信息流的CAN總線驅(qū)動(dòng)設(shè)計(jì) 1152次閱讀
- 51單片機(jī)對(duì)μC/OS-II實(shí)時(shí)操作系統(tǒng)的移植 2507次閱讀
- LPC213X通過(guò)μC/OS-II的多種移植方案 677次閱讀
- 淺論uC/OS-II 在電動(dòng)車(chē)電池管理系統(tǒng)中的應(yīng)用研究 1437次閱讀
- μC/OS-II系統(tǒng)基礎(chǔ)嵌入式開(kāi)發(fā)編程教程 4547次閱讀
- LPC2119簡(jiǎn)介 μC/OS-II在LPC2119上的移植 2847次閱讀
- μC/OS-Ⅱ操作系統(tǒng)設(shè)備驅(qū)動(dòng)設(shè)計(jì)及實(shí)際應(yīng)用舉例 1671次閱讀
- 車(chē)輛調(diào)度系統(tǒng)的整體設(shè)計(jì) UC/OS-II的內(nèi)核調(diào)度機(jī)理 1207次閱讀
- 用AndesCore N1033A-S處理器實(shí)現(xiàn)μC/OS-II的移植 4140次閱讀
下載排行
本周
- 1索尼333ESL電路圖資料
- 10.11 MB | 2次下載 | 免費(fèi)
- 2TINA-TI 模擬電路設(shè)計(jì)、仿真和分析軟件中文教程
- 3.83 MB | 0次下載 | 5 積分
- 3SS6548D40V 直流有刷電機(jī)驅(qū)動(dòng)芯片中文資料
- 1.55 MB | 次下載 | 1 積分
- 4SS6235M 4A 33V性價(jià)比超高電機(jī)驅(qū)動(dòng)芯片中文資料
- 1.26 MB | 次下載 | 免費(fèi)
- 5FP7195-中文應(yīng)用說(shuō)明書(shū)
- 0.93 MB | 次下載 | 免費(fèi)
- 6VSA101-G250T01-I 電壓傳感器產(chǎn)品使用手冊(cè)
- 0.72 MB | 次下載 | 免費(fèi)
- 7FS4056E系列單節(jié)線線充電IC
- 2.41 MB | 次下載 | 免費(fèi)
- 8FS5281E(5V USB輸入雙節(jié)鋰電池串聯(lián)應(yīng)用升壓充電管理IC)
- 3.30 MB | 次下載 | 免費(fèi)
本月
- 148V到5KW無(wú)橋LLC雙向逆變器的電路原理圖免費(fèi)下載
- 0.26 MB | 157次下載 | 10 積分
- 22KW逆變側(cè)功率管的損耗如何進(jìn)行計(jì)算詳細(xì)公式免費(fèi)下載
- 0.40 MB | 33次下載 | 2 積分
- 3高功率密度碳化硅MOSFET軟開(kāi)關(guān)三相逆變器損耗分析
- 2.27 MB | 33次下載 | 5 積分
- 4STM32F10x參考手冊(cè)資料
- 13.64 MB | 12次下載 | 1 積分
- 5光伏并網(wǎng)逆變器原理
- 7.31 MB | 7次下載 | 2 積分
- 6SW5099規(guī)格書(shū)
- 1.37 MB | 6次下載 | 1 積分
- 7星火6J3-1交直流二波段收音機(jī)電路圖資料
- 1.86 MB | 6次下載 | 免費(fèi)
- 8S7-200 可編程序控制器系統(tǒng)手冊(cè)
- 12.81 MB | 5次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935134次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191422次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183352次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81600次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73818次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
評(píng)論