如何在Ubuntu下使用TF/SD 卡制作Exynos 4412 u-boot啟動盤/********************************************************************************* @author ? ?Maoxiao Hu* @version ? V1.0.1* @date ? ? ? Feb-2015******************************************************************************* < COPYRIGHT 2015 ISE of SHANDONG UNIVERSITY >********************************************************************************/如果你的系統是Mac OS X,請移步這里《如何在Mac下使用TF/SD 卡制作Exynos 4412 u-boot啟動盤》。硬件:迅為iTop 4412精英版 & TF卡軟件:系統自帶終端即可首先,我們應該清楚TF/SD卡可以看作一張完全空白的“白紙”,之所以有分區、分區格式的區別不過是在在這張“白紙”的某些特定位置寫入了一些數據來指示分區、分區格式。?其次,我們還應該清楚,在TF/SD啟動模式下,exynos 4412一上電,內部iROM會從TF/SD的第1個Block(第512個字節開始)讀取8KB的數據到內部iRAM,然后從內部iRAM的0地址開始運行。?原理搞清楚了,那么首先需要把TF/SD低級格式化-所有Block全部寫0x00。?1、連接TF/SD卡,打開終端使用ls /dev/sd* 命令查看所有連接到電腦上磁盤。問題:在這里為什么不用df命令?原因是假設你的TF/SD卡只有一個分區但這個分區已損壞,或者有多個分區但是沒有一個可以識別的分區,那么此時df命令無法查看到tf/sd卡,所以說直接列出dev下所有sd開頭的設備,是終極方案。(1)假設你的tf/sd卡只有一個分區,無論這個分區是否損壞,現象應該是類似這樣的:插上tf/sd卡之前:
?插上tf/sd卡之后:?
?很明顯多出的/dev/sdb就是本文后續操作的對象。?(2)假設你的tf/sd卡已有多個分區,無論這些分區是否損壞,現象應該是類似這樣的:插上tf/sd卡之前:
?插上tf/sd卡之后:
?這里多出5個設備,但是我們仍然將/dev/sdb作為本文后續操作的對象。注意:我這里是/dev/sdb,但是還有可能是/dev/sdc等等其它符號,必須根據你實際出現的設備名稱進行以下操作,否則有可能損壞系統分區,非常重要,切記!!!2、使用16進制模式打開TF卡查看數據(可跳過)我們使用linux自帶命令hexdump查看tf/sd卡中的數據:命令為:sudo hexdump -n 1048576 /dev/sdb
其中-n 1048576代表打印出前1M=1024*1024=1048576字節的數據。
?
執行結果(部分)如下:
?

?
*代表內容為0x00,為了節省空間故作省略。
3、清空TF卡上前1MB的數據由于4412的uboot大小基本在幾百kB的量級,所以清空前1MB空間足夠用,注意這里的清空不是格式化,而是填充0x00。
我們利用系統/dev下的zero設備,清零tf/sd卡前1MB。
執行結果如下:

這里的count=2000代表清空2000個block,一個block=512B,2000個正好為1MB。
?
再次hexdump查看tf/sd卡數據,發現:

前1MB空間成功清0x00。
4、燒寫uboot啟動文件在這里,我們待燒寫的文件為?u-boot-iTOP-4412.bin 這個文件。
終端執行命令:

if代表輸入文件地址,以你u-boot-iTOP-4412.bin 這個文件的實際地址為準,of代表輸出地址,以你tf/sd卡的實際設備號為準。
到這里,就可以將tf/sd卡插入開發板上電啟動了,為了證明我們燒寫無誤,我們執行后續操作。
5、確認燒寫正確(可跳過)我們需要確定從tf/sd卡的第一個block開始處,確實正確燒寫了u-boot-iTOP-4412.bin這個文件,下面我們對比一下,用到的命令同樣還是hexdump。
在這里,我們為了顯示方便,只打印前5KB數據,發現bin文件被正確的復制到了sd卡的512字節處:

6、將TF卡接到開發板上,撥碼開關選擇TF啟動,上電:
Done。
?
感謝:Zinway