FATFS文件系统f_read读取SD卡数据,将数组设置成512时,跟踪后发现程序溢出;将数组设置成1024后可以正常读数据,可是从第512之后的数据并不是所需数据,请教原子哥,这是为什么,怎么解决?

2019-07-21 01:00发布

FATFS文件系统f_read读取SD卡数据,定义存储数据的数组为: [mw_shl_code=c,true]u8 ReadAppBuffer[512][/mw_shl_code]
SD卡初始化、f_open功能正常,使用f_read读取SD卡数据:
[mw_shl_code=c,true]FIL FP_Struct; //用于打开文件 u16 ReadNum; f_read (&FP_Struct,ReadAppBuffer,512,(UINT *)&ReadNum);[/mw_shl_code] 当数组个数为512时,程序死机,跟踪发现数据溢出;
改成1024后,可以正常读取数据,但是第512个数据之后并不是我要读取的数据,不知道从哪里读到的?
求教原子哥,谢谢!!!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
changqi_jxw
1楼-- · 2019-07-21 01:24
问题已经解决,是因为我定义数组时出问题了,我指定了数组的起始地址:
u8   ReadAppBuffer[512] __attribute__ ((at(0X20001000)));//接收缓冲,起始地址为0X20001000.
在程序跟踪过程中,未用到数组时,数组里元素也会变化,可能是数组占用了其他数据的空间,改成:
u8   ReadAppBuffer[512];//接收缓冲.
不指定起始地址时,则不存在上述问题了。
kekehuhu
2楼-- · 2019-07-21 05:32
 精彩回答 2  元偷偷看……

一周热门 更多>