ARM和嵌入式的裸機編程建議
許多新手在接觸ARM和嵌入式linux都面臨著(zhù)一個(gè)尷尬的境地,那就是不知從哪個(gè)部分開(kāi)始學(xué)習。查找資料和整理資料的過(guò)程復雜且耗時(shí),很多新手并沒(méi)有耐心進(jìn)行所以就放棄了。針對這種情況,小編特意為大家整理了有關(guān)ARM與嵌入式linux的入門(mén)中有關(guān)裸機編程的建議,大家快來(lái)看一看吧。
本文引用地址:http://dyxdggzs.com/article/201808/386269.htm文中提出的經(jīng)驗是針對Linux系統的,并不面向WinCE?,F在做嵌入式的開(kāi)發(fā)者中,做linux研究的人遠比做WinCE的人多,很多廠(chǎng)家提供的資料也是以linux為主。WinCE的開(kāi)發(fā)和Windows下的開(kāi)發(fā)基本一樣,學(xué)起來(lái)簡(jiǎn)單得多,但是學(xué)linux或者使用linux做嵌入式的人就是遠比WinCE多。
其實(shí)通過(guò)和一些設計者進(jìn)行了解,可以發(fā)現很多公司從沒(méi)考慮使用WinCE,因為成本高,所以使用linux進(jìn)行開(kāi)發(fā)。linux已經(jīng)有了無(wú)人能擋的優(yōu)勢。與此相對應的是,越來(lái)越多的電子廠(chǎng)商已經(jīng)開(kāi)始使用linux開(kāi)發(fā)產(chǎn)品。
學(xué)習基本的裸機編程
對于學(xué)硬件的人而言,必須先對硬件的基本使用方法有感性的認識,更必須深刻認識該硬件的控制方式,一開(kāi)始就學(xué)linux系統、學(xué)移植那么只會(huì )馬上就陷入一個(gè)很深的漩渦。比如在剛剛開(kāi)始學(xué)ARM的時(shí)候是選擇ARM7,學(xué)ARM7的時(shí)候還是保持著(zhù)學(xué)51單片機的思維,使用ADS去編程,第一個(gè)實(shí)驗就是控制led。學(xué)過(guò)一段時(shí)間ARM的人都會(huì )笑這樣很笨,但實(shí)際上有這個(gè)過(guò)程會(huì )好很多,因為無(wú)論做多復雜的系統最終都會(huì )落實(shí)到這些最底層的硬件控制。因此對這些硬件的控制有了感性的認識就好很多。
學(xué)習裸機的編程的同時(shí)要好好理解這個(gè)硬件的構架、控制原理,這些為理解硬件。所謂的理解硬件就是理解硬件是怎么組織這么多資源的,這些資源又是怎么由cpu、由編程進(jìn)行控制的。比如說(shuō),s3c2410中有AD轉換器,有GPIO(通用IO口),還有nandflash控制器,這些東西都有一些寄存器來(lái)控制,這些寄存器都有一個(gè)地址,那么這些地址是什么意思?又怎么通過(guò)寄存器來(lái)控制這些外圍設備的運轉?還有,norflash內部的每一個(gè)單元在這個(gè)芯片的內存中都有一個(gè)相應的地址單元,那么這些地址與剛剛說(shuō)的寄存器地址又有什么關(guān)系?他們是一樣的嗎?
而與norflash相對應的nandflash內部的儲存單元并不是線(xiàn)性排放的,那么s3c2410怎么將nandflash的地址映射在內存空間上進(jìn)行使用?或者簡(jiǎn)單地說(shuō)應該怎么用nandflash?再有,使用ADS進(jìn)對ARM9行編程時(shí)都需要使用到一個(gè)初始化的匯編文件,這個(gè)文件究竟有什么用?里面的代碼是什么意思?不要這個(gè)可以嗎?諸如此類(lèi)都是對硬件的理解。理解了這些東西就對硬件有很深的理解了,這對以后更深一步的學(xué)習將有很大的幫助,如果跳過(guò)這一步,越往后學(xué)越會(huì )覺(jué)得迷茫,越覺(jué)得這寫(xiě)東西深不可測。因為根基沒(méi)打好。
通過(guò)以上的介紹可以看到,想要順利的進(jìn)行ARM或者嵌入式linux的入門(mén),就需要實(shí)打實(shí)的一步一步積累相應的經(jīng)驗。千萬(wàn)不要覺(jué)得麻煩或者繁瑣,因為這是學(xué)習后續知識的關(guān)鍵基礎,如果這部分的知識基礎沒(méi)有打好,那么在后面的學(xué)習就會(huì )變得非常困難。
評論