SlimLine Raspberry scheda interfaccia

Il modulo SlimLine basato su Raspberry è dotato di una scheda di interfaccia basata su un processore Cortex. Sulla scheda trovano posto oltre al circuito di alimentazione, l’interfaccia verso il bus di espansione, un complesso circuito di watchdog controller e la possibilità di montaggio dei nostri moduli RS485 o CAN o in alternativa alcune schede mikroBUS™ di MikroElektronika d.o.o.

Il watchdog controller (Nel prosieguo indicato come WDC) (in italiano: “temporizzazione di supervisore”) è un sistema di temporizzazione hardware che permette la rilevazione di un loop infinito di programma o di una situazione di deadlock. Questo consente di prendere dei provvedimenti per correggere la situazione, generalmente effettuando un reset del sistema. Nel modulo SlimLine ha lo scopo di garantire la corretta esecuzione del programma sul modulo CPU Raspberry, eseguendone il riavvio se si verificano condizioni anomale.

Disegno esploso modulo SlimLine Raspberry

Funzionamento watchdog controller

Alla accensione il WDC è disabilitato ed attende che il modulo CPU Raspberry attivi il segnale di ready sul bus di estensione abilitando il controllo di watchdog definendone il tempo di controllo. L’attivazione è eseguita dalla funzione ePhrI2cBusReady della libreria libeS8CoreMng.a che gestisce il segnale di ready sul bus di estensione e permette l’impostazione del tempo di controllo watchdog. Impostando 0 come tempo di controllo il controllo non viene attivato.

Il WDC gestisce un contatore dei riavvii consecutivi del sistema (Nel prosieguo indicato come RCounter), la funzione ePhrI2cBusReady ne ritorna il valore, 0 se prima accensione. Nei programmi sviluppati con LogicLab all’avvio del programma utente viene eseguita automaticamente la funzione ePhrI2cBusReady. Chi sviluppa il programma con il proprio linguaggio (C++, Phyton, Node.js, ecc.) dovrà eseguirne la chiamata.

Con il segnale di ready sul bus di estensione attivo il WDC verifica che la CPU esegua un comando di rinfresco entro il tempo di controllo impostato. Nei programmi sviluppati con LogicLab il rinfresco del WDC viene automaticamente eseguito ad ogni esecuzione della task di background. Chi sviluppa il programma con il proprio linguaggio dovrà gestirne il rinfresco con la funzione eWDogRefresh.

Nel caso la CPU entri in un loop infinito di programma od in una situazione di deadlock il WDC non riceve il rinfresco entro il tempo di controllo e comanda un reset al modulo CPU provocando l’incremento di RCounter ed  il riavvio del programma. Al riavvio il programma esegue la funzione ePhrI2cBusReady che ritorna il valore di RCounter (1 al primo riavvio, 2 al secondo e così via). Nei programmi sviluppati con LogicLab al terzo riavvio consecutivo viene arrestata l’esecuzione del programma. Chi sviluppa il programma con il proprio linguaggio dovrà gestire l’evento.

Se al riavvio del programma la condizione anomala che aveva provocato l’intervento del WDC è sparita (Esempio era dovuta ad un disturbo) la libreria libeS8CoreMng.a provvede automaticamente dopo 5 minuti di funzionamento regolare ad azzerare il valore di RCounter. Se non viene azzerato il valore di RCounter il WDC al decimo riavvio consecutivo disabilita il controllo del watchdog.

Utilizzo watchdog controller

Nel caso la CPU entri in un loop infinito di programma od in una situazione di deadlock il WDC esegue il reset della CPU che al riavvio tramite la funzione ePhrI2cBusReady può gestire sia il ready del bus periferico che il controllo sui riavvii leggendo il valore di RCounter.

Se la situazione anomala di funzionamento è stata rimossa il programma ripartirà normalmente e dopo 5 minuti di funzionamento regolare RCounter viene azzerato. Se invece il programma non riparte, non viene eseguita la funzione ePhrI2cBusReady e dopo 10 riavvii consecutivi il WDC non eseguirà più il reset del modulo CPU. In questo modo se il sistema operativo è attivo sarà possibile accedere via SSH al sistema effettuando gli opportuni controlli sul programma per ripristinarne il regolare funzionamento.

Aggiornamento firmware scheda

Come abbiamo visto la scheda interfaccia è basata su di un processore che esegue un proprio firmware (SFW203xxxx), quindi esiste la necessità di effettuare un aggiornamento del firmware per implementare nuove funzioni o correggere bugs. Vediamo come si esegue l’aggiornamento.

  • Inserire un convertitore USB/Seriale nel connettore USB del modulo Raspberry e collegarlo con cavo Null-Modem alla porta seriale del PC.
  • Eseguire Toolly, attivare l’utility Devices->Firmware Updater definendo la porta COM a cui ci si è connessi e selezionando il firmware da trasferire, premere il tasto Send.
  • Accendere lo SlimLine ed attenderne l’avvio.
  • Connettersi in SSH al modulo Raspberry, arrestare eventuali processi che utilizzano il modulo di interfaccia (Esempio run time LogicLab e CODESYS) ed eseguire il comando: sudo /opt/elsist/utils/eS8CoProXConn -u.
  • L’utility Updater di Toolly eseguirà l’aggiornamento terminato il quale occorre spegnere e riaccendere il modulo per renderlo operativo.
Screenshot Toolly MPS055 Updater
Was this article helpful?