Other Parts Discussed in Thread: UNIFLASH,
I created a boot from 0x80000 to 0x86FFF.
App1 starts from 0x87000 to 0xBFFFF controlled by CPU1.
App2 starts from 0x100000 to 0x11FFFF controlled by CPU2.
I used uniflash.exe downloaded the whole HEX file. Including the boot, app1 and app2.
The boot can jump to app1 and app2 correctly. App1 and app2 work perfectly.
The problem happened in this way:
- App reset and starts from boot.
- Boot read BANK1 data and write them into BANK0 (from 0x87000 to 0x8FFFF), BANK4 (from 0x100000 to 0x102FFF).
- Boot check the whole new app data and match the checksum.
- Boot jump to app. At this moment, the whole firmware doesn't work...
I debugged and found it reports the PIE Vector Error:
So I debugged as follows:
- Use "DINT;" disable all the interrupt before jumping to the app.
- Disable all the interrupts in boot. Do not initial any interrupt at the firmware.
However, this error doesn't resolved.
Please support me with this problem. I can accept a new way for writting the boot. Please let me know. Thank you!