L' area della EEEPROM dispone anch'essa di bit di protezione
nei registri del CONFIG: operazioni di lettura e scrittura possono essere
abilitate o disabilitate da accessi esterni.
Il microncontroller, di per se, può comunque accedere in
lettura o scrittura ai dati salvati in EEPROM. Quindi questa chiave di
sicurezza riguarda essenzialmente il blocco di un possibile reverse engeneering.
Per aumentare il grado di sicurezza dei dati salvati in
EEPROM, sono stati implementati ulteriori meccanismi:
-
al power on, il bit WREN che abilita la scrittura viene
posto a 0
-
operazioni di scrittura sulla EEPROM sono disabilitate
durante il tempo di power-up
La necessità della chiave 55h-AAh e del bit WREN rendo poi
particolarmente sicura la scrittura da accessi erronei durante un evento di
brown-out o disturbi sull' alimentazione.
L' area EEPROM è pensata per accessi frequenti di
salvataggio di dati dalla mancanza di tensione. Il parametro D124 indica il
numero tipico di scritture possibili prima della perdita di affidabilità.
La tabella 26-1 riporta i parametri tipici della EEPROM e della FLASH e
permette una rapida comparazione delle caratteristiche salienti:
Si nota come la vita (in cicli di scrittura) della EEPROM
sia 100 volte maggiore di quella della FLASH. Ne deriva l' immediata
considerazione che la EEPROM è utilizzabile per scritture ben più
frequenti che la FLASH.
Un particolare che viene poco considerato, ma su cui il
foglio dati si sofferma, nel paragrafo 7.5 è quello della necessità di
effettuare un periodico refresh del contenuto della EEPROM, per garantire la
sicurezza dei dati, principalmente se questi dati sono aggiornato molto
raramente.
Il foglio dati propone anche un tratto di codice per questo
scopo:
CLRF
EEADR
; Start at address 0
BCF
EECON1, CFGS ; Set for memory
BCF
EECON1, EEPGD ; Set for Data EEPROM
BCF
INTCON, GIE ; Disable interrupts
BSF
EECON1, WREN ; Enable writes
Loop
; Loop to refresh array
BSF
EECON1, RD ; Read current
address
MOVLW
55h
;
MOVWF
EECON2 ;
Write 55h
MOVLW
0AAh
;
MOVWF
EECON2 ;
Write 0AAh
BSF
EECON1, WR ; Set WR bit to begin
write
BTFSC
EECON1, WR ; Wait for write to
complete
BRA
$-2
INCFSZ
EEADR, F ; Increment
address
BRA
Loop
; Not zero, do it again
BCF
EECON1, WREN ; Disable writes
BSF
INTCON, GIE ; Enable interrupts
|
La tab 7-1 riassume i bit e gli SFR interessati nella
gestione della EEPROM:
Come al solito, le caselle in grigio non contengono bit
relativi alla gestione della EEPROM, mentre le caselle con - indicano bit
non implementati, che rendono 0 in lettura.