板载故障记录原理解析

发布时间:2015-3-10 11:34    发布者:designapp
关键词: 电路板故障 , OBFL , 基线记录 , OBFL软件
在用户现场或者在实地出现电路板故障的原因有很多种,在故障现场重现故障对开发人员而言,仍然是一个挑战。为帮助排除故障,在出现电路板故障时,应记录并存储所有的电路板环境变量和故障信息,以便日后确认电路板故障的根本原因。本文介绍了一种添加板载故障记录(OBFL)功能来协助重现从现场退回的电路板故障的结构化方法。本文重点强调了OBFL的重要性,通过定义OBFL记录对故障日志数据进行了分类,讨论了持续存储中故障日志的结构,并概括了存储和检索OBFL数据所需要的系统软件支持。
OBFL概念
具有OBFL 功能的电路板经配置后,可以把故障相关数据存储在非易失性存储器中,并可在日后加以检索和显示以用于故障分析。这些故障记录有助于电路板故障的事后检查。
要实现OBFL系统功能,需要同时使用软硬件。在硬件方面,需要:a)确定给出电路板件故障信息的板载OBFL资源(如温度感应器、存储器、中断资源、电路板ID,等等);b)在电路板或者系统出现故障时用以保存故障信息的板载非易失性存储。OBFL软件的作用是在正常的电路板运行以及电路板故障期间配置电路板变量并将其作为OBFL记录存储在非易失性存储中。OBFL软件还应具备一定的智能,能够分析多项出错事件、记录和历史故障记录,以逐步缩小范围的方式确认故障原因。这种分析可以大大减轻故障排查工作,否则将有大量的OBFL记录需要故障分析工程师手动核查。




图1.0所示的是具备OBFL功能的嵌入式系统分层架构。OBFL层位于应用层和操作系统之间,既可直接访问硬件,也可使用操作系统的API与硬件进行通信。这些由OBFL层提供API由应用层调用,执行三种主要任务:
OBFL资源和配置:该子模块提供API,以便从预定义的OBFL资源获取OBFL变量的运行值。应用软件在中断处理程序中调用这些API。另外,当OBFL资源遭遇故障状态,需要记录值的时候,也会调用这些API。资源管理器提供的一个API将由应用软件定期调用,以便从OBFL资源收集OBFL变量。该子模块还提供用于配置OBFL资源的API。
OBFL显示:该子模块提供多个API来检索特定的OBFL数据。这些API访问非易失性存储,检索OBFL记录,并以多种格式提交存储的数据。这些API均链接到应用层的命令行实用工具上,这样在排除故障的时候,故障分析工程师就可以输入命令来查看电路板故障或者系统崩溃前的事件顺序。
OBFL记录保持器:该子模块负责组织由多种基线、事件日志和消息日志记录组成的OBFL记录。根据要求,该记录的每一条都有时间戳。该记录在存储数据的时候以时间为线索。
OBFL记录:
定义板载故障记录(数据)对任何系统来说都是非常重要的,因为这一步决定了哪些参数将被获取并登记到非易失性存储中,以协助后续的故障排查工作。所有的OBFL记录都有时间戳,可大大便于掌握电路板故障发生之前的事件顺序。在定义OBFL记录的时候进行详细的、深思熟虑的规划,可以缩短确定故障根本原因的响应时间。图2显示了如何把OBFL记录进一步划分为三个类别:
(1)基线记录
(2)事件记录
(3)消息记录




