0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MCU之IEC_60335_CLASSB软件库

jf_pJlTbmA9 来源:华芯微特32位MCU 作者:华芯微特32位MCU 2023-10-25 17:12 次阅读

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

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

为此,华芯微特开发出多款安全特性和软件开发包(包括IEC60335安全库),可帮助大型电器市场的自动化控制制造商满足IEC60335 CLASSB规范。

在这里我们以SWM341为例给大家简单介绍一下在IEC_60335_CLASSB软件库。

整体流程

ClassB软件包程序检测内容分为两个主要部分:启动时的自检和运行时的周期自检,MCU在上电的时候会进行复位启动,在启动完成以后会进行运行自检。

wKgZomUDwfCAPJfTAAGud37QhK0265.png

启动时检测

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

启动自检流程如下图:

wKgaomUDwfGAIheeAAIV0S_a0YQ451.png

CPU启动时检测

进行CPU寄存器的相关检测,主要检查内核标志、寄存器和堆栈指针等是否正确。如果发生错误,就会调用故障安全处理函数Selftest_fail_handle()。

wKgaomUDwfOAZX2LAAER6SD7u-k442.png

看门狗启动时检测

验证看门狗复位功能是否正常,保证后续运行中如果因为程序计数器出现非预期异常情况导致程序跑飞时可以通过看门狗复位恢复。测试通过判断复位状态寄存器的复位标识来判断是否测试成功。

wKgaomUDwfSAb16KAAAM-4Je-uY561.png

时钟启动时检测

启动阶段的时钟检测通过内部低速时钟源(LICK)和系统时钟的交叉测量结果来判断。系统时钟频率作为基准频率,采用外部高速时钟源(HEXT)或者内部高速时钟源(HICK)。将定时器的时钟源设置为LICK,systick设置为系统时钟,运行systick相同时间,两次timer当前值之间的差值作为测量值与LICK预期的范围值进行比较。如果测量值超出了LICK预期范围值,则测试失败。

wKgZomUDwfaAIK-UAAAX-r3zZ6Q952.png

FLASH启动时检测

FLASH自检是存储器检测的一部分, 程序中将FLASH数据用CRC算法计算, 将结果值跟编译时已存储在FLASH指定位置的预先计算好的CRC值进行比较。

wKgaomUDwfeAfne8AAECZS23avY147.png

RAM启动时检测

RAM自检是存储器检测的一部分,对于支持硬件SRAM奇偶校验功能的型号,可以开启RAM校验功能并且可以跳过该步骤,而对于不支持硬件SRAM奇偶校验功能的型号,则采用March C算法,用值0x00和0xFF逐字交替填充整个RAM并检查,填充时可以选择加扰模式(scramble)或者标准模式(standard),加扰模式基本物理单元是4字,下图单元格内的编号代表测试填充的顺序。

wKgaomUDwfmAWAzaAABRM9MgoIM084.png

RAM采用March C算法测试时分6个步骤,前3个循环按照地址递增执行,后3个循环按照地址递减执行。测试步骤如下,如果采用March X算法则省略步骤3和4:

·全部范围写0x00,按照地址递增顺序执行

·检测是否全部范围为0x00,然后全部范围写0xFF,按照地址递增顺序执行

·检测是否全部范围为0xFF,然后全部范围写0x00,按照地址递增顺序执行

·检测是否全部范围为0x00,然后全部范围写0xFF,按照地址递减顺序执行

·检测是否全部范围为0xFF,然后全部范围写0x00,按照地址递减顺序执行

·检测是否全部范围为0x00,按照地址递减顺序执行

wKgZomUDwfqAe_dDAAEvayw8Ygc754.png

控制流启动时检测

控制流检测也属于程序计数器检测的一部分,启动阶段控制流检测主要分为了两个节点,其中一个检测节点是在RAM检测之前,通过控制流变量值判断是否前面所有测试项都正确完成,另外一个节点是在RAM检测后,主要是运行阶段检测必须操作的流程的配置,比如CRC参考变量初始化、栈溢出pattern设置。

运行时周期检测

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

wKgZomUDwfyAYtylAAGAaISt6TQ036.png

CPU运行时检测

CPU运行时周期自检跟启动时的自检类似,只是不检测内核标志和堆栈指针。

wKgaomUDwf2AW_PmAADEA6Vyhuc449.png

看门狗运行时检测

运行时需要定期喂狗保证系统正常运行, 看门狗的刷新部分放置在每次检测最后部分。

时钟运行时检测

