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

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

3天内不再提示

MARCH 主要提供了哪两种 RAM 检测方式?

lhl545545 来源:与非网 作者:佚名 2020-08-28 14:44 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

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

MARCH 主要提供了哪两种 RAM 检测方式?

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

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

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

1. 系统软件流程

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

MARCH 主要提供了哪两种 RAM 检测方式?

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 位置。

MARCH 主要提供了哪两种 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 区间的地址范围,可以参考具体的数据手册,如下所示:

MARCH 主要提供了哪两种 RAM 检测方式?

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

MARCH 主要提供了哪两种 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 值,并为下一次检测做好准备。如果检测发现故障,则进入故障处理函数。
责任编辑:pj

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

    关注

    31

    文章

    5619

    浏览量

    130406
  • 存储器
    +关注

    关注

    39

    文章

    7756

    浏览量

    172179
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1401

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    TVS vs TSS 两种保护机制的深度博弈

    在现代电子设备日益精密、工作环境愈发复杂的背景下,电路安全问题尤其是雷击和瞬态过压(Surge)防护,已成为产品设计中不可忽视的重要环节。其中,TVS(瞬态电压抑制器)与TSS(晶闸管浪涌抑制器)是两种广泛应用的浪涌保护器件。尽管二者均服务于同一目标——保障电路
    的头像 发表于 02-12 15:23 2076次阅读
    TVS vs TSS <b class='flag-5'>两种</b>保护机制的深度博弈

    两种电流检测电路设计方案 高侧 低侧 最高耐压90V

    常用的电流检测电路有两种,一是低压侧电流检测,另一是高压侧电流检测。 实现方法:
    的头像 发表于 11-24 16:16 1326次阅读
    <b class='flag-5'>两种</b>电流<b class='flag-5'>检测</b>电路设计方案 高侧 低侧 最高耐压90V

    用PLC实现卷径计算的两种算法

    卷径计算,是动态计算如钢卷,纸卷等存料量的一方法,它是实现张力控制和自动充放料、以及甩尾控制的重要前提。卷径计算目前主流的方法有两种,一是根据机列速度(产线速度)和和被测卷的转动角速度求得;另一
    的头像 发表于 11-14 16:54 2541次阅读
    用PLC实现卷径计算的<b class='flag-5'>两种</b>算法

    负压法 vs 正压法:手机外壳气密性检测仪的两种核心技术

    的手机外壳气密性检测主要采用两种核心技术:负压法和正压法。二者各有优劣,适用于不同的生产需求和检测场景。正压法是通过向手机外壳内部充入一定压力的气体(通常为洁净空
    的头像 发表于 11-05 16:19 596次阅读
    负压法 vs 正压法:手机外壳气密性<b class='flag-5'>检测</b>仪的<b class='flag-5'>两种</b>核心技术

    ADI GMSL技术两种视频数据传输模式的区别

    本文深入介绍GMSL技术,重点说明用于视频数据传输的像素模式和隧道模式之间的差异。文章将阐明这两种模式之间的主要区别,并探讨成功实施需要注意的具体事项。
    的头像 发表于 10-10 13:49 2627次阅读
    ADI GMSL技术<b class='flag-5'>两种</b>视频数据传输模式的区别

    两种TVS有啥不同?

    当我们查看TVS二极管的规格书,常会看到有以下两种种引脚功能标识图:对于初学者,看到感到疑惑,他们一样吗?他们有啥区别?为啥有的个尖头往外,阳极连在一起,有的个尖头往里,阴极连在一起?一连三问。EMC小哥根据自己经验略作分析
    的头像 发表于 09-15 20:27 972次阅读
    这<b class='flag-5'>两种</b>TVS有啥不同?

    两种散热路径的工艺与应用解析

    背景:两种常见的散热设计思路 在大电流或高功率器件应用中,散热和载流能力是PCB设计中必须解决的难题。常见的两种思路分别是: 厚铜板方案:通过整体增加铜箔厚度(如3oz、6oz甚至更高),增强导热
    的头像 发表于 09-15 14:50 971次阅读

    CMOS 2.0与Chiplet两种创新技术的区别

    摩尔定律正在减速。过去我们靠不断缩小晶体管尺寸提升芯片性能,但如今物理极限越来越近。在这样的背景下,两种创新技术站上舞台:CMOS 2.0 和 Chiplet(芯粒)。它们都在解决 “如何让芯片更强” 的问题,但思路却大相径庭。
    的头像 发表于 09-09 15:42 1199次阅读

    贴片晶振中两种常见封装介绍

    贴片晶体振荡器作为关键的时钟频率元件,其性能直接关系到系统运行的稳定性。今天,凯擎小妹带大家聊聊贴片晶振中两种常见封装——金属面封装与陶瓷面封装。
    的头像 发表于 07-04 11:29 1492次阅读
    贴片晶振中<b class='flag-5'>两种</b>常见封装介绍

    两种驱动方式下永磁直线开关磁链电机的研究

    摘要:永磁开关磁链电机数学模型可以等效为永磁无刷电机,普遍采用方波驱动方式。在有限元基础上分析6/7极直线式磁链电机反电势波形,采用方波和正弦波驱动方式,比较两种方式下的电流、电压、平
    发表于 06-09 16:18

    两种感应电机磁链观测器的参数敏感性研究

    模式和发电模式下对闭环电压电流模型磁链观测器和滑模磁链观测器参数敏感性进行了研究,通过仿真和实验比较两种观测器对定、转子电阻及励磁电感的敏感性。同时还研究基于这两种观测器的模型参
    发表于 06-09 16:16

    铷原子钟与CPT原子钟:两种时间标准的区别

    在物理学的世界中,精密的时间测量是至关重要的。这就需要一个高度准确且稳定的时间标准,这就是原子钟。今天我们将探讨两种重要的原子钟:铷原子钟和CPT原子钟,以及它们之间的主要区别。首先,我们来了解一下
    的头像 发表于 05-22 15:49 899次阅读
    铷原子钟与CPT原子钟:<b class='flag-5'>两种</b>时间标准的区别

    渗压计如何实现精准测量?两种主流方式与应用场景解析

    渗压计是监测岩土工程、大坝渗流压力变化的核心设备,其测量精度和效率直接影响工程安全评估的可靠性。目前主流的测量方式分为现场手动测量与自动化监测类,分别适用于不同的工程场景。一、现场测量:智能读数仪
    的头像 发表于 05-20 16:17 855次阅读
    渗压计如何实现精准测量?<b class='flag-5'>两种</b>主流<b class='flag-5'>方式</b>与应用场景解析

    正激变换器的两种复位方式

    )是RCD复位正激变换器的主要工作波形。电容C端电压在一个开关周期内近似为直流电压,则RCD复位电压是一个方波。同样在开关管关断瞬间,变压器上有一个电压尖峰,是由变压器漏感与开关管结电容谐振引起的。
    的头像 发表于 05-19 10:59 2.3w次阅读
    正激变换器的<b class='flag-5'>两种</b>复位<b class='flag-5'>方式</b>

    Xilinx Shift RAM IP概述和主要功能

    Xilinx Shift RAM IP 是 AMD Xilinx 提供的一个 LogiCORE IP 核,用于在 FPGA 中实现高效的移位寄存器(Shift Register)。该 IP 核利用
    的头像 发表于 05-14 09:36 1272次阅读