APP下载

基于Power PC架构嵌入式系统的FLASH选型及设计要点

2016-05-30施辰光张阳

科技风 2016年10期
关键词:嵌入式系统

施辰光 张阳

摘 要:本文以MPC8349处理器所搭建的嵌入式系统为例,分析了国内外几种NOR FLASH芯片在选型、布局、焊接时所需要注意的事项,并针对传统的NOR FLASH自测试方法提出了改进意见。

关键词:MPC8349;NOR FLASH;Power PC;嵌入式系统;脱焊

随着当今计算机技术的迅猛发展,国防、通讯、医疗仪器、工业控制等领域对计算机的要求也变得越来越高。

嵌入式系统的功耗低、可靠性高、处理能力强、实时性强等优点使得嵌入式系统能够满足机载计算机的各项要求,成为当代机载计算机的主要实现方式。

Freescale公司推出的Power PC嵌入式处理器集成度高,接口丰富,应用广泛,在全球处理器市场上处于无可争议的领先地位。

Power PC处理器上电后会从其存储接口读取引导程序,来对处理器进行初始化,接着再从存储接口中读取操作系统和需要运行的应用程序,因而存储器是Power PC嵌入式系统中不可或缺的一部分。

FLASH已经成为了目前最成功、最流行的一种固态内存,与EPROM、EEPROM相比FLASH的读写速度更快,而与SRAM相比FLASH具有非易失、以及价廉等优势,因而绝大多数PowerPC嵌入式系统都采用FLASH作为其数据存储单元。

1 NAND FLASH与NOR FLASH

FLASH用于存储系统运行所必需的系统程序、应用程序和重要的数据,它的优点是掉电后其中的数据不会丢失。常用的FLASH有NOR型和NAND型两种。NOR FLASH是由Intel公司在1988年开发,以替代EPROM和E2PROM,彻底改变了原先由EPROM和EEPROM一统天下的局面。随后,东芝公司在1989年发布了Nand Flash[ 1 ]。

NAND FLASH能提供极高的单元密度,并且写入和擦除的速度也很快,是大容量数据存储的最佳选择[ 2 ]。但它的缺点也同样明显,NAND FLASH读取速度较慢,它的I/O端口只有8个,数据地址线共用,传送数据时,速度远远比不上NOR FLASH的并行模式。再加上NAND FLASH的逻辑为电子盘模块结构,内部不存在专门的存储控制器,一旦出现数据坏块将无法修正, 可靠性较NOR FLASH要差[ 3 ]。

NOR FLASH采用NOR SGC(Stacked Gate Cell)存储单元,接口都是单独的地址、数据和控制信号,读写方式为并行读写,便于直接读取,随机读取速度快,但擦除和写入速度较慢。NOR FLASH最主要的特点是芯片内执行XIP(eXecute-In-Place),这样应用程序可以直接在FLASH内运行,不必再把代码读到系统RAM中。NOR FLASH的传输效率很高,在小容量时具有很高的成本效益,不过在大容量时就显得力不从心。

以上这些特性使得NAND FLASH适合存储数据,而NOR FLASH适合存储程序。

本文接下来讨论的几种FLASH都属于NOR FLASH,用来存储嵌入式引导程序,操作系统等。

2 MPC8349处理器单板计算机设计

本文以MPC8349处理器单板计算机为例对PowerPC处理器的嵌入式系统FLASH设计进行分析。MPC8349嵌入式计算机主要应用于信号处理与数据计算领域,其系统功能框图如图1所示。

MPC8270嵌入式系统的硬件结构包括以下几个功能电路:电源及复位电路,时钟电路,处理器电路,存储器电路以及对外接口电路。

本系统中的串行接口、网络接口和PCI总线均采用MPC8349上集成的协议控制器来实现。

本系统中的存储空间包含以下几个方面:

DDR:采用4片16位256MB的DDR2芯片MT47H128M16HG

-3IT,以地址线共用、数据线拼接的方式为处理器提供了64位1GB的动态存储空间,还有1片连接ECC 校验位,进行校验,以上5片DDR2芯片作为整个系统的动态存储单元,为软件的运行提供空间;

系统FLASH:采用2片16位32MB的FLASH芯片,以地址线共用、数据线拼接的方式为处理器提供了32位64MB的系统FLASH,用于存储引导程序、操作系统等系统程序;

