打印

xdata的问题

[复制链接]
3629|28
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
renyaq|  楼主 | 2011-8-5 09:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定义的变量较多 一部分变量定义成了xdata形式,单片机外部扩展了双口ram,用于存储单片机采集的某些数据,
片内xram与外部ram有什么关系
沙发
renyaq|  楼主 | 2011-8-5 10:09 | 只看该作者
现在要对外部存储器接口进行配置,如果设置为只用外部ram,对存储在片内xram里的变量有影响吗

使用特权

评论回复
板凳
chuxh| | 2011-8-5 10:13 | 只看该作者
片内XRAM和片外RAM都是XRAM,其它的MCU一般是只能用其一

使用特权

评论回复
地板
llljh| | 2011-8-5 10:18 | 只看该作者
如果有外部总线的,有多种配置
1:可以配置成仅使用内部XRAM,外部不可用
2:可以配置成仅使用外部XRAM,内部不可用
3:可以配置内部外部同时使用,当地址高于内部XRAM地址时,自动访问外部XRAM

使用特权

评论回复
5
renyaq|  楼主 | 2011-8-5 10:30 | 只看该作者
如果设置为只使用外部ram 那么定义成xdata型的变量是自动保存在片外ram中还是不可以使用了呀

使用特权

评论回复
6
renyaq|  楼主 | 2011-8-5 11:11 | 只看该作者
我看好多程序对xdata型的变量的操作没有涉及到地址  并没有像片外ram 那样每一个变量对应一个地址呀

使用特权

评论回复
7
juventus9554| | 2011-8-5 11:15 | 只看该作者
如果设置成只使用片外,那么XRAM变量当然自动定位在片外了

使用特权

评论回复
8
llljh| | 2011-8-5 11:18 | 只看该作者
但是如果内外都使用,那么XRAM变量是在片内还是片外当然取决它的地址了,而地址一般是编译器分配的,也就是说用户并不知道是在片内还是在片外

使用特权

评论回复
9
juventus9554| | 2011-8-5 11:21 | 只看该作者
当然如果只是个一般的变量也没有关系,但是有些总线扩展控制的变量就必须知道是在片外还是在片内了,因为片内的话外部总线根本不动作了,这种情况就要绝对定位变量了

使用特权

评论回复
10
renyaq|  楼主 | 2011-8-5 11:23 | 只看该作者
因为我有些变量定义成了xdata  所以现在只能内外ram都用了吧?

使用特权

评论回复
11
renyaq|  楼主 | 2011-8-5 14:56 | 只看该作者
对于定义成xdata 的变量编译器会自动保存到片内ram的某个地址吧?

使用特权

评论回复
12
llljh| | 2011-8-5 15:09 | 只看该作者
因为我有些变量定义成了xdata  所以现在只能内外ram都用了吧?
renyaq 发表于 2011-8-5 11:23
不一定

使用特权

评论回复
13
juventus9554| | 2011-8-5 16:05 | 只看该作者
对于定义成xdata 的变量编译器会自动保存到片内ram的某个地址吧?
renyaq 发表于 2011-8-5 14:56
这个取决于编译器怎么编译

使用特权

评论回复
14
renyaq|  楼主 | 2011-8-5 16:09 | 只看该作者
怎么讲?

使用特权

评论回复
15
pengf| | 2011-8-5 16:18 | 只看该作者
一般是从0开始分配,但这也取决于具体芯片

使用特权

评论回复
16
renyaq|  楼主 | 2011-8-5 16:21 | 只看该作者
为啥

使用特权

评论回复
17
pengf| | 2011-8-5 16:51 | 只看该作者
因为有些芯片XARM根本就不是从0开始的

使用特权

评论回复
18
renyaq|  楼主 | 2011-8-5 17:02 | 只看该作者
如果我想把某些变量存到片外ram里,应该自己分配地址了 吧?地址从0x2000开始吧?

使用特权

评论回复
19
renyaq|  楼主 | 2011-8-5 17:42 | 只看该作者
内外地址以8k为界吧?

使用特权

评论回复
20
llljh| | 2011-8-5 17:45 | 只看该作者
一般是这样的

使用特权

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

本版积分规则

700

主题

10138

帖子

4

粉丝