swdio
Большинство устройств Meshtastic можно прошить просто с помощью USB. Однако некоторые (например, Seeed WM1110 Dev Kit) требуют использования внешнего устройства, которое может подключаться через "SWDIO". Существуют специальные устройства, такие как RAKDAP1, которые могут выполнять эту работу, а также другие устройства, такие как Segger J-Link или ST-Link, которые можно использовать. которые могут выполнять эту работу. Однако для многих людей Raspberry Pi удобнее.
Эта статья предоставляет инструкции по использованию Raspberry Pi в качестве инструмента для прошивки через SWDIO.
Настройка подключения проводов
Первый шаг — подключить два провода между вашим Raspberry Pi и портами SWDIO на вашем устройстве на базе NRF52.
Подключите пин GPIO 11 на вашем Raspberry Pi к пину CLK на устройстве Meshtastic. Подключите пин GPIO 8 на вашем Raspberry Pi к пину DIO на устройстве Meshtastic.
Убедитесь, что номера GPIO указаны правильно.
Подключите Raspberry Pi к питанию через USB. Подключите устройство Meshtastic к питанию.
Установка OpenOCD
Вы можете использовать OpenOCD для управления соединением SWDIO с устройством Meshtastic. Установите его на вашем Raspberry Pi.
$ sudo apt update
$ sudo apt install libtool autoconf automake texinfo telnet gdb-multiarch git
$ git clone git://repo.or.cz/openocd.git
$ cd openocd/
$ ./bootstrap
$ ./configure --enable-bcm2835gpio
$ make -j4
$ sudo make install
Проверка соединения
Давайте попробуем подключиться к устройству на базе NRF52 через SWDIO, прежде чем делать что-либо с прошивкой. Вся необходимая конфигурация находится в репозитории openocd.
$ openocd -f ./openocd/tcl/interface/raspberrypi-native.cfg -c "transport select swd" -f openocd/tcl/target/nrf52.cfg -s tcl
Первый флаг выбирает Raspberry Pi в качестве хост-машины, транспорт — SWDIO, а последний флаг указывает, что вы подключаетесь к чипу на базе nRF52. Вы должны увидеть что-то вроде этого:
Open On-Chip Debugger 0.12.0+dev-00633-gad87fbd1c
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
srst_only separate srst_gates_jtag srst_push_pull connect_deassert_srst
swd
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : BCM2835 GPIO JTAG/SWD bitbang driver
Info : clock speed 100 kHz
Info : SWD DPIDR 0x2ba01477
Info : [nrf52.cpu] Cortex-M4 r0p1 processor detected
Info : [nrf52.cpu] target has 6 breakpoints, 4 watchpoints
Info : [nrf52.cpu] Examination succeed
Info : [nrf52.cpu] starting gdb server on 3333
Info : Listening on port 3333 for gdb connections
Info : accepting 'telnet' connection on tcp/4444
Если вы видите “Error connecting DP: cannot read IDR”, то, вероятно, вы подключили провода не туда.
Получение прошивки
Проверьте инструкции для вашего hardware, чтобы найти правильную прошивку для вашего устройства. Для большинства устройств, следующих этому руководству, требуется файл .hex. Затем скопируйте файл прошивки на ваш Raspberry Pi.
Прошивка firmware
После запуска openocd вы можете подключиться к вашему устройству Meshtastic с помощью telnet. Прошивка сводится к выполнению нескольких команд в сессии telnet:
$ telnet 127.0.0.1 4444
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Open On-Chip Debugger
> init
> reset init
> halt
> nrf5 mass_erase
> program firmware.hex verify
> reset
> exit 0
Отключите питание и подключите его снова после прошивки.
Подключение
Поздравляем, теперь вы должны иметь возможность подключиться к вашему устройству через Bluetooth в приложении Meshtastic.