關(guān)于A(yíng)RM嵌入式系統的軟件相關(guān)知識
對于一些不需要復雜圖形用戶(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)單的操作系統,如霤/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)域中占重要地位。
評論