日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

電子發(fā)燒友App

硬聲App

掃碼添加小助手

加入工程師交流群

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

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

3天內不再提示
創(chuàng)作
電子發(fā)燒友網>電子資料下載>嵌入式開發(fā)>嵌入式開發(fā)中要用的三種程序架構~

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

2021-01-22 | pdf | 228.58KB | 次下載 | 3積分

資料介紹

前言

嵌入式軟件開發(fā),包括單片機開發(fā)中,軟件架構對于開發(fā)人員是一個必須認真考慮的問題。軟件架構對于系統(tǒng)整體的穩(wěn)定性和可靠性是非常重要的,一個合適的軟件架構不僅結構清晰,并且便于開發(fā)。我相信在嵌入式單片機軟件開發(fā)的初期大多數(shù)開發(fā)者采用的都是簡單的前后臺順序執(zhí)行架構。在嵌入式軟件開發(fā)中,程序架構主要分為三種,本篇文章將對這三種程序架構做出詳解。

1、軟件架構存在的意義

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

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

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

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

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

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

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

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

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

2.2時間片輪詢系統(tǒng)和多任務操作系統(tǒng)

時間片輪詢法實際上通常出現(xiàn)在操作系統(tǒng)中,也就是說他屬于操作系統(tǒng),但在這里所說的是基于前后臺系統(tǒng)的時間片輪詢。時間片輪詢法的實質其實就是選出一個定時器,沒進一次定時中斷對計數(shù)值進行自加,在主循環(huán)中根據(jù)這個計數(shù)值執(zhí)行任務,這個計數(shù)值也就是任務輪詢的時間片。在這個實例中,如果采用時間片輪詢系統(tǒng)的話,首先選用主控芯片的任一定時器,定時器定時時間周期由我們決定,為了保證實時性和運行效率,這個值通常取10ms、30ms、50ms等,我會將按鍵掃描輪值值設置為20ms,因為按鍵抖動的時長一般為20ms,這樣處理既達到了消抖的目的,又不會漏掉按鍵的檢測;而顯示屏的刷新設置為30ms,如果你覺得刷新反應慢了也可以修改這一輪詢值得到改善;而超聲波測距的輪詢值設置為100ms,即每隔100模式觸發(fā)測距一次,這個測距頻率已經能夠滿足大多數(shù)的情況了。

程序代碼如下:

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

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

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

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

操作系統(tǒng)的本身是一個比較復雜的東西,任務的管理和調度實現(xiàn)的底層是很復雜和困難的。但是呢,我們一般都是把操作系統(tǒng)本身作為一個工具一個平臺,我們的目的是使用它的功能而不是開發(fā)一個操作系統(tǒng)。我使用過ucosfreertos小型的實時操作系統(tǒng),也使用過Linux大型的操作系統(tǒng),有了操作系統(tǒng),不管是對于程序的穩(wěn)定性和開發(fā)的效率都會好很多。我們在使用操作系統(tǒng)的時候更多的需要去學習和理解它的一些調度和通信的方式。實際上真正能使用操作系統(tǒng)的人并不多,反而是跑裸機的占大多數(shù),這也和產品的具體要求有關,很多簡單的系統(tǒng)只需要裸機即可滿足。

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

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

“freertos多任務操作系統(tǒng)中的任務回調函數(shù)"
freertos多任務操作系統(tǒng)中的任務回調函數(shù)

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

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

我認為沒有最好的軟件架構(程序架構),而是只有最合適的。因為在不同的應用場景中適合采用不同的程序設計,而單純的去比較哪種程序架構是最好的沒有什么實際的意義。那接下來我們來對具體的應用場景進行分析,在一些邏輯清晰功能單一的系統(tǒng)中就很適合選擇順序執(zhí)行的前后臺架構,這個軟件架構往往能夠滿足我們大部分的需求,比如電飯煲、電磁爐和聲控燈泡等;而在一些資源缺乏的單片機并且對系統(tǒng)可靠性要求較高的情況下非常適合,因為這種方法的系統(tǒng)耗費比較小,只是犧牲了一個定時器而已,但是選擇此種程序架構需要我們對時間片進行深思熟慮的劃分;最后,在一些功能復雜,邏輯控制較為困難的系統(tǒng)中就適合選擇多任務操作系統(tǒng),比如視頻監(jiān)控系統(tǒng)、無人機等等應用場景。

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


嵌入式
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1TC358743XBG評估板參考手冊
  2. 1.36 MB  |  330次下載  |  免費
  3. 2開關電源基礎知識
  4. 5.73 MB  |  6次下載  |  免費
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設計
  8. 0.60 MB  |  3次下載  |  免費
  9. 5基于FPGA的光纖通信系統(tǒng)的設計與實現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費
  11. 6基于FPGA的C8051F單片機開發(fā)板設計
  12. 0.70 MB  |  2次下載  |  免費
  13. 751單片機窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費
  15. 8基于51單片機的RGB調色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21548次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537796次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191185次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
上犹县| 元阳县| 贵德县| 安溪县| 荥阳市| 光泽县| 河津市| 康定县| 天台县| 巴塘县| 海丰县| 浪卡子县| 徐水县| 正阳县| 陕西省| 都江堰市| 微山县| 万全县| 邹城市| 延川县| 台安县| 道孚县| 平利县| 礼泉县| 惠水县| 南宫市| 呼玛县| 濮阳县| 沁阳市| 沙洋县| 鄯善县| 永仁县| 彰武县| 溆浦县| 富源县| 义乌市| 昔阳县| 玉山县| 星座| 朝阳县| 定兴县|