Programowanie STM32 z Raspberry - MetiumIoT/Metium GitHub Wiki

Instalacja

Cała instalacja powinna odbywać się przy pomocy skryptu w repozytorium STM_geofon/_tools/openocd_install.sh Skrypt uruchamiany jako root, pobiera i kompiluje openOCD, tworzy plik do konfiguracji oraz skrypt flash.sh, który służy do programowania stma podłączonego do rpi z poziomu Eclipse przez SSH.

Programowanie STM32 z RaspberryPi

Podłączenie przetwornika do RPi

Wgranie z pliku

Przykład użycia (wgranie wsadu z pliku /root/test.elf)

openocd -f /root/code/min_openocd_config.cfg -c "program /root/test.elf" -c reset -c shutdown

OpenOCD

Instalacja OpenOCD na RaspberryPi

Uruchamiane jako root:

apt update
apt install git autoconf libtool make pkg-config libusb-1.0-0 libusb-1.0-0-dev telnet autotools-dev automake
git clone git://git.code.sf.net/p/openocd/code
cd code
./bootstrap
./configure --enable-sysfsgpio --enable-bcm2835gpio
make
make install
cd /root
touch openocd_install.sh
nano openocd_install.sh
<wkleić zawartość. Do łatwiejszego kopiowania, po wybraniu pliku na repozytorium, można wybrać opcję wyświetlania *raw*>

lub pobrać ten plik z repozytorium i poprzez scp przesłać go do tej lokalizacji.

Następnie:

cd /root
sh openocd_install.sh

Po instalacji pojawi się folder:

cd /root/openocd_code

W którym są skrypty flash-prod.sh

Konfiguracja

Plik /root/openocd-code/min_openocd_config.cfg

interface sysfsgpio

# minimal swd setup
sysfsgpio_swdio_num 24
sysfsgpio_swclk_num 25
sysfsgpio_srst_num 23

transport select swd

reset_config srst_only
reset_config srst_nogate
reset_config connect_assert_srst

source [find target/stm32f3x.cfg]

adapter_nsrst_delay 100
adapter_nsrst_assert_width 100

init
targets
reset halt

Źródła

https://github.com/google/stm32_bare_lib

Wgrywanie firmware do stm32 przy pomocy zdeploy'owanych configów

Sprawdzenie instalacji openOCD

Sprawdzenie poprawności instalacji openocd to wykonanie komendy:

root@wibrotest:~# openocd -v
Open On-Chip Debugger 0.10.0
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
root@wibrotest:~# 

Każdy inny komunikat świadczy o niepoprawnej instalacji, lub braku openocd.

Jak zainstalować openOCD

W celu instalacji openocd użyjemy skryptu openocd_install.sh. Skrypt ten instaluje openocd z repozytorium DietPi (apt -y install openocd) i przygotowuje odpowiednie środowisko do pobierania i wgrywania firmware STM z sieci.

Pobranie firmware (źródło ELF)

Firmware dostępny jest z dwóch źródeł:

Wersja deweloperska

Wersja produkcyjna

Dostępne są następujące odmiany firmware:

3ch-1024-10s-500k.elf
3ch-1024-10s.elf
3ch-1024-1s-500k.elf
3ch-1024-2s-500k.elf
ch1-1024-10s.elf
ch1-1024-1s.elf
ch1-512-2s.elf
ch2-1024-1s.elf
ch3-1024-1s.elf 

Komenda wykonawcza

Wgranie nowego firmware wykonujemy, jak w przykładzie poniżej:

cd /root/openocd-code
sh flash-dev.sh ch1-1024-1s-500k.elf

Dla wersji deweloperskiej mamy skrypt: flash-dev.sh , a dla wersji produkcyjnej: flash-prod.sh .

Sprawdzenie wersji wgranego firmware

W katalogu: /root/openocd-code jest "ukryty" podkatalog: ./flash_history a w nim pliki z datą i nazwą wgrywanego firmware.

UWAGA! Dotyczy to tego konkretnego RPi i operacji programowania na nim wykonanych. Jeśli płytka jest "nowa" to najlepiej wgrać wymagany firmware.