MTD的概念ITeye - 乐橙lc8

MTD的概念ITeye

2019年02月28日11时45分06秒 | 作者: 静枫 | 标签: 体系,文件,运转 | 浏览: 2108

nand flash和nor flash有许多不同之处,比方具体的存储办理方式,读写速度,价格等,我觉得最重要的一点区别是是NOR FLASH地址线和数据线分隔,能够象SRAM相同衔接在数据线上,而且NOR FLASH以“字”为根本单位来操作,因而程序能够直接在nor flash里运转,不必把代码COPY到RAM里才运转。所以一般把体系发动代码寄存到NOR FLASH里,能够直接从FLASH发动体系。nand flash共用数据和地址线,而且是以块为单位操作数据,很难用来做发动芯片。因而boot代码一般放到nor flash里。

不过2410比较特别,S3C2410在发动的时分,能够把nand flash前面的发动程序装载到2410里边自己一个4k巨细的SRAM(Steppingstone) 里边,这4K SRAM被映射到0X0,然后完结nand flash方式的发动,从nand flash发动比nor flash方式速度要快。

uClinux渠道下的Flash存储技能

主张在读这篇文章前,读一下NandFlash和NorFlash的异同
摘要:较为具体地介绍嵌入式操作体系uClinux渠道下的Flash存储技能,并给出依据三星S3C4510体系下Dlash存储器具体规划实例。 要害词:Flash存储技能 uClinux渠道 S3C4510

1 Flash类型与技能特色
Flash首要分为NOR flash和NAND flash两类。下面临二者作较为具体的比较。

1.1 功用比较
Flash 闪存对错易失存储器,能够对存储器单元块进行擦写和再编程。任何Flash器材进行写入操作前有必要先履行擦除。NAND器材履行擦除操作十分简略;而 NOR则要求在进行擦除前,先要将方针块内一切的位都写为0。擦除NOR器材时是以64~128KB的块进行的,履行一个写入/擦除操作的时刻为 1~5s;擦除NAND器材是以8~32KB的块进行的,履行相同的操作最多只需求4ms。履行擦除时,块尺度的不同近一步拉大了NOR和NADN 之间的功用距离。计算标明,关于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作有必要在依据NOR的单元中进行。因而,当挑选存储处理计划时,规划师有必要权衡以下的各项要素。

*NOR的读取速度比NAND稍快一些。
*NAND的写入速度比NOR快许多。
*NAND的擦除速度远比NOR快。 *大大都写入操作需求先进行擦除操作。
*NAND的擦除单元更小,相应的擦除电路更少。

1.2 接口不同 NORFlash带有SRAM接口,有满足的地址引脚来寻址,能够很容易地存取其内容的每一字节。 NAND器材运用杂乱的I/O口来串行地存取数据,各个产品或厂商的办法或许各不相同。8个引脚用来传送操控、地址和数据信息。NAND的读和写操作选用512字节的块,这一点有点像硬盘办理此类操作。很自然地,依据NAND的存储器就能够替代硬盘或其它块设备。

1.3 容量和本钱
NAND Flash的单元尺度几乎是NOR器材的一半。由于生产进程更为简略,NAND结构能够在给定的模具尺度内供给更高的容量,也就相应地降低了价格。
Flash占有了大部分容量为1~16MB的内存商场,而NAND Flash仅仅用在8~128MB的产品傍边。

1.4 牢靠性和耐用性 选用Flash介质时,一个需求要点考虑的问题是牢靠性。关于需求扩展MTBF的体系来说,Flash对错常适宜的存储计划。能够从寿数(耐用性)、位交流和坏块处理三个方面来比较NOR和NAND的牢靠性。

(1)寿数(耐用性) 在NAND闪存中,每个块的最大擦写次数是100万次,而NOR的擦写次数是10万次。NAND存储器除了具有10:1的块擦除周期优势外,典型的NAND块尺度要比NOR器材小8位,每个NAND存储器块在给定时刻闪的删去次数要少一些。

(2)位交流 一切Flash器材都受位交流现象的困扰。在某些情况下(很少见,NAND发作的次数要比NOR多),一个比特位会发作回转或被陈述回转了。 一位的改动或许不很显着,可是假如发作在一个要害文件上,这个小小的毛病就或许导致体系停机。假如仅仅陈述有问题,多读几回就或许处理。 位回转的问题更多见于NAND闪存,NAND的供货商主张运用NAND闪存的时分,一起运用EDC/ECC算法。当然,假如用本地存储设备来存储操作体系、装备文件或其它灵敏信息时,有必要运用EDC/ECC体系以保证牢靠性。

