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

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式開發(fā)中軟件架構(gòu)存在的意義

strongerHuang ? 來(lái)源:嵌入式在左c語(yǔ)言在右 ? 作者:嵌入式在左c語(yǔ)言在 ? 2021-09-08 09:18 ? 次閱讀

嵌入式軟件開發(fā),包括單片機(jī)開發(fā)中,軟件架構(gòu)對(duì)于開發(fā)人員是一個(gè)必須認(rèn)真考慮的問(wèn)題。軟件架構(gòu)對(duì)于系統(tǒng)整體的穩(wěn)定性和可靠性是非常重要的,一個(gè)合適的軟件架構(gòu)不僅結(jié)構(gòu)清晰,并且便于開發(fā)、維護(hù)。

我相信在嵌入式單片機(jī)軟件開發(fā)的初期大多數(shù)開發(fā)者采用的都是簡(jiǎn)單的前后臺(tái)順序執(zhí)行架構(gòu)(我就是這樣的)。在嵌入式軟件開發(fā)中,程序架構(gòu)主要分為三種,本篇文章將對(duì)這三種程序架構(gòu)做出詳解。

軟件架構(gòu)存在的意義

可以說(shuō)一個(gè)好的程序架構(gòu),是一個(gè)有經(jīng)驗(yàn)的工程師和一個(gè)初學(xué)者的分水嶺。軟件架構(gòu)對(duì)于開發(fā)人員是友好的,你希望先執(zhí)行什么任務(wù)后執(zhí)行什么任務(wù),或者這一個(gè)時(shí)間點(diǎn)執(zhí)行什么任務(wù)下一個(gè)執(zhí)行什么任務(wù),又或者什么事件會(huì)同步到某個(gè)任務(wù)等等,在不同的軟件架構(gòu)下,解決上述問(wèn)題的具體方法都是有所區(qū)別的。

軟件架構(gòu)對(duì)開發(fā)者最大的幫助是:幫助開發(fā)者掌控整個(gè)工程的框架,當(dāng)你熟練使用其中某一個(gè)程序架構(gòu)后,對(duì)于系統(tǒng)中出現(xiàn)的bug你一定能夠快速的定位并解決。當(dāng)然,我建議要根據(jù)需要選擇合適的軟件架構(gòu)進(jìn)行開發(fā),具體原因在文章后面會(huì)進(jìn)行介紹。

介紹三種不同的程序架構(gòu)

三種常用的軟件架構(gòu)有:

順序執(zhí)行的前后臺(tái)系統(tǒng)

時(shí)間片輪詢系統(tǒng)

多任務(wù)操作系統(tǒng)

為了讓大家有一個(gè)更為清晰的認(rèn)識(shí),我分別用三種軟件架構(gòu)對(duì)一個(gè)實(shí)例進(jìn)行介紹說(shuō)明。這個(gè)實(shí)例如下:它有4個(gè)任務(wù),這4個(gè)任務(wù)為按鍵掃描、聲光報(bào)警、顯示屏刷新和超聲波測(cè)距。這個(gè)實(shí)例的具體功能是通過(guò)按鍵設(shè)置測(cè)量距離的閾值,當(dāng)測(cè)距距離低于設(shè)置的閾值時(shí),觸發(fā)聲光報(bào)警并且將測(cè)量距離實(shí)時(shí)顯示在顯示屏上(這個(gè)應(yīng)用是汽車倒車?yán)走_(dá)的具體體現(xiàn))。

1.順序執(zhí)行的前后臺(tái)系統(tǒng)在順序執(zhí)行的前后臺(tái)系統(tǒng)中,我會(huì)把鍵盤掃描用查詢的方式放在while(1)中,而顯示屏刷新和超聲波測(cè)距使用中斷,在中斷服務(wù)函數(shù)中獲取測(cè)量距離后進(jìn)行顯示,在主函數(shù)的循環(huán)中進(jìn)行按鍵的檢測(cè),聲光處理也放在主循環(huán)中。

這樣整個(gè)程序就以變量標(biāo)志的同步方式在主循環(huán)和后臺(tái)中斷中執(zhí)行,對(duì)應(yīng)的程序代碼如圖所示:

84fd4d4c-1018-11ec-8fb8-12bb97331649.png

