林州 发表于 2014-1-28 15:12:18

fatfs中f_mount 注册工作区的指针必须为全局变量?

FATFS fs;
res=f_mount(0, &fs);//注册一个工作区
fs最好是全局的,要不然在别的函数调用fatfs函数会失败。   我在icc 中测试是这样的,原先在主函数中定义的,没问题,在整理函数后把注册工作区的函数单独为子函数后,整个文件系统崩溃了。将fs定义为全局就好了。

lusson 发表于 2014-1-28 16:59:11

我记得fatfs里面有说明
FATFS结构体内含一个大的buf,不要定义为局部变量,不然的话栈可能会溢出。

gwnpeter 发表于 2014-1-28 19:33:17

使用 static 可以在函数里面定义,不先用栽空间

li3p 发表于 2014-1-28 20:21:23

lusson 发表于 2014-1-28 16:59
我记得fatfs里面有说明
FATFS结构体内含一个大的buf,不要定义为局部变量,不然的话栈可能会溢出。 ...

嗯,没看到这个之前,我居然去把堆栈的数量增大了,让它能够跑。

meirenai 发表于 2014-1-28 20:52:01

这个肯定要全局的啊,因为你挂载的磁盘所有的信息都在这个结构体中,一这个是唯一标志一个磁盘的。

cyt 发表于 2015-3-24 18:28:11

lusson 发表于 2014-1-28 16:59
我记得fatfs里面有说明
FATFS结构体内含一个大的buf,不要定义为局部变量,不然的话栈可能会溢出。 ...

最大的一个数组就只有512,应该不是这个原因
页: [1]
查看完整版本: fatfs中f_mount 注册工作区的指针必须为全局变量?