====== OpenOCD & Raspberry Pi ====== {{:bootloader:swd-raspi_programmer_seeeduinoxiao.jpg?400|}}\\ To install the [[http://openocd.org/|open On-Chip Debugger]] on a Raspberry Pi following the manual by [[https://learn.adafruit.com/programming-microcontrollers-using-openocd-on-raspberry-pi/overview|Lady Ada]]. Install: $ sudo apt-get install git autoconf libtool make pkg-config libusb-1.0-0 libusb-1.0-0-dev htop Git clone: $ git clone http://openocd.zylin.com/openocd $ cd openocd/ Configure & Install: $ ./bootstrap $ ./configure --enable-sysfsgpio --enable-bcm2835gpio $ make $ sudo make install Check Interfaces: $ cd /usr/local/share/openocd/scripts/interface/ $ ls New Folder: $ cd ~ $ mkdir bootloader $ cd bootloader Download the Bootloader: $ wget https://github.com/arduino/ArduinoCore-samd/raw/master/bootloaders/zero/samd21_sam_ba.bin $ wget https://github.com/Seeed-Studio/ArduinoCore-samd/blob/master/bootloaders/XIAOM0/bootloader-XIAO_m0-v3.7.0-33-g90ff611-dirty.bin $ wget "https://github.com/arduino/ArduinoCore-samd/blob/master/bootloaders/mkrzero/samd21_sam_ba_arduino_mkrzero.bin" Make your Config File: $ nano openocd.cfg Add: source [find interface/raspberrypi3-native.cfg] transport select swd set CHIPNAME at91samd21g18 source [find target/at91samdXX.cfg] # did not yet manage to make a working setup using srst #reset_config srst_only reset_config srst_nogate adapter srst delay 100 adapter srst pulse_width 100 #bcm2835gpio_swd_nums 25 24 #bcm2835gpio_trst_num 7 #bcm2835gpio_srst_num 18 init targets reset halt #at91samd chip-erase #at91samd restore at91samd bootloader 0 program samd21_sam_ba.bin verify #program bootloader-XIAO_m0-v3.7.0-33-g90ff611-dirty.bin verify #flash write_image unlock bootloader-XIAO_m0-v3.7.0-33-g90ff611-dirty.bin at91samd bootloader 8192 reset shutdown ... and run it $ sudo openocd -f openocd.cfg If needed change the Raspberry Pi interface file: $ sudo nano /usr/local/share/openocd/scripts/interface/raspberrypi2-native.cfg $ sudo nano /usr/local/share/openocd/scripts/interface/raspberrypi3-native.cfg Change: # Each of the SWD lines need a gpio number set: swclk swdio # Header pin numbers: 23 22 bcm2835gpio_swd_nums 25 24 # If you define trst or srst, use appropriate reset_config # Header pin numbers: TRST - 26, SRST - 18 bcm2835gpio_trst_num 7 bcm2835gpio_srst_num 18 ---- ==== Bootloader ===== - [[https://github.com/arduino/ArduinoCore-samd|Arduino]]\\ - [[https://github.com/arduino/ArduinoCore-samd/raw/master/bootloaders/zero/samd21_sam_ba.bin|SAMD21 M0-Mini]]\\ - [[https://github.com/Seeed-Studio/ArduinoCore-samd/blob/master/bootloaders/XIAOM0/bootloader-XIAO_m0-v3.7.0-33-g90ff611-dirty.bin|Seeeduino XIAO]]\\ ---- ==== Pinout ==== SWD Raspberry Pi Reset GPIO 18 SWDIO GPIO 24 SWCLK GPIO 25 **Arduino MKR ZERO**\\ {{:arduino:arduinomkrzero_swdpinout_02.jpg?300|}}\\ **Seeeduino XIAO**\\ {{:seeeduino:serial_wire_debug.jpg?200|}}\\ **SAMD21 M0-Mini**\\ {{:samd21:samd21-m0_mini_swdpins.jpg?200|}}\\ ---- ==== Programming Adapter ===== These Adapter are made with Super Glue and Pogo Pins.\\ **Seeeduino XIAO Adapter**\\ {{:bootloader:seeduinoxiao_swdadapter.jpg?200|}}\\ 3.3V is take from the regular pins.\\ **SAMD21 M0-Mini Adapter**\\ {{:bootloader:samd21_m0-mini_swdadapter.jpg?200|}}\\ Power and ground is connected over the regular pins.\\ ---- ==== Acknowledge & Links ==== [[http://openocd.org/|open OCD]]\\ [[http://openocd.org/doc-release/pdf/openocd.pdf|OpenOCD user Guide]]\\ [[https://learn.adafruit.com/programming-microcontrollers-using-openocd-on-raspberry-pi/overview|Programming Microcontrollers using OpenOCD on a Raspberry Pi by Lady Ada]]\\ [[https://iosoft.blog/2019/01/28/raspberry-pi-openocd/|Raspberry Pi and OpenOCD by iosoft.blog]]\\ ----