Hi guys,
I will develop a custom bootloader in my custom i.MX RT1170 board. In my case, a flash driver will be read through the USB to update the primary application.
I am studying the "evkmimxrt1170_mcuboot_opensource" and the "ota" examples and I have some doubts and I would appreciate some help.
1) Application jump: I tried to study the "evkmimxrt1170_mcuboot_opensource" example but I don't have the i.MX RT1170 evaluation board to debug. I think that the steps to jump are the following:
// Cleanup:
SCB_DisableICache();
SCB_DisableDCache();
ARM_MPU_Disable();
// Peripherals disable (example, USB):
// ...
// Jump:
__set_CONTROL(0);
__set_MSP(vt->msp);
__ISB();
((void (*)(void))vt->reset)();
Is there more steps to pay attention before the jump?
2) Related with the primary application, in my previous bootloaders I had to set the interrupt vector table again after the jump. How is this done on i.MX RT processors?
Thanks.
Hi,
First, thanks for your reply.
Where is this done in the ota examples (like, evkmimxrt1170_lwip_httpssrv_ota_wifi)?
I tried to find the IOMUXC_LPSR_GPR_GPR26_CM7_INIT_VTOR, but I couldn't see this macro being called.
And related with the jump process, do you think that these commands are ok?
Thanks.
Regards,
Vinícius.
Hi @joséviníciusmel ,
If vector table is changed, VTOR must be reconfigured, either in bootloader or in application.
You jump process is fine.
Regards,
Jing
Hi Jing,
Thanks!
Hi @joséviníciusmel ,
Yes, if your application doesn't change vector table address, you must add it here. It's the IOMUXC_GPR26 register.
Regards,
Jing