1. 下載 dosfstools,http://www.sfr-fresh.com/linux/misc/dosfstools-2.11.src.tar.gz。

2. 解壓
tar zxvf dosfstools-2.11.src.tar.gz

3. 修改 dosfstools-2.11/Makefile
CC = arm-elf-gcc
CPP = $(CC) -E
OPTFLAGS = -O2 -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -DPATH_MAX=4096
WARNFLAGS = -Wall
DEBUGFLAGS =
CFLAGS = $(OPTFLAGS) $(WARNFLAGS) $(DEBUGFLAGS)
LDFLAGS = -elf2flt
由於 PATH_MAX 是放在 linux/limits.h 裏,而不是放在 limits.h,所以要手動新增一下。

4. make all


PS: 切記不要 cd mkdosfs 再做 make,會少了 -D_FILE_OFFSET_BITS=64 ,造成大容量硬碟無法 format。

boot.c 內
#define GET_UNALIGNED_W(f) CF_LE_W( *(unsigned short *)&f )
當 f[0] = 0 時,會造成 f[1] 沒有轉換過來,原因不明。
所以要改成
#define GET_UNALIGNED_W(f) (f[0]+f[1]*0x100)
即可

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()