打印

求助 关于xdata的问题

[复制链接]
2826|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
book99|  楼主 | 2010-5-18 15:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2010-5-18 15:21 | 只看该作者
本帖最后由 ayb_ice 于 2010-5-18 15:25 编辑

纠正一点
"现在要对外部存储器接口进行配置,如果设置为只用外部ram,对存储在片内xram里的变量有影响吗"
"片内XRAM变量"说法是错误的,因为这和总线配置有关,如果配置没有使用片内XRAM是根本不存在"片内XRAM变量"说法,即使使用了片内XRAM,你也不知道变量的地址是多少,除非你绝对定位
请看下面


首先片内XRAM和片外RAM都是XRAM,其它的MCU一般是只能用其一(通过控制SFR),而C8051F如果有外部总线的,有多种配置
1:可以配置成仅使用内部XRAM,外部不可用
2:可以配置成仅使用外部XRAM,内部不可用
3:可以配置内部外部同时使用,当地址高于内部XRAM地址时,自动访问外部XRAM
好象还有一种配置,好久没有用了,不记得了
...

使用特权

评论回复
板凳
book99|  楼主 | 2010-5-18 15:36 | 只看该作者
如果设置为只使用外部ram 那么定义成xdata型的变量是自动保存在片外ram中还是不可以使用了呀
我看好多程序对xdata型的变量的操作没有涉及到地址  并没有像片外ram 那样每一个变量对应一个地址呀

使用特权

评论回复
地板
ayb_ice| | 2010-5-18 15:46 | 只看该作者
如果设置成只使用片外,那么XRAM变量当然自动定位在片外了
但是如果内外都使用,那么XRAM变量是在片内还是片外当然取决它的地址了,而地址一般是编译器分配的,也就是说用户并不知道是在片内还是在片外,当然如果只是个一般的变量也没有关系,但是有些总线扩展控制的变量就必须知道是在片外还是在片内了,因为片内的话外部总线根本不动作了,这种情况就要绝对定位变量了

使用特权

评论回复
5
book99|  楼主 | 2010-5-18 16:02 | 只看该作者
谢谢楼上高手帮忙啊 我刚刚毕业 问题有点白痴啊:(
因为我有些变量定义成了xdata  所以现在只能内外ram都用了吧?
对于定义成xdata 的变量编译器会自动保存到片内ram的某个地址吧?
如果我想把某些变量存到片外ram里,应该自己分配地址了 吧?地址从0x2000开始吧?内外地址以8k为界吧?

使用特权

评论回复
6
ayb_ice| | 2010-5-18 16:56 | 只看该作者
1: "因为我有些变量定义成了xdata  所以现在只能内外ram都用了吧?"
不一定
2"对于定义成xdata 的变量编译器会自动保存到片内ram的某个地址吧?"
这个取决于编译器怎么编译,一般是从0开始分配,但这也取决于具体芯片,因为有些芯片XARM根本就不是从0开始的
3:"如果我想把某些变量存到片外ram里,应该自己分配地址了 吧?地址从0x2000开始吧?内外地址以8k为界吧?"
一般是这样的

使用特权

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

本版积分规则

13

主题

185

帖子

4

粉丝