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