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