stm32l0:无法执行MI命令。使用vFlashErase数据包擦除闪存时出错

时间:2016-08-12 09:49:14

标签: eclipse stm32

我正在使用Nucleo STM32L031和AC6 STM32工作台(eclipse)。

我编写应用程序并进入调试模式,在我的应用程序中添加另一个函数之前,everthing工作正常。我注意到当我删除/注释“ new_function ”时,软件可以再次进入调试模式。但是,当我将“ new_function ”添加到代码并进行调试时,会发生错误,无法进入调试模式。

Error: Error in final launch sequence
Failed to execute MI command:
load C:Project_STM32L031K6-Nucleo\\Debug\\Project.elf 

Error message from debugger back end:
Error erasing flash with vFlashErase packet
Error erasing flash with vFlashErase packet

此错误不仅针对此特定“new_function”发生,也适用于其他功能,例如STM32Cube生成的TIM21_Init()。

我试图搜索解决方案,但找不到它。

由于 边

2 个答案:

答案 0 :(得分:1)

这是一个OpenOCD问题,而不是代码问题。当调试器命令文件引用“stlink-v2-1”但我实际拥有的是“stlink-v2”时,我遇到了这个问题。我正在使用STM32F0 Discovery板。

我相信Nucleo主板有“stlink-v2-1”所以你可能会遇到与我相反的问题。检查以确保“运行菜单>调试配置>调试器> OpenOCD设置”下的设置被设置为正确的调试器。

enter image description here

如果正在使用调试配置文件(选择“使用默认脚本”或“使用本地脚本”选项),请打开该文件并查找如下行:

source [find interface/stlink-v2.cfg]

在我的例子中,项目向导创建了一个引用stlink-v2-1的模板。将其更改为上面修复了问题。

更新:

当Eclipse崩溃并让OpenOCD在后台运行时,我也遇到了这个问题。运行

$ ps aux | grep openocd

如果您看到调试器没有运行OpenOCD的实例,请将其删除。

答案 1 :(得分:1)

就我而言(stm32f429)更改此选项有助于: option to change