一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式軟件開(kāi)發(fā)常用的三種架構(gòu)

jf_EksNQtU6 ? 來(lái)源:CSDN-an520_ ? 2023-11-21 10:10 ? 次閱讀

對(duì)于單片機(jī)程序來(lái)說(shuō),大家都不陌生,但是真正使用架構(gòu),考慮架構(gòu)的恐怕并不多,隨著程序開(kāi)發(fā)的不斷增多,架構(gòu)是非常必要的。

一、時(shí)間片輪詢(xún)法

介于前后臺(tái)順序執(zhí)行法和操作系統(tǒng)之間的一種程序架構(gòu)設(shè)計(jì)方案。

該設(shè)計(jì)方案需能幫助嵌入式軟件開(kāi)發(fā)者更上一層樓,在嵌入式軟件開(kāi)發(fā)過(guò)程中,若遇到以下幾點(diǎn),那么該設(shè)計(jì)方案可以說(shuō)是最優(yōu)選擇,適用于程序較復(fù)雜的嵌入式系統(tǒng);

目前的需求設(shè)計(jì)需要完全沒(méi)有必要上操作系統(tǒng)。

任務(wù)函數(shù)無(wú)需時(shí)刻執(zhí)行,存在間隔時(shí)間(比如按鍵,一般情況下,都需要軟件防抖,初學(xué)者的做法通常是延時(shí)10ms左右再去判斷,但10ms極大浪費(fèi)了CPU的資源,在這段時(shí)間內(nèi)CPU完全可以處理很多其他事情)

實(shí)時(shí)性有一定的要求。

該設(shè)計(jì)方案需要使用一個(gè)定時(shí)器,一般情況下定時(shí)1ms即可(定時(shí)時(shí)間可隨意定,但中斷過(guò)于頻繁效率就低,中斷太長(zhǎng),實(shí)時(shí)性差),因此需要考慮到每個(gè)任務(wù)函數(shù)的執(zhí)行時(shí)間,建議不能超過(guò)1ms(能通過(guò)程序優(yōu)化縮短執(zhí)行時(shí)間則最好優(yōu)化,如果不能優(yōu)化的,則必須保證該任務(wù)的執(zhí)行周期必須遠(yuǎn)大于任務(wù)所執(zhí)行的耗時(shí)時(shí)間),同時(shí)要求主循環(huán)或任務(wù)函數(shù)中不能存在毫秒級(jí)別的延時(shí)。

ae5fd5a4-8809-11ee-939d-92fbcf53809c.png

以下介紹兩種不同的實(shí)現(xiàn)方案,分別針對(duì)無(wú)函數(shù)指針概念的朋友和想進(jìn)一步學(xué)習(xí)的朋友。

1、無(wú)函數(shù)指針的設(shè)計(jì)方式

ae8f6292-8809-11ee-939d-92fbcf53809c.pngaec00992-8809-11ee-939d-92fbcf53809c.pngaec00992-8809-11ee-939d-92fbcf53809c.pngaf1dd158-8809-11ee-939d-92fbcf53809c.png

2、含函數(shù)指針的設(shè)計(jì)方式

af4f9120-8809-11ee-939d-92fbcf53809c.pngafa34b9e-8809-11ee-939d-92fbcf53809c.pngafddc9ae-8809-11ee-939d-92fbcf53809c.pngb013adc6-8809-11ee-939d-92fbcf53809c.png

二、操作系統(tǒng)

嵌入式操作系統(tǒng)EOS(Embedded OperatingSystem)是一種用途廣泛的系統(tǒng)軟件,過(guò)去它主要應(yīng)用于工業(yè)控制和國(guó)防系統(tǒng)領(lǐng)域。

對(duì)于單片機(jī)來(lái)說(shuō),比較常用的有UCOS、FreeRTOS、RT-Thread Nano和RTX 等多種搶占式操作系統(tǒng)(其他如Linux等操作系統(tǒng)不適用于單片機(jī))

