/*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/ /** \page GenDataModel Generator Data Model The <b>Generator Data Model</b> defines the resource and partition data structure for code generators. This data structure is connected to a FreeMarker template engine and file templates allow to generate various files that can be used to configure development tools or hardware components. \image html generator.png "FreeMarker Template Engine" \section fp_toplevel FreeMarker top-level format \subpage fm_system provides memory layout and TrustZone configuration of the complete system. \subpage fm_zone setup information of a zone (or system partition) along with related peripherals. \section fm_basics FreeMarker basics The variable types relevant for CMSIS-Zone are: \b scalar: variable that stores a single value of a scalar type scalar-types: - string - int - bool \b hash: variable that that stores one or more variables with a unique lookup name \b sequence: variable that stores sub-variables without names but instead are selected via index (myVariable[index]) A variable is accessed using the dollar character followed by a variable or expression in brackets: \code ${...} \endcode Output the name of the zone: \code ${zone.name} \endcode A sequence gets iterated: \code <#list zone.memory as mem> Memory region name $mem.name </#list> \endcode Printing a sorted list of all available memory entries by start address \code <#list zone.memory?sort_by("start") as mem> ${mem.start} ${mem.name} </#list> \endcode \page fm_system system element The \ref fm_system provides the memory layout and the TrustZone configuration of the complete system. This information can be used for example, to create a linker script that defines the memory setup of the SoC system. <table class="cmtable" summary="Element: system"> <tr> <th>Child Elements</th> <th>Description</th> <th>Type</th> </tr> <tr> <td>\subpage fm_processor ".processor"</td> <td>A sequence of all processor elements available in the system resource file.</td> <td>sequence</td> </tr> <tr> <td>\subpage fm_memory ".memory"</td> <td>A sequence of all memory regions available in the system resource file.</td> <td>sequence</td> </tr> <tr> <td>\subpage fm_peripheral ".peripheral"</td> <td>A sequence of all peripherals available in the system resource file.</td> <td>sequence</td> </tr> <tr> <td>\subpage fm_sau ".sau"</td> <td>A sequence of all SAU regions for initialization.</td> <td>sequence</td> </tr> <tr> <td>\subpage fm_interrupt ".interrupt"</td> <td>A sequence of all interrupt sources available.</td> <td>sequence</td> </tr> <tr> <td>\subpage fm_mpc_setup ".mpc_setup"</td> <td>Contains the device specific configuration registers for the setup of the Memory Protection Controller (MPC).</td> <td>sequence</td> </tr> <tr> <td>\subpage fm_reg_setup ".reg_setup"</td> <td>Contains the device specific configuration registers for the setup of the peripherals.</td> <td>sequence</td> </tr> </table> \page fm_zone zone element The \ref fm_zone provides the setup information of a zone (or system partition) along with related peripherals. This information can be used for example, to create the MPU setup that is required for various execution zones along with the related linker setup. <table class="cmtable" summary="Element: zone"> <tr> <th>Child Elements</th> <th>Description</th> <th>Type</th> </tr> <tr> <td>.name</td> <td>The name of the zone (or system partition).</td> <td>string</td> </tr> <tr> <td>.Pname</td> <td>Name of the processor core.</td> <td>RestrictedString</td> </tr> <tr> <td>.class</td> <td>Class information for execution zones.</td> <td>string</td> </tr> <tr> <td>.security</td> <td>The \ref security "security" setting for this zone in the following separate fields.</td> <td>SecurityType</td> </tr> <tr> <td>.security.s</td> <td>Zone is executed in \em "secure" state.</td> <td>xs:boolean</td> </tr> <tr> <td>.security.n</td> <td>Zone is executed in \em "non-secure" state.</td> <td>xs:boolean</td> </tr> <tr> <td>.privilege</td> <td>The \ref privilege "privilege type" settings for this zone in the following separate fields.</td> <td>PrivilegeType</td> </tr> <tr> <td>.privilege.p</td> <td>Zone is executed in privileged level.</td> <td>xs:boolean</td> </tr> <tr> <td>.privilege.u</td> <td>Zone is executed in unprivileged level.</td> <td>xs:boolean</td> </tr> <tr> <td>\subpage fm_memory ".memory"</td> <td>A sequence of all memory regions that are accessible in the zone (or system partition).</td> <td>sequence</td> </tr> <tr> <td>\subpage fm_peripheral ".peripheral"</td> <td>A sequence of all peripherals that are accessible in the zone (or system partition).</td> <td>sequence</td> </tr> <tr> <td>\subpage fm_interrupt ".interrupt"</td> <td>A sequence of all interrupt sources that belong to peripherals that are accessible in the zone (or system partition).</td> <td>sequence</td> </tr> <tr> <td>\subpage fm_mpu_setup ".mpu_setup"</td> <td>A sequence of configuration information for the Memory Protection Unit (MPU).</td> <td>sequence</td> </tr> </table> */ /**************************************************************************************************/ /** \page fm_processor processor[n] sequence element The \ref fm_processor provides a sequence of processor elements that are in the system. <table class="cmtable" summary="Element: processor[n]"> <tr> <th>Parent Element</th> <th colspan="2">Element Chain</th> </tr> <tr> <td>\ref fm_system "system"</td> <td colspan=3>\ref fm_system</td> </tr> <tr> <th>Child Elements</th> <th>Description</th> <th>Type</th> </tr> <tr> <td>.processor[<i>n</i>].Pname</td> <td>Name of the processor core.</td> <td>RestrictedString</td> </tr> <tr> <td>.processor[<i>n</i>].DnumInterrupts</td> <td>Number of NVIC interrupts sources available to the processor core (excludes exception vectors).</td> <td>NonNegativeInteger</td> </tr> <tr> <td>.processor[<i>n</i>].DnumSauRegions</td> <td>Number of regions in the Security Attribution Unit (SAU) of the processor core.</td> <td>NonNegativeInteger</td> </tr> </table> */ /**************************************************************************************************/ /** \page fm_memory memory[n] sequence element The \ref fm_memory provides a sequence of memory information. <table class="cmtable" summary="Element: memory[n]"> <tr> <th>Parent Element</th> <th colspan="2">Element Chain</th> </tr> <tr> <td>\ref fm_system "system"</td> <td colspan=3>\ref fm_system</td> </tr> <tr> <td>\ref fm_zone "zone"</td> <td colspan=3>\ref fm_zone</td> </tr> <tr> <th>Child Elements</th> <th>Description</th> <th>Type</th> </tr> <tr> <td>.memory[<i>n</i>]</td> <td>Sequence of memory region information.</td> <td>sequence</td> </tr> <tr> <td>.memory[<i>n</i>].name</td> <td>The name of this memory region.</td> <td>xs:string</td> </tr> <tr> <td>.memory[<i>n</i>].type</td> <td>The type of memory in this region ("RAM" or "ROM").</td> <td>MemoryTypeEnum</td> </tr> <tr> <td>.memory[<i>n</i>].start</td> <td>The logical start address of the memory region in the address map.</td> <td>NonNegativeInteger</td> </tr> <tr> <td>.memory[<i>n</i>].physical</td> <td>The physical start address of the memory region in the address map.</td> <td>NonNegativeInteger</td> </tr> <tr> &...
robert72001