Boot pin with RDP level
Hello,
I am working on the boot process and security of the STM32H757.
For my tests, I have placed the two boot addresses for the two cores (ADD0 and ADD1 for CM7 and CM4) in the internal flash memory, with an ISR vector at each boot address :
ADD0: standard ISR vector calling the standard Reset_Handler, which in turn calls the main function
g_pfnVectors:
.word __initial_spTop /* Use internal RAM for stack for calling SystemInit. */
.word Reset_Handler
.word NMI_Handler
.word HardFault_Handler
.word MemManage_Handler
.word BusFault_Handler
.word UsageFault_Handler
...
and ADD1: virtually the same ISR vector but calling BootPin_Handler instead of Reset_Handler
g_bootPinVectors:
.word __initial_spTop
.word BootPin_Handler
.word NMI_Handler
.word HardFault_Handler
.word MemManage_Handler
.word BusFault_Handler
.word UsageFault_Handler
...
Everything seems to be working properly, at least up until the security test.
When RDP is set to level 0 or 1, everything is fine and everything seems to work, but when I set the RDP level to 2, it no longer works; the programme still launches at ADD0.
I’ve tried to find a link between the two in the documentation, but either I can’t find it or I don’t understand it.
Can anyone help me?
To set level 2, I download the program in the device and then switch to level 1 then to level 2. In option byte I only changed boot address and RDP level. Maybe I have missed a step ?