硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1821|回复: 2
收起左侧

[其它] Hardfault问题

[复制链接]

29

主题

77

回帖

164

积分

初级会员

积分
164
发表于 2018-8-28 14:36:31 | 显示全部楼层 |阅读模式
uint8_t copy(uu8 *psrc,u8 *pdst,uint32_t totsize,uint32_tcpdsize)
{
    FIL *fsrc=0;
    FIL *fdst=0;
    FIL fil1,fil2;


     fsrc=&fil1;
     fdst=&fil2;

..省略..........
}形如这样的一个函数,只要使用fsrc或者fdst,即出现hardfault->总线错误->精准的数据访问冲突,
把 FIL fil1,fil2;定义成static FIL fil1,fil2;静态局部变量,出现hardfault->总线错误->不精准的数据访问冲突。静态变量也是如此。
只有fil1根fil2定义成全局变量才不会出现hardfault。    不知道什么原因能造成这种总线错误。
中间以为是编译器优化的关系,改变优化选项也没用,


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2018-8-29 00:50:21 | 显示全部楼层
看下你定义的这两个变量占用了多大的空间FIL fil1,fil2;

如果是RTOS里面使用,务必加大任务栈,而裸机使用的话,要加大xxxx.s文件里面的Stack大小。
回复

使用道具 举报

29

主题

77

回帖

164

积分

初级会员

积分
164
 楼主| 发表于 2018-8-29 09:11:29 | 显示全部楼层
eric2013 发表于 2018-8-29 00:50
看下你定义的这两个变量占用了多大的空间FIL fil1,fil2;

如果是RTOS里面使用,务必加大任务栈,而裸机使 ...

任务栈,跟stack都加大了,还是有问题的。最后改成分配heap了,
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-12 00:34 , Processed in 0.218897 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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