打印
[STM32F4]

STM32F4的IAP问题

[复制链接]
1491|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ticomi|  楼主 | 2016-6-15 10:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
设计的一款产品中采用了IAP功能,一直正常。

偶然把IAR升级为7.6后带来一些问题:

首先是ST LINK不能使用,完全无法找到Device也不能通讯,而此前都是正常的,很怀疑是新版IAR的问题。后来证实是STLINK的问题,固件太新造成的,在21ic的网站上找到了旧的固件,刷新后马上正常。

下一个问题,非常离奇。正常的代码,使用7.4版本编译的可以正常运行,IAP也能正常跳转,使用7.6编译后IAP的代码可以运行,但是IAP在执行跳转后就直接进入到了HardFault,跟踪分析问题产生在进入跳转后代码的Main函数前就已经崩溃,再跟踪和产科堆栈,发现是在执行汇编代码的__iar_data_init3函数时崩溃的,而这些代码如果使用ST Link监控运行则是正常的不会崩溃,只能是在监控IAP代码时发现其崩溃,也就是无**常运行。

现在这个问题我很头大,将新代码直接下载不使用IAP是正常的,使用IAP就崩溃。最离奇的问题是我把代码的优化等级设置为低时,居然正常运行了。这就让我更离奇了。完全不知道问题出在哪里了?

感觉我没有说明白,其实就是采用新版本的IAR后,在高和中等优化的情况下不能使用IAP进行代码跳转,在低优先级的情况下则可以,而且这个和IAP本身的代码没有关系。

不清楚如何解决这个问题。
沙发
wahahaheihei| | 2016-6-15 13:11 | 只看该作者
系统换了吗

使用特权

评论回复
板凳
wahahaheihei| | 2016-6-15 13:11 | 只看该作者
建议用Keil最新版,我一直用Keil

使用特权

评论回复
地板
mmuuss586| | 2016-6-15 17:03 | 只看该作者
是不是哪里被优化了

使用特权

评论回复
5
ticomi|  楼主 | 2016-6-15 17:49 | 只看该作者
mmuuss586 发表于 2016-6-15 17:03
是不是哪里被优化了

我觉得是,但是跟踪的结果是在IAP的代码中看到,跳转后根本没有进入到main函数就已经崩溃,非常奇怪的是没有进入main函数,如何会进入到hardfault呢?

使用特权

评论回复
6
拉克丝| | 2016-6-15 20:15 | 只看该作者
我把代码的优化等级设置为低时,居然正常运行了

可能是哪部分被优化掉了

使用特权

评论回复
7
ticomi|  楼主 | 2016-6-16 10:04 | 只看该作者
拉克丝 发表于 2016-6-15 20:15
可能是哪部分被优化掉了

这部分代码理论上是IAR公司提供的,被优化而导致故障的可能性很小。而且我是有调试器可以直接使其运行,如果把这部分代码设置为不使用IAP的方式启动也是正常的,只有在IAP的时候出问题。非常奇怪。

使用特权

评论回复
8
ticomi|  楼主 | 2016-6-16 13:33 | 只看该作者
将IAP的代码优化等级降低,解决了。很奇怪!!

使用特权

评论回复
9
xmshao| | 2016-6-20 17:50 | 只看该作者
优化很考验代码的。双刃剑。

使用特权

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

本版积分规则

50

主题

852

帖子

4

粉丝