OpenEdv-开源电子网

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

一个IAP程序 下载完程序后软件复位后 卡死在hardfault_handler

[复制链接]

2

主题

2

帖子

0

精华

新手入门

积分
33
金钱
33
注册时间
2015-10-21
在线时间
1 小时
发表于 2015-10-21 14:38:33 | 显示全部楼层 |阅读模式
5金钱
主芯片用的是stm32l15系列
在0x08000000-0x08004000放了一段IAP程序
0x08004000之后放的是主程序。

直接用Keil下载两段程序后可以正常跳转到主程序运行。运行IAP模式, 更新主程序后复位再次跳转到主程序是卡死在第一段程序的hardfault_handler。

 修改了第一段程序的 HardFault_Handler函数
void HardFault_Handler(void)
{
  /* Go to infinite loop when Hard Fault exception occurs */
//   while (1)
//   {
 // }
wait();
}
__asm void wait()
{
BX lr
}
 
发现是运行到0x080043F8后跳转到HardFault_Handler 查代码发现是system_stm32|1xx.c 325行里 static void SetSysClock(void) 中的
    FLASH->ACR &= ~FLASH_ACR_LATENCY;  这一行。

几个疑问:
1.为什么我正常下载程序没问题,IAP更新的程序(同一段主程序)会有问题?是否是我Flash擦写操作有问题?我单步调试,在Keil里用memory查看擦写的地址,都是正常在擦写的。
2.为什么已经跳转进入第二段程序(我把断点设置在static void SetSysClock(void) 开头,Debug时可以正常进入,单步运行到上述那行时就出错),出现硬件错误,还是跳转回第一段程序的HardFault_Handler,是否我跳转时向量表便宜设置有问题?

我把第二段程序再用KEIL 下载一遍 程序又可以正常运行了。

各位大侠有没有遇到过这种问题,或者可不可以提供一点调试思路。调试了两天了 好难过

最佳答案

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

估计是你的iap更新代码有问题。
Not All who Wander are lost.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-10-21 14:38:34 | 显示全部楼层
估计是你的iap更新代码有问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

leiyu511 该用户已被删除
发表于 2017-2-20 22:00:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2017-4-18
在线时间
4 小时
发表于 2017-4-18 14:26:13 | 显示全部楼层
leiyu511 发表于 2017-2-20 22:00
请问楼主解决了吗,我也是这种现象,我感觉应该是bin文件有问题,我用Jlash分别烧两个程序的hex文件可以正 ...

麻烦问一下,你遇到的问题解决了吗,我的也是这样
回复

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2016-11-7
在线时间
38 小时
发表于 2017-7-7 13:39:46 | 显示全部楼层
都叫我大力 发表于 2017-4-18 14:26
麻烦问一下,你遇到的问题解决了吗,我的也是这样

请问您解决了吗?我也遇到同样的问题。
回复

使用道具 举报

7

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2017-5-24
在线时间
23 小时
发表于 2017-7-10 12:39:55 | 显示全部楼层
FGY 发表于 2017-7-7 13:39
请问您解决了吗?我也遇到同样的问题。

不是bin文件的问题的,你把bin文件,以16进制打开,然后仿真的时候,看接收到的数据,看接收的数据有没有出错。  然后至于你的仿真卡在那里了,估计跟你仿真的时候操作有关,我刚也遇到了这种情况。
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2017-2-13
在线时间
4 小时
发表于 2017-9-12 17:13:02 | 显示全部楼层
楼主,我也遇到一样的问题,我就是使用原子的IAP例程改的SD卡IAP。
我发现,我把LCD_Init这句注释掉,然后删除掉boot里面所有的显示屏操作内容,就会出现这个问题,一旦我把LCD_Init的注释去掉,再测试,就没有这个问题,奇葩啊
楼主你现在解决掉了吗
另外@正点原子 原子哥帮我看看呗
回复

使用道具 举报

4

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
131
金钱
131
注册时间
2019-12-19
在线时间
17 小时
发表于 2023-2-27 17:45:21 | 显示全部楼层
请问楼主解决这个问题了吗,我遇到了和你一样的问题。
回复

使用道具 举报

4

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
131
金钱
131
注册时间
2019-12-19
在线时间
17 小时
发表于 2023-2-27 17:45:52 | 显示全部楼层
FGY 发表于 2017-7-7 13:39
请问您解决了吗?我也遇到同样的问题。

请问解决这个问题了吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 16:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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