注:笔者第一次写博客,知识方面欠缺,写博客只为了记录自己的学习过程和理解,如有什么谬论之类请大家多指教。
ARM9开发板(以S3C2440A为列)的启动默认是有两种的,一种是NOR flash启动,另一种是NAND flash启动。要想搞清楚ARM9的启动过程就一定要知道NOR flash和NAND flash到底是什么。
NOR flash:
NOR flash是一种Flash存储器,它具有非易失性,方便擦写但储存速度慢,访问速度快的特点,且它具有单独的地址线和数据线,因此它具有在flash上执行程序的功能,但是因为它的制作成本比较高因此多是存储量比较小的。在我看来它就好比一个具有非易失性的小型SDRAM。
NAND flash:
NAND flash同样是一种Flash存储器,相对NOR flash它同样具有Flash存储器的非易失性,方便擦写的特点,与NOR flash不同的是它烧写速度快,制作成本低,存储量,大但是却只有一条数据线,因此对于NAND flash的地址访问只能通过CPU传递的数据信息通过数据线来到flash在通过它自己的译码最终完成寻址,所以它不具有片上运行程序的功能(我是这么理解的,有不对的地方希望大家帮我指出来)。
在S3C2440A中以何种方式启动是通过模式引脚OM1和OM0的配置来决定的如下图
由此可见,启动模式有两种NAND 和非NAND(都是rom设备)。
而无论以何种设备启动,它都应该是从0x0000 0000地址开始执行程序的,因为NOR拥有地址线,所以可以接在系统总线上,所以CPU直接映射地址到NOR进而直接执行程序。反之NAND因为没有单独的地址线,被接在CPU的NAND控制线上,因此无法直接映射地址到NAND,为此芯片设计者专门在s3c2440a的1G映射地址空间之外专门开辟了4k的地址空间为为映射一个芯片内自带的RAM,这个RAM的作用是为了在使用NAND启动模式时在上电之后芯片将NAND的前4k的程序拷贝到其内,使的它可以在这个RAM中运行,进而执行程序。
两种设备在启动之后一般都复制程序到SDRAM中执行程序。