After resetting the ADuCM355 with a J-Link debugger (through the external RESET pin) I am encountering unexpected bus fault exceptions:
I believe the faults on memory accesses are occurring because my application does not include a checksum for the On-Chip Kernel Bootloader's user space integrity check. Referring to Figure 7 from the ADuCM355 user boot loader application note (https://www.analog.com/en/app-notes/an-2058.html):
The IAR linker script (https://github.com/analogdevicesinc/aducm355-examples/blob/master/examples/DigitalDie/M355_Bootloader/iar/user-bootloader-sample-application.icf#L144-L159) suggest that the first page of flash memory (2kB, 0x0-0x800) is the only region of user space flash checked for integrity. Also, the comment suggests the checksum is optional.
My questions are:
- What region of flash memory is a checksum computed for by the On-Chip Kernel Bootloader?
- Is this flash integrity check optional?
- Finally, will the On-Chip Kernel Bootloader cause DCode and ICode memory access to fault if the bootloader's integrity check fails?
I am intentionally limiting my discussion to the On-Chip Kernel Bootloader's behavior. A user bootloader is not a concern at this time.