在底層代碼編寫中,初始的框架設(shè)計總會面臨選擇,針對實(shí)際的硬件使用環(huán)境,大家對于使用的軟件框架有很多選擇,今天我簡單描述一些比較常用的架構(gòu),讓大家能夠理解并選擇合適的架構(gòu)。
1. 簡單的順序執(zhí)行程序:這類寫法是大多數(shù)人使用的方法,不需用思考程序的具體架構(gòu),直接按照執(zhí)行順序編寫應(yīng)用程序即可。
2.前后臺執(zhí)行程序:在順序執(zhí)行的情況上增添中斷前臺處理機(jī)制,配置順序執(zhí)行的后臺大循環(huán)程序,組合成可以實(shí)時響應(yīng)的程序。
3. 時間片輪循法:在前后臺的執(zhí)行架構(gòu)上,通過計數(shù)器進(jìn)一步規(guī)劃程序,定時執(zhí)行特定的片段。
4. 實(shí)時操作系統(tǒng):實(shí)時操作系統(tǒng)又叫RTOS,實(shí)時性,RTOS的內(nèi)核負(fù)責(zé)管理所有的任務(wù),內(nèi)核決定了運(yùn)行哪個任務(wù),何時停止當(dāng)前任務(wù)切換到其 他任務(wù),這個是內(nèi)核的多任務(wù)管理能力。多任務(wù) 管理給人的感覺就好像芯片有多個CPU,多任務(wù)管理實(shí)現(xiàn)了CPU資源的最大化利用,多任務(wù)管理有助于實(shí)現(xiàn)程序的模塊化開發(fā),能夠?qū)崿F(xiàn)復(fù)雜的實(shí)時應(yīng)用。除了實(shí)時性,還有可剝奪內(nèi)核,顧名思義就是可以剝奪其他任務(wù)的CPU使用權(quán),它總是運(yùn)行就緒任務(wù)中的優(yōu)先級最高的那個任務(wù)。
1.簡單的順序執(zhí)行程序
2.前后臺執(zhí)行程序
這種程序特點(diǎn)是,后臺大循環(huán)中一直執(zhí)行默認(rèn)的程序,中斷服務(wù)程序(ISR)產(chǎn)生相應(yīng)中斷標(biāo)記,主程序運(yùn)行與中斷標(biāo)記相關(guān)聯(lián)的任務(wù)程序。一般實(shí)現(xiàn)有如下思路:
通過設(shè)置標(biāo)志變量,然后在前臺響應(yīng)中斷的時候進(jìn)行對標(biāo)志變量的置位或者復(fù)位,實(shí)現(xiàn)事件的信號獲取,再在后臺主循環(huán)進(jìn)行中斷所對應(yīng)事物或者數(shù)據(jù)的處理,將程序流程轉(zhuǎn)移到主程序。
3.時間片輪循架構(gòu)
時間片輪循法,大家看到它的時候,一般會將它與操作系統(tǒng)進(jìn)行比較。不是說操作系統(tǒng)包含這種方法,而是在前后臺程序中配合時間管理形成時間片輪循架構(gòu)。
這種架構(gòu)已經(jīng)最大限度接近RTOS,時間管理,中斷管理,任務(wù)管理,已經(jīng)都有了,只不過RTOS會對內(nèi)核進(jìn)行更深入的修改,有針對delay延時的線程切換,搶占式任務(wù)切換這些更為復(fù)雜一些的功能等。
時間片輪循程序
時間片管理主要是通過對定時多處復(fù)用,在定時器計數(shù),定時進(jìn)行標(biāo)志位的變化,繼而主程序?qū)?biāo)志真假的判斷,實(shí)現(xiàn)不同時間不同任務(wù)狀態(tài)執(zhí)行。
因?yàn)榇思軜?gòu)代碼比較好,我適當(dāng)進(jìn)行詳細(xì)描述。
1:初始化相應(yīng)的定時器:注意設(shè)置定時器的間隔頻率,可以按照芯片的性能設(shè)置。例如,設(shè)置定時中斷為1ms,也可以設(shè)置為10ms,輪循架構(gòu)中的定時器部分與操作系統(tǒng)的定時器部分具有一樣的功能,中斷過于頻繁,影響主程的序執(zhí)行效率;中斷間隔過長,實(shí)時響應(yīng)效果差。
2:針對定時器運(yùn)行的任務(wù)設(shè)置一個函數(shù)結(jié)構(gòu)體標(biāo)志,用來在定時程序進(jìn)行時間計數(shù)以及標(biāo)志操作。
4:定時中斷服務(wù)函數(shù),按照我們需要的時間以及標(biāo)志操作進(jìn)行計時。
5:主函數(shù)進(jìn)行任務(wù)函數(shù)執(zhí)行。
4.操作系統(tǒng)RTOS
嵌入式操作系統(tǒng)是更加優(yōu)化的執(zhí)行框架,針對多任務(wù),功能復(fù)雜,擴(kuò)展性要求強(qiáng)項目的代碼有非常好的使用。RTOS是針對不同處理器優(yōu)化設(shè)計的高效率實(shí)時多任務(wù)內(nèi)核,RTOS可以面對幾十個系列的嵌入式處理器MPU、MCU、DSP、SOC等提供類同的API接口,這是RTOS基于設(shè)備獨(dú)立的應(yīng)用程序開發(fā)基礎(chǔ)。因此,基于RTOS的C語言程序具有極大的可移植性。目前針對微嵌入式或者單片機(jī)的操作系統(tǒng)有VxWorks、UCOS、Free RTOS、國產(chǎn)的RTT,這些操作系統(tǒng)大同小異,基本的功能都類似:任務(wù)管理、任務(wù)間同步和通信、內(nèi)存管理、實(shí)時時鐘服務(wù)、中斷管理服務(wù)。