应用FLASH:采用2片16位32MB的FLASH芯片,以地址线共用、数据线拼接的方式为处理器提供了32位64MB的应用FLASH,用于存储简单的应用程序。

2.1 国内外主要FLASH选型差异

MPC8270嵌入式系统中我们总共选用了4片16位32MB的FLASH芯片。国内外先后有许多电子元器件厂家生产过这类FLASH芯片,他们大致相同,但选用不同的FLASH芯片在细节上有许多需要注意的问题。

2.1.1 扇区大小

这种规格的FLASH芯片最早是由AMD公司生产的AM29LV256,该FLASH的扇区大小为64KB。如今AMD的FLASH停产了,这种规格的FLASH芯片主要由国外的SPANSION公司和国内的国微公司进行生产,但是SPANSION公司和国微公司的FLASH扇区大小为128KB。

出于通用化考虑,由于不同类型的FLASH的设备ID是不一样的,因此我们可以在引导程序中通过读取设备ID来识别扇区大小。

2.1.2 SPANSION公司的两种FLASH芯片

SPANSION公司生产过两种8/16位可配置,32MB的FLASH芯片,它们的型号分别为S29GL256N11TFI01和S29GL256P10TFI010。这两种FLASH芯片的扇区大小,扇区总数,读写操作都是一致的。但由于在制作工艺上略有差别,使得它们在进行校验运算时有所不同。

FLASH芯片在擦除、写入等操作后需要采用toggle的方式进行查询,判断操作是否完成。两种FLASH的toggle算法最大的差异在于S29GL256N11TFI01为读两次之后判断toggle位是否还在变化,而S29GL256P10TFI010为读三次之后进行判断。如果没有按照正确的算法进行校验,在数据量比较小的时候或许也能使用,但进行数据量比较大的操作时经常会出现错误。因此也推荐使用读FLASH的设备ID号来区分不同的FLASH芯片,使用相应的算法。

2.1.3 国微公司的四种FLASH芯片

深圳国微公司对SPANSION公司的S29GL256N11TFI01芯片进行了国产化研制,质量等级为国军标级,校验算法与S29GL256N11TFI01一致,但是国微公司的FLASH芯片具有四种封装形式。

除了最初的SM29LV256M,国微公司还提供管脚二次成型的FLASH芯片,从芯片顶端出管脚的飞翼FLASH芯片,以及马上完成定型的塑封FLASH芯片。

由于前三种FLASH芯片均为金属封装,导致芯片质量较大,因此使用时建议在FLASH芯片的两侧点封高强度的胶加以固定,可以有效减少FLASH脱焊现象。

二次成型的FLASH芯片对管脚进行了处理,增加了应力释放环,用于分摊不同温度时芯片管脚处产生的应力。飞翼FLASH芯片由于其从芯片顶端出管脚的特性,可极大程度减少焊点处的应力,但由于暴露在外的管脚过长,容易在运输、使用过程中遭受外力造成管脚损坏,建议增加盖板进行保护。

2.2 PCB布局

对于FLASH芯片,由于其管脚非常细密,相对来说更加容易出现脱焊。我们对3种模块近两年产生的14起脱焊事件进行了分析,有11起脱焊都发生在距离处理器芯片较近一边的FLASH芯片上,仅有3起脱焊发生在距离处理器芯片较远一边的FLASH芯片上。

我们对其中一个模块进行了热仿真,环境温度为30℃,仿真结果见图2。

从上图中我们可以看出,处理器芯片是整个模块中最大的发热源。模块加电工作时处理器芯片附近的温度会非常高,不断地加电掉电产生非常大的冷热温差,使得靠近处理器芯片的FLASH受到很大的温度应力,导致脱焊。因此我们在进行PCB布局的时候应该把FLASH芯片尽可能远离处理器等发热量较大的芯片。FLASH芯片在走线的时候为了保证信号质量,不要从开关电源、晶振等噪声较大的芯片下方穿过。FLASH芯片的读周期时间一般在100ns左右,不属于高速信号,因此走线要求比较宽松,不需要严格等长。

2.3 FLASH芯片焊接

FLASH芯片如果采取回流焊,会使得管脚淌锡过少,容易出现脱焊。因此建议回流焊之后再进行手工补焊,增加管脚处的锡量。另外,FLASH芯片在维修、更换时一定要将芯片下方的印制板清洗干净,如果有残留的松香等杂物,会将FLASH芯片垫高,使得芯片管脚浮空,容易出现脱焊现象。

