引言
由于各種新型微處理器的出現(xiàn)和應(yīng)用的不斷深化,,嵌入式系統(tǒng)" title="嵌入式系統(tǒng)">嵌入式系統(tǒng)在后PC時(shí)代得到了空前的發(fā)展,。隨著時(shí)間的推移和技術(shù)的進(jìn)步,,在工業(yè)控制和新興的手持式應(yīng)用等領(lǐng)域,用戶體驗(yàn)成為產(chǎn)品成功的關(guān)鍵因素之一,,越來(lái)越多的產(chǎn)品需要良好的用戶界面,、互聯(lián)功能以及較強(qiáng)的數(shù)據(jù)處理能力,這對(duì)嵌入式處理器硬件,、軟件,、教學(xué)等提出了新的要求。
1 嵌入式處理器與硬件
在處理器方面,,目前大量的中,、低端嵌入式應(yīng)用,主要使用8/16位單片機(jī),。在國(guó)內(nèi),,由于歷史的原因,主要是以MCS51核為主的許多不同型號(hào)單片機(jī),,主要廠商有Atmel,、Philips、Winbond,、宏晶等,。還有一些近幾年發(fā)展較快的新型單片機(jī),如PIC,、AVR,、MSP430系列等。這些單片機(jī)各有特點(diǎn),,但從目前的發(fā)展角度來(lái)看,,單片機(jī)針對(duì)特定應(yīng)用領(lǐng)域的個(gè)性化發(fā)展愈發(fā)明顯,典型的例子就是TI公司的MSP430系列16位單片機(jī),、ST公司的STM8L系列8位單片機(jī)和STM32L系列32位超低功耗單片機(jī),。
在嵌入式中的高端應(yīng)用領(lǐng)域,像工業(yè)控制,、POS機(jī),、網(wǎng)絡(luò)設(shè)備、圖像處理,、手機(jī),、PDA等,目前主要使用ARM" title="ARM">ARM,、MIPS,、PowerPC、DSP等16~64位處理器,以32位處理器為主,。各種類型的處理器都有其一定的應(yīng)用針對(duì)性,。例如,,DSP對(duì)數(shù)字信號(hào)處理技術(shù)中用到的常用運(yùn)算,、算法做了優(yōu)化設(shè)計(jì),主要用于實(shí)時(shí)信號(hào)處理領(lǐng)域,,如實(shí)時(shí)音視頻處理,、電機(jī)控制等。MIPS處理器性能很好,,但功耗較大,,適合于有交流電源供電的固定應(yīng)用,如固定的網(wǎng)絡(luò)設(shè)備,、機(jī)頂盒等,。ARM處理器性能高,功耗低,,適合于用電池供電的便攜,、手持式設(shè)備。由于近幾年便攜,、手持式嵌入式應(yīng)用的高速發(fā)展,,ARM處理器的增長(zhǎng)速度和市場(chǎng)占有率也快速提升,成為目前32位應(yīng)用中的主力產(chǎn)品,。
由于嵌入式應(yīng)用系統(tǒng)的廣泛性,,嵌入式系統(tǒng)的硬件設(shè)計(jì)涉及的知識(shí)面很廣,從模擬到數(shù)字,、低頻到高頻,、小信號(hào)到大功率,以及復(fù)雜的時(shí)序邏輯設(shè)計(jì)和PCB設(shè)計(jì),,還要考慮軟硬件資源的合理分配,,不僅要有廣而扎實(shí)的理論基礎(chǔ),更需要豐富的實(shí)踐經(jīng)驗(yàn),。只有對(duì)大大小小各種應(yīng)用系統(tǒng)反復(fù)實(shí)戰(zhàn)演練,,了解新技術(shù)、新器件,,使用過(guò)多種多樣的處理器和模擬/數(shù)字器件,,才能逐步積累,聚沙成塔,,對(duì)一個(gè)新的應(yīng)用系統(tǒng)給出快速,、合理的硬件方案與設(shè)計(jì)。
2 ARM處理器的優(yōu)勢(shì)
對(duì)于如今大量出現(xiàn)的32位嵌入式應(yīng)用,,以筆者之見(jiàn),,ARM處理器的優(yōu)勢(shì)主要有以下幾個(gè)方面,。
2.1 高性能、低功耗,、低價(jià)格
把ARM處理器的性能拿來(lái)和一些著名的通用處理器(如Pentium)相比是不合適的,,因?yàn)樗麄兏髯葬槍?duì)的應(yīng)用需求是不同的。Pentium處理器采用多條指令流水線的超標(biāo)量結(jié)構(gòu),,追求通用應(yīng)用目標(biāo)下的超強(qiáng)性能,,功耗大,可以用散熱器加風(fēng)扇散熱,。ARM針對(duì)嵌入式應(yīng)用,,在滿足性能要求的前提下,力求最低的功率消耗,。ARM結(jié)構(gòu)的優(yōu)點(diǎn)是能兼顧到性能,、功耗、代碼密度,、價(jià)格等幾個(gè)方面,,而且做得比較均衡。在性能/功耗比(MIPS/W)方面,ARM處理器具有業(yè)界領(lǐng)先的性能,?;贏RM核的芯片價(jià)格也很低,目前ARM CortexM的芯片價(jià)格可低至10元人民幣左右,。
2.2 豐富的可選擇芯片
ARM只是一個(gè)核,,ARM公司自己不生產(chǎn)芯片,采用授權(quán)方式給半導(dǎo)體生產(chǎn)商,。目前,,全球幾乎所有的半導(dǎo)體廠家都向ARM公司購(gòu)買了各種ARM核,配上多種不同的控制器(如LCD控制器,、SDRAM控制器,、DMA控制器等)和外設(shè)、接口,,生產(chǎn)各種基于ARM核的芯片,。目前,基于ARM核的各種處理器型號(hào)有好幾百種,,在國(guó)內(nèi)市場(chǎng)上,,常見(jiàn)的有ST、TI,、NXP,、Atmel、Samsung、OKI,、Sharp,、Hynix、Crystal等廠家的芯片,。用戶可以根據(jù)各自的應(yīng)用需求,,從性能、功能等方面考察,,在許多具體型號(hào)中選擇最合適的芯片來(lái)設(shè)計(jì)自己的應(yīng)用系統(tǒng),。由于ARM核采用向上兼容的指令系統(tǒng),,用戶開(kāi)發(fā)的軟件可以非常方便地移植到更高的ARM平臺(tái),。
2.3 廣泛的第三方支持
以如今的技術(shù),設(shè)計(jì)一個(gè)處理器并非難事,,但要使這個(gè)處理器得到大家認(rèn)可,,并取得市場(chǎng)成功卻是非常困難的,其中涉及許多技術(shù)與非技術(shù)的因素和環(huán)節(jié),,還包括時(shí)機(jī),、運(yùn)氣。因?yàn)楝F(xiàn)在許多產(chǎn)品的開(kāi)發(fā),,不是一個(gè)簡(jiǎn)單的處理器加幾百條指令,、語(yǔ)句就可以解決的。要用到32位處理器,,一般都要有編譯器,、高效的開(kāi)發(fā)工具(仿真器及調(diào)試環(huán)境)、操作系統(tǒng),、協(xié)議棧等,,這些東西都不是一個(gè)芯片生產(chǎn)商可以解決的,而需要許多第三方的支持,。這就像一粒種子,,需要土壤、空氣,、水等環(huán)境才能發(fā)芽,、成長(zhǎng)。這也是我們的一些“中國(guó)芯”該反思之處,。
ARM通過(guò)近20年的培育,、發(fā)展,得到了廣泛的第三方合作伙伴支持,。目前,,除通用編譯器GCC,ARM有自己的高效編譯、調(diào)試環(huán)境(MDK,、Keil),全球約有50家以上的實(shí)時(shí)操作系統(tǒng)(RTOS)軟件廠商和30家以上的EDA工具制造商,,還有很多高效率的實(shí)時(shí)跟蹤調(diào)試工具的廠商,對(duì)ARM提供了很好的支持,。用戶采用ARM處理器開(kāi)發(fā)產(chǎn)品,,既可以獲得廣泛的支持,也便于和同行交流,,加快開(kāi)發(fā)進(jìn)度,,縮短產(chǎn)品的上市時(shí)間。
2.4 完整的產(chǎn)品線和發(fā)展規(guī)劃
ARM核根據(jù)不同應(yīng)用需求對(duì)處理器的性能要求,,有一個(gè)從ARM7,、ARM9到ARM10、ARM11,,以及新定義的CortexM/R/A系列完整的產(chǎn)品線,。前幾年應(yīng)用較多的主要是基于V4架構(gòu)的ARM7TDMI、ARM720T,、ARM920T核的一些處理器芯片,,如NXP的LPC2000系列、ST的STR7/9系列,、Atmel 的AT91系列和Samsung的S3C系列,。近兩年,ARM Cortex系列以更好的性能,、更低的價(jià)格得到快速推廣,,典型的就是基于CortexM3的STM32系列。
ARM CortexM/R/A系列分別針對(duì)不同的應(yīng)用領(lǐng)域,。M系列主要面向傳統(tǒng)微控制器(MCU/單片機(jī))應(yīng)用,,這類應(yīng)用面很廣,要求處理器有豐富的外設(shè),,并且各方面比較均衡,;R系列強(qiáng)調(diào)實(shí)時(shí)性,主要用于實(shí)時(shí)控制,,如汽車引擎,;A系列面向高性能、低功耗應(yīng)用系統(tǒng),,如智能手機(jī),。選用ARM處理器進(jìn)行開(kāi)發(fā),技術(shù)積累性較強(qiáng),,生命周期長(zhǎng),,設(shè)計(jì)重用度高,,不易被淘汰。用戶在選擇ARM處理器時(shí),,可以針對(duì)應(yīng)用需求,,從大量的ARM芯片中選用滿足性能、功能要求的產(chǎn)品,,以獲得較好的性價(jià)比,。
3 ARM嵌入式系統(tǒng)的軟件
由于嵌入式系統(tǒng)的差異性很大,對(duì)不同的應(yīng)用需求,,必須選擇不同的軟件設(shè)計(jì)方法,、開(kāi)發(fā)平臺(tái)和系統(tǒng)工具。
對(duì)于一些不需要復(fù)雜圖形用戶界面,、通信協(xié)議和復(fù)雜文件操作(如同時(shí)打開(kāi)多個(gè)文件)的應(yīng)用,,如果選用CortexM3核的處理器就已可以滿足要求,任務(wù)數(shù)不多,,任務(wù)之間的關(guān)系也不復(fù)雜,,則不一定需要移植復(fù)雜的操作系統(tǒng),。這樣一方面可以降低系統(tǒng)硬件開(kāi)銷,,也可以獲得更好的實(shí)時(shí)性和執(zhí)行速度。不過(guò),,這樣的軟件開(kāi)發(fā)方法需要開(kāi)發(fā)人員有較好的程序設(shè)計(jì)思想,,對(duì)所用器件有深入的了解,并掌握其編程控制方法,。若引入一個(gè)簡(jiǎn)單的操作系統(tǒng),,如μC/OS,可以簡(jiǎn)化程序結(jié)構(gòu),,但開(kāi)發(fā)者最好熟悉其內(nèi)核結(jié)構(gòu),,并有使用經(jīng)驗(yàn),否則可能會(huì)需要更多的系統(tǒng)開(kāi)發(fā),、調(diào)試時(shí)間,。
如果選擇了帶存儲(chǔ)器管理單元(MMU)的ARM處理器(如ARM920T、CortexA8等),,這種應(yīng)用系統(tǒng)根據(jù)應(yīng)用,、實(shí)時(shí)性、開(kāi)發(fā)環(huán)境等因素,,移植一個(gè)功能較強(qiáng)的操作系統(tǒng)一般情況下會(huì)比較合適,,如Linux、WinCE,,甚至新的Android等,。這種系統(tǒng)的開(kāi)發(fā)難度主要是在OS的移植以及硬件驅(qū)動(dòng)程序的開(kāi)發(fā)上,。當(dāng)這二步工作完成后,主要的軟件開(kāi)發(fā)工作已和在PC機(jī)上開(kāi)發(fā)沒(méi)有多大區(qū)別,,可以按照一般的軟件工程方法來(lái)進(jìn)行,,要注意的只是與ARM硬件平臺(tái)相關(guān)的軟件優(yōu)化問(wèn)題。
由于嵌入式系統(tǒng)硬件資源的有限性,,嵌入式軟件與其他應(yīng)用軟件的主要區(qū)別,,在于嵌入式軟件要有較高的效率,包括執(zhí)行速度和存儲(chǔ)空間,,盡管這二者經(jīng)常是相互矛盾的,。目前一般要求更多的是速度優(yōu)化。要編寫(xiě)出高效的ARM程序,,需要開(kāi)發(fā)人員熟悉ARM的體系結(jié)構(gòu),,包括內(nèi)核結(jié)構(gòu)、指令系統(tǒng),、Cache與存儲(chǔ)器結(jié)構(gòu)等,,還要有好的程序設(shè)計(jì)思想,以及對(duì)一些常用函數(shù),、算法的深刻理解,。這個(gè)過(guò)程也是ARM系統(tǒng)開(kāi)發(fā)從低級(jí)到高級(jí)的進(jìn)階之路。
目前,,由于應(yīng)用系統(tǒng)越來(lái)越復(fù)雜,,嵌入式軟件的移植性和重用性也得到了人們的高度重視,因?yàn)樗苯佑绊懙角度胧杰浖拈_(kāi)發(fā)效率和質(zhì)量,。選擇一種通用的開(kāi)發(fā)環(huán)境和高級(jí)編程語(yǔ)言,,使開(kāi)發(fā)的嵌入式軟件可以方便地移植到不同的硬件平臺(tái),是實(shí)現(xiàn)軟件重用的基礎(chǔ),。目前在ARM嵌入式系統(tǒng)開(kāi)發(fā)中,,ARM RealView、Keil以及IAR的EWARM是較好的開(kāi)發(fā)平臺(tái),,C/C++語(yǔ)言是應(yīng)用最廣泛的編程語(yǔ)言,,并具有廣泛的庫(kù)函數(shù)、程序支持,,在今后很長(zhǎng)一段時(shí)間內(nèi),,仍將在嵌入式系統(tǒng)應(yīng)用領(lǐng)域中占重要地位。
4 嵌入式系統(tǒng)的教學(xué)
如今,,嵌入式系統(tǒng)作為一個(gè)熱門(mén)領(lǐng)域,,其教學(xué)問(wèn)題也頗受高校的關(guān)注。教學(xué)的主要目的是培養(yǎng)社會(huì)需要的人,,由于嵌入式系統(tǒng)的廣泛性,、差異性,,社會(huì)對(duì)從事嵌入系統(tǒng)開(kāi)發(fā)人員的要求也有很大的不同,既需要從事簡(jiǎn)單8/16位單片機(jī)開(kāi)發(fā)的人員,,也需要從事ARM,、DSP開(kāi)發(fā)的人員;既要有從事硬件,、底層軟件開(kāi)發(fā)的人員,,也要有從事OS移植、應(yīng)用軟件開(kāi)發(fā)的人員,。由于整個(gè)大學(xué)學(xué)習(xí)時(shí)間和課程教學(xué)時(shí)數(shù)的限制,,一個(gè)人顯然不可能學(xué)習(xí)、掌握嵌入系統(tǒng)開(kāi)發(fā)的各個(gè)層面,。所以,,各個(gè)學(xué)校首先應(yīng)根據(jù)自身情況,明確定位,,確定自己培養(yǎng)學(xué)生的社會(huì)適應(yīng)面,,然后再制定教學(xué)大綱,確定課程內(nèi)容和實(shí)驗(yàn)平臺(tái),。對(duì)于高職,、普通高校的電類與非電類專業(yè)、軟件學(xué)院等,,都應(yīng)該有不同的選擇,,而不是人云亦云,一哄而上,。
就目前的發(fā)展看,由于ARM等32位處理器應(yīng)用漸成主流,,開(kāi)發(fā)工具已較完善,、成熟,對(duì)于普通高校計(jì)算機(jī)學(xué)科的嵌入式系統(tǒng)教學(xué),,筆者認(rèn)為可以定位在以32位嵌入式系統(tǒng)開(kāi)發(fā)為主,,重點(diǎn)是嵌入式系統(tǒng)的軟硬件結(jié)構(gòu)、嵌入式OS的知識(shí),,以及嵌入式軟件設(shè)計(jì)(包括優(yōu)化),。課程主體內(nèi)容基本與硬件平臺(tái)(處理器型號(hào))無(wú)關(guān),實(shí)驗(yàn)可以采用基于ARM核的不同廠家處理器的實(shí)驗(yàn)平臺(tái),。主要考慮以下幾點(diǎn):
?、僭?2位嵌入式系統(tǒng)開(kāi)發(fā)上,軟件開(kāi)發(fā)人員的需求比硬件開(kāi)發(fā)人員要多得多(盡管目前硬件開(kāi)發(fā)人員較難找,,但這應(yīng)該是電子等專業(yè)培養(yǎng)的),。一般在一個(gè)從事嵌入式應(yīng)用系統(tǒng)開(kāi)發(fā)的公司中,,軟硬件人員的比例不會(huì)小于10:1。由于學(xué)習(xí)時(shí)間有限,,教學(xué)重點(diǎn)應(yīng)該偏軟件,。
②現(xiàn)代社會(huì)強(qiáng)調(diào)分工,、合作,,以求得整體利益的最大化。對(duì)個(gè)人的要求首先是專才,,能把局部工作做精,、做好。通才是需要的,,但數(shù)量會(huì)比專才少得多,,而且通才是練出來(lái)的,不是教出來(lái)的,。今后的大學(xué)是大眾教育,,教學(xué)只能面向大眾需求。在相關(guān)專業(yè)的研究生階段,,對(duì)一些有基礎(chǔ),、有興趣的學(xué)生,可以進(jìn)行一些系統(tǒng)級(jí)硬件,、底層軟件的開(kāi)發(fā)實(shí)踐,,同時(shí)也可滿足社會(huì)對(duì)高層次嵌入式人才的需要。
?、垡源藶橹?,可以再開(kāi)設(shè)2門(mén)選修課。向下為“單片機(jī)原理與應(yīng)用”,,此課程以實(shí)踐為主,,讓有興趣的學(xué)生可以自己設(shè)計(jì)、制作一些單片機(jī)應(yīng)用系統(tǒng),,同時(shí)也鍛煉了硬件動(dòng)手能力,。向上為“數(shù)字信號(hào)處理(DSP)”,讓那些數(shù)學(xué)基礎(chǔ)較好,、對(duì)實(shí)時(shí)信號(hào)處理有興趣的學(xué)生有用武之地(現(xiàn)在這樣的學(xué)生很難得),。
另外,由于應(yīng)用日趨復(fù)雜,,而教學(xué)時(shí)間有限,,一個(gè)本科生在校期間不可能深入學(xué)習(xí)嵌入式系統(tǒng)的很多細(xì)節(jié),嵌入式教學(xué)應(yīng)采用自上而下的教學(xué)方法,。一開(kāi)始不必花很多時(shí)間講解處理器內(nèi)核架構(gòu)/指令系統(tǒng),,只要知道各種內(nèi)核的基本特點(diǎn)即可,,重點(diǎn)學(xué)習(xí)、掌握處理器,、外設(shè)的編程結(jié)構(gòu)(即編程者角度看到的編程模型結(jié)構(gòu),,非具體物理實(shí)現(xiàn)結(jié)構(gòu))。真實(shí)的應(yīng)用,、研究設(shè)計(jì)都是從粗粒度向細(xì)粒度進(jìn)階的,,是一個(gè)自頂向下的過(guò)程,首先要重視的是系統(tǒng)架構(gòu)和各個(gè)抽象層,。1000行的C程序,,編譯后生成的目標(biāo)代碼只有10 KB左右,試想現(xiàn)在的MCU Flash動(dòng)輒幾百KB,,為什么,?一個(gè)目標(biāo)代碼幾百KB的C程序,一般不是完全由個(gè)人寫(xiě)出來(lái)的,,而都會(huì)使用一些第三方的庫(kù)函數(shù),、中間件等。硬件也一樣,,現(xiàn)在很多硬件系統(tǒng)都會(huì)使用一些模塊(Module),,盡管這些模塊看上去還是一個(gè)芯片,但實(shí)際上已經(jīng)是一個(gè)SiP模塊,,如WiFi模塊,。所以,在了解基本嵌入式系統(tǒng)結(jié)構(gòu)的基礎(chǔ)上,,本科階段要更多地學(xué)習(xí)各種系統(tǒng),、模塊、外設(shè),、協(xié)議,、庫(kù)函數(shù)的“邊界(InteRFace)”,能夠搭建一個(gè)簡(jiǎn)單系統(tǒng)(How to do),,今后在工作、或研究生階段進(jìn)一步去做好一個(gè)系統(tǒng)(How to do better),。
5結(jié)語(yǔ)
嵌入式系統(tǒng)作為一種特殊的計(jì)算機(jī)應(yīng)用系統(tǒng),,在任何時(shí)期都有相對(duì)的高、中,、低端應(yīng)用,,即使在今后,沒(méi)有OS支持的4位或8位單片機(jī)的嵌入式應(yīng)用仍有大量需求,,但趨勢(shì)是系統(tǒng)化,、復(fù)雜化,。這既是嵌入式系統(tǒng)的特點(diǎn)--廣泛性、差異性和不可壟斷性,,也是廣大嵌入系統(tǒng)研發(fā)人員的生存與發(fā)展空間,。ARM處理器在便攜、手持式設(shè)備以及工業(yè)控制等應(yīng)用領(lǐng)域,,在今后相當(dāng)長(zhǎng)的時(shí)間內(nèi)是一個(gè)很好的選擇,。當(dāng)然,沒(méi)有一種型號(hào)的處理器是可以覆蓋所有應(yīng)用的,,也不是搬上一個(gè)嵌入式OS,,就可以很好地解決軟件問(wèn)題的。深入了解各種器件特性,,選擇最合適的處理器,、外圍器件、操作系統(tǒng)和軟件庫(kù),,盡可能地優(yōu)化軟件設(shè)計(jì),,最貼切地滿足應(yīng)用需求,以獲得最好的系統(tǒng)性價(jià)比,,是嵌入式系統(tǒng)設(shè)計(jì)開(kāi)發(fā)的精髓,。