SN8 C Studio_V149(575.049)软件仿真问题
在用SN8 C纯软件仿真时,发现仿真内存的值是正确的,但是断点查看对应位域的变量却一直为0.难道SN8 C不支持两个字节以上的位域结构吗?一、位域结构定义
二、断点查看,内存值及变量值
三、代码中断点的状况
从上面代码来看,RAM中的值AA,刚好就是我代码的值。
但是watch1的变量显示确实不正确的
有没有人遇到这种情况。 我是没有看懂哪里有问题,
还是先说清楚吧, ayb_ice 发表于 2015-4-24 15:53
我是没有看懂哪里有问题,
还是先说清楚吧,
g_SysParam.SysBits.uKeyVal与g_SysParam.SysBits.u100msCnt的值
在RAM1中显示AA,那么按照位域的话
g_SysParam.SysBits.uKeyVal与g_SysParam.SysBits.u100msCnt应该为 0xA
但是,从第二张图的watch1的界面看这个两个变量的值
g_SysParam.SysBits.u100msCnt为1
g_SysParam.SysBits.uKeyVal为0
跟RAM中显示的不一致
不知这样讲,楼上能明白吗?
其实,我不知道画红线的地方是不是指明了,SN8 C 不支持位域定义超过两个字节.
从目前我这个问题来看,我觉得真的只有这个可能性来解释.
lanjackg2003 发表于 2015-4-24 15:59
g_SysParam.SysBits.uKeyVal与g_SysParam.SysBits.u100msCnt的值
在RAM1中显示AA,那么按照位域的话
1:不知道你是怎么确定位域与RAM的地址关系的
2:按一般的编译器的结果,那个结构占3个字节,第一个成员占一个字节,下面两个成员占一个字节,最后两个成员占一个字节,不知道你的理解是不是这样的
3:确定是否正确也不是你这样确定的,可以修改一下结构,改为联合看结果
typedef unsigned char U8;
typedef union{
U8 of;
struct{
U8 xx:8;
U8 yy:4;
U8 yy:4;
U8 aa:1;
U8 bb:7;
}bitfield;
}t_TEST;
t_TEST t;
一般都是硬仿真,纯软的松汉感觉bu kao pu ayb_ice 发表于 2015-4-25 08:09
1:不知道你是怎么确定位域与RAM的地址关系的
2:按一般的编译器的结果,那个结构占3个字节,第一个 ...
是的,跟你的理解一样。
修改为联合体也是这样的问题.... FAQ 发表于 2015-4-25 12:40
一般都是硬仿真,纯软的松汉感觉bu kao pu
嗯....
买个硬件仿真的回来试试.....
看来还是 不能省。。。:'( lanjackg2003 发表于 2015-4-26 22:57
嗯....
买个硬件仿真的回来试试.....
看来还是 不能省。。。
硬件仿真器不便宜啊,几百块钱。比什么STLINK贵多了。 FAQ 发表于 2015-4-27 00:09
硬件仿真器不便宜啊,几百块钱。比什么STLINK贵多了。
是啊,发现还是ST厚道.每颗芯片支持仿真... 8bit参数也用位域,这么折腾?一直用硬仿真,用松翰C也做了好几个项目,没返现有问题啊,也有有用到位域。 FAQ 发表于 2015-4-25 12:40
一般都是硬仿真,纯软的松汉感觉bu kao pu
硬件仿真,结果也是一样...
从watch看变量值与RAM看变量值都不一样
但是后面增加一些条件判断,相应的条件都能进入.估计是这个IDE软件的问题了
伪代码类似如下
if(keyVal == 10)
{
keyVal = 0; /////在此断点,程序能够跑进来.
} 请问怎样设置纯软件调试?谢谢 SN8 C Studio_V149这个版本的软件可以分享一下么
页:
[1]