分析ARM嵌入式系統(tǒng)應用中的問題總結
如果選擇了帶存儲器管理單元(MMU)的ARM處理器(如ARM920T、CortexA8等),這種應用系統(tǒng)根據(jù)應用、實時性、開發(fā)環(huán)境等因素,移植一個功能較強的操作系統(tǒng)一般情況下會比較合適,如Linux、WinCE,甚至新的Android等。這種系統(tǒng)的開發(fā)難度主要是在OS的移植以及硬件驅(qū)動程序的開發(fā)上。當這二步工作完成后,主要的軟件開發(fā)工作已和在PC機上開發(fā)沒有多大區(qū)別,可以按照一般的軟件工程方法來進行,要注意的只是與 ARM硬件平臺相關的軟件優(yōu)化問題。
由于嵌入式系統(tǒng)硬件資源的有限性,嵌入式軟件與其他應用軟件的主要區(qū)別,在于嵌入式軟件要有較高的效率,包括執(zhí)行速度和存儲空間,盡管這二者經(jīng)常是相互矛盾的。目前一般要求更多的是速度優(yōu)化。要編寫出高效的ARM程序,需要開發(fā)人員熟悉ARM的體系結構,包括內(nèi)核結構、指令系統(tǒng)、Cache與存儲器結構等,還要有好的程序設計思想,以及對一些常用函數(shù)、算法的深刻理解。這個過程也是ARM系統(tǒng)開發(fā)從低級到高級的進階之路。
目前,由于應用系統(tǒng)越來越復雜,嵌入式軟件的移植性和重用性也得到了人們的高度重視,因為它直接影響到嵌入式軟件的開發(fā)效率和質(zhì)量。選擇一種通用的開發(fā)環(huán)境和高級編程語言,使開發(fā)的嵌入式軟件可以方便地移植到不同的硬件平臺,是實現(xiàn)軟件重用的基礎。目前在ARM嵌入式系統(tǒng)開發(fā)中,ARM RealView、Keil以及IAR的EWARM是較好的開發(fā)平臺,C/C++語言是應用最廣泛的編程語言,并具有廣泛的庫函數(shù)、程序支持,在今后很長一段時間內(nèi),仍將在嵌入式系統(tǒng)應用領域中占重要地位。
4 嵌入式系統(tǒng)的教學
如今,嵌入式系統(tǒng)作為一個熱門領域,其教學問題也頗受高校的關注。教學的主要目的是培養(yǎng)社會需要的人,由于嵌入式系統(tǒng)的廣泛性、差異性,社會對從事嵌入系統(tǒng)開發(fā)人員的要求也有很大的不同,既需要從事簡單8/16位單片機開發(fā)的人員,也需要從事 ARM、DSP開發(fā)的人員;既要有從事硬件、底層軟件開發(fā)的人員,也要有從事OS移植、應用軟件開發(fā)的人員。由于整個大學學習時間和課程教學時數(shù)的限制,一個人顯然不可能學習、掌握嵌入系統(tǒng)開發(fā)的各個層面。所以,各個學校首先應根據(jù)自身情況,明確定位,確定自己培養(yǎng)學生的社會適應面,然后再制定教學大綱,確定課程內(nèi)容和實驗平臺。對于高職、普通高校的電類與非電類專業(yè)、軟件學院等,都應該有不同的選擇,而不是人云亦云,一哄而上。
就目前的發(fā)展看,由于ARM等32位處理器應用漸成主流,開發(fā)工具已較完善、成熟,對于普通高校計算機學科的嵌入式系統(tǒng)教學,筆者認為可以定位在以32位嵌入式系統(tǒng)開發(fā)為主,重點是嵌入式系統(tǒng)的軟硬件結構、嵌入式OS的知識,以及嵌入式軟件設計(包括優(yōu)化)。課程主體內(nèi)容基本與硬件平臺(處理器型號)無關,實驗可以采用基于ARM核的不同廠家處理器的實驗平臺。主要考慮以下幾點:
①在32位嵌入式系統(tǒng)開發(fā)上,軟件開發(fā)人員的需求比硬件開發(fā)人員要多得多(盡管目前硬件開發(fā)人員較難找,但這應該是電子等專業(yè)培養(yǎng)的)。一般在一個從事嵌入式應用系統(tǒng)開發(fā)的公司中,軟硬件人員的比例不會小于10:1。由于學習時間有限,教學重點應該偏軟件。
②現(xiàn)代社會強調(diào)分工、合作,以求得整體利益的最大化。對個人的要求首先是專才,能把局部工作做精、做好。通才是需要的,但數(shù)量會比專才少得多,而且通才是練出來的,不是教出來的。今后的大學是大眾教育,教學只能面向大眾需求。在相關專業(yè)的研究生階段,對一些有基礎、有興趣的學生,可以進行一些系統(tǒng)級硬件、底層軟件的開發(fā)實踐,同時也可滿足社會對高層次嵌入式人才的需要。
③以此為主,可以再開設2門選修課。向下為“單片機原理與應用”,此課程以實踐為主,讓有興趣的學生可以自己設計、制作一些單片機應用系統(tǒng),同時也鍛煉了硬件動手能力。向上為“數(shù)字信號處理(DSP)”,讓那些數(shù)學基礎較好、對實時信號處理有興趣的學生有用武之地(現(xiàn)在這樣的學生很難得)。
另外,由于應用日趨復雜,而教學時間有限,一個本科生在校期間不可能深入學習嵌入式系統(tǒng)的很多細節(jié),嵌入式教學應采用自上而下的教學方法。一開始不必花很多時間講解處理器內(nèi)核架構/指令系統(tǒng),只要知道各種內(nèi)核的基本特點即可,重點學習、掌握處理器、外設的編程結構(即編程者角度看到的編程模型結構,非具體物理實現(xiàn)結構)。真實的應用、研究設計都是從粗粒度向細粒度進階的,是一個自頂向下的過程,首先要重視的是系統(tǒng)架構和各個抽象層。1000行的C程序,編譯后生成的目標代碼只有10 KB左右,試想現(xiàn)在的MCU Flash動輒幾百KB,為什么?一個目標代碼幾百KB的C程序,一般不是完全由個人寫出來的,而都會使用一些第三方的庫函數(shù)、中間件等。硬件也一樣,現(xiàn)在很多硬件系統(tǒng)都會使用一些模塊(Module),盡管這些模塊看上去還是一個芯片,但實際上已經(jīng)是一個SiP模塊,如WiFi模塊。所以,在了解基本嵌入式系統(tǒng)結構的基礎上,本科階段要更多地學習各種系統(tǒng)、模塊、外設、協(xié)議、庫函數(shù)的“邊界(InteRFace)”,能夠搭建一個簡單系統(tǒng)(How to do),今后在工作、或研究生階段進一步去做好一個系統(tǒng)(How to do better)。
5結語
嵌入式系統(tǒng)作為一種特殊的計算機應用系統(tǒng),在任何時期都有相對的高、中、低端應用,即使在今后,沒有OS支持的4位或8位單片機的嵌入式應用仍有大量需求,但趨勢是系統(tǒng)化、復雜化。這既是嵌入式系統(tǒng)的特點--廣泛性、差異性和不可壟斷性,也是廣大嵌入系統(tǒng)研發(fā)人員的生存與發(fā)展空間。ARM處理器在便攜、手持式設備以及工業(yè)控制等應用領域,在今后相當長的時間內(nèi)是一個很好的選擇。當然,沒有一種型號的處理器是可以覆蓋所有應用的,也不是搬上一個嵌入式OS,就可以很好地解決軟件問題的。深入了解各種器件特性,選擇最合適的處理器、外圍器件、操作系統(tǒng)和軟件庫,盡可能地優(yōu)化軟件設計,最貼切地滿足應用需求,以獲得最好的系統(tǒng)性價比,是嵌入式系統(tǒng)設計開發(fā)的精髓。
評論