这篇技术文章讨论了 B 类安全软件库例程,用于检测单通道微控制器中是否发生故障。这些例程基于 IEC 60730 标准,能够支持 B 类认证过程。这些例程可以直接与最终用户的应用程序集成,以测试和验证控制器的关键功能,而不会影响最终用户的应用程序。本应用笔记还介绍了 B 类安全软件库中提供的应用程序编程接口 (API) 函数。可以在启动或运行时定期调用 B 类安全软件例程以测试以下组件:
本应用笔记还概述了用于测试外部通信、定时、I/O 外设、模拟 I/O 和模拟多路复用器等组件的各种技术,这些技术不属于 B 类安全软件库的一部分。
IEC 60730 标准概述
IEC 60730 标准定义了确保家用电器中使用的受控设备安全运行的测试和诊断方法。IEC 60730 标准的附录 H 将软件分为以下几类:
B 类安全软件库实施属于 B 类类别的重要测试和诊断方法。这些方法使用各种措施来检测和响应与软件相关的故障和错误。根据IEC 60730标准,属于B类功能的控件应具有以下结构之一:
带功能测试的单通道 在此结构中,功能测试在应用固件执行之前执行。
带定期自检的单通道 在此结构中,定期测试嵌入在固件中,并且在固件处于执行模式时定期进行自检。
双通道无比较 在此结构中,两个独立的方法执行指定的操作。
系统要求
推荐以下系统要求来运行 B 类安全软件库: 对于需要独立时隙监控的测试,系统硬件必须提供至少两个独立的时钟源(例如内部振荡器、晶振和线频) )。
B 类安全软件库
8 位 B 类安全软件库包括 API,旨在通过故障检测最大限度地提高应用程序的可靠性。这些 API 有助于满足 IEC 60730 标准合规性。可以使用此库实现以下测试:
在以下部分中,将讨论每个测试的测试描述和实现细节。此外,每个部分都列出了执行相应测试所需的 API。
CPU寄存器测试
CPU 寄存器测试执行 IEC 60730 标准定义的功能测试 H.2.16.5。它检测 CPU 寄存器中的固定故障。这确保寄存器中的位不会停留在值“0”或“1”。CPU 寄存器测试是一种无损测试。该测试执行以下主要任务:
CPU 寄存器和幽灵寄存器的测试方法是,首先将二进制序列(长度取决于体系结构)、010101……然后是 101010……依次写入寄存器,然后从这些寄存器中读取值进行验证。
如果返回值不匹配,测试将返回错误代码。
API 函数
该 API 函数实现了 CPU 寄存器测试:
CLASSB_CPURegistersTest()
程序计数器测试
程序计数器 (PC) 测试执行 IEC 60730 标准定义的功能测试 H.2.16.5。PC 保存下一条要执行的指令的地址。该测试执行以下主要任务:
API 函数
这个API函数实现了PC测试:
CLASSB_CPUPCTest()
不变内存(Flash/EEPROM)测试
不变存储器 (Flash/EEPROM) 测试实施由 IEC 60730 标准定义的定期修改校验和 H.2.19.3.1。它检测不变存储器中的单位故障。系统中的不变存储器,例如闪存和 EEPROM 存储器,包含在程序执行期间不打算更改的数据。闪存/EEPROM 不变存储器测试使用循环冗余校验 (CRC-16) 计算周期性校验和。用于计算 CRC-16 的 CRC 多项式如下所示。
CRC-16 = 1 1000 0000 0000 0101 = 8005(十六进制)
图 1 是不变内存测试的流程图。CRC 功能可用于测试存储在闪存或 EEPROM 存储器中的数据的完整性。这是通过计算并返回存储在函数调用中定义的位置中的数据的 CRC 值来完成的。以下流程图说明了如何在您的应用程序固件中使用这些功能。
不变记忆测试流程图
如果系统启动时 CRC_Flag 设置为 0x00,则计算参考 CRC 校验和。
参考校验和存储在闪存或 EEPROM 存储器中,CRC 标志设置为 0xFF。
如果 CRC 标志设置为 0xFF,则可以定期调用 CRC16 计算函数。
将步骤 3 计算的校验和与参考校验和进行比较。
如果两个值匹配,则用户应用程序可以设置状态位以指示不变存储器已通过测试并且未发现错误。
编辑:hfy
全部0条评论
快来发表一下你的评论吧 !