詳解嵌入式開發(fā)中的3種程序架構(gòu)
時間:2021-12-07 12:17:39
手機看文章
掃描二維碼
隨時隨地手機看文章
[導讀]0、前言在嵌入式軟件開發(fā),包括單片機開發(fā)中,軟件架構(gòu)對于開發(fā)人員是一個必須認真考慮的問題。軟件架構(gòu)對于系統(tǒng)整體的穩(wěn)定性和可靠性是非常重要的,一個合適的軟件架構(gòu)不僅結(jié)構(gòu)清晰,并且便于開發(fā)。我相信在嵌入式或單片機軟件開發(fā)的初期大多數(shù)開發(fā)者采用的都是簡單的前后臺順序執(zhí)行架構(gòu)(我就是這樣...
0、前言
在嵌入式軟件開發(fā),包括單片機開發(fā)中,軟件架構(gòu)對于開發(fā)人員是一個必須認真考慮的問題。軟件架構(gòu)對于系統(tǒng)整體的穩(wěn)定性和可靠性是非常重要的,一個合適的軟件架構(gòu)不僅結(jié)構(gòu)清晰,并且便于開發(fā)。我相信在嵌入式或單片機軟件開發(fā)的初期大多數(shù)開發(fā)者采用的都是簡單的前后臺順序執(zhí)行架構(gòu)(我就是這樣的)。在嵌入式軟件開發(fā)中,程序架構(gòu)主要分為三種,本篇文章將對這三種程序架構(gòu)做出詳解。1、軟件架構(gòu)存在的意義
可以說一個好的程序架構(gòu),是一個有經(jīng)驗的工程師和一個初學者的分水嶺。軟件架構(gòu)對于開發(fā)人員是友好的,你希望先執(zhí)行什么任務后執(zhí)行什么任務,或者這一個時間點執(zhí)行什么任務下一個執(zhí)行什么任務,又或者什么事件會同步到某個任務等等,在不同的軟件架構(gòu)下,解決上述問題的具體方法都是有所區(qū)別的。軟件架構(gòu)對開發(fā)者最大的幫助是:幫助開發(fā)者掌控整個工程的框架,當你熟練使用其中某一個程序架構(gòu)后,對于系統(tǒng)中出現(xiàn)的bug你一定能夠快速的定位并解決。當然,我建議要根據(jù)需要選擇合適的軟件架構(gòu)進行開發(fā),具體原因在文章后面會進行介紹。2、深入介紹三種不同的程序架構(gòu)
三種常用的軟件架構(gòu)有:順序執(zhí)行的前后臺系統(tǒng)、時間片輪詢系統(tǒng)和多任務操作系統(tǒng)。為了讓大家有一個更為清晰的認識,我分別用三種軟件架構(gòu)對一個實例進行介紹說明。這個實例如下:它有4個任務,這4個任務為按鍵掃描、聲光報警、顯示屏刷新和超聲波測距。這個實例的具體功能是通過按鍵設置測量距離的閾值,當測距距離低于設置的閾值時,觸發(fā)聲光報警并且將測量距離實時顯示在顯示屏上(這個應用是汽車倒車雷達的具體體現(xiàn))。- 順序執(zhí)行的前后臺系統(tǒng)
- 時間片輪詢系統(tǒng)和多任務操作系統(tǒng)
- 多任務操作系統(tǒng)
3、如何選擇合適的軟件架構(gòu)
我使用過多種不同MCU做項目開發(fā),例如:STM32、STC15、新唐等,也接觸過復雜的設計需求,例如:車載智能系統(tǒng)和智能家居,跑過操作系統(tǒng)ucos、freertos和Linux等等,在回到裸機開發(fā)時,就會不然而然的去思考完整系統(tǒng)的軟件架構(gòu)的設計問題,相信在讀者中開發(fā)裸機的也占大多數(shù)。我認為沒有最好的軟件架構(gòu)(程序架構(gòu)),而是只有最合適的。因為在不同的應用場景中適合采用不同的程序設計,而單純的去比較哪種程序架構(gòu)是最好的沒有什么實際的意義。那接下來我們來對具體的應用場景進行分析,在一些邏輯清晰功能單一的系統(tǒng)中就很適合選擇順序執(zhí)行的前后臺架構(gòu),這個軟件架構(gòu)往往能夠滿足我們大部分的需求,比如電飯煲、電磁爐和聲控燈泡等;而在一些資源缺乏的單片機并且對系統(tǒng)可靠性要求較高的情況下非常適合,因為這種方法的系統(tǒng)耗費比較小,只是犧牲了一個定時器而已,但是選擇此種程序架構(gòu)需要我們對時間片進行深思熟慮的劃分;最后,在一些功能復雜,邏輯控制較為困難的系統(tǒng)中就適合選擇多任務操作系統(tǒng),比如視頻監(jiān)控系統(tǒng)、無人機等等應用場景。作為一名嵌入式軟件工程師,掌握這三種軟件架構(gòu)是非常有必要的,它們可以讓我們在設計程序時擁有更多的選擇和思考,而每一種不同的程序架構(gòu)都具備它自己的優(yōu)勢與不足,這需要我們?nèi)ビ眯膶嵺`方可體會到它的奧妙。END來源:嵌入式在左C語言在右原文地址:www.toutiao.com/i6804446207872598539版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系刪除。
▍