Platformio unit tests¶
Prerequisiti per l'esecuzione dei test¶
I moduli Master e Slave necessitano di un'alimentazione da 9-30V.
Tutti i test elencati sono stati eseguiti nella data del 05/04/2023 presso la sede Digiteco con esito positivo.
N.B. Per la replica dei test è necessario inserire i jumper delle schede master e slave in modalità default come di seguito descritta.
Scheda Master¶
master-sheet
Identificatore |
Descrizione |
---|---|
J1 |
Connettore Encoder |
J2 |
Connettore Programmatore MCU |
J3 |
Connettore Micro SD-Card |
J4 |
Connettore CAN BUS |
J5 |
Connettore EIA RS-232 |
J6 |
Connettore USB-C |
J7 |
Connettore Alimentazione board |
JP1 e JP2 |
Abilitazione terminatori di linea CAN BUS - Default jumper inserito |
JP3 |
Abilitazione UPIN27 o connettore EIA RS232 - Default jumper inserito sui pin 1-2 (UPIN27) |
JP4 |
Abilitazione LED DL1 di colore verde - Default jumper inserito |
BOOT1 |
Abilitazione BOOT |
BATT1 |
Abilitazione batteria tampone - Default jumper inserito |
Scheda Slave¶
slave-sheet
Identificatore |
Descrizione |
---|---|
J1 |
Connettore Programmatore MCU |
J2 |
Connettore I2C 12V |
J3 |
Connettore CAN BUS |
J4 |
Connettore EIA RS-232 3V3 |
J5 |
Connettore EIA RS-232 |
J6 |
Connettore SPI |
J7 |
Connettore Ingressi digitali |
J8 |
Connettore Ingressi analogici |
J9 |
Connettore Alimentazione sensori 5V e 3V3 |
J10 |
Connettore Alimentazione sensori 12V |
J12 |
Connettore Alimentazione board |
JP1 |
Impostazione della programmazione - Default jumper inserito sui pin 1-2 |
JP2 |
Abilitazione BOOT |
JP3 |
Abilitazione batteria tampone - Default jumper inserito |
JP4 e JP5 |
Abilitazione terminatori di linea CAN BUS - Default jumper inserito |
JP6 |
Impostazione dell'alimentazione dell'I2C esteso e bufferizzato dal PCA9517D (5V o 3V3) |
JP7 |
Impostazione doppia alimentazione del traslatore di livello TXU0204-Q1 (5V o 3V3) |
da JP8 a JP31 |
Impostazione del tipo di ingresso del segnale analogico |
JP32 |
Abilitazione LED DL1 di colore verde - Default jumper inserito |
da JP33 a JP35 |
Abilitazione resistori da 1K5 in ingresso agli optoisolatori per utilizzare gli ingressi digitali a 5V |
Can hardware setup¶
Percorso test: rmap/platformio/stima_v4/test/master_can_setup
Procedimento¶
Eseguire tramite linea di comando: pio run test
Requisiti hardware¶
Modulo Master
Descrizione software¶
Test sull'inizializzazione e avvio hardware del CAN BUS: 1. Impostazione bit-rate CAN 2. Configurazione velocità e modalità BXCan 3. Avvio modulo CAN 4. Abilitazione interrupts 5. Verifica delle sottoscrizioni messaggi Canard
Il test effettua la programmazione delle apparecchiature hardware HAL STM32 e il chip di alimentazione della linea CAN StimaV4. Viene inoltre tramite l'utilizzo dei registri UAVCAN memorizzati su EEprom configurata e programmata la velocità di linea CAN. Se la velocità non è corretta viene impostata la velocità di Default di 1 Mhz e nuovamente riprogrammata la sequenza.
Display LCD¶
Percorso test: rmap/platformio/stima_v4/test/master_lcd
Procedimento¶
Eseguire tramite linea di comando: pio run test
Effettuare una pressione sull'encoder rotativo per attivare il display
Requisiti hardware¶
Modulo Master
Descrizione software¶
Test sull'inizializzazione e avvio del task LCD con scrittura “Hello World” sul display: effettua il test della libreria utilizzata con semplici comandi e scritta HelloWorld. Viene utilizzata la libreria U8gl2 opportunamente modifica per renderla funzionante. A partire dalla libreria che utilizzava solamente l'I2C principale si è modificata per renderla programmabile anche ad altri canali I2C e come parametro nel'istanza principale è stato aggiunto il passagio del semaforo per la gestione a basso livello del canale I2C nel sistema RTOS per rendere il tutto più rapido possibile.
HTTP¶
Percorso test: rmap/platformio/stima_v4/test/master_http
Procedimento¶
Eseguire tramite linea di comando: pio run test
Requisiti hardware¶
Modulo Master con il modulo GSM
Descrizione software¶
Richiede una fase precedente di connessione del modem GSM. 1. Inizializzazione task e libreria Cyclone 2. Connessione http 3. Verifica stringa avvio board 4. Ricezione rpc configurazione ricevuta 5. Ricezione rpc richiesta reboot
Il test effettua la connessione https con parametri di default preimpostati e avvia lo scaricamento della configurazione StimaV4. Termina al raggiungimento corretto della prima linea di configurazione. Viene utilizzata la libreria CycloneTCP opportunamente configurata nel sistema. Il test è in conseguenza della connessione GSM che attiva il collegamento http.
Master queue data¶
Percorso test: rmap/platformio/stima_v4/test/master_queue_data
Procedimento¶
Eseguire tramite linea di comando: pio run test
Requisiti hardware¶
Modulo Master con il modulo SDCard UPIN27 (necessario collegarlo attraverso il modulo GSM)
Descrizione software¶
Inizializzazione SD card , creazione di file dati fittizzio e impostazione del puntatore ad un dato esistente/non esistente
Passaggio richiesta e risposta tramite coda gestita dal Supervisor task
Master o Slave memory¶
Percorso test Master: rmap/platformio/stima_v4/test/master_memory Percorso test Slave: rmap/platformio/stima_v4/test/slave_memory
Procedimento¶
Eseguire tramite linea di comando: pio run test
Requisiti hardware¶
Modulo Master o Slave
Descrizione software¶
Test sui task e librerie EEPROM e Flash con scrittura e lettura automatica. 1. Scrittura di dati fittizi 2. Lettura e verifica dei dati scritti in memoria
Modem GSM hardware setup¶
Percorso test: rmap/platformio/stima_v4/test/master_gsm
Procedimento¶
Eseguire tramite linea di comando: pio run test
Requisiti hardware¶
Modulo Master con il modulo GSM
Descrizione software¶
Test sul task con inizializzazione, accensione, connessione e spegnimento modulo SIM7600E: effettua la connessione modem con parametri di default preimpostati e avvia a partire dal task supervisor(quello che gestisce la comunicazione) il collegamento al driver C++ SIMCOM7600. La libreria avvia la programmazione del modulo e la gestione delle alimenazioni. Power ON/OFF e programmazione tramite comandi AT. Al termine della programmazione standard viene attivata la modalità rapida a 960Kbaud ed effettuato il collegamento PPP. Successivamente viene colegata tramite buffer e struttura la libreria CycloneTCP che rende disponibili tutte le sue funzioni al collegamento trasparente PPP.
MQTT¶
Percorso test: rmap/platformio/stima_v4/test/master_mqtt
Procedimento¶
Eseguire tramite linea di comando: pio run test
Requisiti hardware¶
Modulo Master con il modulo GSM
Descrizione software¶
Richiede una fase precedente di connessione del modem GSM. 1. Inizializzazione task e libreria Cyclone 2. Connessione al server mqtt 3. Connessione al topic 4. Pubblicazione di una stringa fittizia
Il test effettua la connessione mqtt con parametri di default preimpostati e avvia la pubblicazione e sottoscrizioneal server Mqtt utilizzato per StimaV4. Termina alla pubblicazione di una linea di test. Viene utilizzata la libreria CycloneTCP opportunamente configurata nel sistema. Il test è in conseguenza della connessione GSM che attiva il collegamento mqtt.
NTP¶
Percorso test: rmap/platformio/stima_v4/test/master_ntp
Procedimento¶
Eseguire tramite linea di comando: pio run test
Requisiti hardware¶
Modulo Master con il modulo GSM
Descrizione software¶
Richiede una fase precedente di connessione del modem GSM.
Test sul task con inizializzazione, connessione e ricezione data e ora: effettua la connessione ntp con parametri di default preimpostati e avvia la sincronizzazione RTC e successiva programmazione dell'orologio tramite libreria STM32Duino. Termina alla sincronizzazione RTC e corretta programmazione e rilettura dell'orologio. Viene utilizzata la libreria CycloneTCP opportunamente configurata nel sistema. Il test è in conseguenza della connessione GSM che attiva il collegamento http.
RPC Test and Reboot¶
Percorso test: rmap/platformio/stima_v4/test/master_rpc_test_reboot
Procedimento¶
Alimentare la board tramite le disposizioni elencate sopra
Connettere la board al PC mediante un cavo USB type-C e aprire il programma dedicato.
Eseguire tramite linea di comando: pio run test
Requisiti hardware¶
Modulo Master
Descrizione software¶
Test della classe RPC con test e reboot rpc inviati da USB mediante un programma dedicato: effettua la verifica di linee di comando usb-rs232 tramite connettore usb-c presente nel master. Il test attende tramite USB che venga eseguia una RPC di esempio chiamata “RpcTest” o una “Reboot” nelle modalità StimaV4. Termina alla ricezione di “RpcTest”. Un segnale buzzer viene eseguito al “Reboot” in modo da verificare l'effettivo riavvio del sistema sulla chiamata della RPC “Reboot”. Il test verifica inoltre la catena di funzionamento USB_Serial e relativo task di controllo e inoltro all'oggetto C++ RPC di StimaV4.
Slave low power¶
Percorso test: rmap/platformio/stima_v4/test/slave_lowpower
Procedimento¶
Alimentare la board Master e caricare il firmware che si trova nel percorso: rmap/platformio/stima_v4/master
Alimentare la board Slave e caricare il firmware che si trova nel percorso: rmap/platformio/stima_v4/slave_th
Collegare le boards tramite CAN bus: connettere CANH e CANL del Master rispettivamente al CANH e CANL dello Slave. Una volta terminato il collegamento, lo Slave entrerà in modalità Tickless.
Eseguire tramite linea di comando: pio run test
Requisiti hardware¶
Modulo Slave
Descrizione software¶
Entrata in modalità IDLE a FreeRTOS attivo senza soppressione tick automatico
Entrata in modalità Tickless 2 e risveglio dal LowPower Stop 2
Il test effettua la verifica della modalità LowPower di un modulo Slave. Per il corretto funzionamento è necessario che sia presente il master che invii allo slave il segnale di LowPower. Il modulo slave infatti è concepito per entrare in modalità LowPower solo con comando da Master. Il test evidenzia l'utilizzo delle funzionalità STM32Duino LowPower e la sua integrazione con Tickless su LPTim1. Dopo la programmazione dei timer e delle modalità LowPower, alla richiesta di LowPower dal Master viene attivata la relativa modalità STOP2 e il test termina al risveglio corretto della piena funzionalità.
Slave register¶
Percorso test: rmap/platformio/stima_v4/test/slave_register
Procedimento¶
Eseguire tramite linea di comando: pio run test
Requisiti hardware¶
Modulo Slave
Descrizione software¶
Test sull'inizializzazione, scrittura e lettura di un registro UAVCAN memorizzato nella EEPROM: effettua la verifica della libreria UAVCAN Register che permette la conservazione di registri UAVCAN nel modulo. La gestione dei registri è stata integrata nella EEProm interna e le chiamate di libreria leggono, scrivono inizializzano i registri in modalità trasparente appogiandosi alla memoria EEProm di StimaV4.
Stack Fault Exception¶
Percorso test: rmap/platformio/stima_v4/test/master_stack_overflow_beep
Procedimento¶
Il seguente test viene eseguito con il caricamento del firmware mediante il comando: pio run -e stimav4_master -t upload
Quando si raggiunge l'overflow dello stack, il cicalino emetterà un treno di impulsi che segnalano l'attivazione di un errore. Per una controverifica modificare in src/main.cppcommentandola riga di definizione del Supervisor task
static SupervisorTasksupervisor_task("SupervisorTask", 200, OS_TASK_PRIORITY_02, supervisorParam);
e decommentando la linea superiore che presenta la stessa definizione ma con una dimensione maggiore di stack assegnata. Ciò permetterà di non raggiungere l'overflow.
Requisiti hardware¶
Modulo Master
Descrizione software¶
Test che simula un overlflow da parte dello stack: effettua la dimostrazione del funzionamento delle funzioni di callBack inserite nel modulo freertos_callback, che contengono tutte le chiamate agli errori di sistema. In particolare viene ridotto lo stack di un task per verificare e simulare un errore di memoria e verificarne tramite attivazione del buzzere dell'avvenuta call_back nelle funzioni di sistema.
Queue log with SD Card¶
Percorso test: rmap/platformio/stima_v4/test/master_sd_queue_log
Procedimento¶
Eseguire tramite linea di comando: pio run test
Requisiti hardware¶
Modulo Master con il modulo SDCard UPIN27 (necessario collegarlo attraverso il modulo GSM)
Descrizione software¶
Test che simula un comando su coda per effettuare un logging generico con scrittura dati log su SD card: effettua un semplice push tramitre coda al task SD Card che effettua un LOG al posto del TRACE su RS232 su SD Card per un logging, conforme al TRACE su RS232. Dopo il push, viene riverificata l'effettiva scrittura su SD del comando di logging e così viene verificata SD, sua programmazione, coda con passaggio dati.
Uavcan¶
Percorso test Master: rmap/platformio/stima_v4/test/nucleo_uavcan/uavcan_master_cpp Percorso test Slave: rmap/platformio/stima_v4/test/nucleo_uavcan/uavcan_slave_cpp
Requisiti hardware¶
STM32L496ZG (Master)
STM32L452RE (Slave)
2x MicroSD Card Adapter
2x SD-Card
Collegamenti necessari¶
Connessione moduli con MicroSD Card Adapter¶
Master e Slave |
MicroSD Card Adapter |
---|---|
5V |
VCC |
GND |
GND |
PB6 |
CS |
PB13 |
SCK |
PB14 |
MISO |
PB15 |
MOSI |
Connessione moduli tramite CAN BUS¶
Master |
Slave |
---|---|
CAN TX PA12 |
CAN RX PA7 |
CAN RX PA11 |
CAN TX PA6 |
Procedimento¶
Caricare il firmware nello Slave tramite linea di comando pio run -e nucleo_l452re -t upload
Nel progetto del Master, decommentare il test da eseguire nel platformio.ini (Selezionare solo un tipo di test alla volta)
Eseguire tramite linea di comando: pio run test
Watchdog¶
Percorso test: rmap/platformio/stima_v4/test/master_watchdog
Procedimento¶
Eseguire tramite linea di comando: pio run test
Requisiti hardware¶
Modulo Master
Descrizione software¶
Test del task Watchdog. Verifica refresh con funzione presente in ogni task e blocco con esecuzione Wathdog: effettua la verifica del WatchDog per stima V4. In tutti i task master e slave sono stati inseriti delle funzioni per effettuare il WatchDog a livello locale. Un Task principale di watchdog effettua un continuo controllo dei task che devono azzerare il relativo flag di controllo o porlo in uno stato di Sleep o Suspend nel caso il task sia necessariamente soppresso per un tempo piuttosto lungo. Il WatchDog Task effettua il reset fisico del WatchDog Hardware solo se tutti i flag sono azzerati. In questo modo è abbastanza semplice capire se un task è in stallo e agire di conseguenza sul software per correggere potenziali problemi. Il test avvia il tutto in modalità normale, succesivamente passati 10 secondi blocca volutamente un task e il WatchDog interviene segnalando il task non rispondente.