打印
[STM32F4]

BootLoader跳转到App后宕机

[复制链接]
1018|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cyc2009|  楼主 | 2020-5-6 22:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教各位高手,在调试过程中,发现从BootLoader跳转到App应用程序后宕机了,之前一直使用得很愉快。
查看了一下代码,原来是在应用程序中没有启动Timer4,流程如下:
1,BootLoader中开启了Timer4,用于心跳灯;
2,在app应用程序中,如果也初始化和开启timer4,程序就正常;
3,如果屏蔽掉timer4,就出现死机;
之前理解的是跳转到app后,所有初始化都重新开始,互不影响,看来是理解有误。
请教各位高手:
1,跳转到应用程序后,需要和BootLoader的初始化一样么?
2,如果可以不一样,需要如何操作?复位或清空sram?

使用特权

评论回复
沙发
gejigeji521| | 2020-5-7 10:03 | 只看该作者
说明里面有用到这个定时器啊,没有开启

使用特权

评论回复
板凳
cyc2009|  楼主 | 2020-5-7 11:35 | 只看该作者
gejigeji521 发表于 2020-5-7 10:03
说明里面有用到这个定时器啊,没有开启

仅在回调函数里翻转一下呼吸灯,不开启定时器,就不会到回调里的。

使用特权

评论回复
地板
zchong| | 2020-5-7 13:24 | 只看该作者
bootloader中尽量少打开一些外设,打开的外设需要考虑跳转到app后对app的影响,建议跳转前将用的外设deinit。
以你的这个timer为例,在boot中打开了,应该是也开了中断,实际上要仔细分析,还是很复杂的,比如跳转到app了,但中断向量表还未设置,这个是否发生了中断是什么结果,跳转到app了中断向量表也设置了,但很多变量还未初始化,这个时候发生了中断会有什么结果,……

使用特权

评论回复
评论
cyc2009 2020-5-7 14:01 回复TA
好的,非常感谢,我再学习学习~ 
5
香水城| | 2020-5-7 14:39 | 只看该作者
一般来讲,boot程序和APP程序是两套独立的工程。
在跳转前 在BOOT区开启的中断都关闭掉,这个很关键。

楼上说的对BOOT区开启的外设都复位掉,一方面避免跳转过程中发生中断。
如果中途发生中断,这时中断矢量表往往没安排好就会导致异常。另外一方面,
避免BOOT区的外设配置莫名其妙的延申到APP区了。


使用特权

评论回复
6
cyc2009|  楼主 | 2020-5-7 22:34 | 只看该作者
香水城 发表于 2020-5-7 14:39
一般来讲,boot程序和APP程序是两套独立的工程。
在跳转前 在BOOT区开启的中断都关闭掉,这个很关键。

非常感谢~学习了~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

56

帖子

0

粉丝