Board logo

标题: 转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