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

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

3天内不再提示

C2000系列芯片的RAM在线诊断实现方法

电子设计 来源:电子设计 作者:电子设计 2020-10-20 17:09 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

China Central FAE Sam Zhang

随着越来越多的工业应用对产品的可靠性和安全性要求越来越高,我们在做产品设计的时候不仅要正确的实现产品功能,同时也需要通过一些功能安全认证,比如家电行业的IEC60730等或者ISO13849等。一般的系统故障可以通过设计的迭代和严格测试来避免,但是硬件的随机失效理论上是无法完全消除的,所以要想提高硬件随机失效的诊断覆盖率,就需要软硬件诊断机制来保障。

作为系统的核心控制部分,MCU主平台的诊断机制就是最关键的部分。针对一般通用的MCU,以Piccolo C2000系列为例,硬件上提供了一些诊断或者校验机制,如下所示:

同时TI也提供了一些软件诊断方案,如MSP430 IEC60730 Software Package和C2000 SafeTI 60730 SW Packages软件库等,可以提供很多的诊断测试功能,例如CPU时钟、外设、RAM等的诊断,已经可以满足一部分的需求。

然而在实际的应用中,有些安全标准要求对RAM进行周期性的在线诊断,同时不能影响程序的正常运行。但是程序在运行过程中存储在RAM中的数据会实时的变化,而RAM的诊断往往会破坏这些存储的数据,比如电机控制类的实时性要求较高的场合。所以在没有ECC的情况下,如何对RAM进行实时在线的诊断是一个值得讨论的问题。

下面以电机控制为例,讨论硬件校验的实现,尤其是RAM在线检测的过程。

1. 系统软件流程

非破坏性的诊断可以放在背景循环里面进行,这些软件诊断不会对实时性中断造成影响,例如看门狗测试,内部晶振测试,FLASH CRC校验,静态变量RAM CRC校验,堆栈溢出判断,以及GPIO口诊断等。另外一些破坏性的或者对实时控制有影响的诊断,可以放到主中断中进行,如RAM March校验,ALU诊断以及CPU寄存器诊断等。

2. RAM诊断的方法

以C2000 SafeTI 60730 SW Packages为例,主要提供了两种RAM检测方式。

一种是CRC检测STL_CRC_TEST_testRam,此功能用于测试RAM的位错误。该测试以0和1的交替模式填充被测RAM区域,并使用PSA计算RAM的CRC。对于给定的RAM存储器区域,如果RAM存储器中没有任何stuck bit,则CRC值应始终相同。并行串行分析器(PSA)是c28x器件中的一个模块,可用于生成40位给定存储区域上的CRC。 PSA多项式为Y = x40 + x21 + x19 + x2 + 1。PSA通过监视数据读取数据总线(DRDB)来计算CRC值。 一旦激活就会监控Data Read Data Bus (DRDB),当CPU通过DRDB读取数据时,PSA每个时钟周期会为DRDB上的数据生成一个CRC。由于此测试具有破坏性,因此需要将要测试的RAM内容保存到单独的RAM位置。

当然也可以使用软件CRC的方式,使用起来更灵活,并且可以选择非破坏性的方式来计算CRC,对一些静态常量存储的区域可以考虑这种CRC方式。另外一点是软件CRC算法可以更方便的进行代码评估,以满足不同安全标准的要求。

另一种是MARCH检测STL_MARCH_TEST_testRam,此功能直接对RAM进行32bit的读写测试,可以选择进行MarchC 13N或者MarchC-测试。由于此测试具有破坏性,因此也需要将要测试的RAM内容保存到单独的RAM位置。

3. RAM在线检测的实现

由于需要周期性的RAM检测,以电机控制为例,可以将RAM检测放到主中断里面执行。同时关键是不能影响控制程序的运行和实时性,所以主要考虑两点:

第一是主中断时间有限,要尽可能减小RAM检测的时间,所以可以将RAM分成多个小段进行检测,每段RAM越小,占用中断的时间越小,但是所有RAM检测一遍的时间会变长,这个需要综合考虑。

第二是不能破坏RAM中的变量值,所以在检测是之前将RAM段中的内容保存到专门区域,戴检测完成并且通过之后,再将保存好的数据恢复过来,使用memCopy来提高效率。

具体实现方法如下:

首先定义好各个RAM区间的地址范围,可以参考具体的数据手册,如下所示:

然后定义好检测的范围和每次检测的数据长度:

注意由于STL_MARCH_TEST_testRam函数执行32位读/写测试,而在测试RAM单元阵列时,由于RAM单元的16位体系结构,所以要求起始地址为偶数,结束地址为奇数,可以测试的最大内存范围限制为65535个32位字。所以要求测试长度也需要为奇数。

在主中断里面的RAM在线检测函数里,首先将要检测区域的RAM值保存下来:

