打印

关于arm 和flash连接需要移位的问题我来说两句

[复制链接]
2879|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dfsa|  楼主 | 2010-7-26 22:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
花了好几天研究这个东西,理解了很难讲的明白,不过我试试看吧。
约定:
CPU 44b0,Flash sst39vf160(1M*16bit).
44b的地址写成Addr0,flash的地址写成A0.
flash连接在bank0.
移位问题,主要是ARM地址是按照8位编,但是flash按照16未来编。
说白一点就是,对于ARM来讲,0x000000 和0x000001每一个地址对应的是一个字节(8b),但是flash呢?0x00000和0x00001每一个地址对应一个半字(16b)。

那么flashARM里面的地址范围0x000000-0x1fffff。2MByte.flash本身的地址范围0x00000-0xfffff。1MHWord。这样建立的ARM地址与flash地址的联系。

假如,ARMflash连接地址一一对应,那么ARM要读取连续的两个字节,会出现什么情况?
ARM按照字节编址,0x00000和0x00001分别对应的是flash的0x00000的半字(低8位和高8位)。问题就出来了,对于我们编写程序,是从ARM的角度出发的,那么你要读取字节,但是读到的是2个字节。0x00001本来我们编的地址是第二个字节的,现在对不上座位了,成了第2,3字节了。
因此,你的地址不能够理想的读到你需要的字节。明明我1是第二个字节的地址在flash那一头成了第三第四个字节了。
不要紧,采用硬件方法,让你的ARM地址的Addr1对应flash的A0。从新分析一下。读取连续的连个字节的情况。地址线送出0x00000 的到16位(包含你需要的字节),地址线送出0x00001的到一个16位,这个16位其实和前面的16位是一个数,虽然对于我们来说是两个地址,但对于flash来说,我们只是送出了同一个地址,数据当然相同了。因为地址已经偏移一位了;)

那么0x5555这个经常用到的flash的地址(这可是个16位数的地址,比ARM的地址整整大了一圈:)2倍),如我们要写入数据到这个地址,那么这个0x5555还得再次左移一位(0x5555<<1或者0x5555*2)。现在该明白了吧。

相关帖子

沙发
pkat| | 2010-7-27 11:58 | 只看该作者
不错的心得

使用特权

评论回复
板凳
pkat| | 2010-7-27 11:59 | 只看该作者
很有想法,可以写得更详细一点

使用特权

评论回复
地板
doomhaha| | 2010-7-27 12:49 | 只看该作者
此外还要注意对ARM奇数地址访问的问题,如ARM的Addr1实际对应flash的A0的高8位,因此从flash读到数据要>>8

使用特权

评论回复
5
dfsa|  楼主 | 2010-7-27 17:01 | 只看该作者
楼主说得很好,如果有多一些这样的想法就好了

使用特权

评论回复
6
gxgclg| | 2010-7-27 21:56 | 只看该作者
楼主可以再多说几句,呵呵

使用特权

评论回复
7
gxgclg| | 2010-7-27 22:00 | 只看该作者
虽然比较难懂,但我觉得楼主还是总结的比价到位

使用特权

评论回复
8
hsbjb| | 2010-7-28 07:38 | 只看该作者
不知道楼主是如何采用的硬件方法

使用特权

评论回复
9
xsgy123| | 2010-7-28 09:38 | 只看该作者
楼主说理解了很难讲明白,只能说明楼主还没有理解透彻

使用特权

评论回复
10
sinadz| | 2010-7-29 22:55 | 只看该作者
楼主总结的不错

使用特权

评论回复
11
baidudz| | 2010-7-30 12:53 | 只看该作者
楼主还可以说得更详细一点,这样大家更容易理解

使用特权

评论回复
12
行不改名| | 2010-8-4 15:43 | 只看该作者
如果能配上个图加于说明就好了.

使用特权

评论回复
13
火箭球迷| | 2010-8-8 09:41 | 只看该作者
楼主就给个图吧,更加通俗易懂

使用特权

评论回复
14
yybj| | 2010-8-8 14:33 | 只看该作者
很不错的心得

使用特权

评论回复
15
秋天落叶| | 2010-8-9 13:13 | 只看该作者
比较简洁的心得,可以写的更加详细一点

使用特权

评论回复
16
dfsa|  楼主 | 2010-8-9 13:40 | 只看该作者
多谢各位捧场。有时间我一定写个更详细一点的

使用特权

评论回复
17
xsgy123| | 2010-8-10 09:36 | 只看该作者
期待楼主更多的心得

使用特权

评论回复
18
baidudz| | 2010-8-10 19:31 | 只看该作者
心得写得不错,继续写点

使用特权

评论回复
19
-自己人| | 2010-9-19 22:43 | 只看该作者
写的很不错,学习了

使用特权

评论回复
20
sytu_chyq| | 2010-9-20 14:46 | 只看该作者
就是ARM的A1连flash的A0。。

使用特权

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

本版积分规则

282

主题

2404

帖子

2

粉丝