关于ARM寻址的问题

xiuzhang_2000   2009-4-20 08:51 楼主
一个32位的arm,外接了2个16位扩展的相当于32位的SDRAM,通常的接法是,arm的A0,A1地址线不接,A2接到sdram的A0地址线,这样做的好处是什么?
这时候,我如果定义了一个char *p;初始话的时候p为3000,0000的地址,那么p+1应该位3000,0001的地址;可是上述那种连线方法,怎么寻到这个地址的?因为A0,A1线没有接,它变化的幅度是4个地址。

回复评论 (3)

自己去翻以前的贴,不想再说了,这是2410和2440的做法。
点赞  2009-4-20 09:06
这是ARM的字节对齐啊。
请看这个帖子。http://topic.eeworld.net/u/20081113/09/7d480bb0-5485-4884-a620-495265f06d61.html
点赞  2009-4-20 09:12
这个就取决于 cpu 具体实现了,如果 cpu 有 io bus buffer,那么可以先读取从 0x3000,0000 的一个 cacheline,然后根据具体在 cacheline 中的 off,返回该值给用户,也就是在 io bus buffer 中透明完成分片与重组,用户感觉不到。
不过 arm 是 32 位的,那么也可以用 32 位来访问它吧,根据你的需要将其左移或右移来获取某个字节吧。
点赞  2009-4-20 09:50
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复