首先進行第一步,下載工作:輸入U-Boot下載的地址,找到自己要下載的U-Boot版本,點擊開始下載,下載完成之后開始解壓。 U-Boot下載之后壓縮包的壓縮方式是.tar.bz2的,所以解壓命令為tar jzvf **.tar.bz2 而我們平時經(jīng)常解壓的壓縮包為.tar.gz格式的,所以它的解壓命令為tar zxvf **.tar.gz。 這兩個解壓命令只有一個參數(shù)的差別,容易搞混的友友們需要重點注意嘍~! 解壓之后進入文件夾,可以看到之前給大家介紹的目錄結(jié)構(gòu)類似的文件夾和文本文件,然后就按照板子的配置進行相應(yīng)文件的修改了~ 在修改的過程中,用到最多的一個宏定義就是CONFIG_SPL_BUILD,這個宏定義的主要作用就是生成BL1文件,提到BL1文件肯定又會有朋友產(chǎn)生疑問,在這里就這個BL1文件給大家簡單的介紹一下: BL1文件是一段外部代碼,存放在SD卡或者nandflash上,大小為8K; 除了BL1文件,還有BL0和BL2文件。 BL0文件是存放在CPU內(nèi)部IROM中的一段固化代碼,CPU上點之后,首先去運行BL0文件。 BL2文件是完整的U-Boot代碼。 這三個文件之間的關(guān)系就是:BL0運行時會將BL1拷貝到CPU的IRAM中,然后執(zhí)行BL1;BL文件執(zhí)行起來之后會先進行內(nèi)存的初始化,之后將BL2文件拷貝到外部內(nèi)存中,也就是我現(xiàn)在手中這個210 板子的DDR2中。
BYY{]P0`X2Q6C4QNEMK5(_W.jpg
移植過程最主要的就是代碼的修改與文件的配置了,大家可以根據(jù)我所提供的這些內(nèi)容進行代碼的完善與修改。 修改完成之后開始編譯工作,兩個命令: make OK210_config make 編譯的過程中會生成兩個重要的文件,一個是BL1文件,另一個就是uboot文件。編譯完成之后將這些內(nèi)容燒寫到SD卡中,燒寫的命令如下: 1.dd bs=512 seek=1 if=/dev/zero of=/dev/sdb count=2048 2.dd bs=512 iflag=dsync oflag=dsync if=spl/OK210-spl.bin of=/dev/sdb seek=1 3.dd bs=512 iflag=dsync oflag=dsync if=u-boot.bin of=/dev/sdb seek=49 在這里值得說明幾點: 1.dd命令是linux下非常有用的一個命令,作用就是用指定大小的塊拷貝一個文件,并在拷貝的同時進行指定的轉(zhuǎn)換; 2.命令中的sdb是SD卡的設(shè)備名稱,在不同的電腦上可能名稱是不一樣的,所以大家在燒寫的過程中一定要注意這個設(shè)備名稱; 3.燒寫到SD卡中,一定要了解一下SD卡的分區(qū),下面是我自己畫的一張有關(guān)SD卡分區(qū)的圖,大家可以簡單了解一下它的分區(qū)情況: Sdcard 分區(qū)介紹: 1Block = 512B ↓ 1Block 16Block 32Block ↓ 0 49 在這里可以看到,SD卡一塊的大小為512B,第一塊為保留塊,緊接著的8K存放BL1,所以BL1燒寫的起始塊標(biāo)號為1,這也就是第二條燒寫命令中seek=1的來源了;接下來存放環(huán)境變量,有的資料中將環(huán)境變量與BL1文件總結(jié)為BL1文件,不過這是的BL1文件就不再是8K大小了,而是加上環(huán)境變量的大小共24K了,也就是48塊;之后存放BL2文件,也就是uboot.bin,起始塊標(biāo)號49。最后的部分是我們自己的拷貝空間了。 大概了解了這個分區(qū)之后,這個燒寫命令想必大家也了解的差不多了。然后輸入這些燒寫命令進行文件燒寫,注意這里的命令是在源碼的目錄文件下輸入的,不然的話找不到對應(yīng)的文件。 燒寫完成,將SD卡插到開發(fā)板上,設(shè)置板子為SD卡啟動,然后打開超級終端,配置好之后將板子上電,如果板子正常啟動了,說明我們的移植工作順利完成了。如果沒有啟動起來,那么就要檢查一下哪一步出現(xiàn)了問題,然后繼續(xù)開始回去相應(yīng)的U-Boot源碼。
|