Nuoeriris · 2021年05月14日

MM32F013x——IEC60730-1 B类认证软件设计指南(一)

家用电器制造商在设计时就被要求考虑到设备的安全性,产品的硬件和软件要求遵循相关的安全标准,所以很多新技术解决方案被应用在产品中。

1. IEC60730 ClassB 认证简介

在全球范围内,IEC(国际电工委员会)、UL(美国保险商实验室)及CSA(加拿大标准协会)颁布了全球公认标准,主要针对电气设备有了规范和要求。该标准被TUV及VDE(大部分在欧洲)、UL及CSA(目标市场在美国和加拿大)等机构认可,并被要求应用在认证程序中。

IEC(国际电工委员会)是由所有国家电工委员会组成的世界性标准化组织,IEC针对家用电器的正常安全运行制定了安全标准IEC60730。

IEC60730安全标准里面定义了多种测试和诊断方法,确保面向家用电器的嵌入式控制硬件和软件的安全运行。IEC60730安全标准主要针对安全和性能、环境、电能效率及其可再生能力,其标准为硬件及软件解决方案提供建议,根据应用目的,这些标准可分为若干安全等级。

家用电器制造商必须采取措施,以确保其产品的安全和可靠地运行,以符合IEC60730标准。IEC60730标准涵盖了交流电器的机械、电气、电子、EMC和交流电器的异常操作,包括为自动电子控制定义的三种软件分类:

A类功能,如房间恒温器、湿度控制、照明控制、计时器和开关,它们的区别在于不依赖于设备的安全。
B类功能,如热切断装置,旨在防止洗衣机、洗碗机、烘干机、冰箱、冰柜和炊具等电器的不安全操作。
C类功能,旨在防止特殊危险,如爆炸。这些包括自动燃烧器控制和封闭的热水器的热切断。

MM32开发出多种安全特性和软件开发包(包括IEC60730安全库),可帮助大型电器市场的自动化控制制造商满足IEC60730 B类规范。

2. ClassB 验证

2.1 ClassB 软件库
2.1.1    评估的目的
  • 对软件启动时自检和运行时自检,对风险控制措施进行评估;
  • 确保在使用电器时安全,对人体不会造成伤害。
2.1.2    评估的内容
  • 对硬件结构和软件结构的综合检查,防止系统性问题;
  • 对软件开发过程的评估,针对程序潜在性风险进行检查。
2.1.3    评估的对象
  • 家用电器如果同时具备以下两个条件,就应当进行软件评估:
1、使用可编程电子电路,即嵌入式微控制器MCU;
2、可编程电子电路具有安全保护功能。

比如具有过热控制的电磁炉,带自动门锁控制的洗衣机等。

  • 如果MCU仅实现产品功能,安全保护由硬件进行,这类家电不需要进行软件评估。
2.2 MM32提供的示例代码测试项

(1) CPU寄存器测试
(2) 时钟验证测试
(3) 不变存储器FLASH验证测试
(4) 可变存储器RAM验证测试
(5) 看门狗验证测试
(6) 控制流程检查验证测试

MM32 ClassB所有示例代码的源码向所有有需要的用户开放,用户可以将它们添加到现有的项目中。

2.3 验证方法
2.3.1    MCU相关故障检测

表1.jpg

2.3.2    应用相关故障检测

表2.jpg

其他的对应控制模块也需要从应用层进行自检,具体的实现方式需要根据具体的应用需求进行评估,今天不做过多的假设。

2.4 系统测试流程

MCU在上电的时候会进行复位启动,在启动完成以后会进行运行自检,ClassB系统流程如下:
1.png

2.4.1    启动自检

CPU寄存器进行自检操作,如果检测没有故障则进行看门狗的自检,如果有故障则进行故障的处理。看门狗自检流程与CPU寄存器自检的流程一致,后面依次会进行FLASH,RAM以及时钟自检,启动自检完成以后会进入程序的主循环函数中。

启动自检流程如下:
2.png

2.4.2    运行自检

在主循环中会定期的进行自检操作,在进行自检操作的时候会依次进行如下操作:CPU寄存器的自检、栈自检、时钟自检、FLASH自检、并设置定时器定时进行RAM自检,如果在自检的过程中出现故障则会进行故障的处理。

运行自检流程如下:
3.png

以上就是ClassB的整体的测试流程。

2.5 代码整合

如果用户已经开发好相关的应用控制程序,只需要在原有的应用程序中添加ClassB的程序,操作方法如下:

1、在原有的工程框架中添加ClassB的相关.c和.s文件。

4.png

2、在执行用户程序之前,先执行相关的变量初始化及监测、校准时钟。

STL_InitRunTimeChecks();

3、设置WWDG和IWDG功能,防止其在程序正常运行时复位。

WWDG_Init(0xFF,0x7F);
Iwdg_Init(IWDG_Prescaler_4, (LSI_Freq/4000-2));

4、设置启动和运行时的RAM和FLASH检测范围,CRC校验的范围,checksum在Flash中存储的位置。

STL_FlashCrc32Init();

5、ClassB变量的存储地址范围,堆栈边界检测区的位置,对检测到的故障进行处理。

6、根据具体的应用,增加用户相关的故障检测内内容,根据具体应用定义程序运行时自检的频率,相关的变量设置MM32\_STLparam.h文件中。

7、主循环中调用STL\_DoRunTimeChecks()

STL_DoRunTimeChecks();

今天主要介绍了ClassB软件的作用、框架和流程等,后续文章将逐一介绍MM32F013x在各个自检过程中的实现方式。

推荐阅读
关注数
6108
内容数
272
灵动MM32 MCU相关技术知识,欢迎关注~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息