打印
[MCU]

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

[复制链接]
2640|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在用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中显示的不一致

不知这样讲,楼上能明白吗?

使用特权

评论回复
5
lanjackg2003|  楼主 | 2015-4-24 16:24 | 只看该作者


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

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

使用特权

评论回复
6
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;

使用特权

评论回复
7
FAQ| | 2015-4-25 12:40 | 只看该作者
一般都是硬仿真,纯软的松汉感觉bu kao pu

使用特权

评论回复
8
lanjackg2003|  楼主 | 2015-4-26 22:56 | 只看该作者
ayb_ice 发表于 2015-4-25 08:09
1:不知道你是怎么确定位域与RAM的地址关系的

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

是的,跟你的理解一样。
修改为联合体也是这样的问题....

使用特权

评论回复
9
lanjackg2003|  楼主 | 2015-4-26 22:57 | 只看该作者
FAQ 发表于 2015-4-25 12:40
一般都是硬仿真,纯软的松汉感觉bu kao pu

嗯....
买个硬件仿真的回来试试.....
看来还是 不能省。。。:'(

使用特权

评论回复
10
FAQ| | 2015-4-27 00:09 | 只看该作者
lanjackg2003 发表于 2015-4-26 22:57
嗯....
买个硬件仿真的回来试试.....
看来还是 不能省。。。

硬件仿真器不便宜啊,几百块钱。比什么STLINK贵多了。

使用特权

评论回复
11
lanjackg2003|  楼主 | 2015-4-27 09:49 | 只看该作者
FAQ 发表于 2015-4-27 00:09
硬件仿真器不便宜啊,几百块钱。比什么STLINK贵多了。

是啊,发现还是ST厚道.每颗芯片支持仿真...

使用特权

评论回复
12
liufb| | 2015-4-27 15:29 | 只看该作者
8bit参数也用位域,这么折腾?一直用硬仿真,用松翰C也做了好几个项目,没返现有问题啊,也有有用到位域。

使用特权

评论回复
13
lanjackg2003|  楼主 | 2015-4-28 09:49 | 只看该作者
FAQ 发表于 2015-4-25 12:40
一般都是硬仿真,纯软的松汉感觉bu kao pu

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

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

伪代码类似如下
if(keyVal == 10)
{
   keyVal = 0;     /////在此断点,程序能够跑进来.
}

使用特权

评论回复
14
zdesong| | 2015-11-25 13:34 | 只看该作者
请问怎样设置纯软件调试?谢谢

使用特权

评论回复
15
攻城狮008| | 2021-6-3 15:03 | 只看该作者
SN8 C Studio_V149这个版本的软件可以分享一下么

使用特权

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

本版积分规则

56

主题

440

帖子

7

粉丝