順序執(zhí)行前后臺(tái)系統(tǒng)的主函數(shù)

8509bf8c-1018-11ec-8fb8-12bb97331649.png

順序執(zhí)行前后臺(tái)系統(tǒng)的中斷服務(wù)函數(shù)

這種架構(gòu)的優(yōu)點(diǎn)是使用簡(jiǎn)單易于理解,而缺點(diǎn)是每個(gè)任務(wù)所占的CPU時(shí)間過(guò)長(zhǎng)的話,會(huì)導(dǎo)致程序的實(shí)時(shí)性能差,就比如按鍵的檢測(cè)等。

2.時(shí)間片輪詢系統(tǒng)和多任務(wù)操作系統(tǒng)時(shí)間片輪詢法實(shí)際上通常出現(xiàn)在操作系統(tǒng)中,也就是說(shuō)他屬于操作系統(tǒng),但在這里所說(shuō)的是基于前后臺(tái)系統(tǒng)的時(shí)間片輪詢。時(shí)間片輪詢法的實(shí)質(zhì)其實(shí)就是選出一個(gè)定時(shí)器,沒進(jìn)一次定時(shí)中斷對(duì)計(jì)數(shù)值進(jìn)行自加,在主循環(huán)中根據(jù)這個(gè)計(jì)數(shù)值執(zhí)行任務(wù),這個(gè)計(jì)數(shù)值也就是任務(wù)輪詢的時(shí)間片。

在這個(gè)實(shí)例中,如果采用時(shí)間片輪詢系統(tǒng)的話,首先選用主控芯片的任一定時(shí)器,定時(shí)器定時(shí)時(shí)間周期由我們決定,為了保證實(shí)時(shí)性和運(yùn)行效率,這個(gè)值通常取10ms、30ms、50ms等,我會(huì)將按鍵掃描輪值值設(shè)置為20ms,因?yàn)榘存I抖動(dòng)的時(shí)長(zhǎng)一般為20ms,這樣處理既達(dá)到了消抖的目的,又不會(huì)漏掉按鍵的檢測(cè);而顯示屏的刷新設(shè)置為30ms,如果你覺得刷新反應(yīng)慢了也可以修改這一輪詢值得到改善;而超聲波測(cè)距的輪詢值設(shè)置為100ms,即每隔100模式觸發(fā)測(cè)距一次,這個(gè)測(cè)距頻率已經(jīng)能夠滿足大多數(shù)的情況了。

程序代碼如下:

851d2e50-1018-11ec-8fb8-12bb97331649.png

時(shí)間片輪詢系統(tǒng)的主函數(shù)

8532483a-1018-11ec-8fb8-12bb97331649.png

時(shí)間片輪詢系統(tǒng)的定時(shí)器中斷函數(shù)

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

3.多任務(wù)操作系統(tǒng)操作系統(tǒng)的本身是一個(gè)比較復(fù)雜的東西,任務(wù)的管理和調(diào)度實(shí)現(xiàn)的底層是很復(fù)雜和困難的。但是呢,我們一般都是把操作系統(tǒng)本身作為一個(gè)工具一個(gè)平臺(tái),我們的目的是使用它的功能而不是開發(fā)一個(gè)操作系統(tǒng)。

我使用過(guò)ucosfreertos小型的實(shí)時(shí)操作系統(tǒng),也使用過(guò)Linux大型的操作系統(tǒng),有了操作系統(tǒng),不管是對(duì)于程序的穩(wěn)定性和開發(fā)的效率都會(huì)好很多。我們?cè)谑褂貌僮飨到y(tǒng)的時(shí)候更多的需要去學(xué)習(xí)和理解它的一些調(diào)度和通信的方式。實(shí)際上真正能使用操作系統(tǒng)的人并不多,反而是跑裸機(jī)的占大多數(shù),這也和產(chǎn)品的具體要求有關(guān),很多簡(jiǎn)單的系統(tǒng)只需要裸機(jī)即可滿足。

在這里本我不過(guò)多的介紹操作系統(tǒng)本身,因?yàn)椴僮飨到y(tǒng)確實(shí)挺復(fù)雜的,下面圖例中的代碼是在freertos中創(chuàng)建按鍵控制LED亮滅的程序結(jié)構(gòu),大家可以對(duì)比一下:

