漆震云
摘要:文章從學習嵌入式系統(tǒng)開發(fā)所需要具備的計算機專業(yè)理論基礎、硬件和軟件方面的基本知識、基本技能和基本方法入手,從軟件工程方法角度提出嵌入式系統(tǒng)開發(fā)方法及其工程應用,為構建嵌入式系統(tǒng)開發(fā)人員智能結構基礎做了一些有益的探索。
關鍵詞:嵌入式系統(tǒng);開發(fā)方法;智能結構
嵌入式系統(tǒng)是以單個或幾個特定功能程序加上相關操作系統(tǒng)存儲在ROM中的、以實現(xiàn)特定控制功能為目的的專用的嵌入式處理器控制單元。嵌入式系統(tǒng)的開發(fā)設計與實現(xiàn)以計算機專業(yè)技術和相關應用領域專業(yè)知識為基礎,通過以嵌入式處理器為核心的硬件與軟件有機結合、優(yōu)勢互補的專門設計,滿足特定應用項目對控制功能、外形尺寸、功率損耗、經濟成本、可靠性等方面的特殊需求。
ARM+Linux是目前比較流行的嵌入式系統(tǒng)開發(fā)組合模式,從硬件方面,需要學習ARM接口電路設計和C語言的板級編程,從軟件方面,需要學習ARM處理器的操作系統(tǒng)層面的驅動與移植。
本文從學習嵌入式系統(tǒng)開發(fā)需要具備的計算機專業(yè)理論基礎、硬件和軟件方面的基本知識、基本技能和基本方法入手,從軟件工程方法角度提出嵌入式系統(tǒng)開發(fā)方法及其工程應用。
1 嵌入式軟件開發(fā)需要具備的知識
1.1 理論基礎方面的基本知識與基本技能
嵌入式軟件開發(fā)需要具備理論基礎知識方面包括以下內容。
(1)理論基礎知識。微機原理及接口技術、單片機原理及接口技術等。(2)嵌入式專業(yè)基礎知識。單片機包括STM32, MSP430, AVR等。嵌入式FPGA:邏輯設計、協(xié)議轉換、算法設計等。嵌入式DSP:DSP算法開發(fā)、DSP驅動開發(fā)等。嵌入式ARM:系統(tǒng)內核、驅動開發(fā)、應用開發(fā)、bootloader開發(fā)等。(3)嵌入式專業(yè)應用基礎知識。信號多媒體領域應用基礎知識包括音頻、視頻和圖像等;通信領域應用基礎知識包括通信原理、隨機信號自適應等;控制領域應用基礎知識包括控制原理、人工智能、機器學習等。
1.2 硬件方面的基本知識與基本技能
嵌入式軟件開發(fā)需要具備硬件方面的基本知識與基本技能包括以下內容。
(1)電路與電子技術基礎:電路分析基礎、模擬電子技術、數字電子技術、微處理器技術、電子元器件基本知識。(2)電路圖識圖與制圖。(3)PCB基礎:PCB制圖、PCB加工工藝等。(4)高速信號電路與電源等。
嵌入式系統(tǒng)開發(fā)需要具備硬件方面的基礎知識與基本技能主要包括嵌入式微處理器的體系結構和硬件總線接口。嵌入式處理器的體系結構既可以采用馮·諾依曼體系結構,也可以采用哈佛體系結構。指令系統(tǒng)既可以選用精簡指令系統(tǒng)(Reduced Instruction Set Computer,RISC),也可以選用復雜指令系統(tǒng)(Complex Instruction Set Computer,CISC)。RISC由于在數據通道中只包含最有用的指令,可以確保指令的快速執(zhí)行,從而節(jié)約了指令執(zhí)行時間、提高了指令執(zhí)行效率,并使得嵌入式系統(tǒng)硬件設計更加簡捷。
目前應用比較廣泛的嵌入式處理器包括ARM,MIPS,PowerPC,DSP等,建議首先以目前主要流行的嵌入式處理器的一種,作為入門性學習,從而掌握嵌入式處理器的基本知識與基本技能,然后根據學習和工作需要,再進行針對性的強化學習和補充,采取精通一個,觸類旁通的學習方法。需要預先學習微機原理、單片機原理作為基礎。
嵌入式處理器的硬件總線接口基本知識與基本技能,目前主要流行的嵌入式處理器的硬件總線接口包括模/數(Analog to Digit,A/D)轉換接口、數/模(Digit to Analog,D/A)轉換接口,I/O接口包括RS-232串行通信接口、Ethernet以太網接口、USB通用串行總線接口、SPI串行外圍設備接口、Audio音頻接口、VGA視頻輸出接口、IrDA紅外線接口、IIC集成電路總線、UART通用異步串行總線接口、MDIO管理數據輸入輸出串行總線接口等。
各種外部設備都必須通過硬件總線接口與嵌入式微處理器監(jiān)控系統(tǒng)進行物理連接,熟悉和掌握各種硬件總線接口基本知識與基本技能,對于嵌入式驅動軟件的開發(fā)具有極其重要的意義。
1.3 軟件方面的基本知識與基本技能
⑴工具類包括C語言,C++語言(Qt,MFC), Python,Matlab,LabVIEW等。(2)程序類包括程序算法、數據結構等。(3)系統(tǒng)類包括Linux系統(tǒng)、Windows系統(tǒng)等。
嵌入式軟件開發(fā)以C語言為基本開發(fā)語言,C語言是一門通用的計算機程序設計語言,C語言包括數據類型、運算符與表達式、程序結構、順序、選擇、循環(huán)、數組、函數、預處理命令、指針、結構體與共用體、文件、位運算等內容。
熟悉和掌握指針、結構指針、指針函數、數據類型及轉換的基本知識,對const,static,volatile,packed,aligned等常用關鍵字的意義與功能的理解。
C語言既具有高級語言的結構化特點,又具有匯編語言的實用性特點,還具有可移植性的特點。C語言具有很多低級處理功能,同時具有代碼級別跨平臺運行特點,以標準規(guī)格編寫的C語言程序可運用于多種操作系統(tǒng),如Windows,DOS,UNIX等操作系統(tǒng),也適用于在大、中、小、微型計算機以及嵌入式單片機平臺進行編譯。
具備超強的數據處理能力使得C語言廣泛應用于系統(tǒng)軟件開發(fā)、應用軟件開發(fā)、二維與三維圖形和動畫設計等各類科研生產生活領域。
在嵌入式系統(tǒng)開發(fā)設計與實現(xiàn)過程中,C語言既可以用于編寫嵌入式系統(tǒng)的系統(tǒng)程序,也可以用于編寫不依賴于嵌入式系統(tǒng)硬件的應用程序。
1.4 嵌入式軟件開發(fā)的基本方法與基本技能
嵌入式軟件開發(fā)的基本方法與基本技能的形成,首先是嵌入式軟件開發(fā)環(huán)境的構建與嵌入式軟件開發(fā)流程的熟悉,其次是嵌入式軟件驅動程序開發(fā)和嵌入式軟件應用程序開發(fā)的基本知識與基本訓練,學習理解和掌握嵌入式軟件設計理念和方法,最后就是把以上這些基本知識、基本技能和基本方法,通過編程實踐,融會貫通形成自己的設計理念與方法,運用到嵌入式軟件開發(fā)工程項目的設計與實現(xiàn)之中,循環(huán)往復不斷提升。
嵌入式系統(tǒng)具有鮮明的專用性,必須結合項目需求具體實際情況,以嵌入式處理器為核心的硬件與軟件有機結合、優(yōu)勢互補的專門設計,才能滿足應用系統(tǒng)項目對控制功能、外形尺寸、功率損耗、經濟成本、可靠性等方面的特殊需求。
通過構建相對通用的嵌入式系統(tǒng)開發(fā)所需要的軟硬件環(huán)境平臺,開發(fā)出適應各種功能需要的應用系統(tǒng),是嵌入式系統(tǒng)開發(fā)人員的初衷與愿望。目前嵌入式系統(tǒng)的核心內容往往是一個只有幾K或幾十K微內核,根據項目需求實際情況,對微內核進行功能擴展或裁剪是比較高效快捷的嵌入式系統(tǒng)軟件開發(fā)方法。
嵌入式系統(tǒng)的構架分成4個部分:嵌入式微處理器、存儲器(SDRAM,ROM,F(xiàn)lash)、輸入輸出(A/D,D/A,I/O)接口、操作系統(tǒng)軟件和應用軟件。
嵌入式系統(tǒng)裝置由嵌入式計算機控制系統(tǒng)和執(zhí)行機構組成,執(zhí)行機構接受嵌入式計算機控制系統(tǒng)發(fā)出的控制指令,執(zhí)行相關特定的操作功能。執(zhí)行機構既可以很簡單,也可以很復雜。根據項目應用需求,集成相關數量和種類的微小型控制電機以及相關數量和種類的傳感器,從而感受各種狀態(tài)信息并執(zhí)行相關特定的功能動作。
從嵌入式系統(tǒng)開發(fā)設計實現(xiàn)角度分析,嵌入式系統(tǒng)由硬件層、中間層、系統(tǒng)軟件層和應用軟件層組成。
(1)硬件層就是在一片芯片上集成嵌入式處理器電路、存儲器(SDRAM,ROM,F(xiàn)lash)電路和輸入輸出(A/D,D/A,I/O)電路、電源電路、時鐘電路等功能電路,嵌入式操作系統(tǒng)軟件和應用軟件都固化在ROM中。多功能的高度集成使得其具有體積小和高效率、高可靠性等特點。(2)中間層也稱為硬件抽象層(Hardware Abstraction Layer,HAL)或板級支持包(Board Support Package,BSP),包括嵌入式系統(tǒng)硬件初始化和硬件相關的設備驅動程序初始化。中間層把系統(tǒng)軟件層與硬件層分離開,使得軟件開發(fā)僅根據BSP層提供的接口,而無需關注硬件的具體情況。(3)系統(tǒng)軟件層由多任務實時操作系統(tǒng)(Real Time Operating System,RTOS)、文件系統(tǒng)、圖形用戶接口(Graphical User Interface,GUI)、網絡系統(tǒng)及通用組件模塊組成,在系統(tǒng)開發(fā)中根據項目需求進行移植。(4)應用軟件層主要包括在操作系統(tǒng)下的編程接口函數調用、嵌入式數據庫設計、網絡編程、應用層面的應用開發(fā)。
2 嵌入式軟件開發(fā)方法
軟件開發(fā)方法歷經面向過程、面向對象、面向服務的模式轉換,不斷改善項目需求客戶與系統(tǒng)開發(fā)人員之間的有效聯(lián)系與溝通,使得軟件開發(fā)從設計到實現(xiàn)以及維護各環(huán)節(jié),內容逐步明晰與效率不斷提高。
2.1 結構化的軟件開發(fā)方法
結構化的軟件開發(fā)方法采用自頂向下逐步求精的方法,把整個軟件開發(fā)任務抽象為一系列功能模塊的組合。結構化的軟件開發(fā)方法具有系統(tǒng)穩(wěn)定性低、功能適應性低、開發(fā)效率低、開發(fā)周期較長的特點。
2.2 面向對象的軟件開發(fā)方法
面向對象的軟件開發(fā)方法針對結構化的軟件開發(fā)方法的功能適應性低的不足,主要采取把同一范圍內各個相似功能統(tǒng)一抽象為一個類,并提供一個統(tǒng)一接口供其他類調用的方法。顯著降低了軟件開發(fā)成本、提高了軟件開發(fā)效率。適用于較大規(guī)模軟件項目的開發(fā)。
2.3 模型驅動開發(fā)方法
模型驅動開發(fā)方法通過構建系統(tǒng)模型來驅動整個系統(tǒng)的開發(fā),實現(xiàn)系統(tǒng)分析、系統(tǒng)設計、系統(tǒng)實現(xiàn)與測試的自動化。以模型驅動為中心改變了以編寫代碼為中心,適用于更廣泛的應用項目開發(fā)。
2.4 基于組件的開發(fā)方法
基于組件的開發(fā)方法通過把特定功能封裝為一個獨立的功能組件,各組件獨立于編程語言與開發(fā)平臺。極大提高了功能組件對于不同項目軟件開發(fā)的復用性、功能組件對于不同軟件開發(fā)平臺的可移植性、功能組件對于不同軟件架構適應性,讓系統(tǒng)開發(fā)人員更多精力專注于項目需求的邏輯分析與綜合,提高開發(fā)效率、縮短開發(fā)周期。適用于大型軟件開發(fā)項目。
3 結語
以上關于嵌入式系統(tǒng)開發(fā)方法的應用設想,是筆者結合自己在工作實踐中的心得體會提出的教學改革基本設想,以期為構建嵌入式系統(tǒng)開發(fā)人員智能結構基礎做出一些有益的探索。