The Peripheral Protection Controller (PPC) is a hardware block designed to enforce security policies for peripheral access, utilizing Protection Contexts (PC) and ARM TrustZone-M technology.
The PPC monitors transactions initiated by bus masters to peripheral regions, checking the security attributes of each transaction against the configured access policies. If a transaction violates the security configuration (for example, a non-secure master attempts to access a secure peripheral), the PPC blocks the transaction, preventing unauthorized access and helping to maintain system integrity. The response on transaction can be configured to be either Read Zero/Write Ignore or Bus Error.
Security attributes for bus masters are configured by the Master Security Control (MSC). The PPC complements this by allowing fine-grained control over peripheral regions, supporting both secure and non-secure access, as well as privilege levels. Protection Contexts provide additional flexibility, enabling multiple levels of access control beyond the basic secure/non-secure distinction.
Up to 1024 regions can be protected by the PPC. However, the configuration of the response on an access violation is only available at the PPC instance level. Therefore, every region associated with a given PPC instance will have the same response type for access violations.
The PPC driver provides APIs to configure the security attributes, privilege levels, and protection context masks for peripheral regions. These APIs allows:
All functions and declarations for PPC configuration are provided in cy_ppc.h. For ModusToolbox users, including cy_pdl.h will provide access to all Peripheral Driver Library (PDL) functions.
This driver is typically used in applications that require robust security, such as IoT devices, secure boot, and systems with multiple privilege levels or secure/non-secure partitions.
For detailed information on the PPC hardware and its configuration, refer to the device's Technical Reference Manual (TRM) and ARM TrustZone-M documentation.
The PPC driver does not have any specific MISRA-C deviations.
API Reference | |
| Macros | |
| Functions | |
| Data Structures | |
| Enumerated Types | |
| PPC Driver error codes. | |