(3)坏块处理 NAND器材中的不坏块是随机散布的。曾经做过消除坏块的尽力,但发现成品率太低,价值太高,底子不划算。NAND器材需求对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器材中,假如经过牢靠的办法不能进行这项处理。将导致高毛病率。

1.5 易用性 能够十分直接地运用依据NOR的闪存,像其它存储器那样衔接,并能够在上面直接运转代码。由于需求I/O接口,NAND要杂乱得多。各种NAND 器材的存取办法因厂家而异。在运用NAND器材时,有必要先写入驱动程序,才干持续履行其它操作。向NAND器材写入信息需求恰当的技巧,由于规划师绝不能向坏块写入,这就意味着在NAND器材上从头到尾都有必要进行虚拟映射。

1.6 软件支撑 在NOR器材上运转代码不需求任何的软件支撑。在NAND器材进步行相同操作时,一般需求驱动程序,也就是闪存技能驱动程序(MTD)。NAND 和NOR器材在进行写入和擦除操作时都需求MTD。运用NOR器材时,所需求的MTD要相对少一些。许多厂商都供给用于NOR器材的更高档的软件,其间包含M-System的TrueFFS驱动,该驱动被Wind River System、Microsoft、QNX Sotrware System、 Symbian和Intel等厂商所选用。驱动还用于对DiskOnChip产品进行仿零点和NAND闪存的办理,包含纠错、坏块处理和损耗平衡。

现在,NOR Flash的容量从几KB~64MB不等,NAND Flash存储芯片的容量从8MB~128MB,而DiskonChip能够到达1024MB。

第1页第2页

2 体系规划

Flash 在每MB的存储开支上较RAM要贵重,但关于uClinux体系来说,挑选Flash作为存储器具有必定的优势。uClinux体系在上电后,需求运转的 程序代码和数据都能够存储在Flash中,乃至放在CPU开端地址中的uClinux发动内核都能够写入Flash中。从必定意义上讲,嵌入式体系只用 Flash就能够完结所需的存储功用。
Flash存储器的分区较硬盘的分区更为简略,分区后的Flash运用起来愈加便利。典型的Flash分区如下。

SEGMENT PURPOSE
0 Bootloader
1 factory configuration
2
kernel

X
┆ root filesystem


分区0放置Bootloader,分区1放置factory configuration,分区2到分区X放置体系内核,分区X到分区Y放置根文件体系。Flash的分区能够依据需求区分,uClinux中支撑Flash存储器的块设备驱动担任界说上述的分区。

机下的Linux不同,Flash的分区把体系内核文件和根文件体系独自区分到两个分区中,而PC机的硬盘是把内核文件和根文件体系放在一个分区内。PC 机下Linux的Bootloader是LILO或GRUB。它们在体系发动时能智能地在分区中找到内核文件块,并把它加载到RAM中运转。关于 Flash而言,把内核的镜像文件写进一个独自的分区对嵌入式体系有两大长处:①体系能够直接在Flash上运转;②LILO或GRUB更易找到内核代码并加载,乃至能够不必LILO或GRUB引导而直接运转。

内核文件和根文件体系在Flash中的放置,能够依据体系规划需求恰当挑选。

3 引导程序挑选

体系发动之前的引导进程是CPU初始化的进程。包含ARM和X86在内的许多CPU是从固定地址单元开端运转引导程序 (Bootloader)的。其它的部分CPU是从某个地址单元读入引导程序的进口地址,然后再运转引导程序,比如M68K和Coldfire系列。所以 这些都影响到Flash中体系发动代码的寄存地址。 体系首先要考虑的是在什么地址寄存Bootloader,或许说体系从哪个地址单元开端加载运转体系内核代码。

发动后直接运转体系内核是能够完结的。关于uClinux来说,发动代码有必要包含芯片的初始化和RAM的初始化等硬件装备;一起加载内核的代码段到RAM 中,并铲除初始化的数据段内容。尽管这些完结起来很直观,可是要具体把发动代码寄存在Flash中正确的地址偏移单元内,使CPU一发动便能履行就比较困难了。不过,现在技能比较先进的CPU都将默许的偏移地址设置为0,或许在偏移地址为0的邻近寄存开端地址。

