OpenEdv-开源电子网

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

关于STM32从APP跳转到IAP,UART卡死问题

[复制链接]

1

主题

6

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2017-12-14
在线时间
4 小时
发表于 2017-12-14 22:00:31 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 qr04wg 于 2017-12-19 10:08 编辑

通过IAP来更新APP程序,大体的实现过程是APP程序从串口UART4收到更新命令,跳转到IAP更新APP程序,更新完程序后跳转到APP继续执行。从网上查看资料目前两个程序之间能实现跳转。
通过ULINK2烧录IAP程序,然后通过电脑串口模拟发送升级指令以及升级数据,可以更新APP程序,跳转到APP程序执行没有问题
在APP程序接收电脑串口指令跳转到IAP后,定时器正常(LED灯正常闪烁),UART4发送正常(打印信息正常,UART4发送中断正常),但是一旦这个时候通过电脑串口向UART4发送数据,IAP程序卡死,LED灯闪烁停止,串口打印停止,因为开启了看门狗,5秒后复位,复位以后再通过电脑串口发送数据到UART4则正常。
现在的问题是机器直接上电从IAP更新APP正常,但是从APP跳到IAP去更新,UART4接收数据卡死。
请教下各位,通过这些描述大体能分析下是哪里问题吗,程序从APP跳到IAP卡死,用ULINK2不知道怎样调试,或者请告知下怎样进行调试分析问题,谢谢。


问题应该还是中断导致的,APP中使用了freeRTos,如果APP跑裸机就没有问题,看了很多网上的帖子,出问题大多数都是中断问题,很多网友建议boot不使用中断,我就把boot的Uart改成了查询方式,目前程序可以跑了

最佳答案

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

感谢,这样需要的flash空间就不够了,我解决了,还是中断导致的,在boot里面uart改用查询了就没事了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2017-12-14
在线时间
4 小时
 楼主| 发表于 2017-12-14 22:00:32 | 显示全部楼层
lvkanger 发表于 2017-12-15 09:39
解决方法就是用软复位进行APP到IAP的跳转。至于更新程序的策略可以优化一下应该也完全没问题。我现在的用法 ...

感谢,这样需要的flash空间就不够了,我解决了,还是中断导致的,在boot里面uart改用查询了就没事了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-12-15 00:52:53 | 显示全部楼层
加入一些printf,来分析问题点在哪里。 另外,APP跳转到IAP你是用的软复位吧?
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2017-12-14
在线时间
4 小时
 楼主| 发表于 2017-12-15 08:41:53 | 显示全部楼层
正点原子 发表于 2017-12-15 00:52
加入一些printf,来分析问题点在哪里。 另外,APP跳转到IAP你是用的软复位吧?

原子大哥你好,从APP跳到IAP是通过跳转实现的(也就是和从IAP到APP一样的方式),因为在这个案子里面STM32是用来控制电源之类的,还有另外的芯片将更新APP的程序发给IAP,如果复位的话另外的芯片断电就不能更新了,但是如果是中断的话没发打印啊
回复

使用道具 举报

0

主题

207

帖子

0

精华

高级会员

Rank: 4

积分
959
金钱
959
注册时间
2017-5-27
在线时间
108 小时
发表于 2017-12-15 08:57:29 | 显示全部楼层
qr04wg 发表于 2017-12-15 08:41
原子大哥你好,从APP跳到IAP是通过跳转实现的(也就是和从IAP到APP一样的方式),因为在这个案子里面STM3 ...

建议使用软复位进入IAP
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7549
金钱
7549
注册时间
2016-11-30
在线时间
642 小时
发表于 2017-12-15 09:39:19 | 显示全部楼层
解决方法就是用软复位进行APP到IAP的跳转。至于更新程序的策略可以优化一下应该也完全没问题。我现在的用法是Flash分4个区,IAP在A区,APP在B区,C区存放更新的APP,D区存系统参数和程序要更新的标志。IAP只做一件事,判断程序要更新的标志,置位就把C区最新程序copy到B区。在APP里边接收要更新的程序就可以了。仅供参考。
回复

使用道具 举报

1

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-9-6
在线时间
7 小时
发表于 2017-12-15 09:54:41 | 显示全部楼层
本人也在搞IAP,请问你是如何重APP跳到IAP的?我用IAP跳到APP的方式,跳不回去,能加QQ不?540840368,还想请问原子哥,是怎么进行软复位的?
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2017-12-14
在线时间
4 小时
 楼主| 发表于 2017-12-19 10:03:33 | 显示全部楼层
lanlzp 发表于 2017-12-15 08:57
建议使用软复位进入IAP

因为是另外一个芯片发送升级程序给STM32,而这个芯片是STM32来控制这个芯片的供电,如果软复位,这个芯片也重启了不能升级了
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2017-12-14
在线时间
4 小时
 楼主| 发表于 2017-12-19 10:05:23 | 显示全部楼层
ljinwei6 发表于 2017-12-15 09:54
本人也在搞IAP,请问你是如何重APP跳到IAP的?我用IAP跳到APP的方式,跳不回去,能加QQ不?540840368,还想 ...

你解决了吗?我这里可以了
回复

使用道具 举报

2

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2017-5-16
在线时间
14 小时
发表于 2017-12-27 09:54:06 | 显示全部楼层
本帖最后由 reverse 于 2017-12-27 09:56 编辑
qr04wg 发表于 2017-12-19 10:05
你解决了吗?我这里可以了

楼主,你好。我现在遇到了同样的问题,板子直接上电从IAP更新APP正常,但是从APP跳到IAP后,串口就卡死了,可是我的IAP串口用的是轮询,只是APP的串口用到了中断。APP跳转到IAP用的是软复位,能不能指点下是什么原因。

回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2020-10-30
在线时间
1 小时
发表于 2021-3-6 17:18:37 | 显示全部楼层
有没有大佬能说一下软复位怎么操作呀
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 04:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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