Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
bootloader:openocd [2021/01/30 15:32]
admin [Programming Adapter]
bootloader:openocd [2021/01/30 17:57]
admin
Line 1: Line 1:
-====== OpenOCD with the Raspberry Pi ======+====== 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
  
 ---- ----
-==== HEX files =====+==== Bootloader =====
  
-- [[https://github.com/arduino/ArduinoCore-samd|Arduino Code]]\\+- [[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 ==== ==== Pinout ====
 +
 +  SWD         Raspberry Pi
 +  
 +   Reset       GPIO 18
 +   SWDIO       GPIO 24
 +   SWCLK       GPIO 25
  
 **Arduino MKR ZERO**\\ **Arduino MKR ZERO**\\
Line 25: Line 106:
 **Seeeduino XIAO Adapter**\\ **Seeeduino XIAO Adapter**\\
 {{:bootloader:seeduinoxiao_swdadapter.jpg?200|}}\\ {{:bootloader:seeduinoxiao_swdadapter.jpg?200|}}\\
-3.3V are take from the regular pins.\\+3.3V is take from the regular pins.\\
  
 **SAMD21 M0-Mini Adapter**\\ **SAMD21 M0-Mini Adapter**\\
 {{:bootloader:samd21_m0-mini_swdadapter.jpg?200|}}\\ {{:bootloader:samd21_m0-mini_swdadapter.jpg?200|}}\\
 Power and ground is  connected over the regular pins.\\ 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]]\\
 +
  
 ---- ----