Добавление возможности прошивки внешних контроллеров по SWD интерфейсу (WB6) openocd

Всем здравствуйте.

Подскажите пожалуйста, есть ли в прошивке контроллера утилита, позволяющая поднять SWD интерфейс? Если есть, то как можно вывести сигналы SWDIO,SWCLK на внутренний разъем (Mod1 или Mod2).

Если такой утилиты нет, то могу ли я установить OpenOCD? Коллизий с существующими библиотеками не будет?
При помощи OpenOCD я поднимал SWD интерфейс на Orange Pi и Raspberry Pi.

Спасибо!

Добрый день. OpenOCD:

apt install openocd

Вполне себе ставится. Вы хотите использовать “внешний” программатор, например stlink?

1 Like

Вы хотите использовать “внешний” программатор, например stlink?

Если я вас правильно понял, то я хочу, чтобы функциональность stlink была реализована средствами самого WB. Ну или же OpenOCD.

Я так понял “из коробки” WB сконфигурировать не получится (нужны сторонние утилиты).
Ок, тогда еще вопрос.
Какие номера ножек мне нужно прописать в конфиге OpenOCD для разъема Mod1 (out1, out2) ну или для разъема Mod2.

Весь список GPIO и в таблицах внутри расписаны выведенные на разъемы.

1 Like

Большое спасибо!
Буду пробовать :slight_smile:

Еще раз здравствуйте.
Возник вопрос по OpenOCD.
У вас есть файлы конфигурации для вашей платы?

Спасибо!

У меня всё получилось!
Дабы не было недосказанности, опишу свои шаги.
Сразу скажу, что в линуксе я нахожусь около нуля, и может какие то шаги были лишними. Если не сложно, прошу на это указать.
Итак. После установки OpenOCD я не мог воспользоваться интерфейсом sysfsgpio. OpenOCD его не видел, или же его вообще не было.
Попытался дать команду: ./configure --enable-sysfsgpio
Выдало ошибку (не помню какую).
Короче снес OpenOCD и поступил так, как это делал на малинке, апельсинке:

cd ~
apt-get update
apt-get install git autoconf libtool make pkg-config libusb-1.0-0 libusb-1.0-0-dev
git clone http://openocd.zylin.com/openocd
cd openocd
./bootstrap
./configure --enable-sysfsgpio
make
make install

make не сработал, т.к. не хватало нужных пакетов для компиляции исходников, ок, установил:

apt-get install build-essential

После этого make выполнялся порядка 35 минут.

Далее в каталоге /usr/local/share/openocd/scripts/interface создал файл wb.cfg с содержимым:

adapter driver sysfsgpio
#swclk swdio
sysfsgpio_swd_nums 118 117

Номера ног взял по ссылке выше для разъема Mod2

Затем в каталоге /usr/local/share/openocd/scripts создал файл flash_stm.cfg с содержимым:

source [find interface/wb.cfg]

transport select swd

set CHIPNAME STM32F103CB
source [find target/stm32f1x.cfg]
adapter speed 480

init
targets
program fff.bin 0x8000000 verify 0x8000000
reset
exit

Ну и потом выполняем: openocd -f flash_stm.cfg
Собственно всё.
Да, во внутренний разъем Мод2 воткнул нехитрый переходник, чтобы вывести пины наружу.

Добрый день. Рад, что получилось.

В каком каталоге?
sysfsgpio по-умолчанию есть.

То есть:
118 - swclk
117 - swdio

Будьте осторожны - выводы разьемов расширения идут прямо на SOC и ничем не защищены.
Благодарю за опыт.
Возможно оформлю статьей.

В каком каталоге?
sysfsgpio по-умолчанию есть.

Изначально я установил OpenOCD при помощи apt install openocd (кстати, нужно было еще настроить репозитории, откуда выкачивать пакеты). Он установился в /usr/share/openocd .
Вот в этом каталоге я и давал команду ./configure --enable-sysfsgpio - выдавало ошибку. Да и вроде из корня тоже выполнял, и тоже ошибка. А, еще cd openocd писал что нет такого каталога.

Будьте осторожны - выводы разьемов расширения идут прямо на SOC и ничем не защищены.

У нас замкнутая система, как говорится “от вашего проца, нашему процу” :slight_smile:
Уточню.
К WB подцеплен наш радиомодуль. Для него нужно было предусмотреть возможность удаленной перепрошивки (на всякий случай) через GPRS WB.

Возможно оформлю статьей.

Повторюсь, в линуксе я ноль, поэтому может быть можно было обойтись без компиляции исходников OpenOCD, и просто как-то прописать дополнительный интерфейс (sysfsgpio) в OpenOCD чтобы он его видел.

1 Like