La crescente importanza della funzionalità watchdog nelle applicazioni MCU

Di Jon Gabay

Contributo di Electronic Products


Data la crescente complessità dei sistemi embedded multi-thread, in tempo reale e multitasking, diventa sempre più difficile sapere quando un microcontroller funziona in modo anomalo. Con talmente tante routine di servizio che operano in modo più o meno indipendente, è possibile che alcune siano attive, mentre altre sono bloccate, inattive o eseguono codice erratico.

Di conseguenza, ora è più difficile per i progettisti di sistemi embedded proteggere l'intero sistema da un guasto che si verifica in una routine di servizio secondaria o un core che è andato alla deriva.

Il presente articolo prende in esame l'esigenza in evoluzione di funzionalità watchdog più avanzate e le tecniche che i progettisti possono usare per assicurare operazioni MCU affidabili. Tratta delle carenze da risolvere sia esternamente nell'hardware che internamente nel software e analizza componenti watchdog campione. Tutti i componenti, le schede tecniche, i tutorial e i riferimenti di sviluppo citati sono reperibili nel sito Web di Digi-Key.

Protezione semplice

La necessità di funzionalità watchdog si estende da macchine a 4 bit a macchine avanzate a 32 bit e oltre. Non è insolito vedere dei processori semplici operare in situazioni potenzialmente pericolose. Ad esempio, un loop di controllo dell'acceleratore potrebbe aver bisogno localmente solo di un semplice microcontroller a 8 bit a segnale misto per fornire un controllo stabile a circuito chiuso. Può ricevere i comandi tramite un bus CAN dell'auto e scaricare tutta l'elaborazione da un computer remoto dell'auto. Ma se questo semplice processore si guasta, l'auto può accelerare al massimo, con conseguenze letali.

Si può dire che virtualmente ogni microcontroller moderno contiene una qualche funzionalità watchdog rudimentale, che si tratti di blocchi hardware watchdog dedicati o di timer per uso generale utilizzabili per implementare funzioni watchdog controllate tramite software. Tutto viene sincronizzato con un clock di sistema nel processore.

Dato che i processori diventano sempre più sofisticati, anche le strutture di temporizzazione e la distribuzione di segnali di clock all'interno del processore possono farsi più complesse. Gli oscillatori possono essere particolarmente suscettibili alle scariche elettrostatiche, ad esempio, e se i clock si arrestano i watchdog sincronizzati non servono a niente.

Gli oscillatori R/C e le costanti di tempo possono essere d'impianto vecchio, ma possono offrire meccanismi di clock indipendenti e meccanismi di reset come fallback o backup. Analogamente, oscillatori interni ed esterni ridondanti possono fornire un qualche tipo di frequenza per mantenere attivo il circuito di monitoraggio durante guasti avversi. Anche l'integrazione selezionabile dei clock è importante come lo è la posizione dei clock nella struttura ad albero (Figura 1).

Immagine di clock di sistema abbinati a oscillatori R/C di backup

Figura 1: La combinazione di clock di sistema con oscillatori R/C di backup può consentire risparmi energetici e un clock di backup indipendente affidabile per funzioni watchdog nel caso in cui i clock di sistema accusino anomalie. Osservare come qui sono utilizzati due oscillatori R/C.

Lo stesso vale per i circuiti di rilevamento a bassa tensione. Pur essendo possibile raggiungere una precisione rudimentale utilizzando riferimenti di tensione interni, comparatori e rilevatori, i circuiti esterni possono fornire una risoluzione superiore e una selettività più precisa del livello di tensione. Ad esempio, se parte del software per la modalità caduta di tensione include la scrittura nella EEPROM, si potrebbe scegliere di far intervenire anticipatamente la soglia del rilevatore di bassa tensione per consentire allo storage della carica capacitiva tempo sufficiente per eseguire la scrittura nella EEPROM prima di spegnerlo in modo ordinato. I moderni rilevatori della tensione possono raggiungere risoluzioni fino a 0,05 V per un uso preciso di tutta l'energia. In genere questa è una risoluzione molto migliore di quella che è possibile trovare internamente con un microcontroller.

Un altro aspetto da tenere in considerazione è il fatto che i soli timeout massimi non sono sempre efficaci. La maggior parte degli schemi di watchdog implementa fondamentalmente un multivibratore monostabile reinnescabile (tramite univibrazione). Se i clock del ciclo software o hardware non reimpostano il timer entro l'intervallo di tempo massimo consentito, il watchdog scatta e reimposta il processore (o avvia una routine di servizio di recupero da un guasto).

Anche i requisiti di tempo minimo sono interessanti. Se una routine di servizio, ad esempio, è sincronizzata con uno zero-crossing della rete elettrica a 60 Hz, gli impulsi dovrebbero essere distanziati di 8,33 ms. Se arrivano prima, occorre far fronte a condizioni di rumore o di guasto, spesso con implicazioni per la sicurezza.

I progetti a multiprocessore e multicore presentano delle situazioni speciali. Occorre impostare watchdog singoli per monitorare ogni processore o core con le condizioni peculiari del codice in esecuzione in quel processore in quel momento. Ciò significa che parte dello sviluppo del software che interessa un core in un ambiente multicore deve tener conto delle specifiche condizioni del watchdog che segnalano il guasto che interessa quello specifico blocco di codice.

Inoltre, il reporting dei watchdog deve essere gerarchico. Ogni core deve riferire a un watchdog di livello superiore che collega fra loro tutte le modalità di guasto riferite da tutti i core secondari e i processi. Come funzione di sistema di livello superiore, un esecutivo watchdog lavora in stretta collaborazione con l'esecutivo dell'attività principale che assegna blocchi di codice a core specifici. Inoltre, deve collaborare con i sistemi watchdog esterni.

Un circuito di tipo wired-OR di un blocco multi-watchdog può facilmente essere espanso per utilizzare un I/O specifico verso un core a cui riferire (Figura 2). Può trattarsi di un blocco di logica indipendente all'interno di un FPGA o CPLD e gestire più processori e blocchi con una facile espansione. Un registro può accumulare lo stato indipendente di tutti i blocchi di reporting per testare e recuperare quel core a livello individuale. Come si può immaginare, le routine di recupero si fanno più complesse, a questo livello, così come si fa più complesso il riavvio di un core lasciando il resto del sistema in esecuzione.

Immagine di un livello superiore della gerarchia di watchdog

Figura 2: Un livello superiore della gerarchia di watchdog può usare la funzionalità wired-OR per consentire il reporting di tutti i microcontroller o ai core alle rispettive velocità. Ogni univibrazione deve consentire al processo che sta monitorando di programmarsi nell'intervallo di durata. Ogni blocco di codice ha parametri di watchdog.

Componenti con funzioni watchdog speciali

Numerosi microcontroller hanno funzionalità esclusive o variabili quando si tratta del modo in cui implementano i propri watchdog. Si prenda ad esempio la serie MaxQ a 16 bit di Maxim, che combina un ricco assortimento di timer flessibili con circuiti intelligenti per aumentare la facilità d'uso. Componenti come MAXQ2000-RBX+ di Maxim hanno un livello secondario di avviso. Se non viene servito, e il WDT del MAXQ2000 si riversa, attiva un interrupt con un conteggio aggiuntivo per altri 512 cicli del clock di sistema. Quindi reimposta tutto se non viene disattivato o escluso.

Questo interrupt offre un'ultima possibilità di salvare le informazioni di debug, che la maggior parte dei progettisti reputa utile per lo sviluppo dei circuiti e la risoluzione dei problemi. Inoltre, invece di salvare le informazioni di debug, l'interrupt potrebbe essere usato per il recupero da un errore e per la cancellazione del watchdog. Quest'ultimo approccio, tuttavia, può compromettere l'affidabilità del sistema, in presenza di un guasto sistemico.

Analogamente ad altri WDT interni, il watchdog di MAXQ2000 può essere disattivato tramite software. Si tenga tuttavia presente che questa capacità ha anche il rovescio della medaglia: il codice erratico può disattivare il watchdog e proseguire la sua "opera di distruzione".

Alcuni microprocessori collegano il proprio WDT a un oscillatore interno separato dal clock del sistema. Alcuni usano oscillatori R/C interni o esterni, altri possono usarli entrambi. Il WDT di MAXQ2000 di Maxim ha una funzionalità interessante che deriva la sincronizzazione del watchdog dal clock di sistema ma passa a un oscillatore RC di backup in presenza di un guasto nell'oscillatore principale.

Un altro MCU interessante con funzionalità watchdog particolari è la famiglia di microcontroller STM32F100 di STMicroelectronics, che ha due timer watchdog. Componenti come STM32F100CBT6B sono destinati ad applicazioni smart grid e smart health che devono essere affidabili. Come la maggior parte dei microcontroller, ha più timer, in questo caso sei, e altri due timer a 16 bit dedicati alla funzionalità watchdog.