启动阶段的时钟检测通过内部低速时钟源(LICK)和系统时钟的交叉测量结果来判断。系统时钟频率作为基准频率,采用外部高速时钟源(HEXT)或者内部高速时钟源(HICK)。将定时器的时钟源设置为LICK,systick设置为系统时钟,运行systick相同时间,两次timer当前值之间的差值作为测量值与LICK预期的范围值进行比较。如果测量值超出了LICK预期范围值,则测试失败。

wKgZomUDwf-AWtAFAAHA9XA1qEY003.png

FLASH CRC运行时检测

运行时进行Flash CRC的自检,因为检测范围不同耗时不同,如果一次计算检测全部范围CRC可能耗时过长,影响正常应用部分的执行,所以可以根据用户应用程序大小配置分段CRC计算,当计算到最后一段范围时,再进行CRC值比较,如果不一致则测试失败。

wKgaomUDwgGAGPoyAAFIATSYt9s422.png

栈边界运行时检测

可验证寻址和数据路径测试相关,定义特殊固定值的Magic Pattern数组,放置在栈区域最底部地址,通过运行中检测Magic Pattern数组完整性来判断栈是否溢出。如果原始Pattern被破坏,则表明栈溢出测试失败,调用故障安全程序。

这一区域根据设备及应用有不同的配置。用户必须为堆栈定义足够的区域,并保证pattern正确放置。下图是程序中RAM的简要分配图,其中灰色部分是相比较于常规应用,支持自检需要额外添加的部分。

wKgZomUDwgKAAj9aAADfSZiNQks517.png

wKgaomUDwgWAAM4DAAFD-cdt0WE647.png

局部RAM运行时检测

运行时的RAM自检是在systick中断函数中进行的。因为运行中不允许破坏应用部分RAM,所以测试只覆盖分配给CLASS B变量的那部分内存。测试流程方法概要描述如下:

·测试根据systick时基分批次进行,每次测试按照CLASS B部分4个字的区域偏移,为保障耦合故障覆盖率,每次测试的实际内存块还包括测试区域前后各1个相邻字,总共6个字。

·首先将待测试内存块(RAM block)的数据存储到专门用于测试过程中临时保存数据的缓冲块(buffer block)

·然后跟启动时检测RAM类似, 对测试内存块(RAM block)采用March C算法测试,同样可以选择加扰模式(scramble)或者标准模式(standard)

·测试完成后将缓冲块(buffer block)中保存的数据恢复至测试内存块(RAM block)。

wKgZomUDwgaABqDDAAE0xrHucgE858.png

工程配置

Keil中添加bat文件

wKgaomUDwgiAU0TqAAITpZ2HZIs428.png

添加ini文件

wKgZomUDwgmAUxZTAADb67Z-_Sg333.jpg

分散加载文件配置

wKgaomUDwguAYf__AADpWRm8Whs854.jpg

编译结果

wKgZomUDwgyAFY4IAADHK4_jAAM005.jpg

运行结果

wKgaomUDwg6AY58QAAEBNX2-wpI067.jpg

以上是本次介绍的IEC_60335_CLASSB软件库,如需更多了解SWM芯片信息请联系华芯微特技术人员。

来源:华芯微特32位MCU

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16018

    浏览量

    343637
  • 寄存器
    +关注

    关注

    30

    文章

    5030

    浏览量

    117734
  • RAM
    RAM
    +关注

    关注

    7

    文章

    1321

    浏览量

    113706
  • 检测
    +关注

    关注

    5

    文章

    4085

    浏览量

    90745
  • 软件库
    +关注

    关注

    0

    文章

    13

    浏览量

    7712
