我正在使用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()。
我试图搜索解决方案,但找不到它。
由于 边
答案 0 :(得分:1)
这是一个OpenOCD问题,而不是代码问题。当调试器命令文件引用“stlink-v2-1”但我实际拥有的是“stlink-v2”时,我遇到了这个问题。我正在使用STM32F0 Discovery板。
我相信Nucleo主板有“stlink-v2-1”所以你可能会遇到与我相反的问题。检查以确保“运行菜单>调试配置>调试器> OpenOCD设置”下的设置被设置为正确的调试器。
如果正在使用调试配置文件(选择“使用默认脚本”或“使用本地脚本”选项),请打开该文件并查找如下行:
source [find interface/stlink-v2.cfg]
在我的例子中,项目向导创建了一个引用stlink-v2-1的模板。将其更改为上面修复了问题。
更新:
当Eclipse崩溃并让OpenOCD在后台运行时,我也遇到了这个问题。运行
$ ps aux | grep openocd
如果您看到调试器没有运行OpenOCD的实例,请将其删除。
答案 1 :(得分:1)