Appunti su Zerynth su Yarm

Installazione

Creare una directory zerynth nella home e scaricarci dentro l'installer di Zerynth Studio per Linux 64 bit da qui:

Estrarre i file:

cd zerinth
tar xf zerynth.tar.xz

Lanciare il programma di installazione in modalità test con il seguente comando:

ZERYNTH_TESTMODE=2 ./zerynth 

A fine installazione si dovrebbe aprire Zerynth Studio con in basso a sinistra una label gialla "CI VERSION" ad indicare la versione test. Per lanciare ancora Zerynth in modalità test usare lo stesso comando precedente.

Il punto 3 prevede di usare la Yarm con una nuova feature di Zerynth Studio, le configurazioni avanzate dei device:

  • cliccare sul drop-down sulla barra in alto (accanto a Device:) e selezionare "Switch to Advanced Mode..."
  • cliccare poi su "Add/Modify Devices..."
  • premere il bottone "+" accanto ad Acme Yarm nella tabella
  • inserire un nome per la board di prova (Es. "My Yarm")
  • selezionare la porta seriale della Yarm (di solito /dev/ttyUSB0)
  • selezionare Atmel Ice nel campo probe
  • salvare la configurazione
  • premere il bottone "Z" alla destra del drop-down
  • selezionare "register"
  • ripremere il bottone "Z"
  • selezionare "Create VM" e scegliere quella disponibile (Freertos Starter)
  • ripremere il bottone "Z" (per l'ultima volta eh)
  • selezionare "Virtualize"

Se tutto funziona, sulla Yarm avrete la VM funzionante!

Sviluppo libreria

l'API della vostra libreria C potrebbe essere esposta in maniera equivalente in Python seguendo queste indicazioni:

Potreste in questo modo mantenere tutto il codice della libreria identico, creando giusto dei piccoli wrapper intorno alle funzioni di chiamata SPI e di gestione dell'interrupt in modo che vadano a chiamare le equivalenti funzioni dello Zerynth HAL https://docs.zerynth.com/latest/official/core.zerynth.stdlib/docs/official_core.zerynth.stdlib___common_vhal_h.html

Esempio:

codice della vostra libreria C:

void very_important_function() {
    do_something();
    write_spi_with_my_driver(buff,...);
    do_something_else();
}

codice wrapper spi:

int write_spi_with_my_driver(buff,...) {
    vhalSpiExchange(...);
    return OK;
}

codice bridge verso python:

C_NATIVE(_zerynth_very_important_function) {
       very_important_function();
}

Credo appunto nel vostro caso serva giusto vedere come utilizzare vhalSpi e vhalPinAttachInterrupt che trovate nel link che vi ho mandato.

Dando un'occhiata a questo repo: https://github.com/zerynth/lib-microchip-winc1500 e in particolare al file https://github.com/zerynth/lib-microchip-winc1500/blob/master/csrc/src/nm_bsp.c, trovate proprio qualcosa di molto simile quello che serve a voi.

Note

Se stai usando Zerynth Studio in questo momento, dovresti aver visto un messaggio riguardante un update alla patch04, se non lo stai usando lo vedrai al prossimo avvio. La cosa migliore sarebbe che lo ignorassi e continuassi a usare la patch03 che contiene i riferimenti alla vostra board, se hai già aggiornato fammelo sapere.

Info