/**
******************************************************************************
* @author Maoxiao Hu
* @version V1.0.1
* @date Dec-2014
******************************************************************************
* < COPYRIGHT 2014 ISE of SHANDONG UNIVERSITY >
******************************************************************************
**/
如果你的系統是Ubuntu,請移步這裡《如何在Ubuntu下使用TF/SD 卡制作Exynos 4412 u-boot啟動盤》http://www.linuxidc.com/Linux/2015-02/113493.htm。
硬件:迅為iTop 4412精英版 & 8GB TF卡
軟件:Hex Fiend & 系統自帶終端
首先,我們應該清楚TF/SD卡可以看作一張完全空白的“白紙”,之所以有分區、分區格式的區別不過是在在這張“白紙”的某些特定位置寫入了一些數據來指示分區、分區格式。
其次,我們還應該清楚,在TF/SD啟動模式下,exynos 4412一上電,內部iROM會從TF/SD的第1個Block(第512個字節開始)讀取8KB的數據到內部iRAM,然後從內部iRAM的0地址開始運行。
原理搞清楚了,那麼首先需要把TF/SD低級格式化-所有Block全部寫0。
1、連接TF/SD卡,打開終端,使用diskutil list命令查看所有連接到電腦上磁盤:
毫無疑問現在/dev/disk2是我的TF卡,從TYPE屬性可以看出現在TF卡是FAT32格式。
2、使用16進制編輯器打開TF卡查看數據(可跳過)
在這裡我們使用一款16進制編輯軟件:Hex Fiend (Windows下可使用WinHex)
Command+Alt+O打開路徑:/dev/disk2s1(指定disk2的第一個分區s1)
我們可以看到TF卡中已被寫入了各種FAT磁盤格式的控制字符。
如有興趣了解這些字符代表的含義,請下載微軟官方Spec:
Microsoft EFI FAT32 File System Specification
如果這時我們寫入u-boot,在512行和992行處原來的字符會被保留,這顯然不是我們所希望的。
3、清空TF卡上的數據:
diskutil zeroDisk disk2
執行此句之前請關閉Hex Fiend(如果執行了第2步的話),否則會提示Resource Busy。
非常長的時間,但是執行到4%就可以了,這時已經有8G*0.04 = 320MB的空間被清0了,足夠我們使用了,使用Ctrl + c 打斷diskutil進程。
4、寫入u-boot文件
首先cd到你u-boot文件的存放目錄。
使用dd命令寫入:
sudo dd if=u-boot-iTOP-4412.bin of=/dev/disk2 seek=1
5、對比TF卡數據與u-boot bin文件(可跳過)
再次使用Hex Fiend分別打開u-boot bin文件和TF卡,注意此時TF卡的FAT分區表已經被破壞了,應使用Command+Alt+O打開路徑/dev/disk2(指定disk2 RAW數據)
對應位置數據完全一致,搞定。
6、將TF卡接到開發板上,撥碼開關選擇TF啟動,上電: