目錄
前言
嵌入式3層軟件架構(gòu)
嵌入式4層軟件架構(gòu)-1
驅(qū)動層
操作系統(tǒng)層
中間件層
應用層
嵌入式4層軟件架構(gòu)-2
硬件層
嵌入式微處理芯片
嵌入式存儲器系統(tǒng)
嵌入式I/O接口
中間層
系統(tǒng)軟件層
RTOS
文件系統(tǒng)
GUI
應用層
嵌入式5層軟件架構(gòu)1
嵌入式5層軟件架構(gòu)2
嵌入式6層軟件架構(gòu)
個人軟件架構(gòu)
MCU抽象層(MCU Abstract Layer) ? ? ?
硬件驅(qū)動層(Hardware Driver Layer) ? ??
功能模塊層(Functional Module Layer)
應用層(Application Layer)
前言
????????疫情帶來的災難,使得世界處于不穩(wěn)定狀態(tài),全球缺芯片成為常態(tài)。對從事單片機和嵌入式底層的開發(fā)人員來增加很多的工作量,若是不注重代碼分層或者分層不好的將是多么痛苦,老項目換芯片換個不停,新項目做好幾套芯片方案。若有良好的分層思想,將是減少很多工作量!
????????最初的單片機開發(fā)語言是匯編語言,但匯編語言會隨著單片機種類的不同而不同。程序設(shè)計起來難度較大。后來人們改用C語言作為單片機程序設(shè)計的通用語言。這種不依賴于機器硬件的語言,可以方便的在各類單片機系統(tǒng)中移植,極大的加快了單片機程序開發(fā)的時間。這是單片機從語言上進行分層帶來便利。像PC 、手機等標準化產(chǎn)品已進行了系統(tǒng)性的標準分層。對于其他嵌入式產(chǎn)品行業(yè)分層架構(gòu)方式較多,源于行業(yè)的標準化程度及行業(yè)特性決定!但整體思想是一致的。
????????本文羅列了市面常見的分層架構(gòu)。對于復雜的系統(tǒng)產(chǎn)品分層方式較為統(tǒng)一,因為有人研究和專業(yè)的架構(gòu)師崗位,以及產(chǎn)品標準化程度高。像單片機裸機軟件分層架構(gòu)相對較弱,因為硬件資源有限,分層越細會占用空間;項目簡單,每個人都有自己的思想,沒有統(tǒng)一的去研究;產(chǎn)品種類復雜標準化弱。不過還是有共性的,只是單片機裸機項目功能相對單一,分層不要過于太細,層級分的太多,隔離的太徹底,有時候反而增加了無謂的損耗,3~5層即可。
嵌入式3層軟件架構(gòu)
硬件層 | 嵌入式微處理器存儲器,通用設(shè)備接口,io接口 |
中間層 | 底層硬件的初始化,數(shù)據(jù)的輸入/輸出操作,硬件設(shè)備的配置文件 |
軟件層 | 多任務(wù)操作系統(tǒng),文件系統(tǒng),圖形用戶接口,網(wǎng)絡(luò)系統(tǒng),通用組件模塊 |
嵌入式4層軟件架構(gòu)-1
????????嵌入式系統(tǒng)的軟件體系是面向嵌入式系統(tǒng)特定的硬件體系和用戶要求而設(shè)計的,是嵌入式系統(tǒng)的重要組成部分,是實現(xiàn)嵌入式系統(tǒng)功能的關(guān)鍵。嵌入式系統(tǒng)軟件體系和通用計算機軟件體系類似,分成驅(qū)動層、操作系統(tǒng)層、中間件層和應用層等四層,各有其特點。
驅(qū)動層
????????驅(qū)動層是直接與硬件打交道的一層,它為操作系統(tǒng)和應用提供硬件驅(qū)動或底層核心支持。在嵌入式系統(tǒng)中,驅(qū)動程序有時也稱為板級支持包(BSP)。BSP具有在嵌入式系統(tǒng)上電后初始化系統(tǒng)的基本硬件環(huán)境的功能,基本硬件包括微處理器、存儲器、中斷控制器、DMA、定時器等。驅(qū)動層--般可以有三種類型的程序,即板級初始化程序、標準驅(qū)動程序和應用驅(qū)動程序。
操作系統(tǒng)層
????????嵌入式系統(tǒng)中的操作系統(tǒng)具有一般操作系統(tǒng)的核心功能,負責嵌入式系統(tǒng)的全部軟硬件資源的分配、調(diào)度工作控制、協(xié)調(diào)并發(fā)活動。它仍具有嵌入式的特點,屬于嵌入式操作系統(tǒng)(Embedded Operating System,EOS)。主流的嵌入式操作系統(tǒng)有Windows CE、Palm:OS、Linux、VxWorks.pSOS.QNX.LynxOS等。有了嵌入式操作系統(tǒng),編寫應用程序就更加快速、高效、穩(wěn)定。?
中間件層
????????中間件是用于幫助和支持應用軟件開發(fā)的軟件,通常包括數(shù)據(jù)庫、網(wǎng)絡(luò)協(xié)議、圖形支持及相應開發(fā)工具等,例如:MySQL、TCP/IP、GU1等都屬于這一類軟件。
應用層
????????嵌入式應用軟件是針對特定應用領(lǐng)域,用來實現(xiàn)用戶預期目標的軟件。嵌入式應用軟件和普通應用軟件有一定的區(qū)別,它不僅要求在準確性、安全性和穩(wěn)定性等方面能夠滿足實際應用的需要,而且還要盡可能地進行優(yōu)化,以減少對系統(tǒng)資源的消耗,降低硬件成本。嵌入式系統(tǒng)中的應用軟件是最活躍的力量,每種應用軟件均有特定的應用背景。盡管規(guī)模較小,但專業(yè)性較強,所以嵌入式應用軟件不像操作系統(tǒng)和支撐軟件那樣受制于國外產(chǎn)品,是我國嵌入式軟件的優(yōu)勢領(lǐng)域。
嵌入式4層軟件架構(gòu)-2
- 硬件層;
- 中間層;
- 系統(tǒng)軟件層 ;
- 應用軟件層 ;
硬件層
硬件層的結(jié)構(gòu)如下:
嵌入式的硬件層主要分為三個部分:嵌入式微處理芯片、嵌入式存儲系統(tǒng) 和 嵌入式 I/O 接口。
嵌入式微處理芯片
????????主要包括:嵌入式微處理器、嵌入式微控制器、嵌入式數(shù)字信號處理器、嵌入式片上系統(tǒng)等;嵌入式微處理器與通用 CPU 最大的區(qū)別在于將 CPU 中需要需要外部設(shè)備來完成的任務(wù)集成到了芯片內(nèi)部。
- 嵌入式微處理器是嵌入式系統(tǒng)硬件層的核心部分;
- 微處理器最大的特點是:集成化、體積小、功耗小、成本低、穩(wěn)定性高;
- 不同微處理器的體系結(jié)構(gòu)不一樣,主要分為馮諾依曼和哈弗結(jié)構(gòu);
- 即使同一體系結(jié)構(gòu)的微處理器使用的時鐘頻率、數(shù)據(jù)總線寬度、集成的外設(shè)和接口也會不一樣;
嵌入式存儲器系統(tǒng)
????????主要包括:程序存儲器、數(shù)據(jù)存儲器和參數(shù)存儲器,主要以 Cache、ROM、RAM、Flash、SD卡等;
- Cache:又叫高速緩沖存儲器,是主存和處理器內(nèi)核之間的一種容量小、速度快的存儲器陣列,相當于在主存和內(nèi)核之間構(gòu)建了一條緩沖帶。主要用于存放最近一段時間內(nèi)核微處理器用到最多的指令和數(shù)據(jù);Cache 分為指令 Cache 和 數(shù)據(jù) Cache,微處理器盡量從 Cache 中讀取指令和數(shù)據(jù),減小在主存讀取數(shù)據(jù)和指令的次數(shù)。Cache 存在提高了系統(tǒng)數(shù)據(jù)傳輸率和性能;
- 主存儲器:主要用來存放用戶的程序和數(shù)據(jù),是嵌入式微處理器能直接訪問的存儲器。主存儲器可以位于處理器內(nèi)部和外部,常用的ROM類存儲器為:EEPROM 、PROM;常用的 RAM 類存儲器為:SRAM、DRAM、SDRAM等;一般容量較小(256KB – 1G ),讀取速度快;
- 輔助存儲器:通常指硬盤、NOR Flash, NAND Flash, CF卡, SD卡等,主要用來存放大容量的程序代碼或數(shù)據(jù)。一般容量較大,讀取速度慢;
嵌入式I/O接口
嵌入式系統(tǒng)與外接交互所需要的通用設(shè)備接口,通常為:
- GPIO;
- A/D 轉(zhuǎn)換接口;
- RS-232接口(串行通信接口);
- SPI(串行外圍設(shè)備接口);
- 以太網(wǎng)接口;
- USB(通用串行總線接口);
- I2C(現(xiàn)場總線接口);
- 音頻接口;
- VGA視頻輸出接口;
- IrDA(紅外線接口);
中間層
????????中間層也稱為硬件抽象層(Hardware Abstract Layer,HAL) 或者叫板級別支持包(Board Support Package,BSP),位于硬件層和軟件層之間,用于連接軟件層和硬件層。
- BSP 是一個介于操作系統(tǒng)和底層硬件之間的軟件層,為操作系統(tǒng)控制底層硬件提供了接口;
- BSP 具有硬件相關(guān)性和軟件相關(guān)性:
- 硬件相關(guān)性:是指 BSP 需要和硬件平臺相關(guān)聯(lián),不同硬件環(huán)境需要不同的 BSP 控制;
- 軟件相關(guān)性:是指 BSP 也要迎合操作系統(tǒng)的接口,不同的操作系統(tǒng)具有不同的硬件操作接口;
- BSP 有一個很重要的功能是硬件初始化,嵌入式系統(tǒng)硬件初始化自下而上,從硬件到軟件分為三個主要環(huán)節(jié):片級初始化、板級初始化、系統(tǒng)級初始化;
- 片級初始化:主要是對微處理器進行初始化,包括:對處理器寄存器(包括數(shù)據(jù)寄存器和控制寄存器)的初始化,對處理器片內(nèi)總線的初始化;
- 板級初始化:主要是對軟硬兩部分初始化,包括:對非處理器部分的初始化,設(shè)置軟件系統(tǒng)運行需要的數(shù)據(jù)結(jié)構(gòu)和參數(shù);
- 系統(tǒng)初始化:主要是對操作系統(tǒng)和應用軟件的初始化。首先,BSP 將處理器的控制權(quán)轉(zhuǎn)交給操作系統(tǒng),操作系統(tǒng)完成初始化,并創(chuàng)建應用程序環(huán)境;然后,操作系統(tǒng)將處理器控制權(quán)交給應用程序。
- BSP 中包含硬件相關(guān)的設(shè)備驅(qū)動程序,BSP 一般不直接調(diào)用這些驅(qū)動程序,而是操作系統(tǒng)通過 BSP 連接驅(qū)動程序,最終是應用程序調(diào)用操作系統(tǒng)接口使用設(shè)備驅(qū)動程序,實現(xiàn)對硬件設(shè)備的操作;
系統(tǒng)軟件層
????????系統(tǒng)軟件層通常包括實時多任務(wù)操作系統(tǒng)(Real-Time Operation System, RTOS)、文件系統(tǒng)、圖像用戶接口(Graphic User Interface,GUI)、網(wǎng)絡(luò)系統(tǒng)、通用組件模塊。其中, RTOS 是嵌入式應用軟件的基礎(chǔ)和開發(fā)平臺。
RTOS
RTOS 的作用:
- 負責嵌入式系統(tǒng)資源分配(軟件/硬件資源);
- 任務(wù)調(diào)度;
- 同步機制;
- 中斷處理;
- 文件處理;
- 提供統(tǒng)一的設(shè)備驅(qū)動接口;
- 支持 TCP/IP 協(xié)議和其他協(xié)議;
- 提供 GUI 圖形化界面操作接口;
RTOS 的特點:
- 強實時性;
- 可裁剪性;
- 可移植性;
- 硬件適應性;
- 開放性;
RTOS 和 應用軟件被固化在嵌入式計算機的 ROM 中;
文件系統(tǒng)
嵌入式文件系統(tǒng)建立在 RTOS 之上,一般提供如下功能:
- 提供基本的文件存儲、檢索和更新功能;
- 支持 FAT32、JFFS2、YAFFS等幾種標準文件格式;
- 支持修改文件權(quán)限;
- 支持建立、修改、改變和刪除目錄等服務(wù);
- 支持創(chuàng)建、打開、讀寫、關(guān)閉和撤銷等服務(wù);
文件系統(tǒng)的特點:
- 強兼容性;
- 實時性;
- 可裁剪性;
GUI
????????GUI 為人機交互提供了非常人性化的接口。嵌入式GUI 與 PC 上的 GUI 有著明顯的不同,嵌入式的 GUI 具有如下特點:
- 輕量型;
- 占用資源少;
- 高性能;
- -高可靠性;
- 便于移植;
- 可配置;
應用層
????????應用層軟件就是根據(jù)實際需求開發(fā)的應用軟件。嵌入式應用軟件主要有以下特點:
- 反應快捷;
- 占用資源少;
- 同時方便多用戶操作;
- 友好的人機界面;
?
嵌入式5層軟件架構(gòu)1
- 硬件驅(qū)動層
- 功能模塊層
- 應用接口層
- 業(yè)務(wù)邏輯層
- 應用層
嵌入式5層軟件架構(gòu)2
- 硬件驅(qū)動層
- 功能模塊層
- 系統(tǒng)層
- 業(yè)務(wù)邏輯層
- 應用層
嵌入式6層軟件架構(gòu)
? ? ? ?簡寫 (英文全稱) |
名稱 | 內(nèi)容 | 說明 |
HAL (Hardware Abstract Layer) |
硬件抽象層 | 內(nèi)核驅(qū)動,主要是對SFR的配置,并將其封裝起來。 | 硬件抽象層和硬件驅(qū)動層則是項目需求書中的功耗等硬件相關(guān)的需求變動而改變,若子功能的增加而硬件不支持,則也需更換硬件驅(qū)動。比如項目中的數(shù)據(jù)儲存功能,硬件支持有AT24C02、W25Q128和芯片本身的FLASH,都可以支持數(shù)據(jù)儲存功能,即使后期因為功耗或節(jié)約成本等問題,硬件的更換也不影響數(shù)據(jù)儲存功能的實現(xiàn)(前提規(guī)劃好標準規(guī)范的API函數(shù)定義)且避免了重寫該功能代碼所帶來的各種問題,保證了該功能的穩(wěn)定性。 |
HDL (Hardware Drvier Layer) |
硬件驅(qū)動層 | 對HAL層和OSL層進行封裝,因為HAL層一般是廠家提供,不是特別方便直接使用 對一些非片內(nèi)的硬件資源(HAL庫不提供)進行驅(qū)動 |
|
OSL (Open System Layer) |
操作系統(tǒng)層 | 操作系統(tǒng)、文件系統(tǒng)、GUI | |
FML (Functional Module Layer) |
功能模塊層 | 功能模塊層是按照項目需求提取出來的功能,需要硬件抽象層和硬件驅(qū)動層的硬件支持才能實現(xiàn),功能模塊層根據(jù)項目的功能需求改變而改變。 | |
BLL (Business Logic Layer) |
業(yè)務(wù)邏輯層 | 按照流程來調(diào)用功能模塊工作 | |
APL (Application Layer) |
應用層? | 調(diào)用不同業(yè)務(wù)邏輯來完成應用 |
個人軟件架構(gòu)
MCU抽象層(MCU Abstract Layer) ? ? ?
MCU是開發(fā)的核心和基礎(chǔ),所以應將其作為最底層,為上層提供基礎(chǔ)支持。該層要求如下:
1,方便替換?單片機。
?????????每家芯片寄存器或API庫命名和操作都不相同,為了方便替換不對其他層代碼改動,把MCU外設(shè)(GPIO,AD,UART....)抽象封裝成統(tǒng)一的API或寄存器別名。
?2,方便應用? 不同項目。
? ? ? ? MCU是專業(yè)通用芯片,會應用在不通產(chǎn)品,所以該層不能體現(xiàn)項目和方案信息,應內(nèi)聚為MCU大類信息。
3,項目需要的進行抽象封裝。
????????如果完全將MCU的庫封裝一遍工作量將十分巨大,也沒必要,需要哪個就封裝哪個。例如用到uart了那就只把uart的封裝一下,像IIC、SPI等無關(guān)的可以不用封裝。不過可以一個項目一個項目的沉淀,越往后工作量越少。
硬件驅(qū)動層(Hardware Driver Layer) ? ??
????????這一層是純粹面向硬件設(shè)計的,對電路板的外設(shè)進行通用封裝抽象(移植其他項目也可以用,與應用邏輯無關(guān)聯(lián)),向上層提供硬件抽象接口。
????????如:常見的外圍EEPROM芯片AT24C02,W25Q64等;控制電源芯片,AD采樣芯片等;芯片級總線I2C、SPI,RS232協(xié)議、RS485協(xié)議、CAN總線等;按鍵,蜂鳴器,屏幕等驅(qū)動。
功能模塊層(Functional Module Layer)
????????MCU層與硬件驅(qū)動層是為了功能模塊提供的硬件驅(qū)動,從而實現(xiàn)項目需要的功能模塊。如存儲功能,電源設(shè)置功能,顯示功能,算法庫,文件庫等。向上提供應用層的功能模塊接口,向下調(diào)用驅(qū)動接口。
應用層(Application Layer)
?????????應用層主要負責功能模塊的使用和之間的邏輯關(guān)系處理等,實現(xiàn)產(chǎn)品整體功能系統(tǒng)邏輯。對于大部分單片機產(chǎn)品應用層一層就可以了,太復雜了,反而臃腫。但對于復雜的產(chǎn)品項目,可繼續(xù)細分,如下:
應用接口層:提供公共的 API 接口供應用接口供上層調(diào)用。這些接口也可由下層的功能模塊開放出來,應用接口層負責匯總。
業(yè)務(wù)邏輯層:如 CPU 卡處理,交通部卡處理,銀聯(lián)卡處理,M1 卡處理,通信記錄上傳,黑名單下載,票價參數(shù)下載等。文章來源:http://www.zghlxwxcb.cn/news/detail-417938.html
應用層:為程序的總體的運行框架,組織調(diào)用業(yè)務(wù)邏輯??梢杂媚撤N嵌入式操作系統(tǒng)實現(xiàn)幾種任務(wù) 。如定時任務(wù),卡處理任務(wù),菜單任務(wù),通信任務(wù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-417938.html
到了這里,關(guān)于單片機(嵌入式)程序分層架構(gòu)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!