diff --git a/Software/Flasher.bin b/Software/Flasher.bin index fc5a0a3..e3cfd90 100644 Binary files a/Software/Flasher.bin and b/Software/Flasher.bin differ diff --git a/Software/Flasher.dsk b/Software/Flasher.dsk index 69b2d62..716bfcf 100644 Binary files a/Software/Flasher.dsk and b/Software/Flasher.dsk differ diff --git a/Software/src/Flasher.c b/Software/src/Flasher.c index 718ffd7..09d352b 100644 --- a/Software/src/Flasher.c +++ b/Software/src/Flasher.c @@ -23,8 +23,9 @@ const char state_char[STATE_LAST] = { '|', '/', '-', '\\' }; uint8 buffer[BUFFER_SIZE] = { 0 }; -boolean writeChip(const uint8* pSource, volatile uint8* pDest, uint16 length); -void printStatus(uint8 percentage); +static void writeChip(const uint8* pSource, volatile uint8* pDest, uint16 length); +static boolean verifyChip(const uint8* pSource, volatile uint8* pDest, uint16 length); +static void printStatus(uint8 percentage); int main() @@ -111,11 +112,15 @@ int main() // write to SLOTROM cprintf("\r\n\r\nFlashing SLOTROM: "); - if(writeChip(buffer, pSlotRom, 256)) + writeChip(buffer, pSlotRom, 256); + cprintf("\r\n\r\nVerifying SLOTROM: "); + if(verifyChip(buffer, pSlotRom, 256)) { // write to EXTROM cprintf("\r\nFlashing EXTROM: "); - if(writeChip(buffer + 256, EXT_ROM_START, fileSize - 256)) + writeChip(buffer + 256, EXT_ROM_START, fileSize - 256); + cprintf("\r\nVerifying EXTROM: "); + if(verifyChip(buffer + 256, EXT_ROM_START, fileSize - 256)) { cprintf("\r\n\r\nFlashing finished!\n"); retval = 0; @@ -130,7 +135,7 @@ int main() return retval; } -boolean writeChip(const uint8* pSource, volatile uint8* pDest, uint16 length) +static void writeChip(const uint8* pSource, volatile uint8* pDest, uint16 length) { uint32 i; volatile uint8 data = 0; @@ -154,11 +159,30 @@ boolean writeChip(const uint8* pSource, volatile uint8* pDest, uint16 length) } while((readData & 0x80) != (data & 0x80)); - if(readData != data) + pDest++; + } +} + +static boolean verifyChip(const uint8* pSource, volatile uint8* pDest, uint16 length) +{ + uint32 i; + volatile uint8 data = 0; + + for(i=0; i