如何用低成本ARM Cortex-M微控制器让家电变得更安全

发布者:温柔花香最新更新时间:2013-06-05 来源: 21ic关键字:低成本ARM  Cortex-M  微控制器 手机看文章 扫描二维码
随时随地手机看文章

自2007年起,家电厂商的所有新设计必须遵守IEC60335安全标准。为确保家电设备安全可靠,特别是设备故障不能威胁用户的人身安全,这套新标准涉及十分广泛的内容,从机械系统到嵌入电子元器件均有明确规定。

电子部分参照另一个标准,即适用于各种应用领域的IEC60730自动电子控制标准。对于嵌入式系统开发人员,附件H对于嵌入式系统开发人员尤为重要,因为该附件是关于可编程器件。白色家电通常使用多个微控制器:一个微控制器负责管理控制台,另一个管理阀门和电机控制。

根据设备故障导致的危险程度,该标准将软件分为A、B、C三类。如果家电安全不依靠软件,则该家电属于A类,如室内温控器或照明控制器。相反,如果软件用于防止安全隐患,如电子点火燃气灶归为C类。本文不探讨C类。电子控制系统防止不安全操作的家电多数属于B类,如洗衣机,其安全隐患与电控门锁或电机热关断有关。

如何用低成本的ARM Cortex-M微控制器让家电变得更安全

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模块必须将部分内部变量提高至全局变量,不再接受编译器参照跨模块访问进行的完整校验。

· 低任务隔离度和低模块化:测试对每个安全关键的软件模块强制进行访问测试,使增加新功能变得更加复杂。[page]

如果将数据损坏的机率与读写次数联系在一起,该解决方案的数据损坏风险是比较高的。虽然逆向冗余存储安全关键变量可降低风险,但同时也会扩大存储器B类测试的容量。

从微控制器资源角度看,测试代码占用ROM和RAM空间,以及CPU带宽:除正常处理任务外,如果内核临时无法吸纳测试负荷,就必须在家电运行关键阶段终止测试。

最后,运行时RAM校验会影响实时响应性(可能延迟甚至暂停其它中断处理程序),并可能与低延时或紧急任务要求冲突。测试程序的代码长度无法最小化:耗合故障测试对被测连续存储地址的数量有下限要求。如果软件必须管理地址解扰,使其符合存储器物理布局,则复杂度更高。图1所示是软件如何在运行时处理部分RAM测试。

IEC60730标准另提供一个由硬件校验位组成的解决方案。虽然这是一个标准的DRAM存储器流程,但是很少用于通用微控制器。不过,先进的芯片制程节点使得该方法更具成本效益。

硬件测试解决方案的本质是在每个存储地址增加一个校验位:存储器每写一次,计算一次校验位,并将校验位计算值与数据存储在一起。当读取数据时,同样计算校验值,然后与参考值对比,如图2所示。如果数值不同,无论是数据损坏还是校验位损坏,中断或异常信号线都会置位。处理器内核将使用一个专用安全中断处理程序处理错误,并关闭家电的电源。第二步,内核可能重启应用(热复位)或停止家电运行,同时显示检修代码。

该解决方案的优势十分明显。B类RAM校验变得完全透明:

· 不影响软件开发方法

· 不必开发某一个微控制器厂商专用的测试程序,只需开发一个在任何情况下都会出现的全局故障处理函数

· 无需专用的RAM分区和链接脚本

· 不占用CPU带宽(校验不会增加存储器读操作延迟)

· 最优的实时性能

最后一个优势是该解决方案在启动时无需进行完整的RAM校验,而且在上电复位后,寄偶校验立即激活,因此降低了引导时间。

由于拥有高能效、静音运行、高可靠性的特点,无刷电机被广泛用于家电,但是需要复杂的控制算法和专用的PWM外设,需要特别注意故障防护和安全关机。因此,RAM校验机制可提高可靠性和响应性,不是用软件管理安全关闭功能,而是直接向PWM外设发送校验错误信号,自动触发紧急停机功能,避免系统时钟和软件相关的延迟。图3所示框图描述了一个实用的解决方案。

最后一个优势是该解决方案在启动时无需进行完整的RAM校验

