一、FAT格式文件系統操作命令
有時候需要在uboot中對 SD卡或者EMMC中存儲的文件進行操作,這時候就要用到文件操作命令,跟文件操作相關的命令有:fatinfo、fatls、fstype、fatload和fatwrtie,這些文件操作命令只支持FAT格式的文件系統。
1、fatinfo命令
fatinfo命令用於查詢指定MMC設置指定分區的文件系統信息,格式如下:
fatinfo <interface> [<dev[:part]>]
interface:表示接口,如mmc;
dev:是查詢的設備號;
part:是要查詢的分區。
比如我們要查詢EMMC分區1的文件系統信息,命令如下:
fatinfo mmc 1:1
結果如下圖所示:
從圖中顯示的信息可以知道EMMC分區1的文件系統格式是FAT16。
2、fatls命令
fatls命令用於查詢FAT格式設備的目錄和文件信息,命令格式如下:
fatls <interface> [<dev[:part]>] [directory]
interface:表示接口,如mmc;
dev:是查詢的設備號;
part:是要查詢的分區;
directory:是要查詢的目錄。
比如查詢EMMC分區1中的所有的目錄和文件,命令如下:
fatls mmc 1:1
結果如下圖所示:
從圖中顯示的信息可以知道EMMC分區1中存放了兩個文件,分別是Linux鏡像文件zImage和設備樹文件imx6ull-14x14-evk.dtb。
3、fstype命令
fstype用於查看MMC設備某個分區的文件系統格式,命令格式如下:
fstype <interface> <dev>:<part>
interface:表示接口,如mmc;
dev:是查詢的設備號;
part:是要查詢的分區。
比如筆者開發板的EMMC默認有3個分區,查看3個分區的文件系統格式命令如下:
1 fstype mmc 1:0 2 fstype mmc 1:1 3 fstype mmc 1:2
結果如下圖所示:
從圖中的信息可以知道EMMC分區0的文件系統格式無法識別,原因是未格式化;分區1的文件系統格式為fat;分區2的文件系統格式為ext4。
4、fatload命令
fatload命令用於將指定的文件讀取到DRAM中,命令格式如下:
fatload <interface> [<dev[:part]>[<addr> [<filename> [bytes [pos]]]]]
interface:表示接口,如mmc;
dev:是查詢的設備號;
part:是要查詢的分區;
addr:是保存在DRAM中的起始地址;
filename:是要讀取的文件名字;
bytes:表示讀取多少字節的數據,如果bytes為0或者省略表示讀取整個文件;
pos:是要讀的文件相對於文件首地址的偏移,如果為0或者省略表示從文件首地址開始讀取。
比如筆者將EMMC分區1中的zImage文件讀到DRAM中的0x80800000地址處,命令如下:
fatload mmc 1:1 80800000 zImage
結果如下圖所示:
5、fatwrite命令
fatwrite命令用於將DRAM中的數據寫入EMMC設備中,命令格式如下:
fatwrite <interface> <dev[:part]> <addr> <filename> <bytes>
interface:接口,比如mmc;
dev:設備號;
part:分區;
addr:是要寫入的數據在DRAM中的起始地址;
filename:是要寫入的數據文件名字;
bytes:表示要寫入多少字節的數據。
首先要確認uboot是否有fatwrite命令,默認uboot沒有使能fatwrite命令,需要修改板子的配置頭文件,比如mx6ull_fire_emmc.h(文件路徑:uboot根目錄:/include/configs/mx6ull_fire_emmc.h),板子不同對應的頭文件也不同,請根據個人實際情況設置。找到開發板對應的配置頭文件后在配置文件中添加如下一行宏定義來使能fatwrite命令:
#define CONFIG_FAT_WRITE /* 使能fatwrite命令 */
添加的位置如下圖所示:
比如使用tftp命令將zImage下載到DRAM的0x80800000地址處,命令如下:
tftp 80800000 zImage
下載過程如下圖所示:
zImage的大小為5614872(0x55AD18)個字節。
接下來使用fatwrite命令將其寫到EMMC設備分區1中,命令如下:
fatwrite mmc 1:1 80800000 zImage 0x55AD18
結果如下圖所示:
待添加。。。。。。
完成后使用如下命令查看EMMC分區1里面的文件:
fatls mmc 1:1
結果如下圖所示:
待添加。。。。。。
end