TI中文支持网
TI专业的中文技术问题搜集分享网站

RM44L520: RM44L520: 在PBIST对RAM自检时,会覆盖所有的栈数据,因此在自检完成后进入abort

Part Number:RM44L520Other Parts Discussed in Thread: HALCOGEN

你好。

我在使用RM44L520芯片时出现了问题,在使用TI提供的diagLib诊断库时,在sys_startup.c中调用SL_SelfTest_PBIST对所有TCMRAM进行自检时,自检完成后会覆盖所有的栈数据,因此在此函数return时,使用POP指令出栈就会进入abort异常。  请问一下,这个问题是否正常,应该怎么处理?

Cherry Zhou:

您好,您的问题我们需要升级到英文论坛看下,有答复尽快给到您。

,

Cherry Zhou:

您好,

user4724084 said:请问一下,这个问题是否正常,

这个是正常的,PBIST 通常在器件启动时运行,因为它是一个破坏性测试,并且在测试期间被测试的 SRAM 模块的所有内容会被覆盖。 SRAM 分为多个组,您可以将数据和指令放在一个 SRAM 组中,并测试其他 SRAM 组。 

当您在 MCU SRAM 上执行 PBIST 时,堆栈区域中的内容也将丢失。 这就是为什么在 HALCoGen 生成的 c_int00 ()中执行 SRAM pbist 测试的原因。 

如果在启动期间对 SRAM 执行 PBIST,那么则无需将 SRAM 内容保存到其他位置,因为它不包含任何有用的数据(刚刚初始化)。 如果您对 SRAM 执行定期 pbist 测试,那么就需要在开始测试之前保存 SRAM 内容。 

更多详细信息可以参阅下以下帖子:

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/608569/rm46l430-safety-manual-states-that-ram7a-ram7b-are-covered-by-sl_selftest_pbist-but-sl_selftest_pbist-cannot-be-run-the-tcram-as-running-the-test-corrupts-the-c-runtime-system?tisearch=e2e-sitesearch&keymatch=%2522SL_SelfTest_PBIST%2522%2520AND%2520%2522stack%2522

https://www.ti2k.com/wp-content/uploads/ti2k/DeyiSupport_OtherMCU_3810810

,

user4724084:

非常感谢您的回复。

我理解了您的意思,但是我正是在c_int00 ()中执行 SRAM pbist 出现的问题。使用的是TI提供的诊断库自带的sys_startup.c文件,而不是halcogen生成的文件。

void afterSTC(void)
{SL_CCMR4F_FailInfofailInfoCCMR4F;/* CCMR4 Self Test fail info */volatile booleanretVal;/* For function return values */SL_PBIST_FailInfofailInfoPBISTSRAM;/* PBIST Failure information for TCM RAM */SL_SelfTest_ResultfailInfoFlash;/* Flash Self test failure information */SL_SelfTest_ResultfailInfoTCMRAM;/* TCM RAM Failureinformation */SL_PBIST_FailInfofailInfoPBISTOthers;/* PBIST Failure information for non-TCM memories */SL_EFuse_ConfigstConfigEFuse;/* EFuse self test configuration */............retVal = SL_SelfTest_PBIST(	PBIST_EXECUTE,/* Execute PBIST test */(PBIST_RAMGROUP_06_ESRAM1 | PBIST_RAMGROUP_21_ESRAM5),/* On all TCM RAMs */PBISTALGO_MARCH13N_RED_1PORT);while (TRUE != SL_SelfTest_WaitCompletion_PBIST()){}............
}

如上面的代码,在调用SL_SelfTest_PBIST时,自然产生了压栈和出栈操作,这与halcogen自动生成的代码并不一致。

所以产生如下问题:

1:TI提供的诊断库代码是否有问题?

2:为什么在debug调试时会在SL_SelfTest_PBIST函数返回时出栈故障进入abort,但在release全速运行时,又能正常进入main?

期待您的解惑。

,

Cherry Zhou:

抱歉回复晚了。

在执行 pbist 测试之前,您有没有将任何指令和数据放入 SRAM? 是abort Data abort还是prefetch abort?

CP15数据故障状态寄存器和指令故障状态寄存器中的故障状态是什么?

在 RELEASE 模式下要使用不同的优化级别。 您是否发现 pbist 自检函数中的哪条指令(反汇编)导致了中止? 

赞(0)
未经允许不得转载:TI中文支持网 » RM44L520: RM44L520: 在PBIST对RAM自检时,会覆盖所有的栈数据,因此在自检完成后进入abort
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1