Hello experts,
I am using SAM L11 (Core is Cortex-M23).I did a simple test of the interrupt.In the case of the handler was the secure world, it worked as I expected.The instruction sequences are as the follows. *(int*)(0xE000E380) = 0; *(int*)(0xE000E100) = 1; *(int*)(0xE000E200) = 1; for(i=0;i<1000;i++);However, when Interrupt Target Non-secure Register (0xE000E380) was set,the HardFault had occurred. As for SAM L11, would it be reasonable behavior? *(int*)(0xE000E380) = 1; *(int*)(0xE000E100) = 1; *(int*)(0xE000E200) = 1; /* HardFault */ for(i=0;i<1000;i++);Although I put the vector of the secure world to the non-secure world address, the phenomenon was not changed.From the specification aspect, how does it work?
Thank you and best regards,
Yasuhiko Koumoto.
thank you for the details
the one I was after is the configuration of the secure and non secure memory
I am looking to see where these handlers reside
if the exception handler for the non secure side resides in secure memory then you will get a security fault.
please check the settings of the security attribution unit if any and look for the part of the code that declares the non secure memory region.
HI,it seems that SAM L11 only support the non-secure handler of interrupts for EIC (External Interrupt Controller). Of which interrupt numbers are 4, 5, 6, and 7.Of course, EIC must be configured prior to use it.I double the interrupt 0 cannot be supported the non-secure handler.As for the security attributes, they are as fllows.0x00000000-0x00007bff Secure0x00007c00-0x00007fff Non-Secure Callable0x00008000-0x0000ffff Non-Secure.Best regards,Yasuhiko Koumoto.
Hi there,
I think if you target the interrupt to the non-secure world, and you should enable the interrupt in the non-secure world but not the secure world. If you open it in secure world, there will be a fault. So you can have a try.
Best regards.