请教一个flash编程的问题
tuhuo 2008-09-01 11:48:43 手头有一块ARM7的开发板,cpu是Samsung S3C44B0X,ROM为AM29LV160,一块1M*16bit的Flash,挂接在BANK0并配置为16位模式。
我的问题是关于对Flash进行编程的。最简单的,比方说读Flash的Manufacturer ID。根据芯片手册,应该先向0x555写入0xAA,接着向0x2AA写入0x55,然后向0x555写入0x90,最后从0x00读它的ID。用代码表示就是这样:
(*(volatile unsigned short*)(0x555)) = 0xAA;
(*(volatile unsigned short*)(0x2AA)) = 0x55;
(*(volatile unsigned short*)(0x555)) = 0x90;
问题是,cpu和flash的地址线不是对应连接的,而是错开了一位,就像下面这样:
------------------------------------------------
cpu地址线 A21 A20 ... A2 A1 A0
flash地址线 A20 A19 ... A1 A0
------------------------------------------------
这样,当cpu给出的地址为0x555时,到flash时不就变成0x2AA了么?那上面的代码就不对了啊。。。
一直没弄明白,请各位大虾指点