基线记录:
OBFL基线记录的创建独立于任何电路板故障。OBFL系统应一直保持一个初始基线记录和至少一个近期基线记录。在完成对OBFL的系统现场配置、首次成功将电路板件投入使用之后,就会立即生成初始基线。首次创建近期基线记录的时候,将使用初始基线记录。创建近期基线记录的目的,是为了获取OBFL资源的近期值。随后每次成功的电路板复位都会创建后续的基线。OBFL还会要求提供存档的旧基线。任何稳定的基线都会被标注为“优良”基线,并在故障排查过程中用作参考基线。如果没有优良基线记录,初级基线记录将用作参考基线。
基线记录将获取特定的软硬件配置详情,并存储在非易失性存储器中。基线记录的硬件部分包括电路板配置数据详情,如机架编号、电路板件的插槽号、序列号、子卡标识详情、FPGA和ASIC修订号等。该部分还应该存储诸如SRAM/SDRAM/DDR这样的板载存储器类型、序列号和配置详细信息。BIOS版本、固件版本、OS详情和应用软件版本应存储在软件基线记录下。该记录在缩小由近期软硬件升级造成的电路板故障范围时非常有用。
基线记录的第三部分存储电路板环境变量值。任一存储的电路板环境变量都存放有近期的“N”个值,最大实际值和电路板环境变量的最低允许值。环境变量包括电路板电源部分参数,如电压电流以及来自电路板上一个或者多个感应器的温度读数。
电路板环境变量的值定期采集、存储为近期值,并同最大允许值进行比较。如果采集的值大于最大允许值,将采用当前的时间戳更新环境错误事件(Environment Error Event)记录。此外,电路板一般有多个电压源和温度感应器。温度应定期记录(比如每隔30分钟),而电压数据可以不需这么频繁(比如每隔60分钟)。

事件记录
OBFL事件记录负责存储由板载存储器故障、系统复位、意外事件、中断错误或者电路板环境错误导致的硬件故障事件迹象(如电路板崩溃)。OBFL事件记录可以分为下列几类:
存储错误:通常,SDRAM或者DDR错误分为可纠正的错误和不可纠正的致命错误两种。可纠正错误可以通过存储器中的其他硬件逻辑来查找并纠正单比特ECC错误来加以纠正。虽然这种错误不具有致命性,但它会给系统性能造成一定影响,因此记录这种事件有助于排除系统性能错误。此外,记录可纠正错误还可以就将来可能出现的致命错误提出告警。对于属于不可纠正致命错误的多比特存储错误,在事件日志中应该登记错误地址位置、预计数据和其他存储详细信息。
温度错误:电路板附加的多个温度感应器能够定期提供周边温度值。每当读取的温度值超过了基线记录中设定的允许温度范围,就会在事件记录中记录一个温度错误。事件记录更新内容包括温度感应器ID、温度错误和适当的允许限值。
电压错误:电路板的电源部分能够提供不同ASIC需要的各种电压。电源部分的任何部件故障都会影响所需要提供的电压。电路板应该具备自动测量电压的功能,且电压读取应定期进行。实际电压与基线记录中定义的允许电压范围之间的任何偏差都应向事件记录报告。
总线错误:一般电路板上的外设总线或者IO总线都用来连接CPU与外围设备。该总线上的噪音会导致地址相位或者数据相位错误。外设总线的主设备或者目标设备设计用于检测这类错误。如果某设备检测到地址错误,它就生成系统错误消息。如果检测到数据错误,它就生成奇偶校验错误消息。由于总线上的噪音,任何SoC上的内部总线也会生成系统错误和奇偶校验错误消息,并发送到CPU中断引脚。更新事件记录的内容应包括出错详细信息以及设备ID,以便进行故障分析。
中断:中断错误指由外部硬件源、内部外设、ASIC中断或者软件中断生成的事件,用于通知CPU出错消息。面向全部出错的中断处理程序应在OBFL事件记录中记录中断号和中断源。
复位:系统故障或者故意的手工复位均会导致电路板复位。每次电路板复位都应记录下来,并加上时间戳。用于消除故障的ASIC复位也应记录下来。
OBFL事件:OBFL支持的关键操作,如初始基线和优良基线的创建、OBFL记录的停用和启用、日志文件的删除等都是重要的事件并应加上时间戳,以OBFL事件的方式存储起来。
消息记录:该OBFL记录为所有因系统软件触发的故障提供加有时间戳的详尽消息记录,包括系统告警、告警通知、告警消息、系统错误详细信息。消息记录可以分为多个层级:
· 告警(1级):本类记录的是需要立即注意的系统告警。
· 错误(2级):在系统软件发现错误的情况下,完整的协议栈踪迹、处理器寄存器转储、ASIC寄存器转储都会以消息日志的方式加以记录。内存泄漏错误也应随同所要求的存储详细信息予以报告。任何固件故障都应生成调试信息并记入本记录中。
· 调试(3级):这是一种调试模式记录。启用后可以给功能的进入和退出提供软件模块跟踪信息。这样有助于逐步缩小故障范围。在出现故障的情况下,如果触发了诊断软件,所有来自此项功能的消息都应该存储在调试帮助分类中。
OBFL软件支持
本部分用于描述系统OBFL软件架构。在存储器中组织OBFL记录以及进行方便的故障记录信息检索都需要得到OBFL系统软件的支持。如图3所示,OBFL软件架构在广义上可以划分为下列块:




