TC377 - MTU MBIST之内存自动初始化+无创测试

1 概述

1)存储器测试单(MTU)控制和监控AURIX™TC3xx系列微控制器中各种内部存储器的测试、初始化和数据完整性检查功能。
2)无创测试(NDT)是由内存内置自测试(MBIST)执行的,以验证同一SRAM内存的内容。内存内置自测试(MBIST)是一个MTU特性,它能够验证内部sram的完整性。
3)为了测试错误的场景,此实例提供了在内存中注入一个比特错误的可能性。
注意:对MTU MBIST SSH的具体理论知识可查看以下博客:https://blog.csdn.net/qq_41164088/article/details/134373862?spm=1001.2014.3001.5501。

2 步骤1:MTU 模块使能

  当MTU模块未使能时,SSH警告将不会转发到SMU。如果在禁用期间产生了警告,那么当被使能后,之前触发的警告将会被转发到SMU。

2.1 控制MTU模块使能的寄存器 - Clock Control Register

  • CLC.DISR = 1:MTU模块被禁用。(未配置之前默认MTU模块禁用。
  • CLC.EDIS=1:Sleep模式下,不接受任何请求。(MTU模块禁用。)
    在这里插入图片描述

2.2 代码

void SM202_RamMtuMbist_MtuModuleEnableIinit(void)
{
   
    Ifx_SCU_WDTCPU *wdt      = &MODULE_SCU.WDTCPU[0];
	unsigned short  cpuWdtPw = Ifx_Ssw_getCpuWatchdogPassword(wdt);

    Ifx_Ssw_clearCpuEndinit(wdt, cpuWdtPw);

    /* Enable MTU Module. */
    MTU_CLC.U = 0x0U;

    Ifx_Ssw_setCpuEndinit(wdt, cpuWdtPw);
}

3 步骤二:获取当前警告状态

  SSH向MTU提供如下三种警告:

  • CE alarm(SRAM ECC Correction Error): ECCD.CERR表示CE警告状态。
  • UCE alarm(SSH Un-Correctable Error): ECCD.UCERR表示UCE警告状态。
  • ME alarm( SSH Miscellaneous Error):ECCD.MERR表示ME警告。
  • 注意:要关注错误溢出(Error Overflow)。

3.1 包含警告状态的寄存器 - Memory ECC Detection Register(MCi_ECCD (i=0-95))

  • ECCD.CERR=1:可纠正的错误警告产生。
  • ECCD.UCERR=1:不可纠正的错误警告产生。
  • ECCD.MERR=1:杂项错误警告产生。
  • ECCD.EOV:检测到的错误比错误跟踪寄存器还多;或者有多个内存块同时出现错误。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.2 代码

static uint32 SM202_RamMtuMbist_CheckEccdRegErrorAlarmStatusIinit(IfxMtu_MbistSel sramMbistSel)
{
   
    Ifx_MTU_MC *mc = (Ifx_MTU_MC *)(MTU_MC0_ECCD + 0x100 * sramMbistSel);

    return (uint32)(mc->ECCD.U & (IFXMTU_ERROR_FLAGS_MASK));
}

static void SM202_RamMtuMbist_ClearEccdAndFaultstsRegErrorAlarmStatusIinit(IfxMtu_MbistSel sramMbistSel)
{
   
    Ifx_MTU_MC *mc = &MODULE_MTU.MC[sramMbistSel];

    uint16 safetyWdtPassword = Ifx_Ssw_getSafetyWatchdogPassword();

    mc->ECCD.B.SERR  = 0;                                       /* Error Detected   */
    mc->ECCD.B.CERR  = 0;                                       /* CE alarm occured */
    mc->ECCD.B.UCERR = 0;                                       /* Uncorrectable Error Alarm Occured */
    mc->ECCD.B.MERR  = 0;                                       /* Miscellaneous Error Alarm Occured */
    mc->ECCD.B.TRC   = IFX_MTU_MC_ECCD_TRC_MSK;                 /* Tracking Clear */
    mc->ECCD.B.EOV   = 0;                                       /* Error Overflow */
    mc->FAULTSTS.B.OPERR &= MTU_CLEAR_FAULTSTS_OPERR0_MSK;      /* SSH Critical Operation Error Occured */

    Ifx_Ssw_clearSafetyEndinit(safetyWdtPassword);
    Ifx_Ssw_setSafetyEndinit(safetyWdtPassword);
}

4 步骤三:初始化SRAM

4.1 初始化步骤

在这里插入图片描述
1)使能SSH初始化完整的SRAM可能触发UCE警告,因此,警告反应需要被禁用。ALMSRCS.OPENE = 0:禁止检测并转发SSH/SRAM操作关键错误作为UCE警告。
2)FAULTSTS. MISCERR存储各种错误的状态,这些错误可能对SSH或SRAM操作不直接关键,但如果存在隐藏状态,则可能导致未来的严重故障。因此,该警告反应需要被禁用。ALMSRCS.MISCERR= 0:禁止检测并转发SSH/SRAM操作关键错误作为ME警告。
3)使能SSH - MEMTESTi.MEMxEN(i=0-2,x=0-31) = 1;
4)检测内存自动初始化运行状态 - 轮询MEMSTATi.MEMxAIU(i=0-2,x=0-31)。MEMSTATi寄存器显示每个SSH实例当前是否正在执行一个自动初始化序列,1表示正在执行自动初始化序列。
5)使能清除SRAM - MCi_MCONTROL.SRAM_CLR=1,1表示清除SRAM,用0和正确的ECC填充。
6)启动内存测试 - MCi_MCONTROL.START=1,1表示启动内存测试功能。实测发现:内存测试启动后,需要先清除START,再去轮询DONE位。注意:内存测试结束后, MSTATUS.DONE会被置1。可以轮询该位确认测试是否结束。
7)检测内存测试状态 - 轮询MCi_MSTATUS.DONE。
8)禁用SSH - MEMTESTx.MEMxEN

  • 22
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Aurix MTU(Memory Test Unit)是一种针对嵌入式系统中内存的检测和测试工具。TC 397是指Aurix中的一个测试用例或者相关规范。 内存检测是嵌入式系统开发中非常重要的一环,它主要用于确保系统的稳定性和可靠性。Aurix MTU可以在设计和生产阶段对内存模块进行全面的测试和诊断,以确保内存的质量和可靠性。 Aurix MTU的工作原理是通过对内存进行读写操作,并对读写结果进行验证,以检测内存中是否存在故障或错误。它可以检测到多种类型的内存故障,如数据丢失、位翻转、位失效、存储器损坏等。此外,Aurix MTU还可以进行多种测试模式的切换,以适应不同的应用场景和测试需求。 内存检测是嵌入式系统开发中必不可少的一项工作,它对于确保系统的稳定性和可靠性至关重要。Aurix MTU提供了一种简单而有效的方式来进行内存测试,它可以帮助开发人员及时发现内存中的故障并进行修复,从而提高系统的可靠性和性能。 总之,TC 397 Aurix MTU内存检测是一种针对Aurix嵌入式系统中内存测试和诊断工具,它的作用是确保系统的稳定性和可靠性,并提供了多种测试模式以适应不同的应用场景和需求。 ### 回答2: tc 397是AURIX MTU内存测试单元)的规范,用于测试AURIX芯片上的内存模块。 AURIX芯片是一种高性能的嵌入式微控制器,广泛应用于汽车电子系统和工业控制领域。MTU是AURIX芯片上的一个模块,用于测试内存的可靠性和稳定性。 tc 397规范中描述了对AURIX MTU进行内存测试的方法和要求。这个测试旨在确保内存模块能够正常工作,不会发生数据错误或存储故障。 在进行内存测试之前,需要编写测试程序,并将其加载到AURIX芯片上运行。测试程序会执行一系列测试,如随机数据写入和读取、地址线和数据线测试、擦除测试等。 通过执行这些测试,可以检测内存中的潜在问题,如写入错误、读取错误、位反转错误等。如果有错误被检测到,测试程序会记录错误信息以便后续分析。 内存测试可以帮助开发人员对AURIX芯片进行故障分析和排除,确保其在实际应用中的可靠性和稳定性。同时,tc 397规范也为开发人员提供了一套标准化的内存测试方法,以确保测试的统一性和可比性。 总的来说,tc 397 aurix mtu内存检测是针对AURIX芯片上的内存模块进行的一系列测试,旨在保证内存的可靠性和稳定性,提高AURIX芯片在汽车电子和工业控制等领域的应用质量。 ### 回答3: TC 397是一种用于AURIX系列芯片的MTU(Memory Test Unit,内存测试单元)的测试方法。AURIX芯片是用于汽车电子系统的高性能微控制器。 MTU内存检测是一种用于检测AURIX芯片中内置的存储器单元的方法。内存在嵌入式系统中起着至关重要的作用,因为它们用于存储程序代码、数据和临时变量等信息。 TC 397使用MTU进行内存检测的主要目的是确保内存的可靠性和稳定性。内存故障可能会导致系统崩溃、程序运行出错或数据丢失等问题,因此进行内存检测是十分重要的。 TC 397通过使用MTU模块中的各种测试模式和算法来检测内存。这些测试模式包括读/写测试、地址线测试、数据线测试等。通过对内存进行多种测试,可以检测出不同类型的内存错误,如位翻转、读写冲突、数据损坏等。 进行TC 397 MTU内存检测时,首先需要配置MTU模块的寄存器并设置测试模式和测试参数。然后,启动内存测试MTU自动检测内存的各种错误。在测试完成后,可以通过读取MTU模块的状态寄存器来获取内存测试结果。 在实际应用中,TC 397 MTU内存检测可以在生产阶段用于对AURIX芯片进行出厂测试,以确保芯片的质量和可靠性。此外,也可以在系统部署和运行阶段对内存进行定期测试,以确保系统的稳定性和可靠性。 总之,TC 397是一种用于AURIX芯片的MTU内存检测方法,通过使用MTU模块的测试模式和算法来检测内存错误,以确保内存的可靠性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值