我将 MC33FS6522NAE 作为 SBC 连接到 5744P。我需要在引导中禁用 SBC WDG 和 FCCU,并在 App 中对其进行初始化。
1) 在开机 POR 时,如果存在则检查 Valid App 移动到 App。Boot 中没有 SBC 初始化,在 App 中执行 SBC 初始化并启用 WDG 和 FCCU。
2) 进入 App 后,如果刷机工具 (UDS) 发送跳转至 Boot msg (10 02 Reprogramming),App 更新 stay_in_boot 标志(在 ram 中)并使用以下代码进行 SW Reset
MC_RGM.FRET.B.FRET = 0x010;
MC_ME.MCTL.R = 0x00005AF0;/* 写入密钥 */
MC_ME.MCTL.R = 0x0000A50F; /* 写入反转密钥 */
3) 现在在 SW 重置之后(如步骤 2 中所述),我使用下面的内容来了解引导中的重置原因。但是我如何区分 Jump to Boot 请求和 SBC RstB 断言。我可以检查 MC_RGM_FBRE.BE_Soft_func 位以在下面引入新的枚举 MCU_SBC_RESET 吗?
如果(MC_RGM.DES.B.F_EDR){
rv = MCU_POWER_ON_RESET;
} else if( MC_RGM.FES.B.F_SOFT_FUNC ) {
rv = MCU_SW_RESET;
} else if( MC_RGM.DES.B.F_POR || MC_RGM.FES.B.F_EXR ) {
rv = MCU_POWER_ON_RESET;
} else {
rv = MCU_RESET_UNDEFINED;
}
4) 如果我通过上面的第 3 步并看到原因为 MCU_SW_RESET(第 2 步的 bcos)继续检查 stay_in_boot 标志是否已设置然后将 SBC WD Period 更改为 0 以禁用(SBC 是否允许我禁用 WDG)并等待 CAN 上的 UDS 闪烁。
5) 完成 App Flashing 或
timeout(没有来自工具的请求)后,我将通过将 SF_OUTPUT_REQUEST 中的位 Rstb_req 设置为重置来请求 rstb 低脉冲,以便 SBC 处于 INIT_FS 模式,并且我可以在 App 中配置 SBC。
这是将 SBC FS65 配置为与 APP 和 Boot 一起工作的正常方法吗?
stay_in_boot 还会保留 SBC RSTB 断言中的值吗?它确实保留了步骤 2 中提到的软件重置。