1. 程式人生 > >韋東山視訊第1期 學習計劃

韋東山視訊第1期 學習計劃

  學習計劃按照《萬勇210學習日記》中的問題,在後面補充各部門的學習筆記,在文中加入跳轉,以便形成一個學習體系。下面,先看下萬勇同學的學習歷程:

問題1:當Tiny210開發板到手後,最想幹的事情無疑就是把二期講的驅動在Tiny210上面通通給實現了, 那該怎麼操作呢?

答案1:於是就用開發板上面預裝的Linux核心和檔案系統開始寫起了驅動。

問題2:我寫了第一個驅動(按鍵觸發中斷的驅動),由於該驅動需要註冊中斷,而註冊中斷時用到的中斷 號已經被開發板預裝的核心裡面自帶的按鍵驅動給佔了,而我又不想設定為共享中斷模式,那該 怎麼辦呢?

答案3:只有通過make menuconfig去掉核心自帶的按鍵驅動,然後重新編譯核心的一種辦法了。

問題3:當去掉按鍵驅動這麼一個小驅動以後,重新編譯驅動時,報了很多錯誤,聯絡到了核心其他的很 多驅動程式,我猜測應該是友善的那群傢伙在核心裡面做了些什麼高明的手腳,於是重新編譯內 核通不過,該怎麼辦呢?

答案3:有以下兩種解決方法:

方法一:

按照錯誤提示,找到對應驅動中的對應行,把錯誤改掉,這樣一個一個的改下去。或者再來make menuconfig,把涉及到的錯誤的驅動給去掉,這樣配置一次,編譯一次,有錯誤,再改錯誤的進行下去,直到能夠編譯通過。

方法二:

從Linux核心官網http://www.kernel.org/中,重新下載一個核心,一個純淨的核心,再進行配置,編譯。

而我就選擇了方法二,下載了一個和開發板預裝的核心相同版本的Linux核心,linux-2.6.35.7版本。

問題4:重新編譯核心成功,接下來的操作無疑就是啟動核心了,於是我把新核心通過uboot下載到nand  flash中,然後nand啟動,發現啟動不了核心,怎麼辦?

答案4:有以下兩種解決方法:

方法一:

核心啟動不了,問題最有可能的就是機器ID不一樣,還有啟動引數沒有設定正確,因此我們可以到uboot的原始碼裡面去修改機器ID和設定啟動引數,一期視訊教程裡面已經有詳細介紹。

方法二:

自己寫一個bootloader,將畢業班視訊裡面的教我們的如何自己寫bootloader的絕技用於實戰當中。

而我,理所當然的選擇了方法二,重在鍛鍊和考驗自己。

問題5:既然選擇了自己寫bootloader,那麼該怎麼為Tiny210這麼一個全新的開發板寫bootloader呢?

答案5:賣個關子,我會在後面的學習日記中做詳細的介紹,並給出程式碼。不僅會介紹如何讓bootloader 能夠正常啟動核心,還會講如何給bootloader新增printf()功能,如何支援help,nand write,nand  read,md,mw,bootm等簡單命令的實現,如何讓該bootloader顯示logo(即一張照片),如何有 啟動的聲音(即解碼一個wav音訊檔案)。

問題6:bootloader寫成功,並能夠正常啟動核心了,此時心裡無比的高興,也感到頗有成就感,但是新的 問題也隨之出現。看核心的啟動資訊發現:1.新的核心裡面沒有Tiny210的MTD裝置的驅動,即 沒有分割槽,因此無法啟動燒寫到nand flash中的檔案系統;2.新的核心裡面沒有網絡卡驅動,因此無 法通過網路檔案系統系統啟動。既然都沒有辦法進入檔案系統,那寫驅動從何談起呢?該怎麼辦 呢?

答案6:有以下兩種解決方法:

方法一:

自己寫一個nand flash驅動程式,並新增MTD分割槽,然後燒寫更檔案系統,從而啟動。

方法二:

移植DM9000網絡卡驅動程式,然後NFS啟動。

為了以後寫驅動程式的方便,首先了方法二。當然,方法一以後也會講到。

問題7:既然選擇移植DM9000網絡卡驅動程式,那麼該怎麼操作呢?

答案7:再賣個關子,我會在後面的學習日記中做詳細的介紹。不過在看這篇學習日記之前,建議先看看 二期視訊的移植網絡卡部分。

黎明之前總是被黑暗包圍,解決掉以上8個問題以後,終於見到了初升的太陽,開發板從無到有的驅動開發環境就此搭建成功,從此可以開始將二期驅動視訊在Tiny210開發板上面實現了。