Потребовалось запрограммировать чип nrf52832. Была использована плата на основе Ftdi2232 c ali. В заметке набор действий необходимый для работы OpenOCD с данной связкой программатор-микроконтроллер на windows 10.

<cut/>
Впаиваем резистор 470 Ом между ADBUS1 и ADBUS2.
Цоколевка программатор - target: GND-GND, ADBUS0 - SWDCLK, ADBUS2 - SWDIO, ADBUS4 - nRST (необязательно).
Ставим node.js.
Ставим пакетный менеджер xPack: https://xpack.github.io/install/
Ставим OpenOCD:
xpm install --global @xpack-dev-tools/openocd@latest
Скачиваем D2XX driver инсталлятор и ставим дрова.
Качаем и ставим Zadig https://zadig.akeo.ie/. Для устройств Dual RS232-HS (interface 0) и Dual RS232-HS (interface 1) ставим драйвер WinUSB. По идее нужно поставить WinUSB только для Dual RS232-HS (interface 0), а для Dual RS232-HS (interface 1) можно оставить драйвер виртуального порта. У меня не вышло, возможно дополнительные настройки для интерфейса в OpenOCD помогут, я поковырял их - ничего не помогло. Еще одно замечание - плату ftdi следует подключать к одному и тому же USB порту компьютера. Судя по всему Zadig при установке WInUSB драйвера привязывает его не только к устройству, но и конкретному порту. Ну или опять особенность Windows/ноутбука.
Идем в папку установки OpenOCD (C:\Users\xxx\AppData\Roaming\xPacks\@xpack-dev-tools\openocd\xxx\.content), дальше в scripts/interface/ftdi, находим файл ft232h-module-swd.cfg создаем с него в той же папке копию с именем ft232h.cfg.
Открываем ft232h.cfg правим ftdi_vid_pid на 0x0403 0x6010 (по умолчанию было 0x6014). VID PID смотреть в диспетчере устройств, либо в Zadig. Добавляем строку: adapter speed 1000 (необязательно, нужно для проверки программатора на следующем шаге).
Проверяем работоспособность связки железо-openocd. В командной строке вводим C:\Users\xxx\AppData\Roaming\xPacks\@xpack-dev-tools\openocd\xxx\.content\bin\openocd.exe -f interface/ftdi/ft232h.cfg. Должны увидеть что-то типа такого:
Info : FTDI SWD mode enabled adapter speed: 1000 kHz Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : clock speed 1000 kHz Warn : gdb services need one or more targets defined
В папке проекта создаем burn_ocd.cmd такого содержания (xxx.hex - путь до файла прошивки):
@echo off
set PROG=C:\Users\bvm84\AppData\Roaming\xPacks@xpack-dev-tools\openocd\0.11.0-1.1.content\bin\openocd.exe
"%PROG%" -f interface/ftdi/ft232h.cfg -f target/nrf52.cfg -c "init; reset halt; nrf5 mass_erase; program xxx.hex verify reset exit"
@echo Done
Подключаем программатор к target, запускаем в командной строке burn_ocd.cmd должны получить следующий выход:
Info : FTDI SWD mode enabled swd Info : clock speed 1000 kHz Info : SWD DPIDR 0x2ba01477 Info : nrf52.cpu: hardware has 6 breakpoints, 4 watchpoints Info : starting gdb server for nrf52.cpu on 3333 Info : Listening on port 3333 for gdb connections target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x00000a80 msp: 0x20000400 Info : nRF52832-QFAA(build code: E0) 512kB Flash, 64kB RAM Info : Mass erase completed. target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
Programming Started * Info : Padding image section 0 at 0x00000b00 with 1280 bytes Info : Padding image section 1 at 0x00025970 with 1680 bytes Info : Flash write discontinued at 0x0004dd80, next section at 0x00078000 Warn : Adding extra erase range, 0x0004dd80 .. 0x0004dfff Info : Flash write discontinued at 0x0007db30, next section at 0x0007f000 Warn : Adding extra erase range, 0x0007db30 .. 0x0007dfff Warn : Adding extra erase range, 0x0007f330 .. 0x0007ffff Warn : Adding extra erase range, 0x10001000 .. 0x10001013 Warn : Adding extra erase range, 0x10001024 .. 0x10001fff
Programming Finished * Verify Started *Verified OK * Resetting Target * shutdown command invoked Done
Как результат имеем прошитый чип. Также возможна отладка через связку ftdi-openocd-gdb. В документации openocd все подробно описано.
P.S. Под линуксом все проще и нативнее.