Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кармин Новиелло - Освоение STM32.pdf
Скачиваний:
2751
Добавлен:
23.09.2021
Размер:
47.68 Mб
Скачать

Введение в отладку

132

5.1.1. Запуск OpenOCD

Прежде чем мы настроим Eclipse для использования OpenOCD в нашем проекте, лучше взглянуть на то, как OpenOCD работает на более низком уровне. Это позволит нам ознакомиться с ним и, если что-то не будет работать должным образом, это позволит лучше исследовать проблемы, касающиеся конфигурации OpenOCD.

Инструкции по запуску OpenOCD различны для Windows и UNIX-подобных систем. Итак, перейдите к параграфу, соответствующему вашей ОС.

5.1.1.1.Запуск OpenOCD на Windows

Откройте инструмент «Командная строка Windows»4, перейдите в папку C:\STM32Toolchain\openocd\scripts и выполните следующие команды:

$ cd C:\STM32Toolchain\openocd\scripts

$ ..\bin\openocd.exe -f board\<nucleo_conf_file.cfg>

где <nucleo_conf_file.cfg> должен быть заменен конфигурационным файлом, который подходит вашей плате Nucleo, в соответствии с таблицей 15. Например, если ваша Nucleo – Nucleo-F401RE, тогда правильным конфигурационным файлом для передачи в

OpenOCD будет st_nucleo_f4.cfg.

Таблица 1: Соответствующий файл OpenOCD для имеющихся плат Nucleo

Nucleo P/N

Скрипт OpenOCD 0.10.0 для платы

NUCLEO-F446RE

st_nucleo_f4.cfg

NUCLEO-F411RE

st_nucleo_f4.cfg

NUCLEO-F410RB

st_nucleo_f4.cfg

NUCLEO-F401RE

st_nucleo_f4.cfg

NUCLEO-F334R8

stm32f334discovery.cfg

NUCLEO-F303RE

st_nucleo_f3.cfg

NUCLEO-F302R8

st_nucleo_f3.cfg

NUCLEO-F103RB

st_nucleo_f103rb.cfg

NUCLEO-F091RC

st_nucleo_f0.cfg

NUCLEO-F072RB

st_nucleo_f0.cfg

NUCLEO-F070RB

st_nucleo_f0.cfg

NUCLEO-F030R8

st_nucleo_f0.cfg

NUCLEO-L476RG

st_nucleo_l476rg.cfg

NUCLEO-L152RE

st_nucleo_l1.cfg

NUCLEO-L073RZ

st_nucleo_l073rz.cfg

NUCLEO-L053R8

stm32l0discovery.cfg

Если все прошло успешно, вы должны увидеть сообщения, похожие на те, что показаны на рисунке 2.

4 Настоятельно рекомендуется использовать приличный эмулятор терминала, такой как ConEmu (https://conemu.github.io/) или аналогичный.

5 OpenOCD 0.10.0 по-прежнему не обеспечивает полную поддержку всех типов плат Nucleo, но сообщество усердно работает над этим, и в следующем основном выпуске поддержка будет завершена. Однако вы можете использовать альтернативные конфигурационные файлы для работы с Nucleo во время написания данной главы.

Введение в отладку

133

Рисунок 2: Что появляется в командной строке, когда OpenOCD запускается правильно

В то же время светодиод LD1 на плате Nucleo должен начать мигать ЗЕЛЕНЫМ и КРАСНЫМ поочередно. Теперь мы можем перейти к следующему параграфу.

5.1.1.2.Запуск OpenOCD на Linux и на MacOS X

Пользователи Linux и MacOS X используют одни и те же инструкции. Перейдите в папку

/STM32Toolchain/openocd/scripts и выполните следующую команду:

$ cd ~/STM32Toolchain/openocd/scripts

$ ../bin/openocd -f board/<nucleo_conf_file.cfg>

где <nucleo_conf_file.cfg> должен быть заменен конфигурационным файлом, который подходит вашей плате Nucleo, в соответствии с таблицей 1. Например, если ваша Nucleo

– Nucleo-F401RE, тогда правильным конфигурационным файлом для передачи в

OpenOCD будет st_nucleo_f4.cfg.

Если все прошло успешно, вы должны увидеть сообщения, похожие на те, что показаны на рисунке 2. В то же время светодиод LD1 на плате Nucleo должен начать мигать ЗЕЛЕНЫМ и КРАСНЫМ поочередно. Теперь мы можем перейти к следующему параграфу.

Введение в отладку

134

Распространенные проблемы OpenOCD на платформе Windows

Если у вас возникли проблемы с попыткой использования OpenOCD в Windows, возможно, данный параграф поможет вам в их решении.

Очень часто пользователи Windows не могут использовать OpenOCD при первом запуске после установки. При выполнении OpenOCD выдается сообщение об ошибке, касающееся libusb, как показано в строках 13-15 ниже.

1Open On-Chip Debugger 0.10.0 (2015-05-19-12:09)

2Licensed under GNU GPL v2

3For bug reports, read http://openocd.org/doc/doxygen/bugs.html

4Info : The selected transport took over low-level target control. The results might differ com\

5pared to plain JTAG/SWD

6adapter speed: 2000 kHz

7adapter_nsrst_delay: 100

8none separate

9srst_only separate srst_nogate srst_open_drain connect_deassert_srst

10Info : Unable to match requested speed 2000 kHz, using 1800 kHz

11Info : Unable to match requested speed 2000 kHz, using 1800 kHz

12Info : clock speed 1800 kHz

13Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED

14Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED

15Error: libusb_open() failed with LIBUSB_ERROR_ACCESS

16Error: open failed

17in procedure 'init'

18in procedure 'ocd_bouncer'

Это происходит, потому что для интерфейса отладки ST-LINK используется неправильная версия libusb. Чтобы решить данную проблему, загрузите утилиту Zadiga для вашей версии Windows. Запустите инструмент Zadig, убедившись, что ваша плата Nucleo подключена к USB-порту, и перейдите в меню Option → List All Devices. Через некоторое время в поле с выпадающим списком устройств должен появиться пункт ST-LINK Debug (Interface 0).

Если установленный драйвер не WinUSB, выберите его и нажмите кнопку Reinstall Driver, как показано ниже.

a http://zadig.akeo.ie/