[MCU] SN8 C Studio_V149(575.049)软件仿真问题

[复制链接]
3114|14
 楼主| lanjackg2003 发表于 2015-4-24 15:46 | 显示全部楼层 |阅读模式
在用SN8 C纯软件仿真时,发现仿真内存的值是正确的,但是断点查看对应位域的变量却一直为0.难道SN8 C不支持两个字节以上的位域结构吗?
一、位域结构定义


二、断点查看,内存值及变量值


三、代码中断点的状况



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| lanjackg2003 发表于 2015-4-24 15:48 | 显示全部楼层
从上面代码来看,RAM中的值AA,刚好就是我代码的值。
但是watch1的变量显示确实不正确的

有没有人遇到这种情况。
ayb_ice 发表于 2015-4-24 15:53 | 显示全部楼层
我是没有看懂哪里有问题,

还是先说清楚吧,
 楼主| lanjackg2003 发表于 2015-4-24 15:59 | 显示全部楼层
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中显示的不一致

不知这样讲,楼上能明白吗?
 楼主| lanjackg2003 发表于 2015-4-24 16:24 | 显示全部楼层


其实,我不知道画红线的地方是不是指明了,SN8 C 不支持位域定义超过两个字节.

从目前我这个问题来看,我觉得真的只有这个可能性来解释.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ayb_ice 发表于 2015-4-25 08:09 | 显示全部楼层
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[3];
       
        struct{
                U8 xx:8;
               
                U8 yy:4;
                U8 yy:4;
               
                U8 aa:1;
                U8 bb:7;
        }bitfield;
       
}t_TEST;

t_TEST t;
FAQ 发表于 2015-4-25 12:40 来自手机 | 显示全部楼层
一般都是硬仿真,纯软的松汉感觉bu kao pu
 楼主| lanjackg2003 发表于 2015-4-26 22:56 | 显示全部楼层
ayb_ice 发表于 2015-4-25 08:09
1:不知道你是怎么确定位域与RAM的地址关系的

2:按一般的编译器的结果,那个结构占3个字节,第一个 ...

是的,跟你的理解一样。
修改为联合体也是这样的问题....
 楼主| lanjackg2003 发表于 2015-4-26 22:57 | 显示全部楼层
FAQ 发表于 2015-4-25 12:40
一般都是硬仿真,纯软的松汉感觉bu kao pu

嗯....
买个硬件仿真的回来试试.....
看来还是 不能省。。。:'(
FAQ 发表于 2015-4-27 00:09 | 显示全部楼层
lanjackg2003 发表于 2015-4-26 22:57
嗯....
买个硬件仿真的回来试试.....
看来还是 不能省。。。

硬件仿真器不便宜啊,几百块钱。比什么STLINK贵多了。
 楼主| lanjackg2003 发表于 2015-4-27 09:49 | 显示全部楼层
FAQ 发表于 2015-4-27 00:09
硬件仿真器不便宜啊,几百块钱。比什么STLINK贵多了。

是啊,发现还是ST厚道.每颗芯片支持仿真...
liufb 发表于 2015-4-27 15:29 | 显示全部楼层
8bit参数也用位域,这么折腾?一直用硬仿真,用松翰C也做了好几个项目,没返现有问题啊,也有有用到位域。
 楼主| lanjackg2003 发表于 2015-4-28 09:49 | 显示全部楼层
FAQ 发表于 2015-4-25 12:40
一般都是硬仿真,纯软的松汉感觉bu kao pu

硬件仿真,结果也是一样...
从watch看变量值与RAM看变量值都不一样

但是后面增加一些条件判断,相应的条件都能进入.估计是这个IDE软件的问题了

伪代码类似如下
if(keyVal == 10)
{
   keyVal = 0;     /////在此断点,程序能够跑进来.
}
zdesong 发表于 2015-11-25 13:34 | 显示全部楼层
请问怎样设置纯软件调试?谢谢
攻城狮008 发表于 2021-6-3 15:03 | 显示全部楼层
SN8 C Studio_V149这个版本的软件可以分享一下么
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

441

帖子

7

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