在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

嵌入式開發(fā)中的三種程序構架

jf_BxU6dNQb ? 來源:混說Linux ? 2023-02-02 10:10 ? 次閱讀

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

我相信在嵌入式單片機軟件開發(fā)的初期大多數開發(fā)者采用的都是簡單的前后臺順序執(zhí)行架構(我就是這樣的)。

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

1、軟件架構存在的意義

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

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

軟件架構對開發(fā)者最大的幫助是:

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

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

2、深入介紹三種不同的程序架構

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

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

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

2.1 順序執(zhí)行的前后臺系統在順序執(zhí)行的前后臺系統中,我會把鍵盤掃描用查詢的方式放在while(1)中,而顯示屏刷新和超聲波測距使用中斷,在中斷服務函數中獲取測量距離后進行顯示,在主函數的循環(huán)中進行按鍵的檢測,聲光處理也放在主循環(huán)中。這樣整個程序就以變量標志的同步方式在主循環(huán)和后臺中斷中執(zhí)行,對應的程序代碼如圖所示:

9c56aeb6-a29d-11ed-bfe3-dac502259ad0.png

▲ 順序執(zhí)行前后臺系統的主函數

9c6b13e2-a29d-11ed-bfe3-dac502259ad0.png

▲ 順序執(zhí)行前后臺系統的中斷服務函數

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

2.2 時間片輪詢系統

時間片輪詢法實際上通常出現在操作系統中,也就是說他屬于操作系統,但在這里所說的是基于前后臺系統的時間片輪詢。時間片輪詢法的實質其實就是選出一個定時器,沒進一次定時中斷對計數值進行自加,在主循環(huán)中根據這個計數值執(zhí)行任務,這個計數值也就是任務輪詢的時間片。

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

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

程序代碼如下:

9c84ccec-a29d-11ed-bfe3-dac502259ad0.png

▲ 時間片輪詢的系統函數

9c9df44c-a29d-11ed-bfe3-dac502259ad0.png

▲ 時間片輪詢系統的定時器中斷函數

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

2.3 多任務操作系統

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

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

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

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

9cb5df3a-a29d-11ed-bfe3-dac502259ad0.png

▲ freertos多任務系統中主函數

9cdd4a48-a29d-11ed-bfe3-dac502259ad0.png

▲ freertos多任務操作系統中的任務回調函數

3、如何選擇合適的軟件架構

我使用過多種不同MCU做項目開發(fā),例如:STM32、STC15、新唐等,也接觸過復雜的設計需求,例如:車載智能系統和智能家居,跑過操作系統ucos、freertos和Linux等等,在回到裸機開發(fā)時,就會不然而然的去思考完整系統的軟件架構的設計問題,相信在讀者中開發(fā)裸機的也占大多數。

我認為沒有最好的軟件架構(程序架構),而是只有最合適的。因為在不同的應用場景中適合采用不同的程序設計,而單純的去比較哪種程序架構是最好的沒有什么實際的意義。

那接下來我們來對具體的應用場景進行分析,在一些邏輯清晰功能單一的系統中就很適合選擇順序執(zhí)行的前后臺架構,這個軟件架構往往能夠滿足我們大部分的需求,比如電飯煲、電磁爐和聲控燈泡等;

而在一些資源缺乏的單片機并且對系統可靠性要求較高的情況下非常適合,因為這種方法的系統耗費比較小,只是犧牲了一個定時器而已,但是選擇此種程序架構需要我們對時間片進行深思熟慮的劃分;

最后,在一些功能復雜,邏輯控制較為困難的系統中就適合選擇多任務操作系統,比如視頻監(jiān)控系統、無人機等等應用場景。

作為一名嵌入式軟件工程師,掌握這三種軟件架構是非常有必要的,它們可以讓我們在設計程序時擁有更多的選擇和思考,而每一種不同的程序架構都具備它自己的優(yōu)勢與不足,這需要我們去用心實踐方可體會到它的奧妙。

審核編輯 :李倩

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

    關注

    146

    文章

    17704

    瀏覽量

    357919
  • 嵌入式開發(fā)

    關注

    18

    文章

    1064

    瀏覽量

    48330
  • 軟件架構
    +關注

    關注

    0

    文章

    64

    瀏覽量

    10436

原文標題:嵌入式開發(fā)中的三種程序構架