853fa192-1018-11ec-8fb8-12bb97331649.png

freertos多任務(wù)系統(tǒng)中主函數(shù)

8551dd94-1018-11ec-8fb8-12bb97331649.png

freertos多任務(wù)操作系統(tǒng)中的任務(wù)回調(diào)函數(shù)

如何選擇合適的軟件架構(gòu)

我使用過(guò)多種不同MCU做項(xiàng)目開發(fā),例如:STM32、STC15、新唐等,也接觸過(guò)復(fù)雜的設(shè)計(jì)需求,例如:車載智能系統(tǒng)和智能家居,跑過(guò)操作系統(tǒng)ucos、freertos和Linux等等。

在回到裸機(jī)開發(fā)時(shí),就會(huì)不然而然的去思考完整系統(tǒng)的軟件架構(gòu)的設(shè)計(jì)問(wèn)題,相信在讀者中開發(fā)裸機(jī)的也占大多數(shù)。

我認(rèn)為沒有最好的軟件(程序)架構(gòu),而只有最合適的軟件架構(gòu)。因?yàn)樵诓煌膽?yīng)用場(chǎng)景中適合采用不同的程序設(shè)計(jì),而單純的去比較哪種程序架構(gòu)是最好的沒有什么實(shí)際的意義。

那接下來(lái)我們來(lái)對(duì)具體的應(yīng)用場(chǎng)景進(jìn)行分析,在一些邏輯清晰功能單一的系統(tǒng)中就很適合選擇順序執(zhí)行的前后臺(tái)架構(gòu),這個(gè)軟件架構(gòu)往往能夠滿足我們大部分的需求,比如電飯煲、電磁爐和聲控?zé)襞莸龋欢谝恍┵Y源缺乏的單片機(jī)并且對(duì)系統(tǒng)可靠性要求較高的情況下非常適合,因?yàn)檫@種方法的系統(tǒng)耗費(fèi)比較小,只是犧牲了一個(gè)定時(shí)器而已,但是選擇此種程序架構(gòu)需要我們對(duì)時(shí)間片進(jìn)行深思熟慮的劃分;

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

作為一名嵌入式軟件工程師,掌握這三種軟件架構(gòu)是非常有必要的,它們可以讓我們?cè)谠O(shè)計(jì)程序時(shí)擁有更多的選擇和思考,而每一種不同的程序架構(gòu)都具備它自己的優(yōu)勢(shì)與不足,這需要我們?nèi)ビ眯膶?shí)踐方可體會(huì)到它的奧妙。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5106

    文章

    19294

    瀏覽量

    310223
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6944

    瀏覽量

    124182
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    5066

    瀏覽量

    88464

原文標(biāo)題:軟件架構(gòu)存在的意義