if ((gStructSTLMonitor.NowRamAddrStart >= MARCH_RAM_START)

&& (gStructSTLMonitor.NowRamAddrStart <= (MARCH_RAM_END-RAM_CHK_NUM)))

{

gStructSTLMonitor.NowRamAddrEnd = gStructSTLMonitor.NowRamAddrStart + RAM_CHK_NUM;

memCopy((uint16_t *)gStructSTLMonitor.NowRamAddrStart,(uint16_t *)

gStructSTLMonitor.NowRamAddrEnd,(uint16_t *)MARCH_RAM_BK);

}

然后进行检测:

gStructSTLMonitor.status = STL_MARCH_TEST_testRam((uint32_t *)

gStructSTLMonitor.NowRamAddrStart,(uint32_t *)gStructSTLMonitor.NowRamAddrEnd);

if(gStructSTLMonitor.status != SIG_RAM_MARCH_TEST)

{

STL_SetFail();

}

else

{

memCopy((uint16_t *)MARCH_RAM_BK,(uint16_t *)(MARCH_RAM_BK + RAM_CHK_NUM),

(uint16_t *)gStructSTLMonitor.NowRamAddrStart);

gStructSTLMonitor.NowRamAddrStart = gStructSTLMonitor.NowRamAddrEnd + 1;

gStructSTLMonitor.gTestStep++;

}

注意检测成功之后马上恢复当前区域的RAM值,并为下一次检测做好准备。如果检测发现故障,则进入故障处理函数。

参考文档:

IEC60730 Safety Library for TMS320F2806x USER’S GUIDE

Safety Manual for C2000™ MCUs in IEC60730 Safety Applications (SPRUHI3A)

