当前位置:首页 >> 信息与通信 >>

NorFlash与NandFlash


NorFlash 与 NandFlash (2008-10-31 10:19:46)

FLASH 存储器又称闪存,主要有两种:NorFlash 和 NandFlash,下面我们从多个角度来对比 介绍一下.在实际开发中,设计者可以根据产品需求来进行闪存的合理选择. 1,接口对比 NorFlash 带有通用的 SRAM 接口,可以轻松地挂接在 CPU 的地址,数

据总线上,对 CPU 的接 口要求低.NorFlash 的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可以直 接在 flash 闪存内运行,不必再把代码读到系统 RAM 中.如 uboot 中的 ro 段可以直接在 NorFlash 上运行,只需要把 rw 和 zi 段拷贝到 RAM 中运行即可. NandFlash 器件使用复杂的 I/O 口来串行地存取数据,8 个引脚用来传送控制,地址和数据 信息.由于时序较为复杂,所以一般 CPU 最好集成 NAND 控制器.另外由于 NandFlash 没有 挂接在地址总线上, 所以如果想用 NandFlash 作为系统的启动盘, 就需要 CPU 具备特殊的功 能,如 s3c2410 在被选择为 NandFlash 启动方式时会在上电时自动读取 NandFlash 的 4k 数 据到地址 0 的 SRAM 中.如果 CPU 不具备这种特殊功能,用户不能直接运行 NandFlash 上的 代码,那可以采取其他方式,比如好多使用 NandFlash 的开发板除了使用 NandFlash 以外, 还用上了一块小的 NorFlash 来运行启动代码. 2,容量和成本对比 相比起 NandFlash 来说,NorFlash 的容量要小,一般在 1~16MByte 左右,一些新工艺采用 了芯片叠加技术可以把 NorFlash 的容量做得大一些. 在价格方面, NorFlash 相比 NandFlash 来说较高,如目前市场上一片 4Mbyte 的 AM29lv320 NorFlash 零售价在 20 元左右,而一片 128MByte 的 k9f1g08 NandFlash 零售价在 30 元左右. NandFlash 生产过程更为简单, NAND 结构可以在给定的模具尺寸内提供更高的容量, 这样也 就相应地降低了价格. 3,可靠性性对比 NAND 器件中的坏块是随机分布的,以前也曾有过消除坏块的努力,但发现成品率太低,代 价太高,根本不划算.NAND 器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为 不可用.在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率.而 坏块问题在 NorFlash 上是不存在的. 在 Flash 的位翻转 (一个 bit 位发生翻转) 现象上, NAND 的出现几率要比 NorFlash 大得多. 这个问题在 Flash 存储关键文件时是致命的,所以在使用 NandFlash 时建议同时使用 EDC/ECC 等校验算法. 4,寿命对比 在 NAND 闪存中每个块的最大擦写次数是一百万次,而 NOR 的擦写次数是十万次.闪存的使 用寿命同时和文件系统的机制也有关,要求文件系统具有损耗平衡功能. 5,升级对比

