當前位置: 妍妍網 > 碼農

嵌入式開發常用的軟體架構!

2024-07-12碼農

來源:

https://blog.csdn.net/an520_/article/details/124877026

對於微控制器程式來說,大家都不陌生,但是真正使用架構,考慮架構的恐怕並不多,隨著程式開發的不斷增多,架構是非常必要的。

一、時間片輪詢法

介於前後台順序執行法和作業系統之間的一種程式架構設計方案。該設計方案需能幫助嵌入式軟體開發者更上一層樓,在嵌入式軟體開發過程中,若遇到以下幾點,那麽該設計方案可以說是最優選擇,適用於程式較復雜的嵌入式系統;

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

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

即時性有一定的要求。

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

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

1、無函式指標的設計方式

2、含函式指標的設計方式

二、作業系統

嵌入式作業系統 EOS(Embedded OperatingSystem)是一種用途廣泛的系統軟體,過去它主要套用於工業控制和國防系統領域,而對於微控制器來說,比較常用的有UCOS、FreeRTOS、 RT-Thread Nano和RTX 等多種搶占式作業系統(其他如Linux等作業系統不適用於微控制器)

作業系統和「時間片輪詢法」,在任務執行方面來說,作業系統對每個任務的耗時沒有過多的要求,需要透過設定每個任務的優先級,在高優先級的任務就緒時,會搶占低優先級的任務;作業系統相對復雜,因此這裏沒有詳細介紹了。ChatGPT中文網站:https://aigc.cxyquan.com

關於如何選擇合適的作業系統(uCOS、FreeRTOS、RTThread、RTX等RTOS的對比之特點:

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

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

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

  • RTX:為ARM和Cortex-M裝置設計的免版稅,確定性的即時作業系統。

  • 借網上一張對比圖:

    三、前後台順序執行法

    這是初學者們常用的程式框架設計方案,不用考慮太多東西,程式碼簡單,或者對系統的整體即時性和並行性要求不高;初始化後透過while(1){}或for(;;){}`迴圈不斷呼叫自己編寫完成的函式,也基本不考慮每個函式執行所需要的時間,大部份情況下函式中或多或少都存在毫秒級別的延時等待。

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

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

    <END>

    點這裏👇關註我,記得標星呀~

    往期精選:

    GPT中文網站

    一次性買了200多個官方Plus會員放在一個系統的池子裏,共享給大家使用 。每月只需要90元,比官方便宜了一半不止,就可以直接使用官方GPT 4.0 ,而且國內網路就可以直接登入 ,不需要額外的上網工具 。

    跟購買官方獨立帳號是完全一樣的:支持GPTs、語音即時聊天功能、聯網功能、上傳檔、數據分析、AI畫圖、圖片辨識、訊息隔離功能等,而且不限次數使用 。


    掃碼可以加我微信,備註:90元GPT

    我會立馬透過微信好友請求 

    感謝你的分享,點贊,在看三