各位NXP专家,大家好!
我正在使用S32K388进行开发,并以SPD (安全外设驱动程序) v1.0.6为参考来实现 STCU/BIST 功能。
在我的main.c 文件中,我启用了 BIST 测试,然后从MC_RGM读取复位原因。我观察到返回的复位原因是MCU_ST_DONE_RESET 。
我有以下几个问题:
写入 STCU_WDG 寄存器的 值是否会 影响 BIST 执行期间的 在线看门狗超时 时长?换句话说, 当 BIST 执行时间超过 STCU_WDG 值时, WDTOSW 标志是否会被直接触发 ?
当 报告 MCU_ST_DONE_RESET 时,我是否可以得出结论, LBIST 和 MBIST 都已正常完成并通过 ?或者,此 RESET 原因仅表示 STCU 序列已完成,而不管是否发生超时?
就我而言, ERR_STAT 寄存器显示 WDTOSW = 1 和 RFSF = 1 (见附件截图)。这是否意味着 BIST 执行 超时并被提前终止/中止 ,导致内存测试 在完成前 被迫停止 ?或者即使 WDTOSW 已设置, 是否 仍然可以生成 MCU_ST_DONE_RESET ?
我还检查了 SPD驱动程序中的 Bist_IntegrityTest() 流程(见附件代码截图),该流程预期LBIST/MBIST完成后结束标志( LBESW0 / MBESW0 )应设置为1。然而,在实际调试过程中,我发现 LBIST和MBIST结束标志位均为0,而非1。 为什么即使 生成了 MCU_ST_DONE_RESET, 结束标志位仍然为0?
补充信息:
请问您能否帮忙解释一下STCU_WDG 、 WDTOSW 、 MCU_ST_DONE_RESET和LBESW0 / MBESW0结束标志之间的关系?
提前谢谢您。
此致, SPD_v1.0.6.png
s32k388_safety_BIST.png
debug.png
你好,
在我的main.c 文件中,我启用了 BIST 测试,然后从MC_RGM读取复位原因。我观察到返回的复位原因是MCU_ST_DONE_RESET 。
这是正确的行为。
1. 写入 STCU_WDG 寄存器的 值是否会 影响 BIST 执行期间的 在线看门狗超时 时长?换句话说, 当 BIST 执行时间超过 STCU_WDG 值时, WDTOSW 标志是否会被直接触发 ?
不。STCU_WDG 是 BIST 执行的监视程序。与SWT没有任何关联。SWT 模块也需要通过 BIST 进行测试,因此 SWT 模块在 BIST 期间无法正常工作。因此,您可以使用 STCU_WDG 来保护执行时间。
当 报告 MCU_ST_DONE_RESET 时,我是否可以得出结论, LBIST 和 MBIST 都已正常完成并通过 ?或者,此 RESET 原因仅表示 STCU 序列已完成,而不管是否发生超时?
只能得出测试程序结束的结论。结果存储在不同的寄存器中,例如 STCU2 在线 LBIST 状态 (LBSSW0) - 此类寄存器将指示您是否通过/失败条件。
就我而言, ERR_STAT 寄存器显示 WDTOSW = 1 和 RFSF = 1 (见附件截图)。这是否意味着 BIST 执行 超时并被提前终止/中止 ,导致内存测试 在完成前 被迫停止 ?或者即使 WDTOSW 已设置, 是否 仍然可以生成 MCU_ST_DONE_RESET ?
MCU_ST_DONE_RESET 总是在测试后生成。结果如何并不重要。测试过程中,寄存器和 RAM 将按照特定模式进行测试。寄存器需要设置为默认值——这些值在RESET期间加载。否则,所有寄存器都会被测试模式填满,微控制器将无法处理这样的随机值。
由于 BIST 在 RAM 上执行测试模式后,ECC 校验和将无法匹配数据,因此需要通过软件初始化 RAM。
就我而言, ERR_STAT 寄存器显示 WDTOSW = 1 和 RFSF = 1
这意味着测试失败。
我还检查了 SPD驱动程序中的 Bist_IntegrityTest() 流程(见附件代码截图),该流程预期LBIST/MBIST完成后结束标志( LBESW0 / MBESW0 )应设置为1。然而,在实际调试过程中,我发现 LBIST和MBIST结束标志位均为0,而非1。 为什么即使 生成了 MCU_ST_DONE_RESET, 结束标志位仍然为0?
如上所述。
您的 BIST 未在 STCU_WDG 超时时间内执行。
petervlna_0-1783579980607.png
顺祝商祺!
Peter
你好,
我先总结一下答案,稍后会发布。
顺祝商祺!
Peter