NorFlash 的升级较为麻烦,因为不同容量的 NorFlash 的地址线需求不一样,所以在更换不 同容量的 NorFlash 芯片时不方便.通常我们会通过在电路板的地址线上做一些跳接电阻来 解决这样的问题,针对不同容量的 NorFlash. 而不同容量的 NandFlash 的接口是固定的,所以升级简单. 6,读写性能对比 写操作:任何 flash 器件的写入操作都只能在空或已擦除的单元内进行.NAND 器件执行擦 除操作是十分简单的,而 NOR 则要求在进行擦除前先要将目标块内所有的位都写为 1.擦除 NOR 器件时是以 64~128KB 的块进行的,执行一个擦除/写入操作的时间约为 5s.擦除 NAND 器件是以 8~32KB 的块进行的,执行一个擦除/写入操作最多只需要 4ms. 读操作:NOR 的读速度比 NAND 稍快一些. 7,文件系统比较 Linux 系统中采用 MTD 来管理不同类型的 Flash 芯片, 包括 NandFlash 和 NorFlash. 支持在 Flash 上运行的常用文件系统有 cramfs,jffs,jffs2,yaffs,yaffs2 等.cramfs 文件系 统是只读文件系统.如果想在 Flash 上实现读写操作,通常在 NorFlash 上我们会选取 jffs 及 jffs2 文件系统,在 NandFlash 上选用 yaffs 或 yaffs2 文件系统.Yaffs2 文件系统支持 大页(大于 512 字节/页)的 NandFlash 存储器. ----------------------------------------------------------------------------------目前市场上的 flash 从结构上大体可以分为 AND, NAND, NOR 和 DiNOR 等几种. 其中 NOR 和 DiNOR 的特点为相对电压低,随机读取快,功耗低,稳定性高,而 NAND 和 AND 的特点为容 量大,回写速度快,芯片面积小.现在,NOR 和 NAND FLASH 的应用最为广泛.NOR 的特点 是可在芯片内执行,这样应用程序可以直接在 flash 内存内运行,不必再把代码读到系统 RAM 中.NOR 的传输效率很高,但写入和檫写速度较低.而 NAND 结构能提供极高的单元密 度,并且写入和擦除的速度也很快,是高数据存储密度的最佳选择.这两种结构性能上的异 同如下: (1) NOR 的读速度比 NAND 稍快一些. (2) NAND 的写入速度比 NOR 快很多. (3) NAND 的擦除速度远比 NOR 快. (4) NAND 的擦除单元更小,相应的擦除电路也更加简单. (5) NAND 闪存中每个块的最大擦写次数量是万次,而 NOR 的擦写次数是十万次[7]. 由于以上 flash 的特性决定了,在嵌入式设备中,把只读属性的映象文件,如启动引导程 序 blob,内核,文件系统文件存放在 NOR Flash 中,而把一些读写类的文件,如用户应用 程序等存放在 NAND Flash 中.本系统平台上有一个 16M 大小的 NOR flash,和一个 64M 大 小的 NAND Flash,根文件系统是建立在 NOR Flash 的后大半部分,前小半部分用来存放 bootloader 和 kernel 映像;而 NAND Flash 上建立了用户文件系统.为了避免频繁的读写 操作对 Flash 造成的伤害,系统对频繁的读写操作的文件夹采用了 Ramfs 文件系统.根目 录下的/var,/tmp 目录为 Ramfs 临时文件系统的挂载点.

GRUB 系统引导全分析
-----------------------------------------------本文系本站原创,欢迎转载! 转载请注明出处:http://sjj0412.cublog.cn/

-----------------------------------------首先我们来讲下大致过程 1.当你按重启键时,机子从 BIOS 时运行,BIOS 检测硬件. 2.BIOS 将 0 头 0 道 1 扇区也就是 MBR 读入内存地址 0x7c00 处..然后检查 0x7dfe 是否等 . 于 0xaa55(WORD)确认是有效 MBR 后开始执行. 3.MBR 就是我们可以控制的了,这个也是分水岭. 如果我们安装 window,window 的安装程序就会将 ntldr 的 pre_load 填充到 mbr,如果装 linux,则将 grub 安装到 mbr,其实这个还不是真正的引导程序. 时后, 过程,来说明引导程序的变迁 变迁. 下面将以先安装 window 时后,然后安装 linux 过程,来说明引导程序的变迁. (1)首先说下硬盘的分区结构 首先说下硬盘的分区结构 首先硬盘的第一扇区是 mbr,这个是所有程序的开端,然后是第一分区,在 mbr 和第一分区 间有 62 的保留扇区,这个对 GURB 作用大了,但是对于 window 引导没有用处.

(2)当我们安装 windows 时,安装程序会做如下操作: 当我们安装 安装程序会做如下操作:
1.根据分区表填充 MBR 的分区表,且加载 pre-boot 到 mbr.pre-boot 作用分析:它就是根 据 pt 找到活动分区,然后读取这个活动扇区的引导扇区即下面的 setup,就是 1,0,1(如果装 在 c 就是 c 盘的第一个扇区,注意这个和 mbr 有 62 扇区的保留扇区). 2.将能够识别具体文件系统的 setup 安装到活动分区的引导扇区,这里如果 C 盘是 FAT 格 式的,那么就会将 FAT 文件系统的 setup 程序安装到这里,然后这个 setup 会加载跟目录下 (c:/)的 ntldr,ntldr 就比较强大了. 2, 当加载 NTLDR 的时候系统仍然是处于实模式下.所以,NTLDR 的第一件大事就是将 CPU 从实模式转换到保护模式下.当 NTLDR 将所有的 1M 以下的内存页描述符创建好后,NTLDR 再开启页映射功能,现在 NT 可以访问 4G 内存了.然后,NTLDR 通过内建的文件系统代码来查 找根目录下的 BOOT.INI.(NTLDR,有 FAT 和 NTFS2 种文件系统的只读代码)

