MCU 故障模式:发生的原因以及如何预防

文摘   2024-11-06 07:00   上海  
设计师的作品获得成功很大程度上要归功于大学。不是因为设计师在实验室实验中了解到什么可能会意外炸毁电容器,而是因为设计师了解到墨菲定律会在你最意想不到的时候发生。你大学的时候可能花了很多时间玩魔兽世界并努力完成无尽的作业,所以你一直依赖你的那台电脑。

可能当时的电脑功能非常有限,偶尔弹出臭名昭著的 Windows“蓝屏死机”也很正常。虽然在玩魔兽世界游戏时被打断令人沮丧;但因为系统电脑崩溃而丢失数小时未保存的作业更会让你陷入巨大的恐慌。作为一名设计师,当你的微控制器在现场导致故障时,你可能会经历类似的恐慌。

微控制器故障模式如何影响系统
在嵌入式系统中,微控制器故障模式 (MCU) 可能比错过作业截止日期产生更严重的后果。 MCU 通常是支付机、医疗设备和安全系统等应用的核心。这些系统要求高稳定性,并且通常对系统故障率的容忍度很低。
导致故障的微控制器单元可能会导致操作完全停止。这可能会给用户带来不便或在关键应用中造成功能安全风险。安全机制极其重要。对于客户来说,不可靠的系统会影响运营能力并可能导致收入损失。对于设计师来说,数百种产品在现场不断导致故障,这对我们的自尊心是一个巨大的打击,并且会影响我们的声誉。
然而,指责无助于解决发生故障的微控制器问题。

微控制器失败的原因以及谁应该负责
可靠的嵌入式系统需要硬件设计师和固件程序员的共同努力。一些设计缺陷在开发阶段可能无法检测到,只有在部署后才会出现。在这种情况下,谁应该承担大部分责任?
在我们开始指责之前,让我们先看看可能出现故障机制的原因。
1. 内存堆栈溢出
微控制器的内存堆栈是其内部 RAM 的指定区域,用于临时使用。内存堆栈的大小是有限的,并且因不同的 MCU 而异。当固件程序员分配大于堆栈大小的变量时,运行时可能会发生堆栈溢出,并导致固件导致随机硬件故障。这也恰恰是虚拟原型可以发挥作用的地方,固件程序员可以观测并提前解决这一故障。
2. 非法指针
在 MCU 固件编程中,指针通常用于指示变量或程序函数的地址。声明和使用指针要求固件程序员遵守编程语言(通常为 C 语言)定义的严格语法。错误地引入非法指针可能会导致 MCU 尝试处理其有效范围之外的地址中的变量或函数。这可能会导致 MCU 崩溃。这也同样是虚拟原型中,固件程序员可以使用虚拟模型提前观测的事情。
3. 电压源不稳定
这是一个经常被忽视的因素,MCU 需要稳定的电源网络才能可靠运行。当 MCU 的电源不断受到外部干扰时,它可能会陷入故障模式。工作电压的下降可能会导致 MCU 行为异常或完全冻结。这也是虚拟原型可以发挥作用的地方,通过模拟电源的故障提前分析。
4. 电气干扰
无法处理电气干扰,尤其是来自继电器和电机的干扰,可能会导致 MCU 崩溃。在我之前的一个驱动简单直流电机的项目中,每次尝试反向驱动电机时,我的 MCU 都会失败。通过使用运算放大器增加其电气隔离,解决了这个问题。
5. 装配工艺差
有时,微控制器单元故障可能与硬件或固件工程师都无关。MCU 引脚上的低质量焊点可能导致不可预测的 MCU 行为。如果只有少数嵌入式系统出现故障,您可能需要开始调查制造商的工艺质量。

微芯片生产工厂
硬件和固件工程师都必须在设计可靠的嵌入式系统方面发挥自己的作用,而不是互相指责。践行良好的编程道德规范并提前规划内存分配是最佳实践。对于程序员来说,保持简单是减少错误代码的明智选择。
硬件设计师需要考虑硬件的使用环境,并为所有可能性做好准备。这意味着要遵守所有最佳的基本设计实践,并充分利用 PCB 软件的工具来测试设计。虚拟原型,可以提前帮你减少出错的风险。

软硬件协同设计 HW-SW Co-Design
欢迎后台留言,AI 客服全天在线。脱离物理硬件,开发测试和调试软件。基于虚拟原型的软硬件协同设计,提前一年实现产品上市创收,降低一半开发时间。
 最新文章