我使用的是STM32F103,调试是用JLINK的方式,用IAR环境;同一个文件,在选不同的调试方式:1:选ProjectOptionDebuggerSetupDriverJ-Link/J-Trace; 2:选ProjectOptionDebuggerSetupDriverSimulator; 其它的选项都完全一样的情况下,分别编译同一个文件,在第2种情况下编译正确;而在第一种情况下,编译有错,这是为什么?个人认为1,2两种情况的变化不应影响代码的编译,谁能解释这个现象?现附上整个工程文件,以及在1,2两种情况下,用DEBUG将程序通过JLINK下载到目标板后,在汇编窗中看见的汇编码,图1,2是第一种情况下的截图,图3,4是第二种情况下的截图,图1,3是同一段代码;图2,4是同一段代码;
请大侠们不吝赐教!
相关链接:
https://bbs.eeworld.com.cn/upfiles/img/200712/20071224165925709.rar
这个要请IAR的工程师来回答了
顺便问问,你用的是哪个版本的?
是否可以帮我问问
我的客户,使用IAR 4 .42A 30day限制版。我用4.41A加ST之前给我的补丁,32KS 版,通用也是这样的现象。
用第1种调试方式编译通过
把你的工程下下来了,直接编译通过!看了一下设置,是第一种。
个人认为1,2两种情况的变化不应影响代码的编译
这两种调试编译起来应该会有一点影响吧,用Simulator的话要增加一些软件模拟函数进行编译。
在1,2两种情况下,用DEBUG将程序通过JLINK下载到目标板后
用Simulator还能下载到目标板上么?好像是不能的吧
在使用IAR调试STM32F103中遇到的奇怪问题
你好!
麻烦你说明你使用的软件版本,方便测试!
在使用IAR调试STM32F103中遇到的奇怪问题
这个问题理论上不应该这样.客户选择软仿真还是硬仿真,对编译本身是没有影响的.
我也认为1,2两种情况
IAR的版本上面已经说了。现在的解决方法是使用ST提供的工程裁剪后做模版编译的。变通的做法,我想是否还是项目的编译或Linker的设置有问题?
使用Simulator模式并不会下到到目标板上,但是在这个模式下你可以模拟看到实际的代码执行过程。因为发现在使用JLink下到Flash时,汇编部分本因该是赋值的语句,结果汇编显示的指令却是跳转指令,不得启解。当时也是考虑是否是因为Debug模式中,IDE在目标代码中加入了用于调试的信息导致的,因此使用仿真模式想对比是否两种方式,产生的汇编会有不同?