3,NTLDR 根据 BOOT.INI 的内容提示用户可选的操作系统.当用户在缺省的时间内没有选 择.NTLDR 就引导缺省的操作系统. (BOOTSECT.DOS 是 DOS 引导扇区的 COPY 件.),引导 DOS 系统运行. [boot loader] timeout=3 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=AlwaysOff C:\GRLDR="深度一键" #下面是 BOOT.INI 的一些说明 [BOOT LOADER]即操作系统加载器,指定系统选择菜单默认等待时间和默认引导的操作系 统. OPERATING SYSTEMS]段指定操作系统列表,由双引号括起来的部分就是列表所显示的内 容. 例如 MULTI(0)DISK(0)RDISK(0)PARTITION(1)格式的语句被称为 ARC 路径, 它的格式为: MULTI()——指定磁盘控制器(若为 SCSI 控制器,则此处应替换为 SCSI()); DISK()——指定 SCSI 设备编号(对于 MULTI 该处值始终为 0); RDISK()——指定 IDE 设备编号(对于 SCSI,此处被忽略); PARTITION()——指定分区编号. #除分区编号由 1 开始外,其余编号均从 0 开始. 参数: FASTDETECT 表示禁用串行鼠标检测,是系统默认值; MAXMEM——指定 Windows XP 可用内存容量; BASEVIDEO——使用标准 VGA 显示驱动程序; NOGUIBOOT——启动过程中不显示图形屏幕; SOS——加载设备驱动程序时显示其名称. 在操作系统选择菜单中的中文字体由位于活动分区根目录下的 BOOTFONT.BIN 文件提供. 小提示:NTLDR 启动后,如果在系统根目录下发现有 Hiberfil.sys 文件且该文件有效,那么 NTLDR 将读取 Hiberfil.sys 文件里的信息并让系统恢复到休眠以前的状态,这时并不处理 Boot.ini 文件. 4, 若"深度一键" 系统被选中, NTLDR 加载 grldr,然后将控制全交给 grldr,这个也是一个引导 器,如果你要用 window 引导器引导 linux,这个 grldr 可以换成 grubfordos 即 gruldr,这个文 件有 176kb,可想应该有很多功能了,能够识别出文件系统,估计也有网络功能(这个会读

取跟目录下的 menulist,如果没有则提供 commandline ,find menulist,等选项,一段延时后会度 /boot/grub/下的 menulist,如果都没有就进入 commandline 方式. 5,若默认操作系统被选定.上面的 multi(0)disk(0)rdisk(0)partition(1)\WINDOWS 指定了内核的 根目录, 接下来被加载的 2 个文件组成了 WINDOWSxp 的核心.那就是:NTOSKRNL.EXE(NT 系统内核),HAL.DLL(硬 件抽象层).这 2 个文件都在内核根目录的 SYSTEM32 文件夹下,它 们在装载时将被检测 PE 校验和,如果有问题或找不到.NT 会提示找不到文件.有一点要说明. 单处 理器和多处理器的 NTOSKRNL.EXE 是不同的.加载完这 2 个文件后,NTLDR 再加载所 有引导必须的驱动程序,然后加载 HKEY_LOCAL_MACHINE\SYSTEM \Services 里的值 SERVICE_BOOT_START 的 DRIVER.( 时 不 初 始 化 .) . 然 后 NTLDR 就 会 锁 定 NTOSKRNL.EXE 的 main()函数,然后将控制转移给 NTOSKRNL.EXE. 6,NTOSKRNL.EXE 开始装载并初始化设备驱动程序,以及启动 WIN32 子系统和 WINDOWS XP 服务. 7,开始登录进程.由 WIN32 子系统启动 WINLOGON.EXE,并由它启动 LOCAL SECURITY AUTHORITY(LSASS.EXE)显示登录对话框.用户登录后,WINDOWS XP 会继续配置网络设 备和用户环境.最后,伴随着微软之声和我们熟悉的个性化桌面,WINDOWS XP 漫长的启动 过程终于完成.

