OpenEdv-开源电子网

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

STM32F0+IAP+FreeRTOS升级后不正常解决

[复制链接]

39

主题

131

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1439
金钱
1439
注册时间
2015-12-26
在线时间
208 小时
发表于 2017-11-10 14:32:55 | 显示全部楼层 |阅读模式
本帖最后由 ZhuMX 于 2017-11-10 14:34 编辑

    最近调试FreeRTOS程序,发现直接用IAR下载APP后程序运行正常,但是通过IAP升级后却发现程序跑飞(因为是IAP升级,无法调试App程序,所以跳转后具体在哪跑飞不得而知)。通过IAP升级裸机APP却是正常的,所以中断向量,程序地址等配置应该没问题。
    注释掉部分IAP代码,只留单纯的跳转语句后再调试,发现加RTOS的App运行正常了,所以问题一定是IAP程序中其他的配置导致App跑飞,经过逐个排查后终于找到了原因,是IAP中配置了Timer3中断,但是RTOS版的App中没有定义Timer3的中断处理函数,而跳转前又没有关闭Timer3,故跳转后程序一定是死在了无法跳转至Timer3中断函数的问题上。经过修改,在跳转前关闭Timer3,调试OK!当然,后来又发现了同样的问题,也是IAR直接下载正常,IAP跳转后不正常,只不过这次是串口没有正常工作,同样老办法,逐个排查IAP程序中是否存在配置问题,最终发现是IAP中初始化SPI时,傻不拉几的使能了SPI的TXDMA(后面又没用到这个DMA),而F072的SPI1 TXDMA和USART1的RXDMA是映射的同一通道。。。。。所以注释掉相关代码后一切正常。

    第一次移植FreeRTOS做项目,希望自己以及坛友以后避免犯同样的错误,故留此贴。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2017-11-10 16:17:58 | 显示全部楼层
回复 支持 反对

使用道具 举报

4

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2014-11-28
在线时间
27 小时
发表于 2018-1-15 08:45:57 来自手机 | 显示全部楼层
请问有没有遇到过 拷贝App
回复 支持 反对

使用道具 举报

4

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2014-11-28
在线时间
27 小时
发表于 2018-1-15 08:48:38 来自手机 | 显示全部楼层
有没有遇到拷贝app 到Flash的时候栈订地址验证失败的情况,裸机程序没问题,带freertos就不行了。
回复 支持 反对

使用道具 举报

12

主题

241

帖子

0

精华

高级会员

Rank: 4

积分
806
金钱
806
注册时间
2017-8-17
在线时间
159 小时
发表于 2018-1-15 08:54:13 | 显示全部楼层
这种情况IAP中开启中断导致的,只要在IAP跳转APP前关闭所有中断并清除所有中断就不会出现这种问题了。我当时也是查了很久才查到
回复 支持 反对

使用道具 举报

39

主题

131

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1439
金钱
1439
注册时间
2015-12-26
在线时间
208 小时
 楼主| 发表于 2018-1-15 09:15:49 | 显示全部楼层
richardshandong 发表于 2018-1-15 08:48
有没有遇到拷贝app 到Flash的时候栈订地址验证失败的情况,裸机程序没问题,带freertos就不行了。

遇到过,你检查下写flash的地址以及写flash操作是否正确,同时用STlink Utility 查看下升级完后的flash中相关地址到底写了什么内容;再检查下bin文件开头内容是否正常
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2018-2-7
在线时间
1 小时
发表于 2018-2-7 21:42:59 | 显示全部楼层
请问你用的具体是哪一款芯片?
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2018-2-7
在线时间
1 小时
发表于 2018-2-7 21:43:56 | 显示全部楼层
看到你的帖子关于STM32F0 freertos的移植。 想请教一下你用的芯片的具体型号?
我也需要移植一个freertos,移植到一个类cotex-m0的单片机上
回复 支持 反对

使用道具 举报

6

主题

315

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1665
金钱
1665
注册时间
2018-1-29
在线时间
159 小时
发表于 2018-2-8 07:02:15 | 显示全部楼层
总结的很好。我之前也碰到过IAP串口中断未关闭,导致IAP下载后的APP不好使!
回复 支持 反对

使用道具 举报

39

主题

131

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1439
金钱
1439
注册时间
2015-12-26
在线时间
208 小时
 楼主| 发表于 2018-2-8 10:44:16 | 显示全部楼层
hi柏松 发表于 2018-2-7 21:42
请问你用的具体是哪一款芯片?

STM32F072
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2020-5-31
在线时间
5 小时
发表于 2024-3-28 16:33:53 | 显示全部楼层
本帖最后由 printfty 于 2024-3-28 16:35 编辑

感谢!我和楼主同样的问题,我直接删掉了Boot里定时器代码,跳转后就能正常跑了,定时器里只跑了个无关紧要的状态灯
回复 支持 反对

使用道具 举报

1

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
231
金钱
231
注册时间
2018-8-16
在线时间
68 小时
发表于 2024-3-30 23:03:33 | 显示全部楼层
转跳之前把所有中断关掉。转跳回来重新初始化所用的功能应该问题会减少不少。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 05:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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