[STM32F1] JLINK V8很多人没有见过的问题,求解。

[复制链接]
 楼主| feihong519 发表于 2013-11-28 09:02 | 显示全部楼层 |阅读模式
使用JLINK 仿真时,发现有的变量读出的结果为0,但实际不为0,有的变量就是正确的。很是奇怪。求解?
sxhhhjicbb 发表于 2013-11-28 09:28 | 显示全部楼层
有时候重启下软件就OK。可能每个人的现象一样,但原因不一样。
handlike 发表于 2013-11-28 09:46 | 显示全部楼层
设置成局部变量可能被优化掉了。
个别的我好像也遇到过楼主所说的现象。
 楼主| feihong519 发表于 2013-11-28 10:29 | 显示全部楼层
我也是怀疑被优化掉了
戈卫东 发表于 2013-11-28 10:38 | 显示全部楼层
局部变量?
kkzz 发表于 2013-11-28 11:02 | 显示全部楼层
是没有初始化完成吧?
kkzz 发表于 2013-11-28 11:03 | 显示全部楼层
重新启动仿真的。
 楼主| feihong519 发表于 2013-11-28 12:00 | 显示全部楼层
全局变量没有问题,各别的局部变量不行,重启也不能解决。程序肯定没有问题。
 楼主| feihong519 发表于 2013-11-28 12:05 | 显示全部楼层
变量初始化了。进入函数后,局部变量被赋值了,并且断点在局部变量的作用域。即:局部变量赋值->断点(在这里仿真查看局部变量值与实际值不符)->程序该使用局部变量(变量的值和我实际的值相同,但是仿真的就是0)
戈卫东 发表于 2013-11-28 13:28 | 显示全部楼层
赋值之前能看到不过值没有传给它,赋值之后生存期已经结束值无效...
 楼主| feihong519 发表于 2013-11-28 14:39 | 显示全部楼层
写个示例吧:
void Abcd(void)
{
    unsigned char i;
    unsigned char aTempBuf[10] = {0};
   
    for(i = 0; i < 10; i ++)
    {
        aTempBuf = i;//对数组赋值
    }
    NOP();//在此设置断点(仿真发现数组中的值不对)
    //在此有一些函数使用aTempBuf数组的值(这里就不写了)
}
lycanthia 发表于 2013-11-28 15:56 | 显示全部楼层
改下优化等级,或者改为volatile的试试吧。
LDTEST 发表于 2013-11-28 17:06 | 显示全部楼层
feihong519 发表于 2013-11-28 14:39
写个示例吧:
void Abcd(void)
{

到这里 局部变量的寿命都结束了,看到的不真实
苏联小苹果 发表于 2013-11-29 08:43 来自手机 | 显示全部楼层
局部变量若赋值后下边的代码不用到它,是看不到其真正值的
Ryanhsiung 发表于 2013-11-30 15:13 | 显示全部楼层
是不是在release版本?  release 就有这个问题
east森林 发表于 2013-11-30 21:05 | 显示全部楼层
没遇见过
51xlf 发表于 2013-11-30 21:15 | 显示全部楼层
断电试一下的。
lzmm 发表于 2013-11-30 22:21 | 显示全部楼层
应该不会出现时序问题的。
lzmm 发表于 2013-11-30 22:21 | 显示全部楼层
查找一下相关变量的。
122541325 发表于 2013-11-30 22:25 | 显示全部楼层
先重启试试,不行看看变量有没有错,这问题还真没遇到过,不好意思
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

73

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部