This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Interrupts from the secure world to the non-secure world.

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.

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

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

Children
  • 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 Secure
    0x00007c00-0x00007fff Non-Secure Callable
    0x00008000-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.