/**
******************************************************************************
* @author Maoxiao Hu
* @version V1.0.1
* @date Feb-2015
******************************************************************************
* < COPYRIGHT 2015 ISE of SHANDONG UNIVERSITY >
******************************************************************************
**/
硬件:迅爲iTop 4412精英版 & TF卡
軟件:系統自帶終端便可
首先,咱們應該清楚TF/SD卡能夠看做一張徹底空白的「白紙」,之因此有分區、分區格式的區別不過是在在這張「白紙」的某些特定位置寫入了一些數據來指示分區、分區格式。
其次,咱們還應該清楚,在TF/SD啓動模式下,exynos 4412一上電,內部iROM會從TF/SD的第1個Block(第512個字節開始)讀取8KB的數據到內部iRAM,而後從內部iRAM的0地址開始運行。
原理搞清楚了,那麼首先須要把TF/SD低級格式化-
全部Block所有寫0x00。
一、鏈接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等等其它符號,必須根據你實際出現的設備名稱進行如下操做,不然有可能損壞系統分區,很是重要,切記!!!
二、使用16進制模式打開TF卡查看數據(可跳過)
咱們使用linux自帶命令hexdump查看tf/sd卡中的數據:
命令爲:
sudo hexdump -n 1048576 /dev/sdbhtml
其中-n 1048576表明打印出前1M=1024*1024=1048576字節的數據。linux
執行結果(部分)以下:spa
*表明內容爲0x00,爲了節省空間故做省略。3d
三、清空TF卡上前1MB的數據
因爲4412的uboot大小基本在幾百kB的量級,因此清空前1MB空間足夠用,注意這裏的清空不是格式化,而是填充0x00。htm
咱們利用系統/dev下的zero設備,清零tf/sd卡前1MB。對象
執行結果以下:blog
這裏的count=2000表明清空2000個block,一個block=512B,2000個正好爲1MB。ci
再次hexdump查看tf/sd卡數據,發現:開發
前1MB空間成功清0x00。get
四、燒寫uboot啓動文件
在這裏,咱們待燒寫的文件爲 u-boot-iTOP-4412.bin 這個文件。
終端執行命令:
if表明輸入文件地址,以你u-boot-iTOP-4412.bin 這個文件的實際地址爲準,of表明輸出地址,以你tf/sd卡的實際設備號爲準。
到這裏,就能夠將tf/sd卡插入開發板上電啓動了,爲了證實咱們燒寫無誤,咱們執行後續操做。
五、確認燒寫正確(可跳過)
咱們須要肯定從tf/sd卡的第一個block開始處,確實正確燒寫了u-boot-iTOP-4412.bin這個文件,下面咱們對比一下,用到的命令一樣仍是hexdump。
在這裏,咱們爲了顯示方便,只打印前5KB數據,發現bin文件被正確的複製到了sd卡的512字節處:
六、將TF卡接到開發板上,撥碼開關選擇TF啓動,上電:
Done。