The Zone Description Format is a tool agnostic storage format and is split into:
- Resource File (*.rzone) that describes the system resources available.
- Assignment File (*.azone) that describes the resource partitioning.
The combination of both Resource File and Assignment File can be used to create a new derived Resource File that only contains the resources available for this project. It is therefore possible to split the resources incrementally as needed.
A Resource File (*.rzone) can therefore describe:
- A complete embedded system including device with one or more processors, external memory and/or external peripheral components.
- TrustZone definition and initial setting for Secure Attribute Unit
- A resource partition for an independent software project (i.e. boot loader, user application, secure partition) that implement the application for the system.
An Assignment File (*.azone) allows to specify either:
- The partitioning of a system into multiple independent software projects.
- The configuration of a Memory Protection Unit (MPU) for functional segregation of a software project.
- Note
- It is impossible to use a single Assignment File for both, partitioning of software projects and MPU configuration.
Overall XML structure
The CMSIS-Zone utility uses two XML files to store system and configuration information. The structure these XML files is described with schema files that are located in the ARM.CMSIS pack in the directory .\CMSIS\Utilities.
File type | Schema file | Description |
*.rzone | rzone.xsd | Stores the system resources (processors, memory, peripherals) available. |
*.azone | azone.xsd | Stores the system partitioning which includes assignments and memory splits for a related .rzone file. |
.fzone | fzone.xsd | CMSIS-Zone data input file for FreeMarker as explained in Generator Data Model. |
- Note
- It is important to understand the relationship between *.rzone and *.azone files. While the *.rzone file contains all the information about the available resources in a system or sub-system, the *.azone file contains all the information about the system partitioning. If the *.rzone file changes (for example because the partitioning of a sub-system has changed), you will not loose the work done on the partitioning of that sub-system. If resources are removed, the User Interface will notify you about this and you can make the required changes.
Top-level .rzone XML elements
- <rzone> is the root element of the *.rzone file.
- <creator> describes the creation for this *.rzone file.
- <device> describes the device that is part of the system. It may contain one or more processors.
- <resources> describes the memory and peripheral resources of the system.
Structure of .rzone XML file
<rzone>
<creator>
<device>
<package/>
<processor/>
</device>
<resources>
<sau_init>
<region/>
</sau_init>
<memories>
<memory>
<mpc>
</memories>
<peripherals>
{ <group> }
<peripheral>
<slot>
<interrupt/>
<setup/>
</slot>
<interrupt/>
<setup/>
</peripheral>
{ </group> }
</peripherals>
</resources>
</rzone>
Top-level .azone XML elements
- <azone> is the root element of the *.azone file.
- <configure> controls the behavior of the CMSIS-Zone utility (project or MPU assignments).
- <partition> defines memory partitions that split available system memory.
- <zones> defines the assignment of memory, block, and peripherals.
<azone>
<rzone>
<configure>
<partition>
<memory>
</partition>
<zones>
<zone>
<assign>
<interrupt/>
</assign>
</zone>
</zones>
</azone>
Security Type
The attribute security defines the security setting for a memory or peripheral region. Only one of the settings is allow:
- <empty> security not defined (default)
- 'n' non-secure
- 'c' secure on non-secure callable
- 's' secure
Access Type
The attribute access defines the access permission for a memory or peripheral region. Multiple settings are allow:
- 'r' read
- 'w' write
- 'x' execute
- 'p' peripheral
Privilege Type
The attribute privilege defines the privilege level that is required for memory/peripheral access or code execution in a MPU zone. Only one of the settings is allow:
- <empty> privilege level not specified
- 'u' unprivileged level
- 'p' privileged level