(3)然后现在开始装 linux 构成双系统平台. 然后现在开始装 构成双系统平台.
装 linux 时就会采用 grub 引导系统, 1.装 linux 时,装 window 时填充的 mbr 中 pre_boot 就会被 grub 的 stage1 代替,不过 grub 的 stage1 和 pre_boot 不一样,stage1 是去读取 0 头 0 道 2 扇区 (而不是读取活动分区的引导扇区) 然后闪人.. 头 0 道 2 扇区的内容就是 grub 源代码里\stage2\start.s 编译后也是一个 512 字 .0 节..stage1 将 start.s 读入内存地址 0x8000 然后跳过去执行 . 2,start.s 就是 stage1.5 or stage2 的入口..一般情况下 stage2 还是放在需要具体的文件系统 . 下的..这个时候需要读取 stage1.5..但是注意..这里的 stage1.5 不是/boot 目录下的那 . . . 些文件..你都能读取/boot 目录了还要 stage1.5 干嘛.. . . 所以这里的 stage1.5 是将/boot 目录对应的分区格式的 stage1.5 文件复制到了 0 头 0 道 3 扇区 开始向后的位置..,刚才说了 mbr 后面有 62 个保留扇区,stage1.5 文件一般就 10 几 k.. . . 够放了.. . 3.stage1.5 这样就可以顺利的识别文件系统然后转入读取/boot/grub/stage2 的运行了. . . stage2 的入口在 asm.S 4.下面来说说 stage2.它负责显示启动菜单和提供用户交互接口,读取/boot/grub/menu.list 并根据用户选择或默认配置加载操作系统内核.同前两个文件不同,stage2 是存放在磁盘上 /boot/grub 下 title Ubuntu 8.04.2, kernel 2.6.24-24-generic root (hd0,7) kernel /boot/vmlinuz-2.6.24-24-generic root=UUID=34798c5d-4985-4628-98cd-17aab6ad53d4 ro quiet splash locale=zh_CN

initrd quiet

/boot/initrd.img-2.6.24-24-generic

title Ubuntu 8.04.2, kernel 2.6.24-24-generic (recovery mode) root (hd0,7) kernel /boot/vmlinuz-2.6.24-24-generic root=UUID=34798c5d-4985-4628-98cd-17aab6ad53d4 ro single initrd /boot/initrd.img-2.6.24-24-generic

# on /dev/sda1 title Microsoft Windows XP Professional root (hd0,0) savedefault makeactive chainloader +1 <--代表第一个 sector 从第一扇区启动 5.如果选择的是 windows,那么就会读取活动分区的引导扇区,就是 c 盘的引导扇区,由于 先装 window, 且装 linux 时只是填充 mbr 及 c 分区前的保留扇区, c 分区的引导扇区还是 故 ntldr 的部分(setup 部分), 这样就到了 ntldr 引导时的第二步, 那么也就说交给了 ntldr 引导器, 就变成 window 引导器. 6.如果是选 linux 则是读取 initrd,和 kernel 然后运行,而不是加载分区的引导扇区. 注意: 活动分区的如果是 fat,或 nfs,这个分区的引导扇区,出了引导程序还有 bpb 数据引导扇 区的前三个字节必须是合法的可执行的基于 x86 的 CPU 指令.这通常是一条跳转指令,该 指令负责跳过接下来的几个不可执行的字节(BPB 和扩展 BPB),跳到操作系统引导代码部 分. 跳转指令之后是 8 字节长的 OEM ID,它是一个字符串, OEM ID 标识了格式化该分区 的操作系统的名称和版本号.为了保留与 MS-DOS 的兼容性,通常 Windows 2000 格式化该 盘是在 FAT16 和 FAT32 磁盘上的该字段中记录了"MSDOS 5.0", NTFS 磁盘上(关于 ntfs, 在 另述),Windows 2000 记录的是"NTFS".通常在被 Windows 95 格式化的磁盘上 OEM ID 字 段出现"MSWIN4.0",在被 Windows 95 OSR2 和 Windows 98 格式化的磁盘上 OEM ID 字段 出现"MSWIN4.1". 接下来的从偏移 0x0B 开始的是一段描述能够使可执行引导代码找到相关参数的信息.通 常称之为 BPB(BIOS Parameter Block),BPB 一般开始于相同的位移量,因此,标准的参数 都处于一个已知的位置.磁盘容量和几何结构变量都被封在 BPB 之中.由于引导扇区的第 一部 分是一个 x86 跳转指令.因此,将来通过在 BPB 末端附加新的信息,可以对 BPB 进 行扩展.只需要对该跳转指令作一个小的调整就可以适应 BPB 的变化. DBR 的偏移 0x5A 开始的数据为操作系统引导代码. 这是由偏移 0x00 开始的跳转指令所 指向的.在图 8 所列出的偏移 0x00~0x02 的跳转指令"EB 58 90"清楚地指明了 OS 引导代码 的偏移位置.jump 58H 加上跳转指令所需的位移量,即开始于 0x5A.此段指令在不同的操 作系统上和不同的引导方式上,其内容也是不同的.大多数的资料上都说 win98, 构建于 fat 基本分区上的 win2000,winxp 所使用的 DBR 只占用基本分区的第 0 扇区.他们提到,对于 fat32,一般的 32 个基本分区保留扇区 只有第 0 扇区是有用的.实际上,以 FAT32 构建的

