衡阳派盒市场营销有限公司

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

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

3天內不再提示

嵌入式常用的軟件框架介紹與選擇

GReq_mcu168 ? 來源:CSDN ? 作者:CSDN ? 2022-03-12 09:33 ? 次閱讀

1、前言

嵌入式軟件開發,包括單片機開發中,軟件架構對于開發人員是一個必須認真考慮的問題。軟件架構對于系統整體的穩定性和可靠性是非常重要的,一個合適的軟件架構不僅結構清晰,并且便于開發。

我相信在嵌入式單片機軟件開發的初期大多數開發者采用的都是簡單的前后臺順序執行架構

在嵌入式軟件開發中,程序架構主要分為三種,本篇文章將對這三種程序架構做出詳解。

2、軟件架構存在的意義

可以說一個好的程序架構,是一個有經驗的工程師和一個初學者的分水嶺。

軟件架構對于開發人員是友好的,你希望先執行什么任務后執行什么任務,或者這一個時間點執行什么任務下一個執行什么任務,又或者什么事件會同步到某個任務等等,在不同的軟件架構下,解決上述問題的具體方法都是有所區別的。

軟件架構對開發者最大的幫助是:

幫助開發者掌控整個工程的框架,當你熟練使用其中某一個程序架構后,對于系統中出現的bug你一定能夠快速的定位并解決。

當然,我建議要根據需要選擇合適的軟件架構進行開發,具體原因在文章后面會進行介紹。

3、介紹三種程序架構

三種常用的軟件架構有:順序執行的前后臺系統、時間片輪詢系統和多任務操作系統

為了讓大家有一個更為清晰的認識,我分別用三種軟件架構對一個實例進行介紹說明。這個實例如下:

它有4個任務,這4個任務為按鍵掃描、聲光報警、顯示屏刷新和超聲波測距。這個實例的具體功能是通過按鍵設置測量距離的閾值,當測距距離低于設置的閾值時,觸發聲光報警并且將測量距離實時顯示在顯示屏上(這個應用是汽車倒車雷達的具體體現)。

3.1 順序執行的前后臺系統

在順序執行的前后臺系統中,我會把鍵盤掃描用查詢的方式放在while(1)中,而顯示屏刷新和超聲波測距使用中斷,在中斷服務函數中獲取測量距離后進行顯示,在主函數的循環中進行按鍵的檢測,聲光處理也放在主循環中。

這樣整個程序就以變量標志的同步方式在主循環和后臺中斷中執行,對應的程序代碼如圖所示:

0d83b6dc-9fb2-11ec-952b-dac502259ad0.png

0d99c0d0-9fb2-11ec-952b-dac502259ad0.png

這種架構的優點是使用簡單易于理解,而缺點是每個任務所占的CPU時間過長的話,會導致程序的實時性能差,就比如按鍵的檢測等。

3.2 時間片輪詢系統和多任務操作系統

時間片輪詢法實際上通常出現在操作系統中,也就是說他屬于操作系統,但在這里所說的是基于前后臺系統的時間片輪詢。

時間片輪詢法的實質其實就是選出一個定時器,沒進一次定時中斷對計數值進行自加,在主循環中根據這個計數值執行任務,這個計數值也就是任務輪詢的時間片。

在這個實例中,如果采用時間片輪詢系統的話,首先選用主控芯片的任一定時器,定時器定時時間周期由我們決定,為了保證實時性和運行效率,這個值通常取10ms、30ms、50ms等,我會將按鍵掃描輪值值設置為20ms,因為按鍵抖動的時長一般為20ms,這樣處理既達到了消抖的目的,又不會漏掉按鍵的檢測;而顯示屏的刷新設置為30ms,如果你覺得刷新反應慢了也可以修改這一輪詢值得到改善;

而超聲波測距的輪詢值設置為100ms,即每隔100模式觸發測距一次,這個測距頻率已經能夠滿足大多數的情況了。

程序代碼如下:

0daaa31e-9fb2-11ec-952b-dac502259ad0.png

0dbdf9b4-9fb2-11ec-952b-dac502259ad0.png

可以看出時間片輪詢法相比順序執行還是有很大優勢的,既有順序執行法的優點,也有操作系統的部分優點。

3.3 多任務操作系統

操作系統的本身是一個比較復雜的東西,任務的管理和調度實現的底層是很復雜和困難的。但是呢,我們一般都是把操作系統本身作為一個工具一個平臺,我們的目的是使用它的功能而不是開發一個操作系統。

我使用過ucosfreertos小型的實時操作系統,也使用過Linux大型的操作系統,有了操作系統,不管是對于程序的穩定性和開發的效率都會好很多。我們在使用操作系統的時候更多的需要去學習和理解它的一些調度和通信的方式。

實際上真正能使用操作系統的人并不多,反而是跑裸機的占大多數,這也和產品的具體要求有關,很多簡單的系統只需要裸機即可滿足。

在這里本我不過多的介紹操作系統本身,因為操作系統確實挺復雜的,下面圖例中的代碼是在freertos中創建按鍵控制LED亮滅的程序結構,大家可以對比一下:

0dd78df2-9fb2-11ec-952b-dac502259ad0.png

0df1a9da-9fb2-11ec-952b-dac502259ad0.png

4、系統框架選擇

0e1c1a9e-9fb2-11ec-952b-dac502259ad0.png

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

    關注

    5092

    文章

    19177

    瀏覽量

    307653
  • 軟件
    +關注

    關注

    69

    文章

    5009

    瀏覽量

    88067

