Skip to content
Arturo Rinaldi edited this page Jan 18, 2022 · 1 revision

Guida all' installazione della piattaforma STM32 per PlatformIO con supporto per la scheda ArancinoV12

Installazione della piattaforma

Dopo avere installato sul proprio sistema operativo l'ambiente di sviluppo PlatformIO tramite la documentazione ufficiale da consultare a questo link (si consiglia di usare VSCode):

https://platformio.org/install

https://docs.platformio.org/en/latest/core/installation.html

bisogna integrare manualmente il porting col supporto delle schede Arancino. Al momento é stato fatto su un fork del codice sorgente della singola piattaforma platform-atmelsam di Ivan Kravets.

L’url di riferimento interno del codice sorgente é il seguente:

https://git.smartme.io/smartme.io/arancino/platform-ststm32

Una volta effettuata l’installazione, navigare nella cartella utente di platformIO sul proprio sistema che, in base al sistema operativo, é definita come:

Unix e Unix-like ~/.platformio o ${HOME}/.platformio

Windows %HOMEPATH%\.platformio (ad es. C:\Users\myuser.platformio)

creare la sotto-cartella platforms e clonare al suo interno il codice sorgente con questo comando :

$ git clone https://git.smartme.io/smartme.io/arancino/ide/platform-ststm32.git -b 15.1.0-arancino ststm32

$ cd ${HOME}/.platformio/platforms/ststm32

$ git submodule update --init --recursive

oppure scaricare lo zip dei sorgenti dall’interfaccia web di gitlab ed estrarre il contenuto dell’archivio nella cartella ststm32.

Gestione del file di progetto platformio.ini

A questo punto il sistema per lavorare é praticamente pronto… basta cominciare a scrivere il file platformio.ini per cominciare a creare la build per i nostri dispositivi. Esaminiamo questo template :

; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:arancinov12_h743zi]
platform = ststm32
board = arancinov12_h743zi
; board_upload.port = /dev/ttyXXX
; upload_flags =
framework = arduino
lib_archive = no
lib_deps =
     smartme-io/[email protected]

Una volta che é stato inizializzato il file, ad esempio in VSCode creando un nuovo progetto scegliendo come board la scheda arancino, dobbiamo aggiungere alcune voci in aggiunta a quelle di default se vogliamo programmare le nostre schede :

upload_protocol

E' principalmente usato un solo protocollo di upload per la piattaforma :

  • dfu-util: richiama il tool di upload da riga di comando dfu-util.

board_upload.port

é il target su cui si vuole caricare il firmware ed é in genere un device descriptor del tipo /dev/ttyACMX. Di default viene rilevata da platformIO e non viene fatto nessun override della stessa.

upload_flags

ci consente di aggiungere delle flags aggiuntive al nostro tool di upload. Non ci sono particolari flag da aggiungere alle board di questa piattaforma.

lib_deps

qui vanno aggiunte le librerie aggiuntive arduino-like e non (a seconda della piattaforma) che servono per la compilazione del codice sorgente.

Installazione del core della piattaforma Arancino STM32

Al momento, per installare il core arduino-like della piattaforma Arancino NRF52 bisogna inserire l'url diretto alla tarball nella sezione framework-arduino-stm32-arancino del file platform.json:

"framework-arduino-stm32-arancino": {
  "type": "framework",
  "optional": true,
  "owner": "smartme-io",
  "version": "~1.0.0"
}

nel campo version che attualmente ha scolpito il valore 1.0.0:

http://download.smartme.io/artifactory/framework-arduino-stm32-arancino/1.0.0/framework-arduino-stm32-arancino-1.0.0.tar.bz2

sostituire inoltre, nella sezione tool-dfuutil:

"tool-dfuutil": {
  "type": "uploader",
  "optional": true,
  "owner": "smartme-io",
  "version": "~0.11.0-arancino8"
}

il valore ~0.11.0-arancino8 con il seguente URL di download in base alla propria piattaforma come elencato nei link riportati qui sotto :

Windows