Ogni watchdog ha un prescaler selezionabile (fra 1 e 64 K) utilizzabile per sincronizzare i timer watchdog che possono anche attivare richieste DMA e i canali di acquisizione/comparazione. Un altro watchdog indipendente si basa su un contatore a scalare a 112 bit e un prescaler a 8 bit sincronizzato da un oscillatore R/C interno indipendente a 40 kHz. Tenere presente che entrambi questi componenti fanno affidamento su componenti R/C come tecnologia di backup estremamente affidabile.

Una caratteristica interessante del componente di STMicroelectronics è la funzione watchdog analogica. Il monitoraggio preciso di uno o più livelli di tensione convertiti dall'A/D può attivare il reset se i livelli analogici non rientrano nelle soglie programmate. Ciò può essere utile per applicazioni medicali in cui i sensori sono collegati a una Body Area Network per il monitoraggio delle condizioni di salute o la somministrazione attiva di farmaci (Figura 3). Come aiuto per la progettazione, STMicroelectronics offre agli ingegneri un modulo didattico per progetti destinati alla salute e al benessere.

Immagine della Body Area Network

Figura 3: Dato che un dispositivo medicale si integra più attivamente con le Body Area Network, alcuni dispositivi (pacemaker, defibrillatori, pompe per insulina, ecc.) possono avere un'importanza cruciale per il mantenimento in vita. In questi sistemi occorre inserire dei watchdog affidabili.

Una prospettiva dall'esterno

Diverse soluzioni esterne con degli ottimi presupposti includono semplici generatori di soglia R/C, transistor polarizzati, timer a bassa potenza e processori abbinati dedicati di reset all'accensione e watchdog. Inoltre, sono disponibili ambienti di sviluppo che stimolano la sperimentazione e la facilità dei test. Texas Instruments offre una soluzione interessante con il timer TPL5000 a nanopotenza programmabile che assorbe 30 nA entro un ampio intervallo tra 1,8 e 5 V c.c. Il kit di valutazione TPL5000EVM consente di provare e ottimizzare questa funzionalità in un piccolo modulo autonomo.

Sono disponibili numerosi watchdog discreti, abbinati ad altre funzioni utili come clock in tempo reale e funzioni di supervisione. Una combinazione interessante è quella offerta da Lattice Semiconductor, con il supervisore di alimentazione, watchdog e generatore di reset ISPPAC-POWR607-01SN32I (Figura 4). Notare la dimensione del passo del punto di intervento analogico a 1% e la macro cella programmabile integrata nel sistema per la personalizzazione combinatoria e lo stato della macchina.

Immagine dei parametri programmabili dall'utente all'interno del sistema

Figura 4: I parametri programmabili dall'utente all'interno del sistema consentono determinazioni dinamiche delle funzioni watchdog tramite l'uso di logica combinatoriale e configurabile dall'utente basata sullo stato della macchina.

Conclusioni

Tenere presente che a volte nulla aiuterà a ripristinare un sistema. Alcune modalità di guasto non sono recuperabili. Ad esempio, se la memoria del sistema è danneggiata, non si può fare affidamento su nient'altro.

Un altro caso è quello della presenza di livelli elevati di rumore. Anche se un watchdog reimposta il processore, il rumore può interferire con l'inizializzazione dello stadio watchdog del processore. Se non è possibile inizializzare la funzionalità watchdog, è come se non vi fosse alcun watchdog.

Nessuno può confidare che tutti gli MCU funzionino sempre perfettamente. I microcontroller possono guastarsi. Tuttavia, l'uso accorto delle risorse interne ed esterne può fare la differenza fra un guasto di lieve entità e un danno catastrofico alle cose o addirittura dagli esiti fatali per le persone.

Per ulteriori informazioni sui componenti citati in questo articolo, utilizzare i collegamenti forniti per l'accesso alle pagine di prodotto sul sito Digi-Key.

Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di Digi-Key Electronics o le sue politiche.

Informazioni su questo autore

Jon Gabay

Informazioni su questo editore

Electronic Products

La rivista Electronic Products e il sito ElectronicProducts.com sono al servizio di ingegneri e responsabili tecnici che si occupano della progettazione di sistemi e apparecchiature elettroniche.