LD_WORD(ptr) ,LD就是load,WORD在integer.h里面定义的是16位的无符号数,那这个需要完成的就是载入一个16位的数,或者说是2个字节,后面的 ptr是参数。(WORD)(*(WORD*)(BYTE*)(ptr)) ,先将这个ptr转换成一个指向BYTE类型数据的指针(BYTE *),在将这个指针转换成一个指向16位无符号数的指针(WORD *),然...
finfo->ftime =LD_WORD(&dir[DIR_WrtTime]); /* Time */ 其中,dir的是这样定义的:const BYTE *dir,编译器报错是类型不匹配,因此,这里的几个LD_WORD和LD_DWORD重写,定义成一致的类型即可: WORDLD_WORD_1(const BYTE *pt) { BYTE *PT = (BYTE*)pt; return (WORD)(PT[0]+PT[1]*256); } DW...
fs->fatbase = bootsect + LD_WORD(&fs->win[BPB_RsvdSecCnt]);/* FAT start sector (lba) */FAT表开始于开始扇区+保留扇区。 fs->csize = fs->win[BPB_SecPerClus];/* 每个簇的扇区数目 */ fs->n_rootdir = LD_WORD(&fs->win[BPB_RootEntCnt]);/* Nmuber of root directory entries *...
if (LD_WORD(&fs->win[BS_55AA]) != 0xAA55) /* Check boot record signature (always placed at offset 510 even if the sector size is >512) */ return 2; if ((LD_DWORD(&fs->win[BS_FilSysType]) & 0xFFFFFF) == 0x544146) /* Check "FAT" string */ return 0; if ((LD_DWORD...
到这里,移植基本完成了,如果你的文件系统出现LD_WORD(ptr) (WORD)(*(WORD*)(BYTE*)(ptr))有问题(数据异常终止DATA ABORT exception之类的)的情况,请百度搜索“转一篇比较详细介绍FatFS文件系统移植的文章”就可以搞定了,那里有详细的解决办法。
if (LD_WORD(&fs->win[BS_55AA]) != 0xAA55) /* Check boot record signature (always placed at offset 510 even if the sector size is >512) */ return 2; if ((LD_DWORD(&fs->win[BS_FilSysType]) & 0xFFFFFF) == 0x544146) /* Check "FAT" string */ ...
FatFs文件系统的移植 FatFs文件系统的移植 因为需要,又不想自己写,所以就移植了一个文件系统。说下我的硬件和开发工具:接成 TRUE IDE 模式下的CF卡(也就是相当于一块硬盘了),三星S3C2440的ARM9,开发工具是很老很老的D版的ADS1.2。 我在网上看到的嵌入式系统上面常用的文件系统有UCOSII公司的UC/FS,支持...
{ if(ld_word(fs->win + i) == 0) //数据为0x0000 { nfree++; //空闲扇区数加1 } i %...
LD_WORD(&dir[DIR_FstClusLO]); fp->fsize = LD_DWORD(&dir[DIR_FileSize]);/* File size */ fp->fptr = 0; fp->csect = 255;/* 文件读写指针为0 */ fp->fs = dj.fs; fp->id = dj.fs->id;/* Owner file system object of the file */ ...
FatFS执行流程分析(一)在网上找了一个FatFS移植的例子,并含有源代码。http://blog.ednchina.com/jjldc/190753/message.aspx 在主程序中,有FatFS操作的流程,我的流程分析就以这个为基础。 一、读文件流程。1、程序结构 res = f_mount(0, &fs); res = f_open(&file, "data.txt", FA_OPEN_...