mC/OS-II實(shí)時(shí)內核
摘要: 本文介紹了mC/OS-II實(shí)時(shí)內核及其應用。
關(guān)鍵詞: mC/OS-II;實(shí)時(shí)操作系統
引言
嵌入式系統每年都在變得更加復雜。在過(guò)去的幾年中,產(chǎn)品已經(jīng)從采用8位處理器轉向16位,甚至32位處理器。單任務(wù)的應用過(guò)于簡(jiǎn)單,不再適應當前的競爭趨勢。實(shí)時(shí)操作系統(RTOS)通常用于處理復雜性的需求。RTOS創(chuàng )建一個(gè)框架,用于建立和提供比單任務(wù)應用更好的響應系統。一個(gè)非常流行的RTOS是MicroC/OS-II(也就是熟知的mC/OS-II)。
mC/OS-II實(shí)時(shí)內核
mC/OS-II提供多任務(wù)的能力。多任務(wù)處理是調度的過(guò)程和幾個(gè)任務(wù)之間切換CPU;單CPU在幾個(gè)有序的任務(wù)之間進(jìn)行切換。多任務(wù)處理提供構造應用成為一組小的,專(zhuān)注的共享處理器的任務(wù)的能力。多任務(wù)處理的最重要的方面之一是允許應用程序開(kāi)發(fā)者管理實(shí)時(shí)應用固有的復雜性。mC/OS-II可以使應用程序更容易設計和維護。任務(wù)是一個(gè)簡(jiǎn)單的程序,可以認為它完全占有CPU。實(shí)時(shí)應用程序的設計過(guò)程包括把問(wèn)題分割成為多個(gè)任務(wù),每個(gè)任務(wù)負責完成問(wèn)題的一部分。mC/OS-II允許創(chuàng )建多達254個(gè)應用任務(wù)。對于許多嵌入式系統來(lái)說(shuō),254個(gè)任務(wù)可以用于復雜的產(chǎn)品設計。
內核是多任務(wù)處理系統負責任務(wù)管理和任務(wù)之間通訊的部分。當內核決定運行一個(gè)不同任務(wù)時(shí),它僅僅存儲當前任務(wù)的上下文(CPU寄存器)到當前的任務(wù)的堆棧;每一個(gè)任務(wù)在內存中被分配它自身?yè)碛械亩褩^域。一旦這個(gè)操作完成,新的任務(wù)的上下文從它的堆棧區域存儲到此,然后新的任務(wù)的代碼執行被恢復。這個(gè)過(guò)程稱(chēng)為上下文切換或任務(wù)切換。每一個(gè)任務(wù)的堆棧的當前頂端,隨同其他信息,被存儲在一個(gè)稱(chēng)為任務(wù)控制塊(TCB)的數據結構中。當任務(wù)被RTOS創(chuàng )建和管理時(shí),每一個(gè)任務(wù)都被分配一個(gè)TCB。
在實(shí)時(shí)系統中,一個(gè)重要的問(wèn)題是響應中斷的時(shí)間要求,以及實(shí)際開(kāi)始執行處理中斷的用戶(hù)代碼的時(shí)間要求。這被稱(chēng)為中斷響應。像市場(chǎng)上的所有RTOS一樣,當處理關(guān)鍵代碼段時(shí),mC/OS-II會(huì )禁止中斷。然而,mC/OS-II作了優(yōu)化,中斷禁止盡可能的短,并提供更好的中斷響應。例如,對ARM處理器,mC/OS-II禁止中斷不大于250個(gè)時(shí)鐘周期(假設內存存取零等待狀態(tài))。
調度器是內核的一部分,它負責決定哪一個(gè)任務(wù)將要運行和何時(shí)運行。mC/OS-II的調度器是基于優(yōu)先級的;每一個(gè)任務(wù)依據其重要性被分配一個(gè)優(yōu)先級。分配給每一個(gè)任務(wù)的優(yōu)先級依賴(lài)產(chǎn)品試圖達到的目的。在基于優(yōu)先級的內核中,CPU的控制將總是給予就緒態(tài)的最高優(yōu)先級的任務(wù)。然而,何時(shí)最高優(yōu)先級任務(wù)獲得CPU,依賴(lài)調度器使用的類(lèi)型。注意,調度器執行時(shí)間是不變的和確定性的。換句話(huà)說(shuō),不論在產(chǎn)品中采用多少個(gè)任務(wù),mC/OS-II的調度器將總是花費相同大小的時(shí)間執行。
mC/OS-II是可搶占內核,而且當一個(gè)事件使就緒態(tài)的最高優(yōu)先級的任務(wù)運行,當前任務(wù)立即掛起,高優(yōu)先級任務(wù)控制CPU。如果一個(gè)中斷使就緒態(tài)的最高優(yōu)先級的任務(wù)運行,被中斷的任務(wù)掛起,新的最高優(yōu)先級的任務(wù)恢復運行。大多數實(shí)時(shí)系統使用搶占調度器,因為它們響應更快。mC/OS-II為應用提供許多有價(jià)值的服務(wù)。最基本的服務(wù)之一是允許任務(wù)掛起執行直到某一時(shí)間結束。換句話(huà)說(shuō),一個(gè)任務(wù)完成某項工作,然后任務(wù)進(jìn)入指定的時(shí)間量的睡眠“sleep”,這個(gè)時(shí)間是可變的,從一個(gè)時(shí)鐘節拍(clock tike)到幾個(gè)小時(shí)。時(shí)鐘節拍通常由硬件定時(shí)器和有規則的中斷CPU產(chǎn)生,并且它是由mC/OS-II管理的基本時(shí)間單元。時(shí)鐘節拍中斷CPU的速率由應用程序開(kāi)發(fā)者決定,通常每秒發(fā)生在10到1000次之間。
多任務(wù)處理需要仔細考慮共享資源(內存特定區域,變量,I/O,等等)。換句話(huà)說(shuō),必須確保有權使用的共享資源是獨占的。mC/OS-II提供多種服務(wù)使你更易使用,但責任也是由你承擔。mC/OS-II提供的最普通的資源保護機制是信號量。當存取共享資源時(shí),應用程序開(kāi)發(fā)者需要獲取為保護資源創(chuàng )建的信號量,存取資源,然后釋放信號量。如果一個(gè)任務(wù)需要存取資源,而信號量已經(jīng)給予另一個(gè)任務(wù),則這個(gè)任務(wù)會(huì )被放置在任務(wù)的等待列表,等待信號量的擁有者釋放信號量。任務(wù)等待信號量釋放,并不消耗CPU時(shí)間。當信號量被釋放,mC/OS-II要決定是否新的信號量擁有者比釋放者有更高的優(yōu)先級,如果是,切換到高優(yōu)先級任務(wù)。mC/OS-II可以根據需要允許創(chuàng )建許多信號量(在運行時(shí))。
任務(wù)或ISR(中斷服務(wù)程序)與其它任務(wù)通訊也是重要的。像mC/OS-II這樣的RTOS提供消息郵箱和消息隊列這樣的服務(wù)實(shí)現這一通訊。郵箱是一個(gè)對象,它可以擁有一個(gè)消息(實(shí)際上是一個(gè)指針),并且任務(wù)列表等待郵箱中的消息,這個(gè)消息由其它的任務(wù)或ISR存放。指針的使用在于避免在運行時(shí)拷貝數據。指針發(fā)送實(shí)際上可以指向幾乎任何事:數據結構,變量,數組或甚至函數。等待消息到達的任務(wù)放置在等待列表中,直到消息被發(fā)送(由其它任務(wù)或ISR)。當任務(wù)等待消息時(shí),它們不消耗CPU時(shí)間。換句話(huà)說(shuō),那些任務(wù)在等待時(shí),RTOS執行其它的任務(wù)。當一個(gè)消息被發(fā)送時(shí),實(shí)際上等待消息的最高優(yōu)先級的任務(wù)接收消息。如果等待消息的任務(wù)成為最重要的任務(wù)要執行,則mC/OS-II執行那個(gè)任務(wù),允許它立即處理接收的消息。
mC/OS-II總共提供80個(gè)函數,它們可以在應用程序中調用。
mC/OS-II的尺寸(代碼內存數量)在6K字節到大約24K字節的代碼量之間變化。同樣地,mC/OS-II需要500字節到大約4K字節之間的RAM。這意味著(zhù)mC/OS-II是可伸縮的(在編譯時(shí)),適合用于一些最小的嵌入式控制器。事實(shí)上,mC/OS-II已經(jīng)移植到超過(guò)45種不同CPU構架(8位,16位,32位CPU和DSP)。多年來(lái),許多的這些移植已經(jīng)被用戶(hù)貢獻出來(lái),并且可以從Micrium的網(wǎng)站免費下載使用。
mC/OS-II的應用
除了許多使用mC/OS-II的技術(shù)原因之外,也有許多源于商業(yè)的觀(guān)點(diǎn)。使用mC/OS-II的最大優(yōu)勢是它是可證明的可用于安全關(guān)鍵性應用的RTOS。事實(shí)上已經(jīng)有第三方為μC/OS-II開(kāi)發(fā)的認證套件可以提供全部必須的文檔,以便交付mC/OS-II作為預先證明的用于安全關(guān)鍵性系統的軟件組件,包括美國航空無(wú)線(xiàn)電技術(shù)委員會(huì )(RTCA)航空電子設備D0-178B (A級)標準和EUROCAE ED-12B標準,美國食品和醫藥管理局(FDA)醫療510(K)(III類(lèi))標準,以及IEC 61068 (SIL3/SIL4)用于運輸和原子能系統標準。即使你的產(chǎn)品不具備安全關(guān)鍵性,你應該了解到這個(gè)證明,它證明了mC/OS-II是一個(gè)非常健壯和高可靠的RTOS。mC/OS-II也99%適應汽車(chē)工業(yè)軟件可靠性協(xié)會(huì )(MISRA)C編碼標準。這些標準由MISRA創(chuàng )建,目的是在關(guān)鍵性汽車(chē)電子系統中改善C語(yǔ)言程序的可靠性和可預測性。MISRA協(xié)會(huì )成員包括戴勒克電子,福特汽車(chē)公司,美洲虎汽車(chē)有限公司,Lotus Engineering,Lucas Electronics,Rolls-Royce, Rover Group Ltd.,以及其它專(zhuān)注改善汽車(chē)電子安全性和可靠性的公司和大學(xué)。這個(gè)標準的全部詳細資料可以直接從MISRA的網(wǎng)站獲得,http://www.misra.org.uk。詳細的mC/OS-II遵循所有MISRA127條C編碼規則的描述表格可以從Micrium網(wǎng)站獲得(www.micrium.com)
mC/OS-II是流行的軟件,其原因是你可以從它獲得經(jīng)驗而不用付授權費,直到你決定將它應用到實(shí)際的商業(yè)產(chǎn)品。同樣它在世界上許許多多的學(xué)院和大學(xué)中被使用。也有成千的mC/OS-II授權使用在許多不同類(lèi)型的產(chǎn)品中。因為mC/OS-II低廉的費用和整潔的源代碼,它是非常吸引人的RTOS。
mC/TCP-IP
最近Micrium已經(jīng)開(kāi)發(fā)了mC/TCP-IP,一個(gè)潔凈的嵌入式TCP/IP協(xié)議棧。mC/TCP-IP開(kāi)發(fā)成為與mC/OS-II同樣質(zhì)量級別的軟件,事實(shí)上對教學(xué)使用是免費的。但是像mC/OS-II一樣,如果用于商業(yè)應用,需要得到授權。你可以從Micrium的網(wǎng)站(www.micrium.com)下載mC/TCP-IP,對于商業(yè)應用,Micrium允許免費評估mC/TCP-IP軟件45天。mC/TCP-IP是IPV4版本協(xié)議棧,提供BSD V4插槽接口(socket interface)。Micrium開(kāi)發(fā)大量補充模塊到mC/TCP-IP:DHCPc(動(dòng)態(tài)主機配置協(xié)議,客戶(hù)端),FTP(文件傳輸協(xié)議,客戶(hù)端和服務(wù)器兩者),HTTPs(超級文本傳輸協(xié)議,服務(wù)器)就是通常說(shuō)的Web服務(wù)器,郵件客戶(hù)端,POP3(郵局協(xié)議3)和SMTP(簡(jiǎn)單郵件傳輸協(xié)議),以及更多的其它模塊。這些模塊根據每一個(gè)最終產(chǎn)品授權。
Micrium還提供完整的軟件組件(就是通常說(shuō)的中間件)。你可以得到嵌入式FAT兼容的文件系統(mC/FS),嵌入式圖形用戶(hù)系統(mC/GUI),嵌入式通用串行總線(xiàn)協(xié)議棧(mC/USB)以及其它更多的組件。
結語(yǔ)
Micrium的價(jià)值觀(guān)是為嵌入式大眾提供最好質(zhì)量的軟件。雖然Micrium的軟件以源碼形式提供,但它并不能被認為是開(kāi)源代碼。提供源代碼是為方便和容易配置。請通過(guò)授權我們的軟件幫助我們提供給嵌入式大眾最好的軟件。我們感激您的誠實(shí)和合作。
參考文獻:
1. www.misra.org.uk
2. www.micrium.com
tcp/ip相關(guān)文章:tcp/ip是什么
評論