OpenOCD & Raspberry Pi


To install the open On-Chip Debugger on a Raspberry Pi following the manual by 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

Pinout

SWD         Raspberry Pi

 Reset       GPIO 18
 SWDIO       GPIO 24
 SWCLK       GPIO 25

Arduino MKR ZERO

Seeeduino XIAO

SAMD21 M0-Mini


Programming Adapter

These Adapter are made with Super Glue and Pogo Pins.

Seeeduino XIAO Adapter

3.3V is take from the regular pins.

SAMD21 M0-Mini Adapter

Power and ground is connected over the regular pins.