MCU: s9keaz128amlh
IDE: S32 Design Studio for ARM Version 2018.R1
Problem: I use bootloader application to reprogram the mcu.I found something interesting that the mcu works well after using bootloader to reprogram,but i don't relocate the vector table in both project(bootloader project and app project ).So my problem is what will happen theoretically if i don't relocate the vector table?
I have a guess that if i modify the interrupt program in my app project,then use bootloader application to reprogram the mcu,the modified part of the program will not be made into the MCU.
Thanks!
已解决! 转到解答。
Hi @fanziyu
I hope you are doing well !
One scenario that I could see, is that the application will have troubles to execute any of its IRQ handlers, thus limiting its functionality.
For example if you have moved your application at 0x000_4000. If you do not relocate the vector table, you wont be able to run IRQs as expected from your application, because the core may be still expecting an interrupt to be as default, close to 0x0000_0040 , with the vector table offset from your bootloader project.
Actually, in the vector table , there is a hard-fault handler. It would be interesting , to see what happens, with your current setup, if you perform a invalid operation, that produces the trigger of that hard-fault handler. Not sure if you will be able to see hard-fault of the bootloader project executing. If you do, maybe you will be need to add further steps to run and restore your application , but I do not see purpose on that effort, as the best will be to relocate the vector table , since the beginning.
All the best,
Diego.
Hi @fanziyu
I hope you are doing well !
One scenario that I could see, is that the application will have troubles to execute any of its IRQ handlers, thus limiting its functionality.
For example if you have moved your application at 0x000_4000. If you do not relocate the vector table, you wont be able to run IRQs as expected from your application, because the core may be still expecting an interrupt to be as default, close to 0x0000_0040 , with the vector table offset from your bootloader project.
Actually, in the vector table , there is a hard-fault handler. It would be interesting , to see what happens, with your current setup, if you perform a invalid operation, that produces the trigger of that hard-fault handler. Not sure if you will be able to see hard-fault of the bootloader project executing. If you do, maybe you will be need to add further steps to run and restore your application , but I do not see purpose on that effort, as the best will be to relocate the vector table , since the beginning.
All the best,
Diego.