故障排除

本页面包含针对 RAMN 的常见故障排除方法,主要用于解决重新刷写和调试相关的问题。

USB 不稳定

如果您遇到 USB 问题,请尝试使用计算机上的其他 USB 端口。如果您通过 USB 集线器连接到 RAMN,请尝试直接将 RAMN 连接到计算机的 USB 端口。

预期选项字节

如果您在重新编程或调试 RAMN 时遇到困难,请使用STM32CubeProgrammer确保选项字节如下所示。

ECU A 与 ECU B/C/D 的配置有所不同。

ECU A 选项字节的正确配置

警告

如果 ECU A 没有有效的固件(例如,因编程失败或中断),请勿更新其 Option Bytes。

ECU B/C/D 选项字节的正确配置

在使用 UDS 重新编程时,SWAP_BANKDBANK 可能会被修改,但如果您遇到问题,请尝试恢复为默认设置。

应将 RDP 选项字节设置为 0xAA,以确保未启用任何内存保护。

重置选项字节后,您可能需要重新刷新固件。

调试失败

如果您在使用 STM32CubeIDE 时遇到调试问题,但确定 JTAG 连接正确(例如,您可以使用STM32CubeProgrammer进行连接),请参阅 调试 RAMN 固件

内存保护不一致

您可以使用 STM32 引导加载程序来启用内存读取和写入保护。同样,您也可以通过修改 RDP 选项字节来启用或禁用内存保护。

如果您使用一种方法启用了保护,而用另一种方法将其移除(例如,您使用 STM32 引导加载程序启用了写保护,但后来又通过 JTAG 移除了读保护),可能会出现问题。此时,微控制器可能看似已解锁,但实际上会拒绝固件重新编程或调试操作。

如果您怀疑存在此问题(因为您过去曾使用过内存保护功能),请尝试使用 scripts/STBootloader 文件夹中的 canboot.py 脚本运行“读取解锁”和“写入解锁”命令。 如果您的内存保护功能不一致,这些命令可能会返回错误,即使它们实际上已经成功执行。

例如,对于 ECU B:

1python canboot.py AUTO B -ru
2python canboot.py AUTO B -wu

通过 CAN 重新编程失败

如果通过 CAN 重新编程失败,可能是由于外部 CAN 适配器主动使用错误帧破坏通信流量所致(因为它未执行所需的波特率更改)。 在通过 CAN 进行重新编程之前,请确保已关闭和/或拔下所有外部 CAN 适配器。

驱动程序问题

意法半导体的 DfuSe 工具可用于通过 USB 对 ECU A 进行编程(当 ECU A 处于 DFU 模式时)。如果 Windows 通过 USB 将 ECU A 识别为“DFU 在 FS 模式下”,但设备信息显示为“未知”或“不可用”,则可能需要单独安装 STM32 DFU 驱动程序,这些驱动程序位于 DFuse 的安装文件夹中,例如:

1C:\Program Files (x86)\STMicroelectronics\Software\DfuSe v3.0.6\Bin\Driver