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