Flash编程原理都是只能将1写为0,而不能将0写成1.所以在Flash编程之前,必须将对应的块擦除,而擦除的过程就是将所有位都写为1的过程,块内的所有字节变为0xFF.因此可以说,编程是将相应位写0的过程,而擦除是将相应位写1的过程,两者的执行过程完全相反.
SoC常用外存:
一.
NorFlash:总线式访问,接到SROM bank,优点是可以直接总线访问,一般用来启动。
NandFlash:(SLC和MLC)不能总线访问。(后面支持NandFlash启动,NorFlash成本高)
SLC的特点是成本高、容量小、速度快,而MLC的特点是容量大成本低,但是速度慢。
二.
NorFlash闪存是随机存储介质,用于数据量较小的场合;
NandFlash闪存是连续存储介质,适合存放大的数据.
三.
Norflash像内存一样是直接挂在系统总线上的,这样有足够多的地址线使得CPU能够寻址到每一个存储单元上去,这也意味着CPU能够直接通过总线访问Norflash上存储的内容,同时他还支持XIP(即片上执行,不用将代码搬到内存中,直接在Norflash上就能运行)。 而Nandflash它并不是直接挂载系统总线上,而是通过Nandflash控制器(这个一般集成在CPU内部)来完成读写操作的。如果我们把Norflash的那种寻址方式叫直接寻址的话(不是汇编里的那个直接寻址,这里指CPU能够直接通过地址线访问存储器的存储单元),那么这里的Nandflash就是间接寻址(这里需要Nandflash控制器来寻址)。所以我们在使用Nandflash之前,一定要初始化Nandflash控制器。