Программирование STM32F3Discovery с помощью openocd


Прежде всего, я прошу прощения за мой очень плохой английский.
Я учусь использовать плату STM32F3Discovery. Я написал простую программу, которая включает все встроенные светодиоды, используя STMCubeMX для генерации кода конфигурации.
Код, который я написал, состоит всего из следующих восьми строк.

  HAL_GPIO_WritePin(GPIOE, GPIO_PIN_8, GPIO_PIN_SET);
  HAL_GPIO_WritePin(GPIOE, GPIO_PIN_9, GPIO_PIN_SET);
  HAL_GPIO_WritePin(GPIOE, GPIO_PIN_10, GPIO_PIN_SET);
  HAL_GPIO_WritePin(GPIOE, GPIO_PIN_11, GPIO_PIN_SET);
  HAL_GPIO_WritePin(GPIOE, GPIO_PIN_12, GPIO_PIN_SET);
  HAL_GPIO_WritePin(GPIOE, GPIO_PIN_13, GPIO_PIN_SET);
  HAL_GPIO_WritePin(GPIOE, GPIO_PIN_14, GPIO_PIN_SET);
  HAL_GPIO_WritePin(GPIOE, GPIO_PIN_15, GPIO_PIN_SET);

Копия проекта Eclipse находится здесь.
Я пытаюсь запрограммировать плату с помощью openocd, поэтому запускаю

openocd -f /usr/share/openocd/scripts/board/stm32f3discovery.cfg -f /usr/share/openocd/scripts/interface/stlink-v2.cfg

тогда

​telnet localhost 4444 
​reset halt
flash write_image erase blink.elf
​reset

Вывод openocd

Open On-Chip Debugger
> reset halt
target state: halted
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x2b061a1a msp: 0x48054b04
> flash write_image erase blink.elf
auto erase enabled
couldn't open blink.elf
in procedure 'flash'
> flash write_image erase blink.elf
auto erase enabled
device id = 0x10036422
flash size = 256kbytes
target state: halted
target halted due to breakpoint, current mode: Thread 
xPSR: 0x61000000 pc: 0x2000003a msp: 0x48054b04
wrote 2048 bytes from file blink.elf in 0.224231s (8.919 KiB/s)
> reset

Но ни один из светодиодов не горит!
Что мне делать?


person Salvatore Barone    schedule 02.08.2016    source источник
comment
2048 байт выглядит маловато даже для такой простой программы, когда задействованы библиотеки HAL   -  person followed Monica to Codidact    schedule 02.08.2016
comment
Целевое состояние остановлено, да? Попробуйте «сбросить запуск» в приглашении telnet.   -  person Sohail    schedule 22.08.2016


Ответы (1)


Сообщение couldn't open blink.elf указывает на то, что файл blink.elf может отсутствовать в текущем каталоге.

Обязательно выполните команду openocd из папки, содержащей образ прошивки blink.elf, который вы собираетесь запрограммировать.

person Ivo Clarysse    schedule 16.07.2019