From ca0ab73cb2cae7623d082561c1dcdeafca04b2f0 Mon Sep 17 00:00:00 2001 From: maddiebaka Date: Thu, 22 Feb 2024 17:25:25 -0500 Subject: [PATCH] Dump firmware feature, up to 64K --- NORFlasherFirmware.ino | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/NORFlasherFirmware.ino b/NORFlasherFirmware.ino index d9340d2..7c50908 100644 --- a/NORFlasherFirmware.ino +++ b/NORFlasherFirmware.ino @@ -21,11 +21,14 @@ byte cmd = NULL; XModem xmodem; +uint16_t addressPage = 0; + bool receiveBlockHandler(void *blk_id, size_t idSize, byte *data, size_t dataSize) { unsigned int id = *((int *) blk_id); unsigned long page = (id - 1) * DATA_LEN; + addressPage += page; for (int i = 0; i < dataSize; i++) { - unsigned long index = i + page; + unsigned long index = i + addressPage; programData(data[i], index); //programData(id, i); } @@ -35,14 +38,17 @@ bool receiveBlockHandler(void *blk_id, size_t idSize, byte *data, size_t dataSiz void blockLookupHandler(void *blk_id, size_t idSize, byte *send_data, size_t dataSize) { //uint8_t blkId = blk_id; - uint16_t id = *((uint16_t *) blk_id); + //uint16_t id = *((uint16_t *) blk_id); // TODO: This was close to working - //byte id = *((byte *) blk_id); - unsigned long page = (id - 1) * DATA_LEN; + uint8_t id = *((uint8_t *) blk_id); + //unsigned long page = (id - 1) * DATA_LEN; + //addressPage += page; for (int i = 0; i < dataSize; i++) { - unsigned long index = i + page; + unsigned long index = i + addressPage; send_data[i] = readData(index); } + + addressPage += DATA_LEN; } void setup() { @@ -166,7 +172,7 @@ void loop() { //cmd = NULL; break; case CMD_ERASE: - eraseROM(); + //eraseROM(); cmd = NULL; break; @@ -186,6 +192,7 @@ void loop() { void dumpROM() { setDataPinsIn(); + addressPage = 0; struct XModem::bulk_data container;