精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

嵌入式軟件開發常用的三種架構

jf_EksNQtU6 ? 來源:CSDN-an520_ ? 2023-11-21 10:10 ? 次閱讀

對于單片機程序來說,大家都不陌生,但是真正使用架構,考慮架構的恐怕并不多,隨著程序開發的不斷增多,架構是非常必要的。

一、時間片輪詢法

介于前后臺順序執行法和操作系統之間的一種程序架構設計方案。

該設計方案需能幫助嵌入式軟件開發者更上一層樓,在嵌入式軟件開發過程中,若遇到以下幾點,那么該設計方案可以說是最優選擇,適用于程序較復雜的嵌入式系統

目前的需求設計需要完全沒有必要上操作系統。

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

實時性有一定的要求。

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

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

以下介紹兩種不同的實現方案,分別針對無函數指針概念的朋友和想進一步學習的朋友。

1、無函數指針的設計方式

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

2、含函數指針的設計方式

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

二、操作系統

嵌入式操作系統EOS(Embedded OperatingSystem)是一種用途廣泛的系統軟件,過去它主要應用于工業控制和國防系統領域。

對于單片機來說,比較常用的有UCOSFreeRTOSRT-Thread Nano和RTX 等多種搶占式操作系統(其他如Linux等操作系統不適用于單片機)

操作系統和“時間片輪詢法”,在任務執行方面來說,操作系統對每個任務的耗時沒有過多的要求,需要通過設置每個任務的優先級,在高優先級的任務就緒時,會搶占低優先級的任務;操作系統相對復雜,因此這里不詳細介紹了。