文章出處:【微信號:混說Linux,微信公眾號:混說Linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    LwIP協議棧開發(fā)嵌入式網絡的三種方法有何關系

    LwIP協議棧開發(fā)嵌入式網絡的三種方法分析 輕量級的TCP/IP協議棧LwIP,提供了三種應用程序設計方法,且很容易被移植到多任務的操作系統
    發(fā)表于 08-05 07:55

    基于ARM的嵌入式開發(fā)

    基于ARM的嵌入式開發(fā):華清遠見/孫天澤基于ARM的嵌入式開發(fā)內容有:ARM簡介,基于ARM的嵌入式產品,ARM架構,基于ARM的嵌入式開發(fā)
    發(fā)表于 10-04 08:49 ?83次下載

    邏輯分析儀在嵌入式開發(fā)調試的應用

    嵌入式開發(fā)調試開發(fā)人員的調試手段包括斷點、觸發(fā)和跟蹤三種。在線調試器(I(、I))與邏輯分析儀(IA)協調工作,為調試新一代嵌入式處理器
    發(fā)表于 11-07 15:58 ?33次下載
    邏輯分析儀在<b class='flag-5'>嵌入式開發(fā)</b>調試<b class='flag-5'>中</b>的應用

    嵌入式開發(fā)

    嵌入式開發(fā)就是指在嵌入式操作系統下進行開發(fā)嵌入式Linux是以Linux為基礎的嵌入式作業(yè)系統。這里提供了
    發(fā)表于 12-20 13:21
    <b class='flag-5'>嵌入式開發(fā)</b>

    嵌入式開發(fā)的產品有哪些_嵌入式開發(fā)的流程

    本文主要闡述了嵌入式開發(fā)的產品,其次介紹了嵌入式開發(fā)的流程。
    發(fā)表于 08-31 15:38 ?1.1w次閱讀

    嵌入式軟件開發(fā)三種程序架構

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

    嵌入式開發(fā)要用的三種程序架構~

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

    嵌入式軟件開發(fā)三種程序架構詳解

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

    嵌入式開發(fā)(一):嵌入式開發(fā)新手入門

    嵌入式開發(fā)環(huán)境及交叉編譯環(huán)境,開發(fā)完成后,編譯得到bin文件,然后在Windows下將bin文件通過串口或網絡下發(fā)到嵌入式板卡,程序嵌入式
    發(fā)表于 10-14 10:58 ?79次下載
    <b class='flag-5'>嵌入式開發(fā)</b>(一):<b class='flag-5'>嵌入式開發(fā)</b>新手入門

    嵌入式開發(fā)資料免費分享

    嵌入式開發(fā)資料免費分享嵌入式工程師經驗分享:如何學習嵌入式開發(fā)截取文檔部分學習嵌入式工程師經驗分享的資料分享給大家,文檔上從、嵌入式系統的概
    發(fā)表于 10-21 11:07 ?47次下載
    <b class='flag-5'>嵌入式開發(fā)</b>資料免費分享

    嵌入式開發(fā)Linux入門

    嵌入式開發(fā)導語嵌入式基礎概念交叉開發(fā)和自助開發(fā)嵌入式開發(fā)相關術語1.開發(fā)計算機(又名:主計算機)
    發(fā)表于 11-02 14:36 ?31次下載
    <b class='flag-5'>嵌入式開發(fā)</b>Linux入門

    三種常見嵌入式開發(fā)程序架構

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

    嵌入式開發(fā)做常用的三種程序構架

    嵌入式軟件開發(fā),包括單片機開發(fā),軟件架構對于開發(fā)人員是一個必須認真考慮的問題。軟件架構對于系統整體的穩(wěn)定性和可靠性是非常重要的,一個合適
    的頭像 發(fā)表于 02-13 10:20 ?772次閱讀
    <b class='flag-5'>嵌入式開發(fā)</b><b class='flag-5'>中</b>做常用的<b class='flag-5'>三種</b><b class='flag-5'>程序</b><b class='flag-5'>構架</b>

    Linux系統的嵌入式開發(fā)是什么

    嵌入式開發(fā)聽起來很高大上,但其實它就在我們身邊。   嵌入式開發(fā)是指將操作系統、應用程序或數據存儲在嵌入式設備,如手機、平板電腦、智
    的頭像 發(fā)表于 10-12 15:40 ?2070次閱讀

    嵌入式Linux開發(fā)三種方式

    嵌入式Linux開發(fā)主要有三種方式:裸機開發(fā)、SDK開發(fā)和驅動開發(fā)。
    的頭像 發(fā)表于 01-22 14:22 ?1195次閱讀
    主站蜘蛛池模板: 特级毛片免费视频观看 | 日韩在线一区视频 | 国产精品资源手机在线播放 | 午夜在线视频观看版 | 奇米888在线看奇米999 | 免费一级毛片清高播放 | 亚洲精品在线免费观看视频 | 亚洲免费看片 | 99久久精品费精品国产一区二 | 全是肉的高h短篇列车 | xxxxxx性| 国产高清色视频免费看的网址 | 久久精品男人影院 | 丁香婷婷视频 | 久久综合欧美成人 | 男人搡女人视频免费看 | 久久午夜宅男免费网站 | 黄色日本视频网站 | 久青草国产手机在线观 | 日本资源在线 | 天堂网在线最新版www | www激情com| 三级四级特黄在线观看 | 亚洲加勒比在线 | 91中文字幕在线视频 | 国产精品福利午夜一级毛片 | 午夜女同影院 | 性夜影院爽黄e爽在线观看 羞羞色院91精品网站 | 国产hs免费高清在线观看 | 中文字幕在线观看日剧网 | 波多野结衣久久国产精品 | 免费看欧美一级片 | 国产美女动态免费视频 | 性大特级毛片视频 | 一区二区三区在线免费 | 最新版资源在线天堂 | 在线精品91青草国产在线观看 | 一区二区中文字幕亚洲精品 | 美女国产视频 | 国产精品久久久久国产精品三级 | 韩国三级hd中文字幕好大 |