操作系统如果是 win98,系统会使用基本分区的第 0 扇区和第 2 扇区存储 os 引导代码;以 FAT32 构 建的操作系统如果是 win2000 或 winxp,系统会使用基本分区的第 0 扇区和第 0xC 扇区(win2000 或 winxp,其第 0xC 的位置由第 0 扇区 的 0xAB 偏移指出)存储 os 引导代码. 所以,在 fat32 分区格式上,如果 DBR 一扇区的内容正确而缺少第 2 扇区(win98 系统)或第 0xC 扇区 (win2000 或 winxp 系统),系统也是无法启动的.如果自己手动设置 NTLDR 双系 统,必须知道这一点. DBR 扇区的最后两个字节一般存储值为 0x55AA 的 DBR 有效标志,对于其他的取值, 系统将不会执行 DBR 相关指令. 上面提到的其他几个参与 os 引导的扇区也需以 0x55AA 为 合法结束标志. 附带 grub 安装注意: grub 安装有三种方式: setup install grub_install grub_install 其实是调用 setup,所以可以看成一样. 通过 install 安装的没有 stage1.5,读取 stage2 是通过 stage2 所在 block 读取的,所以即使 文件删除后,由于只是删除 i 节点位图,数据还是在 block 上,所以还是可以运行

但是,如果是通过 grub>install 方式安装的 grub,删除 /boot/grub/stage2 就没有问题,why?因为通过 grub>install 安装 grub,stage1 是直接通过 stage2 所在的 blocklist 找 stage2,我们删除 或者改名 stage2 文件,文件的存放位置是不变的,因此能找到.而通过 grub-install 脚本,或者 grub>setup,会智能的找到相应的 stage1.5, 例如:/grub/e2fs_stage1_5,然后通过 stage1.5 认识文件系统,是通过 文件名去找 stage2 的,所以通过这 两种方式安装的 grub,不可删除或 者改名除/boot/grub/stage2. 也就是说如果用块号可以指出 stage2 文件的所在处,这样就没有文件系 统的概念了

相关文章:
norflash,nandflash,SDRAM的区别及作用
norflash,nandflash,SDRAM的区别及作用_IT/计算机_专业资料。s3c2440启动方式norflash启动,nandflash启动区别今日推荐 180份文档 CET四六级高分通关宝典 ...
NAND flash和NOR flash的区别
NAND flash 和 NOR flash 的区别 NOR 和 NAND 是现在市场上两种主要的非易失闪存技术。Intel 于 1988 年首先开发出 NOR flash 技术,彻底改变了原先由 EPROM ...
NandFlash和NorFlash详解
NandFlash和NorFlash详解_计算机硬件及网络_IT/计算机_专业资料。本文主要叙述了Nand 和Nor Flash 的区别与联系,可以很好地了解两者之间的关系。...
norflash_nandflash_SDRAM的区别及作用
norflash_nandflash_SDRAM的区别及作用_工学_高等教育_教育专区。S3C2440 的启动时读取的第一条指令是在 0x00 上, 分为成 nand flash 和 nor flash 上启动。...
NorFlash和NandFlash
NorFlash和NandFlash_信息与通信_工程科技_专业资料。前言: 目前,各类 DDR,SDRAM 或者 RDRAM 都属于 都属于挥发性内存, 只要停止电流供应内存中的数据便无法保持。...
Norflash与Nandflash的区别
Norflash与Nandflash的区别_计算机软件及应用_IT/计算机_专业资料。NAND 和 NOR flash 的區別 NOR 和 NAND 是現在市場上兩種主要的非易失快閃記憶體 技術。Intel...
NOR FLASH和NAND FLASH特点
NOR FLASH和NAND FLASH特点_信息与通信_工程科技_专业资料。NOR FLASH和NAND FLASH特点 看了一下开发板上的外围设备,对 NOR 和 NAND flash 的区别没有什么概念,...
NandFlash 与NORFlash 驱动
NandFlash 与NORFlash 驱动_计算机硬件及网络_IT/计算机_专业资料。Flash 驱动说明 ,含驱动代码,非常实用,可直接使用。NandFlash 与 NORFlash 驱动 (注:来源于...
norflash启动和nandflash启动的总结
norflash启动和nandflash启动的总结_计算机硬件及网络_IT/计算机_专业资料。S3C2440的启动时读取的第一条指令是在0x00上,分为成nand flash和nor flash上启动。启动...
更多相关标签:
nand nor flash 区别 | nor flash nand flash | norflash nandflash | nandflash和norflash | spi nor nand flash | nor与nand的区别 | nand与nor | nor nand |