还必须注意系统的其它关键参数。电源监控系统可以设置电压,如果Vdd 电压降至预设电压值,系统将发出一个中断命令。同样,时钟安全系统检查主时钟运行是否正常,如果出现异常,则发出一个中断命令。此外,当发生硬故障、在NMI处理程序内部出现错误或者在引导过程中发生总线故障时,Cortex内核进入锁保护时态,在芯片级提供一个状态显示信号。这三个事件以及校验值合并,产生一个内部紧急关断信号,信号本身与外部断路(break)输入进行或运算。

该标准还需要一个防失效时钟电路。当晶振失效时,时钟安全系统外设(CSS)可自动将主时钟切换到内部高速振荡器,从而实现部分防失效功能。此外,还需要一个通过对比外部预计频率与内部频率来监视外部时钟的方法。实时时钟定时器可由LSI (内部低速)阻容振荡器驱动,以便精确地测量主系统时钟,发现晶体副谐波引起的50%的变化。在系统级,这可节省50/60Hz电网过零检测电路的成本。

该标准提出一个独立的时隙监视方案,防止CPU在程序计数器故障时失控,这是看门狗定时器的职责,多数微控制器均内置看门狗。但是,标准规定看门狗必须完全独立。因此,意法半导体的32位Cortex-M STM32系列微控制器有两个看门狗:第一个窗口看门狗使用主时钟;第二个看门狗使用独立的内部振荡器,通过闪存内的选项字节启动。这种设计可确保在晶体失效时,无论时钟电路配置如何,都能确保至少有一个看门狗在运行。

最后,微控制器还内置一个32位硬件CRC计算器,可大幅加快闪存内容完整性检查,同时将相关CPU负荷(在运行时占用的时间)降至可忽略不计的水平。该外设甚至可以用DMA控制器驱动。在微控制器运行期间,闪存数据完整性检查可在后台进行。

硬件校验长期以来只用于计算机DRAM模块和高可靠性系统。该方法被引进嵌入式市场的通用微控制器,如基于Cortex-M0的STM32F0x产品,随着系统监控和安全功能数量日益增加,该方案可简化产品认证、安全开发的执行,最重要一点是使家电变得更安全。

关键字:低成本ARM  Cortex-M  微控制器 引用地址:如何用低成本ARM Cortex-M微控制器让家电变得更安全

上一篇:发力中低端市场 ARM发布Cortex-A12芯片欲取代A9
下一篇:ARM Cortex-A12定位中端市场 要整死其他MCU内核?

推荐阅读最新更新时间:2024-03-16 13:25