如果焊接国微公司金属封装的FLASH芯片,由于其自重过大,在震动时容易出现脱焊。因此焊接完成这类FLASH芯片时,需要在芯片的两侧点封高强度胶,对芯片进行固定。

2.4 数据保护

我们将引导程序存储在FLASH中,但是在使用过程中常常由于误操作,对存放引导程序的区域进行擦写,导致引导程序错误,整个模块无法启动,以至于我们重新需要从处理器芯片的JTAG接口来配置处理器并重新编程,对于一些装有壳体的模块十分麻烦。因此可以采取一些措施对我们的引导程序进行保护。

在FLASH芯片上有引脚WP#/ACC,当这个信号为低时,可以保护最后一个扇区不被擦写。但是最后一个扇区的地址为0xFFFE0000-0xFFFFFFFF,而PowerPC处理器的上电自启动地址为0xFFF00100,所以采用该方式不能保护引导程序。因此需要采用控制FLASH的写信号来完成保护,可以在FPGA中设置控制写信号使能寄存器,上电时为“1”。

当写FLASH地址0XFFF00000—0XFFF20000这段地址时,依据该控制寄存器来决定是否产生写信号。这种方法可以有效保护我们的引导程序不被误操作改写。

2.5 FLASH测试

FLASH一般有两种类型的测试:FLASH读测试和FLASH写测试。FLASH读测试通常将FLASH中的数据读取出来,与事先设置好的校验和进行比较,若比较结果一致则说明读取FLASH数据正常。FLASH写测试则是将测试范围内的数据擦除,再写入新的数据。写入完成后读取FLASH中新的数据,如果和需要写入的数据一致则说明FLASH写入数据正常。

由于FLASH写入数据时具有固定的写序列,如果在写序列执行过程中处理器收到中断,跳转到中断服务程序,等中断服务程序执行完毕之后再继续进行写序列会有可能会造成写入失败,因此在每一个FLASH写序列过程中需要关闭中断,等到写序列执行完毕后再使能中断。

传统的FLASH写测试一般的操作顺序为擦除单个扇区,写入数据,比较数据,擦除下个扇区。我们在实际应用中发现有个别FLASH芯片在写入文件时报错,但是对FLASH进行写测试却没有发现错误。对FLASH管脚进行检测时发现高位地址线桥连或者脱焊。高位地址线桥连或者脱焊使得FLASH芯片在对扇区内的数据进行读写操作时没有影响,但是在扇区选择时会发生错误。传统的测试程序是对单个扇区进行操作,无法检测出这类故障。针对这类问题我们对传统测试程序进行了改进,改进后的操作顺序为将所有测试范围内的扇区进行擦除,向每个扇区写入各自不同的数据,等所有测试扇区的数据全部写入完成后进行读取,再与需要写入的数据进行比较。改进后的测试程序不再局限于单个扇区,而是对整个测试区域进行读写操作,可以检测出高位地址线异常而产生的问题。

2.6 其他需要注意的问题

在对FLASH进行擦除或者写入操作过程中,如果因为突发情况导致模块掉电,会使得正在擦除或者写入的扇区中的数据不稳定。重新上电后该扇区中的个别数据会不断跳变,如果这时对FLASH进行读测试会报出错误。出现这类现象时只需要对该扇区重新进行擦除,即可消除故障。

3 结束语

由于航空航天领域对国产化的要求,我们在芯片选型时具有一些限制。但随着国内芯片厂家的发展,将有越来越多的国产芯片可供选择。S29GL01GP11TFI010等更大容量的NOR FLASH也将进行国产化研制,对此我们拭目以待。

参考文献:

[1] 周书林,邱磊,唐桂军.同时支持Nand Flash和Nor Flash启动的启动加载程序设计实现.科学技术与工程,2010(02).

[2] 张起贵,裴科,张刚,赵哲峰.基于不同类型Flash-ROM的Bootloader设计.计算机工程与应用,2007(33).

[3] 刘锦萍.闪存与数码相机.嘉兴学院学报,2006(S1).

作者简介:施辰光(1988-),男,上海人,助理工程师,研究方向:嵌入式技术。

猜你喜欢

嵌入式系统
办公自动化系统的设计
基于物联网项目驱动的嵌入式系统教学改革的研究与实践
嵌入式系统课程“中断、异常与事件”教学实践及启示
面向实践创新人才培养的嵌入式系统教学研究