Home
Accesso / Registrazione
 di 

Progettare in modo sicuro con i microcontrollori (I)

Progettare in modo sicuro con i microcontrollori

Progettare in modo sicuro con i microcontrollori, prima parte. Il microcontrollore è ampiamente utilizzato in molti dispositivi e lavora in ambienti difficili. Esso deve affrontare le sfide poste da: EMI, stabilita' della tensione, malfunzionamenti cristallo ed altre interferenze.

Tuttavia, un semplice reset non basta. Dimostrerò il principio di base per il reset del sistema ed il ripristino dello stato. Tenere comunque presente che le terminologie usate provengono da diversi microcontrollori.

System Reset and State Restore nei microprocessori

Il microcontrollore è ampiamente utilizzato in molti dispositivi e lavora in ambienti difficili. Esso deve affrontare le sfide poste da: EMI, stabilita' della tensione, malfunzionamenti cristallo ed altre interferenze. Se le interferenze sono abbastanza forti per disturbare il funzionamento, il progetto dovrebbe essere abbastanza sicuro per affrontare tali questioni; una buona pratica e' resettare e continuare con il funzionamento precedente e normale. Tuttavia, un semplice reset non basta. Dimostrerò il principio di base per il reset del sistema ed il ripristino dello stato. Tenere comunque presente che le terminologie usate provengono da diversi microcontrollori.

Progettare in modo sicuro con i microcontrollori

Un progetto semplice non da' importanza sullo stato della consistenza e sulla integrità dei dati. Ad esempio, noi, come consumatori, non ci preoccupiamo che la TV sia spenta e poi subito dopo accesa, basta che la TV ricordi l'ultimo canale selezionato. Ma il reset del sistema ed il ripristino sono fondamentali per gli apparecchi coinvolti in un processo complesso ed in un ambiente non sicuro (come ad esempio un robot per la chirurgia o un missile non possono essere semplicemente ripristinati). E' un disastro se questi dispositivi sono "resetati" e se si esegue il processo dal inizio del codice. Una sonda su Marte ha fallito perché dopo un aggiornamento ed un reset remoti non e' stato in grado di ripartire.

Inoltre, diverse risorse di reset possono portare il sistema in modi extra dovuti anche all'invecchiamento, alla produzione, alla manutenzione e all'aggiornamento del firmware. Di solito, questi modi sono memorizzati nella EEPROM in combinazione con registri "reset source".

Il progettista deve:

  1. Utilizzare con attenzione il sistema interrupt e vettori di reset per prevenire le eventuale interferenze o qualsiasi modo di lavoro supplementare, oltre al lavoro normale;
  2. Fare si che il sistema segua la reset source e cercare di ripristinare lo stato prima del reset..


Qui il contesto si riferisce ai registri critici tra cui SP, PC, registri di lavoro, spazio di memoria critica per l'applicazione . Si tratta di un approccio di progetto che coinvolge sia il progetto del software che dell'hardware.

Microcontrollers Software Design

Le reset sources disponibili sono diverse. In generale, le fonti sono: esterne, power-on, watchdog, low-voltage brown-out, il software. Ulteriori reset sources sono “illegal instruction op code”, “acces to an illegal memory address” e detezione ricezione carattere break nell' UART. Tutti questi permettono dispositivi più sicuri se il progettista li può sfruttare adeguatamente.

Per sostenere questa funzione, un gestore di reset e' posizionato prima del main loop del sistema. In questa routine, il software dovrebbe leggere il RSTSRC, ripristinare il contesto o scrivere il valore di default per le variabili critiche e registri secondo la reset source e poi salta al ciclo principale. Il gestore di reset e' ovviamente legato ai requisiti del sistema. Ecco alcuni esempi.

Subito dopo il reset, il P89LPC9xx prenderà istruzioni dall’indirizzo 0000h o dall'indirizzo di Boot. L'indirizzo di Boot e' formato utilizzando Boot Vector come byte alto dell’indirizzo ed il byte basso dell’indirizzo =00h. L'indirizzo Boot sarà utilizzato se c'e' il reset per ricezione da UART di un break o il Boot Status bit (BOOTSTAT.0) = 1, o se il dispositivo e' forzato in ISP mode. In caso contrario, le istruzioni vengono prese dall’indirizzo 0000H.

E' chiaro che il reset per la ricezione da UART di un break e' progettato per ISP firmware upgrade. Questo bit e' posto a zero dal software o al power-on reset, il che significa che in un hot reset (non un power-on reset), il gestore del reset leggere dei valori critici e giudicare se caricarli allo stato precedente.

