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

    文章

    5588

    浏览量

    129047
  • 存储器
    +关注

    关注

    39

    文章

    7714

    浏览量

    170833
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1398

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

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

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

    两种TVS有啥不同?

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

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

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

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

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

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

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

    使用ADS1258的时候调试了它的两种工作方式,寄存器的值会发生错乱,为什么?

    我在使用ADS1258的时候调试了它的两种工作方式,一是auto channel,一是fix channel;使用第一方式都是正常的,
    发表于 02-10 08:21

    快问快答:有两种设备分别产品的抗破坏能力和是否泄漏工作介质?

    「五脏六腑」是否健康(防泄漏能力)。强度试验和密封性测试对比表评估设备承压性能需要针对性测试设备。针对您提到的两种测试需求,精诚工科气密性团队结合十余年行业经验,
    的头像 发表于 02-06 11:39 519次阅读
    快问快答:有<b class='flag-5'>哪</b><b class='flag-5'>两种</b>设备分别产品的抗破坏能力和是否泄漏工作介质?

    基于ISOS测试标准,两种封装方式对钙钛矿太阳能电池性能影响分析

    钙钛矿太阳能电池(PSCs)极具潜力,但湿度和氧气会导致其性能快速下降,因此封装技术对提高其稳定性至关重要。文章研究两种常见的封装策略:基于层压的玻璃-玻璃封装(COM)和基于胶水的封装(LAB
    的头像 发表于 01-03 09:03 1573次阅读
    基于ISOS测试标准,<b class='flag-5'>两种</b>封装<b class='flag-5'>方式</b>对钙钛矿太阳能电池性能影响分析

    AMC1204有两种封装,SOIC-8和SOIC-16,功能一样吗?为什么要推出两种封装?

    呢?AMC1204,AMC1304这样做有什么好处吗? 2、AMC1204有两种封装,SOIC-8和SOIC-16,功能一样吗?为什么要推出两种封装?
    发表于 12-27 07:22

    霍尔开关的直插式和贴片式两种封装形式的对比

    霍尔开关是一基于霍尔效应的传感器,广泛应用于各种自动化设备中,用于检测磁场的存在和变化。根据安装方式和结构,霍尔开关主要分为贴片式和直插式两种
    的头像 发表于 12-18 17:39 1665次阅读

    solidworks正版软件:永久版权和订阅许可 两种购买方式解析和选择

    SOLIDWORKS软件分从购买方式上划分为永久版权的形式和订阅即年付费两种方式,代理商硕迪科技向您详细解析 SOLIDWORKS 的永久版权和订阅许可的区别,各自的优劣势以及适合的应用场景。以帮助您做出适合的决策。
    的头像 发表于 12-16 16:45 2993次阅读
    solidworks正版软件:永久版权和订阅许可 <b class='flag-5'>两种</b>购买<b class='flag-5'>方式</b>解析和选择

    芯片制造过程中的两种刻蚀方法

    本文简单介绍芯片制造过程中的两种刻蚀方法   刻蚀(Etch)是芯片制造过程中相当重要的步骤。 刻蚀主要分为干刻蚀和湿法刻蚀。 ①干法刻蚀 利用等离子体将不要的材料去除。 ②湿法刻蚀 利用腐蚀性
    的头像 发表于 12-06 11:13 3189次阅读
    芯片制造过程中的<b class='flag-5'>两种</b>刻蚀方法