[原创] MCU带流启动

qwerghf   2016-12-11 21:56 楼主
对于一个产品来说,通常为了维护产品,保护产品的可靠性,我们往往产品的设计中加入升级通道,在产品运行出现问题,我们可以升级其固件,修改遇到的bug,解决问题。最近调试程序突然发现MCU无法正常启动,正常情况下,MCU可以正常启动,从boot跳转到app,在测试过程中发现无法启动,找了很久,分析原因得到MCU无法启动是因为产品在运行上电过程中,由于数据通道有数据进来导致MCU无法正常进入APP,就是带流启动,现象是运行指示灯亮的很慢。周末两天仔细分析得到,MCU的boot中我们使用了接收中断,由于我的硬件没有预留外部器件判断是否需要升级,所以通过启动一定时间内判断是否收到升级指令来进入升级界面。正是由于这个接收中断在带流启动中一直进入中断,导致无法喂狗,看门狗复位,就这样一直循环,导致跳转失败,带流启动失败。所以我改为查询接收,这样就算有数据来也不会一直进入中断,避免一直进入在中断,通过这种方式成功解决带流启动失败。 总结:带流启动过程中,MCU的boot中串口采用查询接收,可以通过检查到正确的升级指令后再打开串口的中断收发。避免一开始采用中断接收导致MCU带流启动失败。 本帖最后由 qwerghf 于 2016-12-11 21:58 编辑

回复评论 (2)

boot中就使用接收中断,  

通常不是boot完成后,在初始设置 包括中断设置后, 才能使用各种中断和外设吗?
熙熙攘攘的世界,我们不懈前行......
点赞  2016-12-11 22:56
引用: okwh 发表于 2016-12-11 22:56
boot中就使用接收中断,  

通常不是boot完成后,在初始设置 包括中断设置后, 才能使用各种中断和外 ...

不是的,boot中可以使用中断,但是尽量少用为好
点赞  2016-12-12 08:19
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复