收藏 人收藏

    评论

    相关推荐

    极海APM32F030系列MCU通过IEC60730软件安全认证

      随着物联网的飞速发展,越来越多智能家电走进我们的生活,针对家电产品日益增长的安全功能需求,近日极海APM32F030系列MCU顺利通过IEC60730软件安全认证,并可提供符合IEC603
    的头像 发表于 05-26 14:06 2448次阅读
    极海APM32F030系列<b class='flag-5'>MCU</b>通过<b class='flag-5'>IEC</b>60730<b class='flag-5'>软件</b>安全认证

    IEC60335-1

    IEC60335-1IEC60730 Annex HThe standard applies to electronic controls and controls using software
    发表于 09-12 10:48

    TUV认证的标准以IEC60335为基础

    世界各地的家电法规,均以IEC标准IEC60335为基础。其中,欧洲标准与国际标准最为接近,例如TUV认证。欧洲标准分为两大部分:第一部分EN60335-1是对家电的综合要求;第二部分EN60
    发表于 05-11 15:54

    AN4435_基于STM32系列MCU实现UL_CSA_IEC60730_60335_Class_B安全规范的设计指南

    本文档适用于STM32产品全系列,是关于基于STM32实现UL/CSA/IEC60730/60335 Class B安全规范的应用笔记。通过本文档和相关X-Cube-ClassB软件
    发表于 11-02 18:22

    家电IEC60335-1总标准测试报告

    60335-2-65-2008冷气机家用和类似用途电器的安全.第2-40部分:电动热泵、空调器和去湿器的特殊要求IEC 60335-2-40-2006空气清新机家用和类似电器的安全.第2-101部分
    发表于 04-16 19:19

    IEC60335 ClassB ST MCU软件介绍

    IEC60730的附录H(H.2.22)中对软件进行了分类A类软件软件仅实现产品的功能,不涉及产品的安全控制。比如室用恒温器的软件,灯光控
    发表于 09-12 07:32

    AT32_IEC 60730_CLASSB软件使用指南

    AT32_IEC 60730_CLASSB软件使用指南描述了AT32系列的MCU如何执行IEC
    发表于 10-24 06:40

    iec 60335-1:2001

    iec 60335-
    发表于 09-12 11:18 9次下载

    IEC 60335家用和类似用途电器的安全标准介绍

    IEC 60335标准是关于《家用和类似用途电器的安全》的标准,一直受到了家电企业行业的关注。2020年IEC 60335-1:2020《家用和类似用途电器的安全第1部分:通用要求》正
    发表于 09-28 09:44 4370次阅读

    AN4435_基于STM32系列MCU实现UL_CSA_IEC60730_1_60335-1_Class_B安全规范的设计指南

    AN4435_基于STM32系列MCU实现UL_CSA_IEC60730_1_60335-1_Class_B安全规范的设计指南
    发表于 11-21 17:07 0次下载
    AN4435_基于STM32系列<b class='flag-5'>MCU</b>实现UL_CSA_<b class='flag-5'>IEC60730_1_60335</b>-1_Class_B安全规范的设计指南

    AN4435_基于STM32系列MCU实现UL_CSA_IEC60730-1_60335-1_Class_B安全规范的设计指南

    AN4435_基于STM32系列MCU实现UL_CSA_IEC60730-1_60335-1_Class_B安全规范的设计指南
    发表于 11-21 17:07 0次下载
    AN4435_基于STM32系列<b class='flag-5'>MCU</b>实现UL_CSA_<b class='flag-5'>IEC60730-1_60335</b>-1_Class_B安全规范的设计指南

    AN4435_基于STM32系列MCU实现UL_CSA_IEC60730_60335_Class_B安全规范的设计指南

    AN4435_基于STM32系列MCU实现UL_CSA_IEC60730_60335_Class_B安全规范的设计指南
    发表于 11-21 17:07 0次下载
    AN4435_基于STM32系列<b class='flag-5'>MCU</b>实现UL_CSA_<b class='flag-5'>IEC60730_60335</b>_Class_B安全规范的设计指南

    国际电工委员会(IEC)发布了第7版IEC 60335-2-40

    2022年5月25日, 国际电工委员会(IEC)发布了第7版IEC 60335-2-40, 家用和类似用途电器的安全第2部分:热泵、空调器和除湿机的特殊要求;该版本在旧版IEC60335
    的头像 发表于 07-20 17:49 1331次阅读
    国际电工委员会(<b class='flag-5'>IEC</b>)发布了第7版<b class='flag-5'>IEC</b> <b class='flag-5'>60335</b>-2-40

    复旦微MCUIEC60730 Class B软件

    复旦微MCUIEC60730 Class B软件
    的头像 发表于 09-26 16:58 869次阅读
    复旦微<b class='flag-5'>MCU</b>之<b class='flag-5'>IEC</b>60730 Class B<b class='flag-5'>软件</b>库

    极海APM32F003 MCU通过IEC 60730/60335功能安全认证

    近日,极海APM32F003系列工业级超值型MCU,已顺利通过IEC 60730/60335功能安全认证,并可提供符合CLASS B标准的功能安全设计套件,有助于客户减少认证时间与成本,快速推出稳定可靠的终端产品。
    的头像 发表于 01-08 18:04 441次阅读
    极海APM32F003 <b class='flag-5'>MCU</b>通过<b class='flag-5'>IEC</b> 60730/<b class='flag-5'>60335</b>功能安全认证