关于nor flash和nand flash启动过程区别

来源:互联网 发布:宇宙空间的温度知乎 编辑:程序博客网 时间:2024/05/17 08:42

http://blog.csdn.net/txgc0/article/details/8452370

1、比较nor flash 和nand flash:
Nor flash :intel推出,一般以64-128kb每块进行擦除,时间约为5s(这是一个很大的数)。
带有EBI(三总线)接口,支持线性读取,支持片上程序执行(XIP);
虽然擦写速度慢,但是读取速度很快(也许是因为可以进行线性读取);
更加稳定,不容易出现位翻转;
成本高,相同体积下容量更小;
接口简单,操作更方便。
Nand flash:东芝公司推出,是一种非易失性闪存,内部采用非线性宏单元模式,为固态大容量电子存储设备的实现提供了廉价有效的解决方案。
体积小,存储容量大、适合大数据存储;
擦写速度快(8-256kb,约2-3ms);
有自己专用的接口标准;
低功耗,低成本,容易出现位翻转(就是传说中的 坏块);
通常作为机械磁盘的一种更加优越的延续,具有抗震,高速、低噪、低功耗的特点;
内部组成有:面、块、页、字节;
K9K8G08型号的Nand flash 的组成结构:4面*2k块*64页*2k字节,共1024MByte;
Nand flash寻址:行列寻址方式,
地址总共32位,其中A0-A11表示的是列地址,A12-A31表示的行地址。
针对K9K8G08这个型号的flash来说,行地址的前2位确定是面,中间11位确定块,接下来的6位确定了页地址;
而列地址就是在页中的2k个地址中进行寻址。
 

2、比较nor flash和nand flash启动的不同。
使板子从裸机变成带操作系统,最少需要三个文件:bootloader、kernel、rootfs;(启动引导程序、内核、文件系统);
由bootloader引导cpu从哪里开始执行kernel程序,在启动起来内核后,系统中还要有对应的根文件系统。
对于bootloader来说,它可以分为两部分来说,一个是硬件初始化,一个是加载操作系统。
下边是nor flash的启动过程:
nor flash一般放在总线的0x00地址。
首先bootloader这段代码存放在nor flash的0x00这个地址中,所以在cpu启动时,cpu直接执行这段代码,由于nor flash支持片上执行,
所以cpu可以直接在nor flash上执行完三个步骤,但是由于nor flash的读取速度相对来说比较慢,所以,有时候会把bootl、kernel和rootfs拷贝到sdram中
,在sdram中执行启动过程。
Nand flash的启动过程:—(下边说道的BL1和BL2指定的是bootloader代码的两部分,分别硬件初始化程序和加载操作系统程序)
cpu在启动过程中最初会执行irom中的一段代码,这段代码会指引cpu到nand flash中,把nand flash中的BL1拷贝到iram中,
执行这段代码,在执行完这部分代码的末尾会告诉cpu把原来在nand flash中的bootloader、kernel、rootfs程序都拷贝到sdram中,然后从BL2代码的开始处执行程序,最终执行完所有的启动程序。


原创粉丝点击