原文標題:嵌入式常用的軟件框架介紹與選擇

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    怎么選擇合適的嵌入式設計軟件

    選擇嵌入式設計的軟件時,你需要進行以下五點考量,沒有最好的,只有最合適的。
    發表于 05-06 09:41 ?1486次閱讀

    嵌入式框架

    1.overview 圖1-1 嵌入式框架嵌入式系統分為硬件以及軟件兩大部分,大多數人參與的是嵌入式
    發表于 10-27 08:26

    cola os程序框架介紹

    系列文章目錄嵌入式開發|嵌入式軟件框架《一》常用軟件框架
    發表于 11-08 08:17

    使用C++構建嵌入式開發框架

    框架作為一種大粒度的重用技術在桌面軟件開發中得到了廣泛應用,而在嵌入式開發領域,目前還沒有一套完整的標準框架可供使用。本文以通信領域的嵌入式
    發表于 05-15 15:42 ?12次下載

    嵌入式Linux軟件測試框架的研究

    嵌入式Linux 軟件是最難測試的一類軟件。在測試過程中通過使用有效的測試框架,可以顯著提高測試效率,最終確保軟件質量。通過對
    發表于 06-07 17:14 ?29次下載

    嵌入式軟件建立統一框架方法的研究

    介紹嵌入式系統軟件的特點#說明要建立統一嵌入式軟件系統框架的原因,指出
    發表于 11-07 16:02 ?27次下載

    嵌入式應用框架EAF詳解

    EAF是Embedded Application Framework 的縮寫,即嵌入式應用框架嵌入式應用框架是 Application framework的一種, 是在
    發表于 12-02 11:30 ?2913次閱讀

    關于嵌入式應用框架(EAF)的分析

    EAF是Embedded Application Framework 的縮寫,即嵌入式應用框架嵌入式應用框架是 Application framework的一種, 是在
    發表于 01-01 09:50 ?1564次閱讀

    嵌入式開發中常用的工具軟件

    嵌入式開發中那些常用的工具軟件
    的頭像 發表于 01-14 17:00 ?1.4w次閱讀

    嵌入式軟件是什么意思_嵌入式軟件的分類有哪些

    本文首先闡述了嵌入式軟件的概念,其次介紹嵌入式軟件的特征,最后介紹
    發表于 08-31 15:54 ?1.6w次閱讀

    嵌入式軟件的開發流程_嵌入式軟件的調試

    本文首先介紹嵌入式軟件的發展,其次闡述了嵌入式軟件的開發流程,最后介紹
    發表于 08-31 16:02 ?6354次閱讀

    嵌入式系統框架----硬件篇

    1.系統框架圖對于一個嵌入式系統,最重要的當然是運算以及存儲單元,基本的嵌入式系統可以簡化成如下系統框架圖:
    發表于 10-20 11:51 ?3次下載
    <b class='flag-5'>嵌入式</b>系統<b class='flag-5'>框架</b>----硬件篇

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

    1、前言在嵌入式軟件開發,包括單片機開發中,軟件架構對于開發人員是一個必須認真考慮的問題。軟件架構對于系統整體的穩定性和可靠性是非常重要的,一個合適的
    發表于 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>的<b class='flag-5'>軟件</b><b class='flag-5'>框架</b><b class='flag-5'>介紹</b>與<b class='flag-5'>選擇</b>

    嵌入式系統框架----軟件

    1.overview 圖1-1 嵌入式框架嵌入式系統分為硬件以及軟件兩大部分,大多數人參與的是
    發表于 10-20 19:21 ?5次下載
    <b class='flag-5'>嵌入式</b>系統<b class='flag-5'>框架</b>----<b class='flag-5'>軟件</b>篇

    嵌入式開發|嵌入式軟件框架《二》前后臺任務框架-cola os系統

    系列文章目錄嵌入式開發|嵌入式軟件框架《一》常用軟件框架
    發表于 11-03 13:51 ?18次下載
    <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>-cola os系統
    钱隆百家乐分析| 爱拼百家乐现金网| 火箭百家乐的玩法技巧和规则| 最新百家乐官网游戏机| 百家乐官网玩法最多的娱乐城| 免邮百家乐布桌| 百家乐官网娱乐平台真人娱乐平台 | 百家乐官网视频游戏网站| 顶尖百家乐的玩法技巧和规则| 百家乐官网投注方法网| 百家乐群lookcc| 娱乐城百家乐官网的玩法技巧和规则| E世博开户| 百家乐真钱在线| 百家乐官网赌博在线娱乐| 德州扑克游戏| 百家乐投注怎么样| 澳门百家乐官网网上直赌| 大发888游戏平台 送1688元礼金领取lrm| 基础百家乐官网博牌规| 百家乐官网视频游戏中心| bodog博狗| 大发888手机版亚洲城| 真人百家乐试玩账号| 百家乐官网赢钱公式1| 城市| 大发888更名网址622| 百家乐群html| 百家乐视频无法显示| 淘金盈娱乐| 太阳城会员| 百家乐公开| 安阳百家乐赌博| 百家乐官网群必胜打朽法| 百家乐官网网络赌博地址| 六合彩资料| 网上真钱娱乐| 大发888投注鸿博博彩| 百家乐在线娱乐平台| 太阳城百家乐坡解| 24山64卦分金|