資料介紹
μC/OS-II是美國人Jean Labrosse編寫的一個免費的、源碼公開的嵌入式實時內(nèi)核。對于開發(fā)計算機嵌入式應(yīng)用產(chǎn)品的技術(shù)人員來說是一個實用價值很高的實時嵌入式操作系統(tǒng)ERTOS(Embedded Real Time Operation System)。
要開發(fā)出完善的ERTOS,就要在多任務(wù)的調(diào)度和對I/O設(shè)備操作的穩(wěn)定性、協(xié)調(diào)性方面做出大量的工作,這也是我在開發(fā)ERTOS過程中深深體會到的重點所在。希望本文能對開發(fā)ERTOS的技術(shù)人員在多任務(wù)信息流和I/O驅(qū)動方面有所啟迪。
1 多任務(wù)信息流關(guān)鍵技術(shù)
在討論多任務(wù)信息流之前,先討論一下多任務(wù)的工作狀態(tài)。在μC/OS中,每個任務(wù)都是無限循環(huán)的,每個任務(wù)都處在以下五種狀態(tài)之一:休眠態(tài)、就緒態(tài)、運行態(tài)、掛起態(tài)和中斷態(tài),如圖1所示。
在多任務(wù)的調(diào)度和驅(qū)動程序的編寫過程中,必然要涉及到公用代碼段和共享存儲區(qū)的保護問題。即使是原有的C函數(shù),可重用性方面在沒有得到理論和實踐的驗證情況下也需要對其進行保護。這樣就需要合理的算法對公用代碼段、共享存儲區(qū)進行保護,避免操作系統(tǒng)在運行過程中產(chǎn)生重用性問題而導致運行結(jié)果不可預(yù)測。
系統(tǒng)在開發(fā)過程中,既要考慮到減少系統(tǒng)的復雜程度,也要兼顧其穩(wěn)定性與運行效率的要求。這就需要我們對各種算法進行合理的選擇:在穩(wěn)定性可以保障的情況下,選擇相對簡單,占用CPU時間少的算法;在穩(wěn)定性不能保障的情況下,考慮選擇周全的算法。只有這樣才能使操作系統(tǒng)在一定的配置環(huán)境下達到最高的運行效率。
接下來分別用void CanSendMessageProcess(void *data)、void CanSendMessage(void *data)、void CanReceiveMessageProcess(void *data)和void CanReceiveMessage(void *data)這四個任務(wù)來描述在采用消息隊列、郵箱和信號量通信機制時的信息流的傳遞過程。
(1)消息隊列通信機制
消息隊列在初始化的時候,建立一個指定空間大小的數(shù)組,這個數(shù)組在使用的時候取得了環(huán)形緩沖區(qū)的概念。這個數(shù)組在運行期間不會被消除,這樣就避免了重復建立數(shù)組的時候內(nèi)存空間的泄漏問題。當一個任務(wù)向消息隊列發(fā)送一個信息的時候,相應(yīng)的指針加1(OSQIn+1),隊列滿時(OSQEntries = OSQSize),OSQIn則與OSQOut指向同一單元。如果在OSQIn指向的單元內(nèi)插入新的指向消息的指針,就構(gòu)成FIFO(First-In-First-Out)隊列。相反,如果在OSQOut指向單元的下一個單元插入新的指針,就構(gòu)成LIFO隊列(Last-In-First-Out)。在本實例中,我們定義FIFO隊列。消息指針總是從OSQOut指向的單元取出。OSQStart和OSQEnd定義了消息指針數(shù)組的頭和尾,以便在OSQIn和OSQOut到達隊列的邊緣時,進行邊界檢查和必要的指針調(diào)整,實現(xiàn)其循環(huán)功能。
要開發(fā)出完善的ERTOS,就要在多任務(wù)的調(diào)度和對I/O設(shè)備操作的穩(wěn)定性、協(xié)調(diào)性方面做出大量的工作,這也是我在開發(fā)ERTOS過程中深深體會到的重點所在。希望本文能對開發(fā)ERTOS的技術(shù)人員在多任務(wù)信息流和I/O驅(qū)動方面有所啟迪。
1 多任務(wù)信息流關(guān)鍵技術(shù)
在討論多任務(wù)信息流之前,先討論一下多任務(wù)的工作狀態(tài)。在μC/OS中,每個任務(wù)都是無限循環(huán)的,每個任務(wù)都處在以下五種狀態(tài)之一:休眠態(tài)、就緒態(tài)、運行態(tài)、掛起態(tài)和中斷態(tài),如圖1所示。
在多任務(wù)的調(diào)度和驅(qū)動程序的編寫過程中,必然要涉及到公用代碼段和共享存儲區(qū)的保護問題。即使是原有的C函數(shù),可重用性方面在沒有得到理論和實踐的驗證情況下也需要對其進行保護。這樣就需要合理的算法對公用代碼段、共享存儲區(qū)進行保護,避免操作系統(tǒng)在運行過程中產(chǎn)生重用性問題而導致運行結(jié)果不可預(yù)測。
系統(tǒng)在開發(fā)過程中,既要考慮到減少系統(tǒng)的復雜程度,也要兼顧其穩(wěn)定性與運行效率的要求。這就需要我們對各種算法進行合理的選擇:在穩(wěn)定性可以保障的情況下,選擇相對簡單,占用CPU時間少的算法;在穩(wěn)定性不能保障的情況下,考慮選擇周全的算法。只有這樣才能使操作系統(tǒng)在一定的配置環(huán)境下達到最高的運行效率。
接下來分別用void CanSendMessageProcess(void *data)、void CanSendMessage(void *data)、void CanReceiveMessageProcess(void *data)和void CanReceiveMessage(void *data)這四個任務(wù)來描述在采用消息隊列、郵箱和信號量通信機制時的信息流的傳遞過程。
(1)消息隊列通信機制
消息隊列在初始化的時候,建立一個指定空間大小的數(shù)組,這個數(shù)組在使用的時候取得了環(huán)形緩沖區(qū)的概念。這個數(shù)組在運行期間不會被消除,這樣就避免了重復建立數(shù)組的時候內(nèi)存空間的泄漏問題。當一個任務(wù)向消息隊列發(fā)送一個信息的時候,相應(yīng)的指針加1(OSQIn+1),隊列滿時(OSQEntries = OSQSize),OSQIn則與OSQOut指向同一單元。如果在OSQIn指向的單元內(nèi)插入新的指向消息的指針,就構(gòu)成FIFO(First-In-First-Out)隊列。相反,如果在OSQOut指向單元的下一個單元插入新的指針,就構(gòu)成LIFO隊列(Last-In-First-Out)。在本實例中,我們定義FIFO隊列。消息指針總是從OSQOut指向的單元取出。OSQStart和OSQEnd定義了消息指針數(shù)組的頭和尾,以便在OSQIn和OSQOut到達隊列的邊緣時,進行邊界檢查和必要的指針調(diào)整,實現(xiàn)其循環(huán)功能。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- μC/OS-II的多任務(wù)系統(tǒng)實時性解析 2次下載
- 一種μC/OS-II任務(wù)調(diào)度硬件指令的實現(xiàn) 2次下載
- μC/OS-II 在Nios上的移植
- μC/OS-II在PC機上移植的設(shè)計與實現(xiàn)
- 基于μC/OS-II的無線調(diào)度策略分析與實現(xiàn)
- 基于嵌入式系統(tǒng)μC/OS-II的雙CAN通信構(gòu)件
- 基于μC/OS-II的嵌入式數(shù)控系統(tǒng)分析與設(shè)計
- 基于μC/OS-II 的CAN總線驅(qū)動程序設(shè)計
- μC OS-II 中擴充任務(wù)數(shù)的方法
- μC OS-II 在Nios 上的移植1
- μC OS-II 在配電監(jiān)測終端儀表中的應(yīng)用
- 編寫μC OS-II 實時內(nèi)核下的串行驅(qū)動
- μC/OS-II 任務(wù)調(diào)度機制的改進
- μC/OS-II 中擴充任務(wù)數(shù)的方法
- 基于μC/OS-II的嵌入式音頻系統(tǒng)設(shè)計
- 基于μC/OS-II和TMS320LF2407A實現(xiàn)集散式數(shù)據(jù)采集系統(tǒng)的設(shè)計 2186次閱讀
- 基于AT91R40008芯片和μC/OS-II實現(xiàn)EPA交換機的設(shè)計 3463次閱讀
- 基于MC9S12DP256芯片和μC/OS-II實現(xiàn)CCP軟件的設(shè)計 2685次閱讀
- 基于嵌入式工控模塊和μC/OS-II實現(xiàn)車載狀態(tài)監(jiān)控系統(tǒng)的設(shè)計 1907次閱讀
- 基于μC/OS-II操作系統(tǒng)實現(xiàn)在P89V51RD2微控制器上運行 747次閱讀
- 基于μC/OS-II操作系統(tǒng)在SPCE061A上的移植優(yōu)化研研究 779次閱讀
- 基于多任務(wù)信息流的CAN總線驅(qū)動設(shè)計 1063次閱讀
- 51單片機對μC/OS-II實時操作系統(tǒng)的移植 2385次閱讀
- LPC213X通過μC/OS-II的多種移植方案 621次閱讀
- 淺論uC/OS-II 在電動車電池管理系統(tǒng)中的應(yīng)用研究 1313次閱讀
- μC/OS-II系統(tǒng)基礎(chǔ)嵌入式開發(fā)編程教程 4370次閱讀
- LPC2119簡介 μC/OS-II在LPC2119上的移植 2705次閱讀
- μC/OS-Ⅱ操作系統(tǒng)設(shè)備驅(qū)動設(shè)計及實際應(yīng)用舉例 1553次閱讀
- 車輛調(diào)度系統(tǒng)的整體設(shè)計 UC/OS-II的內(nèi)核調(diào)度機理 1116次閱讀
- 用AndesCore N1033A-S處理器實現(xiàn)μC/OS-II的移植 3969次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關(guān)電源基礎(chǔ)知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發(fā)板設(shè)計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多