關于如何選擇合適的操作系統(uCOS、FreeRTOSRTThread、RTX等RTOS的對比之特點:

uCOS:網上資料豐富,非常適合學習,但是在產品上使用則需要收費。

FreeRTOS:使用免費,因此很多產品都在用。

RT-Thread:國產物聯網操作系統,有著十分豐富的組件,也免費,資料:RT-Thread文檔中心

RTX:為ARM和Cortex-M設備設計的免版稅,確定性的實時操作系統。

借網上一張對比圖:

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

三、前后臺順序執行法

這是初學者們常用的程序框架設計方案,不用考慮太多東西,代碼簡單,或者對系統的整體實時性和并發性要求不高;初始化后通過while(1){}或for(;;){}循環不斷調用自己編寫完成的函數,也基本不考慮每個函數執行所需要的時間,大部分情況下函數中或多或少都存在毫秒級別的延時等待。

優點:對于初學者來說,這是最容易也是最直觀的程序架構,邏輯簡單明了,適用于邏輯簡單,復雜度比較低的軟件開發。

缺點:實時性低,由于每個函數或多或少存在毫秒級別的延時,即使是1ms,也會造成其他函數間隔執行時間的不同,雖然可通過定時器中斷的方式,但是前提是中斷執行函數花的時間必須短。當程序邏輯復雜度提升時,會導致后來維護人員的大腦混亂,很難理清楚該程序的運行狀態。

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

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6032

    文章

    44516

    瀏覽量

    633030
  • 程序
    +關注

    關注

    116

    文章

    3777

    瀏覽量

    80851
  • 嵌入式軟件
    +關注

    關注

    4

    文章

    240

    瀏覽量

    26618
  • 代碼
    +關注

    關注

    30

    文章

    4748

    瀏覽量

    68355

原文標題:嵌入式軟件常用的幾種代碼架構

文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    單片機開發常用三種軟件架構

    嵌入式系統的軟件架構是構建可靠嵌入式應用程序的關鍵。本文將探討單片機開發常用
    發表于 09-13 09:25 ?3092次閱讀

    嵌入式軟件開發中的程序架構

    單片機軟件開發的初期大多數開發者采用的都是簡單的前后臺順序執行架構。在嵌入式軟件開發中,程序架構
    發表于 02-02 06:58

    不容錯過的嵌入式軟件開發經驗分享

    該內容是工作一年來通過上網或其他方式不斷搜索、實踐、總結出來的嵌入式軟件開發經驗(本文僅適用于單片機的裸機開發),希望能幫到正在學習這方面的朋友,如有不好的地方,請多多見諒;在嵌入式
    發表于 10-28 09:55

    常見嵌入式開發程序架構是什么

    單片機軟件開發的初期大多數開發者采用的都是簡單的前后臺順序執行架構(我就是這樣的)。在嵌入式軟件開發中,程序
    發表于 02-14 06:37

    什么是嵌入式軟件開發

    嵌入式軟件開發又是指什么?   隨著嵌入式軟件系統結構越來越復雜,嵌入式軟件
    發表于 04-20 08:43 ?8756次閱讀

    ARM嵌入式軟件開發

    ARM嵌入式軟件開發ARM嵌入式軟件開發ARM嵌入式軟件開發
    發表于 01-15 17:29 ?64次下載

    關于嵌入式Linux軟件開發常用知識

    C語言是嵌入式軟件開發的基礎,c佳佳在嵌入式領域也有一定的份額,但是很少,所以我們如果要做嵌入式軟件開發,就得熟練掌握c語言語法。
    發表于 08-26 17:11 ?1441次閱讀

    嵌入式開發常用軟件架構

    單片機軟件開發的初期大多數開發者采用的都是簡單的前后臺順序執行架構(我就是這樣的)。在嵌入式軟件開發中,程序
    的頭像 發表于 01-01 10:16 ?5537次閱讀
    <b class='flag-5'>嵌入式開發</b>中<b class='flag-5'>常用</b>的<b class='flag-5'>軟件</b><b class='flag-5'>架構</b>

    嵌入式軟件開發三種程序架構

    嵌入式或單片機軟件開發的初期大多數開發者采用的都是簡單的前后臺順序執行架構。在嵌入式軟件開發中,
    的頭像 發表于 02-11 10:19 ?2316次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開發</b>中<b class='flag-5'>三種</b>程序<b class='flag-5'>架構</b>

    嵌入式開發中要用的三種程序架構~

    或單片機軟件開發的初期大多數開發者采用的都是簡單的前后臺順序執行架構。在嵌入式軟件開發中,程序架構
    發表于 01-22 08:27 ?12次下載
    <b class='flag-5'>嵌入式開發</b>中要用的<b class='flag-5'>三種</b>程序<b class='flag-5'>架構</b>~

    嵌入式軟件開發三種程序架構詳解

    單片機軟件開發的初期大多數開發者采用的都是簡單的前后臺順序執行架構(我就是這樣的)。在嵌入式軟件開發中,程序
    的頭像 發表于 09-05 09:53 ?3745次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開發</b><b class='flag-5'>三種</b>程序<b class='flag-5'>架構</b>詳解

    嵌入式開發軟件架構存在的意義

    嵌入式或單片機軟件開發的初期大多數開發者采用的都是簡單的前后臺順序執行架構(我就是這樣的)。在嵌入式軟件
    的頭像 發表于 09-08 09:18 ?2359次閱讀
    <b class='flag-5'>嵌入式開發</b>中<b class='flag-5'>軟件</b><b class='flag-5'>架構</b>存在的意義

    嵌入式開發|嵌入式軟件框架《一》常用軟件框架介紹與選擇

    嵌入式或單片機軟件開發的初期大多數開發者采用的都是簡單的前后臺順序執行架構嵌入式軟件開發中,程
    發表于 10-20 19:20 ?7次下載
    <b class='flag-5'>嵌入式開發</b>|<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>框架《一》<b class='flag-5'>常用</b>的<b class='flag-5'>軟件</b>框架介紹與選擇

    嵌入式軟件開發之程序架構(一)

    該內容是工作一年來通過上網或其他方式不斷搜索、實踐、總結出來的嵌入式軟件開發經驗(本文僅適用于單片機的裸機開發),希望能幫到正在學習這方面的朋友,如有不好的地方,請多多見諒;在嵌入式
    發表于 10-20 20:36 ?9次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開發</b>之程序<b class='flag-5'>架構</b>(一)

    三種常見嵌入式開發程序架構

    單片機軟件開發的初期大多數開發者采用的都是簡單的前后臺順序執行架構(我就是這樣的)。在嵌入式軟件開發中,程序
    發表于 12-08 20:36 ?14次下載
    <b class='flag-5'>三種</b>常見<b class='flag-5'>嵌入式開發</b>程序<b class='flag-5'>架構</b>