色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

GReq_mcu168 ? 來源:嵌入式在左C語言在右 ? 作者:嵌入式在左C語言在 ? 2021-09-05 09:53 ? 次閱讀

嵌入式軟件開發,包括單片機開發中,軟件架構對于開發人員是一個必須認真考慮的問題。

軟件架構對于系統整體的穩定性和可靠性是非常重要的,一個合適的軟件架構不僅結構清晰,并且便于開發。

我相信在嵌入式單片機軟件開發的初期大多數開發者采用的都是簡單的前后臺順序執行架構(我就是這樣的)。在嵌入式軟件開發中,程序架構主要分為三種,本篇文章將對這三種程序架構做出詳解。

1、軟件架構存在的意義

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

軟件架構對開發者最大的幫助是:幫助開發者掌控整個工程的框架,當你熟練使用其中某一個程序架構后,對于系統中出現的bug你一定能夠快速的定位并解決。當然,我建議要根據需要選擇合適的軟件架構進行開發,具體原因在文章后面會進行介紹。

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

三種常用的軟件架構有:順序執行的前后臺系統、時間片輪詢系統和多任務操作系統。為了讓大家有一個更為清晰的認識,我分別用三種軟件架構對一個實例進行介紹說明。這個實例如下:它有4個任務,這4個任務為按鍵掃描、聲光報警、顯示屏刷新和超聲波測距。這個實例的具體功能是通過按鍵設置測量距離的閾值,當測距距離低于設置的閾值時,觸發聲光報警并且將測量距離實時顯示在顯示屏上(這個應用是汽車倒車雷達的具體體現)。

2.1順序執行的前后臺系統

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

577adc22-0db1-11ec-8fb8-12bb97331649.jpg

順序執行前后臺系統的主函數

578a28e4-0db1-11ec-8fb8-12bb97331649.jpg

順序執行前后臺系統的中斷服務函數

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

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

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

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

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

而顯示屏的刷新設置為30ms,如果你覺得刷新反應慢了也可以修改這一輪詢值得到改善;而超聲波測距的輪詢值設置為100ms,即每隔100模式觸發測距一次,這個測距頻率已經能夠滿足大多數的情況了。

程序代碼如下:

5797edd0-0db1-11ec-8fb8-12bb97331649.jpg

時間片輪詢系統的主函數

57a2ab9e-0db1-11ec-8fb8-12bb97331649.jpg

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

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

2.3 多任務操作系統

操作系統的本身是一個比較復雜的東西,任務的管理和調度實現的底層是很復雜和困難的。

但是,我們一般都是把操作系統本身作為一個工具一個平臺,我們的目的是使用它的功能而不是開發一個操作系統。

我使用過ucosfreertos小型的實時操作系統,也使用過Linux大型的操作系統,有了操作系統,不管是對于程序的穩定性和開發的效率都會好很多。

我們在使用操作系統的時候更多的需要去學習和理解它的一些調度和通信的方式。

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

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

57bedd0a-0db1-11ec-8fb8-12bb97331649.jpg

freertos多任務系統中主函數

57ec53c0-0db1-11ec-8fb8-12bb97331649.jpg

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

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

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

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

那接下來我們來對具體的應用場景進行分析;

在一些邏輯清晰功能單一的系統中就很適合選擇順序執行的前后臺架構,這個軟件架構往往能夠滿足我們大部分的需求,比如電飯煲、電磁爐和聲控燈泡等;

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

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

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

來源:嵌入式在左C語言在右
鏈接:https://www.toutiao.com/i6804446207872598539/

責任編輯:haq

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

    關注

    6042

    文章

    44617

    瀏覽量

    637483
  • 嵌入式
    +關注

    關注

    5090

    文章

    19173

    瀏覽量

    306844
  • 操作系統
    +關注

    關注

    37

    文章

    6882

    瀏覽量

    123582

原文標題:太棒了!這幾個嵌入式程序架構很好用

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

