stm32中出现的hard_fault问题 如何解决
时间:11-13
来源:互联网
点击:
最近移植别人的一个lora程序,公司前任同事已经搞定的程序,从IAR平台移植到KEIL中,移植后,居然出现了hardfault问题。一直以来,我很少遇到这个问题,遇到了,也算是好事。
然后看看如何解决的吧。
1、单步执行,发现程序运行到哪的时候出现了hardfault问题。发现是初始化的时候。应该是结构体指针的初始化问题。
2、其实也从晚上找了一些如何定位hardfault的问题点的方法。充分利用call stack以及但不调试的工具。
3、问题点通常发生在数据越界,指针未初始化,堆栈溢出的这些情况。
method-1 试过它的方法,查看寄存器,利用反汇编,定位出问题点。http://bbs.ednchina.com/BLOG_ARTICLE_3024685.HTM
method-2 也试过这个方法,利用fault reports,以及call stack+local窗口,定位问题点。http://blog.csdn.net/xiahouzuoxin/article/details/10068455
在这里,我推荐method-2。
static void __lora_init(void)
{
lora_port_init(); ----GPIO的初始化
register_rf_func(&ctrlTypefunc); ---结构体,成员是指针
····
}
更改为
static void __lora_init(void)
{
register_rf_func(&ctrlTypefunc); ---结构体,成员是指针
lora_port_init(); ----GPIO的初始化
····
}
由于结构体在lora_port_init();中使用到结构体ctrlTypefunc,但是未初始化,所以出现这个问题。
stm32中hardfaul 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)