Presentazione dei waypoint delle funzioni per proteggere il dispositivo [chiuso]

0

La definizione di un puntatore o contatore magico all'interno di un programma / classe e il controllo di un valore fisso prima dell'esecuzione di comandi critici è un modo per generare una barriera contro l'esecuzione sbagliata.

Questo controllo dovrebbe essere usato su un sistema embedded che esegue un programma scritto in C / C ++. Immagina una situazione in cui il contatore del programma è impostato su un indirizzo pericoloso per errore (EMI, programmatore malintenzionato, hacker, Babbo Natale ...). Questo pezzo di codice cancellerebbe ad esempio una cella flash nella MCU. Non vogliamo che - > Metti un se di fronte a ogni comando di cancellazione e controlla 0xDEADBEEF.

So che il guadagno non è troppo alto e il programma perde flessibilità. Ho anche pensato di avere waypoint (Erase - > Is write set? - > Hai dati del firmware?)

Come si chiama questa tecnica? Ci sono documenti su di esso o addirittura modelli?

    
posta clambake 09.12.2014 - 14:31
fonte

1 risposta

3

Un campo che aggiungi a una struttura ai fini del controllo degli errori è spesso chiamato tag dog (penso che sia così chiamato dopo Codice completo - Steve McConnel ).

Per controllare la presenza di memoria danneggiata viene utilizzato un tag cane:

  • quando assegni una variabile metti un valore che dovrebbe rimanere invariato nel suo file di tag;
  • quando usi la struttura controlla il valore del campo del tag (se il campo del tag non ha il valore atteso che i dati sono stati corrotti);
  • quando elimini un puntatore, il tag viene corrotto in modo che, se accidentalmente provi a liberare nuovamente lo stesso puntatore, rilevi il danneggiamento.

I valori canarino nello stack sono campi tag dog (dai un'occhiata a I campi "dog-tag" sono usati in alcuni software? ).

    
risposta data 10.12.2014 - 10:12
fonte

Leggi altre domande sui tag