CMSIS-Zone: Zone Description Format

| CMSIS-Zone Version 1.0.0 System Resource Management

- Main Page
- Usage and Description

All Files Pages
Zone Description Format

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 CMSIS-Zone GUI 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> // root element of system zone file
<creator> // describes how this rzone file was created
<device> // device information
<package/> // software pack that defines device
<processor/> // processor information
</device>
<resources> // physical resources off-chip
<sau_init> // fixed SAU settings required for system
<region/> // region setting for SAU
</sau_init>
<memories> // memories section
<memory> // memory resource
<mpc> // memory protection controller information
</memories>
<peripherals> // peripheral resources off-chip
{ <group> } // peripheral group (optional)
<peripheral> // peripheral description
<slot> // optional slot description (pin or DMA channel)
<interrupt/> // optional interrupts for slot
<setup/> // optional register setup for slot
</slot>
<interrupt/> // optional interrupts for peripheral
<setup/> // optional register setup for peripheral
</peripheral>
{ </group> } // peripheral group (optional)
</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> // Refers related .rzone file
<configure> // CMSIS-Zone utility UI behavior
<partition> // memory partition information
<memory> // memory split information
</partition>
<zones> // zone assignments
<zone> // project zone name
<assign> // used peripheral or memory
<interrupt/> // for peripherals optional interrupt usage
</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