I am looking at both the disassembled copy of the Wixel bootloader binary (extracted by printing out stuff iterating through a CODE pointer) and the USB traffic capture from wixelcmd (obtained using a Beagle USB 12).
First odd thing is that the command to erase the 0x7800 page never appears on the USB traffic
Second odd thing is that inside the bootloader binary calls to locations inside space after 0x7800
Then I actually obtained a dump of the space after 0x7800 and it's filled with code
The first chunk seems to be just ASCII text with a Pololu copyright notice
I spot structures like jump tables, some access to the SLEEP register, plenty of access to registers around 0xFC##, etc, definitely code and not just blobs
OK so question 1: is all this code required for proper operation of the bootloader? (I am guessing yes)
Question 2: why is it there instead of 0x400-0x800? I mean... if it was below 0x800, the memory write protection fuse can be used to protect it from damage. But now this isn't possible any more. There must be a good reason because it actually takes more effort to place all that data in a non-continuous block of memory instead of continuous. I'm simply curious.
Question 3: can any of the functions inside be re-used to save me some space for my app? All we need is a header file with the signatures and addresses. I don't see any references to these functions in the Wixel SDK