OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5656|回复: 3

关于使用联合体的疑惑,希望有大伙帮忙解答下,感谢。

[复制链接]

27

主题

274

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
471
金钱
471
注册时间
2011-11-2
在线时间
11 小时
发表于 2012-10-30 11:10:18 | 显示全部楼层 |阅读模式

我想把DSP使用到的2个2KB的buf挪用出来作为FLASH的BUF但是现在出现了空间溢出问题,希望有能人帮忙解答下为什么

 xdata  U8 SPI_FLASH_BUF[4096] _at_ 0x2000;

只是警告提示空间超出

而使用

xdata union
{
    struct
    {
        U8 dsp_ibuf[2048] _at_ 0x2000;
        U8 dsp_obuf[2048] _at_ 0x4000;
    }dsp_buf;
    U8 SPI_FLASH_BUF[4096];
}un_buf;

就会有下面的提示 

*** ERROR L107: ADDRESS SPACE OVERFLOW

*** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT

 

先谢过大家。

 

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-10-30 13:52:32 | 显示全部楼层
回复【楼主位】zenghi:
---------------------------------
怀疑你的AT用的有问题,看看DSP内存地址是如何分配的吧。DSP没玩过,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

27

主题

274

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
471
金钱
471
注册时间
2011-11-2
在线时间
11 小时
 楼主| 发表于 2012-11-4 12:28:22 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
 或许是联合体使用的时候SPI_FLASH_BUF的地址是从结构体dsp_buf.dsp_ibuf地址开始,这样导致其实我的目的没有达到,
联合体内的SPI_FLASH_BUF[4096]或许变成了这样的形式 U8 SPI_FLASH_BUF[4096] _at_ 0x2000;那就导致了0x2000
之后的2048个偏移后还有被SPI_FLASH_BUF[4096]多占用了2048个byte。
这样就变成我定义了U8 SPI_FLASH_BUF[4096+2048] _at_ 0x2000;的空间。

哈哈,好像蛮合理,明天到公司编译下看看U8 SPI_FLASH_BUF[4096+2048] _at_ 0x2000;会是什么情况。
WIN8伤不起啊!!!
感谢原子哥的回复。
回复 支持 反对

使用道具 举报

27

主题

274

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
471
金钱
471
注册时间
2011-11-2
在线时间
11 小时
 楼主| 发表于 2012-11-5 09:11:59 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
刚刚试验了下,上面的想法是想当然了正确的原来是得给联合体本身单独开辟一个外部地址给他
xdata union
{
struct 
{
  U8 dsp_ibuf[2048] _at_ 0x2000;
  U8 dsp_obuf[2048] _at_ 0x4000;
}dsp_buf;
U8 SPI_FLASH_BUF[4096];
}un_buf _at_ 0x1000;
就是暂时不明白为什么直接定义不行,等下再研究下是否4K空间可用。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 16:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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