收藏 人收藏

    評論

    相關推薦

    嵌入式軟件開發符合ISO 26262 功能安全標準

    )的符合性呢?現在,您可以通過 “如何遵守 ISO 26262 標準 ”白皮書在 ISO 26262 合規性方面搶占先機。了解如何以最佳方式加快嵌入式軟件開發符合
    發表于 01-15 12:04 ?1次下載

    一文了解嵌入式軟件開發的對象

    以前應用場景很單一,嵌入式開發可能談不上面向對象開發。但現在,做嵌入式開發,沒有面向對象開發,你就有點落伍了。 本文結合個人經驗和周立功《抽象接口技術和組件
    的頭像 發表于 11-15 10:31 ?401次閱讀
    一文了解<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開發</b>的對象

    【「嵌入式Hypervisor:架構、原理與應用」閱讀體驗】+ 了解Hypervisor

    個字,由于近些年一直從事嵌入式產品開發,因此才主動申請測評,幸運選中,甚感榮幸。今天才開始研讀,主要想知道這個Hypervisor是什么,和嵌入式有什么關系,能
    發表于 10-13 16:47

    你認為嵌入式軟件開發的盡頭是什么?

    嵌入式軟件開發的“盡頭”是一個富有哲理且多維度的概念,因為它不僅關乎技術發展的極限,還涉及到行業應用、市場需求、技術融合與創新等多個方面。從幾個不同的視角來看
    的頭像 發表于 09-18 09:42 ?498次閱讀
    你認為<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開發</b>的盡頭是什么?

    EsDA,一站嵌入式軟件

    ,旨在提高嵌入式軟件開發的效率、性能和可擴展性。EsDA全稱是嵌入式系統設計自動化,它是一個由AWorksLP、AWStudio、AXPI、AWTK、ZWS等多種軟件
    的頭像 發表于 09-15 08:10 ?333次閱讀
    EsDA,一站<b class='flag-5'>式</b><b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>

    嵌入式開發常用軟件有哪些?

    嵌入式開發常用軟件有哪些? 對于初學嵌入式的朋友們,會想要了解嵌入式軟件開發常用的軟件有些,有什
    發表于 09-09 15:22

    嵌入式系統中的實時操作系統

    嵌入式RTOS是嵌入式應用程序運行、相互交互和與外界通信的底層軟件機制。在本節中,您將了解嵌入式軟件開發
    的頭像 發表于 08-20 11:28 ?531次閱讀

    節點、跨平臺開發,AWFlow讓嵌入式開發變得更簡單

    國產化趨勢對嵌入式軟件開發構成挑戰,導致軟件移植和適配需求激增,影響開發效率。AWFlow軟件通過節點化和跨平臺
    的頭像 發表于 08-02 08:25 ?410次閱讀
    節點<b class='flag-5'>式</b>、跨平臺<b class='flag-5'>開發</b>,AWFlow讓<b class='flag-5'>嵌入式開發</b>變得更簡單

    嵌入式軟件開發與AI整合

    嵌入式軟件開發與AI整合是當前技術發展的重要趨勢之一。隨著人工智能技術的快速發展,嵌入式系統越來越多地集成了AI算法,以實現更復雜的智能功能。以下是關于嵌入式
    的頭像 發表于 07-31 09:25 ?786次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開發</b>與AI整合

    嵌入式軟件開發招聘

    本帖最后由 jf_19082533 于 2024-7-26 13:56 編輯 尋求:嵌入式軟件工程師 要求:3年以上開發經驗,音視頻領域應用層開發 地址:北京市昌平區 郵箱:10
    發表于 07-26 13:44

    嵌入式系統怎么學?

    人類社會朝著更加智能、便利、高效的方向發展。在未來,嵌入式軟件開發人員也需要不斷學習和適應新技術,以滿足不斷變化的市場需求。
    發表于 07-02 10:10

    嵌入式開發者的未來

    和測試這些產品的硬件和軟件。汽車行業:現代汽車包含大量的嵌入式系統,例如車載娛樂系統、發動機控制單元、自動駕駛系統等。在這個領域,工程師可以從事嵌入式軟件開發、系統集
    的頭像 發表于 06-23 08:10 ?417次閱讀
    <b class='flag-5'>嵌入式開發</b>者的未來

    AMD Vitis? Embedded嵌入式軟件開發套件的功能和特性概述

    Vitis Embedded 是一款獨立的嵌入式軟件開發套件,主要用于為 AMD 自適應 SoC 和 FPGA 中的 AMD 嵌入式處理子系統(基于 ARM 的子系統和 AMD MicroBlaze)
    的頭像 發表于 04-08 10:50 ?971次閱讀
    AMD Vitis? Embedded<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開發</b>套件的功能和特性概述

    嵌入式軟件設計的原則分享

    嵌入式軟件開發如果具有更好的閱讀性、擴展性以及維護性,就需要考慮很多因素。今天給大家分享幾個嵌入式軟件設計的原則。
    發表于 02-25 10:54 ?740次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>設計的原則分享

    嵌入式軟件開發應該掌握哪些知識?

    嵌入式軟件開發應該掌握哪些知識? 一、 什么是嵌入式軟件嵌入式軟件通常是指
    發表于 02-19 11:23
    主站蜘蛛池模板: 羞羞影院午夜男女爽爽影院网站| 扒开老师粉嫩的泬10P| 国产一区二区无码蜜芽精品 | 91精品国产色综合久久| 欧美无码专区| 国产人妻人伦精品1国产| 樱桃视频高清免费观看在线播放| 欧美激情视频二区| 国产亚洲tv在线观看| 最新中文字幕在线视频| 日韩一区二区三区射精| 久久AV亚洲精品一区无码网| MMM日本兽交| 亚洲精品第二页| 女的把腿张开男的往里面插| 国产精品国产三级国产专区53| 一区二区三区毛AAAA片特级| 日本美国群交P片内射捆绑| 僵尸女av| 俄罗斯XBXBXB兽交| 尤物久久99国产综合精品| 日韩精品无码免费专区| 久久成人亚洲| 国产精品99AV在线观看| 91羞羞视频| 亚洲免费视频日本一区二区| 琪琪色原网20岁以下热热色原网站| 花蝴蝶在线观看免费8| 成人在线不卡视频| 中文字幕a有搜索网站| 特级做A爰片毛片免费69| 美女医生深夜在家裸睡惨死| 国产曰韩无码亚洲视频| xlxx美女| 116美女写真午夜电影z| 侮辱丰满美丽的人妻| 强开乳罩摸双乳吃奶视频| 久久中文字幕免费视频| 国产又黄又粗又爽又色的视频软件 | 丫鬟粗大狠狠贯穿h| 欧洲亚洲精品A片久久99果冻|