Сбой образа во время работы - PullRequest
0 голосов
/ 18 октября 2018

Я использую приведенный ниже скрипт 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."

Предполагается, что скрипт считывает всю память, которая в моем случае составляет 1 МБ, но делает это очень редко.Обычно он перестает читать память до конца.

Почему я не могу получить 1 МБ каждый раз, когда я выполняю этот скрипт?В чем проблема, чтобы openocd прекратил дамп остальной памяти?

1 Ответ

0 голосов
/ 18 октября 2018

Вы можете использовать dfu-utils для перепрошивки ваших микросхем STM32.

В дистрибутивах Ubuntu / Debian вы можете установить dfu-utils с помощью apt:

$ 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например, перечисленный lsusb в режиме DFU.

С опцией -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 вы указываете адрес флэш-памяти, куда вы сохраняете бинарный файл.Проверьте карту памяти в таблице.

Надеюсь, это поможет!: -)

...