https://download.smartme.io/artifactory/dfu-util/0.11.0-arancino8/dfu-util-0.11.0-arancino8-windows.tar.bz2

Linux

https://download.smartme.io/artifactory/dfu-util/0.11.0-arancino8/dfu-util-0.11.0-arancino8-linux32.tar.bz2

https://download.smartme.io/artifactory/dfu-util/0.11.0-arancino8/dfu-util-0.11.0-arancino8-linux64.tar.bz2

Linux ARM

https://download.smartme.io/artifactory/dfu-util/0.11.0-arancino8/dfu-util-0.11.0-arancino8-arm64.tar.bz2

https://download.smartme.io/artifactory/dfu-util/0.11.0-arancino8/dfu-util-0.11.0-arancino8-arm.tar.bz2

OSX

https://download.smartme.io/artifactory/dfu-util/0.11.0-arancino8/dfu-util-0.11.0-arancino8-osx.tar.bz2

dato che usiamo come nostro host/repository artifactory all'indirizzo:

https://download.smartme.io/artifactory

Ovviamente il campo version puó essere sostituito con un'altra versione stabile o di sviluppo della piattaforma. Ad esempio, per una release di tipo snapshot, un valore dell'url potrebbe essere simile a questo:

http://download.smartme.io/artifactory/framework-arduino-stm32-arancino/1.1.0-test.1/framework-arduino-stm32-arancino-1.1.0-test.1.tar.bz2

lo stesso concetto modulare verrá applicato per altri tool aggiuntivi e non della piattaforma (se dovesse essere necessario).

Template di platformio.ini pronto per l'uso della piattaforma

Per evitare i passi descritti sopra, viene fornito un template predefinito che effettua l'override dei componenti descritti sopra:

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:arancinov12_h743zi]
platform = https://github.com/smartmeio/platform-ststm32.git#15.1.0-arancino
board = arancinov12_h743zi
framework = arduino
lib_archive = no
platform_packages =
    smartme-io/framework-arduino-stm32-arancino@http://download.smartme.io/artifactory/framework-arduino-stm32-arancino/1.0.0/framework-arduino-stm32-arancino-1.0.0.tar.bz2
	smartme-io/tool-dfuutil@http://download.smartme.io/artifactory/dfu-util/0.11.0-arancino8/dfu-util-0.11.0-arancino8-linux64.tar.bz2

l'utente potrá quindi modificare a proprio piacimento i valori su questa base e poi lanciare la build del firmware, da riga di comando o da VSCode stesso selezionando l'ambiente di build.

Ad esempio per effetuare da riga di comando (CLI), la build del firmware solo per la board arancino, dovrá essere lanciato il comando:

$ pio run -vvv -d <platformio_work_dir> -e arancinov12_h743zi

invece per effettuare l'upload (o il processo combinato di build e upload):

$ pio run -vvv -d <platformio_work_dir> -e arancinov12_h743zi -t upload

Installazione della libreria Arancino

Installazione dal registry di platformIO

La libreria Arancino per la piattaforma puó essere installata in modalitá system-wide nella cartella utente di platformIO con questo comando:

$ pio lib --global install smartme-io/Arancino

da digitare nella propria shell di sistema (Unix o DOS). Di default verrá installata sempre l'ultima versione pubblicata sul registry di platformIO, altrimenti sará possibile specificare la versione con:

$ pio lib --global install smartme-io/Arancino@<VERSION>

Le versioni disponibili sono quelle pubblicate sul "registry" ufficiale delle librerie di platformIO:

https://platformio.org/lib/show/11767/Arancino

Installazione tramite VCS

L'installazione puó anche essere effettuata tramite repository git remoto:

$ pio lib --global install https://github.com/smartmeio/arancino-library.git

L'installazione punterá sempre al branch predefinito del repository (in questo caso master). É possibile anche specificare il branch per testare una versione di sviluppo:

$ pio lib --global install https://github.com/smartmeio/arancino-library.git#<GIT_BRANCH>

stesso discorso vale per la tag del codice sorgente stesso:

$ pio lib --global install https://github.com/smartmeio/arancino-library.git#<GIT_TAG>