1. 程式人生 > >u-boot編譯與燒錄

u-boot編譯與燒錄

手上屯了好久的友善tiny210開發板和迅為4412開發板,一直沒怎麼用,因為課題需要用到嵌入式,需要自己編寫一些簡單的驅動和應用,於是又拿起了這兩塊板子。

從最基礎的u-boot開始吧,首先就是uboot的燒錄,看了兩個板子的手冊都是不一樣的。4412的板子通過超級終端進入uboot模式,首先格式化nand flash,然後用windows上的fastboot.exe將要燒錄的映象檔案通過OTG燒寫到Nand上。而友善的210在啟動後核心直接就起來了,沒法通過超級終端打斷,也就不能用fastboot燒寫的方法了。

查看了友善的資料,210提供的燒寫方法是用一個小軟體將一張SD卡中做入superboot(SD卡製作方法見友善實驗手冊),之後板子從SD卡啟動,由superboot引導,然後將要燒寫的映象通過PC端的minitools軟體通過USB燒寫入板子的Nand,甚至可以直接將要燒寫的映象放在SD中,這樣板子從SD啟動,可以通過板子上的按鍵和螢幕提示實現離線燒錄任意的映象。

真是好奇怪,詢問了用2440的同學,他是將superboot通過J-link寫入板子上的Nor flash,然後通過superboot引導啟動板子,然後用minitool通過usb將uboot等映象寫入Nand。

既然superboot這麼方便,為什麼不用superboot而使用uboot做bootloader呢,兩者又有什麼差別呢。

經過網上查資料,原來superboot只能寫入Nor或者SD(好像現在也有可以寫入Nand的Superboot了),所以superboot不能替代uboot,只能從Nor或者SD啟動然後引導來將uboot、核心寫入Nand,之後板子才能從Nand正常啟動。而2440的板子有Nor flash,而我的210和4412並沒有,所以用superboot的方法也不一致,但是都是很方便一勞永逸的方法,想要燒錄映象,從Nor或者SD啟動就是了。

superboot這麼好用,那4412和210可以用一個superboot嗎,如果不能也就是說superboot也是要通過配置來提供給不同的板子用,如果板子的賣家不提供或者自己設計的板子,那麼初學者就無法使用superboot了,身邊也沒有TF卡和SD卡,剛下單,等到了就給4412試試210的superboot。

友善雖然提供了minitools+superboot的方便燒寫方法,然而我沒有SD卡,210也不能像2440那樣將superboot寫入Nor,友善的uboot也不支援fastboot,也就是說我現在完全無法給210燒寫uboot了,只能作罷,等SD到了再說。

那就來編譯一下uboot吧,至少可以燒入4412。按照國嵌的教程是現在解壓的uboot原始碼中的Makefile中找到自己板子的config,然後在linux命令列輸入:

make xxx_config

make ARCH=arm CROSS_COMPILE=arm-linux-

等待編譯

然而在友善210並沒有提供uboot的原始碼,僅僅給出了一個bin檔案,在使用者手冊中也沒有涉及uboot編譯的內容。在國嵌的資料裡找到smart210的uboot原始碼,但也不是tiny210的,我並不知道這兩是否有差別。在smart的Makefile中也無法查詢到tiny210_config的資訊,大概這款板子是壓根沒想讓我去操作uboot 吧。

在4412的uboot原始碼中的Makefile中倒是找到了iTop_4412_Andriod_config

其實4412提供的編譯uboot方法並不是這樣,而是通過他們寫好的一個指令碼,然後鍵入:

./create_uboot.sh

來生成uboot的,之前也試過這樣做出來的uboot,寫入板子沒有問題。

但是抱著僥倖心理,我想嘗試一下國嵌教程裡提供的方法,按照國嵌的方法輸入:

make iTop_4412_Andriod_config

make ARCH=arm CROSS_COMPILE=arm-linux-

之後等待編譯結束

只生成了一個u-boot.bin,而不是itop_4412_scp.bin這種,隱約感覺不對

插上usb,進入uboot,fastboot,cmd下輸入:

fastboot.exe flash bootloader u-boot.bin

fastboot reboot

然後超級終端就靜默了。。。

核心再也沒起來,也沒法進入uboot模式,真是不做死就不會死。。

現在好了,210本來就沒法燒寫映象,現在4412的uboot寫壞了,只能等SD卡到了重新從SD啟動挽救他們了。。