VR虛擬現(xiàn)實(shí)ARM與嵌入式的建議_第1頁
VR虛擬現(xiàn)實(shí)ARM與嵌入式的建議_第2頁
VR虛擬現(xiàn)實(shí)ARM與嵌入式的建議_第3頁
VR虛擬現(xiàn)實(shí)ARM與嵌入式的建議_第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、由于很多人總問這個(gè)問題,所以這里做一個(gè)總結(jié)文檔供大家參考。這里必須先說明,以下的步驟都是針對 Linux 系統(tǒng)的,并不面向 WinCE 。也許你會(huì)注意到,現(xiàn)在做嵌入式的人中,做 linux 研究的人遠(yuǎn)比做 WinCE 的人 多,很多 產(chǎn)家提供的資料也是以 linux 為主。 我一直很難理解, 其實(shí) WinCE 的界面比 linux 的界面好看多了, 使用起 來也很 方便,更為重要的是, WinCE 的開發(fā)和 Windows 下的開發(fā)基本一樣,學(xué)起來簡單得多,但是學(xué) linux 或者 使用 linux 做嵌入式的人就是遠(yuǎn)比 WinCE 多。在和很多工作的人交流時(shí)我了解到, 他們公司從沒考慮使用

2、WinCE , 因?yàn)?成本高,都是使用 linux 進(jìn)行開發(fā)。也有少部分項(xiàng)目使用 vxwork ,但是就沒有聽說過使用 WinCE 的,原因 就是開 源!當(dāng)然現(xiàn)在 WinCE6.0 聽說也開源,不過在成本和資源上 linux 已經(jīng)有了無人能擋的優(yōu)勢。與此相對應(yīng)的 是,越 來越多的電子廠商已經(jīng)開始使用 linux 開發(fā)產(chǎn)品。舉個(gè)例子, Google 近期開發(fā)的智能手機(jī)操作系統(tǒng) Android 其實(shí) 就是使用 linux-2.6.23 內(nèi)核進(jìn)行改進(jìn)得到的。 第一,學(xué)習(xí)基本的裸機(jī)編程。 對于學(xué)硬件的人而言,必須先對硬件的基本使用方法有感性的認(rèn)識(shí),更必須深刻認(rèn)識(shí)該硬件的控制方式, 如果 一開始就學(xué) l

3、inux 系統(tǒng)、學(xué)移植那么只會(huì)馬上就陷入一個(gè)很深的漩渦。學(xué) ARM7 的時(shí)候還是保持著學(xué) 51 單 片機(jī)的思 維,使用ADS去編程,第一個(gè)實(shí)驗(yàn)就是控制 led。學(xué)過一段時(shí)間 ARM的人都會(huì)笑這樣很笨,實(shí)際上也不 是,我倒是 覺得有這個(gè)過程會(huì)好很多,因?yàn)闊o論做多復(fù)雜的系統(tǒng)最終都會(huì)落實(shí)到這些最底層的硬件控制,因此對這些 硬件 的控制有了感性的認(rèn)識(shí)就好很多了 學(xué)習(xí)裸機(jī)的編程的同時(shí)要好好理解這個(gè)硬件的構(gòu)架、控制原理,這些我稱他為理解硬件。所謂的理解硬件 就是 說,理解這個(gè)硬件是怎么組織這么多資源的, 這些資源又是怎么由 cpu、由編程進(jìn)行控制的。比如說,S3C2410 中有AD轉(zhuǎn)換器,有GPIO (通

4、用10 口),還有nandflash控制器,這些東西都有一些寄存器來控制,這些 寄存器都 有一個(gè)地址,那么這些地址是什么意思?又怎么通過寄存器來控制這些外圍設(shè)備的運(yùn)轉(zhuǎn)?還有, norflash 內(nèi)部 的每一個(gè)單元在這個(gè)芯片的內(nèi)存中都有一個(gè)相應(yīng)的地址單元,那么這些地址與剛剛說的寄存器地址又有什 么關(guān) 系?他們是一樣的嗎?而與 norflash 相對應(yīng)的 nandflash 內(nèi)部的儲(chǔ)存單元并不是線性排放的,那么 s3c2410 怎么 將nandflash的地址映射在內(nèi)存空間上進(jìn)行使用?或者簡單地說應(yīng)該怎么用 nandflash?再有,使用 ADS進(jìn) 對 ARM9 行編程時(shí)都需要使用到一個(gè)初始化的匯

