2440 地址空间的说明
转自:http://blog.csdn.net/hochy2008/article/details/5783962
2440这是一款32位的cpu,照理说,它是可以寻址4G的地址空间的。但是,芯片引脚上,只给出了27根地址线。这27根引脚,是A0~A26。因此单靠芯片上的 27 根引脚,它只能控制 128M 的空间。那总共的 4G 空间,芯片引脚才用了128M,剩下的在哪里?
实际上,在cpu芯片手册上,查它的内部寄存器的地址,我们可以找到一部分答案。比如这次总结笔记要讲的存储器控制寄存器,13 个寄存器,每个寄存器的地址,都大于0X4000 0000的地址。而0x4000 0000 这个地址,是1G空间的分界线。也就是说,1G~3G之间的空间,实际上都是被芯片自己占用了。实际上,给用户的使用的空间,只有 1G.。我们刚才说了,我们使用了 128M,用了27根地址线。而1G空间,需要30根地址线。剩下的3根用在什么地方?
查了资料,突然明白了。这三根,被三星公司偷偷地用在了3-8译码器的输入端去了。而这个3-8译码器的输出端,就是对应这nGCS 0~7,对应着8个bank。好了,很明显了,三星的 2440 留给用户使用的这 1G 空间,27 根线用于芯片引脚来控制具体的bank 了,剩下的三根,用于选择当前处于哪个bank。
另外,说到这个地址线,我想起 2440 与 SDRAM 芯片连接的时候,地址线的连接还是有点说法的。2440用地址线A2 去连接SDRAM 芯片的A0。很奇怪,是吧,以前我也做硬件设计,PCB 板子画过 N 个了,从来都是地址线 A0 接 A0的。这次,2440的A1,A0 怎么不用了?
唉,2440 就是麻烦!它自以为自己是 32 位 cpu,所以对外访问的时候,都以字为单位。如果都认为自己要访问的地址都是字对齐的,那当然 A0 和 A1 就没用了。可惜啊,外设芯片,比如 flash,比如 SDRAM,他们的总线可不是 32位的,他们有8位宽的,有16位宽的,也有32位宽的。 哦,现在2440发现这个问题了,那就给出一个解决方法吧。所以就在 2440的引脚上,多出了一个nWBE[3:0]这4个引脚,用于识别字节使能的。这样,就能对付8位和16位的外设了。