Stm32 操作期间图像转储失败

Stm32 操作期间图像转储失败,stm32,openocd,Stm32,Openocd,我使用下面的openocd脚本转储STM32微控制器的闪存 mkdir -p dump openocd -f board/stm3241g_eval_stlink.cfg \ \ -c "init" \ -c "reset halt" \ -c "dump_image dump/image.bin 0x08000000 0x100000" \ -c "shutdown" \ FILENAME=dump/image.bin FILESIZE=$(stat -c%s "$FILENAME") e

我使用下面的openocd脚本转储STM32微控制器的闪存

mkdir -p dump

openocd -f board/stm3241g_eval_stlink.cfg \
\
-c "init" \
-c "reset halt" \
-c "dump_image dump/image.bin 0x08000000 0x100000" \
-c "shutdown" \

FILENAME=dump/image.bin
FILESIZE=$(stat -c%s "$FILENAME")
echo "Size of $FILENAME = $FILESIZE bytes."
脚本应该读取整个内存,在我的例子中是1MB,但它很少这样做。通常,它会在结束前停止读取内存


为什么每次执行此脚本时不能获得1MB?什么问题导致openocd停止转储剩余内存?

您可以使用dfu utils刷新STM32微秒

在Ubuntu/Debian发行版中,您可以使用apt安装dfu UTIL:

$ sudo apt-get install dfu-util                                              
$ sudo apt-get install fwupd 
在DFU模式下引导电路板检查数据表。一旦进入DFU模式,您应该会看到类似的情况:

$  lsusb | grep DFU                                                          
Bus 003 Device 076: ID 0483:df11 STMicroelectronics STM Device in DFU Mode   
在DFU模式下启动后,重新刷新二进制文件:

$ sudo dfu-util -d 0483:df11 -a 0 -s 0x08000000:leave -D build/$(PROJECT).bin
使用-d选项,您可以选择product:vendorid,例如在DFU模式下由lsusb列出

使用-a 0选项选择备用模式0,检查以下示例中可用的选项:

$ sudo dfu-util -l                                                           
Found DFU: [0483:df11] ver=2200, devnum=101, cfg=1, intf=0, alt=1, name="@Option Bytes /0x1FFFF800/01*016 e", serial="FFFFFFFEFFFF"
Found DFU: [0483:df11] ver=2200, devnum=101, cfg=1, intf=0, alt=0, name="@Internal Flash /0x08000000/064*0002Kg", serial="FFFFFFFEFFFF"
如您所见,alt=0表示内部闪存

使用-s选项可以指定保存二进制文件的闪存地址。检查数据表中的内存映射


希望这有帮助!:-

您是否尝试过使用dfu util刷新STM32设备?没有,为什么要这样做?我从未将dfu*用于闪烁STM32。设置openocd用于重新闪烁STM32设备不是一项简单的任务。我一直在使用dfu utils对这样的设备进行再灰化,这非常简单。如果你需要的话,我可以试着做一个小的分步手册。是的,如果你喜欢@aicastellDone,那将非常有用!希望有帮助!:-