操作系統(tǒng)和“時(shí)間片輪詢(xún)法”,在任務(wù)執(zhí)行方面來(lái)說(shuō),操作系統(tǒng)對(duì)每個(gè)任務(wù)的耗時(shí)沒(méi)有過(guò)多的要求,需要通過(guò)設(shè)置每個(gè)任務(wù)的優(yōu)先級(jí),在高優(yōu)先級(jí)的任務(wù)就緒時(shí),會(huì)搶占低優(yōu)先級(jí)的任務(wù);操作系統(tǒng)相對(duì)復(fù)雜,因此這里不詳細(xì)介紹了。

關(guān)于如何選擇合適的操作系統(tǒng)(uCOS、FreeRTOSRTThread、RTX等RTOS的對(duì)比之特點(diǎn):

uCOS:網(wǎng)上資料豐富,非常適合學(xué)習(xí),但是在產(chǎn)品上使用則需要收費(fèi)。

FreeRTOS:使用免費(fèi),因此很多產(chǎn)品都在用。

RT-Thread:國(guó)產(chǎn)物聯(lián)網(wǎng)操作系統(tǒng),有著十分豐富的組件,也免費(fèi),資料:RT-Thread文檔中心

RTX:為ARM和Cortex-M設(shè)備設(shè)計(jì)的免版稅,確定性的實(shí)時(shí)操作系統(tǒng)。

借網(wǎng)上一張對(duì)比圖:

b0461720-8809-11ee-939d-92fbcf53809c.png

三、前后臺(tái)順序執(zhí)行法

這是初學(xué)者們常用的程序框架設(shè)計(jì)方案,不用考慮太多東西,代碼簡(jiǎn)單,或者對(duì)系統(tǒng)的整體實(shí)時(shí)性和并發(fā)性要求不高;初始化后通過(guò)while(1){}或for(;;){}循環(huán)不斷調(diào)用自己編寫(xiě)完成的函數(shù),也基本不考慮每個(gè)函數(shù)執(zhí)行所需要的時(shí)間,大部分情況下函數(shù)中或多或少都存在毫秒級(jí)別的延時(shí)等待。

優(yōu)點(diǎn):對(duì)于初學(xué)者來(lái)說(shuō),這是最容易也是最直觀的程序架構(gòu),邏輯簡(jiǎn)單明了,適用于邏輯簡(jiǎn)單,復(fù)雜度比較低的軟件開(kāi)發(fā)。

缺點(diǎn):實(shí)時(shí)性低,由于每個(gè)函數(shù)或多或少存在毫秒級(jí)別的延時(shí),即使是1ms,也會(huì)造成其他函數(shù)間隔執(zhí)行時(shí)間的不同,雖然可通過(guò)定時(shí)器中斷的方式,但是前提是中斷執(zhí)行函數(shù)花的時(shí)間必須短。當(dāng)程序邏輯復(fù)雜度提升時(shí),會(huì)導(dǎo)致后來(lái)維護(hù)人員的大腦混亂,很難理清楚該程序的運(yùn)行狀態(tài)。

b0b380bc-8809-11ee-939d-92fbcf53809c.pngb0d41840-8809-11ee-939d-92fbcf53809c.pngb0f4d616-8809-11ee-939d-92fbcf53809c.pngb12106b4-8809-11ee-939d-92fbcf53809c.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6058

    文章

    44822

    瀏覽量

    644856
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3817

    瀏覽量

    82180
  • 嵌入式軟件
    +關(guān)注

    關(guān)注

    4

    文章

    244

    瀏覽量

    27083
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4880

    瀏覽量

    70025

原文標(biāo)題:嵌入式軟件常用的幾種代碼架構(gòu)

文章出處:【微信號(hào):談思實(shí)驗(yàn)室,微信公眾號(hào):談思實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    單片機(jī)開(kāi)發(fā)常用三種軟件架構(gòu)

    嵌入式系統(tǒng)的軟件架構(gòu)是構(gòu)建可靠嵌入式應(yīng)用程序的關(guān)鍵。本文將探討單片機(jī)開(kāi)發(fā)常用
    發(fā)表于 09-13 09:25 ?3897次閱讀

    嵌入式軟件開(kāi)發(fā)中的程序架構(gòu)

    單片機(jī)軟件開(kāi)發(fā)的初期大多數(shù)開(kāi)發(fā)者采用的都是簡(jiǎn)單的前后臺(tái)順序執(zhí)行架構(gòu)。在嵌入式軟件開(kāi)發(fā)中,程序架構(gòu)
    發(fā)表于 02-02 06:58

    不容錯(cuò)過(guò)的嵌入式軟件開(kāi)發(fā)經(jīng)驗(yàn)分享

    該內(nèi)容是工作一年來(lái)通過(guò)上網(wǎng)或其他方式不斷搜索、實(shí)踐、總結(jié)出來(lái)的嵌入式軟件開(kāi)發(fā)經(jīng)驗(yàn)(本文僅適用于單片機(jī)的裸機(jī)開(kāi)發(fā)),希望能幫到正在學(xué)習(xí)這方面的朋友,如有不好的地方,請(qǐng)多多見(jiàn)諒;在嵌入式
    發(fā)表于 10-28 09:55

    常見(jiàn)嵌入式開(kāi)發(fā)程序架構(gòu)是什么

    單片機(jī)軟件開(kāi)發(fā)的初期大多數(shù)開(kāi)發(fā)者采用的都是簡(jiǎn)單的前后臺(tái)順序執(zhí)行架構(gòu)(我就是這樣的)。在嵌入式軟件開(kāi)發(fā)中,程序
    發(fā)表于 02-14 06:37

    什么是嵌入式軟件開(kāi)發(fā)

    嵌入式軟件開(kāi)發(fā)又是指什么?   隨著嵌入式軟件系統(tǒng)結(jié)構(gòu)越來(lái)越復(fù)雜,嵌入式軟件
    發(fā)表于 04-20 08:43 ?8867次閱讀

    ARM嵌入式軟件開(kāi)發(fā)

    ARM嵌入式軟件開(kāi)發(fā)ARM嵌入式軟件開(kāi)發(fā)ARM嵌入式軟件開(kāi)發(fā)
    發(fā)表于 01-15 17:29 ?65次下載

    關(guān)于嵌入式Linux軟件開(kāi)發(fā)常用知識(shí)

    C語(yǔ)言是嵌入式軟件開(kāi)發(fā)的基礎(chǔ),c佳佳在嵌入式領(lǐng)域也有一定的份額,但是很少,所以我們?nèi)绻?b class='flag-5'>嵌入式軟件開(kāi)發(fā),就得熟練掌握c語(yǔ)言語(yǔ)法。
    發(fā)表于 08-26 17:11 ?1559次閱讀

    嵌入式開(kāi)發(fā)常用軟件架構(gòu)

    單片機(jī)軟件開(kāi)發(fā)的初期大多數(shù)開(kāi)發(fā)者采用的都是簡(jiǎn)單的前后臺(tái)順序執(zhí)行架構(gòu)(我就是這樣的)。在嵌入式軟件開(kāi)發(fā)中,程序
    的頭像 發(fā)表于 01-01 10:16 ?5791次閱讀
    <b class='flag-5'>嵌入式開(kāi)發(fā)</b>中<b class='flag-5'>常用</b>的<b class='flag-5'>軟件</b><b class='flag-5'>架構(gòu)</b>

    嵌入式軟件開(kāi)發(fā)三種程序架構(gòu)

    嵌入式或單片機(jī)軟件開(kāi)發(fā)的初期大多數(shù)開(kāi)發(fā)者采用的都是簡(jiǎn)單的前后臺(tái)順序執(zhí)行架構(gòu)。在嵌入式軟件開(kāi)發(fā)中,
    的頭像 發(fā)表于 02-11 10:19 ?2462次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開(kāi)發(fā)</b>中<b class='flag-5'>三種</b>程序<b class='flag-5'>架構(gòu)</b>

    嵌入式開(kāi)發(fā)中要用的三種程序架構(gòu)~

    或單片機(jī)軟件開(kāi)發(fā)的初期大多數(shù)開(kāi)發(fā)者采用的都是簡(jiǎn)單的前后臺(tái)順序執(zhí)行架構(gòu)。在嵌入式軟件開(kāi)發(fā)中,程序架構(gòu)
    發(fā)表于 01-22 08:27 ?12次下載
    <b class='flag-5'>嵌入式開(kāi)發(fā)</b>中要用的<b class='flag-5'>三種</b>程序<b class='flag-5'>架構(gòu)</b>~

    嵌入式軟件開(kāi)發(fā)三種程序架構(gòu)詳解

    單片機(jī)軟件開(kāi)發(fā)的初期大多數(shù)開(kāi)發(fā)者采用的都是簡(jiǎn)單的前后臺(tái)順序執(zhí)行架構(gòu)(我就是這樣的)。在嵌入式軟件開(kāi)發(fā)中,程序
    的頭像 發(fā)表于 09-05 09:53 ?4066次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開(kāi)發(fā)</b><b class='flag-5'>三種</b>程序<b class='flag-5'>架構(gòu)</b>詳解

    嵌入式開(kāi)發(fā)軟件架構(gòu)存在的意義

    嵌入式或單片機(jī)軟件開(kāi)發(fā)的初期大多數(shù)開(kāi)發(fā)者采用的都是簡(jiǎn)單的前后臺(tái)順序執(zhí)行架構(gòu)(我就是這樣的)。在嵌入式軟件
    的頭像 發(fā)表于 09-08 09:18 ?2523次閱讀
    <b class='flag-5'>嵌入式開(kāi)發(fā)</b>中<b class='flag-5'>軟件</b><b class='flag-5'>架構(gòu)</b>存在的意義

    嵌入式開(kāi)發(fā)|嵌入式軟件框架《一》常用軟件框架介紹與選擇

    嵌入式或單片機(jī)軟件開(kāi)發(fā)的初期大多數(shù)開(kāi)發(fā)者采用的都是簡(jiǎn)單的前后臺(tái)順序執(zhí)行架構(gòu)嵌入式軟件開(kāi)發(fā)中,程
    發(fā)表于 10-20 19:20 ?7次下載
    <b class='flag-5'>嵌入式開(kāi)發(fā)</b>|<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>框架《一》<b class='flag-5'>常用</b>的<b class='flag-5'>軟件</b>框架介紹與選擇

    嵌入式軟件開(kāi)發(fā)之程序架構(gòu)(一)

    該內(nèi)容是工作一年來(lái)通過(guò)上網(wǎng)或其他方式不斷搜索、實(shí)踐、總結(jié)出來(lái)的嵌入式軟件開(kāi)發(fā)經(jīng)驗(yàn)(本文僅適用于單片機(jī)的裸機(jī)開(kāi)發(fā)),希望能幫到正在學(xué)習(xí)這方面的朋友,如有不好的地方,請(qǐng)多多見(jiàn)諒;在嵌入式
    發(fā)表于 10-20 20:36 ?9次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開(kāi)發(fā)</b>之程序<b class='flag-5'>架構(gòu)</b>(一)

    三種常見(jiàn)嵌入式開(kāi)發(fā)程序架構(gòu)

    單片機(jī)軟件開(kāi)發(fā)的初期大多數(shù)開(kāi)發(fā)者采用的都是簡(jiǎn)單的前后臺(tái)順序執(zhí)行架構(gòu)(我就是這樣的)。在嵌入式軟件開(kāi)發(fā)中,程序
    發(fā)表于 12-08 20:36 ?14次下載
    <b class='flag-5'>三種</b>常見(jiàn)<b class='flag-5'>嵌入式開(kāi)發(fā)</b>程序<b class='flag-5'>架構(gòu)</b>