查看: 2043|回复: 4

[其他] XGATE共享结构体和联合体的问题

[复制链接]

该用户从未签到

1

主题

10

帖子

0

新手上路

Rank: 1

积分
29
最后登录
1970-1-1
发表于 2012-11-21 13:11:53 | 显示全部楼层 |阅读模式
在S12X核中定义了一个数据类型如下:
typedef union{
    unsigned int R;
    struct{
        unsigned int BIT0 :1;
        unsigned int BIT1 :1;
        unsigned int BIT2 :1;
        unsigned int BIT3 :1;
        unsigned int BIT4 :1;
        unsigned int BIT5 :1;
        unsigned int BIT6 :1;
        unsigned int BIT7 :1;
        unsigned int BIT8 :1;
        unsigned int BIT9 :1;
        unsigned int BIT10 :1;
        unsigned int BIT11 :1;
        unsigned int BIT12 :1;
        unsigned int BIT13 :1;
        unsigned int BIT14 :1;
        unsigned int BIT15 :1;
    }B;
}TFlag16;
#pragma DATA_SEG SHARED_DATA
TFlag16 volatile flag;
flag.B.BIT2 = 0x01;
在XGATE中对该自定义变量进行了声明如下:
#pragma DATA_SEG SHARED_DATA
extern TFlag16 volatile flag;
在S12X核中对flag.B.BIT2赋值为1,在XGATE中读出该值,但是不管怎样读值都为0,如果不使用自定义数据类型就没有这种问题。
不知道大家有没有遇到过这种问题,该怎样解决?
我知道答案 目前已有3人回答
回复

使用道具 举报

该用户从未签到

11

主题

288

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
610
最后登录
1970-1-1
发表于 2012-11-22 09:16:54 | 显示全部楼层

RE:XGATE共享结构体和联合体的问题

你把volatile去掉试试。
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

10

帖子

0

新手上路

Rank: 1

积分
29
最后登录
1970-1-1
 楼主| 发表于 2012-11-22 10:33:28 | 显示全部楼层

RE:XGATE共享结构体和联合体的问题

我试过没有用,但是如果是结构体里面的类型是一样的就没有错误。
就是使用不同类型是才会出错,看起来好像是两种核心对齐方式不一样,我也不知道该如何调整让两种核心对齐方式保持一致。
回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

288

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
610
最后登录
1970-1-1
发表于 2012-11-22 10:55:19 | 显示全部楼层

RE:XGATE共享结构体和联合体的问题

unsigned int BIT0 :1;
这个改成unsigned char BIT0 :1;可以吗?
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

10

帖子

0

新手上路

Rank: 1

积分
29
最后登录
1970-1-1
 楼主| 发表于 2012-11-22 11:46:23 | 显示全部楼层

RE:XGATE共享结构体和联合体的问题

改成unsigned char BIT0 :1
就不会出现那个问题,只是现在必须要用这个16位的标志,只有看看有什么解决的方法。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-20 19:32 , Processed in 0.095427 second(s), 25 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表