王 丹,劉國(guó)棟,張海濤,張曉冬
(1.中國(guó)電子科技集團(tuán)公司第四十七研究所,沈陽(yáng)110000;2.中國(guó)人民解放軍95979 部隊(duì),山東 新泰271207)
隨著大數(shù)據(jù)、AI 技術(shù)等高新科技的快速發(fā)展,嵌入式系統(tǒng)已經(jīng)廣泛應(yīng)用在科學(xué)研究、軍事技術(shù)、工程設(shè)計(jì)、商業(yè)文化藝術(shù)、娛樂業(yè)、日常生活等方方面面。嵌入式系統(tǒng)基于計(jì)算機(jī)技術(shù),以應(yīng)用需求為中心,可以定制軟件和硬件。它適用于對(duì)功能、可靠性、成本、體積和功耗有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)是一個(gè)復(fù)雜的系統(tǒng),包括硬件與軟件兩大部分,硬件是以處理器為核心器件,再根據(jù)具體的應(yīng)用需求,選擇合適的外圍設(shè)備,通常核心器件的選型基本決定了整個(gè)系統(tǒng)的軟硬件架構(gòu)。軟件部分則包括開發(fā)環(huán)境、驅(qū)動(dòng)程序、操作系統(tǒng)、應(yīng)用程序等部分。整個(gè)嵌入式系統(tǒng)需要軟硬件協(xié)同配合,共同完成具體的應(yīng)用功能。
嵌入式系統(tǒng)硬件平臺(tái)一般包括處理器及外圍設(shè)備兩部分。目前應(yīng)用于嵌入式系統(tǒng)的處理器有很多種,其中基于ARM 架構(gòu)的處理器占主導(dǎo)地位[1-2]。ARM 公司提供ARM 架構(gòu)的IP 核,主要包括Classic系列和Cortex 系列。其產(chǎn)品系列如圖1 所示。
圖1 ARM 架構(gòu)系列產(chǎn)品
Classic 系列是ARM 公司早期推出的ARM 架構(gòu)的處理器。其中,ARM7 基于ARMv3 或ARMv4 架構(gòu);ARM9 基 于ARMv5 架 構(gòu);ARM11 則 是 基 于ARMv6 架構(gòu)。在該系列的ARM11 以后,ARM 公司產(chǎn)品開始進(jìn)入ARMv7 架構(gòu),改用Cortex 命名,分成A、R 和M 三類,旨在為不同定位的市場(chǎng)提供服務(wù)。
Cortex-M 系列處理器包括Cortex-M0、Cortex-M0+、Cortex-M1、Cortex-M3、Cortex-M4、Cortex-M7、Cortex -M23、Cortex -M33、Cortex -35、、Cortex -M55等,該系列產(chǎn)品主要應(yīng)用于對(duì)成本和功耗要求較高的應(yīng)用場(chǎng)景,如低端的工業(yè)控制和消費(fèi)等領(lǐng)域。
Cortex-R 系列處理器包括Cortex-R4、Cortex-R5、Cortex-R7、Cortex-R8、Cortex-R52 等。該系列處理器主要應(yīng)用于對(duì)實(shí)時(shí)性要求比較高的應(yīng)用場(chǎng)景,如動(dòng)力傳動(dòng)、汽車制動(dòng)系統(tǒng)等場(chǎng)景。
Cortex-A 系列處理器包括Cortex-A5、Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A15、Cortex-A17、Cortex-A32、Cortex-A34、Cortex-A35、Cortex-A53、Cortex-A55、Cortex-A57、Cortex-A65、Cortex-A72、Cortex-A73、Cortex-A75、Cortex-A76、Cortex-A77、等。該系列產(chǎn)品主要應(yīng)用于對(duì)處理器性能要求比較高的應(yīng)用領(lǐng)域。
各大廠家在授權(quán)付費(fèi)使用ARM IP 核的基礎(chǔ)上也研發(fā)各自的芯片,即嵌入式微控制器。目前主流的嵌入式微控制器廠商有ST、Microchip(Atmel)、TI、NXP(Freescale)、ST、SAMSUNG 等。在很大程度上,選擇嵌入式開發(fā)硬件平臺(tái)就等同于選擇嵌入式微控制器。系統(tǒng)中使用哪種微控制器,取決于應(yīng)用領(lǐng)域、用戶需求、成本、功耗、開發(fā)難度等因素。
確定要使用的嵌入式處理器之后,應(yīng)根據(jù)系統(tǒng)需求確定外圍設(shè)備的選型。系統(tǒng)外圍設(shè)備的選擇因素包括:電源供電系統(tǒng)、調(diào)試下載接口、外圍時(shí)鐘電路選擇、是否需要外圍儲(chǔ)存器擴(kuò)展、是否需要通信接口的收發(fā)器、模擬模塊的選擇、其他功能模塊等。
嵌入式系統(tǒng)開發(fā)之前首先要選擇合適的開發(fā)工具,要綜合考慮開發(fā)進(jìn)度和開發(fā)成本等因素。一套完整的集成開發(fā)環(huán)境(IDE)需要包括編輯軟件、編譯軟件、匯編軟件、鏈接軟件、調(diào)試軟件、工程管理及函數(shù)庫(kù)。目前主流的幾款I(lǐng)DE 包括:
(1) ADS
ADS 是ARM 公司的集成開發(fā)環(huán)境軟件,功能強(qiáng)大,包括:仿真器、C 編譯器、實(shí)時(shí)調(diào)試器、應(yīng)用函數(shù)庫(kù)。ADS 不僅提供軟件模擬仿真功能,而且提供強(qiáng)大的實(shí)時(shí)調(diào)試跟蹤功能。ADS 支持的硬件調(diào)試器是Multi-ICE 仿真器[3]。
(2) IAR
IAR 是由IAR Systems 公司開發(fā)的集成開發(fā)環(huán)境。與其他ARM 開發(fā)工具相比,其最大特點(diǎn)是簡(jiǎn)單易操作。IAR 包含完整的軟件仿真程序,用戶無需任何硬件支持,可以方便地仿真各種ARM 內(nèi)核。
(3) KEIL
KEIL 是Keil Software 公司出品的集成開發(fā)環(huán)境,除了支持ARM 系列處理器以外,還支持51 系列單片機(jī)等,是一款通用的開發(fā)工具。除一般IDE 功能外,它還可幫助用戶準(zhǔn)確調(diào)試ARM 器件的片內(nèi)外圍功能,并支持Philips、Samsung、Atmel、Analog Devices、Sharp、ST 等眾多廠商的ARM 微控制器。
(4) GNU
GNU[4]開發(fā)工具最重要特征是它的操作系統(tǒng)和開發(fā)工具是免費(fèi)的,均可以從互聯(lián)網(wǎng)上獲得所有開發(fā)工具及源代碼。GNU 包括Linux 操作系統(tǒng)、編譯器外、調(diào)試工具、二進(jìn)制轉(zhuǎn)換工具。GNU 開發(fā)工具的主要缺點(diǎn)是采用命令行方法的方法進(jìn)行編譯鏈接等操作,這就增加了用戶的操作復(fù)雜性及難度。但其同時(shí)也為用戶提供了更大的靈活性,有助于用戶更好了解系統(tǒng)設(shè)計(jì)的基礎(chǔ)與細(xì)節(jié)。
(5) RVDS
RVDS 是ARM 推出的新一代ARM 集成開發(fā)工具,其最顯著的功能是支持所有ARM 系列處理器,并與許多第三方實(shí)時(shí)操作系統(tǒng)和工具供應(yīng)商合作,很大程度上簡(jiǎn)化了開發(fā)流程。
驅(qū)動(dòng)程序是通過軟件控制硬件工作的代碼。硬件與軟件之間連接的橋梁是寄存器,軟件工程師通過閱讀芯片的數(shù)據(jù)手冊(cè),操作具體的寄存器控制硬件工作。通常對(duì)于ARM 處理器,各大IC 廠家在產(chǎn)品發(fā)布時(shí),會(huì)將驅(qū)動(dòng)程序開發(fā)好,以API 函數(shù)庫(kù)的形式提供給芯片使用者。用戶可直接調(diào)用封裝好的API 函數(shù)完成芯片的控制,因此可大大降低開發(fā)的難度及周期。對(duì)于有某些特殊應(yīng)用需要的使用者,也可以自行修改驅(qū)動(dòng)代碼,以達(dá)到例如縮短軟件運(yùn)行時(shí)間等特殊目的。
目前應(yīng)用于ARM 嵌入式開發(fā)的實(shí)時(shí)操作系統(tǒng)有很多[5],最主流的是VxWorks、μClinux、μC/OS 和eCos 等四種,各具有不同的特點(diǎn)及應(yīng)用領(lǐng)域。
VxWorks 是美國(guó)Wind River 公司開發(fā)的一種嵌入式操作系統(tǒng)[6],也是占有市場(chǎng)份額較多的一款嵌入式操作系統(tǒng)。VxWorks 由400 多個(gè)獨(dú)立的目標(biāo)模塊組成,具有靈活的可配置性。用戶可以根據(jù)自身需求選擇合適的模塊配置和定制系統(tǒng),甚至有的核心代碼最小可以縮小到8kB 左右。VxWorks 的可配置性也保證了更高的安全性和可靠性,因此被廣泛應(yīng)用于航天航空等對(duì)實(shí)時(shí)性和可靠性要求較高的領(lǐng)域。在外太空探索領(lǐng)域,VxWorks 操作系統(tǒng)一直是NASA 的最愛。
μC/OS 是一款小型的、開源的、搶占式實(shí)時(shí)操作系統(tǒng)[7],提供多任務(wù)管理和調(diào)度、任務(wù)之間的同步和通信、內(nèi)存管理、時(shí)間管理、中斷服務(wù)等功能。該系統(tǒng)對(duì)RAM 和ROM 的大小要求比較小,且簡(jiǎn)單易學(xué),特別適合于嵌入式系統(tǒng)初學(xué)入門者,對(duì)于ARM Cortex-M 系列的處理器,通常配合μC/OS 實(shí)時(shí)操作系統(tǒng),用于多任務(wù)處理的應(yīng)用場(chǎng)景。
μClinux[8]雖然是標(biāo)準(zhǔn)Linux 的縮小版,但是依然繼承了Linux 操作系統(tǒng)的主要功能,只是減少了對(duì)MMU 內(nèi)存管理單元的支持,更適合于沒有MMU單元的ARM 內(nèi)核。由于μClinux 缺少對(duì)MMU 的支持,因此用戶在使用時(shí)需要掌握一定的技巧。μClinux主要適用于與網(wǎng)絡(luò)功能相關(guān)的應(yīng)用,如Cisco 公司的2500/3000/4000 路由器,均是基于μClinux 操作系統(tǒng)開發(fā)的。
eCos 嵌入式操作系統(tǒng),最大的特點(diǎn)是靈活、可配置、模塊化設(shè)計(jì)。其核心代碼由一些小組件構(gòu)成,提供了大量的配置選項(xiàng),以滿足不同的應(yīng)用需求。該系統(tǒng)主要應(yīng)用于一些工業(yè)級(jí)及商業(yè)級(jí)對(duì)成本比較敏感的應(yīng)用場(chǎng)景中,例如消費(fèi)電子領(lǐng)域。
應(yīng)用軟件程序是嵌入式系統(tǒng)功能的軟件代碼實(shí)現(xiàn)。對(duì)于簡(jiǎn)單的應(yīng)用需求,通常不需要操作系統(tǒng)的支持;對(duì)于需要多任務(wù)處理的復(fù)雜應(yīng)用需求,則需要選擇一款合適的操作系統(tǒng)進(jìn)行多任務(wù)的并行處理。
嵌入式開發(fā)已從傳統(tǒng)的單機(jī),板級(jí)和串行通信轉(zhuǎn)變?yōu)槎鄼C(jī)、分布式計(jì)算和網(wǎng)絡(luò)通信。因此,除了考慮開發(fā)技術(shù)之外,還必須考慮實(shí)時(shí)嵌入式系統(tǒng)的改進(jìn)或升級(jí)技術(shù),實(shí)時(shí)開放技術(shù),實(shí)時(shí)組合技術(shù)和實(shí)時(shí)軟件工程技術(shù)。嵌入式系統(tǒng)的性能驗(yàn)證技術(shù),以及安全技術(shù)、容錯(cuò)技術(shù)、可靠性形式驗(yàn)證技術(shù)、質(zhì)量保證技術(shù)和測(cè)試認(rèn)證技術(shù)也非常重要,還應(yīng)在后續(xù)研究中持續(xù)關(guān)注。