文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    2025年嵌入式開發(fā)趨勢(shì):新技術(shù)如何影響你的工作?

    嵌入式開發(fā)的世界正在快速變化,新技術(shù)的崛起正悄然改變硬件設(shè)計(jì)、軟件架構(gòu)以及開發(fā)方式。無(wú)論你是剛?cè)腴T的新手,還是經(jīng)驗(yàn)豐富的工程師,理解這些趨勢(shì)不僅能幫助你應(yīng)對(duì)技術(shù)變革,還能在職業(yè)發(fā)展
    的頭像 發(fā)表于 03-14 17:36 ?25次閱讀
    2025年<b class='flag-5'>嵌入式開發(fā)</b>趨勢(shì):新技術(shù)如何影響你的工作?

    BlackBerry QNX推出通用嵌入式開發(fā)平臺(tái)

    BlackBerry有限公司(紐交所代碼:BB;多倫多證券交易所代碼:BB)旗下部門QNX今日宣布推出QNX 通用嵌入式開發(fā)平臺(tái)(General Embedded Development
    的頭像 發(fā)表于 03-11 16:04 ?250次閱讀

    盤點(diǎn)工程師常用的嵌入式開發(fā)工具

    嵌入式開發(fā)涉及硬件與軟件的緊密結(jié)合,開發(fā)工具的選擇對(duì)效率和質(zhì)量至關(guān)重要。以下是嵌入式開發(fā)中常用的工具分類及代表性工具,涵蓋開發(fā)全流程: 1.
    的頭像 發(fā)表于 02-07 10:06 ?604次閱讀

    哪些專業(yè)適合學(xué)習(xí)嵌入式開發(fā)?

    哪些專業(yè)適合學(xué)習(xí)嵌入式開發(fā)? 在傳統(tǒng)行業(yè)不斷被取代的當(dāng)下,對(duì)于大學(xué)生、從業(yè)者而言,選擇一個(gè)熱門主流的職業(yè)方向,是未來(lái)發(fā)展的關(guān)鍵因素之一。 嵌入式作為當(dāng)下高薪崗位之一,轉(zhuǎn)行、轉(zhuǎn)專業(yè)的人群已經(jīng)占據(jù)求職
    發(fā)表于 01-03 13:44

    嵌入式開發(fā)必備-RK3562演示Linux常用系統(tǒng)查詢命令(上)觸覺智能出品

    實(shí)用干貨!嵌入式開發(fā)學(xué)習(xí)必備-RK3562演示Linux常用系統(tǒng)查詢命令(上)關(guān)注觸覺智能持續(xù)為大家?guī)?lái)更多嵌入式開發(fā)內(nèi)容
    的頭像 發(fā)表于 12-31 10:51 ?117次閱讀
    <b class='flag-5'>嵌入式開發(fā)</b>必備-RK3562演示Linux常用系統(tǒng)查詢命令(上)觸覺智能出品

    如何使用 RISC-V 進(jìn)行嵌入式開發(fā)

    RISC-V是一種開源的指令集架構(gòu)(ISA),它允許任何人設(shè)計(jì)、制造和銷售基于RISC-V的處理器,這為嵌入式開發(fā)提供了極大的靈活性和創(chuàng)新空間。以下是使用RISC-V進(jìn)行嵌入式開發(fā)的基本步驟: 一
    的頭像 發(fā)表于 12-11 17:32 ?1064次閱讀

    一文了解嵌入式軟件開發(fā)的對(duì)象

    以前應(yīng)用場(chǎng)景很單一,嵌入式開發(fā)可能談不上面向?qū)ο?b class='flag-5'>開發(fā)。但現(xiàn)在,做嵌入式開發(fā),沒有面向?qū)ο?b class='flag-5'>開發(fā),你就有點(diǎn)落伍了。 本文結(jié)合個(gè)人經(jīng)驗(yàn)和周立功《抽象接口技術(shù)和組件
    的頭像 發(fā)表于 11-15 10:31 ?530次閱讀
    一文了解<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件開發(fā)</b>的對(duì)象

    嵌入式開發(fā)常見問(wèn)題排查

    嵌入式開發(fā)問(wèn)題排查很多人認(rèn)為嵌入式開發(fā)很難,主要是因?yàn)樵谶@個(gè)過(guò)程中常常會(huì)遇到各式各樣的問(wèn)題。這些問(wèn)題的復(fù)雜性和多樣性使得許多人感到困惑和無(wú)所適從。然而,如果將這些問(wèn)題逐一拆解,實(shí)際上大部分都可以
    的頭像 發(fā)表于 09-22 08:04 ?507次閱讀
    <b class='flag-5'>嵌入式開發(fā)</b>常見問(wèn)題排查

    嵌入式開發(fā)常用軟件有哪些?

    嵌入式開發(fā)常用軟件有哪些? 對(duì)于初學(xué)嵌入式的朋友們,會(huì)想要了解嵌入式軟件開發(fā)常用的軟件有些,有什
    發(fā)表于 09-09 15:22

    【「ARM MCU嵌入式開發(fā) | 基于國(guó)產(chǎn)GD32F10x芯片」閱讀體驗(yàn)】+書籍整體概況

    一、導(dǎo)言 上周收到《ARM MCU嵌入式開發(fā) | 基于國(guó)產(chǎn)GD32F10x芯片》書籍,該紙質(zhì)書籍內(nèi)容可謂是面面俱到,由“清華大學(xué)出版社”出版,印刷第1版時(shí)間為2024年6月份,總共464千字
    發(fā)表于 08-25 22:48

    聚焦嵌入式開發(fā)的合規(guī)性工具、項(xiàng)目管理工具、版本迭代工具應(yīng)用

    ,就嵌入式開發(fā)與管理領(lǐng)域的最新趨勢(shì)、工具選擇以及DevSecOps實(shí)踐應(yīng)用等方面展開了深入探討。 本期對(duì)話龍智資深DevSecOps顧問(wèn)徐晨暉, 分享嵌入式開發(fā)的合規(guī)性工具、項(xiàng)目管理和版本管理的工具選擇,以及DevSecOps
    的頭像 發(fā)表于 07-29 15:15 ?741次閱讀

    嵌入式開發(fā)前景怎么樣?

    嵌入式開發(fā)前景非常廣闊,這主要得益于物聯(lián)網(wǎng)、人工智能、大數(shù)據(jù)等技術(shù)的快速發(fā)展,以及嵌入式系統(tǒng)在各個(gè)領(lǐng)域的廣泛應(yīng)用。以下是對(duì)嵌入式開發(fā)前景的詳細(xì)分析
    的頭像 發(fā)表于 07-10 09:00 ?3447次閱讀
    <b class='flag-5'>嵌入式開發(fā)</b>前景怎么樣?

    嵌入式開發(fā)者的未來(lái)

    和測(cè)試這些產(chǎn)品的硬件和軟件。汽車行業(yè):現(xiàn)代汽車包含大量的嵌入式系統(tǒng),例如車載娛樂(lè)系統(tǒng)、發(fā)動(dòng)機(jī)控制單元、自動(dòng)駕駛系統(tǒng)等。在這個(gè)領(lǐng)域,工程師可以從事嵌入式軟件開發(fā)、系統(tǒng)集
    的頭像 發(fā)表于 06-23 08:10 ?513次閱讀
    <b class='flag-5'>嵌入式開發(fā)</b>者的未來(lái)

    嵌入式開發(fā)就業(yè)前景怎么樣?

    。在智能家居領(lǐng)域,嵌入式開發(fā)的主要工作是開發(fā)各種智能化設(shè)備和系統(tǒng),如智能照明、智能安防、智能家電等。嵌入式開發(fā)人員需要掌握相關(guān)的硬件和軟件技術(shù),如處理器、傳感器、通信技術(shù)、操作系統(tǒng)等,
    發(fā)表于 06-07 14:51

    fpga是嵌入式開發(fā)

    FPGA(現(xiàn)場(chǎng)可編程門陣列)與嵌入式開發(fā)之間確實(shí)存在一定的關(guān)聯(lián),但它們?cè)诒举|(zhì)上是兩個(gè)不同的領(lǐng)域。
    的頭像 發(fā)表于 03-15 14:18 ?1322次閱讀
    主站蜘蛛池模板: avav去吧 | 火影忍者高清无码黄漫 | 大陆老太交xxxxxhd在线 | 69日本人XXXX护士HD | 甜性涩爱全集在线观看 | 国产在线一区观看 | 翘臀后进美女白嫩屁股视频 | gay台湾无套男同志xnxⅹ | 年轻的母亲4线在线观看完整 | 亚洲久久少妇中文字幕 | 3d在线看小舞被躁视频 | 成人网视频在线观看免费 | 日日踫夜夜爽无码久久 | 女人操男人 | 爱啪国产精品视频在线 | 99精品观看 | 亚洲精品国偷拍电影自产在线 | 亚州三级视频 | 国产婷婷色一区二区三区在线 | 长泽梓黑人初解禁bdd07 | 99久久99久久精品国产片果冻 | 国产精品自在拍在线播放 | 麒麟色欧美影院在线播放 | 性xxx欧美 | 夜夜国产亚洲视频香蕉 | aaa在线观看视频高清视频 | 超碰97人人做人人爱网站 | 精品久久伦理中文字幕 | 激情内射亚洲一区二区三区爱妻 | 在线亚洲专区中文字幕 | 亚洲成年人免费网站 | 亚洲精品中文字幕制 | 久久人妻少妇嫩草AV蜜桃99 | 亚洲欧洲日韩视频在钱 | 寂寞骚妇女被后入式抽插 | 国产97碰免费视频 | 中文字幕成人在线观看 | 成人在线观看国产 | 国产高清在线观看视频 | 少妇内射视频播放舔大片 | 99久久免费精品国产免费 |