侯文賓
摘 要:搶占式實(shí)時(shí)嵌入式操作系統(tǒng)由于具有較高的實(shí)時(shí)性,所以應(yīng)用范圍更廣。而采用單片機(jī)作為系統(tǒng)內(nèi)核,則能進(jìn)一步加強(qiáng)系統(tǒng)控制,以提高系統(tǒng)任務(wù)調(diào)度實(shí)現(xiàn)的實(shí)時(shí)性?;谶@種認(rèn)識(shí),本文在明確系統(tǒng)設(shè)計(jì)目標(biāo)的基礎(chǔ)上,設(shè)計(jì)了一種基于單片機(jī)的搶占式實(shí)時(shí)嵌入式操作系統(tǒng)。
關(guān)鍵詞:搶占式實(shí)時(shí)嵌入式操作系統(tǒng);80C51單片機(jī);中斷處理
搶占式實(shí)時(shí)嵌入式操作系統(tǒng)能夠在任務(wù)得到CPU時(shí)間時(shí)第一時(shí)間進(jìn)行CPU的完全霸占,能夠更好的把握系統(tǒng)控制權(quán),從而使任務(wù)得到迅速完成。所以相較于非搶占式操作系統(tǒng),該種系統(tǒng)能夠更好的滿足應(yīng)用的實(shí)時(shí)性要求,能夠在工業(yè)生產(chǎn)等領(lǐng)域得到較好的應(yīng)用。因此,還應(yīng)加強(qiáng)搶占式實(shí)時(shí)嵌入式操作系統(tǒng)設(shè)計(jì)研究,從而更好的完成該類系統(tǒng)的開(kāi)發(fā)。
1 基于單片機(jī)的搶占式實(shí)時(shí)嵌入式操作系統(tǒng)設(shè)計(jì)目標(biāo)
基于單片機(jī)的搶占式實(shí)時(shí)嵌入式操作系統(tǒng)設(shè)計(jì),首先還要滿足實(shí)時(shí)性要求。進(jìn)行這樣的系統(tǒng)設(shè)計(jì),需要將系統(tǒng)調(diào)用設(shè)計(jì)為可重入,以確保關(guān)鍵數(shù)據(jù)訪問(wèn)能夠在臨界區(qū)得到實(shí)現(xiàn)。而系統(tǒng)的調(diào)用不會(huì)被別的任務(wù)打斷,所以想要避免關(guān)鍵任務(wù)的執(zhí)行被延遲,還要采取合理的調(diào)度策略。針對(duì)任務(wù)間耦合度低的系統(tǒng),可以進(jìn)行單一速率調(diào)度算法的使用,完成靜態(tài)優(yōu)先級(jí)的設(shè)置,根據(jù)任務(wù)周期確定最高優(yōu)先級(jí)。針對(duì)任務(wù)耦合度較高的系統(tǒng),還要采取期限最近優(yōu)先調(diào)度策略,根據(jù)最后期限順序完成優(yōu)先級(jí)的動(dòng)態(tài)設(shè)置。
2 基于單片機(jī)的搶占式實(shí)時(shí)嵌入式操作系統(tǒng)設(shè)計(jì)實(shí)施
在實(shí)際進(jìn)行基于單片機(jī)的搶占式實(shí)時(shí)嵌入式操作系統(tǒng)設(shè)計(jì)時(shí),在完成合適單片機(jī)選擇后,還要完成系統(tǒng)的模塊化設(shè)計(jì),即完成中斷處理模塊、任務(wù)調(diào)用實(shí)現(xiàn)模塊和任務(wù)通訊等模塊的設(shè)計(jì)。
2.1 系統(tǒng)單片機(jī)選擇
在設(shè)計(jì)系統(tǒng)時(shí),考慮到系統(tǒng)任務(wù)數(shù)在510s范圍內(nèi),且規(guī)模較小,擁有較高的可靠性和安全性要求,并需要保證數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性,因此還要選用80C51單片機(jī)。該單片機(jī)由Intel公司開(kāi)發(fā),內(nèi)部擁有乘、除、減、比較等指令,并能實(shí)現(xiàn)布爾代數(shù)運(yùn)算等運(yùn)算,包含5個(gè)中斷源。此外,單片機(jī)擁有128Byte的RAM及4K的ROM,并擁有兩個(gè)16位定時(shí)計(jì)數(shù)器和4個(gè)8位并行輸入口,能夠滿足系統(tǒng)時(shí)間精度要求。在各模塊設(shè)計(jì)上,采用該單片機(jī)可以直接利用匯編語(yǔ)言完成編程,并且可以利用實(shí)地址線程完成任務(wù)的管理。
2.2 系統(tǒng)各模塊設(shè)計(jì)
2.2.1 中斷處理模塊設(shè)計(jì)
在系統(tǒng)中斷處理模塊設(shè)計(jì)上,還要將各中斷源設(shè)為優(yōu)先級(jí)較低的部分,以確保中斷能夠得到及時(shí)響應(yīng)。在中斷處理方面,首選需進(jìn)行現(xiàn)場(chǎng)中斷響應(yīng),然后根據(jù)中斷源完成例程ISR選擇,最后進(jìn)行任務(wù)驅(qū)動(dòng)。利用reenter,可實(shí)現(xiàn)嵌套層次的記錄。在每次利用reenter時(shí),還要進(jìn)行加1處理,并在退出中斷時(shí)進(jìn)行減1。在reenter=0的情況下,代表所有處理已經(jīng)結(jié)束,可進(jìn)行任務(wù)的調(diào)度。利用ISR,可進(jìn)行中斷源分析,并直接完成急迫和簡(jiǎn)單事件處理。如果遇到復(fù)雜事件,則需要交由其他對(duì)應(yīng)任務(wù)[1]。在系統(tǒng)任務(wù)推出內(nèi)核時(shí),堆棧指針則會(huì)指向current線程,從而完成任務(wù)調(diào)度。通過(guò)中斷處理,可以使任務(wù)的優(yōu)先級(jí)得到改變。利用current,則能完成最高優(yōu)先級(jí)的設(shè)置。
2.2.2 任務(wù)調(diào)用實(shí)現(xiàn)模塊設(shè)計(jì)
在任務(wù)調(diào)用實(shí)現(xiàn)模塊設(shè)計(jì)上,還要采取線程方式實(shí)現(xiàn)任務(wù)管理。在系統(tǒng)內(nèi)核中,需完成全局變量區(qū)域的設(shè)置,以實(shí)現(xiàn)線程共享。而從線程組成上來(lái)看,則包含可執(zhí)行代碼和任務(wù)控制塊,需利用TCB標(biāo)識(shí)任務(wù)表。該任務(wù)表將被存儲(chǔ)在內(nèi)核的相應(yīng)表格中,能夠?yàn)閿?shù)量為n_tasks的任務(wù)提供支持,該數(shù)值通常在15以下。結(jié)合任務(wù)的狀態(tài)及性質(zhì),可實(shí)現(xiàn)任務(wù)表鏈接。而利用TCB,可以完成任務(wù)硬實(shí)時(shí)和軟實(shí)時(shí)的標(biāo)識(shí),可以利用rt進(jìn)行標(biāo)識(shí)。如果需進(jìn)行中斷事件的處理,需利用ISR完成deadline的調(diào)用,以實(shí)現(xiàn)TASK的充填。在此基礎(chǔ)上,需準(zhǔn)備好state。并完成就緒隊(duì)列的插入。利用TASK,也能完成任務(wù)說(shuō)明的存放。而標(biāo)有p_task的隊(duì)列擁有被記錄的事件,這類事件大多由于發(fā)生過(guò)快而被延期,以免任務(wù)丟失。在中斷退出時(shí),需完成變量設(shè)置,以完成線程獲取。而在這一階段,可以根據(jù)任務(wù)最后期限的順序完成current設(shè)置,并確保硬實(shí)時(shí)優(yōu)先。值得注意的是,運(yùn)行的任務(wù)數(shù)量應(yīng)在10以下,需通過(guò)順鏈查找完成任務(wù)插入,以確保任務(wù)能夠得到實(shí)時(shí)調(diào)用。進(jìn)行任務(wù)切換時(shí),需進(jìn)行定時(shí)器計(jì)時(shí)。而任務(wù)啟動(dòng)后,無(wú)需將線程刪除。在實(shí)際調(diào)度任務(wù)時(shí),需采用EDF,確保系統(tǒng)負(fù)載不超過(guò)最大承受的數(shù)量。如果硬實(shí)時(shí)超出時(shí)限,系統(tǒng)會(huì)觸發(fā)定時(shí)終端,完成異常例程啟動(dòng),需完成安全恢復(fù)操作的設(shè)定才能實(shí)現(xiàn)任務(wù)。此時(shí),在系統(tǒng)入口地址位置,將完成do_error的存放,系統(tǒng)則會(huì)進(jìn)行關(guān)中斷的執(zhí)行。
2.2.3 其他模塊設(shè)計(jì)
在線程之間,可能存在路徑互斥的情況。此時(shí),還要利用關(guān)中斷完成內(nèi)核控制,利用軟鎖進(jìn)行中斷響應(yīng)的提供[2]。而在線程通訊方面,由于缺少用戶地址空間,所以還要實(shí)現(xiàn)線程間信息共享。針對(duì)這一情況,用戶還要加強(qiáng)系統(tǒng)調(diào)用,以提高系統(tǒng)運(yùn)行的安全性。
3 結(jié)論
通過(guò)研究可以發(fā)現(xiàn),在進(jìn)行搶占式實(shí)施嵌入式操作系統(tǒng)設(shè)計(jì)時(shí),還要采用80C51單片機(jī)作為系統(tǒng)內(nèi)核,以滿足系統(tǒng)運(yùn)行的實(shí)時(shí)性要求。在此基礎(chǔ)上,還要做好系統(tǒng)中斷處理、任務(wù)調(diào)用實(shí)現(xiàn)等模塊的設(shè)計(jì),以確保系統(tǒng)能夠滿足實(shí)時(shí)性的應(yīng)用要求。因此,相信本文該系統(tǒng)設(shè)計(jì)問(wèn)題展開(kāi)的分析,能夠?yàn)橄嚓P(guān)工作的開(kāi)展提供參考。
參考文獻(xiàn):
[1]黃強(qiáng),徐偉華,吳一波.基于混合架構(gòu)的嵌入式實(shí)時(shí)操作系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程,2011,37(12):1012.
[2]王帥華,楊東升,王允森,等.基于ARM的Linux實(shí)時(shí)搶占補(bǔ)丁的研究與實(shí)現(xiàn)[J].組合機(jī)床與自動(dòng)化加工技術(shù),2015,(09):14.