. OBFL命令行:支持显示管理器(Display Manager)的命令行界面(CLI)有助于检索OBFL记录。使用命令行界面还可以完成对OBFL资源的配置和对OBFL基线记录、事件记录和信息记录的管理。
· OBFL配置API:OBFL软件提供的API可为每个电路板环境变量的各种资源分配唯一的OBFL资源ID。软件还提供配置支持功能,让每个资源ID都能够得到配置。电路板上的温度感应器均可配置允许的温度范围。每个电压源都按照最高与最低电源电流要求加以配置。
· OBFL记录和文件管理:本模块用作OBFL记录保持器。其功能包括自动创建基线记录和存档旧基线等。另外它还提供API,支持手动创建和删除基线文件。用于清除不需要的消息日志文件的支持功能有助于释放空间,存储更新的日志。本模块还提供启用OBFL、停用OBFL、显示所有以及特定事件或消息记录等其他功能。
· OBFL资源管理器:该软件模块的功能是提供从预定义的OBFL资源获取OBFL变量运行值的API。如果遇到OBFL资源错误情况,应用软件可以在中断处理程序中调用这些API。
· OBFL显示:这是OBFL的一项非常重要的特性,可以用来显示存储在非易失性存储器中的OBFL记录。
· 使用资源ID/分类:输入OBFL 后,显示器将以表格格式显示最近的N项历史读数,每项都带有时间戳。它还能显示每项错误被资源报告的次数、错误量以及资源的配置详情。同时显示的还有运行在OBFL资源分类上的命令,比如OBFL温度和OBFL电压。输入OBFL Display ,可以在特定的分类中列出所有的OBFL资源。
Example of OBFL Display Feature using Resource Category:使用Resource Category命令显示的OBFL特性示例:




        使用启动/终止时间:本命令显示给定时间范围内加有时间戳的事件记录和/或消息记录。检索该数据的命令格式是OBFL DISPLAY ALL 。该命令可以显示时间记录数据库和消息记录数据库中所有按时间顺序排序的信息。输入OBFL EVENT ,可以显示所有在时间界限之间发生的事件。

使用调试选项:该特性提供智能调试报告。执行本命令后,将查找事件或者消息日志中最近的故障,找到故障分类,记录相关的时间戳,锁定任何告警或者与之有关的任何其他错误分类或者消息日志分类。该特性还能对类似错误或者消息分类的历史数据和存档数据进行比较,并重点显示通过比较最近基线文件与初始基线文件和优良基线文件而得出的差异。
· OBFL显示调试特性:




OBFL定期任务:本模块提供用于OBFL资源管理的API,并定期由应用软件调用,以采集来自OBFL资源的OBFL变量。
NV Memory Store/recall and RTC: This is explained in the section below along with NV hardware functionality.
NV存储器存储/调出和RTC:下文将对非易失性硬件功能进行详尽阐述。
非易失性存储器:
所有OBFL记录及其时间戳都保存在非易失性存储器中,以用于后续的故障分析。这种存储器的非易失性性质可以在电路板掉电后保存故障日志。闪存、EEPROM、FeRAM和NVSRAM等多种存储技术都具有非易失性功能。其中最理想的是NVSRAM,因为它们由SRAM单元和对应的非易失性单元共同构成。NVSRAM的读写操作可提供与SRAM一样高速访问性能。
在正常操作情况下,连接到NVSRAM的VCC用来供电。NVSRAM提供达自动存储(Autostore)操作使用连接到存储器的电容在掉电或者电路板崩溃的情况下提供电力。这样,系统就可以在电路板全面出现故障之前存储最近可用的OBFL数据。在电路板加电期间,非易失性部分的存储内容将自动转移到SRAM部分或者存储器中。
NVSRAM还提供软存储和调出特性。这些特性可以让OBFL软件随时在存储器的非易失性部分存入OBFL数据。OBFL软件可以使用软调出功能在故障现场抽取数据。在给每条记录加时间戳的时候,NVSRAM存储器都使用实时时钟(RTC),这样故障事件的顺序就可以得到确认。






本文地址:https://www.eechina.com/thread-146658-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表