資料介紹
前言
在嵌入式軟件開發,包括單片機開發中,軟件架構對于開發人員是一個必須認真考慮的問題。軟件架構對于系統整體的穩定性和可靠性是非常重要的,一個合適的軟件架構不僅結構清晰,并且便于開發。我相信在嵌入式或單片機軟件開發的初期大多數開發者采用的都是簡單的前后臺順序執行架構。在嵌入式軟件開發中,程序架構主要分為三種,本篇文章將對這三種程序架構做出詳解。
1、軟件架構存在的意義
可以說一個好的程序架構,是一個有經驗的工程師和一個初學者的分水嶺。軟件架構對于開發人員是友好的,你希望先執行什么任務后執行什么任務,或者這一個時間點執行什么任務下一個執行什么任務,又或者什么事件會同步到某個任務等等,在不同的軟件架構下,解決上述問題的具體方法都是有所區別的。
軟件架構對開發者最大的幫助是:幫助開發者掌控整個工程的框架,當你熟練使用其中某一個程序架構后,對于系統中出現的bug你一定能夠快速的定位并解決。當然,我建議要根據需要選擇合適的軟件架構進行開發,具體原因在文章后面會進行介紹。
2、深入介紹三種不同的程序架構
三種常用的軟件架構有:順序執行的前后臺系統、時間片輪詢系統和多任務操作系統。為了讓大家有一個更為清晰的認識,我分別用三種軟件架構對一個實例進行介紹說明。這個實例如下:它有4個任務,這4個任務為按鍵掃描、聲光報警、顯示屏刷新和超聲波測距。這個實例的具體功能是通過按鍵設置測量距離的閾值,當測距距離低于設置的閾值時,觸發聲光報警并且將測量距離實時顯示在顯示屏上(這個應用是汽車倒車雷達的具體體現)。
2.1順序執行的前后臺系統
在順序執行的前后臺系統中,我會把鍵盤掃描用查詢的方式放在while(1)中,而顯示屏刷新和超聲波測距使用中斷,在中斷服務函數中獲取測量距離后進行顯示,在主函數的循環中進行按鍵的檢測,聲光處理也放在主循環中。這樣整個程序就以變量標志的同步方式在主循環和后臺中斷中執行,對應的程序代碼如圖所示:
這種架構的優點是使用簡單易于理解,而缺點是每個任務所占的CPU時間過長的話,會導致程序的實時性能差,就比如按鍵的檢測等。
2.2時間片輪詢系統和多任務操作系統
時間片輪詢法實際上通常出現在操作系統中,也就是說他屬于操作系統,但在這里所說的是基于前后臺系統的時間片輪詢。時間片輪詢法的實質其實就是選出一個定時器,沒進一次定時中斷對計數值進行自加,在主循環中根據這個計數值執行任務,這個計數值也就是任務輪詢的時間片。在這個實例中,如果采用時間片輪詢系統的話,首先選用主控芯片的任一定時器,定時器定時時間周期由我們決定,為了保證實時性和運行效率,這個值通常取10ms、30ms、50ms等,我會將按鍵掃描輪值值設置為20ms,因為按鍵抖動的時長一般為20ms,這樣處理既達到了消抖的目的,又不會漏掉按鍵的檢測;而顯示屏的刷新設置為30ms,如果你覺得刷新反應慢了也可以修改這一輪詢值得到改善;而超聲波測距的輪詢值設置為100ms,即每隔100模式觸發測距一次,這個測距頻率已經能夠滿足大多數的情況了。
程序代碼如下:
可以看出時間片輪詢法相比順序執行還是有很大優勢的,既有順序執行法的優點,也有操作系統的部分優點。
2.3多任務操作系統
操作系統的本身是一個比較復雜的東西,任務的管理和調度實現的底層是很復雜和困難的。但是呢,我們一般都是把操作系統本身作為一個工具一個平臺,我們的目的是使用它的功能而不是開發一個操作系統。我使用過ucos和freertos小型的實時操作系統,也使用過Linux大型的操作系統,有了操作系統,不管是對于程序的穩定性和開發的效率都會好很多。我們在使用操作系統的時候更多的需要去學習和理解它的一些調度和通信的方式。實際上真正能使用操作系統的人并不多,反而是跑裸機的占大多數,這也和產品的具體要求有關,很多簡單的系統只需要裸機即可滿足。
在這里本我不過多的介紹操作系統本身,因為操作系統確實挺復雜的,下面圖例中的代碼是在freertos中創建按鍵控制LED亮滅的程序結構,大家可以對比一下:
3、如何選擇合適的軟件架構
我使用過多種不同MCU做項目開發,例如:STM32、STC15、新唐等,也接觸過復雜的設計需求,例如:車載智能系統和智能家居,跑過操作系統ucos、freertos和Linux等等,在回到裸機開發時,就會不然而然的去思考完整系統的軟件架構的設計問題,相信在讀者中開發裸機的也占大多數。
我認為沒有最好的軟件架構(程序架構),而是只有最合適的。因為在不同的應用場景中適合采用不同的程序設計,而單純的去比較哪種程序架構是最好的沒有什么實際的意義。那接下來我們來對具體的應用場景進行分析,在一些邏輯清晰功能單一的系統中就很適合選擇順序執行的前后臺架構,這個軟件架構往往能夠滿足我們大部分的需求,比如電飯煲、電磁爐和聲控燈泡等;而在一些資源缺乏的單片機并且對系統可靠性要求較高的情況下非常適合,因為這種方法的系統耗費比較小,只是犧牲了一個定時器而已,但是選擇此種程序架構需要我們對時間片進行深思熟慮的劃分;最后,在一些功能復雜,邏輯控制較為困難的系統中就適合選擇多任務操作系統,比如視頻監控系統、無人機等等應用場景。
作為一名嵌入式軟件工程師,掌握這三種軟件架構是非常有必要的,它們可以讓我們在設計程序時擁有更多的選擇和思考,而每一種不同的程序架構都具備它自己的優勢與不足,這需要我們去用心實踐方可體會到它的奧妙。
- 三種常見嵌入式開發程序架構
- 嵌入式開發需要架構設計嗎?
- 嵌入式開發|嵌入式軟件框架《二》前后臺任務框架-cola os系統
- 如何入門嵌入式?ARM嵌入式開發板學習方法步驟
- 嵌入式開發Linux入門
- 嵌入式開發資料免費分享
- 嵌入式開發|嵌入式軟件框架《一》常用的軟件框架介紹與選擇
- 嵌入式開發(一):嵌入式開發新手入門
- 如何快速熟練掌握嵌入式開發嵌入式開發工程師需要做哪些事情
- 嵌入式開發中CPU大端和小端模式的詳細資料和程序分析講解
- 邏輯分析儀在嵌入式開發調試中的應用 33次下載
- 黑色經典系列之windows ce嵌入式開發入門-基本Xscale架構
- windows CE嵌入式開發入門-基于Xscale架構案例
- windows CE嵌入式開發入門-基于Xscale架構
- 基于ARM的嵌入式開發
- 嵌入式Linux開發的三種方式 1017次閱讀
- STM32嵌入式開發中的RTOS,你用過哪些? 2248次閱讀
- 詳解FreeRTOS:嵌入式軟件系統架構 2603次閱讀
- 嵌入式開發中串口通訊方案 2436次閱讀
- 嵌入式開發的產品有哪些_嵌入式開發的流程 1.1w次閱讀
- 基于Mac上做嵌入式開發簡析 4002次閱讀
- 解析嵌入式開發中的一些硬件相關概念 945次閱讀
- 嵌入式開發好學嗎_嵌入式開發職業發展方向是什么 9207次閱讀
- 什么是嵌入式開發板_學嵌入式用什么開發板 7206次閱讀
- 嵌入式開發和單片機開發有什么區別和聯系 3.6w次閱讀
- 嵌入式C實現延時程序的不同變量的區別 幾種Linux嵌入式開發環境的簡單介紹 1673次閱讀
- 嵌入式開發工具有哪些_五款嵌入式開發工具推薦 4w次閱讀
- 學嵌入式開發入門_學嵌入式開發需要看哪些書籍 2.5w次閱讀
- 嵌入式開發環境的搭建 8548次閱讀
- 嵌入式開發就業前景分析_嵌入式領域的職業發展方向 1.8w次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多