OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3456|回复: 7

求帮忙,sd卡f_write进入HardFault_Handler

[复制链接]

10

主题

26

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2020-9-10
在线时间
21 小时
发表于 2020-10-17 15:28:39 | 显示全部楼层 |阅读模式
2金钱
照着原子哥的例程,自己写的程序,只涉及sdio驱动8Gsd卡,代码应该差不多。发现问题如下:
f_mount和f_mkfs没问题,f_open和f_putc,f_close没问题。
f_write永远卡死,应该是内存分配问题,但显示不是NULL,我看了内存地址,是4字节对齐的。实在不知道怎么办了。
顺便问一下align怎么用的。
FATFS *fs[1];
FIL *file;   
FIL *ftemp;     
UINT br,bw;  
FILINFO fileinfo;
DIR dir;   
__align(4) u8 fatbuf[512];   

u8 exf_init()
{
fs[0] = (FATFS * )malloc(sizeof(FATFS));
file = (FIL*)  malloc(sizeof(FIL));
ftemp = (FIL*)malloc(sizeof(FIL));

if(fs[0] == NULL) return exf_init_fail;
if(file == NULL) return exf_init_fail;
if((ftemp == NULL) ) return exf_init_fail;
  return exf_init_ok;

}
sd卡f_write单步跟踪,每次执行到 res = validate(fp);      /* Check validity */就进入HardFault_Handler

最佳答案

查看完整内容[请看2#楼]

不是这个,一般这个只是设置大小。我怀疑是你自己定义的数组,越界导致的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2020-10-17 15:28:40 | 显示全部楼层
sc1099 发表于 2020-10-17 16:51
我也怀疑,但是堆和栈加到8k还是这个问题,迷茫

不是这个,一般这个只是设置大小。我怀疑是你自己定义的数组,越界导致的
回复

使用道具 举报

10

主题

26

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2020-9-10
在线时间
21 小时
 楼主| 发表于 2020-10-17 15:37:46 | 显示全部楼层
补充一下,在启动文件中,堆我设置为0x1000,栈设置为0x2000
回复

使用道具 举报

10

主题

26

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2020-9-10
在线时间
21 小时
 楼主| 发表于 2020-10-17 15:59:22 | 显示全部楼层
新人求帮助,谢谢大家
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2020-10-17 16:32:30 | 显示全部楼层
是不是数组溢出导致的
回复

使用道具 举报

10

主题

26

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2020-9-10
在线时间
21 小时
 楼主| 发表于 2020-10-17 16:51:42 | 显示全部楼层
三叶草 发表于 2020-10-17 16:32
是不是数组溢出导致的

我也怀疑,但是堆和栈加到8k还是这个问题,迷茫
回复

使用道具 举报

10

主题

26

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2020-9-10
在线时间
21 小时
 楼主| 发表于 2020-10-17 16:55:16 | 显示全部楼层
原子哥的A盘里的程序源码,f_write也是报错HardFault_Handler。然后原子哥D盘里的FATFS文件系统试验:“视频中FATFS测试工程”里面用f_write就没有问题。我想知道这两个有什么区别
回复

使用道具 举报

10

主题

26

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2020-9-10
在线时间
21 小时
 楼主| 发表于 2020-10-17 17:59:31 | 显示全部楼层
三叶草 发表于 2020-10-17 17:13
不是这个,一般这个只是设置大小。我怀疑是你自己定义的数组,越界导致的

谢谢啦,是这个问题,数组定义的时候要加上值,不能像变量那样先定义后续赋值。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 07:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表