NOR FLASH的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash 闪存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。
NOR FLASH的地址线和数据线是分开的。
AM29LV160DB是一个2Mbyte的NOR FLASH,分区结构是:
1个16Kbyte扇区,2个8Kbyte扇区,1个32Kbyte扇区,31个64Kbyte扇区(字节模式)
1个8Kbyte扇区,2个4Kbyte扇区,1个16Kbyte扇区,31个32Kbyte扇区(半字模式)
共35个扇区。
AM29LV160DB第47脚是BYTE#脚,BYTE#接高电平时,器件数据位是16位,接低电平时,数据位是8位。上图BYTE#接VCC,D0-D15做为数据输入输出口。
A0-A19是地址线,在半字模式下,D0-D15做为数据输入输出口。因为数据位是16位,A0-A19可以选择2^20 = 1M *2BYTE = 2Mbyte。正好是AM29LV160DB的容量。S3C2440的ADDR1要接AM29LV160DB的A0。上图中AM29LV160DB的A20,A21是空脚,分别接的是LADDR21,LADDR22。这应该是为了以后方便扩展NOR FLASH的容量。LADDR21,LADDR22对AM29LV160DB是没用的。
当BYTE#接低电平时,D0-D7做为8位数据输入输出口,D15做为地址线A-1。相当于有了A-1,A0-A19共21根地址线。这个时候S3C2440的ADDR0应该接在D15(A-1)。。。。ADDR20接A19。21根地址线的寻址空间是2^21 = 2Mbyte。正好是AM29LV160DB的容量。