-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Guida all' installazione della piattaforma Atmel SAM per PlatformIO con supporto per le schede Arancino ed Arancino Mignon
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-atmelsam
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://github.com/smartmeio/platform-atmelsam.git -b 7.1.0-arancino atmelsam
$ cd ${HOME}/.platformio/platforms/atmelsam
$ git submodule update --init --recursive
oppure scaricare lo zip dei sorgenti dall’interfaccia web di gitlab ed estrarre il contenuto dell’archivio nella cartella atmelsam
.
Per installare il core arduino-like
della piattaforma Arancino SAMD bisogna inserire l'url diretto alla tarball nella sezione framework-arduino-samd-arancino
del file platform.json
:
"framework-arduino-samd-arancino": {
"type": "framework",
"optional": true,
"owner": "smartme-io",
"version": "~1.3.0"
}
nel campo version
che attualmente ha scolpito il valore 1.3.0
:
https://download.smartme.io/artifactory/framework-arduino-samd-arancino/1.3.0/framework-arduino-samd-arancino-1.3.0.tar.bz2
dato che usiamo come nostro host/repository artifactory all'indirizzo:
https://download.smartme.io/artifactory
inoltre, per effettuare la programmazione della MCU tramite interfaccia col tool ArancinoOTA
grafica bisogna sostituire nella sezione tool-arancino-ota
:
"tool-arancino-ota": {
"type": "uploader",
"optional": true,
"owner": "smartme-io",
"version": "~1.0.10"
}
il valore ~1.0.10 con il seguente URL di download in base alla propria piattaforma come elencato nei link riportati qui sotto :
Windows
https://download.smartme.io/artifactory/tool-arancino-ota/1.0.10/tool-arancino-ota-windows-1.0.10.tar.gz
Linux
https://download.smartme.io/artifactory/tool-arancino-ota/1.0.10/tool-arancino-ota-linux_i386-1.0.10.tar.gz
https://download.smartme.io/artifactory/tool-arancino-ota/1.0.10/tool-arancino-ota-linux_x86_64-1.0.10.tar.gz
Linux ARM
https://download.smartme.io/artifactory/tool-arancino-ota/1.0.10/tool-arancino-ota-linux_aarch64-1.0.10.tar.gz
https://download.smartme.io/artifactory/tool-arancino-ota/1.0.10/tool-arancino-ota-linux_armv6l-1.0.10.tar.gz
OSX
https://download.smartme.io/artifactory/tool-arancino-ota/1.0.10 /tool-arancino-ota- darwin_x86_64-1.0.10 .tar.gz
infine, nella sezione tool-arancino-ota-no-gui
:
"tool-arancino-ota-no-gui": {
"type": "uploader",
"optional": true,
"owner": "smartme-io",
"version": "~1.0.2"
}
sostituire il valore ~1.0.2
col seguente URL:
http://download.smartme.io/artifactory/tool-arancino-ota-no-gui/1.0.2/tool-arancino-ota-no-gui-1.0.2.tar.gz
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:arancinoMignon]
board = arancinoMignon
framework = arduino
platform = atmelsam
upload_protocol = arancino-ota
board_upload.port = arancino.local
upload_flags =
--arancino_port_id=5C585A6650515251362E3120FF180229
lib_deps =
briscoetech/[email protected]
smartme-io/[email protected]
[env:arancino]
board = arancino
platform = atmelsam
framework = arduino
upload_protocol = arancino-ota-no-gui
board_upload.port = arancino.local
# board_upload.port = 192.168.158.186
upload_flags =
--arancino_port_id=8009D0EA50524647352E3120FF101F2B
lib_deps =
briscoetech/[email protected]
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
Sono a disposizione quattro protocolli di upload per la piattaforma :
- arancino-ota: richiama il tool di upload con interfaccia grafica;
- arancino-ota-no-gui: richiama il tool di upload senza interfaccia grafica.
- atmel-ice: upload utilizzando il programmatore Atmel Ice
- sam-ba: upload tramite porta usb on board (bossac), solo per Arancino Mignon.
nell'ambiente di lavoro verrá comunque usato arancino-ota o arancino-ota-no-gui come protocollo di upload.
board_upload.port
é il target su cui si vuole caricare il firmware che puó essere un indirizzo IP oppure il record dns avahi della scheda (es. arancino.local)
upload_flags
ci consente di aggiungere delle flags aggiuntive al nostro tool di upload. Serve principalmente nell’uso del tool di upload senza interfaccia grafica. Come argomento aggiuntivo, usando il protocollo arancino-ota-no-gui
, specifichiamo lo switch da riga di comando :
--arancino_port_id=<MCU_SERIAL>
dove MCU_SERIAL
é il seriale del microcontrollore su cui vogliamo caricare il firmware e che possiamo trovare grazie al servizio arancino alla pagina web :
http://arancino.local:1475/api/v1/ports
indicato dalla voce B_ID
. In questa stessa pagina web possiamo anche vedere se ci sono anche delle board Arancino Mignon connesse alla main board Arancino e di conseguenza programmare quelle grazie alle chiamate REST in Python.
Si puó caricare il firmware contemporaneamente su piú board se non viene specificato un singolo ambiente o da riga di comando o da interfaccia grafica con VSCode. Per "ambiente" si intende una sezione del file INI
del tipo :
[env:arancino]
cioé quella che identifica la board vera e propria per cui verrá eseguito il processo di build del firmware stesso.
lib_deps
qui vanno aggiunte le librerie aggiuntive "arduino-like" e non (a seconda della piattaforma) che servono per la compilazione del codice sorgente.
Se si desidera aggiornare il core della piattaforma Arancino, bisogna sostituire manualmente (allo stesso modo) l'url diretto nella sezione framework-arduino-samd-arancino :
"framework-arduino-samd-arancino": {
"type": "framework",
"optional": true,
"owner": "smartme-io",
"version": "~1.3.0"
}
Puó essere, ad esempio, sostituita con una versione snapshot mettendo il link alla tarball corrispondente, ad esempio :
http://download.smartme.io/artifactory/framework-arduino-samd-arancino-snapshot/1.4.0-test.1/framework-arduino-samd-arancino-1.4.0-test.1.tar.bz2
Va da sé che le stesse istruzioni si applicano pure per lo strumento di upload tool-arancino-ota-no-gui :
"tool-arancino-ota-no-gui": {
"type": "uploader",
"optional": true,
"owner": "smartme-io",
"version": "~1.0.2"
},
quindi se in un futuro si volesse aggiornare ad una nuova versione basta cambiare ancora una volta l'URL nel campo version che al momento é :
http://download.smartme.io/artifactory/tool-arancino-ota-no-gui/1.0.2/tool-arancino-ota-no-gui-1.0.2.tar.gz
lo stesso concetto modulare verrá applicato per altri tool aggiuntivi delle future piattaforme (se presenti).
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:arancinoMignon]
board = arancinoMignon
framework = arduino
platform = https://github.com/smartmeio/platform-atmelsam.git#7.1.0-arancino
upload_protocol = arancino-ota-no-gui
; board_upload.port = localhost
board_upload.port = 192.168.158.186
upload_flags =
--arancino_port_id=5C585A6650515251362E3120FF180229
platform_packages =
smartme-io/framework-arduino-samd-arancino@http://download.smartme.io/artifactory/framework-arduino-samd-arancino/1.3.0/framework-arduino-samd-arancino-1.3.0.tar.bz2
smartme-io/tool-arancino-ota@http://download.smartme.io/artifactory/tool-arancino-ota/1.0.10/tool-arancino-ota-linux_x86_64-1.0.10.tar.gz
smartme-io/tool-arancino-ota-no-gui@http://download.smartme.io/artifactory/tool-arancino-ota-no-gui/1.0.2/tool-arancino-ota-no-gui-1.0.2.tar.gz
[env:arancino]
board = arancino
platform = https://github.com/smartmeio/platform-atmelsam.git#7.1.0-arancino
framework = arduino
upload_protocol = arancino-ota
; board_upload.port = localhost
board_upload.port = 192.168.158.186
platform_packages =
smartme-io/framework-arduino-samd-arancino@http://download.smartme.io/artifactory/framework-arduino-samd-arancino/1.3.0/framework-arduino-samd-arancino-1.3.0.tar.bz2
smartme-io/tool-arancino-ota@http://download.smartme.io/artifactory/tool-arancino-ota/1.0.10/tool-arancino-ota-linux_x86_64-1.0.10.tar.gz
smartme-io/tool-arancino-ota-no-gui@http://download.smartme.io/artifactory/tool-arancino-ota-no-gui/1.0.2/tool-arancino-ota-no-gui-1.0.2.tar.gz
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 arancino
invece per effettuare l'upload (o il processo combinato di build e upload):
$ pio run -vvv -d <platformio_work_dir> -e arancino -t upload
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
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>