資源描述:
《arm與嵌入式linux入門的建議.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、山于很多人總問這個問題,所以這里做一個總結(jié)文檔供大家參考。這里必須先說明,以下的步驟都是針對Linux系統(tǒng)的,并不面向WinCE。也許你會注意到,現(xiàn)在做嵌入式的人屮,做linux研究的人遠(yuǎn)比做WinCE的人多,很多產(chǎn)家提供的資料也是以linux為主。我一直很難理解,其實WinCE的界面比linux的界面好看多了,使用起?來也很方便,更為垂要的是,WinCE的開發(fā)和Windows下的開發(fā)基本一樣,學(xué)起來簡單得多,但是學(xué)linux或者使用linux做嵌入式的人就是遠(yuǎn)比WinCE多。在和很多工作的人交流時我了解到,他們公司從沒考慮使用WinCE,因為成本高,都是使用linux進(jìn)行開發(fā)。我讀研究生的
2、的實驗室中也沒有使用WinCE的,大都研究linux,也有少部分項目使用vxwork,但是就沒有聽說過使用WinCE的,原因就是開源!當(dāng)然現(xiàn)在WinCE6.0聽說也開源,不過在成木和資源上linux已經(jīng)有了無人能描的優(yōu)勢。與此相對應(yīng)的是,越來越多的電子廠商已經(jīng)開始使用linux開發(fā)產(chǎn)品。舉個例子,Google近期開發(fā)的智能手機(jī)操作系統(tǒng)Android其實就是使用linux-2.6.23內(nèi)核進(jìn)行改進(jìn)得到的。第一,學(xué)習(xí)基本的裸機(jī)編程。對于學(xué)攸件的人而言,必須先對碩件的基本使用方法有感性的認(rèn)識,更必須深刻認(rèn)識該換件的控制方式,如果一開始就學(xué)linux系統(tǒng)、學(xué)移植那么只會馬上就陷入一個很深的漩渦。我在
3、剛剛開始學(xué)ARM的時候是選擇ARM7(主意是當(dāng)時ARM9還很貴),學(xué)ARM7的時候還是保持著學(xué)51單片機(jī)的思維,使用ADS去編程,第一個實驗就是控制led,學(xué)過一段時間ARM的人都會笑這樣很笨,實際上也不是,我倒是覺得有這個過程會好很多,因為無論做多復(fù)雜的系統(tǒng)最終都會落實到這些最底層的硬件控制,因此対這些硬件的控制有了感性的認(rèn)識就好很多了學(xué)習(xí)裸機(jī)的編程的同時要好好理解這個換件的構(gòu)架、控制原理,這些我稱他為理解破件。所謂的理解破件就是說,理解這個硬件是怎么組織這么多資源的,這些資源又是怎么山cpu、山編程進(jìn)行控制的。比如說,S3C2410中有AD轉(zhuǎn)換器,有GPIO(通用I0口),還有nandf
4、lash控制器,這些東西都有一些寄存器來控制,這些寄存器都有一個地址,那么這些地址是什么意思?又怎么通過寄存器來控制這些外圍設(shè)備的運(yùn)轉(zhuǎn)?還育,norflash內(nèi)部的毎一個單元在這個芯片的內(nèi)存中都有一個相應(yīng)的地址單元,那么這些地址與剛剛說的寄存器地址又有什么關(guān)系?他們是一樣的嗎?而與norflash相對應(yīng)的nandflash內(nèi)部的儲存單元并不是線性排放的,那么s3c2410怎么將nandflash的地址映射在內(nèi)存空間上進(jìn)行使用?或者簡單地說應(yīng)該怎么用nandflash?再有,使用ADS進(jìn)對ARM9fi編程時都需:要使用到一個初始化的匯編文件,這個文件究竟有什么用?他里血的代碼是什么意思?不要這
5、個可以嗎?諸如此類都是對硬件的理解,理解了這些東西就對硬件有很深的理解r>這對以后更深一步的學(xué)習(xí)將有很大的幫助,如果跳過這一步,我相信越往后學(xué)越會覺得迷茫,越覺得這寫東西深不可測。因為,你的根基沒打好。不過先聲明一下,本人并沒有使用ADS對ARM9進(jìn)行編程,我是學(xué)完ARM7后直接就使用ARM9學(xué)linux系統(tǒng)的,因此涉及使用ADS對ARM9進(jìn)行編程的問題我很難冋答人_人,自己去研究研究吧。對于這部分不久將提供一份教程,這個教程屮的例程并不是我為我們所代理的板子寫的,是我在我們學(xué)院實驗宗拿的,英培特為他們自己的實驗箱寫的,不過很有借鑒意義,可以作為一份有價值的參考。第二,使用linux系統(tǒng)進(jìn)行
6、一些基本的實驗。在買一套板子的時候一般會提供一些linux的試驗例程,好好做一段時間這個吧,這個過程也是很有置義的,也是為進(jìn)一步的學(xué)習(xí)積累感性認(rèn)識,你能想象一個從沒有使用過linux系統(tǒng)的人能學(xué)好linux的編程嗎?好好按照手冊上的例程做一做里血的實驗,雖然有點娃娃學(xué)走路,有點弱智,但是我想很多高手都會經(jīng)歷這個過程。在這方面我們深藍(lán)科技H前沒有計劃提供相應(yīng)的例程,主要是開發(fā)板的提供商會提供很豐富的例程,我們不做匝復(fù)工作,只提供他們沒有的、最有價值的東西給大家。第三,研究完整的linux系統(tǒng)的的運(yùn)行過程。所謂完整的linux系統(tǒng)包括哪些部分呢?三部分:bootloader、linuxkerne
7、l(linux內(nèi)核)、rootfile(根文件系統(tǒng))。那么這3部分是怎么相互協(xié)作來構(gòu)成這個系統(tǒng)的呢?各自有什么用呢?三者有什么聯(lián)系?怎么聯(lián)系?系統(tǒng)的執(zhí)行流程又是怎么樣的呢?搞淌楚這個問題你對整個系統(tǒng)的運(yùn)行就很清楚了,對于下一步制作這個linux系統(tǒng)就打下了另一個垂要的根基。介紹這方面的資料網(wǎng)上可以挖掘到幾噸,自己好好研究吧。第四,開始做系統(tǒng)移植。匕血說到完整的linux有3部分,而且你也知道了他們之間的關(guān)系和