Board logo

标题: 【求助】xgate共享数据警告变量大小不对 [打印本页]

作者: hithtl    时间: 2010-5-17 14:13     标题: 【求助】xgate共享数据警告变量大小不对

各位大侠!请指教:
C下:
#pragma DATA_SEG SHARED_DATA
volatile canbox msgbox[7];
#pragma DATA_SEG DEFAULT

在cxgate下:
#pragma DATA_SEG SHARED_DATA
extern volatile canbox msgbox[7];
#pragma DATA_SEG DEFAULT

编译时提示我:
Symbol msgbox has different size in xg.xcgate.0 (112 bytes) and s12.c.o (105 bytes)

请多多指教,谢谢!
作者: finewind    时间: 2010-5-18 09:23

原因是XGATE的一个字必须从偶地址开始,而主处理器一个字则没有这种要求。比如定义一个结构体:
struct  
{
    unsigned int a;
    unsigned char b;
    unsigned int c;
}box;
假设地址是从0开始的,那么在主处理器中,box.a的地址是0,box.b的地址是2,box.c的地址是3,但到了XGATE中,box.a的地址是0,box.b的地址是2,到box.c的时候,因为xgate的字必须要从偶地址开始,地址就变成4了。因此,在主处理器中,box占用地址0-5的5个字节,而在XGATE中,box占用地址0-6的6个字节。
我用了个取巧的办法,假如a,b,c都是我们需要的数据,为了保证对齐,我在b和c之间插入了一个char 型,结构体就变成:
struct  
{
    unsigned int a;
    unsigned char b;
    unsigned char reserve;
    unsigned int c;
}box;
这样就保证了2边的地址大小一致,而又不需要修改原有代码。
作者: jakerroo    时间: 2010-5-18 14:59

学习了,还没用到带协处理器的
作者: hithtl    时间: 2010-5-18 17:03

认真学习,真是太谢谢你了!
作者: finewind    时间: 2010-5-19 08:58

呵呵,相互学习
作者: kapperboy123    时间: 2010-5-21 17:34

这些方法都很好阿
美的电磁炉
汉王电纸书推荐
樱桃减肥网
奇声DVD播放器
万利达DVD专卖
美的电饭煲
作者: haoshendu    时间: 2010-9-18 15:03

学习了 不错


每一日精彩网址
淘宝皇冠大牌街
什么减肥药效果最好
丰胸产品排行榜
美白产品排行榜
牛B链
货货发货源网
作者: tcyc110    时间: 2010-10-5 20:41

很不错啊

减肥药排行榜




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0