5、編文件,這個(gè)文件究竟有什么用?他里面的代碼是什么意思?不要 這個(gè) 可以嗎? 諸如此類都是對硬件的理解,理解了這些東西就對硬件有很深的理解了,這對以后更深一步的學(xué)習(xí)將有很 大的 幫助,如果跳過這一步,我相信越往后學(xué)越會(huì)覺得迷茫,越覺得這寫東西深不可測。因?yàn)?,你的根基沒打 好。 不過先聲明一下, 本人并沒有使用 ADS 對 ARM9 進(jìn)行編程, 我是學(xué)完 ARM7 后直接就使用 ARM9 學(xué) linux 系統(tǒng)的,因此 涉及使用ADS對ARM9進(jìn)行編程的問題我很難回答 A_A,自己去研究研究吧。 第二,使用 linux 系統(tǒng)進(jìn)行一些基本的實(shí)驗(yàn)。 ?在買一套板子的時(shí)候一般會(huì)提供一些 linux 的試驗(yàn)

6、例程,好好做一段時(shí)間這個(gè)吧,這個(gè)過程也是很有意 義的 ,也是為進(jìn)一步的學(xué)習(xí)積累感性認(rèn)識(shí),你能想象一個(gè)從沒有使用過 linux 系統(tǒng)的人能學(xué)好 linux 的編程嗎? 好好 按照手冊上的例程做一做里面的實(shí)驗(yàn),雖然有點(diǎn)娃娃學(xué)走路,有點(diǎn)弱智,但是我想很多高手都會(huì)經(jīng)歷這個(gè) 過程 。 ?在這方面我們深藍(lán)科技目前沒有計(jì)劃提供相應(yīng)的例程,主要是開發(fā)板的提供商會(huì)提供很豐富的例程, 我們 不做重復(fù)工作,只提供他們沒有的、最有價(jià)值的東西給大家。 第三,研究完整的 linux 系統(tǒng)的的運(yùn)行過程。 所謂完整的 linux 系統(tǒng)包括哪些部分呢? 三部分:bootloader、linux?kernel (linux 內(nèi)核

7、)、rootfile (根文件系統(tǒng))。 那么這 3 部分是怎么相互協(xié)作來構(gòu)成這個(gè)系統(tǒng)的呢?各自有什么用呢?三者有什么聯(lián)系?怎么聯(lián)系?系統(tǒng) 的執(zhí)行 流程又是怎么樣的呢?搞清楚這個(gè)問題你對整個(gè)系統(tǒng)的運(yùn)行就很清楚了, 對于下一步制作這個(gè) linux 系統(tǒng)就 打下 了另一個(gè)重要的根基。介紹這方面的資料網(wǎng)上可以挖掘到幾噸,自己好好研究吧。 第四,開始做系統(tǒng)移植。 上面說到完整的 linux 有 3 部分,而且你也知道了他們之間的關(guān)系和作用, 那么現(xiàn)在你要做的便是自己動(dòng)手 學(xué)會(huì) 制作這些東西 當(dāng)然我不可能叫你編寫這些代碼,這不實(shí)現(xiàn)。事實(shí)上這個(gè) 3 者都能在網(wǎng)下載到相應(yīng)的源代碼,但是這個(gè)源 代碼不 可能下載

8、編譯后就能在你的系統(tǒng)上運(yùn)行,需要很多的修改,直到他能運(yùn)行在你的板子上,這個(gè)修改的過程 就叫 移植。在進(jìn)行移植的過程中你要學(xué)的東西很多,要懂的相關(guān)知識(shí)也很多,等你完成了這個(gè)過程你會(huì)發(fā)現(xiàn)你 已經(jīng) 算是一個(gè)初出茅廬的高手了 在這個(gè)過程中如果你很有研究精神的話你必然會(huì)想到看源代碼。 很多書介紹你怎么閱讀 linux 源代碼, 我不 提倡 無目的地去看 linux 源代碼, 用許三多的話說, 這沒有意義。 等你在做移植的時(shí)候你覺得你必須去看源代碼 時(shí)再 去找基本好書看看,這里我推薦一本好書倪繼利的 linux 內(nèi)核的分析與編程 ,這是一本針對 linux-2.6.11 內(nèi) 核的書,說得很深,建議先提高自

