S3C2440的NAND Flash控制器
时间:04-09 16:14 阅读:816次
*温馨提示:点击图片可以放大观看高清大图
简介:首先还是启动方式NAND Flash的过程,因为NAND Flash是不支持程序在NAND内部运行的所以要把NAND搬到内存中运行,由于S3C2440内部的SRAM只有4K,当程序远大于4K时,这种方法是行不通的,于是我们可以让NAND中4K之后的程序搬到SDRAM中来运行。
正如数据手册上所说,NOR的价格较NAND来说比较昂贵,再加上NOR的容量远比NAND小的多,再比如NOR一页的字节数也比NAND大的很多,而要在某个地址写入数据,必须先把地址所在的页擦除,所以更多的时候NAND用来存储数据,NOR用来存储程序。
如上图模型,当程序的容量大于4K的时候,NAND的前4K的程序将会被硬件自动引导到2440的SRAM中去执行,我们把编写好的SDRAM驱动程序装入前4K代码,并初始化使NAND中4K以后的代码拷贝到SDRAM
NAND的接口也和其他的RAM-LIKE芯片大不相同,比如内存、网卡等芯片都是有地址线的,他们是由CPU统一编址的,而NAND就不一样了,它的地址和CPU发出的地址是不一样的。
上图就是开发板上外接的NAND Flash,有图很明显可以看出,NAND是没有地址线的,只有八位的数据线,有经验的人很快就能联想到,NAND正是用这仅有的八条数据线来发送命令、地址和数据的,可谓是一线多用,大大的减少了CPU用来与它连接的管角,但这也令CPU与NAND的通信变得复杂多了,可谓有利有弊。
左边的那些管教就是用来控制数据线的输入是命令、数据还是地址的,不要以为我们要手工控制这些引脚来告诉NAND这哥们儿我要发送的是数据还是地址啊,除非你用51才会回到那个时代,我们只要操作S3C2440的NAND Flash的内部寄存器就可以了,根据寄存器对应的功能,发送数据的时候,自然就会把对应的引脚拉高!