如何用低成本的ARM Cortex-M微控制器让家电变得更安全
自2007年起,家电厂商的所有新设计必须遵守IEC60335安全标准。为确保家电设备安全可靠,特别是设备故障不能威胁用户的人身安全,这套新标准涉及十分广泛的内容,从机械系统到嵌入电子元器件均有明确规定。
电子部分参照另一个标准,即适用于各种应用领域的IEC60730自动电子控制标准。对于嵌入式系统开发人员,附件H对于嵌入式系统开发人员尤为重要,因为该附件是关于可编程器件。白色家电通常使用多个微控制器:一个微控制器负责管理控制台,另一个管理阀门和电机控制。
根据设备故障导致的危险程度,该标准将软件分为A、B、C三类。如果家电安全不依靠软件,则该家电属于A类,如室内温控器或照明控制器。相反,如果软件用于防止安全隐患,如电子点火燃气灶归为C类。本文不探讨C类。电子控制系统防止不安全操作的家电多数属于B类,如洗衣机,其安全隐患与电控门锁或电机热关断有关。
IEC60730附件H的表格 H.11.12.7 列出了B类和C类软件需测试的微控制器元器件、需检测的故障和接受的安全措施,检测内容包括监视CPU(寄存器和程序计数器)、中断(处理和执行)和时钟频率,检验易失性存储器(RAM) 、非易失性存储器(闪存和 EEPROM)、外部通信以及外设。
这些检测均在微控制器引导过程中甚至在系统执行代码前完成,主要原因是RAM测试具有‘破坏性’,可导致初始化的变量损坏。
在RAM检测中,标准要求B类设备定期做单一位DC故障检测(如嵌入存储器固定故障或耦合故障)。因为多数入门级微控制器的SRAM无校验位,所以该检测必须由软件来完成。March算法通过限定数量的测试来发现这些故障,March C测试最适合B类(使用10N次测试,N为被测试存储地址的数量),但是March X(6N次测试)在某些特定情况也被测试机构接受。测试完成后,RAM存储器内容被清除(因此,又称为‘破坏性测试’)。
复位后执行March测试不会产生特别的问题。除略微降低开机速度外,没有什么实际缺点,因为嵌入式SRAM很小,开机速度降低甚至都不会被注意到。
相反,如果在运行期间重复这个测试,可能会产生很大的问题。首先,测试必须透明:应用无需特定的协议即可处理RAM,好像没有测试一样。实际而言,这增加了下列条件:
· 测试必须是一个中断处理程序(ISR),且给予最高的处理优先级,可禁止应用程序在测试过程中访问数据。
· 必须配备缓存,以便提前备份被检验的RAM内容,最后在应用任务重新运行前恢复RAM内容。显然,也必须定检验证缓存。
其次,应用任务暂停时间不宜过长。该测试通常分为若干个小测试,以限制占用顶层任务的时间。一次测试的地址不得少于3个连续地址(这是耦合故障测试覆盖率的硬性要求),这表示不少于30次连续的March C算法读写操作。
虽然实际应用证明该解决方案效果不错,而且在业界十分流行,但还是存在不少的缺点。
我们先从软件工程角度剖析这些问题。结构化编程的优点略过,只分析相关的局限性问题:
· 封装问题:C模块必须将部分内部变量提高至全局变量,不再接受编译器参照跨模块访问进行的完整校验。
· 低任务隔离度和低模块化:测试对每个安全关键的软件模块强制进行访问测试,使增加新功能变得更加复杂。
如果将数据损坏的机率与读写次数联系在一起,该解决方案的数据损坏风险是比较高的。虽然逆向冗余存储安全关键变量可降低风险,但同时也会扩大存储器B类测试的容量。
从微控制器资源角度看,测试代码占用ROM和RAM空间,以及CPU带宽:除正常处理任务外,如果内核临时无法吸纳测试负荷,就必须在家电运行关键阶段终止测试。
最后,运行时RAM校验会影响实时响应性(可能延迟甚至暂停其它中断处理程序),并可能与低延时或紧急任务要求冲突。测试程序的代码长度无法最小化:耗合故障测试对被测连续存储地址的数量有下限要求。如果软件必须管理地址解扰,使其符合存储器物理布局,则复杂度更高。图1所示是软件如何在运行时处理部分RAM测试。
IEC60730标准另提供一个由硬件校验位组成的解决方案。虽然这是一个标准的DRAM存储器流程,但是很少用于通用微控制器。不过,先进的芯片制程节点使得该方法更具成本效益。
硬件测试解决方案的本质是在每个存储地址增加一个校验位:存储器每写一次,计算一次校验位,并将校验位计算值与数据存储在一起。当读取数据时,同样计算校验值,然后与参考值对比,如图2所示。如果数值不同,无论是数据损坏还是校验位损坏,中断
- 小型低损耗智能集成模块应用方案详解(07-12)
- 采用Cortex-M3单片机设计的WiFi物联网小车(10-27)
- 芯在路上:盘点8位和32位微控制系列(05-15)
- 探索ARM Cortex-M7核心:为明日物联网预做准备(07-23)
- IoT开发者必须关注的6大ARM新IP和技术成果(10-11)
- 为什么说Cortex-M是低功耗应用的首选(06-28)