Author Topic: Descrizione funzionale del software del STSMaster  (Read 1079 times)

Offline I2NOS

  • Full Member
  • ***
  • Posts: 179
Descrizione funzionale del software del STSMaster
« on: February 09, 2018, 10:18:02 PM »
Architettura del master
STSMaster utilizza ora un core multitasking basato su freertos 9.0.0.
Questo permette di simulare l'esecuzione contemporanea di vari task rendendo più agevole la gestione della logica di sistema e applicativa.
Dopo la sequenza di boot del sistema e l'inizializzazione dei vari driver (che per chiarezza vedremo successivamente) sono avviati i seguenti task:
Service, AX25Level1, vAX25Level2, vApplStsm, vSlave, vWatchdog
che rimangono sempre attivi e hanno tutti lo stesso livello di priorità; sono quindi eseguiti in successione, con un periodo di tempo prestabilito riservato ad ognuno di essi. Nel caso un task sia in attesa di qualche evento, il suo slot di tempo passa al task successivo.
Vediamoli
1) Service - Questo task aggiorna l'orologio di sistema, schedula l'invio dei messaggi sulla porta seriale degli slave, gestisce la messaggistica e i log, analizza lo stato delle batterie e ruota la batteria sotto carico, gestisce la pianificazione giornaliera/oraria dei carichi, aggiorna le variabili per inquiry utente sullo stato della memoria ((il dettaglio sara' trattato nei relativi punti). L'aggiornamento dell'orologio di sistema e delle varie componenti del power system è pilotato da timer che a tempo settano flag per innescare le varie routine;  per i log e messaggi è attivo un sistema di comunicazione  con gli altri trask tramite code e semafori.

2) AX25Level1 - Questo task è responsabile di assemblare i byte ricevuti dalla radio trasformandoli in frame ax25, di ricevere i messaggi dai task di livello superiore e trasformarli in frame ax25 da inviare alla radio, di ricevere i byte dalla driver seriale rs485 (risposte dagli slave) e trasformarli in pacchetti ax25, ricevere i messaggi dai task di livello superiore da inviarli come frame ax25 al driver della seria rs485.
Il colloquio tra i vari task di livello superiore ed inferiore è gestito tramite sistemi di code e semafori.

3) vAX25Level2 - Il task si incarica del colloquio ax25, attraverso la gestione della connessione, la sincronizzazione dei messaggi, cla onferma dei messaggi correttamente ricevuti, la richiesta di ritrasmissione per quelli non ricevuti, la ritrasmissione dei messaggi non ricevuti dalla controparte, disconnessione. Il dialogo prevede la ricezione dei pacchetti ax25 dallo strato inferiore AX25Level1, la notifica al livello applicativo superiore della richiesta di connessione e la consegna all'applicativo del messaggio ripulito. A fronte della risposta dell'applicazione il messaggio viene incapsulato con gli elementi del destinatario e inviato al livello sottostante. Il colloquio tra i vari task di livello superiore ed inferiore è gestito tramite sistemi di code e semafori.

4) vApplStsm - Questo task schedula due applicazioni, la prima è responabile del colloquio con l'utente reagendo alle sue richieste, interrogando se necessario gli strati sottostanti (es. power system); la seconda è responsabile del sistema di broadcasting connectionless su radio (invio telemetria). Il colloquio con i  task di livello inferiore è gestito tramite sistemi di code e semafori.

5) vSlave - Questo task si incarica del colloqui con gli slave. Gestisce il polling con i vari slave (appoggiandosi al livello AX25Level1), raccoglie le risposte e le salva in una apposita struttura; in caso di non risposta degli slave, vengono effettuati retry e al fallimento degli stessi l'azzeramento delle relative strutture. Il programma inoltre riceve dai vari task richieste di informazioni  e comandi relativi agli slave.  Nel caso di interrogazioni, se ha già tutti i dati raccolti nel polling precedente, risponde con questi; nel caso di comandi li inoltra, fuori dalla sequenza di polling, agli slave. Il colloquio con gli altri task è gestito tramite sistemi di code e semafori.

6) vWatchdog - Il controllo del corretto funzionamento di tutti i task è affidato al watchdog hw, che se non viene periodicamente resettato esegue un riavvio del sistema. Questo task periodicamente controlla che ogni singolo task incrementi una sua variabile; il mancato aggiornamento della variabile indica un possibile blocco di quel task e la conseguente necessità di intervenie.

A corollario, oltre ovviamente il freertos,  ci sono una serie di driver che implementano un modem a 1200 bps, gestiscono il colloquio con le seriali, con la EEprom, con la memoria di massa su sd, con il real time clock.