However, it seems the firmware was written as 0x800 byte pages:
https://cdn.cs50.net/2014/fall/lectures/1/w/src1w/iUnlock.c
From what I understand on this thread, the header of the firmware is 0x400 long. A page can be up to 0x800:
``` int size_to_write = Size > 0x800 ? 0x800 : Size; ```
So it would appear the firmware has a header of 0x400 which is buffered during upload but discarded if the firmware fails the checksum at the end of the upload.
From what I understand on this thread, the header of the firmware is 0x400 long. A page can be up to 0x800:
``` int size_to_write = Size > 0x800 ? 0x800 : Size; ```
So it would appear the firmware has a header of 0x400 which is buffered during upload but discarded if the firmware fails the checksum at the end of the upload.