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.
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.