什么是嵌入式軟件?
嵌入式軟件就是嵌入在硬件中的操作系統(tǒng)和開發(fā)工具軟件,它在產(chǎn)業(yè)中的關(guān)聯(lián)關(guān)系體現(xiàn)為:芯片設(shè)計(jì)制造→嵌入式系統(tǒng)軟件→嵌入式電子設(shè)備開發(fā)、制造。
嵌入式軟件最基本的理解是軟件+硬件結(jié)合,來對(duì)產(chǎn)品做出定義,而非嵌入式軟件又或是純互聯(lián)網(wǎng)行業(yè)則是單純的對(duì)軟件做出定義,其兼容性差,軟件移植性差。
傳統(tǒng)行業(yè)上對(duì)嵌入式的應(yīng)用較為廣闊,即便現(xiàn)在互聯(lián)網(wǎng)行業(yè)如此發(fā)達(dá),但是不得不承認(rèn),傳統(tǒng)行業(yè)在社會(huì)發(fā)展中有不可替代的地位。傳統(tǒng)行業(yè)與互聯(lián)網(wǎng)的結(jié)和的嵌入式開發(fā)應(yīng)用更是具有光明前景的。
嵌入式系統(tǒng)一般由嵌入式微處理器、外圍硬件設(shè)備、嵌入式操作系統(tǒng)以及用戶的應(yīng)用程序4個(gè)部分組成,用于實(shí)現(xiàn)對(duì)其他設(shè)備的控制、監(jiān)視或管理等功能。嵌入式軟件就是基于嵌入式系統(tǒng)設(shè)計(jì)的軟件,它也是計(jì)算機(jī)軟件的一種,同樣由程序及其文檔組成,是嵌入式系統(tǒng)的重要組成部分。
嵌入式中硬件和軟件也不再是截然分開的兩個(gè)概念,而是緊密結(jié)合、相互影響的。因而出現(xiàn)了軟硬件協(xié)同(codesign)設(shè)計(jì)方法,即使用統(tǒng)一的方法和工具對(duì)軟硬件,協(xié)同設(shè)計(jì)軟硬件體系結(jié)構(gòu),以最大限度地挖掘系統(tǒng)軟硬件能力,避免由于獨(dú)立設(shè)計(jì)軟硬件體系結(jié)構(gòu)而帶來的種種弊病,得到高性能低代價(jià)的優(yōu)化設(shè)計(jì)方案。
嵌入式軟件的特點(diǎn):
-
獨(dú)特的實(shí)用性
嵌入式軟件要求它與外部硬件和設(shè)備聯(lián)系緊密,嵌入式系統(tǒng)以應(yīng)用為中心,嵌入式軟件是應(yīng)用系統(tǒng),根據(jù)應(yīng)用需求定向開發(fā),面向產(chǎn)業(yè)、需要特定的行業(yè)經(jīng)驗(yàn)。每種嵌入式軟件都有自己獨(dú)特的應(yīng)用環(huán)境和實(shí)用價(jià)值。
-
靈活的適用性
嵌入式軟件通常可以認(rèn)為是一種模塊化軟件,它應(yīng)該能非常方便靈活地運(yùn)用到各種嵌入式系統(tǒng)中,而不能破壞或更改原有的系統(tǒng)特性和功能。嵌入式軟件要使用靈活,應(yīng)盡量優(yōu)化配置,減小對(duì)系統(tǒng)的整體繼承性,升級(jí)更換靈活方便。
-
程序代碼精簡
由于嵌入式系統(tǒng)本身的應(yīng)用有小體積、小存儲(chǔ)空間、低成本、低功耗等要求,嵌入式軟件和大型機(jī)上的軟件相比,具有代碼精簡、執(zhí)行效率高等特點(diǎn)。
-
可靠性、穩(wěn)定性高
嵌入式系統(tǒng)應(yīng)用要求一般較為苛刻,特別是在涉及安全相關(guān)的領(lǐng)域,如汽車電子(下面會(huì)具體說明汽車軟件嵌入式的相關(guān)內(nèi)容)、還有工業(yè)控制、航空航天等,這些領(lǐng)域的嵌入式系統(tǒng)不僅要求硬件可靠,還對(duì)嵌入式軟件提出了更高的要求。嵌入式軟件需要運(yùn)行可靠、穩(wěn)定,具有錯(cuò)誤處理及故障恢復(fù)等功能。
嵌入式軟件分類:
按照通常的分類方法,嵌入式軟件可以分為系統(tǒng)軟件、應(yīng)用軟件和支撐軟件三大類:
-
系統(tǒng)軟件
系統(tǒng)軟件控制和管理嵌入式系統(tǒng)資源,為嵌入式應(yīng)用提供支持的各種軟件,如設(shè)備驅(qū)動(dòng)程序、嵌入式操作系統(tǒng)、嵌入式中間件等。
-
應(yīng)用軟件
應(yīng)用軟件是嵌入式系統(tǒng)中的上層軟件,它定義了嵌入式設(shè)備的主要功能和用途,并負(fù)責(zé)與用戶進(jìn)行交互。應(yīng)用軟件是嵌入式系統(tǒng)功能的體現(xiàn),如飛行控制軟件、手機(jī)軟件、MP3播放軟件、電子地圖軟件等,一般面向特定的應(yīng)用領(lǐng)域。
-
支撐軟件
支撐軟件是指輔助軟件開發(fā)的工具軟件,如在線仿真工具、交叉編譯器源程序模擬器和配置管理工具等。
在嵌入式系統(tǒng)當(dāng)中,系統(tǒng)軟件和應(yīng)用軟件運(yùn)行在目標(biāo)平臺(tái)上(即嵌入式設(shè)備上),而對(duì)于各種軟件開發(fā)工具來說,它們大部分都運(yùn)行在開發(fā)平臺(tái)(PC機(jī))上,運(yùn)行Windows或 Linux操作系統(tǒng)。
嵌入式軟件和非嵌入式軟件的區(qū)別
嵌入式:在已有的硬件上移植(需要修改操作系統(tǒng)源碼,安裝不需要)操作系統(tǒng)解決軟硬件耦合導(dǎo)致的問題。
嵌入式軟件和非嵌入式軟件的區(qū)別(即傳統(tǒng)開發(fā)和嵌入式開發(fā)的優(yōu)缺點(diǎn)):
傳統(tǒng)開發(fā)的缺點(diǎn):
-
軟硬件耦合度高導(dǎo)致軟件移植性差
-
軟件開發(fā)人員必須懂硬件
-
軟件功能性差
優(yōu)點(diǎn):簡單,開發(fā)成本低
嵌入式開發(fā)的優(yōu)點(diǎn):
-
解決傳統(tǒng)開發(fā)軟硬件耦合度導(dǎo)致的問題
-
多任務(wù)機(jī)制
-
提供了豐富的網(wǎng)絡(luò)協(xié)議棧
-
提供了豐富的開源軟件和工具
缺點(diǎn):硬件成本高
汽車嵌入式軟件方向
嵌入式軟件部分分為軟件架構(gòu)、軟件刷寫、底層軟件、應(yīng)用層軟件和故障診斷等幾個(gè)部分。
軟件架構(gòu):
(1)Boot-loader;
(2)軟件平臺(tái)層;
(3)策略應(yīng)用層。
Boot-loader作為一個(gè)單獨(dú)的工程開發(fā),生成一個(gè)獨(dú)立的二進(jìn)制文件。
下圖為基于UDS協(xié)議的Boot-loader架構(gòu):
下圖為軟件架構(gòu):
軟件刷寫:控制器復(fù)位后,將根據(jù)外部硬件配置選擇boot-to-flash模式,跳轉(zhuǎn)到Boot-loader,執(zhí)行RAM自檢。若自檢成功并且檢測(cè)到有效的應(yīng)用軟件,將跳轉(zhuǎn)到應(yīng)用軟件,否則,進(jìn)入boot-loader模式,等待刷新有效的應(yīng)用軟件。下圖是Boot-loader軟件邏輯。
底層軟件架構(gòu)
硬件依賴層(底層驅(qū)動(dòng)):包括復(fù)雜驅(qū)動(dòng)、看門狗、基礎(chǔ)服務(wù)(系統(tǒng)調(diào)度所需定時(shí)器、中斷管理和一些通用處理函數(shù),如PLL驅(qū)動(dòng)、Flash驅(qū)動(dòng)、內(nèi)存管理驅(qū)動(dòng)、定時(shí)器驅(qū)動(dòng))、IO、CAN等其他驅(qū)動(dòng)。
硬件抽象層:對(duì)IO口、PWM、CAN、SPI等功能模塊進(jìn)行抽象定義,使得應(yīng)用程序?qū)崿F(xiàn)不同底層平臺(tái)的移植。
軟件集成:軟件集成就是將應(yīng)用層軟件與底層軟件集成為一個(gè)可刷寫到硬件中的軟件,軟件集成的變量映射關(guān)系詳見下圖:
底層會(huì)根據(jù)硬線或者CAN線輸入,生成一系列的接口變量(函數(shù)),應(yīng)用層直接調(diào)用底層上傳的接口變量(函數(shù))。硬件抽象層(HAL)將完成對(duì)底層信號(hào)到全局變量的映射。為實(shí)現(xiàn)硬件更改及平臺(tái)移植,底層軟件平臺(tái)采用宏和腳本來完成全局變量和API(應(yīng)用程序接口,例如函數(shù))的自動(dòng)生成。
VCU整車控制策略:
按功能模塊劃分有如下功能模塊:輸入信號(hào)處理、輸出信號(hào)處理、轉(zhuǎn)矩控制、上下電控制、檔位模式、系統(tǒng)能力估算、故障診斷處理、附件管理等。
從上圖可以看出,整車控制器分為三個(gè)層次:最上層為應(yīng)用層,也稱為控制策略層;中間一層為底層,也成為基礎(chǔ)平臺(tái)軟件層,它的作用類似電腦中的操作系統(tǒng),最下面一層為硬件層,就是電腦中的電路板。
轉(zhuǎn)自汽車電子與軟件