tag 标签: 稳定

相关博文
  • 热度 31
    2014-10-19 10:55
    1499 次阅读|
    1 个评论
    汽车电子的容错处理 随着新能源汽车的逐步上路,车上EMC状况将是一个巨大挑战。软硬件方面都应采取一定的措施提高系统容错性能。下面是笔者的一些经验整理,希望能起到抛砖引玉之作用。   在实验室验证原型的时候,通常地我们只关注功能。当从原型转向产品时,我们需要更多地考虑稳定性——在极端情况下,我们可以允许车不动,但是绝不允许车乱动。 容错的定义 如果一个系统在存在故障的情况下仍然能够正确运行,那么这个系统就是容错的。 这里“正确运行”,最低要求就是系统仍然可控。当然,在某些情况下可能会导致系统性能下降——有时候这并不算是错误,而是事前控制的一种策略。   故障基本类型与检测 1)            永久性故障: 比如 MOS 管被击穿、继电器烧结等物理损坏。这一类故障通常可以在系统启动过程中被检测出来,而一旦在常规过程中发生就往往会造成系统严重错误甚至事故。检测方法常见为增加硬件回检功能,便于处理器尽早地做出动作抑制错误。 2)            间歇性故障: 常见的线束接触不良导致在振动过程中信号频繁跳变。这一类故障可以说是最为令人烦恼的。大多数情况下系统不应该随着间歇性故障频繁地切换状态,那么这就要求检测机制具有“消抖”特性。 3)            瞬时故障: 比如 ADC 在继电器动作期间采样,电源的波动导致采样偏移。这一类故障通常可以通过添加“限幅”环节进行检测。并且在大多数系统中,由于系统固有的时间常数较大,这些瞬时故障造成的瞬时错误尚未充分体现出来就已经被抑制。   容错的基本思想 1)          容错技术的实现,最基本的就是“冗余思想”,包括: 2)          硬件冗余,例如卫星上的双机备份系统。 3)          时间冗余,“消抖”处理也可以认为是一种时间冗余措施。 4)          信息冗余,例如将系统状态变量保存到多个不同的 RAM 地址,并在使用前先进行数据对比、筛选。 5)          程序冗余,例如在 ROM 中放置一套备用程序。当引导模块检测到主程序异常时就尝试切换至备用程序。   容错技术 1)          数据校验: 如同 RAM 存储器中常见的奇偶检验、 ECC 校验技术一样,我们也可以在软件中对关键变量生成相应的校验码(甚至是纠错码)。每次对关键变量的访问都需要处理校验码,虽然增加了 CPU 负担,但是可以获得很好的系统稳定性。 2)          多样本比较:通过不同的通道(途径)采集同一数据,并比较这些数据的一致性。 3)          多版本仲裁:通过不同的算法或者模块去计算同一输出,并比较这些输出的一致性。 4)          过程监控:适用于那些具有相对固定控制流的系统。该方法类似于“令牌”法则,前一个控制节点向后传递“令牌”,后一个控制节点收到正确的“令牌”后才能执行动作。 5)          周期自检:也就是系统周期性的停机挂起,然后检查错误,并恢复运行。 6)          错误捕获:通过硬件或者软件,在那些看似不可能出现错误的地方(逻辑不可达到)放置监控模块。以便当这些错误发生时可以向上报告异常,并尝试恢复正常的时序。   =========================== NO MORE =================================  
  • 热度 24
    2014-2-7 15:09
    1843 次阅读|
    1 个评论
    最近发现公司生产部一批某型号产品经过高温老化后,很多机子都出现问题,某项功能有时能工作,有时不能工作,导致这批机子只能暂停生产。问题是由机子里一块当数据中继的电路板引起的,这块板子负责收集各个模块采集的数据,然后通过SPI发给主机。出现问题的时候,各个模块的数据无法送达主机。 由于最近由我来维护同一系列的机型,于是就被派去调查和跟进。在生产部拿了一台问题表现最严重的机子,出问题的电路板一直无法工作,板子用的MCU是NXP的LPC2364,用示波器测量,IO口没有了正常的输出,外部复位也无效,而晶振起振正常。因为程序以前使用很正常,初步排除了程序问题。难道是芯片坏了? 进一步检查,发现整机刚开始上电的几秒内,那片MCU是可以工作的,然后就没有任何输出了。试了外部复位,也没有任何作用。以往生产部门遇到这种情况的时候就直接更换芯片,就可以用了,但是出现这个问题的概率是比较小的。现在90%的机子都出现问题,难道NXP的某一批次的片子出现问题?这样的怀疑也站不住脚,人家NXP不可能把不合格的芯片卖给客户,否则不是那石头砸自己的脚吗? 一切还是得从硬件的角度出发,根据自己玩FPGA的经验,整个芯片的都停止工作,很可能是时钟模块出现问题,比如内部时钟太快就会导致时序紊乱,从而导致内部逻辑的错乱,这时候如果复位信号也是同步复位的话,恐怕连外部复位也无效了。 由于程序是别人写的,MCU主频确实是有一点超频了。外部晶振是18.432MHz,内部PLL经过了16倍频,然后4分频,得到73.728MHz的CPU主频,确实比芯片手册上标的72MHz的主频上限要高1.728MHz。我们可不能小看超出的这一点频率,如果NXP公司把72MHz当做是规定工作温度范围内的最高频率Fmax,那么在72MHz之内系统能达到时序要求,超出之后就不一定达到时序要求了,在这种情况下工作是很危险的。这个跟我们在设计FPGA的时候就要保留一定的时序余量是一样的道理的。 抱着这样的假设,我把PLL调整为18倍频,5分频,得到66.3552MHz主频,不影响程序的其他功能。重新烧写之后,果不其然,板子可以正常工作了。拿到老化箱做45°C的老化之后仍然正常工作。这就验证了之前的假设,超频导致MCU工作不稳定甚至死机。 经过这一次的DEBUG之后,要在这方面多加注意了。产品要稳定,超频需谨慎啊!
相关资源