审核编辑 黄昊宇

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

    关注

    462

    文章

    53534

    浏览量

    459106
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1398

    浏览量

    119823
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    谷东智能C2000 AR智能眼镜推动航空航天行业数字化转型

    在航空航天领域,安全、效率与精准性是永恒的追求。谷东智能推出的 C2000 AR 智能眼镜,凭借其卓越的性能与广泛的应用,已成为众多头部航司的得力助手,并获得了某民航局局长的高度认可。
    的头像 发表于 06-20 15:14 997次阅读

    纳芯微NSSine™ NS800RT正面硬刚TI C2000,国产替代“芯”战事, 工业控制MCU市场迎来变局?

    而言,C2000不仅仅是一颗芯片,它是一种技术惯性,一个庞大而成熟的生态,一套经过千锤百炼的开发方法论。从经典的F2812到如今的F2837x、F28004x系列
    的头像 发表于 06-20 12:45 1224次阅读
    纳芯微NSSine™ NS800RT正面硬刚TI <b class='flag-5'>C2000</b>,国产替代“芯”战事, 工业控制MCU市场迎来变局?

    16 位 ADC 的 汽车类与非汽车类C2000™ 32 位 MCU(TMS320F28377DPTPS TMS320F28377SPTPQ)微控制器

    前言 C2000™ 32 位微控制器针对处理、感应和驱动进行了优化,可提高实时控制应用(如工业电机驱动器、光伏逆变器和数字电源、电动汽车和运输、电机控制以及感应和信号处理)的闭环性能。C2000
    发表于 04-30 14:11

    TMS320F2800155 C2000™ 32 位 MCU 120MHz 128KB 闪存数据手册

    TMS320F280015x (F280015x) 是成本优化的 C2000 实时微控制器系列的成员,该系列可扩展、超低延迟器件专为提高电力电子的效率而设计。
    的头像 发表于 04-15 15:08 1037次阅读
    TMS320F2800155 <b class='flag-5'>C2000</b>™ 32 位 MCU 120MHz 128KB 闪存数据手册

    TMS320F280034-Q1 汽车级 C2000™ 32 位 MCU 120MHz 128KB 闪存数据手册

    TMS320F28003x (F28003x) 是 C2000™ 实时微控制器系列的成员,该系列可扩展、超低延迟器件专为提高电力电子效率而设计,包括但不限于:高功率密度、高开关频率,并支持使用 GaN 和 SiC 技术。
    的头像 发表于 04-15 14:59 797次阅读
    TMS320F280034-Q1 汽车级 <b class='flag-5'>C2000</b>™ 32 位 MCU 120MHz 128KB 闪存数据手册

    TMS320F2800133 C2000™ 32 位 MCU,具有 120 MHz、64 KB 闪存、FPU 和 TMU数据手册

    TMS320F280013x (F280013x) 是 C2000™ 实时微控制器系列的成员,该系列可扩展、超低延迟器件专为提高电力电子效率而设计。
    的头像 发表于 04-15 14:46 1124次阅读
    TMS320F2800133 <b class='flag-5'>C2000</b>™ 32 位 MCU,具有 120 MHz、64 KB 闪存、FPU 和 TMU数据手册

    TMS320F2800152-Q1 具有 CAN-FD、锁步 ASIL B 的汽车级 C2000™ 32 位 MCU 100MHz 64KB 闪存数据手册

    TMS320F280015x (F280015x) 是成本优化的 C2000 实时微控制器系列的成员,该系列可扩展、超低延迟器件专为提高电力电子的效率而设计。
    的头像 发表于 04-15 14:32 874次阅读
    TMS320F2800152-Q1 具有 CAN-FD、锁步 ASIL B 的汽车级 <b class='flag-5'>C2000</b>™ 32 位 MCU 100MHz 64KB 闪存数据手册

    TMS320F2800153-Q1 具有 HRPWM、CAN-FD、锁步 ASIL B 的汽车类 C2000™ 32位MCU 120MHz 64KB 闪存数据手册

    TMS320F280015x (F280015x) 是成本优化的 C2000 实时微控制器系列的成员,该系列可扩展、超低延迟器件专为提高电力电子的效率而设计。
    的头像 发表于 04-15 13:46 807次阅读
    TMS320F2800153-Q1 具有 HRPWM、CAN-FD、锁步 ASIL B 的汽车类 <b class='flag-5'>C2000</b>™ 32位MCU 120MHz 64KB 闪存数据手册

    TMS320F28P659DH-Q1 汽车级 C2000 32 位 MCU,600MIPS,2xC28x + 1xCLA + 锁步技术手册

    TMS320F28P65x (F28P65x) 是 C2000™ 实时微控制器系列的一员,该系列可扩展、超低延迟器件专为提高电力电子器件的效率而设计,包括但不限于:高功率密度、高开关频率,并支持使用 IGBT、GaN 和 SiC
    的头像 发表于 04-15 10:22 831次阅读
    TMS320F28P659DH-Q1 汽车级 <b class='flag-5'>C2000</b> 32 位 MCU,600MIPS,2xC28x + 1xCLA + 锁步技术手册

    F29H850TU C2000™ 64 位 MCU,带 C29x 200MHz 三核技术手册

    F29H85x 和 F29P58x 是 C2000™ 实时微控制器系列的成员,该系列是可扩展、超低延迟的器件,旨在提高电力电子器件的效率,包括但不限于:高功率密度、高开关频率,并支持使用 GaN 和 SiC 技术。
    的头像 发表于 04-14 14:10 1330次阅读
    F29H850TU <b class='flag-5'>C2000</b>™ 64 位 MCU,带 <b class='flag-5'>C</b>29x 200MHz 三核技术手册

    TMS320F28P550SG C2000™ 32 位 MCU技术手册

    TMS320F28P55x (F28P55x) 是 C2000™ 实时微控制器系列的成员,该系列可扩展、超低延迟器件旨在提高电力电子器件的效率,包括但不限于:高功率密度、高开关频率,并支持使用 GaN 和 SiC 技术。
    的头像 发表于 04-14 10:35 1961次阅读
    TMS320F28P550SG <b class='flag-5'>C2000</b>™ 32 位 MCU技术手册

    F29H859TU-Q1 汽车级 C2000™ 64 位 MCU数据手册

    F29H85x 和 F29P58x 是 C2000™ 实时微控制器系列的成员,该系列是可扩展、超低延迟的器件,旨在提高电力电子器件的效率,包括但不限于:高功率密度、高开关频率,并支持使用 GaN 和 SiC 技术。
    的头像 发表于 04-14 09:44 1065次阅读
    F29H859TU-Q1 汽车级 <b class='flag-5'>C2000</b>™ 64 位 MCU数据手册

    C2000 GANG Programmer error灯常亮是什么原因导致的?

    C2000 GANG Programmer 用了没几次,今天开机发现error 灯常亮,无法工作,也没有任何报错信息,请问是什么问题呢?
    发表于 02-28 08:31

    PMP40690 使用C2000™ MCU和GaN的4kW交错式 CCM 图腾柱无桥 PFC 参考设计

    此参考设计是一个 4kW 交错式 CCM 图腾柱 (TTPL) 无桥 PFC 参考设计,使用 64 引脚 C2000™ 微控制器、LM3410 氮化镓器件和TMCS1100霍尔传感器。它
    的头像 发表于 02-26 09:50 979次阅读
    PMP40690 使用<b class='flag-5'>C2000</b>™ MCU和GaN的4kW交错式 CCM 图腾柱无桥 PFC 参考设计

    参考设计#PMP41043 1.6kW 采用 C2000 和 GaN 实现的 CCM 图腾柱 PFC 和电流模式 LLC

    此参考设计演示了混合磁滞控制 (HHC) 方法,这是一种在半桥 LLC 级上使用 C2000 F28004x 微控制器的电流模式控制方法。该硬件基于 TIDA-010062,后者是 1kW、80
    的头像 发表于 02-25 11:27 948次阅读
    参考设计#PMP41043 1.6kW 采用 <b class='flag-5'>C2000</b> 和 GaN <b class='flag-5'>实现</b>的 CCM 图腾柱 PFC 和电流模式 LLC