【问题标题】:Not able to program STM32 MCU using JTAG interface无法使用 JTAG 接口对 STM32 MCU 进行编程
【发布时间】:2019-04-17 02:28:12
【问题描述】:

单片机:STM32L496

JFlash 版本:v6.32i

当我们尝试使用 STM32 MCU 对开发板进行编程时,我们遇到了“重置时与目标的连接失败”的问题。

我们之前对电路板进行了编程,没有任何问题。这个错误开始突然出现,现在我们无法对电路板进行编程。当我们确定 MCU 的复位引脚时,当我们单击 JFlash 中的连接按钮时,复位引脚变为低电平,并且显然电路板正在复位(我们可以看到固件功能正在重新启动)。

我们尝试了以下方法:

将 BOOT0 引脚连接到 VDD 并尝试引导至系统内存,然后尝试编程。但这并没有什么不同。

尝试闪烁时始终将复位引脚拉低至 GND。 我们已确保通向 MCU 的 JTAG 接口的轨道没有问题。

您能帮忙解决这个问题吗?

MCU中当前运行的固件是否有可能阻止闪烁并锁定设备?

【问题讨论】:

  • 如果连接正常,您是否检查过另一个板/控制器?
  • 是的,我们还有两块原型板。我们检查了两块板的闪烁。其中一块板子也进入了不可闪存状态(即,这实际上使我们怀疑我们的应用程序固件会阻止程序闪烁)。但是,第三块板工作正常。
  • 嗨哈里普。您的固件使用的低功耗模式是什么?
  • 现在我们没有在固件中使用任何低功耗模式。我们正在运行 FreeRTOS 任务调度程序。
  • 成功的 JTAG 连接与对闪存的编程能力无关。 J-Flash 输出文本可能包含有用的信息 - 您应该将其复制并粘贴到您的问题中。例如,它表示关键的电源电压。是否有可能您启用了读出保护?在您的 J-Flash 安装文件夹中,您将找到一个命令行工具 JLinkSTM32.exe;我的部件以 J-Flash 软件无法连接但可以使用此工具恢复的方式锁定。它会使您的设备空白。

标签: embedded stm32 jtag


【解决方案1】:

STM32L4 具有称为读出保护 (RDP) 的功能。请参阅AN4758 的第 1.1 节。如果您的固件应用程序(有意或无意地)将“选项字节”内存区域中的 RDP 级别设置为 1 或 2,则 SWD/JTAG 端口将被禁止访问闪存(读取、写入和擦除)。

如果 RDP 是级别 0 或 1,那么您应该能够读取选项字节存储区。如果 RDP 为 1 级,那么您应该能够将其设置回 0 级。将 RDP 设置回 0 级时闪存将被擦除,但 SWD/JTAG 端口将重新启用。如果 RDP 级别为 2,那么我相信没有办法重置它。

【讨论】:

  • 即使启用了读出保护,也应该可以连接 JTAG/SWD - 您必须能够获得连接才能禁用 RDP。理想情况下,问题应该包括 J-Flash 诊断日志文本,以查看它在哪个点失败。
  • @Clifford 在我们的例子中,我们无法连接到开发板。我已在问题中附上了图片。
【解决方案2】:

这是 STM32 SWD 接口的常见问题。为了成功编程,您不应使用 ST 链路电源为您的定制板/其他硬件供电,而应使 GND 连接共用并由外部电源供电。如果您仅将 ST 链接用于编程而不用于调试,那么您应该使用 STM32 引导加载程序(更简单)。

【讨论】:

    猜你喜欢
    • 2014-10-13
    • 2020-10-07
    • 2012-02-29
    • 2015-09-29
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    相关资源
    最近更新 更多