#单片机#利用pcf8591读取电位器电压值
#include reg51.h sbit sda=P2^0; sbit scl=P2^1; #define uint unsigned int #define uchar unsigned char uchar code table ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0x40}; //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码 //--定义PCF8591的读写地址--// #define WRITEADDR 0x90 //写地址 #define READADDR 0x91 //读地址
[单片机]
PIC单片机用指针调用IO口
代码: void TEST(volatile near unsigned char* IO,unsigned char n,BOOL value) { unsigned char a; unsigned char b; a=*IO; b=0x01; b=b n; if(value) { *IO=a | b; } else { b=~b; *IO=a & b; } } PIC结构体,定义位元结构 extern volatile near unsigned char PORTB; // PORTB是一个字节(unsigned char)。由于变量是在寄存器中定义的,因此需要extern 修饰符。 volatile 修饰符告知编译
[单片机]
一种用单片机控制的采用电话遥控的简易远程教学系统
本文介绍了一种用单片机控制的采用电话遥控的简易远程教学系统。它借助于现有的丰富的电话网络资源,具有结构简单,造价低廉,易于操作等特点,可以实现对录像机的各种远距离控制操作。非常适合于贫困地区的电化教育的普及与发展。 1 系统的总体结构 该电话遥控教学系统的总体结构如图1所示。 该系统由电话机、小型程控机、远程控制器和数台录像机、电视机组成,该系统既可以通过小型程控机构成一个局域的小系统,也可以利用电信网构成一个跨省市的远距离遥控系统。在该系统中,远程控制器的设计与制造是该系统的核心与关键。 2 远程控制器的结构及工作原理 该控制器的 CPU 采用美国Microchip 公司生产的 PIC16C54 一次性用户可编程(O
[单片机]
一种用<font color='red'>单片机</font>控制的采用电话遥控的简易远程教学系统
浅谈单片机上电复位后端口的状态问题
在MSP430单片机的手册中,对于端口复位后的状态,是这样描述的:复位后,所有端口处于输入状态。 就这个问题,我们来简单说一下单片机上电复位后端口的状态问题。 首先,单片机上电后端口的状态应尽量避免处于输出状态(无论是输出低还是输出高) 为什么要这样说呢?因为单片机外围电路的动作就是靠单片机端口输出低电平或者高电平来控制的。假如单片机端口一上电就处于输出高或者低电平的状态,那么很容易出现误动作。例如,有一个端口是控制继电器的,在正常状态下,单片机端口输出低电平使得继电器吸合,输出高电平断开继电器。平时我们要求继电器处于断开状态,那就要让单片机的这个端口处于输出高电平的状态,但是如果这个单片机的端口在上电复位后是处于输出低电
[单片机]
浅谈<font color='red'>单片机</font>上电复位后端口的状态问题
视频解码芯片SAA7113的初始化与控制
   引言:   SAA7113是飞利浦公司视频解码系列芯片的一种,非常具有代表性,在很多视频产品如电视卡、MPEG2、MPEG4中都有应用,熟悉了7113的原理后,对其它系列芯片SAA7114、7115、7118就会很容易理解。SAA7113的主要作用是把输入的模拟视频信号解码成标准的“VPO”数字信号,相当于一种“A/D”器件。7113兼容全球各种视频标准,在我国应用时必须根据我国的视频标准来配置内部的寄存器,即初始化,否则7113就不能按要求输出,可以说对7113进行研发的主要工作就是如何初始化。对7113初始化需要通过I2C总线进行,本文给出用51单片机控制的例子。   1.SAA7113的基本原理与应用   SAA71
[家用电子]
Proteus超声波测距仿真电路图+单片机源程序
大多数人感觉超声波测距proteus仿真是无法实现的,虽然proteus自带的库有GUR03和SRF04两种模型,但是却与实际传感器使用方法相差甚远,即使求助度娘也很难找到简单易懂的教程。 之前很多人想做超声波测距仿真但都没有找到很好的办法去实现,在软件里没有这样的元件,有人用一个按键开关去模拟仿真,这样仿真出来的效果,非常不好。还有人用555时基电路产生一个延时信号(555电路作为超声波仿真的内部元件),来模拟超声波头发送后遇到回波返射回来的这阶段时间,来对单片机超声波测距单片机系统进行模拟,能完成对超声波测距模块大致仿真,但需要繁杂的设计。 下面是一个超声波测距模块的proteus模型,能直接用于proteus仿真,
[单片机]
Proteus超声波测距仿真电路图+<font color='red'>单片机</font>源程序
单片机程序中的调试debug及仿真
在没有单片机硬件的情况下,可以采用如下的仿真方式进行查看效果: 1、debug 进行调试,黄色箭头指向了下一条要执行的语句。 2、设置中断,全速执行,单步执行等操作 3、打开仿真窗口,查看I/O口的变化。 4、查看变量的值: 4.1打开view---- WAtch&Call Stack Window 4.2下方出现WAtch&Call Stack Window,显示变量i的当前值; 4.3点击watch#1标签,选中变量i,直接拖动到窗口内,然后点击单步执行,查看变量i的变化。 4.4单步执行后,我们将数值转换成十进制形式,查看最终i的值 4.5结果如下
[单片机]
<font color='red'>单片机</font>程序中的调试debug及仿真
基于C8051F410单片机实现双频固定式阅读器的应用方案
随着当前物流行业的快速发展。作为物流主要运输方式的集装箱运输.其运输效率及货运安全性日益受到人们关注。近几年来,随着RFID技术的发展和推广,将RFID技术用于集装箱信息识别.实现集装箱运输的智能化已经成为各集装箱厂家竞相开发的目标。RFID技术是一种利用射频通信方法实现的非接触式、快速、实时和准确的采集与处理信息的自动射频识别技术。目前集装箱运输上对RFlD技术的应用仅仅限于利用阅读器射频信道识别电子标签内集装箱信息.并有实现其运输安全上的保证。本文设计了一种基于C8051F410单片机的双频固定式阅读器。该阅读器与智能集装箱安全设备及路标设备配合实用.不仅能快速识别集装箱信息,而且能监测集装箱内货物的安全。一旦集装箱被非法打开
[单片机]
基于C8051F410<font color='red'>单片机</font>实现双频固定式阅读器的应用方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved