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