12.4.3 Define Variables within PMP Space

The pmp space attribute is also used to assign individual variables to the space. This requires that the memory space declaration to be present. Given the declarations in the previous subsection, the following variable declarations can be made:

__pmp__ int external_array[256]

__attribute__((space(pmp(external_PMP_memory))));

external_array will be allocated in the previously declared memory external_PMP_memory. If there is only one PMP memory, and chip-selects are not being used, it is possible to leave out the explicit reference to the memory. It is good practice, however, to always make the memory explicit which would lead to code that is more easily maintained.

Note that, like managed PSV pointers, we have qualified the variable with a new type qualifier __pmp__. When attached to a variable or pointer it instructs the compiler to generate the correct sequence for access via the PMP peripheral.

Now that a variable has been declared it may be accessed using normal C syntax. The compiler will generate code to correctly communicate with the PMP peripheral.