Se la reset source e' LVR, low voltage reset, o BOR, brown-out reset, è possibile eseguire il software da dove è stato interrotto se non e' uno spegnimento totale. LVR/BOR di solito e' unito al "interrupt brown-out". Nella routine di interrupt, è possibile salvare il contesto in EEPROM o RAM sicura, e poi spegnere tutto il sistema. Se il sistema può essere acceso dall’interrupt, è possibile ripristinare il contesto e poi balzare fuori dopo l'istruzione RETI. Se il sistema e' in reset, il microcontrollore accenderà POR e LVR/BOR (si può semplicemente ignorare LVR/BOR e considerarlo come un'accensione del reset). Alcuni microcontrollori sono in grado di supportare operazioni a bassa tensione, anche della gamma BOR - in questo caso brownout dovrebbe essere disattivato, altrimenti può impedire il dispositivo di operare. Attenzione: in P89LPCxxx dalla NXP, c'e' una combinazione complessa nei modi: spento, brownout interrupt, brownout reset, power on reset, e significa che il progettista deve leggere e capire attentamente.

Il sottosistema watchdog timer protegge il sistema da codici sbagliati causando un reset del sistema. Il reset del timer del watchdog significa che il progettista dovrebbe controllare il progetto del software per istruzioni non valide ed il progetto dell’hardware per il fallimento del cristallo e problemi di EMC/EMI. A volte il timer del watchdog può essere utilizzato come general timer ed il progettista può utilizzare questa funzione per installare un reset/interrupt countdown timer per un'applicazione con scopi specifici.

Il software puo’ utilizzare diversi “flag” per valutare se IC esterni ed i dispositivi devono essere reimpostati o meno. Il reset del software puo’ essere utilizzato anche nella software trap per catturare “illegal instruction op code”, “acces to an illegal memory address”.

Interrupt e reset sources possono a volte confondere. In realtà e' abbastanza semplice valutare il reset come un interrupt speciale, che ripristinerà alcuni registri tra cui PC, SP e SFR con valori di default, e con un speciale 'interrupt handler vector' a 0x0000. Naturalmente il progettista deve leggere attentamente il manuale per configurare il chip per un interrupt o un reset di conseguenza.

Microcontroller Hardware Consideration

reset of 8051
Per permettere al sistema di avere abbastanza tempo di rispostare per memorizzare il contesto ad un modulo di memoria, soprattutto nel caso di LVR/BOR, il circuito dovrebbe offrire abbastanza potenza durante questo periodo critico. Il modo più semplice è l'aggiunta di un grosso condensatore alla Vcc dei microcontrollori, ed il collegamento di un diodo di protezione tra l'alimentazione ed il Vcc per assicurarsi che il condensatore offre la corrente solo per il microcontrollore ed il modulo di memoria. Il circuito campione è indicato nel disegno. La corrente dal condensatore è sufficiente per un microcontrollore per memorizzare il contesto.

Se le reset sources sono software reset, watchdog reset, “illegal instruction op code”, “acces to an illegal memory address”, o reset esterno (di solito è il reset degli utenti), è meglio caricare il contesto da un modulo di memoria permanente, di convalidare i dati e di continuare a lavorare. Inoltre, è meglio monitorare lo stato del reset per analizzare l'avvenimento di ogni tipo di reset per trovare la causa principale del reset e rimuoverla. Per esempio, il watchdog reset significa che la parte del sistema oscillante richiede un miglioramento o un'ottimizzazione del software di struttura; “illegal instruction op code”, “acces to an illegal memory address” reset significa che sono troppi problemi EMI nel progetto PCB o c'è un errore nella progettazione del software. Tutte queste analisi sono basate su specifici microcontrollori, requisiti di progettazione hardware e software. lo stato di ripristino è una soluzione di protezione, il progettista del sistema dovrebbe implementarlo nel sistema finché si riduca l'avvenimento del reset.

E' meglio utilizzare componenti nuovi per un progetto nuovo. Tuttavia è possibile utilizzare questo circuito per emulare un registro reset per 80C51. La realizzazione basiliare fa scattare il reset esterno pin di tutte le altre reset sources e la memorizzazione di reset sources in un byte in una zona DATI. Poiche il power on reset azzerera' tutti i dati , cosa che il reset esterno non fa, possiamo utilizzare questa funzione per valutare la sorgente di reset, reset esterno (e tutte le altre fonti) e un reset software . Parlemo di questo in un altro articolo.

References

Functional Safety Network

Il microcontrollore dalla NXP, P89LPC954. Il manuale e' qui.


Progettare in modo sicuro con i microcontrollori (II)

Progettare in modo sicuro con i microcontrollori (III)

Repost: 5 Lug 2008

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog
ritratto di biank9388

bor

Articolo molto interessante, io, ho avuto a che fare principalmente con mcu della famiglia Pic, quindi con funzionalità di reset integrate nel microcontrollore stesso(POR->PowerOnReset,BOR->BrownOutReset,etc);
è da tempo, però, che mi domando quando è necessario dotare il mcu di controlli di reset esterni e soprattutto perchè in alcuni casi l'utilizzo del Bor della Mcu provoca instabilità di funzionamento dello stesso...

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 0 utenti e 18 visitatori collegati.

Ultimi Commenti