Bootloader是一段独自的代码,用以担任根本硬件的初始化进程,而且加载和运转uClinux的内核代码。作为体系发动东西, Bootloader经过装备能够加载Flash中的多个内核,乃至能够经过串口和网口来加载内核和体系的镜像到RAM中运转。Bootloader一起 也供给对内核镜像文件的多等级维护,这一点关于以Flash作为存储设备的体系来说十分重要。比如,当体系进行内核晋级和重要数据备份时,体系俄然掉电, 正如PC机进行BIOS刷写进程中的旧电相同,都是灾难性的。可是运用Bootloader就能够完结维护性的康复。

现在运转在uClinux上的免费Bootloader有COLILO、MRB、PPCBOOT和DBUG。也有为特别需求规划的SNAPGEAR和ARCTURUS NETWORKS。

4 uClinux的块驱动器

关于嵌入式体系的块设备,可挑选存储文件体系的块驱动器(Block Driver)首要有三种挑选。
①Blkmem driver。Blkmem driver仍是uClinux上运用最一般的Flash驱动器。它是为uClinux而规划的,可是它的结构相对比较简略,而且仅支撑NOR Flash的操作,需求在RAM中树立根文件体系。一起它也很难装备,需求代码修正表来树立Flash分区。尽管如此,它仍是供给了最根本的分区擦/写操作。 ②MTD driver。MTD driver是Linux下规范的Flash驱动器。它支撑大大都Flash存储设备,兼有功用强大的分区界说和映像东西。借用穿插存取技能(interleaving),MTD driver乃至可支撑同一体系中不同类型的Flash,Linux内核中关于 MTD driver装备有较为具体的挑选项。
③RAM disk driver。在无盘发动的规范Linux中,用得最多的就是RAM disk driver;但它不支撑底层的Flash存储器,仅对根文件体系的树立有意义,即根文件体系紧缩今后寄存在Flash的什么地方。 经过上面的比较能够看到,MTD driver供给对Flash最有力的支撑同,一起它也支撑在Flash上直接运转文件体系,比如JFFS和JFFS2,而B1kmem driver则不支撑。

5 根文件体系 uClinux中的文件体系能够有多种挑选。一般情况下,ROMfs是运用最多的文件体系,它是一种简略、紧凑和只读的文件体系。ROMfs次序存储文件数据,并能够在uClinux支撑的存储设备上直接运转文件体系,这样能够在体系运转时节省许多RAM空间。

Cramfs 是针对Linux内核2.4之后的版别所规划的一种新式文件体系,也是紧缩和只读格局的。它首要的长处是将文件数据以紧缩方式存储,在需求运转的时分进行 解紧缩。由于它存储的文件方式是紧缩的格局,所以文件体系不能直接在Flash上运转。尽管这样能够节省许多Flash存储空间,可是文件体系运转需求将 很多的数据复制进RAM中,耗费了RAM空间。

考虑到大都体系需求能够读/写的文件体系,能够运用MTD driver的JFFS和JFFS2日志式文件在Flash头部树立根文件体系(Root Filesystem)。日志式文件体系能够免受体系俄然掉电的风险,而且鄙人一次体系引导时不需求文件体系的查看。由于JFFS和 JFFS2文件格局是特别为Flash存储器规划的,二者都具一种称为“损耗平衡”的特色,也就是说Flash的一切被擦写的单元都坚持相同的擦写次数。 运用这些特有维护措施,Flash的运用周期得到恰当大的提高。JFFS2运用紧缩的文件格局,为Flash节省了很多的存储空间,它更优于JFFS格局 在体系中运用。值得注意的是,运用JFFS2格局或许带来少数的Flash空间的糟蹋,这首要是由于日志文件的过度开支和用于收回体系的无用存储单元,浪 费的空间巨细约是两个数据段。

假如运用RAM disk,一般应挑选EXT2文件格局,但EXT2并不是一块特别高效的文件存储空间。由于存在RAM disk上,所以任何改动鄙人一次发动后都会丢掉。当然,也有许多人以为对嵌入式存储空间来讲,这是一种优势,由于每次体系发动都是从已知的文件体系状况开端的。

尽管在Linux下有许多的文件格局可供挑选,可是关于uClinux一般只挑选上述的几种文件格局。别的一点就是如安在方针体系上树立 根文件体系,过程如下:首先在开发宿主机上树立一个方针机的根文件体系的目录树,然后运用嵌入式根文件体系生成东西在宿主机上生成目录树的二进制文件镜 像,最终下载到方针机上就能够了。关于不同的文件格局有不同的二进制镜像生成东西,比如JFFS的mkfs.jffs2、ISO9660的 mkisofs。


版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表乐橙lc8立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章