关于地址总线-寻址空间-IO内存-IO端口理解(s3c2440例)

关于地址总线-寻址空间-IO内存-IO端口理解(s3c2440例)
2010-12-23 19:09

作者:guolele

Blog:http://hi.baidu.com/guolele1990/home

总线简单理解        

先总体上简单的说一下总线这概念,其实它是一束线的整合体,可看成是几十条线组合在一大条名字叫bus的线上,就叫总线。一条总线上可以允许连接多个设备,那它怎么识别?总线就是发不同的地址编码(0000111之类),只有符合这编码的设备就响应它操作。

总线的位数有什么意义?什么是寻址空间?

总线的位数决定寻址空间大小,什么是寻址空间?寻址空间就是你通过总线能访问的最大的内存空间(这里的内存空间其实就是地址范围),计算是寻址大小= 2^n bit。这样就解释了为什么s3c2440会以128M为一个bank。因为s3c2440的总线位数为27,寻址空间就为128M,如果超出了128M的范围,CPU就寻不了址,也就读不了也写不了,所以大于128M的就浪费了,也是为什么32bit的芯片最大为4G内存的原因。

IO空间与内存空间

讲这个问题,就涉及到硬件知识,CPU的总线在X86体系中,是具有两个空间映射的,即又有IO空间又有内存空间,它们是物理上不同的整体。而ARM就不存在IO空间


先说寄存器与内存的区别?就是side effect,也就是你读写寄存器时,会引起该地址的数据变化。

IO端口:当寄存器或内存位于IO空间时,称为IO端口。一般寄存器也俗称I/O端口,或者说I/O ports,这个I/O端口可以被映射在Memory Space,也可以被映射在I/O Space

IO内存:当寄存器或内存位于内存空间时,称为IO内存

linux访问IO port必须用IO port寻址方式

ARM一样嵌入式是只有内存空间的,IOport 寻址是采用内存映射的。



另外:如何确定一个芯片在CPU上的绝对地址,即物理地址

主要是看片选线接在哪一个nGCSn引脚(这引脚是当你
寻址到相应的
128M就相应为高)

CS8900a为例:一般连在nGCS3nGCS3是位于第4128M,即为128* 30x18000000

为基地址,注意,以它为基地址并不一定是操作它,操作具体(即映射基地址)还要看芯片上有没说明,这里CS8900a就提到它提供的两种访问模式不一样,映射基地址也会不一样。

MEM MODE

它的mem mode就是直接就是nGCSn = nGCS3

IO port mode

这种模式基地址并不是nGCS3,首先还要看原理图,因为为了提供两种模式访问(就是访问时是应该IOW,还是MEMW),一般硬件上会采用逻辑器件加上一根地址总线来分开,我这用的是ADDR24(用于帮助选IO PORT模式)。别外,芯片上也说了,它的以io模式的基地址又是有一个偏移,一般为300h,再操作其它那几个寄存器才是元件手册上的偏移,现在明白为什么驱动上会这个映射地址了吧?那么它的基地址是?

Io base address = nGCS3 + (1<<24) + 300h

出自:http://hi.baidu.com/guolele1990/home

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值