Individual GPIOTE channels and interrupts can have independent security settings and are defined as secure or non-secure.
GPIOTE channels
GPIOTE channel security is configured using FEATURE.GPIOTE[n].CH[o] (n=0..1) (o=0..7).
A GPIOTE channel configured as secure can only be used by secure code to send tasks and receive events. A GPIOTE channel configured as non-secure can be used by both secure and non-secure code to send tasks and receive events.
- A secure GPIOTE channel can be configured with both secure and non-secure GPIO pins
- A non-secure GPIOTE channel can only be configured with non-secure GPIO pins
GPIOTE channels that are not configured as described will not write to the pin when triggering the SET[n], CLR[n], and OUT[n] tasks, and will not generate the IN[n] event with changes in the pin polarity.
- Trigger SET[n], CLR[n], and OUT[n] tasks
- Generate IN[n] events
- Access to the corresponding CONFIG[n] register
- Trigger SET[n], CLR[n], and OUT[n] tasks
- Generate IN[n] events
- Access to the corresponding CONFIG[n] register
A security fault is triggered when there is an access violation when accessing registers TASKS_SET[n], TASKS_CLR[n], TASKS_OUT[n], EVENTS_IN[n], or CONFIG[n].
GPIOTE channels can connect to PPI channels in order to send and receive events from other peripherals. GPIOTE channels can only publish or subscribe from DPPI channels that have the correct security attribute. An attempt to subscribe or publish on a DPPI channel configured as secure by a non-secure GPIOTE channel is ignored. A secure GPIOTE channel can subscribe or publish to both secure and non-secure DPPI channels.
GPIOTE interrupts
The security of the GPIOTE interrupt is configured using FEATURE.GPIOTE[n].INTERRUPT[o] (n=0..1) (o=0..7).
A secure fault is triggered when non-secure code attempts to access registers INTENSET/INTENCLR on a secure GPIOTE interrupt.
GPIOTE interrupt i can only be generated by IN[j] event if interrupt i and channel j have the correct security attribute.
A secure GPIOTE interrupt can be triggered by an event generated by a secure and non-secure GPIOTE channel.
A non-secure GPIOTE interrupt can only be triggered by an event generated by non-secure GPIOTE channel.