随着嵌入式Linux系统在消费电子、数据采集和工业控制等领域得到越来越广泛的应用,无论是在方案设计,还是产能提升上,都提出了更高的要求。其中存储方案,作为嵌入式Linux系统中最重要的组成部分,从选型、设计,到烧录都应该引起我们的重视。
存储芯片的选型,比较常用的有Nor Flash、Nand Flash以及eMMC等类型,人们根据速度、容量、成本等因素来选择它们。Nor Flash比较简单、稳定,读取速度快,但单价便宜、容量较小。
eMMC采用了统一的MMC接口,集成了控制器、及大容量存储阵列,操作上也比较简单,但目前单价较贵。
Nand Flash作为一种安全、快速的存储器,具有体积小、容量大、成本低、以及更多的擦除次数等一系列优点,已成为嵌入式系统中数据和程序最主要的载体。由于Nand Flash在结构和操作方式上与硬盘、E2PROM等其他存储介质有较大区别,使用Nand Flash时必须根据其自身特性,对文件系统进行特殊设计,以保证系统的性能达到最优。同时由于工艺和使用环境的问题,Nand Flash存储器中不可避免的会出现位翻转及坏块,因此必须提出有效的ECC方案及坏块处理策略,以实现存储系统的高可靠性。
上面三种Flash的特性决定了各自烧录方面的复杂度,Nor Flash和eMMC都比较简单,而Nand Flash是最复杂的。
嵌入式linux系统设计好之后,量产方式的选择往往决定了生产流程及产能的高低。
1、在线烧录。它沿用了研发阶段的烧录方式,先将boot程序加载到板子上的CPU上跑起来,构建好环境之后将系统烧录进Flash芯片中。这种方式简单,但烧录效率较低下,而且要求产品生产过程是先贴板,如果芯片(尤其是Nand Flash)本身不良,必须再把Flash芯片吹下来,换颗芯片再贴板。
2、SD卡烧录。这种方式原理跟在线烧录类似,但不用联PC机,方便灵活,也是要先贴板。
3、裸片烧录。这种方式是先将系统烧录进Flash芯片再贴板,速度快,并且产量巨大时方便外包给代烧厂商进行烧录。这种方式需要注意:如果是烧录eMMC,对eMMC寄存器一定要配置正确;如果是烧录Nand Flash,一定要明确系统采用的ECC算法及坏块处理策略。