Pull to refresh

Ftdi2232 OpenOCD SWD программатор под Windows 10

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

<cut/>

  1. Впаиваем резистор 470 Ом между ADBUS1 и ADBUS2.

  2. Цоколевка программатор - target: GND-GND, ADBUS0 - SWDCLK, ADBUS2 - SWDIO, ADBUS4 - nRST (необязательно).

  3. Ставим node.js.

  4. Ставим пакетный менеджер xPack: https://xpack.github.io/install/

  5. Ставим OpenOCD: xpm install --global @xpack-dev-tools/openocd@latest

  6. Скачиваем D2XX driver инсталлятор и ставим дрова.

  7. Качаем и ставим 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/ноутбука.

  8. Идем в папку установки OpenOCD (C:\Users\xxx\AppData\Roaming\xPacks\@xpack-dev-tools\openocd\xxx\.content), дальше в scripts/interface/ftdi, находим файл ft232h-module-swd.cfg создаем с него в той же папке копию с именем ft232h.cfg.

  9. Открываем ft232h.cfg правим ftdi_vid_pid на 0x0403 0x6010 (по умолчанию было 0x6014). VID PID смотреть в диспетчере устройств, либо в Zadig. Добавляем строку: adapter speed 1000 (необязательно, нужно для проверки программатора на следующем шаге).

  10. Проверяем работоспособность связки железо-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

  11. В папке проекта создаем 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

  12. Подключаем программатор к 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

  13. Как результат имеем прошитый чип. Также возможна отладка через связку ftdi-openocd-gdb. В документации openocd все подробно описано.

    P.S. Под линуксом все проще и нативнее.

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.