9、己的 C 語言編程水平再去看。 至于每個(gè)部分的移植網(wǎng)上也可以找到好多噸的資料,自己研究研究吧,不過要提醒的是,很多介紹自己經(jīng) 驗(yàn)的 東西都或多或少有所保留,你按照他說的去做總有一些問題,但是他不會(huì)告訴你怎么解決,這時(shí)就要靠自 己, 如果自己都靠不住就找我一起研究研究吧,我也不能保證能解決你的問題,因?yàn)槲椅幢赜龅竭^你的問題, 不過 我相信能給你一點(diǎn)建議,也許有助你解決問題。 這一步的最終目的是,從源代碼的官方主頁上(都是外國的,悲哀)下載標(biāo)準(zhǔn)的源代碼包,然后進(jìn)行修改, 最 終運(yùn)行在板子上。 盜用阿基米德的一句話: “給我一根網(wǎng)線,我能將 linux 搞定 第五,研究 linux 驅(qū)動(dòng)程序的編寫。

10、 移植系統(tǒng)并不是最終的目的,最終的目的是開發(fā)產(chǎn)品,做項(xiàng)目,這些都要進(jìn)行驅(qū)動(dòng)程序的開發(fā) Linux 的驅(qū)動(dòng)程序可以說是五花八門, linux2.4 和 linux2.6 的編寫有相當(dāng)大的區(qū)別,就是同為 linux2.6 但是 不同 版本間的驅(qū)動(dòng)程序也有區(qū)別, 因此編寫 linux 的驅(qū)動(dòng)程序變都不是那么容易的事情, 對于最新版本的驅(qū)動(dòng)程 序的 編寫甚至還沒有足夠的參考資料。那么我的建議就是使用、移植一個(gè)不算很新的版本內(nèi)核,這樣到時(shí)學(xué)驅(qū) 動(dòng)的 編程就有足夠的資料了。 這部分的推薦書籍可以參考另一篇文章推薦幾本學(xué)習(xí)嵌入式 linux 的書籍。 第六,研究應(yīng)用程序的編寫。 做作品做項(xiàng)目除了編寫驅(qū)動(dòng)程序

11、,最后還要編寫應(yīng)用程序?,F(xiàn)在的趨勢是圖形應(yīng)用程序的開發(fā),而圖形應(yīng) 用程 序中用得最多的還是 qt/e 函數(shù)庫。我一直就使用這個(gè)函數(shù)庫來開發(fā)自己的應(yīng)用程序,不過我希望你能使用 國產(chǎn) 的MiniGUI函數(shù)庫。盜用周杰倫的廣告詞就是 支持國產(chǎn),支持MiniGUI” MiniGUI的編程比較相似 Windows 下 的 VC 編程,比較容易上手,效果應(yīng)該說是相當(dāng)不錯(cuò)的,我曾使用過來開發(fā) ARM7 的程序。不過 MiniGUI 最大的不好 就是沒有像 qtopia 這樣的圖形操作平臺(tái),這大大限制了他的推廣,我曾經(jīng)幻想過與北京飛漫公司(就是 MiniGUI 的版權(quán)擁有者)合作使用 MiniGUI 函數(shù)庫開發(fā)像 qtopia 這樣的圖形操作平臺(tái),不過由于水平有限這只能是 幻想了 ,呵呵。 完成這一步你基本就學(xué)完了嵌入式 linux 的全部內(nèi)容了 還有一個(gè)小小的經(jīng)驗(yàn)想和大家分享。 我在學(xué)習(xí)嵌入式 linux 的過程中很少問人, 客觀原因是身邊的老師、 同 學(xué)師 兄都沒有這方面的高手,主觀原因是我不喜歡問人,喜歡自

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論