Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
bootloader:openocd [2021/01/30 14:24]
admin created
bootloader:openocd [2021/01/30 17:48]
admin [OpenOCD & Raspberry Pi]
Line 1: Line 1:
-====== OpenOCD with the Raspberry Pi ======+====== OpenOCD & Raspberry Pi ====== 
 + 
 +{{:bootloader:swd-raspi_programmer_seeeduinoxiao.jpg?400|}}\\ 
 + 
 +On a Raspberry Pi following the openOCD 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 
 + 
 +---- 
 +==== SWD pins ==== 
 + 
 +  SWD         Raspberry Pi 
 +   
 +   Reset       GPIO 18 
 +   SWDIO       GPIO 24 
 +   SWCLK       GPIO 25 
 + 
 +---- 
 +==== HEX files ===== 
 + 
 +- [[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 ==== 
 + 
 +**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 ==== 
 + 
 +[[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]]\\
  
  
 ---- ----