目前已经不少ARM9的处理器都至少支持nand flash启动 和nor flash启动。那此两种启动方式到底有什么区别呢?下面以S3C2440为例说明。性能
NandFlash 与 NorFlash 区别spa
以下表所示接口
|
NOR内存 |
NADNci |
容量flash |
1~32MBtable |
16~512MB效率 |
XIP(芯片内执行)程序 |
Yes并行 |
No |
性能 |
擦除很是慢,写慢,可是读很是快 |
擦除、写、读都较快 |
可靠性 |
高,位反转比例小于nandflash的10% |
比较低,位反转比较常见 |
接口 |
与RAM同样 |
I/O接口 |
访问方法 |
随机访问 |
顺序访问 |
主要用途 |
保存代码和关键数据 |
用于保存数据 |
价格 |
高 |
低 |
文件系统支持 |
Jffs2 |
Yaffs |
记住最重要一点,NOR Flash的接口与RAM同样,因此能够随机访问任意地址,效率高,因此读的效率很是高。而NAND FLASH通常以512字节为单位进行读写。前者更适合保存程序,然后者保存数据。
启动方式对比
Nand启动
分两种状况,应用程序小于4K和应用程序大于4K。
若是应用程序小于4K:
(1) 一上电,nand前4K自动拷贝到2440内部的SRAM中。(2440的片内存储为4K)
(2) CPU从0地址执行(此时,0地址在SRAM中)
若是应用程序大于4K,那么应该怎么办呢。仍是同样:
(1) 上电后,从nand前4K拷贝到片内的SRAM
(2)关看门狗、初始化存储器管理器、SDRAM等
(3) 把代码拷贝到SDRAM中,并继续执行。
不一样的是,须要订制这4K的代码,完成从nandflash到sdram代码的复制。
Nor启动
最根本的区别在于从nor启动,因为nor也是并行传输,能够像内存(SRAM)同样读数据,但不能像内在同样写数据,因此能够将0地址定位在norflash中
(1) 一上电,将0地址定位在nor flash中
(2) 一样,CPU从0地址取址执行。