Автор пользуется паяльником Pinecil уже больше двух лет, но недавно начал работать с ним активнее — после того как в Zephyr появилась нативная поддержка микроконтроллера Bouffalo Lab BL706 (спасибо @VynDragon, @will-tm, @josuah и всем, кто contribut'ил в upstream). Для отладки ранней инициализации системы и драйверов простого UART-лога уже недостаточно — нужен JTAG. Автор берёт JLink от SEGGER: у него широкая совместимость и хороший инструментарий.
Чтобы подключить JLink к Pinecil, нужен breakout board (описан в предыдущих постах). У него 10-пиновый JTAG-разъём: пин 3.3V, четыре GND и стандартные JTAG-сигналы. Проще всего соединить плату и JLink обычными dupont-проводами female-to-female — пины на обоих концах 2.54mm. Автор рекомендует использовать ленточный кабель с female-to-male проводами, чтобы не перетыкать соединения каждый раз. С ribbon-кабелем легко запутаться в ориентации: с выемкой вверх пин VTref (pin 1 на JLink, белый провод) оказывается в верхнем левом углу ribbon-кабеля и должен совпасть с VTref в верхнем правом углу разъёма JLink.
После сборки проверяют соединение через JLinkExe. Подключение по USB, JLink видит напряжение ~3.3V на VTref — всё ок.
Дальше — запускают JLinkGDBServer для отладки через gdb:
JLinkGDBServer -device E24 -if JTAG
Сервер открывает порт 2331, определяет RISC-V RV32 с одинарной точностью FPU. Подключаются командой:
gdb -ex 'target remote :2331' ./path/to/firmware.elf
И можно шагать по инструкциям. Удачной отладки!