日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

前言
單片機(jī)開(kāi)發(fā)中,我們往往首先接觸裸機(jī)系統(tǒng),然后到RTOS,那么它們的軟件架構(gòu)是什么?這是我們開(kāi)發(fā)人員必須認(rèn)真考慮的問(wèn)題。在實(shí)際項(xiàng)目中,首先選擇軟件架構(gòu)是非常重要的,接下來(lái)我們淺談一下我們單片機(jī)開(kāi)發(fā)中,有哪些程序架構(gòu)。
一.裸機(jī)系統(tǒng)

1.輪詢系統(tǒng)
輪詢系統(tǒng)是 MCU中最簡(jiǎn)單的入門系統(tǒng),它的程序結(jié)構(gòu)是通常只需要一個(gè)While(1)或for(;;)死循環(huán)來(lái)實(shí)現(xiàn):

int main(void)

{

while(1)

{

//事務(wù)1

//......

//事務(wù)n

}

return0;

}

 


這種程序架構(gòu)就是不斷循環(huán),那么這種程序架構(gòu)的缺點(diǎn)是非常的明顯的—實(shí)時(shí)性差,因?yàn)槲覀兊木帉懙拇a都是順序的執(zhí)行,如果事務(wù)1和事務(wù)2之間有一個(gè)延時(shí)函數(shù),那么處理事務(wù)2必須等待延時(shí)時(shí)間到來(lái)才可以執(zhí)行相應(yīng)的代碼。
例如下面的動(dòng)畫(huà)顯示:

嵌入式程序架構(gòu)--你了解多少?

 


所有的事務(wù)都是順序的執(zhí)行的。
2.前后臺(tái)系統(tǒng)
這種系統(tǒng)可稱為前后臺(tái)系統(tǒng)或超循環(huán)系統(tǒng)(Super-Loops)。應(yīng)用程序是一個(gè)無(wú)限的循環(huán),循環(huán)中調(diào)用相應(yīng)的函數(shù)完成相應(yīng)的操作,這部分可以看成后臺(tái)行為(background)。中斷服務(wù)程序處理異步事件,這部分可以看成前臺(tái)行為(foreground)。后臺(tái)也可以叫做任務(wù)級(jí)。前臺(tái)也叫中斷級(jí)。
前后臺(tái)系統(tǒng)在輪詢系統(tǒng)中,增加了中斷 機(jī)制。中斷機(jī)制可以打斷 MCU目前正在執(zhí)行的程序,而執(zhí)行另外一段程序,這段程序稱為中斷程序,當(dāng)中斷程序執(zhí)行完成,再回到原先位置,如以下源碼所示:

int main(void)

{

while(1)

{

事務(wù)1;

事務(wù)2;

事務(wù)3;

......

}

return0;

}

//中斷服務(wù)函數(shù)

void interrupt_event(void)

{

事務(wù)4; //語(yǔ)句4

return0;

}

 


前后臺(tái)系統(tǒng)與輪詢系統(tǒng)相比,其中一個(gè)明顯優(yōu)點(diǎn)是可以實(shí)時(shí)響應(yīng)外部輸入、中斷是可以嵌套的,即是當(dāng)發(fā)生一個(gè)中斷時(shí),MCU開(kāi)始執(zhí)行中斷相關(guān)代碼,此時(shí)一個(gè)優(yōu)先級(jí)更高的中斷發(fā)生,MCU將轉(zhuǎn)向執(zhí)行另一個(gè)更高優(yōu)先級(jí)的中斷。
例如下面的動(dòng)畫(huà)顯示:

嵌入式程序架構(gòu)--你了解多少?

 


二.RTOS操作系統(tǒng)
1.時(shí)間片輪轉(zhuǎn)調(diào)度
時(shí)間片輪詢法實(shí)際上通常出現(xiàn)在操作系統(tǒng)中,也就是說(shuō)它屬于操作系統(tǒng),每個(gè)進(jìn)程被分配一個(gè)時(shí)間段,稱作它的時(shí)間片,即該進(jìn)程允許運(yùn)行的時(shí)間。如果在時(shí)間片結(jié)束時(shí)進(jìn)程還在運(yùn)行,則CPU將被剝奪并分配給另一個(gè)進(jìn)程。如以下源碼所示:
注意:任務(wù)是有優(yōu)先級(jí)的,同等優(yōu)先級(jí)下的任務(wù)才可以使用時(shí)間片輪轉(zhuǎn)調(diào)度。

void task1(void)

{

while(1)

{

事務(wù)1;

}

}



void task2(void)

{

while(1)

{

事務(wù)2;

}

}


例如下面的動(dòng)畫(huà)顯示:

嵌入式程序架構(gòu)--你了解多少?

 



2.搶占式系統(tǒng)
RTOS的內(nèi)核負(fù)責(zé)管理所有的任務(wù),內(nèi)核決定了運(yùn)行哪個(gè)任務(wù),何時(shí)停止當(dāng)前任務(wù)切換到其他任務(wù),這個(gè)是內(nèi)核的多任務(wù)管理能力。多任務(wù)管理給人的感覺(jué)就好像芯片有多個(gè)CPU,多任務(wù)管理實(shí)現(xiàn)了CPU資源的最大化利用,多任務(wù)管理有助于實(shí)現(xiàn)程序的模塊化開(kāi)發(fā),能夠?qū)崿F(xiàn)復(fù)雜的實(shí)時(shí)應(yīng)用。中斷能打斷所有任務(wù)。

嵌入式程序架構(gòu)--你了解多少?

 


三.如何選擇合適的程序架構(gòu)
對(duì)于上述講解的程序架構(gòu),我們?cè)撊绾芜x擇呢,首先根據(jù)自己的項(xiàng)目以及MCU兩個(gè)方面考慮。
項(xiàng)目選擇分析:我們的產(chǎn)品是否要求實(shí)時(shí)性非常好的產(chǎn)品,如果實(shí)時(shí)性非常好的產(chǎn)品,小編建議使用RTOS作為實(shí)時(shí)系統(tǒng)例如UCOSIII、FreeRTOS等操作系統(tǒng),如果我們單單制作功能特別少的,例如汽車的智能鑰匙,就是負(fù)責(zé)汽車的開(kāi)鎖,關(guān)閉等特別少的功能,比較適合選擇前后臺(tái)系統(tǒng),
如果我們的項(xiàng)目是關(guān)于物聯(lián)網(wǎng)領(lǐng)域的,小編建議使用RT-Thread以及OneOS等相關(guān)物聯(lián)網(wǎng)操作系統(tǒng),因?yàn)樵摬僮飨到y(tǒng)不需要我們編寫相關(guān)的設(shè)備驅(qū)動(dòng)以及移植網(wǎng)絡(luò)協(xié)議,直接調(diào)用相關(guān)API函數(shù)即可。
MCU選擇分析:首先我們選擇的主控芯片有關(guān),如果我們選擇一款flash以及SRAM非常小型的MCU,那么移植RTOS可能比較吃力了,目前FreeRTOS操作系統(tǒng)最低需要3k到5k內(nèi)存。

分享到:
標(biāo)簽:架構(gòu)
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定