Table of Contents
SAMD21 Bootloader
... with a Raspberry Pi
One has to install OpenOCD on a Raspberry Pi (RaspbianBuster):
Update and install some tools:
$ sudo apt-get update § sudo apt-get install git autoconf libtool make pkg-config libusb-1.0-0 libusb-1.0-0-dev htop
Download OpenOCD from http://openocd.zylin.com/#/admin/projects/openocd:
$ git clone http://openocd.zylin.com/openocd
Compile:
$ cd openocd-code $ ./bootstrap $ ./configure --enable-sysfsgpio --enable-bcm2835gpio $ make $ sudo make install
List all Interfaces:
$ cd /usr/local/share/openocd/scripts/interface $ ls
Make a Folder and Download the Bootloader:
$ cd ~ $ mkdir bootloader $ cd bootloader $ wget https://github.com/arduino/ArduinoCore-samd/raw/master/bootloaders/zero/samd21_sam_ba.bin
Make a Configuration File:
$ nano openocd.cfg
and add:
source [find interface/raspberrypi2-native.cfg] transport select swd set CHIPNAME at91samd21g18 source [find target/at91samdXX.cfg] reset_config srst_nogate adapter srst delay 400 adapter srst pulse_width 100 bcm2835gpio_swd_nums 25 24 bcm2835gpio_trst_num 7 bcm2835gpio_srst_num 18 init targets reset halt t91samd bootloader 0 program samd21_sam_ba.bin verify at91samd bootloader 8192 reset shutdown
The GPIO pin numbers can be set here or in the raspberrypi2-native.cfg file. To do so change in:
$ sudo nano /usr/local/share/openocd/scripts/interface/raspberrypi2-native.cfg
the following lines:
bcm2835gpio_swd_nums 25 24 bcm2835gpio_trst_num 7 bcm2835gpio_srst_num 18
Connecting the SAMD21 Board:
RasPi-GPIO SAMD21 18 Reset 24 SWD IO 25 SWD CLK GND GND 3V3 3V3
... with a Segger J-Link Programmer
UNDER CONSTRUCTION !
Download the software from:
https://www.segger.com/downloads/jlink/
Install OpenOCP
Bootloader
Here one finds some SAMD21 bootloader:
Seeeduino XIAO Bootloader
This bootloader bever worked for me!