μC/OS 和μC/OS-II 是專門為計(jì)算機(jī)的嵌入式應(yīng)用設(shè)計(jì)的, 絕大部分代碼是用C語(yǔ)言編寫的。CPU 硬件相關(guān)部分是用匯編語(yǔ)言編寫的、總量約200行的匯編語(yǔ)言部分被壓縮到最低限度,為的是便于移植到任何一種其它的CPU 上。
μC/OS-Ⅱ是一種多任務(wù)實(shí)時(shí)源代碼的公開操作系統(tǒng),內(nèi)核精簡(jiǎn),移植性較強(qiáng),非常適合用于一些小型控制和實(shí)驗(yàn)系統(tǒng)的開發(fā)。
軟件定時(shí)器是常用于內(nèi)核設(shè)計(jì)和應(yīng)用程序設(shè)計(jì)的一項(xiàng)基礎(chǔ)軟件措施。本文對(duì)μC/OS-II V2.86中新增的用于管理軟件定時(shí)器的定時(shí)器輪進(jìn)行了重新規(guī)劃,并對(duì)處理算法進(jìn)行了重新設(shè)計(jì),有效提高了軟件定時(shí)器的到期命中率,驗(yàn)證表明,新改進(jìn)的算法在同等負(fù)載下可降低CPU的負(fù)載率約9%左右。
如果用戶任務(wù)運(yùn)行在“用戶級(jí)+PSP”狀態(tài)下,而調(diào)用操作系統(tǒng)函數(shù)時(shí)運(yùn)行在“特權(quán)級(jí)+MSP”狀態(tài)下,再配合MPU的使用,可以使系統(tǒng)的安全性與穩(wěn)定性得到很大的提高。
介紹了實(shí)時(shí)操作系統(tǒng)μC/OS-II的特點(diǎn)和內(nèi)核結(jié)構(gòu),并首次實(shí)現(xiàn)了μC/OS-II在摩托羅拉處理器MPC555上的移植,介紹了移植后OS的應(yīng)用方法。
針對(duì)目前RFID讀寫器無(wú)法隨身攜帶,實(shí)現(xiàn)遠(yuǎn)程的IC卡讀寫操作的問題,采用GPRS無(wú)線網(wǎng)絡(luò)作為數(shù)據(jù)傳輸?shù)妮d體,實(shí)現(xiàn)了無(wú)線RFID讀寫器的開發(fā)。采用μC/OS-Ⅱ嵌入式實(shí)時(shí)操作系統(tǒng)作為讀寫器終端的軟件平臺(tái),在ARM7系列微處理器LPC2148上實(shí)現(xiàn)了對(duì)IC卡的發(fā)行、加值、消費(fèi)、操作記錄查詢與匯總、數(shù)據(jù)采集以及無(wú)線傳輸。采用動(dòng)態(tài)密鑰加密算法很好地保證了IC卡的數(shù)據(jù)安全。
為了使嵌入式操作系統(tǒng)μC/OS-Ⅱ更加適合數(shù)控系統(tǒng)的應(yīng)用,對(duì)μC/OS-Ⅱ的任務(wù)分類和任務(wù)調(diào)度做了改進(jìn)。將任務(wù)分為普通任務(wù)和搶占式任務(wù)。搶占式任務(wù)不通過(guò)調(diào)度器調(diào)度運(yùn)行,而在中斷處理中直接運(yùn)行。搶占式任務(wù)對(duì)應(yīng)數(shù)控系統(tǒng)中執(zhí)行頻率高,執(zhí)行時(shí)間短的任務(wù)。實(shí)驗(yàn)證明,改進(jìn)后的μC/OS-Ⅱ更適合數(shù)控系統(tǒng)任務(wù)的添加。
本文設(shè)計(jì)了實(shí)時(shí)系統(tǒng)加速RTA(Real-Time Acceleration)模塊,對(duì)任務(wù)調(diào)度和系統(tǒng)時(shí)間管理進(jìn)行硬件化,降低了任務(wù)中斷時(shí)間,并對(duì)最終的測(cè)量數(shù)據(jù)進(jìn)行對(duì)比,得出結(jié)論。
μc/Os-Ⅱ的就緒表設(shè)置、清除、查找算法,是高效的、跨平臺(tái)的程序。它使用了兩個(gè)查找數(shù)組OSMapTbl[8]和OSUnMapTbl[256],以提高查找就緒表的速度,盡快獲取就緒任務(wù)的最高優(yōu)先級(jí)。
多窗口顯示屏控制采用μC/OS-II實(shí)時(shí)操作系統(tǒng)的多任務(wù)管理運(yùn)行模式,各窗口視頻數(shù)據(jù)由線程管理,Nios II 32位處理器作為顯示屏控制器硬件系統(tǒng)的核心,軟件系統(tǒng)控制多窗口任意顯示。在1片F(xiàn)PGA上實(shí)現(xiàn)顯示屏控制器的硬件系統(tǒng),利用SOPC Builder軟件定制系統(tǒng)所需的IP核,外擴(kuò)存儲(chǔ)設(shè)備實(shí)現(xiàn)視頻數(shù)據(jù)的海量存儲(chǔ),解決了FPGA內(nèi)部資源相對(duì)不足的問題。通過(guò)重構(gòu)視頻數(shù)據(jù),合理組織數(shù)據(jù)的存儲(chǔ)方式,解決視頻數(shù)據(jù)的灰度控制問題,減少數(shù)據(jù)處理過(guò)程,降低了控制系統(tǒng)的復(fù)雜度。
本文的創(chuàng)新之處在于針對(duì)μC/OSII在內(nèi)存管理可靠性不高、內(nèi)存塊分配不夠靈活的特點(diǎn),借鑒Buddy算法思想,對(duì)其進(jìn)行改進(jìn),形成了一種基于Buddy算法思想、高可靠性的內(nèi)存管理策略。實(shí)驗(yàn)表明,新方案一次創(chuàng)建內(nèi)存區(qū),即可滿足內(nèi)存塊大小需求不均勻的場(chǎng)合,既提高內(nèi)存分配的靈活性,避免了大量?jī)?nèi)碎片的產(chǎn)生,又增強(qiáng)了內(nèi)存分配的可靠性。因此,新方案在可靠性要求高的嵌入式系統(tǒng)中可以得到更好的應(yīng)用。
筆者將以μC/OS-II實(shí)時(shí)內(nèi)核為例,通過(guò)對(duì)μC/OS-II的改進(jìn),向讀者描述一種縮短實(shí)時(shí)操作系統(tǒng)中斷關(guān)閉時(shí)間的方法。之所以選擇μC/OS-II,一是因?yàn)樽x者容易獲得相關(guān)代碼,國(guó)內(nèi)很多讀者也對(duì)μC/OS-II有一定程度的了解;二是因?yàn)槠渥陨斫Y(jié)構(gòu)簡(jiǎn)單,適合運(yùn)用于低檔嵌入式處理器,關(guān)中斷時(shí)間的問題更加突出。低檔嵌入式處理器的處理速度慢,在關(guān)中斷時(shí)間里處理相同的軟件代碼,花費(fèi)的時(shí)間更長(zhǎng),相對(duì)地延長(zhǎng)了關(guān)中斷時(shí)間,這時(shí)盡量從軟件著手解決關(guān)中斷時(shí)間的問題。
μC/OS-II實(shí)時(shí)操作系統(tǒng)是開放源代碼且得到實(shí)際驗(yàn)證的軟件平臺(tái),而S3C44BOx具有強(qiáng)大的32位RISC性能,基于此軟件及硬件平臺(tái)對(duì)GPRS模塊進(jìn)行設(shè)計(jì),能大量減輕研發(fā)任務(wù),提高研發(fā)速度,為在短時(shí)間內(nèi)實(shí)現(xiàn)GPRS終端系統(tǒng)設(shè)計(jì)創(chuàng)造良好條件。
uCOS II移植跟OS_CUP_C.C、OS_CPU_A.S、OS_CPU.H 3個(gè)文件有關(guān),中斷處理的移植占據(jù)了很大一部分內(nèi)容。作為移植的一個(gè)重點(diǎn),本文以標(biāo)準(zhǔn)中斷(IRQ)為例討論了移植中的中斷處理。
μC/OS是Jean J.Labrosse開發(fā)的實(shí)時(shí)多任務(wù)內(nèi)核,最初是為Motorola 8位處理器68HC11寫的。在后來(lái)的相關(guān)著作中,作者將代碼移植到了PC上,以便于更多的讀者學(xué)習(xí)。μC/OSII繼承了μC/OS的算法,有執(zhí)行效率高、占用空間小、實(shí)時(shí)性強(qiáng)和可擴(kuò)展性好等特點(diǎn),被移植到幾乎所有類型的CPU上,成為在嵌入式領(lǐng)域非常有影響力的RTOS。然而,由于該實(shí)時(shí)內(nèi)核是為8位CPU設(shè)計(jì)的,對(duì)于那些具有優(yōu)先級(jí)算法硬件指令的CPU,僅做移植是很不夠的。
多任務(wù)的時(shí)間片調(diào)度在嵌入式領(lǐng)域有實(shí)用價(jià)值。一方面是很多嵌入式軟件系統(tǒng)升級(jí)有這種需求,舊的軟件模塊基于Endless?。蹋铮铮饘?shí)現(xiàn),升級(jí)到μC/OS-II后,若要最大限度地復(fù)用舊的軟件模塊,時(shí)間片調(diào)度算法是實(shí)現(xiàn)舊的設(shè)計(jì)模式到新架構(gòu)之間最簡(jiǎn)單的橋梁。另一方面,對(duì)于控制領(lǐng)域,存在大量的耗時(shí)任務(wù)無(wú)法自動(dòng)釋放控制權(quán),時(shí)間片調(diào)度降低了任務(wù)
多窗口顯示屏控制采用μC/OSII實(shí)時(shí)操作系統(tǒng)的多任務(wù)管理運(yùn)行模式,各窗口視頻數(shù)據(jù)由線程管理,Nios II 32位處理器作為顯示屏控制器硬件系統(tǒng)的核心,軟件系統(tǒng)控制多窗口任意顯示。在1片F(xiàn)PGA上實(shí)現(xiàn)顯示屏控制器的硬件系統(tǒng),利用SOPC Builder軟件定制系統(tǒng)所需的IP核,外擴(kuò)存儲(chǔ)設(shè)備實(shí)現(xiàn)視頻數(shù)據(jù)的海量存儲(chǔ),解決了FPGA內(nèi)部資源相
憑借uC/OSⅡ靈活的任務(wù)間通信的能力,采用消息郵箱Mbox從數(shù)據(jù)生成任務(wù)中將打印數(shù)據(jù)傳送給打印任務(wù)。在不同任務(wù)中,將暫時(shí)不需要工作的任務(wù)掛起,而將需要工作的任務(wù)恢復(fù)運(yùn)行,圓滿地實(shí)現(xiàn)了三維打印的快速、精確控制。
隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,嵌入式科技得到更為廣泛的應(yīng)用,其中FPGA和嵌入式操作系統(tǒng)的組合前景良好,它們的應(yīng)用極大的改變了嵌入式開發(fā)的效率。為使得Nios II軟核和RTEMS嵌入式系統(tǒng)相結(jié)合,首先介紹了Nios II的軟件開發(fā)環(huán)境,然后詳細(xì)闡述如何在Nios II平臺(tái)下搭建RTEMS嵌入式開發(fā)環(huán)境。
本文介紹了抽油電機(jī)變頻器變結(jié)構(gòu)控制系統(tǒng)功能原理,如何利用uC/OS-II的多任務(wù)功能實(shí)現(xiàn)控制系統(tǒng)的算法結(jié)構(gòu)變換,操作系統(tǒng)的移植、多任務(wù)的建立和SDK下的軟件設(shè)計(jì),最后總結(jié)了