Ошибка Openocd: неверное имя команды "dap" - не удается подключить Blue Pill через ST-Link / V2 - PullRequest
0 голосов
/ 11 декабря 2018

Я использую плату Blue Pill (STM32F103CB с 128 КБ флэш-памяти в соответствии с st-info --probe) через клон ST-Link / V2, такой как , этот .Я также протестировал использование оригинальной ST-Link / V2, такой как , этой .Я получаю одинаковый результат, описанный ниже, с обоими программистами.

Моя система - Linux (Debian LXDE), и я установил OpenOCD из выпусков Ливиу Ионеску здесь .

Моя установка OpenOCD работает.Как и Blue Pill, у меня есть плата ST-Nucleo-F103RB, и я могу подключиться к ней с помощью OpenOCD.Команда

openocd -f board/st_nucleo_f103rb.cfg

с использованием стандартного файла .cfg, поставляемого с OpenOCD, дает

    Open On-Chip Debugger 0.10.0
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
none separate
srst_only separate srst_nogate srst_open_drain connect_deassert_srst
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : clock speed 950 kHz
Info : STLINK v2 JTAG v29 API v2 SWIM v18 VID 0x0483 PID 0x374B
Info : using stlink api v2
Info : Target voltage: 3.271135
Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints

Но мне все еще не удалось подключиться к моей Синей таблетке с помощью ST-Link /Программисты V2.Я прочитал все, что могу найти, включая соответствующие разделы https://elinux.org/Category:OpenOCD и столько, сколько я могу лично переварить из http://openocd.org/doc/.. Вот куда я попал.

Файл .cfg stm32f103c8_blue_pill.cfg не работает для меня.Он производит вывод, описанный ниже.

На основании прочитанного я подготовил свой собственный файл .cfg по адресу ../board/stm32f103.cfg.Там написано:

source [find interface/stlink.cfg]
transport select hla_swd
source [find target/stm32f1x.cfg]
#source [find board/stm32f103c8_blue_pill.cfg]
#reset_config srst_only
#reset_config none separate

Источники, которые я читал, предполагают, что это должно работать, но это не так.Используя мой .cfg, описанный выше, я могу использовать либо target / stm32f1x.cfg, либо board / stm32f103c7_blue_pill.cfg, и я по-прежнему получаю такой же вывод, как описано ниже.(В случае обоих этих файлов .cfg я использую стандартные файлы, поставляемые с OpenOCD.) Я протестировал оба варианта reset_config, показанных выше, и ни с одним из них.Ни одна из комбинаций не работает.

Файл интерфейса / stlink.cfg, который я использую, изменен.Я изменил его, указав правильный device_desc "ST-LINK / V2" и правильный vid_pid 0x0483 0x3748.(Оба подтвердили использование lsusb.) Итак, игнорируя закомментированные строки, stlink.cfg читает

interface hla
hla_layout stlink
hla_device_desc "ST-LINK/V2"
hla_vid_pid 0x0483 0x3748

Я экспериментировал с включением hla_serial программиста.Интересно, что lsusb не может найти полный серийный номер.st-info --probe находит серийный номер, но немного отличается от номера прошивки приложения STLinkUpgrade.Я пытался использовать оба серийных номера.Без разницы.

Вот команда, которую я даю OpenOCD:

openocd -s ~/stm32/openocd/scripts -f board/stm32f103.cfg

Обратите внимание, что я должен задать путь, используя -s для этой команды.С платой ST-Nucleo-F103RB мне не нужно этого делать.Однако, с файлом stm32f103.cfg, если я не установил путь, я получаю:

Error: Can't find board/stm32f103.cfg
in procedure 'script'

Если я использую полную команду, показанную выше, с -s, чтобы установить путь, я получаю:

Open On-Chip Debugger 0.10.0
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html
/[..]stm32/openocd/scripts/target/stm32f1x.cfg:47: Error: invalid command name "dap"
in procedure 'script' 
at file "embedded:startup.tcl", line 60
at file "/[..]stm32/openocd/scripts/board/stm32f103.cfg", line 18
at file "/[..]stm32/openocd/scripts/target/stm32f1x.cfg", line 47

Вот неправильная строка 47 в stm32f1x.cfg:

dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu

Я искал элементы в Stackoverflow / похожие по Ошибка: недопустимое имя команды "dap" .Используя документацию OpenOCD, я понимаю, что команда dap create существует, и примерно то, что она делает.Самая похожая ошибка, о которой я обнаружил, документирована в https://elinux.org/OpenOCD_Troubleshooting:_Invalid_Command_Name_JTAG,, и предложенное решение, похоже, неприменимо, потому что я не вызываю interface / stlink.cfg из командной строки.

Я не вижу, что я делаю неправильно, и теперь я полностью застрял.Если бы кто-то мог дать мне управление, я был бы очень благодарен.Извините, это такой длинный пост.

1 Ответ

0 голосов
/ 18 февраля 2019

Я тоже столкнулся с этой проблемой.Официально нет предоставленных двоичных файлов, только исходный код.Но есть два сайта, выпуск релиза которых был рекомендован официальным OpenOCD:
1. Поддерживается Фредди Шопеном .
2. Поддерживается Ливиу Ионеску в Github .

Я попробовал последнюю версию (OpenOCD 0.10.0 commit date: 2017-01-22 20:31:28 build date: 2017-01-23), выпущенную с сайта Фредди Шопена, и столкнулся с этим Ошибка: неверное имя команды "dap" проблема.Но все файлы *.cfg, на которые я ссылался, нормально работали на другом компьютере с другим двоичным файлом OpenOCD (хотя я забыл, где я скачал этот двоичный файл).

Не уверен, что пошло не так, поэтому я обратился к последней версии(gnu-mcu-eclipse-openocd-0.10.0-11-20190118-1134-win64.zip) выпущено GNU MCU Eclipse (поддерживается Ливиу Ионеску), ошибка исчезла, проблема решена .

PS: я не говорюВ сборке Фредди Шопена есть ошибка, но если кто-то сталкивался с этой проблемой, возможно, вы можете решить ее, попробовав версию, которая в настоящее время активно поддерживается.

...