TI中文支持网
TI专业的中文技术问题搜集分享网站

SD卡调用fopen后出错,回传值为FR_NO_FILESYSTEM的原因?

大家好,

在starteware下面调用SD例程来调试自己制作的开发板,使用例程hsMmcSdRw,调用fmount后,使用f_open后报错。

在文件ff.c中,针对f_open函数一路追踪下去,执行顺序如下:

f_open()->auto_mount()->check_fs()->disk_read()->MMCSDReadCmdSend(),执行完后fs->win[510]仍然为零(错误),

导致函数check_fs()中返回值为2.

if (LD_WORD(&fs->win[BS_55AA]) != 0xAA55)                /* Check record signature (always offset 510) */        

 return 2;

正确的时候fs->win[510]的值为0x55AA.

 

现在我的问题是,出错的地方找到了,可不清楚错误数值产生的原因,所以请教一下诸位?

谢谢!

Steven Liu1:

FR_NO_FILESYSTEM,应该没能正常识别出来你的文件系统,你要读的这个SD卡是啥格式的?FAT32?能正常在电脑上进行读写吗?

STONE:

回复 Steven Liu1:

谢谢提醒!

问题找到了,不过还是得请教一下原因?

在移植代码时 f_mount(driveNum, &g_sFatFs);中的变量g_sFatFs,在定义时漏掉了

#if defined(__TMS470__)

 #pragma DATA_ALIGN(g_sFatFs, SOC_CACHELINE_SIZE);

我将上面代码代码添加后,rebuilt,connect,load,再次追踪执行后发现fs->win[510]的值是0x55AA,执行正确。

 

请问下 #pragma DATA_ALIGN(g_sFatFs, SOC_CACHELINE_SIZE);的作用是内存对齐, 和这个问题的具体关系是什么呢?

谢谢!

 

赞(0)
未经允许不得转载:TI中文支持网 » SD卡调用fopen后出错,回传值为FR_NO_FILESYSTEM的原因?
分享到: 更多 (0)