CB, back in
this thread, CrossRoads said this:
EEPROM starts as 0xFF (255 DEC).
Indeed it does...
#include <EEPROM.h>
static char HexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
static void Serial_printhex( unsigned Value, int Digits )
{
const unsigned Size = 2*sizeof(unsigned)+1;
char Buffer[Size];
int8_t Tail;
Tail = Size - 1;
Buffer[Tail] = 0;
while ( Value != 0 )
{
--Tail;
Buffer[Tail] = HexDigits[ Value & 0xF ];
--Digits;
Value = Value >> 4;
}
while ( (Digits > 0) && (Tail > 0) )
{
--Tail;
Buffer[Tail] = '0';
--Digits;
}
Serial.print( &Buffer[Tail] );
}
void setup( void )
{
Serial.begin( 115200 );
unsigned Address;
unsigned Bytes;
uint8_t Value;
Serial.println();
Address = 0;
while ( Address <= E2END )
{
Serial_printhex( Address, 4 );
Serial.print( F( " " ) );
Bytes = 0;
while ( (Address <= E2END) && (Bytes < 16) )
{
Value = EEPROM.read( Address );
Serial_printhex( Value, 2 );
Serial.write( ' ' );
++Bytes;
++Address;
}
Serial.println();
}
Serial.println();
}
void loop( void )
{
}
0000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0040 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0050 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0060 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0070 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0080 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0090 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
00A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
00B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
00C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
00D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
00E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
00F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0100 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0110 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0120 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0130 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0140 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0150 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0160 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0170 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0180 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0190 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
01A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
01B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
01C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
01D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
01E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
01F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0200 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0210 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0220 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0230 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0240 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0250 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0260 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0270 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0280 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0290 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
02A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
02B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
02C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
02D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
02E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
02F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0300 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0310 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0320 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0330 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0340 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0350 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0360 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0370 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0380 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0390 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
03A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
03B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
03C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
03D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
03E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
03F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
(Even if there was a serial number in there, since EEPROM is EE, that would only help if part of it could be made read-only. What we really need is a globally unique number like a MAC, kindof thing.)
The theory is that the counterfeiter is too lazy or ignorant to program the EEPROM when they program the bootloader. Doesn't matter. There is no serial number.