ARM 为什么地址线要偏移一位接
来源:互联网 发布:关于网络诈骗案件 编辑:程序博客网 时间:2024/05/18 23:52
转自:http://blog.csdn.net/sfrysh/article/details/5602723
以前在某些书上看到过,某些RAM、nor flash推荐的接法是地址线偏移一位,即cpu的a1接到芯片的a0,不是一一对应。今天上课终于搞懂了
原来就是因为这类RAM、nor flash是16位的
一般在我们c语言软件编程的概念,一个地址对应的数据是一个byte,8位
即32根地址线,能够访问4G的地址空间,每个空间是8bits=1byte
所以32位cpu总共能够管理4GByte的数据,而不是4Gbit的数据
这种情况下,cpu的地址线跟芯片地址线一一对应没有问题
现在,这种RAM、nor flash是16位的,即一个地址能够存放16bits的数据
也就是说,芯片的a0的0、1变化,就是16bits的变化,不是一般的8bits的变化了
此时,cpu的地址线里,只有a1是16bits变化这个数量级的,所以相同数量级的引脚连接,自然要偏移一位
如图所示的是FS2410上SST39VF的原理图,CE#接的是nGsc0,即该芯片的地址空间为
0x0-0x100000
这样,
U16 a=*(char *)0x0
和
U16 b=*(char *)0x1
就没有区别了,所以编程要牢记最小16bits为单位,地址保证2byte对其,即最低位置零
这是SDRAM的连接图,ADDR2接的是SDRAM芯片的A0,偏了2位
所以arm编程强调的4字节对齐,不仅仅是指令集上的关系,连硬件上都限制死了
- ARM 为什么地址线要偏移一位接
- ARM 为什么地址线要偏移一位接
- ARM中的链接地址(为什么ARM要重定位)?
- 为什么I2C从机地址要左移一位
- 偏移地址范围
- 地址的偏移量
- C++数组地址偏移
- 段地址和偏移地址
- 偏移地址,偏移量,基址寻址
- 文件虚拟偏移地址和物理偏移地址的转换
- 关于偏移地址的问题
- 结构体成员偏移地址
- 数组指针和偏移地址
- ARM指令前索引偏移与后索引偏移
- 为何实模式要采用段地址和偏移地址的方式来寻址
- 段地址和偏移地址是什么
- 谭军为什么要离开ARM?
- 为什么大家都要喜欢学ARM?
- 虚拟局域网
- C/C++得到本地程序安装路径
- implement The Maximum Subarray using divide and conquer
- 不用加减乘除实现a+b
- c++ 对象数组
- ARM 为什么地址线要偏移一位接
- 管人用人育人留人之道-光环效应
- ACM进阶指南
- 桥接虚拟局域网和真实局域网到同一网段原理
- 64位操作系统下ODBC数据源的配置问题(转)
- 多线程设计之线程清理pthread_cleanup
- 一个程序员的爱情表白书
- Linux C静态库和动态库的制作
- 不同进程之间的互斥锁的使用