A peripheral device and method are provided for reliably updating and
checking firmware or other coded information stored within a nonvolatile
memory of the device. The device comprises a microcontroller and a memory
with a fixed part and an updateable part. Both the fixed part and the
updateable part store firmware. When firmware in the updateable part is
updated (such as by using a USB connection with a host PC), a first error
detection code is generated and stored in the updateable part. As part of
an initialization procedure, the firmware stored in the fixed part
generates a second error detection code based on the updated firmware
stored in the updateable part and compares the second error detection code
to the first error detection code stored in the updateable part. If the
error detection codes indicate that the firmware stored in the updateable
part is valid, the microcontroller uses the firmware stored in the
updateable part to operate the device; otherwise, the microcontroller uses
firmware stored in the fixed part to operate the device.
Μια απομακρυσμένη συσκευή και μια μέθοδος παρέχονται για σοβαρά να ενημερώσουν και να ελέγξουν firmware ή άλλες κωδικοποιημένες πληροφορίες που αποθηκεύεται μέσα σε μια αμετάβλητη μνήμη της συσκευής. Η συσκευή περιλαμβάνει έναν μικροελεγκτή και μια μνήμη με ένα σταθερό μέρος και ένα updateable μέρος. Και το σταθερό μέρος και το updateable μέρος αποθηκεύουν firmware. Όταν firmware στο updateable μέρος ενημερώνεται (όπως με τη χρησιμοποίηση μιας σύνδεσης USB με ένα PC οικοδεσποτών), ένας πρώτος κώδικας ανίχνευσης λάθους παράγεται και αποθηκεύεται στο updateable μέρος. Ως τμήμα μιας διαδικασίας έναρξης, firmware που αποθηκεύεται στο σταθερό μέρος παράγει έναν δεύτερο κώδικα ανίχνευσης λάθους βασισμένο ενημερωμένο firmware που αποθηκεύεται στο updateable μέρος και συγκρίνει το δεύτερο κώδικα ανίχνευσης λάθους με τον πρώτο κώδικα ανίχνευσης λάθους που αποθηκεύεται στο updateable μέρος. Εάν οι κώδικες ανίχνευσης λάθους δείχνουν ότι firmware που αποθηκεύεται στο updateable μέρος ισχύει, ο μικροελεγκτής χρησιμοποιεί firmware που αποθηκεύεται στο updateable μέρος για να ενεργοποιήσει τη συσκευή διαφορετικά, ο μικροελεγκτής χρησιμοποιεί firmware που αποθηκεύεται στο σταθερό μέρος για να ενεργοποιήσει τη συσκευή.