标题:
转fatfs 文件系统选择(2)
[打印本页]
作者:
yuyang911220
时间:
2014-11-29 23:01
标题:
转fatfs 文件系统选择(2)
需要注意的是,LD_WORD返回的就必须是WORD。这样做了,编译器大部分的也可以编译通过,但是ADS就是通不过,有3个地方,
finfo->fsize =
LD_DWORD
(&dir[DIR_FileSize]); /* Size */
finfo->fdate =
LD_WORD
(&dir[DIR_WrtDate]); /* Date */
finfo->ftime =
LD_WORD
(&dir[DIR_WrtTime]); /* Time */
其中,dir的是这样定义的:const BYTE *dir,编译器报错是类型不匹配,因此,这里的几个LD_WORD和LD_DWORD重写,定义成一致的类型即可:
WORD
LD_WORD_1
(const BYTE *pt)
{
BYTE *PT = (BYTE*)pt;
return (WORD)(PT[0]+PT[1]*256);
}
DWORD
LD_DWORD_1
(const BYTE *pt)
{
BYTE *PT = (BYTE*)pt;
return ((DWORD)PT[0]+(DWORD)(PT[1]*256)+(DWORD)(PT[2]*65536)+(DWORD)(PT[3]*16777216));
}
而后面改成:
finfo->fsize =
LD_DWORD_1
(&dir[DIR_FileSize]); /* Size */
finfo->fdate =
LD_WORD_1
(&dir[DIR_WrtDate]); /* Date */
finfo->ftime =
LD_WORD_1
(&dir[DIR_WrtTime]); /* Time */
编译,一路OK,然后写一个文件,哇,哈哈哈哈!!!!终于出来了!!!!写文件没问题,读也没问题!@~~~~~测试了常用的函数,都没有问题,包括格式化([url=]f_mkfs,前提是你的[/url][url=]disk_ioctl[/url] 没问题),测试
了下速度,读12.5M的MP3,大约3秒,写这个12.5M的MP3大约6.5秒,勉强达到要求,再优化下驱动那边就可以更快了!~~~~~~~
发个FatFs的官方网址
http://elm-chan.org/fsw/ff/00index_e.html
总结这次移植,差点失败就在于编译器的指针的转换问题,写出来,希望兄弟姐妹们在移植的时候不会遇到这种问题。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0