學(xué)ARM+Linux要先裸奔!
在 ARM + Linux 培訓(xùn)班學(xué)習(xí),講師一般首先講解用 ADS 或 RealView MDK 去調(diào)試 ARM 開發(fā)板。原因在于:
1、掌握 ARM 體系結(jié)構(gòu)。ARM 是一種計(jì)算機(jī),掌握其體系結(jié)構(gòu)也就是掌握ARM的工作原理。在大學(xué)里一般會開設(shè)《微機(jī)原理》這門課程,講解x86計(jì)算機(jī)的工作原理,并學(xué)習(xí)x86匯編語言。因?yàn)锳RM與x86體系結(jié)構(gòu)上的不同,所以學(xué)習(xí)ARM+Linux之前,要首先掌握ARM這種計(jì)算機(jī)的工作原理,并學(xué)習(xí)ARM匯編語言。
2、掌握ARM匯編語言。眾所周知,匯編語言是低級語言,與計(jì)算機(jī)硬件關(guān)系密切。因?yàn)轶w系結(jié)構(gòu)的不同,ARM匯編語言與x86匯編語言有很大的不同。前幾年有一本書《ARM體系結(jié)構(gòu)與編程》專門講解ARM體系結(jié)構(gòu)與匯編語言,隨著技術(shù)的發(fā)展,ARM匯編語言的參考書也越來越多。掌握ARM匯編語言是學(xué)習(xí) ARM+Linux 的基礎(chǔ)。Linux中匯編語言用得不多,卻都是啟動時必須有的。
3、掌握ARM開發(fā)板的原理圖。電路板原理圖是由做硬件的工程師畫的,雖然屬于硬件范疇,但做 ARM+Linux 的軟件工程師是需要能看懂電路板原理圖的,特別是在編寫硬件的Linux驅(qū)動程序時,必須看懂開發(fā)板電路原理圖。用ADS或MDK調(diào)試開發(fā)板時,最常做的一個軟件實(shí)驗(yàn)就是“跑馬燈”程序!芭荞R燈”就是讓開發(fā)板上的若干個LED逐個點(diǎn)亮,實(shí)現(xiàn)這個程序首先要看電路圖上LED的電路是如何連接的。通常,LED聯(lián)接在ARM芯片的IO接口上,看電路圖確認(rèn)IO接口的編號,然后在程序里設(shè)置這幾個IO接口的電位為1或0,就能熄滅或點(diǎn)亮LED!芭荞R燈”程序是最簡單的軟件與硬件協(xié)同工作范例,目的就是讓軟件工程師能掌握最基本的軟件與硬件結(jié)合的原理。以此為基礎(chǔ),開發(fā)板上的其他外圍電路都可以逐步掌握。
4、掌握像使用單片機(jī)那樣使用ARM的方法。單片機(jī)的用途非常廣泛,最常用的是C51系列單片機(jī),不需要操作系統(tǒng),只需要在單片機(jī)上運(yùn)行單循環(huán)程序就能讓設(shè)備完成功能簡單的循環(huán)運(yùn)算工作。C51系列屬于x86家族,x86家族的單片機(jī)和桌面CPU功能差別非常大,但是其匯編語言卻是完全相同的。ARM系列計(jì)算機(jī)性能介于C51單片機(jī)和x86桌面CPU之間,所以將ARM當(dāng)單片機(jī)用也是一個應(yīng)用選擇,ADS和MDK這兩種軟件就是像單片機(jī)那樣使用ARM。最新的ARM版本Cortex,已經(jīng)開始分類,Cortex M系列就是用作單片機(jī)的ARM,Cortex A系列就是運(yùn)行操作系統(tǒng)的ARM。
5、復(fù)習(xí)C語言程序設(shè)計(jì)。在ADS或MDK中調(diào)試ARM開發(fā)板,使用的計(jì)算機(jī)語言通常是匯編結(jié)合C語言,匯編是ARM匯編,C語言就是常用的C語言。C語言是一種中級語言,但是是平臺無關(guān)的,在任何一種計(jì)算機(jī)上用C語言編程,語法規(guī)則都是一樣的。C語言與ARM匯編的結(jié)合看幾個實(shí)例就能很快掌握,C語言本身的掌握程度卻決定了每個人能在 ARM+Linux 開發(fā)上能走多遠(yuǎn)。
ADS是ARM公司出品的集成開發(fā)環(huán)境,已經(jīng)停止更新很久了,但是任然很有用,甚至可以調(diào)試ARM11。
RealView MDK是ARM公司購買了Keil公司后推出的ADS后續(xù)版本,RealView結(jié)合了Keil C51這種單片機(jī)經(jīng)典開發(fā)環(huán)境與ADS開發(fā)環(huán)境的優(yōu)點(diǎn),能用于所有ARM版本的調(diào)試。當(dāng)然功能強(qiáng)會帶來一定的操作復(fù)雜性,但在ARM的調(diào)試上還是沿用了ADS的大多數(shù)方法與軟件界面,以方便從ADS到MDK的過渡。
不管是用ADS還是MDK,對于學(xué)習(xí) ARM+Linux 的朋友來說,目的都是一樣的,就是上面五點(diǎn),都是為進(jìn)一步學(xué)習(xí)打下很好的基礎(chǔ)。用ADS或MDK去開發(fā)ARM,通常都叫做“裸奔”,因?yàn)槎紱]有操作系統(tǒng)這件“衣服”。就像繪畫中學(xué)習(xí)人物畫時,先要畫裸體模特,然后學(xué)習(xí)人物畫一樣,先學(xué)會用ADS或MDK讓ARM裸奔,然后才學(xué)得好 ARM+Linux 。
編輯:admin 最后修改時間:2018-05-22