====== 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 !** and [[https://github.com/adafruit/Adafruit_Adalink|Adalink ARM CPU Tool]]\\ Download the software from:\\ [[https://www.segger.com/downloads/jlink/]]\\ Install OpenOCP\\ ---- ==== Bootloader ==== Here one finds some SAMD21 bootloader:\\ [[https://github.com/arduino/ArduinoCore-samd/tree/master/bootloaders/zero|Arduino Zero Bootloader]]\\ [[https://github.com/arduino/ArduinoCore-samd/tree/master/bootloaders/mkrzero|Arduino MKR ZERO]]\\ [[https://github.com/Seeed-Studio/ArduinoCore-samd/blob/master/bootloaders/XIAOM0/update-bootloader-XIAO_m0-v3.7.0-33-g90ff611-dirty.bin|Seeeduino XIAO Bootloader]]\\ This bootloader bever worked for me!\\ ---- ==== Acknowledge ==== [[https://learn.adafruit.com/programming-microcontrollers-using-openocd-on-raspberry-pi/compiling-openocd|Programming Microcontrollers using OpenOCD on a Raspberry Pi by Lady Ada]]\\ [[https://embeddedcomputing.weebly.com/seeeduino-xiao-m0.html|Seeeduino Xiao M0​ by Embedded Computing]]\\ [[https://forum.seeedstudio.com/t/how-to-unbrick-a-dead-xiao-using-raspberry-pi-guide-openocd/253990|How to Unbrick a Dead XIAO Using Raspberry Pi by John Doe]]\\ [[http://openocd.org/doc/html/Flash-Commands.html|OpenOCD - Flash Commands]]\\ ----