宋凯林,龚定宇
(湖南工程学院 电气与信息工程学院,湘潭411104)
在当前海量存储的大数据时代背景下,轨道交通行业主流设备需要提前布局平台存储性能用以支撑列车庞大的运行数据量,从而引入了高性价比的NAND Flash这种大容量、非易失性存储半导体器件.FLASH为非易失性存储半导体器件[1],根据单元存储电路结构的差异,包含NOR和NAND两类.由于两者特性的差异,一般地,NOR具有高可靠性、随机存取速度快的特性,故NOR常用于进行程序代码的存储,但存储容量小,性价比较低;而NAND具有顺序读取性能好、集成密度高的特性,故NAND常用于大数据量的存储,性价比较高.基于上述考虑,平台引入镁光micro的一款NAND作为系统存储器件,以应对未来可能的平台应用扩展需求,满足设备大数据布局的需求.
于是NAND该类存储器件的寿命、数据保持等成为设备系统可靠性的一个重要指标.通过研究NAND的存储机理及其生产工艺,该类存储器件本身存在一个固有缺陷[2-3],会引发设备系统不可恢复性的启动失败的故障.类似的设备故障对于轨道交通这种特殊应用行业的管理机制(封闭、少人化甚至无人化)而言,风险巨大且不可控,甚至是致命的.
本文旨在满足系统需求的前提下,研究整个平台的引导运行机制,针对NAND的固有工艺缺陷提出一种新型的系统启动设计方案,从数量级提高整个系统的可靠性和稳定性,充分保证该类设备的特定需求.
硬件架构上,目标设备作为某系列车型主流的牵引传动平台,基于德州仪器TI公司的OMAP(DSP+ARM双核异构)处理器进行研发,引入高性价比本地大容量存储NAND Flash,可供系统后续功能的可扩展性,比如设备的故障诊断[4]、专家远程诊断系统PHM(Prognostic and Health Management)等,如图1所示.
图1 平台硬件架构图
软件架构上,为保证控制平台的数据交互实时性,采用vxWorks这种硬实时的嵌入式操作系统,借鉴以往应用经验,平台软件架构初步确定为:1级RBL(ROM BootLoader)+1级UBL(User Boot-Loader)+1级UBOOT(the Universal BootLoader)+1级vxWorks(Kernel).
整个系统中的软件正常启动流程,如图2所示,可概括为:
图2 软件系统启动流程图
(1)系统上电,OMAP加载RBL至片上RAM中并运行;
(2)RBL将UBL从本地存储器件NAND中,解析并加载到片上RAM中,然后跳转PC,将CPU控制权移交给UBL;
(3)UBL运行后,采用特定校验算法将UBOOT从NAND中校验解析后,搬移到片外DDR中,然后再一次将CPU处理器控制权移交给UBOOT;
(4)UBOOT目标是构建一个人机交互系统,该系统在NAND的部分空间上搭建Yaffs文件系统,采用硬件On-Die ECC校验算法将内核以文件的形式存储,UBOOT运行后,会自动运行预设的脚本,将vxWorks从文件系统中解析搬移到DDR中;
(5)内核启动完成后,重新挂载Yaffs文件系统,再将相应的系统应用程序加载运行.
可靠性上,系统启动所需核心系统程序都存储于NAND中,意味着存储在其内的相应二进制目标码不能出错,否则将引起系统启动失败.根据NAND数据存储机制可知,在写入数据之前必须先擦除成全F状态(也就是对单元存储cell电路进行充电).经过长期应用实践并研究NAND现有制造工艺,发现NAND存在一个固有缺陷:单个存储cell偶尔会发生1变成0,也就是cell电容会缓慢放电导致所谓的位反转(bit flop)造成数据的错误和丢失.所以设备经常会随着时间的推移而出现故障:系统中的程序因位反转被破坏,尤其是系统启动程序的损坏,直接造成设备启动失败且无法维护,其影响无疑是灾难性的.
平台硬件架构采用NAND作为系统存储器件,存放于NAND中的系统程序就会有很大损坏风险,所以必须解决NAND带来的风险,确保系统的完整性和可靠性.鉴于NAND的位反转,首先软件上可以考虑对存储数据增加ECC校验机制[5-6],如采用软件校验、硬件校验.两者会在程序运行的时间度量上有所区别,共同点是对数据进行校验,将校验能力范围内的错误数据修复,否则数据校验失败;与此同时,大量工程实践经验表明无论数据的ECC校验算法功能如何强大,数据总在一定时间内发生失效,而关键该时间长短通常无法满足设备的设计需求.一般地,设备平台系统由操作系统和应用程序组成,若应用程序被破坏,只需要简单通过对应以太网等类似的维护端口进行维护,操作简单便捷;若操作系统一旦损坏,则只能通过特定仿真器去维护,而轨道交通行业设备运行现场环境特殊,类似应用操作是不允许的.综上所述,确保操作系统的完整性和可靠性就成为了最根本的需求.
本文基于海量长期的设备现场运行数据以及NAND的位反转特性研究基础上,从软件层次上提出一种全新的系统软件架构,如图3所示:
图3 多级冗余设计方案图
(1)研究RBL(OMAP出厂固化程序,采用1bit校验算法)程序运行机制,新增集成一个补丁至UBL,该补丁可将RBL最大冗余启动UBL级数扩充到32级.主控处理器上电复位后,读到有效的冗余补丁后,RBL启动机制自动替换为32级冗余启动UBL(读取第1级UBL若失败,RBL会读取第二级UBL,直至第32级UBL);
(2)UBL(采用OMAP芯片自带硬件4bit校验算法)在片上RAM中加载运行后,读取有效UBOOT(参考RBL冗余机制,将UBL冗余启动UBOOT的级数暂设定为32级),整个UBL运行过程,如图4所示;
图4 UBL程序运行流程图
(3)UBOOT加载至外接DDR运行后,挂载文件系统并读取对应文件夹下的内核镜像(UBOOT同样设置为32级冗余启动Kernel,UBOOT采用NAND自带硬件on-die ecc校验),并将Kernel加载到DDR中运行,最终加载运行App应用程序.
在确定多级冗余备份系统架构方案后,需要进一步定量分析冗余系统的备份“级数”,并与传统系统架构进行对比来评估对应系统可靠性指标.针对设备采用新型软件系统架构后,本文通过引入表征特性的逻辑门类型,采用故障树分析法FTA(Fault Tree Analysis)[7-8]来模拟真实设备运行状态的转移,从软件层次上进行系统可靠性分析预测.
在新型系统架构方案中,系统启动失败事件的主要相关因素有三个:A表示UBL启动失败,B表示UBOOT启动失败,C表示内核启动失败.现假定三者冗余级数分别为m,n和s,通过研究分析可知能够导致系统启动失败的有以下几种情况:
(1)UBL、UBOOT以及VxWorks内核之间为“或门”关系,即只要A、B、C三者中只要有一个环节失败,系统就会发生故障;
(2)A表示的UBL启动环节中,只要在m级UBL中有1级是完整正常的情况下,A环节就能正常,只有m级全部损坏,才会引发系统故障;
(3)B表示的UBOOT启动环节中,只要在n级UBOOT中有1级是完整正常的情况下,B环节就能正常,只有n级全部损坏,才会发生系统故障;
(4)C表示的Kernel内核启动环节中,s份镜像内核文件只要有一份是正常,系统能够正常启动.
假设各个模块的失效事件是相互独立事件,令NAND每个block中因位反转导致数据出错的概率为Pb(该概率会随着时间发生改变),已知UBL只占1个block,而UBOOT占2个block,Kernel内核占15个block,根据上述分析,首先将系统故障进行模块化得到独立的静态子树,建立该系统的FTA模型[9-10],如图5所示:
图5 多级冗余架构FTA分析图
(1)1级UBL出错的概率为:Pb,则UBL启动失败的概率为:
(2)1级UBOOT出错的概率为:1-(1-Pb)2,则UBOOT启动失败的概率为:
(3)1级Kernel内核出错的概率为:1-(1-Pb)15,则内核启动失败的概率为:
综上分析,新老系统架构启动失败的概率为:
针对上文中故障树分析法FTA提出的系统可靠性数学模型,本文采用2016版MATLAB进行仿真,通过对仿真结果研究分析可得出以下结论:
(1)随着时间的推移,当block的失效概率在正常的范围之内(Pb不超过1%,实际应用时对NAND相关项点会要求更严苛)慢慢增加时,新型软件架构在冗余级数m=n=s=32时,能够确保系统可靠运行,如图6所示.
图6 不同P b位反转概率下系统失效趋势
(2)实际工程应用中从节约UBL所占存储空间的角度出发,基于(1)中的结论,在n=s=32时,将m作为单独变量进行考虑,从仿真结果来看m=4时,系统的失效概率趋于稳定,达到目标要求,如图7所示.
图7 不同UBL冗余级数m下系统失效趋势
(3)从节约UBOOT所占存储空间的角度出发,基于(2)中的结论,在m=4,s=32时,将n作为单独变量进行考虑,从仿真结果来看n=6时,系统的失效概率趋于稳定,达到目标要求,如图8所示.
图8 不同UBOOT冗余级数n下系统失效趋势
(4)基于上述结论,在m=4,n=6时,将Pb作为变量,从仿真结果可以看出Kernel冗余级数s在s=5时,系统的失效概率趋于稳定,达到目标要求,如图9所示.
图9 不同Kernel冗余级数s下系统失效趋势
(5)综合上述结论,m=4,n=6,s=5时(也就是冗余系统架构可采用4级UBL+6级UBOOT+5级Kernel),在确保系统可靠性的前提下,能够最大化系统存储空间利用率.通过对比,当block失效概率在正常范围内时(Pb不超过1%),传统软件架构系统的系统失效率远远超过冗余软件架构系统,如图10所示.可见本文提出的冗余架构系统是可靠的,对嵌入式设备的可靠性的提升是有效的.
图10 新老系统架构系统失效趋势对比
(6)从表1实验仿真数据的统计结果来看,当NAND的Pb越小时(处于正常位反转失效范围内),采用新型的冗余软件架构的嵌入式设备稳定性越高,相较于传统软件框架优越性也越明显.
表1 两种架构系统可靠性数据对比
(7)从反向结论出发,若该类设备使用NAND作为系统存储器件,并采用本文提出的多级冗余系统架构后,在正常的设备周期内(也就是正常的位反转概率Pb所对应的正常时间范围),系统的可靠性依旧无法满足,可以初步得出存储器件不合格的结论,可进行对应的芯片失效分析.
本文针对设备采用NAND存储器件存在系统风险的工程应用现象,提出了一种全新的冗余软件系统架构,并通过故障树分析法FTA进行了系统可靠性分析及仿真验证,用少量存储空间换取系统可靠性大幅度提升.目前该方案已经应用于中车某科研院所旗下产品中,包括轨道交通行业以及光伏、风力、空调等新能源领域行业的某型号的控制变流器平台.据不完全统计,该技术方案每年约产生高达上百万的经济效益,而且有望进一步在其他类似工程领域推广应用.