S32K144 RAM 测试在启动阶段失败 当我在启动阶段进行下面的内存测试时,它总是在 step3 中RESET,我找不到原因, 请帮帮我/(ㄒoㄒ)/~~ -----------------------↓----------------↓----------------------------------- ;;RAM 测试 (__RAM_START=0x1FFF9000 /__RAM_END=0x20006FFF) ;;STEP 1 - 写入背景 00,地址递增 LDR R1, =__RAM_START LDR R2, =__RAM_END subs r2, r2, r1 subs r2, #1 ble .ts1_2 movs r0, #0 movs r3, #4 .ts1_1: ;测试步骤 1.1 str r0, [r1] add r1, r1, r3 subs r2, #4 bge .ts1_1 .ts1_2: ;测试步骤 1.1 ;;第 2 步 - 验证背景并写入反相背景 0xFF,地址递增 LDR R1, =__RAM_START LDR R2, =__RAM_END subs r2, r2, r1 subs r2, #1 ble .ts2_2 LDR R3, =0xFFFFFFFF .TS2_1: ;测试步骤 2.1 LDR R0, [R1] CMP R0, #0 BNE Fst_RAMTSTFAIL str r3, [r1] adds r1, r1, #4 subs r2, #4 bge .ts2_1 .ts2_2: ;测试步骤 2.2 ;;第 3 步 - 验证反相背景 0xFF,并写入背景 0x00,地址为 增加 ldr r1, =__ram_start ldr r2, =__ram_end 子系统 R2、R2、R1 SUBS R2, #1 BLE .TS3_2 MOVS R4, #0 .ts3_1: ;测试步骤 3.1 LDR R0, [R1] LDR R3, =0xFFFFFFFF CMP R0, R3 BNE Fst_RAMTSTFAIL STR R4、[R1] 追加 R1、R1、#4 SUBS R2, #4 BGE .TS3_1 .TS3_2: ;测试步骤 3.2 ;;第 4 步 - 验证背景 0x00,并写入反转背景 0xFF,地址为 .... 第 5 步 - 核实反转背景并写入背景,地址递减 .... Re: S32K144 RAM test failed in startup phase 你好@丹尼尔-马蒂内克 我在禁用 wdog 之前做了 ram 测试,所以它会 RESET! 在 s32k118(内存大小为 23k)上没有出现这种情况,因为要测试的内存小于 32k144(内存大小为 64k)。 我在内存测试前禁用了监控程序,结果运行正常😁 谢谢 Re: S32K144 RAM test failed in startup phase 你好,@李杰都、
在 RESET 状态下,WDOG 默认处于启用状态:
danielmartynek_0-1753946893835.png
它在启动过程中被禁用:
danielmartynek_1-1753946992275.png
此致,
丹尼尔
Re: S32K144 RAM test failed in startup phase 我找到了 RESET 原因,但仍然对此感到困惑,我甚至没有配置 wdog。 LijieDu_0-1753931796098.png Re: S32K144 RAM test failed in startup phase 你好@丹尼尔-马蒂内克 很难找到 RESET 原因!这就是我在这里寻求帮助的原因😭 执行 RESET 处理程序(RESET 向量表)时,MCU 为空,然后它初始化寄存器 R1-R12 并启动 RAM 测试。其他什么都没做。 Re: S32K144 RAM test failed in startup phase 你好,@李杰都、
你还能识别 RESET 源吗? Re: S32K144 RAM test failed in startup phase 你好@丹尼尔-马蒂内克 感谢您的回答,我已经执行了 HardFault 处理程序,但它没有运行。 这个代码用在 s32k118 上,我在 s32k144 上重复使用它,区别在于 RAM_START 和 RAM_END 的定义。 是代码出了问题,还是我忽略了 s32k144 的其他功能? Re: S32K144 RAM test failed in startup phase 你好,@李杰都、
你知道 MCU RESET 的地址吗?
如果 MCU 意外 RESET,则可能是内核锁定造成的,这会设置 RCM_SRS [LOCKUP] 标志。这种情况通常发生在故障(如 HardFault)发生时,而项目中没有执行有效的 HardFault_Handler。
为了改进调试并更有效地捕获这些异常,我建议实施自定义 HardFault_Handler。
此致,
丹尼尔
記事全体を表示