OpenEdv-开源电子网

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

程序升级后,跳转成功后程序不运行

[复制链接]

75

主题

185

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2021-2-5
在线时间
135 小时
发表于 2023-9-4 16:34:56 | 显示全部楼层 |阅读模式
这个问题很奇怪,设备的升级反复测试一直都是没问题的,包含设备掉电都会调用备份程序处理的,但是就是有这种偶发性的设备升级后,跳转过去APP程序不运行,是跳转成功了的,但是我用keil下载一个程序进去又能够开始正常运转(什么都没动过),这种情况我的猜测是以下两种:         一种是跳转过去后外设初始化有问题导致出错,这种猜测是因为进入app没有打印提示性消息就看门狗重启了。
         另一种情况是跳转的地址可能有问题,跳转到了一个错误的地址。这种情况更加不成立,因为重新下载APP程序之后一下就能够运行了,

         还有一种猜测就是,大家有没有研究过HAL_Init这个函数,如果调用这个函数之前不去调用HAL_DeInit会不会出现什么未知状况(之所以说这个是因为看到有个帖子说,使用串口时调用HAL_UART_Init之前没有调用HAL_UART_DeInit,然后出现一些意外情况才联想到这个)
         论坛里的大神们,请教大家帮忙分析一下
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

75

主题

185

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2021-2-5
在线时间
135 小时
 楼主| 发表于 2023-9-4 17:05:23 | 显示全部楼层
补充一点:为了节省成本,设备是采用FLASH模拟EEPROM的方式存储设备参数,这个出问题的设备,有一组参数确实丢失了,不确定是否是因为程序对flash的反复访问导致的,但是这组参数的丢失也不影响程序正常运行和设备正常使用
回复 支持 反对

使用道具 举报

8

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
789
金钱
789
注册时间
2019-8-15
在线时间
423 小时
发表于 2023-9-5 09:08:31 | 显示全部楼层
就目前我所了解到的有3点需要注意:1.跳转之前必须关闭中断,不管是deinit,还是关闭总中断,反正必须关掉所有的中断;2.app初始化代码必须要手动初始化所有的全局变量,不然靠startup文件的初始化,极有可能有问题,应该可以靠链接文件直接初始化bss段;3.在app中初始化片上外设,必须要先将外设全部停止下来重新初始化。比如adc+dma方式,必须将adc和dma同时停下来再初始化,否者会有问题
回复 支持 反对

使用道具 举报

25

主题

180

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2015-1-14
在线时间
152 小时
发表于 2023-11-10 10:01:08 | 显示全部楼层
这个其实就是用boot升级的时候操作了boot部分falsh区域,导致数据丢失,可以烧录完后读取出来对比就知道了,之前遇到的都是app的起始地址设置有问题,擦除的时候擦掉了boot某些部分,调整app地址就可以了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-24 12:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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