??? 04/08/04 13:28 Read: times |
#68177 - RE: ROM Check Responding to: ???'s previous message |
hi,
there are some criteria we may talk about. For example: 1. CRC may not detect multiple errors; 2. It may happen that an error occures inside checking routine and so result of its work is not defined. If we wish to avoid it all then one of ways I see, is: - place program and one (ore more) its copies outside of MCU (external EEPROM(s), etc); - compare them all each with other(s) byte by byte. Moreover, this task must be done not by MCU but with hardware (for example, with external PLD). Hehe, it requires so much money and time to detect a bad bit. Another idea: use some CRC routines with different algorithms. Even if one has passed test then there is a big chance that second (third etc) detects error. But it does not eliminate point 2 indicated above. As I know, there are some huge algorithms like LAN64, DSA, Wicker98, RC6, Mars, Rijndeal, Serpent, TwoFish, etc. Some of them are used for crypto-protection as standard. Most of them may not be "complemented" with multiple changes (what both hackers and errors like to do :) and so they are able to detect any change(s). But I doubt about that it is possible to implement one of them into typical 8051 flash memory. BTW, "CRCs are designed to detect errors in serial data and program memory is not constructed this way ..." Indeed, but just look on program memory as on the bit stream where each 8 bits are called "byte". From other side, you may take all D0 bits as one bit stream, all D1 bits as another bit stream, etc. And then calculate CRC for the each of these 8 bit streams. As result, it checks program memory with 9 ways! After it, just change bits` rotation of CRC engine and you have got yet another 9 tests! Oh, it makes me crazy and look like paranoia, sorry (= If you still interest with it then try to read this: http://www.8052.com/forum/read.phtml?id=54585 Regards, Oleg |
Topic | Author | Date |
ROM Check | 01/01/70 00:00 | |
RE: ROM Check | 01/01/70 00:00 | |
RE: ROM Check | 01/01/70 00:00 | |
RE: ROM Check | 01/01/70 00:00 | |
RE: ROM Check![]() | 01/01/70 00:00 |