Просмотр исходного кода

adding new silicon vendors with unique IDs to schema file

Joachim Krech 9 лет назад
Родитель
Сommit
dfe628f2e6
2 измененных файлов с 5892 добавлено и 5855 удалено
  1. 4250 4225
      CMSIS/DoxyGen/Pack/src/devices_schema.txt
  2. 1642 1630
      CMSIS/Utilities/PACK.xsd

+ 4250 - 4225
CMSIS/DoxyGen/Pack/src/devices_schema.txt

@@ -1,4225 +1,4250 @@
-/** 
-\page pdsc_devices_pg /package/devices element
-
-The level \elem{devices} contains all devices for which support is provided by the \ref CP_SWComponents "Software Pack". 
-
-Devices can be organized in hierarchy groups to limit redundancy. The hierarchy levels are:
-- \ref element_family "family": the attributes of a device family which includes also the processor.
-- \ref element_subFamily "subFamily": attributes of an optional sub-family; this adds or modifies features of a family.
-
-Device characteristics can be defined in:
--	\ref element_device "device": attributes of a specific silicon device
--	\ref element_variant "variant": attributes of a device variant (for example, with different package or temperature range) or an 
-       OEM device or board that integrates the device.
-       
-A device is described by the following properties:
- - \ref element_description "description": textual device description
- - \ref element_feature "feature": categorized list of device peripherals and features
- - \ref element_book "book": documentation about the device and its processor(s)
- - \ref element_processor "processor": processor and processor features embedded in the device
- - \ref element_compile "compile": device specific general settings for the build tools
- - \ref element_debugconfig "debugconfig": default settings for a debug connection
- - \ref element_debugvars "debugvars": global debug access variables for use in sequences.
- - \ref element_sequences "sequences": debug access sequences.
- - \ref element_debugport "debugport": debug port description of the device for the debugger to configure a debug connection.
- - \ref element_debug "debug": device specific information for the debugger to configure a debug connection including System View Description files.
- - \ref element_trace "trace": device specific information for the debugger to configure trace.
- - \ref element_memory "memory": memory layout of the device for internal and external RAM and ROM regions
- - \ref element_algorithm "algorithm": device specific Flash programming algorithms
-
-A device will inherit the specifications from both the family and sub-family levels. Some properties are required to be unique. 
-For example, the name of the svd file attribute of the \elem{debug} property. 
-Therefore, the svd file specified on the family level can be redefined by the attribute on the sub-family or device level.
-Information like the description and feature entries are concatenated, starting with the information from the family and sub-family level
-and finalizing with the information on the device level.
-
-\b Example
-\code
-<package>
-  ...
-  <devices>
-    <!-- family level -->
-    <family Dfamily="STM32F2" Dvendor="STMicroelectronics:13">
-      <processor Dcore="Cortex-M3" DcoreVersion="r2p1"
-                 Dfpu="0" Dmpu="1" Dendian="Little-endian" Dclock="120000000"/>
-
-      <compile   header="Device/Include/stm32f2xx.h" define="STM32F2XX"/>
-      <debug     svd="SVD/STM32F20x.svd"/>
-      <algorithm name="Flash/STM32F2xx_OPT.flm" start="0x1FFFC000" size="0x00000010" style="Keil"/>
-      <book      name="doc/STM32F2.PDF" title="STM32F2 Reference Manual"/>
-
-      <description>
-        ARM 32-bit Cortex-M3 CPU based Microcontroller
-        - 120 MHz maximum frequency producing 150 DMIPS/1.25 DMIPS/MHz
-        - Memory Protection Unit
-        - Flexible static memory controller (supports Compact Flash, SRAM, PSRAM, NOR, NAND memories)
-        - LCD parallel interface, 8080/6800 modes
-        - Clock, reset and supply management
-      </description>
-
-      <feature type="Timer" n="10" m="32" name="General Purpose Timer with 60 MHz"/>
-      <feature type="Timer" n="2" m="16" name="Advanced Control Timer with 120 MHz"/>
-      <feature type="Timer" n="2" m="16" name="Basic Timer with 60 MHz"/>
-      <feature type="TimerOther" n="1" name="Independent Watchdog Timer"/>
-      <feature type="TimerOther" n="1" name="Window Watchdog Timer"/>
-      <feature type="DAC" n="2" m="12"/>
-      <feature type="SPI" n="3" name="SPI Interface (two of them can be used as I2S)"/>
-      <feature type="I2C" n="3"/>
-      <feature type="USART" n="4" name="USART Interface up to 7.5 Mbit/s"/>
-      <feature type="UART" n="2" name="UART Interface up to 3.75 Mbit/s"/>
-      <feature type="USBOTG" n="1"  name="USB OTG (Full-Speed) with PHY and ULPI"/>
-      <feature type="USBOTG" n="1"  name="USB OTG (High-Speed) with PHY and ULPI"/>
-      <feature type="CAN" n="2"  name="CAN Interface (2.0b Active)"/>
-      <feature type="SDIO" n="1" m="8" name="Supporting SD/MicroSD/MMC"/>
-      <feature type="VCC" n="1.8" m="3.6"/>
-
-      <!-- sub family level -->
-      <subFamily DsubFamily="128 Flash">
-        <memory name="SRAM"  access="rwx" start="0x20000000" size="0x10000" default="1"/>
-        <memory name="Flash" access="rx"  start="0x08000000" size="0x20000" startup="1" default="1"/>
-	
-        <!-- device level -->
-        <device Dname="STM32F205RB">
-          <feature type="IOs" n="51" name="Input and Output Ports"/>
-          <variant Dvariant="STM32F205RBT6">
-            <feature type="QFP" count="64" name="LQFP 64 10x10x1.4" />
-            <feature type="Temp" n="-40" m="85" name="Industrial Temperature Range"/>
-          </variant>
-          <variant Dvariant="STM32F205RBT7">
-            <feature type="QFP" count="64" name="LQFP 64 10x10x1.4" />
-            <feature type="Temp" n="-40" m="105" name="Extended Temperature Range"/>
-          </variant>
-        </device>
-		
-        <device Dname="STM32F205VB">
-          <feature type="IOs" n="82" name="Input and Output Ports"/>
-          <variant Dvariant="STM32F205VBT6">
-            <feature type="QFP" count="100" name="LQFP 100 14x14x1.4" />
-            <feature type="Temp" n="-40" m="85" name="Industrial Temperature Range"/>
-          </variant>
-        </device>
-      </subFamily>
-	  
-    </family>
-  </devices>
-</package>
-\endcode
-
-<p>&nbsp;</p>
-<hr>
-
-\section element_devices /package/devices
-
-Group level containing device \subpage pdsc_family_pg "family" descriptions. A package can contain only one element \elem{devices}.
-The group is not mandatory.
-
-\b Example
-\code
-<package>
-  ...
-  <devices>
-    ...
-  </devices>
-  ...
-</package>
-
-\endcode
-
-<p>&nbsp;</p>
-
-<table class="cmtable" summary="Element: devices">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_package "package"</td>
-    <td colspan="3">\ref element_package "/package"</td>
-  </tr>
-  <tr>
-    <th>Child&nbsp;Elements</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Occurrence</th>
-  </tr>
-  <tr>
-    <td>\ref element_family "family"</td>
-    <td>Device family group. Define all properties that are in common to devices of a family.</td>
-    <td>complexType</td>
-    <td>1..*</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-<hr>
-*/
-
-/** 
-\page pdsc_family_pg /package/devices/family element
-
-\section element_family /package/devices/family
-
-Define properties that are in common to all devices of a family. These properties are inherited by 
-subgroups or elements. This is a mechanism of granulation to reduce redundancy.  
-Multiple \<family> groups can be defined.
- 
-\b Example
-\code
-<devices>
-  ...
-  <family Dfamily="STM32F2" Dvendor="STMicroelectronics:13">
-    <processor   .../>
-    <debugconfig .../>
-    <debugvars   .../>
-    <sequences   .../>
-    <compile     .../>
-    <memory      .../>
-    <algorithm   .../>
-    <book        .../>
-    <description> Write texte here </description>
-    <environment> ... </environment>
-    <feature     .../>
-    <debugport   .../>
-    <debug       .../>
-    <trace       .../>
-   
-    <subFamily DsubFamily="...">
-      ...
-      <device Dname="...">
-        ...
-      </device>
-      ...
-    </subFamily>
-    ...
-  </family>
-  ...
-</devices>
-\endcode 
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: family">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_devices "devices"</td>
-    <td colspan="3">\ref element_devices</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>Dfamily</td>
-    <td>Name of the device family.</td>
-    <td>xs:string</td>
-    <td>required</td>
-  </tr>
-  <tr>
-    <td>Dvendor</td>
-    <td>Device vendor name.  Use predefined values as listed in the table \ref DeviceVendorEnum "Device Vendor".</td>
-    <td>\ref DeviceVendorEnum "DeviceVendorEnum"</td>
-    <td>required</td>
-  </tr>
-  <tr>
-    <th>Child Elements</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Occurrence</th>
-  </tr>
-  <tr>
-    <td>\ref element_processor "processor"</td>
-    <td>List all processors that are in common to devices of the family.</td>
-    <td>ProcessorType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_compile "compile"</td>
-    <td>Specify compile or translate options that are relevant to all devices of the family.</td>
-    <td>CompileType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_debugconfig "debugconfig"</td>
-    <td>Specify default settings for the debug connection relevant to all devices of the family.</td>
-    <td>DebugConfigType</td>
-    <td>0..1</td>
-  </tr>
-  <tr>
-    <td>\ref element_debugvars "debugvars"</td>
-    <td>Define global debug access variables for settings relevant to all devices of the family unless replaced by debugvars on subFamily, device or variant level</td>
-    <td>DebugVarsType</td>
-    <td>0..1</td>
-  </tr>
-  <tr>
-    <td>\ref element_sequences "sequences"</td>
-    <td>Describe debug access sequences relevant to all devices of the family.</td>
-    <td>SequencesType</td>
-    <td>0..1</td>
-  </tr>
-  <tr>
-    <td>\ref element_debugport "debugport"</td>
-    <td>Describe a debug port relevant to all devices of the family.</td>
-    <td>DebugPortType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_debug "debug"</td>
-    <td>Specify debug options that are relevant to all devices of the family.</td>
-    <td>DebugType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_trace "trace"</td>
-    <td>Specify trace options that are relevant to all devices of the family.</td>
-    <td>TraceType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_memory "memory"</td>
-    <td>Specify memory areas that are available for all devices of the family.</td>
-    <td>MemoryType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_algorithm "algorithm"</td>
-    <td>Specify Flash programming algorithms that are suitable for all devices.</td>
-    <td>AlgorithmType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_book "book"</td>
-    <td>Specify documents that are relevant for all devices of a family.</td>
-    <td>BookType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_description "description"</td>
-    <td>Describe the device family.</td>
-    <td>DescriptionType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_environment "environment"</td>
-    <td>Specify tool specific settings.</td>
-    <td>EnvironmentType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_feature "feature"</td>
-    <td>Specify features that are available in all members of the device family.</td>
-    <td>FeatureType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_subFamily "subFamily"</td>
-    <td>A optional sub-family that is used to group devices.</td>
-    <td>group</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_device "device"</td>
-    <td>Individual devices that belong to the device family.</td>
-    <td>DeviceType</td>
-    <td>0..*</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-<hr>
-
-\section element_subFamily /package/devices/family/subFamily
-
-Define properties that are in common to all devices of a subFamily. This is another mechanism of granulation to reduce redundancy. 
-These properties are inherited by subgroups or elements. Multiple \<subFamily> groups can be defined.
- 
-\b Example
-\code
-<family Dfamily="STM32F2" Dvendor="STMicroelectronics:13">
-  ...   
-  <subFamily DsubFamily="...">
-    <processor   .../>
-    <debugconfig .../>
-    <debugvars   .../>
-    <sequences   .../>
-    <compile     .../>
-    <memory      .../>
-    <algorithm   .../>
-    <book        .../>
-    <description> Write texte here </description>
-    <feature     .../>
-    <debugport   .../>
-    <debug       .../>
-    <trace       .../>
-    <device Dname="...">
-      ...
-    </device>
-  </subFamily>
-
-  <subFamily DsubFamily="STM32F2xx">
-    ...
-  </subFamily>
-
-</family>
-\endcode 
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: subFamily">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_family "family"</td>
-    <td colspan="3">\ref element_family</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>DsubFamily</td>
-    <td>Name of the device sub family.</td>
-    <td>xs:string</td>
-    <td>required</td>
-  </tr>
-  <tr>
-    <th>Child Elements</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Occurrence</th>
-  </tr>
-  <tr>
-    <td>\ref element_processor "processor"</td>
-    <td>Specify processors that are available in all devices of the sub-family.</td>
-    <td>ProcessorType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_compile "compile"</td>
-    <td>Specify compile or translate options that are relevant to all devices of the sub-family.</td>
-    <td>CompileType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_debugconfig "debugconfig"</td>
-    <td>Specify default settings for the debug connection relevant to all devices of the sub-family.</td>
-    <td>DebugConfigType</td>
-    <td>0..1</td>
-  </tr>
-  <tr>
-    <td>\ref element_debugvars "debugvars"</td>
-    <td>Define global debug access variables for user-defined settings relevant to all devices of the sub-family.</td>
-    <td>DebugVarsType</td>
-    <td>0..1</td>
-  </tr>
-  <tr>
-    <td>\ref element_sequences "sequences"</td>
-    <td>Describe debug access sequences relevant to all devices of the sub-family.</td>
-    <td>SequencesType</td>
-    <td>0..1</td>
-  </tr>
-  <tr>
-    <td>\ref element_debugport "debugport"</td>
-    <td>Describe a debug port relevant to all devices of the sub-family.</td>
-    <td>DebugPortType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_debug "debug"</td>
-    <td>Specify debug options that are relevant to all devices of the sub-family.</td>
-    <td>DebugType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_trace "trace"</td>
-    <td>Specify trace options that are relevant to all devices of the sub-family.</td>
-    <td>TraceType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_memory "memory"</td>
-    <td>Specify memory areas that are available in all device of the sub-family.</td>
-    <td>MemoryType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_algorithm "algorithm"</td>
-    <td>Specify Flash programming algorithms that can be used by all device of the sub-family.</td>
-    <td>AlgorithmType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_book "book"</td>
-    <td>Specify documents relevant for all device of the sub-family.</td>
-    <td>BookType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_description "description"</td>
-    <td>Description of the device family.</td>
-    <td>DescriptionType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_feature "feature"</td>
-    <td>Specify features available in devices of the sub-family.</td>
-    <td>FeatureType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_device "device"</td>
-    <td>List individual devices that belong to the device sub-family.</td>
-    <td>DeviceType</td>
-    <td>0..*</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-<hr>
-
-\section element_device /package/devices/family/../device
-
-Define properties that are specific to a device. Properties defined on upper levels get inherited, unless they can be overwritten.
-Multiple \<device> elements can be defined.
-
-\b Example
-\code
-<subFamily DsubFamily="STM32F405">
-  ...
-  <device Dname="STM32F405OE">
-    <memory    name="Flash" access="rx" start="0x08000000" size="0x80000" startup="1" default="1"/>
-    <algorithm name="Flash/STM32F4xx_1024.flm" start="0x08000000" size="0x80000" default="1" style="Keil"/>
-    <feature   type="IOs" n="72" name="Input and Output Ports"/>
-  </device>
-
-  <device Dname="STM32F405OG">
-    <memory    name="Flash" access="rx" start="0x08000000" size="0x100000" startup="1" default="1"/>
-    <algorithm name="Flash/STM32F4xx_1024.flm" start="0x08000000" size="0x100000" default="1" style="Keil"/>
-    <feature   type="IOs" n="72" name="Input and Output Ports"/>
-  </device>
-  ...
-</subFamily>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: device">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_family "family"</td>
-    <td colspan="3">\ref element_family</td>
-  </tr>
-  <tr>
-    <td>\ref element_subFamily "subFamily"</td>
-    <td colspan="3">\ref element_subFamily</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>Dname</td>
-    <td>Specifies the name of the device. Only alphabetical characters, decimal digits, '-' and '_' are allowed</td>
-    <td>RestrictedString</td>
-    <td>required</td>
-  </tr>
-  <tr>
-    <th>Child Elements</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Occurrence</th>
-  </tr>
-  <tr>
-    <td>\ref element_processor "processor"</td>
-    <td>Specify processors that are specific to this device.</td>
-    <td>ProcessorType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_compile "compile"</td>
-    <td>Specify compile or translate options specific to this device.</td>
-    <td>CompileType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_debugconfig "debugconfig"</td>
-    <td>Specify default settings for the debug connection specific to this device.</td>
-    <td>DebugConfigType</td>
-    <td>0..1</td>
-  </tr>
-  <tr>
-    <td>\ref element_debugvars "debugvars"</td>
-    <td>Define debug access variables for user-defined settings specific to this device.</td>
-    <td>DebugVarsType</td>
-    <td>0..1</td>
-  </tr>
-  <tr>
-    <td>\ref element_sequences "sequences"</td>
-    <td>Describe debug access sequences specific to this device.</td>
-    <td>SequencesType</td>
-    <td>0..1</td>
-  </tr>
-  <tr>
-    <td>\ref element_debugport "debugport"</td>
-    <td>Describe a debug port specific to this device.</td>
-    <td>DebugPortType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_debug "debug"</td>
-    <td>Specify debug options specific to this device.</td>
-    <td>DebugType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_trace "trace"</td>
-    <td>Specify trace options specific to this device.</td>
-    <td>TraceType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_memory "memory"</td>
-    <td>Specify memory areas that specific to this device.</td>
-    <td>MemoryType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_algorithm "algorithm"</td>
-    <td>Specify Flash programming algorithms that can be used by this device.</td>
-    <td>AlgorithmType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_book "book"</td>
-    <td>Specify documents specific to this device.</td>
-    <td>BookType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_description "description"</td>
-    <td>Description specific to this device.</td>
-    <td>DescriptionType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_feature "feature"</td>
-    <td>Specify features specific to this device.</td>
-    <td>FeatureType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_variant "variant"</td>
-    <td>Complex element specifying a variant of a device.</td>
-    <td>xs:string</td>
-    <td>0..*</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-<hr>
-
-\section element_algorithm /package/devices/family/.../algorithm
-
-Specify Flash programming algorithms with the address range and its size.  An algorithm with 
-\<default> set to \token{true} gets configured automatically to the download options of the project.
-Algorithms can be defined on various levels. Multiple \<algorithm> elements are possible. If the
-memory range and style are identical, the one on the lower level takes precedence.
-
-\b Example
-\code
-<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
-  ...
-  <!-- use for all devices of the family  -->
-  <algorithm name="Flash\STM32F2xx_512.flm" start=0x08000000 size=0x10000 default="1" style="Keil"/>
- 
-  <subFamily DsubFamily="STM32F405">
-    <!-- use for all devices of a subFamily -->
-    <algorithm name="Flash/STM32F2xx_1024.flm" start=0x08000000 size=0x20000 default="1" style="Keil"/>       
-
-    <device Dname="STM32F405OE">
-	  <!-- finally, this is the default for the device -->
-      <algorithm name="Flash/STM32F2xx_2048.flm" start=0x08000000 size=0x40000 default="1" style="Keil"/>
-    </device>
-    ...
-</family>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Type: AlgorithmType">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_family "family"</td>
-    <td colspan="3">\ref element_family</td>
-  </tr>
-  <tr>
-    <td>\ref element_subFamily "subFamily"</td>
-    <td colspan="3">\ref element_subFamily</td>
-  </tr>
-  <tr>
-    <td>\ref element_device "device"</td>
-    <td colspan="3">\ref element_device</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>Pname</td>
-    <td>Processor identifier. This attribute <b>is mandatory for devices that embed multiple processors that require different algorithms</b>.
-        Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td>
-    <td>RestrictedString</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>name</td>
-    <td>Flash Programming Algorithm file including the path, which is relative to the root folder of the \ref CP_SWComponents "Software Pack".</td>
-    <td>xs:string</td>
-    <td>required</td>
-  </tr>
-  <tr>
-    <td>start</td>
-    <td>Base address for the Flash programming algorithm.</td>
-    <td>NonNegativeInteger</td>
-    <td>required</td>
-  </tr>
-  <tr>
-    <td>size</td>
-    <td>Size covered by the Flash programming algorithm. End address = start + size - 1</td>
-    <td>NonNegativeInteger</td>
-    <td>required</td>
-  </tr>
-   <tr>
-    <td>RAMstart</td>
-    <td>Base address for the RAM where the Flash programming algorithm will be executed from. If
-    specified, the \ref element_memory "memory" element does not require a \c default attribute.</td>
-    <td>NonNegativeInteger</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>RAMsize</td>
-    <td>Maximum size of RAM available for the execution of the Flash programming algorithm. 
-	End address = start + size - 1 is used for the Stack. If specified, the \ref element_memory 
-	"memory" element does not require a \c default attribute.</td>
-    <td>NonNegativeInteger</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>default</td>
-    <td>If \token{true}, then this is the default Flash programming algorithm that gets configured
-	in a project. If not specified or set to \token{false}, then the Flash programming algorithm can
-	be configured on a lower level. However, the Flash programming algorithm of a project can be
-	changed manually at any time during development.
-	</td>
-    <td>xs:boolean</td>
-    <td>optional</td>
-  </tr>
-    <tr>
-    <td>style</td>
-    <td>[Version 1.4.0] Today different tool-chains support different styles of incompatible flash
-	programming algorithms. The attribute specifies the style of the specified flash programming 
-	algorithm. For backward compatibility the default value is "Keil". The aim is to converge to
-	the <em>CMSIS</em> style.
-	</td>
-    <td>\ref AlgorithmStyleEnum "AlgorithmStyleEnum"</td>
-    <td>optional</td>
-  </tr>
-
-</table>
-
-
-<p>&nbsp;</p>		
-<hr>
-
-\section element_book /package/devices/family/.../book
-
-Specifies documents related to a device. Books can be entered on various levels.
-The book element contains the location, filename, and extension of the file. The title is used for display purposes.
-
-\b Example
-\code
-<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
-  ...
-  <book name="Documents/STM32F40x_DS.PDF" title="STM32F40x Data Sheet"/>                 <!-- valid for all devices of the family  -->
-
-  <subFamily DsubFamily="STM32F405">
-    <book name="Documents/STM32F4xx_RM.pdf" title="STM32F4 Series Reference Manual"/>    <!-- valid for all devices of a subFamily -->
-
-    <device Dname="STM32F405OE">
-      <book name="Documents/STM32F405OE_DS.PDF" title="STM32F405OE - Data Sheet"/>       <!-- valid for this device; Inherits all above -->
-    </device>
-    ...
-</family>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Type: BookType">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_family "family"</td>
-    <td colspan="3">\ref element_family</td>
-  </tr>
-  <tr>
-    <td>\ref element_subFamily "subFamily"</td>
-    <td colspan="3">\ref element_subFamily</td>
-  </tr>
-  <tr>
-    <td>\ref element_device "device"</td>
-    <td colspan="3">\ref element_device</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>Pname</td>
-    <td>Processor identifier. This attribute <b>is mandatory for devices that embed multiple processors and where the book refers to a single processor only</b>.
-        Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td>
-    <td>RestrictedString</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>name</td>
-    <td>File name of the document including the extension. The document path is relative to the package base folder. Directory/file names are case-sensitive.</td>
-    <td>xs:string</td>
-    <td>required</td>
-  </tr>
-  <tr>
-    <td>title</td>
-    <td>Book title. Can be used for being displayed in various environments.</td>
-    <td>xs:string</td>
-    <td>required</td>
-  </tr>
-</table>
-
-
-<p>&nbsp;</p>		
-<hr>
-
-\section element_compile /package/devices/family/.../compile
-
-Specify header files and preprocessor defines for programming. This element can occur on various levels.
-Multiple elements are allowed. The last occurrence in the hierarchy determines the actual define.
-
-\note
-- In the example below, the device \b STM32F407IG will have a define \c STM32F407IG. Previous defines
-  are overridden.
-- It is good practice to add both attributes (\c header and \c define) in the attributes list of the 
-  \c compile element together. This clarifies the relationship between header file and define.
-- The name of the header file should be exported by the IDE to the \ref RTE_Components_h file using the \#define CMSIS_device_header.
-  
-\b Example
-\code
-<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
-  ...
-  <compile   header="Device/Include/stm32f4xx.h"/>
-
-  <subFamily DsubFamily="STM32F407">
-    ...
-    <compile  header="Device/Include/stm32f4xx.h" define="STM32F40XX"/>
-
-    <device Dname="STM32F407IG">
-      <compile  header="Device/Include/stm32f4xx.h" define="STM32F407IG"/>
-    </device>
-  </subFamily>
-</family>
-\endcode
-
-<table class="cmtable" summary="Element: compile">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_family "family"</td>
-    <td colspan="3">\ref element_family</td>
-  </tr>
-  <tr>
-    <td>\ref element_subFamily "subFamily"</td>
-    <td colspan="3">\ref element_subFamily</td>
-  </tr>
-  <tr>
-    <td>\ref element_device "device"</td>
-    <td colspan="3">\ref element_device</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>Pname</td>
-    <td>Processor identifier. This attribute <b>is mandatory for devices that embed multiple processors if the header and define is different for each processor</b>.
-        Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td>
-   <td>RestrictedString</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>header</td>
-    <td>C-header file with path relative to the installation.</td>
-    <td>xs:string</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>define</td>
-    <td>C-file name with device specific preprocessor defines. The path is relative to the installation.</td>
-    <td>xs:string</td>
-    <td>optional</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-<hr>
-
-\section element_description /package/devices/family/.../description
-
-Brief description of the element. Can occur on various levels. Should only contain the unique features of the device. Number
-of bullet points should not exceed ten. To create a detailed feature list use the \ref element_feature instead.
-
-\b Example
-\code
-<package>
-  <devices>
-    <family Dfamily="STM32F2" Dvendor="STMicroelectronics:13">
-    
-      <description>
-        STM32F2 devices are designed for medical, industrial and consumer
-        applications and provide rich connectivity peripherals.
-        - At 120 MHz CPU clock: 150 DMIPS executing from Flash memory 
-        - ART Accelerator for low-power Flash execution (175 µA/MHz @ 120 MHz)
-        - Flexible Memory Controller supports Compact Flash, SRAM, PSRAM, NOR and NAND
-      </description>
- 
-    </family>
-  </devices>
-</package>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: description">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_family "family"</td>
-    <td colspan="3">\ref element_family</td>
-  </tr>
-  <tr>
-    <td>\ref element_subFamily "subFamily"</td>
-    <td colspan="3">\ref element_subFamily</td>
-  </tr>
-  <tr>
-    <td>\ref element_device "device"</td>
-    <td colspan="3">\ref element_device</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>Pname</td>
-    <td>Processor Identifier. This attribute <b>is mandatory for devices that embed multiple processors and
-        where the description is specific to a single processor</b>.
-        Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td>
-    <td>RestrictedString</td>
-    <td>optional</td>
-  </tr>
-</table>
-
-
-<p>&nbsp;</p>		
-<hr>
-
-
-\section element_environment /package/devices/family/.../environment
-
-Tool-specific elements for a device.
-
-Can occur on various levels. 
-
-Contains information that is specific for a <b>development tool</b> identified by the \em name attribute.
-The structure of the \em element is not specified in the schema file which gives the <b>development tool</b> 
-full control of the \em element usage.
-
-\b Example
-\code
-<package>
-  <devices>
-    <family Dfamily="MySeries" Dvendor="Generic:5">
-      ...    
-      <environment name="MyConfigTool">
-        <file>MyConfigFile.cfg</file>
-        <control>MyControlString</control>
-		...
-      </environment>
-      ...
-    </family>
-  </devices>
-</package>
-\endcode
-
-\code
-<package>
-  <devices>
-    <family Dfamily="XMC1000 Series" Dvendor="Infineon:7">
-      ...    
-      <environment name="uv" Pname="M0">
-        <CMisc>--C99</CMisc>
-		...
-      </environment>
-      ...
-    </family>
-  </devices>
-</package>
-\endcode
-
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: description">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_family "family"</td>
-    <td colspan="3">\ref element_family</td>
-  </tr>
-  <tr>
-    <td>\ref element_subFamily "subFamily"</td>
-    <td colspan="3">\ref element_subFamily</td>
-  </tr>
-  <tr>
-    <td>\ref element_device "device"</td>
-    <td colspan="3">\ref element_device</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>name</td>
-    <td>Name of the development tool (e.g. "uv" for uVision)</td>
-    <td>xs:string</td>
-    <td>required</td>
-  </tr>
-  <tr>
-    <td>Pname</td>
-    <td>Identifies the processor the setting belongs to.
-        Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td>
-    <td>RestrictedString</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <th>Child Elements</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Occurrence</th>
-  </tr>
-  <tr>
-    <td>any</td>
-    <td>Any element that is available for the specified development tool.<br>
-	For uVision, the following elements are available: \<CMisc>, \<AMisc\>, \<LMisc\>, \<preBuild1\>, \<preBuild2\>, \<preRun1\>, \<preRun2\>, \<postBuild1\>, \<postBuild2\>, \<postRun1\>, \<postRun\>.</td>
-    <td>xs:anyAttribute</td>
-    <td>0..*</td>
-  </tr>
-</table>
-
-
-<p>&nbsp;</p>		
-<hr>
-
-
-\section element_feature /package/devices/family/.../feature
-
-This element specifies peripherals that devices can have. This can be used on \b web \b sites for the display of device
-features.
-
-Many device feature types are already predefined, such as timers, converters, Ethernet, USB, etc (for a complete list refer
-to table \ref DeviceFeatureTypeEnum "Device Feature Types"). Features can be defined on various levels. Inner elements
-supersede outer elements. 
-
-\b Example
-\code
-<package>
-  <devices>
-    <family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
-      ...
-      <!--  Features that are in common to this device family. -->
-      <feature type="TimerOther" n="1" name="Independent Watchdog Timer"/>
-      <feature type="TimerOther" n="1" name="Window Watchdog Timer"/>          <!-- The same feature type can be specified multiple times -->
-      <feature type="Other" n="1" name="Temperature Sensor"/>
-      <feature type="CoreOther" n="1" name="96-bit Unique Identifier"/>
-      <feature type="CoreOther" n="1" name="CRC Calculation Unit"/>
-      <feature type="DMA" n="16" name="General Purpose DMA with Centralized FIFO and Burst Support"/>
-      <feature type="PowerOther" n="1" name="POR, PDR, PVD, and BOR"/>
-      <feature type="XTAL" n="4000000" m="26000000" name="Crystal Oscillator"/>
-      <feature type="IntRC" n="16000000" name="Internal Factory-Trimmed RC"/>
-      <feature type="IntRC" n="32000" name="Internal RC with Calibration"/>
-      <feature type="RTC" n="32000" name="RTC with 32 kHz calibrated Oscillator and Battery Backup"/>
-      <feature type="PowerMode" n="3" name="Run, Stop, Standby"/>
-      <feature type="Temp" n="-40" m="85"/> 
-      <feature type="Temp" n="-40" m="105"/> 
-      <feature type="Timer" n="4" m="16" name="General Purpose Timer"/>
-      ...
-      <subFamily DsubFamily="STM32F407">
-        <!--  Features that are in common to this subFamily. -->
-        <feature type="IOs" n="36"/>                                                  <!-- Adds new feature to subFamily  -->
-        <feature type="Timer" n="7" m="32" name="General Purpose Timer"/>             <!-- Adds to settings from <family> -->
-
-        
-        <device Dname="STM32F407IE">
-          <!--  Feature specific to this device.  All above features are inherited.  -->
-          <feature type="QFP" n="176" name="LQFP 176 24x24x1.4"/>
-        </device>
-      </subFamily>
-    </family>
-  </devices>
-</package>
-\endcode
-
-<p>&nbsp;</p>
-
-<table class="cmtable" summary="Element: feature">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_family "family"</td>
-    <td colspan="3">\ref element_family</td>
-  </tr>
-  <tr>
-    <td>\ref element_subFamily "subFamily"</td>
-    <td colspan="3">\ref element_subFamily</td>
-  </tr>
-  <tr>
-    <td>\ref element_device "device"</td>
-    <td colspan="3">\ref element_device</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>Pname</td>
-    <td>Processor Identifier. This attribute <b>is mandatory for devices that embed multiple processors</b>.
-        Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td>
-    <td>RestrictedString</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>type</td>
-    <td>A feature (peripheral), such as \token{CAN}, \token{DMA}, \token{I/O}, \token{LCD}, etc. Predefined values must be used
-	as listed in the table \ref DeviceFeatureTypeEnum "Device Feature Types".</td>
-    <td>DeviceFeatureTypeEnum</td>
-    <td>required</td>
-  </tr>
-  <tr>
-    <td>n</td>
-    <td>Depends on the element \em \b type. Check table \ref DeviceFeatureTypeEnum "Device Feature Types".</td>
-    <td>xs:decimal</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>m</td>
-    <td>Depends on the elemen \em \b type. Check table \ref DeviceFeatureTypeEnum "Device Feature Types".</td>
-    <td>xs:decimal</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>name</td>
-    <td>Descriptive name of the feature. For example, "16-bit down counting timer". If omitted, the <b>Default Name</b> is used 
-	as described in the table \ref DeviceFeatureTypeEnum "Device Feature Types".</td>
-    <td>xs:string</td>
-    <td>optional</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-
-\anchor DeviceFeatureTypeEnum <b>Table: Device Feature Types</b> 
-
-The table lists predefined device features (peripherals).
-\note The attribute \a name of the element \ref element_feature is a descriptive text for a feature. If \a name is omitted, then the <b>Default Name</b> is used.
-
-|type=|n=|m=|Default Name|Example|Example shown as|
-|-----|--|--|------------|-------|----------------|
-|NVIC|Number of NVIC Interrupts|N/A|NVIC|\<feature type="NVIC" n="120" name="NVIC"/\>|NVIC with 120 interrupt sources|
-|DMA|Number of DMA Channels|N/A|DMA|\<feature type="DMA" n="16" name="High-Speed DMA"/\>|16-channel High-Speed DMA|
-|Crypto|Bitwidth, given as decimal Number (see example)|N/A|Cryptographic Engine|\<feature type="Crypto" n="128.256" name="HW accelerated AES Encryption Engine"/\>|128/256-bit HW accelerated AES Encryption Engine|
-|RNG|Number of RNGs|N/A|Random Number Generator|\<feature type="RNG" name="True Random Number Generator"/\>|True Random Number Generator|
-|CoreOther|Number of Features|N/A|Other Core Feature|\<feature type="CoreOther" n=1 name="96-bit Unique Identifier"/\>|1 x 96-bit Unique Identifier|
-|Memory|Number of Bytes|N/A|Memory|\<feature type="Memory" n="128" name="EEPROM"/\>|128 byte EEPROM|
-|MemoryOther|Number of Memories|N/A|Other Memory Type|\<feature type="MemoryOther" n="1" name="1 kB MRAM"/\>|1 x 1 kB MRAM|
-|ExtBus|Bitwidth of Bus Interface|N/A|External Bus Interface|\<feature type="ExtBus" n="16" name="External Bus Interface for SRAM Communication"/\>|16-bit External Bus Interface for SRAM Communication|
-|XTAL|Minimum Frequency in Hz|Maximum Frequency in Hz|External Crystal Oscillator|\<feature type="XTAL"  n="4000000" m="25000000" name="External Crystal Oscillator"/\>|4 MHz .. 25 MHz External Crystal Oscillator|
-|IntRC|Minimum Frequency in Hz|Maximum Frequency in Hz|Internal RC Oscillator|\<feature type="IntRC"  n="16000000" name="Internal RC Oscillator with +/- 1% accuracy"/\>|16 MHz Internal RC Oscillator with +/- 1% accuracy|
-|PLL|Number of PLLs|N/A|PLL|\<feature type="PLL"  n="3" name="Internal PLL"/\>|3 Internal PLL|
-|RTC|RTC Frequency|N/A|RTC|\<feature type="RTC"  n="32000" name="Internal RTC"/\>|32 kHz Internal RTC|
-|ClockOther|Number of Peripherals|N/A|Other Clock Peripheral|\<feature type="ClockOther" name="My special clock feature"/\>|My special clock feature|
-|PowerMode|Number of Power Modes|N/A|Power Modes|\<feature type="Mode"  n="3" name="Run, Sleep, Deep-Sleep"/\>|3 Power Modes: Run, Sleep, Deep-Sleep|
-|VCC|Minimum Supply Voltage|Maximum Supply Voltage|Operating Voltage|\<feature type="VCC"  n="1.8" m="3.6"/\>|1.8 V .. 3.6 V|
-|Consumption|Minimum Power Consumption|Typical Power Consumption|Power Consumption|\<feature type="Consumption"  n="0.00004" m="0.002" name="Ultra-Low Power Consumption"/\>|40 uW/MHz .. 2 mW/MHz Ultra-Low Power Consumption|
-|PowerOther|Number of Features|N/A|Other Power Feature|\<feature type="PowerOther" n="1" name="POR"/\>|1 x POR|
-|BGA|Number of Balls|N/A|BGA|\<feature type="BGA" n="256" name="Plastic Ball Grid Array"/\>|256-ball Plastic Ball Grid Array|
-|CSP|Number of Leads|N/A|CSP|\<feature type="CSP" n="28" name="Wafer-Level Chip-Scale Package"/\>|28-ball Wafer-Level Chip-Scale Package|
-|PLCC|Number of Leads|N/A|PLCC|\<feature type="PLCC" n="20" name="PLCC Package"/\>|20-lead PLCC Package|
-|QFN|Number of Leads|N/A|QFN|\<feature type="QFN" n="33" name="QFN Package"/\>|33-pad QFN Package|
-|QFP|Number of Leads|N/A|QFP|\<feature type="QFP" n="128" name="Low-Profile QFP Package"/\>|128-lead Low-Profile QFP Package|
-|SOP|Number of Leads|N/A|SOP|\<feature type="SOP" n="16" name="SSOP Package"/\>|16-lead SSOP Package|
-|DIP|Number of Leads|N/A|SOP|\<feature type="DIP" n="16" name="Dual In-Line Package"/\>|16-lead Dual In-Line Package|
-|PackageOther|Number of Pins|N/A|Other Package Type|\<feature type="PackageOther"  n="44" name="My other Package"/\>|44-contacts My other Package|
-|IOs|Number of I/Os|N/A|Inputs/Outputs|\<feature type="IOs"  n="112" name="General Purpose I/Os, 5V tolerant"/\>|112 General Purpose I/Os, 5V tolerant|
-|ExtInt|Number of External Interrupts|N/A|External Interrupts|\<feature type="ExtInt"  n="12"/\>|12 External Interrupts|
-|Temp|Minimum Operating Temperature|Maximum Operating Temperature|Operating Temperature Range|\<feature type="Temp"  n="-40" m="105" name="Extended Operating Temperature Range"/\>|-40 °C .. +105 °C Extended Operating Temperature Range|
-|ADC|Number of Channels|Resolution in Bit|ADC|\<feature type="ADC"  n="5" m="12" name="High-Performance ADC"/\>|5-channel x 12-bit High-Performance ADC|
-|DAC|Number of Channels|Resolution in Bit|DAC|\<feature type="DAC"  n="2" m="10"/\>|2 x 12-bit DAC|
-|TempSens|Number of Sensors|N/A|Temperature Sensor|\<feature type="TempSens"  n="1"/\>|1 x Temperature Sensor|
-|AnalogOther|Number of Features|N/A|Other Analog Peripheral|\<feature type="AnalogOther"  n="1" name="My Analog"/\>|1 x My Analog|
-|Timer|Number of Channels|Resolution in Bit|Timer/Counter Module|\<feature type="Timer"  n="2" m="32" name="Timer Module with Quadrature Encoding"/\>|2 x 32-bit Timer Module with Quadrature Encoding|
-|PWM|Number of Channels|Resolution in Bit|PWM|\<feature type="PWM"  n="2" m="16" name="Pulse Width Modulation"/\>|2 x 16-bit Pulse Width Modulation|
-|WDT|Number of Watchdogs|N/A|Watchdog|\<feature type="WDT"  n="1"/\>|1 x Watchdog Timer|
-|TimerOther|Number of Features|N/A|Other Timer Peripheral|\<feature type="TimerOther"  n="1" name="Quadrature En-/Decoder"/\>|1 x Quadrature En-/Decoder|
-|MPSerial|Number of Serial Peripherals|N/A|Multi-Purpose Serial Peripheral|\<feature type="MPSerial"  n="4" name="Multi-Purpose Serial Interface Module: I2C, I2S, SPI, UART"/\>|4 x Multi-Purpose Serial Interface Module: I2C, I2S, SPI, UART|
-|CAN|Number of CAN Interfaces|N/A|CAN|\<feature type="CAN"  n="2" name="CAN 2.0b Controller"/\>|2 x CAN 2.0b Controller|
-|ETH|Number of Ethernet Interfaces|Data Rate in Bit/s|Ethernet|\<feature type="ETH"  n="1" m="10000000" name="Integrated Ethernet MAC with PHY"/\>|1 x 10 Mbit/s Integrated Ethernet MAC with PHY|
-|I2C|Number of I2C Interfaces|N/A|I2C|\<feature type="I2C"  n="2"name="Low-Power I2C"/\>|2 x Low-Power I2C|
-|I2S|Number of I2S Interfaces|N/A|I2S|\<feature type="I2S"  n="3"/\>|3 x I2S|
-|LIN|Number of LIN Interfaces|N/A|LIN|\<feature type="LIN"  n="4"/\>|4 x LIN|
-|SDIO|Number of SDIO Interfaces|Bitwidth of SDIO Interface|SDIO|\<feature type="SDIO"  n="1" m="4" name="SDIO Interface"/\>|1 x 4-bit SDIO Interface|
-|SPI|Number of SPI Interfaces|Data Rate in Bit/s|SPI|\<feature type="SPI"  n="2" m="20000000" name="SPI Interface"/\>|2 x 20 Mbit/s SPI Interface|
-|UART|Number of UART Interfaces|Data Rate in Bit/s|UART|\<feature type="UART"  n="4" m="3000000" name="High-Speed UART Interface"/\>|4 x 3 Mbit/s High-Speed UART Interface|
-|USART|Number of USART Interfaces|Data Rate in Bit/s|USART|\<feature type="USART"  n="2" m="1000000" name="High-Speed USART Interface"/\>|2 x 1 Mbit/s High-Speed USART Interface|
-|USBD|Number of USB Dvice Interfaces|N/A|USB Device|\<feature type="USBD"  n="2" name="Full-Speed USB Device"/\>|2 x Full-Speed USB Device|
-|USBH|Number of USB Host Interfaces|N/A|USB Host|\<feature type="USBH"  n="2" name="High-Speed USB Host"/\>|2 x High-Speed USB Host|
-|USBOTG|Number of USB OTG Interfaces|N/A|USB OTG|\<feature type="USBOTG"  n="1" name="High-Speed USB OTG with PHY"/\>|1 x High-Speed USB OTG with PHY|
-|ComOther|Number of other Communication Peripherals|N/A|Other Communication Peripheral|\<feature type="ComOther"  n="1" name="ZigBee"/\>|1 x ZigBee|
-|Camera|Number of Camera Interface|Resolution in Bit|Camera Interface|\<feature type="Camera"  n="1" m="8" name="Digital Camera Interface"/\>|1 x 8-bit Digital Camera Interface|
-|GLCD|Number of Graphic LCD Controller|Maximum Resolution as a decimal number (see example)|Graphic LCD Controller|\<feature type="GLCD"  n="1" m="320.240" name="TFT LCD Controller"/\>|1 x 320 x 480 pixel TFT LCD Controller|
-|LCD|Number of Segment LCD Controller|Com.Seg as a decimal number (see example)|Segment LCD Controller|\<feature type="LCD"  n="1" m="16.40" name="Segment LCD Controller"/\>|1 x 16 x 40  Segment LCD Controller|
-|Touch|Number of Touch Channels|N/A|Capacitive Touch Inputs|\<feature type="Touch"  n="10" name="Capacitive Touch Inputs"/\>|10 x Capacitive Touch Inputs|
-|Other|Number of Features|N/A|Other Feature|\<feature type="Other"  n="2" name="My other Interface"/\>|2 x My other Interface|
-	
-<p>&nbsp;</p>		
-<hr>
-
-\section element_memory /package/devices/family/.../memory
-
-This element specifies memory regions that devices can have. Memory types are predefined and can be selected.
-This element can be defined on various levels. Inner memory elements supersede outer elements.
-
-\b Example
-\code
-</package>
-  ...
-  <devices>
-    <family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
-      <memory name="SRAM" access="rwx" start="0x20000000" size="0x20000" default="1"/>
-
-      <subFamily DsubFamily="STM32F407">
-        <debug  __dp="0" __ap="0" svd="SVD/STM32F40x.svd"/>
-        <memory name="SRAM1" access="rwx" start="0x20020000" size="0x20000" default="1"/>
-        <memory name="SRAM2" access="rwx" start="0x10000000" size="0x10000" default="1"/>
-        
-        <device Dname="STM32F407IE">
-          <memory name="Flash" access="rx" start="0x08000000" size="0x80000" startup="1" default="1"/>
-        </device>
-        
-      </subFamily>
-    </family>
-  </devices>
-  ...
-</package>
-\endcode
-<p>&nbsp;</p>
-
-<table class="cmtable" summary="Element: memory">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_family "family"</td>
-    <td colspan="3">\ref element_family</td>
-  </tr>
-  <tr>
-    <td>\ref element_subFamily "subFamily"</td>
-    <td colspan="3">\ref element_subFamily</td>
-  </tr>
-  <tr>
-    <td>\ref element_device "device"</td>
-    <td colspan="3">\ref element_device</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>Pname</td>
-    <td>Processor identifier. This attribute <b>is mandatory for devices that embed multiple processors</b>. 
-        Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td>
-    <td>RestrictedString</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>id (deprecated in Version 1.4.0)</td>
-    <td>(deprecated Version 1.4.0) Identifier of the memory region consisting of a type indicator and an index (for example, \token{IRAM1}).
-	Predefind values can be selected as defined in \ref MemoryIDTypeEnum.</td>
-    <td>MemoryIDTypeEnum</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>name (new in Version 1.4.0)</td>
-    <td>unique name of the memory (new in Version 1.4.0) to be used in conjunction with <em>access</em>
-    <td>xs:string</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>access (new in Version 1.4.0)</td>
-    <td>access permission attributes of the memory. See MemoryAccessTypeString for details (new in Version 1.4.0).
-    <td>\ref MemoryAccessTypeString "MemoryAccessTypeString"</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>start</td>
-    <td>Base address of the memory using a hexadecimal value.</td>
-    <td>NonNegativeInteger</td>
-    <td>required</td>
-  </tr>
-  <tr>
-    <td>size</td>
-    <td>Size of the memory in bytes using a hexadecimal value.</td>
-    <td>NonNegativeInteger</td>
-    <td>required</td>
-  </tr>
-  <tr>
-    <td>default</td>
-    <td>Indicates a general purpose memory region, that does not require any special considerations (access speed, remapping, protection, etc.).
-    If \token{true}, then an IRAM memory region will be used by the linker for locating any data and an IROM memory region will for locating 
-    any code. Every device needs at least one default IRAM region.
-    If an \ref element_algorithm "algorithm" element is specified (without \c RAMstart and
-    \c RAMsize attributes),	the first listed IRAM region with default="1" will also be used for executing the flash programming algorithm.</td>
-    Default value is \token{false}.
-    <td>xs:boolean</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>startup</td>
-    <td>If \token{true}, the startup code of the application will be placed into this memory region. Default value is \token{false}.</td>
-    <td>xs:boolean</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>alias(new in Version 1.4.0)</td>
-    <td>reference to another memory description which shares the same physical memory. Some physical
-	memory is made accessible via different addresses, e.g. chached vs. non-cached accesses. This
-	avoids the impression that the device has twice as much memory available.
-    <td>xs:string</td>
-    <td>optional</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-
-\anchor MemoryIDTypeEnum <b>Table: Memory ID Types</b>
-
-The table lists identifiers for memory types.
-<table class="cmtable" summary="Enumeration: MemoryIDTypeEnum">
-  <tr>
-    <th>id=</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td class="XML-Token">RAM<i>x</i></td>
-    <td>External RAM. <i>x</i> can have a value between 1..8 </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">ROM<i>x</i></td>
-    <td>External ROM. <i>x</i> can have a value between 1..8 </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">IRAM<i>x</i></td>
-    <td>Internal RAM. <i>x</i> can have a value between 1..8 </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">IROM<i>x</i></td>
-    <td>Internal ROM. <i>x</i> can have a value between 1..8 </td>
-  </tr>
-</table>
-
-
-
-
-<p>&nbsp;</p>		
-<hr>
-
-\anchor MemoryAccessTypeString <b>Table: Memory Access Attribute String</b>
-
-The table lists the letters and their meaning for use in the access attribute string.
-<table class="cmtable" summary="Memory Access Permission Attributes">
-  <tr>
-    <th>access=</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td class="XML-Token">r</td>
-    <td><em>R</em>eadable</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">w</td>
-    <td><em>W</em>ritable</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">x</td>
-    <td>e<em>X</em>ecutable</td>
-  </tr>
-    <tr>
-    <td class="XML-Token">p</td>
-    <td><em>P</em>eripheral area. Details described in SVD.</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">s</td>
-    <td><em>S</em>ecure attribute</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">n</td>
-    <td><em>N</em>on-secure attribute</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">c</td>
-    <td>non-secure <em>C</em>allable attribute</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-<hr>
-
-\section element_processor /package/devices/family/.../processor
-
-Specifies attributes of the device processor. The element can occur on various levels.
-Elements of multi-processor devices can be associated with a specific processor using the attribute \elem{Pname}. If the information is relevant to
-all processors, no processor must be specified in \elem{Pname}. 
-
-\b Example
-\code
-<package>
-  ...
-  <devices>
-    <family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
-      <processor Dcore="Cortex-M4" DcoreVersion="r0p1"
-                 Dfpu="1" Dmpu="1" Dendian="Little-endian" Dclock="168000000"/>
-      ...
-    </family>
-  </devices>
-  ...
-</package>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: processor">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_family "family"</td>
-    <td colspan="3">\ref element_family</td>
-  </tr>
-  <tr>
-    <td>\ref element_subFamily "subFamily"</td>
-    <td colspan="3">\ref element_subFamily</td>
-  </tr>
-  <tr>
-    <td>\ref element_device "device"</td>
-    <td colspan="3">\ref element_device</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>Pname</td>
-    <td>Processor identifier. This attribute <b>is mandatory for devices that embed multiple processors</b>. 
-	      Each processor needs a unique identifier and must be used consistently in the <b>Pname</b> attribute of the elements within the scope of the current device family section.
-        Only alphabetical characters, decimal digits, '-' and '_' are allowed.
-    </td>
-    <td>RestrictedString</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>Dvendor</td>
-    <td>Specfies the device vendor using a predefined string. Use predefined values as listed in the table \ref DeviceVendorEnum "Device Vendor".</td>
-    <td>DeviceVendorEnum</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>Dcore</td>
-    <td>Specifies the processor core. Use predefined values as listed in the table \ref DcoreEnum "Device Cores".</td>
-    <td>DcoreEnum</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>Dfpu</td>
-    <td>Specifies whether a hardware Floating Point Unit is present in the processor.  Use predefined values as listed in the table \ref DfpuEnum "Device FPU".</td>
-    <td>DfpuEnum</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>Dmpu</td>
-    <td>Specifies whether a Memory Protection Unit is present in the processor. Use predefined values as listed in the table \ref DmpuEnum "Device MPU".</td>
-    <td>DmpuEnum</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>Dendian</td>
-    <td>Specifies the endianess of the processor. Use predefined values as listed in the table \ref DendianEnum "Endinaness".</td>
-    <td>DendianEnum</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>Dclock</td>
-    <td>Specifies the max clock frequency of the processor subsystem</td>
-    <td>xs:unsignedInt</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>DcoreVersion</td>
-    <td>Hardware revision of the processor core</td>
-    <td>xs:string</td>
-    <td>required</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-
-\anchor DeviceVendorEnum <b>Table: Device Vendors</b>
-
-The table lists predefined values representing device vendors. The list is extended from time to time (on request by new vendors). 
-Contact cmsis@arm.com to ask for an extension. These values can be used in the elements:
-- \ref element_board_mountedDevice 
-- \ref element_accept
-- \ref element_require
-- \ref element_deny
-- \ref element_example_board
-- \ref element_board_compatibleDevice
-- \ref element_gen_select
-
-<table class="cmtable" summary="Enumeration: DeviceVendorEnum">
-  <tr>
-    <th>Dvendor</th>
-    <th>Description</th>
-    <th>Web Link</th>
-  </tr>
-  <tr>
-    <td class="XML-Token">Ambiq Micro:120</td>
-    <td>Ambiq Micro</td>
-    <td>http://www.ambiqmicro.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Analog Devices:1</td>
-    <td>Analog Devices</td>
-    <td>http://www.analog.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">ARM:82</td>
-    <td>ARM Ltd.</td>
-    <td>http://www.arm.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Atmel:3</td>
-    <td>Atmel Corporation</td>
-    <td>http://www.atmel.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">CSR:118</td>
-    <td>CSR:</td>
-    <td>http://www.csr.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Cypress:19</td>
-    <td>Cypress Semiconductor</td>
-    <td>http://www.cypress.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Dialog Semiconductor:113</td>
-    <td>Dialog Semiconductor</td>
-    <td>http://www.dialog-semiconductor.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Freescale:78</td>
-    <td>Freescale</td>
-    <td>http://www.freescale.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Generic:5</td>
-    <td>Generic: Not a vendor specific device</td>
-    <td></td>
-  </tr>
-  <tr>
-    <td class="XML-Token">GigaDevice:123</td>
-    <td>GigaDevice</td>
-    <td>http://www.gigadevice.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Holtek:106</td>
-    <td>Holtek Microelectronics</td>
-    <td>http://www.holtek.com.tw</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Infineon:7</td>
-    <td>Infineon Technologies</td>
-    <td>http://www.infineon.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Lapis Semiconductor:10</td>
-    <td>Lapis Semiconductor</td>
-    <td>http://www.lapis-semi.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Maxim:23</td>
-    <td>Maxim Integrated</td>
-    <td>http://www.maximintegrated.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">MediaTek:129</td>
-    <td>MediaTek</td>
-    <td>http://www.mediatek.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">MicroSemi:112</td>
-    <td>Microsemi</td>
-    <td>http://www.microsemi.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Milandr:99</td>
-    <td>Milandr</td>
-    <td>http://www.milandr.ru</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Nordic Semiconductor:54</td>
-    <td>Nordic Semiconductor</td>
-    <td>http://www.nordicsemi.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Nuvoton:18</td>
-    <td>Nuvoton Technolgy Corp.</td>
-    <td>http://www.nuvoton.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">NXP:11</td>
-    <td>NXP</td>
-    <td>http://www.nxp.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Realtek Semiconductor:124</td>
-    <td>Realtek Semiconductor</td>
-    <td>http://www.realtek.com.tw</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Redpine Signals:125</td>
-    <td>Repine Signals</td>
-    <td>http://www.redpinesignals.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Renesas:117</td>
-    <td>Renesas</td>
-    <td>http://www.renesas.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">ROHM:103</td>
-    <td>ROHM</td>
-    <td>http://www.rohm.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Samsung:47</td>
-    <td>Samsung Semiconductor</td>
-    <td>http://www.samsung.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Silicon Labs:21</td>
-    <td>Silicon Labs</td>
-    <td>http://www.silabs.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Spansion:100</td>
-    <td>Spansion (previously Fujitsu)</td>
-    <td>http://www.spansion.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">STMicroelectronics:13</td>
-    <td>STMicroelectronics</td>
-    <td>http://www.st.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Texas Instruments:16</td>
-    <td>Texas Instruments</td>
-    <td>http://www.ti.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Toshiba:92</td>
-    <td>Toshiba Semiconductor</td>
-    <td>http://www.toshiba-components.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Triad Semiconductor:104</td>
-    <td>Triad Semiconductor</td>
-    <td>http://www.triadsemi.com</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">WIZnet:122</td>
-    <td>WIZnet</td>
-    <td>http://www.wiznet.co.kr</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>
-
-\anchor AlgorithmStyleEnum <b>Table: Algorithm Styles</b>
-<table class="cmtable" summary="Enumeration: AlgorithmStyleEnum">
-  <tr>
-    <th>style=</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td class="XML-Token">Keil</td>
-    <td><a href="http://www.keil.com/pack/doc/CMSIS/Pack/html/_flash_algorithm.html" target="_blank">Flash Programming Algorithm</a> as defined by ARM/Keil</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">IAR</td>
-    <td>Flash Programming Algorithm as defined by IAR</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">CMSIS</td>
-    <td>To be agreed under CMSIS</td>
-  </tr>
-
-</table>
-
-<p>&nbsp;</p>
-
-
-\anchor DcoreEnum <b>Table: Device Cores</b>
-
-The table lists available device cores. The list is extended from time to time to reflect new processor cores.
-These values can be used in the elements:
-- \ref element_accept
-- \ref element_require
-- \ref element_deny
-- \ref element_processor
-	
-<table class="cmtable" summary="Enumeration: DcoreEnum">
-  <tr>
-    <th>Dcore=</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td class="XML-Token">Cortex-M0</td>
-    <td><a href="http://www.arm.com/products/processors/cortex-m/cortex-m0.php" target="_blank">ARM Cortex-M0</a> processor based device</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Cortex-M0+</td>
-    <td><a href="http://www.arm.com/products/processors/cortex-m/cortex-m0plus.php" target="_blank">ARM Cortex-M0+</a> processor based device</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Cortex-M1</td>
-    <td><a href="http://www.arm.com/products/processors/cortex-m/cortex-m1.php" target="_blank">ARM Cortex-M1</a> processor based device</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Cortex-M3</td>
-    <td><a href="http://www.arm.com/products/processors/cortex-m/cortex-m3.php" target="_blank">ARM Cortex-M3</a> processor based device</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Cortex-M4</td>
-    <td><a href="http://www.arm.com/products/processors/cortex-m/cortex-m4-processor.php" target="_blank">ARM Cortex-M4</a> processor based device</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Cortex-M7</td>
-    <td><a href="http://www.arm.com/products/processors/cortex-m/cortex-m7-processor.php" target="_blank">ARM Cortex-M7</a> processor based device</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">SC000</td>
-    <td>SecurCore <a href="http://www.arm.com/products/processors/securcore/sc000.php" target="_blank">SC000</a> based on technology of Cortex-M0.</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">SC300</td>
-    <td>SecurCore <a href="http://www.arm.com/products/processors/securcore/sc300.php" target="_blank">SC300</a> based on technology of Cortex-M3.</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Cortex-R4</td>
-    <td>ARM Cortex-R4 processor based device</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Cortex-R5</td>
-    <td>ARM Cortex-R5 processor based device</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Cortex-A8</td>
-    <td>ARM Cortex-A8 processor based device</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Cortex-A9</td>
-    <td>ARM Cortex-A9 processor based device</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Cortex-A15</td>
-    <td>ARM Cortex-A15 processor based device</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">*</td>
-    <td>Device based on any processor</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>
-
-
-\anchor DfpuEnum <b>Table: Device FPU</b>
-
-The table lists values that identicate whether a CPU has an Floating Point Unit (FPU).
-The tokens can be used in the elements:
-- \ref element_accept  
-- \ref element_require 
-- \ref element_deny  
-- \ref element_processor
-	
-<table class="cmtable" summary="Enumeration: DfpuEnum">
-  <tr>
-    <th>Dfpu=</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td class="XML-Token">NO_FPU</td>
-    <td>Hardware Floating Point Unit not present</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">FPU</td>
-    <td>Hardware Floating Point Unit present</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">SP_FPU</td>
-    <td>Single Precision Hardware Floating Point Unit present</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">DP_FPU</td>
-    <td>Double Precision Hardware Floating Point Unit present</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>
-
-\anchor DmpuEnum <b>Table: Device MPU</b>
-
-The table shows predefined values that identify whether a CPU has an Memory Protection Unit (MPU).
-The values can be used in the elements:
-- \ref element_accept  
-- \ref element_require 
-- \ref element_deny  
-- \ref element_processor
-
-<table class="cmtable" summary="Enumeration: DmpuEnum">
-  <tr>
-    <th>Dmpu=</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td class="XML-Token">MPU</td>
-    <td>Memory Protection Unit is present</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">NO_MPU</td>
-    <td>No Memory Protection Unit is present</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-
-\anchor DendianEnum <b>Table: Endianness</b>
-
-The table lists values representing	the endianness of a device.
-The values can be used in the elements:
-- \ref element_accept 
-- \ref element_require
-- \ref element_deny  
-- \ref element_processor
-
-<table class="cmtable" summary="Enumeration: DendianEnum">
-  <tr>
-    <th>Dendian=</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td class="XML-Token">Little-endian</td>
-    <td>The least significant byte of a multi-byte access is located at the specified address.</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Big-endian</td>
-    <td>The most significant byte of a multi-byte access is located at the specified address.</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Configurable</td>
-    <td>The byte ordering of multi-byte accesses is configurable.</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>
-<hr>
-
-\section element_debugconfig /package/devices/family/.../debugconfig
-
-Default debugger configuration for a target connection.
-
-\b Example
-\code
-
-<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
-  ...
-  <debugconfig default="jtag" clock="10000000" swj="1" sdf="Debug/SDF/lpc4300.sdf"/>
-  ...
-</family>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: debugconfig">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_family "family"</td>
-    <td colspan="3">\ref element_family</td>
-  </tr>
-  <tr>
-    <td>\ref element_subFamily "subFamily"</td>
-    <td colspan="3">\ref element_subFamily</td>
-  </tr>
-  <tr>
-    <td>\ref element_device "device"</td>
-    <td colspan="3">\ref element_device</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>default</td>
-    <td>
-      Specifies the default debug protocol to use for target connections. Predefined tokens must be used as
-      defined in \ref DebugProtocolEnum "Table: Debug Protocol Type". Default value is \token{swd}.
-    </td>
-    <td>DebugProtocolEnum</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>clock</td>
-    <td>Specifies the default debug clock setting in Hz for a target connection. Default value is \token{10000000}.</td>
-    <td>xs:unsignedInt</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>swj</td>
-    <td>
-      The device is accessed via a CoreSight SWJ-DP capable of switching between Serial Wire Debug (SWD) and JTAG protocols.
-      Default value is \token{true}.
-    </td>
-    <td>xs:bool</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>sdf</td>
-    <td>
-      This attribute specifies the filename and path of the system description file (SFD).
-      The system description file contains information about CoreSight components, there versions and how they
-      are interconnected and hooked to debug and access ports. If not specified an autodetection needs to
-      be initiated by the debugger at connection time.
-    </td>
-    <td>xs:string</td>
-    <td>optional</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-
-\anchor DebugProtocolEnum <b>Table: Debug Protocol Type</b>
-
-The table lists the values for debug protocol types.
-<table class="cmtable" summary="Enumeration: DataPatchAccessTypeEnum">
-  <tr>
-    <th>type=</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td class="XML-Token">jtag</td>
-    <td>
-      JTAG debug protocol.
-    </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">swd</td>
-    <td>
-      ARM Serial Wire Debug (SWD) protocol.
-    </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">cjtag</td>
-    <td>
-      CJTAG concurrent jtag debug protocol.
-    </td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-<hr>
-
-\section element_debugvars /package/devices/family/.../debugvars
-
-Specify \ref DebugVars "global debug access variables". Use these in addition 
-to the \ref PredefinedDebugVars "pre-defined variables" in order to
-query settings from a debug access sequences.<br>
-<br>
-Define debug access variables with statements of the following form.
-\code
-__var uservar = value;  // Comment: Define "uservar" and initialize to "value"
-\endcode
-
-\note 
-- Initialization values must be constant unsigned numbers. No expressions are allowed.
-- User-defined debug access variables are <b>read-only</b> in a debug access sequence.
-- Pre-defined debug access variables cannot be set in this element.
-
-\b Example
-\code
-
-<family Dfamily="EFM32WG Series" Dvendor="Energy Micro:97">
-  ...
-  <debugvars configfile="Debug/EFM32WGxxx.dbgconf" version="1.0">
-  
-    __var __TPIU_pinlocation = 0;  // Select one of four possible TPIU pin locations
-    
-    __var __SWO_pinlocation  = 0;  // Select one of four possible SWO pin locations
-    
-  </debugvars>
-  ...
-  <sequences>
-    <sequence name="TraceStart">
-      ...
-      <block if="__TPIU_pinlocation == 2">
-        ...
-        <!-- Configure device to use pins as defined for TPIU pin location 2 -->
-        ...
-      </block>
-      ...
-    </sequence>
-  </sequences>
-  ...
-  <debug __dp="0" __ap="0"/>
-  ...
-</family>
-\endcode
-
-<p>&nbsp;</p>
-
-<table class="cmtable" summary="Element: debugvars">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_family "family"</td>
-    <td colspan="3">\ref element_family</td>
-  </tr>
-  <tr>
-    <td>\ref element_subFamily "subFamily"</td>
-    <td colspan="3">\ref element_subFamily</td>
-  </tr>
-  <tr>
-    <td>\ref element_device "device"</td>
-    <td colspan="3">\ref element_device</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>configfile</td>
-    <td>
-      Configuration file with path relative to the package base folder (extension *.DBGCONF). This file contains 
-      assignments of a default value to global debug access variables. This file gets copied to the project folder
-      and is editable by the end-user. This file is read by the debugger after processing the global debug access variables.
-      By editing the values of the debug access variables, the end-user effectively controls the behavior of sequences.
-      The file can only assign new values but must not specify any new debug access variables.
-      \ref ConfigWizard "Configuration Wizard Annotations" shall be used within the file to provide a graphical user interface
-      for editing configuration options.
-    </td>
-    <td>xs:string</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>\ref VersionType "version"</td>
-    <td>
-      Version refers to the file version of the configfile attribute. If a configfile is specified the version attribute becomes
-      mandatory. The version shall be incremented if any changes have been made to the global debug access variable names or default
-      values. Based on the version information the tool environment will load a configfile with the version required by the debug
-      description. The end-user may be required to update the settings after updating to a new version.
-    </td>
-    <td>\ref VersionType</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>Pname</td>
-    <td>
-      Reference to a processor identifier as specified for a <b>processor</b> element. If <b>Pname</b> is set
-      for this <b>debugvars</b> element, the debug access variables and <b>configfile</b> of this element
-      are only valid for a debug connection to the referenced processor. Otherwise, they are valid for all processors.
-      <b>This attribute must be set if defining multiple \em debugvars sections for a device.</b>
-      Only alphabetical characters, decimal digits, '-' and '_' are allowed.
-    </td>
-    <td>RestrictedString</td>
-    <td>optional</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>
-
-\b Example: Configuration File 
-\code
-// File: EFM32WGxxx.dbgconf 
-// Version: 1.0
-// <<< Use Configuration Wizard in Context Menu >>>
-// <h>Trace Pin Setup
- // <o> TPIU Pin Location
-//   <0=> Pin Location 0
-//   <1=> Pin Location 1
-//   <2=> Pin Location 2
-//   <3=> Pin Location 3
-// <i> Select TPIU pin location for your board configuration:
-// <i> - Pin Location 0 (TRACECLK: PD7, TRACEDATA0: PD6, TRACEDATA1: PD3,  TRACEDATA2: PD4,  TRACEDATA3: PD5)
-// <i> - Pin Location 1 (TRACECLK: PF8, TRACEDATA0: PF9, TRACEDATA1: PD13, TRACEDATA2: PB15, TRACEDATA3: PF3)
-// <i> - Pin Location 2 (TRACECLK: PC6, TRACEDATA0: PC7, TRACEDATA1: PD3,  TRACEDATA2: PD4,  TRACEDATA3: PD5)
-// <i> - Pin Location 3 (TRACECLK: PA6, TRACEDATA0: PA2, TRACEDATA1: PA3,  TRACEDATA2: PA4,  TRACEDATA3: PA5)
-// <i> Default: Pin Location 0
-__TPIU_pinlocation = 0;
-  
-// <o> SWO Pin Location
-//   <0=> Pin Location 0
-//   <1=> Pin Location 1
-//   <2=> Pin Location 2
-//   <3=> Pin Location 3
-// <i> Select SWO pin location for your board configuration:
-// <i> - Pin Location 0 (SWO: PF2)
-// <i> - Pin Location 1 (SWO: PC15)
-// <i> - Pin Location 2 (SWO: PD1)
-// <i> - Pin Location 3 (SWO: PD2)
-// <i> Default: Pin Location 0
-__SWO_pinlocation = 0;
-  
-// </h>
-// <<< end of configuration section >>>
-\endcode
-
-<p>&nbsp;</p>
-
-\anchor DebugVars <b>Debug Access Variables</b>
-
-Debug access variables hold 64-bit unsigned integer values and are used in debug access
-sequences to query debugger settings and states. They are <b>read-only</b> within a
-sequence except from a limited set of the \ref PredefinedDebugVars "pre-defined debug access variables".
-Use the <b>debugvars</b> element to specify additional user-defined debug access variables.
-
-
-\anchor PredefinedDebugVars <b>Table: Pre-defined Debug Access Variables</b><br>
-A debugger needs to support a set of pre-defined debug access variables. These are
-described in the following table.
-
-<table class="cmtable" summary="ExpressionType: Pre-defined Debug Access Variables">
-  <tr>
-    <th>Variable</th>
-    <th>Access</th>
-    <th>Description</th>
-    <th>Value=</th>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>__protocol</pre></td>
-    <td>Read-Only</td>
-    <td>
-      Debug protocol selection and parameters for target connection.
-    </td>
-    <td>
-      The following bit map applies:<br>
-      - Bit 0..15: Type
-        - \token{0}: Error<br>
-        - \token{1}: JTAG<br>
-        - \token{2}: Serial Wire Debug (SWD)<br>
-        - \token{3}: CJTAG<br>
-      - Bit 16: SWJ-DP
-      - Bit 17..63: Reserved
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>__connection</pre></td>
-    <td>Read-Only</td>
-    <td>
-      Target connection configuration.
-    </td>
-    <td>
-      The following bit map applies:<br>
-      - Bit 0..7: Connection type
-        - \token{0}: Error or target is disconnected.
-        - \token{1}: Connection for target debug.
-        - \token{2}: Connection for downloading application to flash.
-      - Bit 8..15: Reset type.
-        - \token{0}: Error.
-        - \token{1}: Hardware Reset (debugger reset line).
-        - \token{2}: System Reset Request.
-        - \token{3}: Processor Reset Request ("Vector Reset").
-      - Bit 16..63: Reserved
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>__dp</pre></td>
-    <td>Read/Write</td>
-    <td>
-      Debug Port selected for target accesses.<br>
-      This variable is initialized when entering a pre-defined debug access
-      sequence because of a debug event. The initialization value
-      is the <b>__dp</b> as defined for the used <b>debug</b> element.
-    </td>
-    <td>
-      Debug port ID as specified in a <b>debugport</b> element or
-      \token{0} if no <b>debugport</b> element exists.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>__ap</pre></td>
-    <td>Read/Write</td>
-    <td>
-      Access Port selected for target accesses.<br>
-      This variable is initialized when entering a pre-defined debug access
-      sequence because of a debug event. The initialization value
-      is the <b>__ap</b> as defined for the used <b>debug</b> element.
-    </td>
-    <td>
-      Access Port index.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>__traceout</pre></td>
-    <td>Read-Only</td>
-    <td>
-      Activated trace outputs (sinks). Additionally holds information on the selected port width if
-      a parallel trace port is enabled.
-    </td>
-    <td style="white-space: nowrap">
-      The following bit map applies:<br>
-      - Bit 0: Serial Wire Output (SWO) Trace enabled.
-      - Bit 1: Parallel Trace Port enabled.
-      - Bit 2: Trace Buffer enabled.
-      - Bit 3..15: Reserved.
-      - Bit 16..21: Selected Parallel Trace Port size.
-      - Bit 22..63: Reserved.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>__errorcontrol</pre></td>
-    <td>Read/Write</td>
-    <td>
-      Control variable for debug access error handling. All of its bit
-      fields are intialized to \token{0} when entering a pre-defined
-      debug access sequence because of a debug event.
-    </td>
-    <td>
-      The following bit map applies:<br>
-      - Bit 0: Skip errors if set to \token{1}. A debugger must
-               continue the sequence execution.
-      - Bit 1..63: Reserved
-    </td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-
-<hr>
-
-\section element_debugport /package/devices/family/.../debugport
-
-Describes a CoreSight debug port of the device and its capabilities. The element can occur on various
-levels. Use unique ID values for the attribute <b>__dp</b> to distinguish multiple <b>debugport</b>
-elements in later references.<br><br>
-<b>debugport</b> elements are required for targets with multiple debug ports. For devices with a
-single debug port these elements can be omitted. If no <b>debugport</b> element exists the only
-allowed <b>__dp</b> ID in later references is \token{0}.
-
-\b Example
-\code
-
-<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
-  ...
-  <debugconfig default="jtag" clock="10000000" swj="1"/>
-  
-  <debugport __dp="0">
-    <jtag tapindex="0"/>
-    <swd/>
-  </debugport>
-  
-  <debugport __dp="1">
-    <jtag tapindex="1"/> 
-  </debugport>
-  ...
-</family>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: debugport">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_family "family"</td>
-    <td colspan="3">\ref element_family</td>
-  </tr>
-  <tr>
-    <td>\ref element_subFamily "subFamily"</td>
-    <td colspan="3">\ref element_subFamily</td>
-  </tr>
-  <tr>
-    <td>\ref element_device "device"</td>
-    <td colspan="3">\ref element_device</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>__dp</td>
-    <td>
-      Unique ID of this <b>debugport</b>. It must be used consistently in references within the scope of
-      the parent section.
-    </td>
-    <td>xs:unsignedInt</td>
-    <td>required</td>
-  </tr>
-  <tr>
-    <th>Child&nbsp;Elements</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Occurrence</th>
-  </tr>
-  <tr>
-    <td>\ref element_dp_jtag "jtag"</td>
-    <td>Describe JTAG Test Access Port (TAP) properties of this debug port.</td>
-    <td>JtagType</td>
-    <td>0..1</td>
-  </tr>
-  <tr>
-    <td>\ref element_dp_swd "swd"</td>
-    <td>Describe CoreSight Serial Wire Debug Port (SW-DP) properties of this debug port.</td>
-    <td>SwdType</td>
-    <td>0..1</td>
-  </tr>
-  <tr>
-    <td>\ref element_dp_cjtag "cjtag"</td>
-    <td>Describe CJTAG Test Access Port (TAP) properties of this debug port.</td>
-    <td>CjtagType</td>
-    <td>0..1</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-<hr>
-
-
-\section element_dp_jtag /package/devices/family/.../debugport/jtag
-
-Indicates availability of a JTAG interface for the <b>debugport</b> parent element. Its
-attributes allow the manual override of a debugger's automatic JTAG Test Access Port (TAP)
-detection.
-
-\b Example
-\code
-<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
-  ...
-  <debugconfig default="swd" clock="10000000" swj="1"/>
-  
-  <debugport __dp="0">
-    <jtag tapindex="0" idcode="0x4BA00477" irlen="4"/>
-    <swd  idcode="0x2BA01477"/>
-  </debugport>
-  ...
-</family>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: jtag">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_debugport "debugport"</td>
-    <td colspan="3">\ref element_debugport</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>tapindex</td>
-    <td>Specifies the TAP index relative to the JTAG scan chain of this device. A debugger needs to determine the absolute index
-    if the device is part of an extended scan chain. Default value is \token{0}. </td>
-    <td>NonNegativeInteger</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>idcode</td>
-    <td>Specifies the IDCODE of the JTAG TAP. This value overrides the IDCODE read from the target. </td>
-    <td>NonNegativeInteger</td>
-    <td>optional</td>
-  </tr>
-<!--- finalize when there are multidrop devices available (or when we have DS-5 support for that)
-  <tr>
-    <td>targetsel</td>
-    <td>Specifies the value to write to a CoreSight debug port's TARGETSEL register to select this port for connection.
-    The element is required for debug ports with multi-drop support. It is ignored otherwise. <b>(Unsupported)</b></td>
-    <td>NonNegativeInteger</td>
-    <td>optional</td>
-  </tr>
--->
-  <tr>
-    <td>irlen</td>
-    <td>Specifies the instruction register length of the JTAG TAP. This value overrides the instruction register length detected by a debugger. </td>
-    <td>xs:unsignedInt</td>
-    <td>optional</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-<hr>
-
-\section element_dp_swd /package/devices/family/.../debugport/swd
-
-Indicates availability of an ARM Serial Wire Debug (SWD) interface for the <b>debugport</b> parent element.
-Its attributes allow the manual override of SWD port characteristics as read from the target and provide
-information for the port selection in a system with multi-drop SWD support.
-
-\b Example
-\code
-<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
-  ...
-  <debugconfig default="swd" clock="10000000" swj="1"/>
-  
-  <debugport __dp="0">
-    <jtag tapindex="0" idcode="0x4BA00477" irlen="4"/>
-    <swd idcode="0x2BA01477"/>
-  </debugport>
-  ...
-</family>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: swd">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_debugport "debugport"</td>
-    <td colspan="3">\ref element_debugport</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>idcode</td>
-    <td>Specifies the IDCODE of the SWD port. It overrides the value read from the port's IDCODE register. </td>
-    <td>NonNegativeInteger</td>
-    <td>optional</td>
-  </tr>
-<!--- finalize when there are multidrop devices available (or when we have DS-5 support for that)
-  <tr>
-    <td>targetsel</td>
-    <td>Specifies the value to write to a CoreSight debug port's TARGETSEL register to select this port for connection.
-    The element is required for debug ports with multi-drop SWD support. It is ignored otherwise. <b>(Unsupported)</b></td>
-    <td>NonNegativeInteger</td>
-    <td>optional</td>
-  </tr>
---->
-</table>
-
-<p>&nbsp;</p>		
-<hr>
-
-\section element_dp_cjtag /package/devices/family/.../debugport/cjtag
-
-Indicates availability of a CJTAG interface for the <b>debugport</b> parent element. Its
-attributes allow the manual override of a debugger's automatic CJTAG Test Access Port (TAP)
-detection.
-
-\b Example
-\code
-<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
-  ...
-  <debugconfig default="swd" clock="10000000" swj="1"/>
-  
-  <debugport __dp="0">
-    <cjtag tapindex="0" idcode="0x4BA00477" irlen="4"/>
-    <swd  idcode="0x2BA01477"/>
-  </debugport>
-  ...
-</family>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: cjtag">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_debugport "debugport"</td>
-    <td colspan="3">\ref element_debugport</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>tapindex</td>
-    <td>Specifies the TAP index relative to the JTAG scan chain of this device. A debugger needs to determine the absolute index
-    if the device is part of an extended scan chain. Default value is \token{0}. </td>
-    <td>NonNegativeInteger</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>idcode</td>
-    <td>Specifies the IDCODE of the JTAG TAP. This value overrides the IDCODE read from the target. </td>
-    <td>NonNegativeInteger</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>irlen</td>
-    <td>Specifies the instruction register length of the JTAG TAP. This value overrides the instruction register length detected by a debugger. </td>
-    <td>xs:unsignedInt</td>
-    <td>optional</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-<hr>
-
-\section element_sequences /package/devices/family/.../sequences
-
-Container for debug access sequences for this device.
-
-\b Example
-\code
-<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
-  ...
-  <sequences>
-    ...
-    <sequence name="DebugCoreStart" Pname="Cortex-M0">
-      ...
-    </sequence>
-    ...
-    <sequence name="ResetSystem" Pname="Cortex-M4">
-      ...
-    </sequence>
-    ...
-    <sequence name="TraceStart" Pname="Cortex-M4">
-      ...
-    </sequence>
-    ...
-  </sequences>
-  ...
-</family>
-\endcode
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: sequences">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_family "family"</td>
-    <td colspan="3">\ref element_family</td>
-  </tr>
-  <tr>
-    <td>\ref element_subFamily "subFamily"</td>
-    <td colspan="3">\ref element_subFamily</td>
-  </tr>
-  <tr>
-    <td>\ref element_device "device"</td>
-    <td colspan="3">\ref element_device</td>
-  </tr>
-  <tr>
-    <th>Child&nbsp;Elements</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Occurrence</th>
-  </tr>
-  <tr>
-    <td>\ref element_sequence "sequence"</td>
-    <td>
-      Describe a debug access sequence.
-    </td>
-    <td>SequenceType</td>
-    <td>1..*</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-<hr>
-
-\section element_sequence /package/devices/family/.../sequences/sequence
-
-Describes a Debug Access Sequence which contains <b>control</b> and
-<b>block</b> elements. <b>block</b> elements contains statements
-including calls to \ref DebugFunctions "Debug Access Functions". A Debug
-Access Sequence overrides or extends the default functionality of a development tool.
-Refer to \ref usage_of_sequences for details.<br>
-
-\note
-- <b>control</b> elements can contain other <b>control</b> and <b>block</b>
-  elements. <b>The maximum nesting of \em control elements is 10.</b>
-
-\b Example
-\code
-<family Dfamily="Generic Family" Dvendor="Generic:5">
-  ...
-  <sequences>
-    ...
-    <sequence name="UserSequence">
-      
-      <block info="Define variables and do debug accesses">
-        __var tpWidth = (__traceout &amp; 0x003F0000) >> 16;
-        ...
-      </block>
-      
-      <control if="__traceout &amp; 0x2" info="Parallel Trace Port enabled">
-      
-        <block>
-          // Do something generic for parallel trace port trace
-          ...
-        </block>
-        
-        <control if="tpWidth == 1" info="Configure device for 1-bit TPIU trace.">
-        
-          <block>
-            // Do debug accesses
-            ...
-          </block>
-          
-        </control>
-        
-        <control if="tpWidth == 2" info="Configure device for 2-bit TPIU trace.">
-        
-          <block>
-            // Do debug accesses
-            ...
-          </block>
-          
-        </control>
-        
-        <control if="tpWidth == 4" info="Configure device for 4-bit TPIU trace.">
-        
-          <block>
-            // Do debug accesses
-            ...
-          </block>
-          
-        </control>
-
-      </control>
-      ...
-    </sequence>
-    ...
-  </sequences>
-  ...
-</family>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: sequence">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_sequences "sequences"</td>
-    <td colspan="3">\ref element_sequences</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>name</td>
-    <td>Name of the Debug Access Sequence:<br>
-    - Pre-defined names are executed by the development tool described under \ref usage_of_sequences.
-    - Any Debug Access Sequence can be executed the \ref DebugFunctions "debug access function" <b>Sequence</b>.
-    </td>
-    <td>xs:string</td>
-    <td>required</td>
-  </tr>
-  <tr>
-    <td>Pname</td>
-    <td>
-      Reference to a processor identifier as specified for a <b>processor</b> element. If <b>Pname</b> is set
-      for this <b>sequence</b> element, a debugger executes the debug access sequence only for a debug connection
-      to the referenced processor. Otherwise, it is executed for all processors.
-      <b>This attribute must be set if defining multiple implementations of the same debug access sequence.</b>
-      Only alphabetical characters, decimal digits, '-' and '_' are allowed. 
-    </td>
-    <td>RestrictedString</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>disable</td>
-    <td>Disables execution of the \ref default_sequences "Default Debug Access Sequence".</td>
-    <td>xs:boolean</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>info</td>
-    <td>Descriptive text to display for example for error diagnostics.</td>
-    <td>xs:string</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <th>Child&nbsp;Elements</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Occurrence</th>
-  </tr>
-  <tr>
-    <td>\ref element_seq_control "control"</td>
-    <td>
-      Describe a debug access sequence flow control element.
-    </td>
-    <td>SequenceControlType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_seq_block "block"</td>
-    <td>
-      Describe a block of debug accesses.
-    </td>
-    <td>SequenceBlockType</td>
-    <td>0..*</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-
-\anchor sequences_names <b>Table: Pre-defined Debug Access Sequences</b>
-
-The following table list the Pre-defined Debug Access Sequences.
-For sequences that are not specified in a <b>sequence</b> element \ref default_sequences are executed.
-Refer to \ref usage_of_sequences Usage for more information about the execution of these sequences.
-
-<table class="cmtable" summary="Enumeration: SequenceNameEnum">
-  <tr>
-    <th>name=</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td class="XML-Token">\ref DebugPortSetup</td>
-    <td>Prepare the target debug port for connection; is executed before acquiring access to the debug port.<br>
-	May include for example an SWJ-DP switch sequence as defined in the ARM Debug Interface (ADI) Architecture Specification.<br>
-    <b>This sequence must not contain debug port/access port register and target memory accesses other than:</b>
-    - <b>Reading the \em DPIDR debug port register to release an SWD connection from its line reset.</b>
-    - <b>Writing the \em TARGETSEL debug port register (SWD protocol v2).</b>
-    </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">\ref DebugPortStart</td>
-    <td>Connect to the target debug port and power it up; is executed after DebugPortSetup.<br>
-	The parent <b>debugport</b> is default debug port for this sequence.<br>
-    <b>This sequence must not contain access port register and target memory accesses.</b></td>
-  </tr>
-  <tr>
-    <td class="XML-Token">\ref DebugPortStop</td>
-    <td>Power down and disconnect from target debug port.<br>
-    Executed as last step during target disconnect unless another debugger connection to this port is active. The parent
-    <b>debugport</b> is default debug port for this sequence.<br>
-    <b>This sequence must not contain access port register and target memory accesses.</b></td>
-  </tr>
-  <tr>
-    <td class="XML-Token">DebugDeviceUnlock</td>
-    <td>Check if the device is in a locked state and unlock it. Use <b>query</b> command elements
-    for user confirmation.<br>
-    Executed after having powered up the debug port.</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">\ref DebugCoreStart</td>
-    <td>Initialize core debug system.<br>
-    Executed after having connected and powered up the default debug port for the connection.</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">\ref DebugCoreStop</td>
-    <td>Uninitialize core debug system.<br>
-    Executed as last step during disconnect before powering down any debug ports no longer required for
-    concurrent connections.</td>
-  </tr>
-  <tr>
-    <td class="XML-Token">DebugCodeMemRemap</td>
-    <td>Remap memory to execution location.<br>
-    Executed before verifying memory content after flash programming. This is required to replicate a memory remap of a device bootloader (that is not executed during debug connection).
-    </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">\ref ResetSystem</td>
-    <td>Execute a system-wide reset via software mechanisms.
-    </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">\ref ResetProcessor</td>
-    <td>Execute a processor reset via software mechanisms.
-    </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">\ref ResetHardware</td>
-    <td>Execute a system-wide reset via the dedicated debugger reset line, e.g. nRST.
-  </tr>
-  <tr>
-    <td class="XML-Token">\ref ResetHardwareAssert</td>
-    <td>Assert a system-wide reset via the dedicated debugger reset line, e.g. nRST.
-  </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">\ref ResetHardwareDeassert</td>
-    <td>Deassert a system-wide reset via the dedicated debugger reset line, e.g. nRST.
-    </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">\ref ResetCatchSet</td>
-    <td>Executed before a target reset to configure the vector catch to stop code execution after the reset.<br>
-    The implementation of <b>ResetCatchSet</b> requires an implementation of <b>ResetCatchClear</b>
-    to free any hardware resources used for stopping the core.
-    </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">\ref ResetCatchClear</td>
-    <td>Executed after a target reset to free hardware resources allocated by <b>ResetCatchSet</b>.
-    </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">FlashEraseDone</td>
-    <td>
-    Executed after erasing flash memory.
-    </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">FlashProgramDone</td>
-    <td>
-    Eexecuted after programming flash memory.
-    </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">TraceStart</td>
-    <td>Enable target trace capture.<br>
-    Executed before the debugger powers up and configures standard CoreSight trace components, e.g. after the initial target connection
-    as well as after a system-wide reset.
-    </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">TraceStop</td>
-    <td>Disable target trace capture.<br>
-    Executed after the debugger disabled and powered down standard CoreSight trace components.
-    </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">RecoverySupportStart</td>
-    <td>Executed before step or run command to support recovery from a lost target connection, e.g. after a low power mode.
-    </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">RecoverySupportStop</td>
-    <td>Executed after step or run command in context of the <b>RecoverySupportStart</b> sequence.
-    </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">RecoveryAcknowledge</td>
-    <td>Debugger acknowledge after recovering from a lost target connection. Can be executed independently
-    from a <b>RecoverySupportStart</b> sequence.
-    </td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>
-<hr>
-
-\section element_seq_control /package/devices/family/.../sequences/sequence/control
-
-Describes flow control like <b>if</b> and <b>while</b> blocks for debug access sequences.
-
-\b Example
-\code
-<family Dfamily="Generic Family" Dvendor="Generic:5">
-  ...
-  <sequences>
-    ...
-    <sequence name="UserSequence">
-      ...
-      <block info="Define variables and do debug accesses">
-        __var doIfBlock      = 1;
-        __var whileCondition = 1;
-        ...
-      </block>
-      ...
-      <control if="doIfBlock">
-      
-        <block>
-          // Do debug accesses
-          ...
-        </block>
-        
-      </control>
-      ...
-      <control while="whileCondition" timeout="5000">
-      
-        <block>
-          // Execute while "whileCondition" different from '0' with a timeout of 5ms
-          whileCondition = 0;
-        </block>
-        
-      </control>
-      ...
-    </sequence>
-    ...
-  </sequences>
-  ...
-</family>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: control">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_sequence "sequence"</td>
-    <td colspan="3">\ref element_sequence</td>
-  </tr>
-  <tr>
-    <td>\ref element_seq_control "control"</td>
-    <td colspan="3">\ref element_seq_control</td>
-  </tr>
-  <tr>
-    <th>Attribute</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>if</td>
-    <td>
-      Expression describing the condition under which to execute this sequence block.
-      The block is skipped if the condition resolved to \token{false}. Defaults to
-      \token{true} if not set.
-      Refer to \ref ExpressionType "Expression Rules" for the syntax.
-    </td>
-    <td>ExpressionType</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>while</td>
-    <td>
-      Expression describing a while-condition. The execution of the block contents is
-      repeated while the condition resolves to \token{true}, or until an optional
-      <b>timeout</b> is reached.
-      Refer to \ref ExpressionType "Expression Rules" for the syntax.
-    </td>
-    <td>ExpressionType</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>timeout</td>
-    <td>
-      Timeout in microseconds for a <b>block</b> with a <b>while</b> condition. A debugger must
-      extend the timeout to the closest possible time granularity. If the timeout is reached,
-      the current iteration including a last evaluation of the <b>while</b> condition must
-      finish. A value of \token{0} disables the timeout.<br>
-      This attribute defaults to \token{0}.
-    </td>
-    <td>xs:unsignedInt</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>info</td>
-    <td>Descriptive text to display for example for error diagnostics.</td>
-    <td>xs:string</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <th>Child&nbsp;Elements</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Occurrence</th>
-  </tr>
-  <tr>
-    <td>\ref element_seq_control "control"</td>
-    <td>
-      Describe a debug access sequence flow control element.
-    </td>
-    <td>SequenceControlType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_seq_block "block"</td>
-    <td>
-      Describe a block of debug accesses.
-    </td>
-    <td>SequenceBlockType</td>
-    <td>0..*</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>
-<hr>
-
-\section element_seq_block /package/devices/family/.../sequences/sequence/block
-
-Describes a block of debug accesses. See \ref DebugSyntaxRules "Debug Access Syntax Rules"
-for details on the allowed syntax of the block contents.
-
-\b Example
-\code
-<family Dfamily="Generic Family" Dvendor="Generic:5">
-  ...
-  <sequences>
-    ...
-    <sequence name="UserSequence">
-      ...
-      <block info="Define condition variales for later use in block elements.">
-        // Variable definition by __var keyword
-        __var doIfBlock      = 1;
-        __var whileCondition = 1;
-      </block>
-      ...
-    </sequence>
-    ...
-  </sequences>
-  ...
-</family>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: block">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_sequence "sequence"</td>
-    <td colspan="3">\ref element_sequence</td>
-  </tr>
-  <tr>
-    <td>\ref element_seq_control "control"</td>
-    <td colspan="3">\ref element_seq_control</td>
-  </tr>
-  <tr>
-    <th>Attribute</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>atomic</td>
-    <td>
-      Instruct the debugger to execute the block contents atomically; a debugger needs to
-      download and buffer all debug accesses to the debug probe and finish the
-      execution without further communication to the host PC. If a debugger cannot
-      support an atomic block it must abort the execution of the debug access sequence.<br>
-      </td>
-    <td>xs:boolean</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>info</td>
-    <td>Descriptive text to display for example for error diagnostics.</td>
-    <td>xs:string</td>
-    <td>optional</td>
-  </tr>
-</table>
-
-<b>Atomic Blocks:</b>
-- Do not use debug access results for subsequent accesses in the same atomic block.
-- Support for atomic blocks is highly debugger dependent. Keep them as short and simple as possible
-to address a wide range of debuggers.
-- <b>Query</b> and <b>Sequence</b> debug access functions must not be used in an atomic block.
-
-<p>&nbsp;</p>
-
-\anchor DebugSyntaxRules <b>Debug Access Syntax Rules</b>
-
-Debug accesses are described in <b>block</b> elements of a debug access sequence (<b>sequence</b> element).
-The following syntax is used for this purpose:
-- The contents of a <b>block</b> element is a series of statements.
-- Each statement must begin in a new line and is terminated by a \token{;} character.
-- A typical statement consists of variable, followed by a \token{=} character and an expression, where the
-\token{=} character is an assignment of the \ref ExpressionType "expression" result to the variable:
-\code
-variable = expression;
-\endcode
-- Alternatively, a statement can be a sole \ref ExpressionType "expression" without storing its result
-to a variable.
-\code
-expression;
-\endcode
-- Comments begin with two slashes (\token{//}) and end with a linebreak:
-\code
-// Whole line is a comment
-variable = expression;  // Comment appended to statement
-\endcode
-- Variables must be defined using the keyword \token{__var}. The definition must include an initalization
-  of the variable:
-\code
-__var variable = 0;
-\endcode
-- Variables can be defined only once within a scope. Scopes beging with entering a debug access
-  sequence or a <b>control</b> element. They are extended to child <b>control</b> elements.
-  Variables of a parent scope can be modified. Leaving a scope destroys all variables defined in it.<br>
-  <b>\em block elements do not begin a new scope.</b>
-\code
-<sequence name="MySequence">
-  
-  <block info="Block 1">
-    __var condvar = 1;
-    __var myvar1  = 5;
-    __var myvar2  = 0;
-  </block>
-  
-  <control if="condvar">
-    <block>
-      // __var myvar1 = 2;      // Redefinition, not allowed!
-      __var myvar3 = 2;
-      myvar2 = myvar1 + myvar3; // Assign value (5+2) = 7
-    </block>
-  </control>
-  
-  <block info="Block 2">
-    myvar1 = myvar2 + 1;  // Variable myvar1 holds the value '8' after this statement
-    // myvar2 = myvar3;   // myvar3 does not exist in this scope, not allowed!
-  </block>
-  
-</sequence>
-\endcode
-- The debug access variables <b>__dp</b>, <b>__ap</b>, and <b>__errorcontrol</b> can be modified
-  within a debug access sequence. An assigned value is held until leaving the sequence. Calling
-  another sequence by the <b>Sequence</b> debug access function will push their values on a
-  sequence execution stack. The values are restored when returning from such a call.
-
-
-\anchor ExpressionType <b>Expression Rules</b>
-
-Expressions are used in various places to describe one of the following:
-- A value as assigned in a \ref DebugSyntaxRules "debug access statement".
-- A condition to use in the <b>if</b> attribute of a <b>control</b> element.
-- A condition to use in the <b>while</b> attribute of a <b>control</b> element.
-- A parameter to a debug access function as described below.
-
-An expression may consist of the following:
-- Constant numbers in decimal and hexadecimal representation (prefix \token{0x}).
-- Arithmetic operators such as \token{+}, \token{-}, \token{*}, \token{/}, and \token{%}.
-- Bit-arithmetic operators such as \token{&}, \token{|}, \token{~}, \token{^}, \token{>>}, and \token{<<}.
-- Comparison-operators such as \token{==}, \token{!=}, \token{<}, \token{>}, \token{<=}, and \token{>=}.
-- Logic operators such as \token{!}, \token{&&}, \token{||}, and \token{==}.
-- Conditional expression operations like: \code (x < y) ? a : b \endcode
-- Precedence of sub-expressions is indicated by brackets (\token{(}, \token{)}). C-like precedence applies 
-  if brackets are omitted.
-- References to \ref DebugVars "debug access variables" for evaluating debug settings.
-- Calls to \ref DebugFunctions "debug access functions".
-
-\note
-- All values used in expressions resolve to 64-bit unsigned integer values.
-- All logic-operations and comparisons resolve to the value \token{1} if true, to \token{0} otherwise.
-- XML prohibits the use of the characters \token{&}, \token{<}, and \token{>}. Use the corresponding
-  XML entity names instead: \token{&amp;amp;}, \token{&amp;lt;}, and \token{&amp;gt;}.
-
-<p>&nbsp;</p>
-
-\anchor DebugFunctions <b>Table: Debug Access Functions</b>
-
-Debug access functions can be called in expressions in order to interact with the target device
-and the user. Parameters to functions can again be expressions.<br>
-By default, a debugger must abort the execution of a debug access sequence if a function call fails.
-However, this behavior can be controlled from a sequence by the <b>__errorcontrol</b> 
-\ref DebugVars "debug access variable".<br>
-<br>
-The following table describes the existing debug access functions, their parameters and the
-debug access variables which are evaluated for the function call.
-
-<table class="cmtable" summary="ExpressionType: debug access functions">
-  <tr>
-    <th>Function</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>Sequence("name")</pre></td>
-    <td>
-      Execute a debug access sequence.
-      Calling a sequence by this function causes the modifiable debug access variables <b>__dp</b>,
-      <b>__ap</b>, and <b>__errorcontrol</b> to be pushed on a sequence execution stack. Returning
-      from such a call will restore the state of these variables.<br>
-      <br>
-      <b>Parameters:</b><br>
-      - name: Name of the sequence to execute. It must be enclosed by quotes.
-      
-      <b>Return Value:</b><br>
-      Always returns \token{0}.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>Read8(addr)</pre></td>
-    <td>
-      Read an 8-bit value from target memory.
-      <b>A device must support native 8-bit memory accesses for this function to succeed.</b><br>
-      <br>
-      <b>Parameters:</b><br>
-      - addr: Memory address to read from.
-      
-      <b>Debug Access Variables:</b><br>
-      - __dp: The debug port to use for this memory access.
-      - __ap: The access port to use for this memory access.
-      
-      <b>Return Value:</b><br>
-      The 8-bit value as read from target memory.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>Read16(addr)</pre></td>
-    <td>
-      Read an 16-bit value from target memory.
-      <b>A device must support native 16-bit memory accesses for this function to succeed.</b><br>
-      <br>
-      <b>Parameters:</b><br>
-      - addr: Memory address to read from.
-      
-      <b>Debug Access Variables:</b><br>
-      - __dp: The debug port to use for this memory access.
-      - __ap: The access port to use for this memory access.
-
-      <b>Return Value:</b><br>
-      The 16-bit value as read from target memory.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>Read32(addr)</pre></td>
-    <td>
-      Read an 32-bit value from target memory.
-      <b>A device must support native 32-bit memory accesses for this function to succeed.</b><br>
-      <br>
-      <b>Parameters:</b><br>
-      - addr: Memory address to read from.
-      
-      <b>Debug Access Variables:</b><br>
-      - __dp: The debug port to use for this memory access.
-      - __ap: The access port to use for this memory access.
-
-      <b>Return Value:</b><br>
-      The 32-bit value as read from target memory.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>Read64(addr)</pre></td>
-    <td>
-      Read an 64-bit value from target memory.
-      <b>A device must support native 64-bit memory accesses for this function to succeed.</b><br>
-      <br>
-      <b>Parameters:</b><br>
-      - addr: Memory address to read from.
-      
-      <b>Debug Access Variables:</b><br>
-      - __dp: The debug port to use for this memory access.
-      - __ap: The access port to use for this memory access.
-      
-      <b>Return Value:</b><br>
-      The 64-bit value as read from target memory.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>ReadAP(addr)</pre></td>
-    <td>
-      Read a 32-bit value from an access port register.<br>
-      <br>
-      <b>Parameters:</b><br>
-      - addr: AP register address to read from. Addresses larger than \token{0xF} automatically cause
-      an AP register bank switch. 
-      
-      <b>Debug Access Variables:</b><br>
-      - __dp: The debug port to use for this memory access.
-      - __ap: The access port to use for this memory access.
-      
-      <b>Return Value:</b><br>
-      The 32-bit value as read from the AP register.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>ReadDP(addr)</pre></td>
-    <td>
-      Read a 32-bit value from a debug port register.<br>
-      <br>
-      <b>Parameters:</b><br>
-      - addr: DP register address to read from.
-      
-      <b>Debug Access Variables:</b><br>
-      - __dp: The debug port to use for this memory access.
-
-      <b>Return Value:</b><br>
-      The 32-bit value as read from the DP register.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>Write8(addr, val)</pre></td>
-    <td>
-      Write an 8-bit value to target memory.
-      <b>A device must support native 8-bit memory accesses for this function to succeed.</b><br>
-      <br>
-      <b>Parameters:</b><br>
-      - addr: Memory address to write to.
-      - val: Value to write.
-      
-      <b>Debug Access Variables:</b><br>
-      - __dp: The debug port to use for this memory access.
-      - __ap: The access port to use for this memory access.
-
-      <b>Return Value:</b><br>
-      Always returns \token{0}.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>Write16(addr, val)</pre></td>
-    <td>
-      Write a 16-bit value to target memory.
-      <b>A device must support native 16-bit memory accesses for this function to succeed.</b><br>
-      <br>
-      <b>Parameters:</b><br>
-      - addr: Memory address to write to.
-      - val: Value to write.
-      
-      <b>Debug Access Variables:</b><br>
-      - __dp: The debug port to use for this memory access.
-      - __ap: The access port to use for this memory access.
-
-      <b>Return Value:</b><br>
-      Always returns \token{0}.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>Write32(addr, val)</pre></td>
-    <td>
-      Write a 32-bit value to target memory.
-      <b>A device must support native 32-bit memory accesses for this function to succeed.</b><br>
-      <br>
-      <b>Parameters:</b><br>
-      - addr: Memory address to write to.
-      - val: Value to write.
-      
-      <b>Debug Access Variables:</b><br>
-      - __dp: The debug port to use for this memory access.
-      - __ap: The access port to use for this memory access.
-
-      <b>Return Value:</b><br>
-      Always returns \token{0}.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>Write64(addr, val)</pre></td>
-    <td>
-      Write a 64-bit value to target memory.
-      <b>A device must support native 64-bit memory accesses for this function to succeed.</b><br>
-      <br>
-      <b>Parameters:</b><br>
-      - addr: Memory address to write to.
-      - val: Value to write.
-      
-      <b>Debug Access Variables:</b><br>
-      - __dp: The debug port to use for this memory access.
-      - __ap: The access port to use for this memory access.
-
-      <b>Return Value:</b><br>
-      Always returns \token{0}.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>WriteAP(addr, val)</pre></td>
-    <td>
-      Write a 32-bit value to an access port register.
-      Addresses larger than 0xF automatically cause an AP register bank switch.<br>
-      <br>
-      <b>Parameters:</b><br>
-      - addr: Memory address to write to.
-      - val: Value to write.
-      
-      <b>Debug Access Variables:</b><br>
-      - __dp: The debug port to use for this memory access.
-      - __ap: The access port to use for this memory access.
-
-      <b>Return Value:</b><br>
-      Always returns \token{0}.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>WriteDP(addr, val)</pre></td>
-    <td>
-      Write a 32-bit value to a debug port register.<br>
-      <br>
-      <b>Parameters:</b><br>
-      - addr: Memory address to write to.
-      - val: Value to write.
-      
-      <b>Debug Access Variables:</b><br>
-      - __dp: The debug port to use for this memory access.
-
-      <b>Return Value:</b><br>
-      Always returns \token{0}.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>DAP_Delay(delay)</pre></td>
-    <td>
-      Debug probe command to wait for a specific delay.<br>
-      <br>
-      <b>Parameters:</b><br>
-      - delay: Wait time in microseconds.
-
-      <b>Return Value:</b><br>
-      Always returns \token{0}.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>DAP_WriteABORT(value)</pre></td>
-    <td>
-      Debug probe command to write an abort request to the CoreSight
-      ABORT register of the target debug port.<br>
-      <br>
-      <b>Parameters:</b><br>
-      - value: 32-bit value to write into the CoreSight ABORT register.
-      
-      <b>Debug Access Variables:</b><br>
-      - __dp: The debug port to use for this memory access.
-
-      <b>Return Value:</b><br>
-      Always returns \token{0}.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>DAP_SWJ_Pins(pinout, pinselect, pinwait)</pre></td>
-    <td>
-      Debug proble command to monitor and control the I/O Pins including the nRESET
-      device reset line.<br>
-      <b>I/O Pin Mapping</b> for <b>pinout</b>, <b>pinselect</b>, and <b>pinwait</b>:
-        - Bit 0: SWCLK/TCK
-        - Bit 1: SWDIO/TMS
-        - Bit 2: TDI
-        - Bit 3: TDO
-        - Bit 5: nTRST
-        - Bit 7: nRESET
-      
-      <br>
-      The <b>pinwait</b> time is useful in systems where the nRESET pin is implemented as open-drain
-      output. After nRESET is de-asserted by the debugger, external circuit may still hold the
-      target Device under reset for a time. Using the <b>pinwait</b> time, the debugger may monitor
-      selected I/O Pins and wait until they the expected value appears or a timeout expires.<br>
-      <br>
-      <b>Parameters:</b><br>
-      - pinout: Value for selected output pins.
-      - pinselect: Selects which output pins will be modified.
-      - pinwait: Wait timeout for the selected output to stabilize. A debugger must extend this timeout
-                 to the closest possible time granularity.
-        - 0 = no wait
-        - 1 .. 3000000 = time in microseconds (max 3s)
-
-      <b>Return Value:</b><br>
-      The state of the I/O Pins at the end of this operation. If a debugger is not
-      capable of monitoring the I/O Pins, it must return a value of \token{0xFFFFFFFF}.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>DAP_SWJ_Clock(val)</pre></td>
-    <td>
-      Debug probe command to set the clock frequency for JTAG and SWD communication mode.<br>
-      <br>
-      <b>Parameters:</b><br>
-      - val: Maximum SWD/JTAG Clock (SWCLK/TCK) value in Hz.
-
-      <b>Return Value:</b><br>
-      Always returns \token{0}.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>DAP_SWJ_Sequence(cnt, val)</pre></td>
-    <td>
-      Debug probe command to generate required SWJ sequences, e.g. for SWD/JTAG Reset, SWD<->JTAG
-      switch and Dormant operation.<br>
-      <br>
-      <b>Parameters:</b><br>
-      - cnt: Number of bits in sequence: 1..64. Larger sequences need to be implemented by multiple
-        subsequent <b>DAP_SWJ_Sequence</b> calls. Such a sequence of <b>DAP_SWJ_Sequence</b> commands
-        must be encapsulated in an atomic <b>block</b> to ensure correct execution.
-      - val: Sequence generated on SWDIO/TMS (with clock \@SWCLK/TCK), LSB transmitted first.
-      
-      <b>Return Value:</b><br>
-      Always returns \token{0}.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>DAP_JTAG_Sequence(cnt, tms, tdi)</pre></td>
-    <td>
-      Debug probe command to generate a JTAG sequence with fixed TMS value and capture TDO.<br>
-      <br>
-      <b>Parameters:</b><br>
-      - cnt: Length of the JTAG sequence (number of TCK cycles and TDI bits): 1..64
-      - tms: Fixed TMS value: 0..1
-      - tdi: Data generated on TDI with one bit per TCK cycle, LSB transmitted first.
-      
-      <b>Return Value:</b><br>
-      Data captured from TDO with one bit per TCK cycle, LSB captured first and padded with \token{0}s.
-    </td>
-  </tr>
-  <tr>
-    <td style="white-space: nowrap"><pre>Query(type, "message", default)</pre></td>
-    <td>
-      Query user input. The sequence execution stalls depending on the used <b>type</b>. If the
-      debugger runs in a batch mode, this function returns the value <b>default</b>.<br>
-      <br>
-      <b>Parameters:</b><br>
-      - type: Query type. Can be one of:
-        - \token{0} : <b>Query_Ok</b>, displays an informative message which has to be confirmed by the user. This
-              type allows the result <b>OK</b>.
-        - \token{1} : <b>Query_YesNo</b>, displays a query with the allowed results <b>Yes</b> and <b>No</b>.
-        - \token{2} : <b>Query_YesNoCancel</b>, displays a query with the allowed results <b>Yes</b>, <b>No</b>,
-              and <b>Cancel</b>.
-        - \token{3} : <b>Query_OkCancel</b>, displays a query with the allowed results <b>OK</b> and <b>Cancel</b>.
-      - message: A constant string with the query message to display. It must not be an expression and it must be
-                 enclosed by quotes.
-      - default: The default value to return if the debugger runs in batch mode. See <b>Return Values</b>
-                 for a list of allowed values.
-      
-      <b>Return Value:</b><br>
-      The result of the query. The user input maps to the following numbers:
-      - Error  : \token{0}
-      - OK     : \token{1}
-      - Cancel : \token{2}
-      - Yes    : \token{3}
-      - No     : \token{4}
-      
-    </td>
-  </tr>
-</table>
-
-\note
-- Target memory access functions must perform a debug access of the size indicated by their name.
-  The target system must support debug accesses of this size.
-- Results of all functions are casted to 64-bit unsigned integer values.
-- Some target access functions determine the used debug and access port by the current values of
-  the <b>__dp</b> and <b>__ap</b> debug access variables. If a target access requires a different
-  debug or access port than the default ones, it must change these values. This change is held
-  until finishing the sequence the change has occurred in.
-
-<p>&nbsp;</p>
-<hr>
-
-
-\section element_debug /package/devices/family/.../debug
-
-Describes configuration settings, default values, and patches for data accesses for a debug connection. Multiple <b>debug</b>
-elements can be defined which are either specific to a processor identified by attribute <b>Pname</b>, or which apply
-to all connections.
-
-\b Example
-\code
-<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
-  ...
-  <debug Pname="Cortex-M4" __dp="0" __ap="0" svd="SVD/LPC43xx.svd">
-    ...
-  </debug>
-  ...
-  <debug Pname="Cortex-M0" __dp="1" __ap="0" svd="SVD/LPC43xx.svd">
-    ...
-  </debug>
-  ...
-</family>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: debug">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_family "family"</td>
-    <td colspan="3">\ref element_family</td>
-  </tr>
-  <tr>
-    <td>\ref element_subFamily "subFamily"</td>
-    <td colspan="3">\ref element_subFamily</td>
-  </tr>
-  <tr>
-    <td>\ref element_device "device"</td>
-    <td colspan="3">\ref element_device</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>Pname</td>
-    <td>
-      Reference to a processor identifier as specified for a <b>processor</b> element. If <b>Pname</b> is set
-      this <b>debug</b> element's settings and data patches only apply for target connections to the referenced
-      processor. Otherwise, they apply for all processors.
-      <b>This attribute must be set if defining multiple \em debug elements within the same section.</b>
-      Only alphabetical characters, decimal digits, '-' and '_' are allowed.
-    </td>
-    <td>RestrictedString</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>__dp</td>
-    <td>
-      Default debug port ID to use for target accesses in this debug connection. The allowed values are
-      defined in <b>debugport</b> elements for this device. If no <b>debugport</b> element exists, the only
-      allowed value is \token{0}.<br>
-      The debug access variable <b>__dp</b> is initialized to this value when entering a pre-defined debug access
-      sequence because of a debug event.<br>
-      This attribute defaults to \token{0} if not set.
-    <td>xs:unsignedInt</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>__ap</td>
-    <td>
-      Default access port index to use for target accesses in this debug connection.<br>
-      The debug access variable <b>__ap</b> is initialized to this value when entering a pre-defined debug access
-      sequence because of a debug event.<br>
-      This attribute defaults to \token{0} if not set.
-    </td>
-    <td>xs:unsignedInt</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>svd</td>
-    <td>The system viewer description (*.SVD) file to load for this debug connection. The file path is relative
-    to the package base folder.</td>
-    <td>xs:string</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <th>Child&nbsp;Elements</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Occurrence</th>
-  </tr>
-  <tr>
-    <td>\ref element_dbg_datapatch "datapatch"</td>
-    <td>Define a patch to apply for data reads in this debug connection.
-    </td>
-    <td>DataPatchType</td>
-    <td>0..*</td>
-  </tr>
-
-</table>
-
-<p>&nbsp;</p>		
-<hr>
-
-\section element_dbg_datapatch /package/devices/family/.../debug/datapatch
-
-Describes a patch a debugger shall apply when reading data from the device.
-
-\b Example
-\code
-<family Dfamily="LPC800 Series" Dvendor="NXP:11">
-  ...
-  <debug svd="SVD\LPC800.svd">
-    ...
-    <datapatch type="Mem" __ap="0" address="0x1400000C" value="0x10000000" mask="0xFFFFFFFF" info="Patch MTB BASE register"/>
-    ...
-  </debug>
-  ...
-</family>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: datapatch">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_debug "debug"</td>
-    <td colspan="3">\ref element_debug</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>type</td>
-    <td>
-      The type of data access to patch. Predefined tokens must be used as defined in \ref DataPatchAccessTypeEnum "Table: Data Patch Access Type".
-      This attribute defaults to \token{Mem} if not set.
-    </td>
-    <td>DataPatchAccessTypeEnum</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>__dp</td>
-    <td>
-      The debug port ID to apply the patch for. The allowed values are defined by the <b>__dp</b> attribute of <b>debugport</b>
-      elements for this device. If no debugport element exists, the only allowed value is 0. If this attribute is not set, the debug port
-      ID for the data patch is set to the default <b>__dp</b> of this <b>debug</b> section.
-    <td>xs:unsignedInt</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>__ap</td>
-    <td>
-      The CoreSight access port index to apply the patch for. If this attribute is not set, the access port index
-      for the data patch is set to the default <b>__ap</b> of this <b>debug</b> section.
-    <td>xs:unsignedInt</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>address</td>
-    <td>The address for which to apply the patch.</td>
-    <td>NonNegativeInteger</td>
-    <td>required</td>
-  </tr>
-  <tr>
-    <td>value</td>
-    <td>The value with which the debugger patches the data access. <b>value</b> is specified in little-endian format.</td>
-    <td>NonNegativeInteger</td>
-    <td>required</td>
-  </tr>
-  <tr>
-    <td>mask</td>
-    <td>The bits of the data access to patch. The mask value is specified in little-endian format.</td>
-    <td>NonNegativeInteger</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>info</td>
-    <td>Descriptive text to display for example for error diagnostics.</td>
-    <td>xs:string</td>
-    <td>optional</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-
-\anchor DataPatchAccessTypeEnum <b>Table: Data Patch Access Type</b>
-
-The table lists the allowed values for data patch access types.
-<table class="cmtable" summary="Enumeration: DataPatchAccessTypeEnum">
-  <tr>
-    <th>type=</th>
-    <th>Description</th>
-  </tr>
-  <tr>
-    <td class="XML-Token">DP</td>
-    <td>CoreSight Debug Port register access.<br>
-    <b>Note:</b> This type refers to accesses via the <b>DPACC</b> instruction for <b>CoreSight JTAG-DPs</b>. Please refer to the
-    corresponding documentation for differences in the register interface between JTAG and Serial Wire debug ports.
-    </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">AP</td>
-    <td>CoreSight Access Port register access. </td>
-  </tr>
-  <tr>
-    <td class="XML-Token">Mem</td>
-    <td>Memory access. </td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>
-<hr>
-
-\section element_trace /package/devices/family/.../trace
-
-Describes device capabilities and possible configuration settings for capturing trace.
-Multiple <b>trace</b> elements can be defined which are either specific to a processor identified by attribute
-<b>Pname</b>, or which apply to all connections.
-
-\b Example
-\code
-<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
-  ...
-  <trace Pname="Cortex-M4">
-    <serialwire/>
-    <traceport   width="0x0000000B"/> <!-- support for port widths 1, 2, and 4 -->
-    <tracebuffer start="0x2000C000" size="0x4000"/>
-  </trace>
-  ...
-  <trace Pname="Cortex-M0">
-    <!-- Empty trace section for Cortex-M0, no trace capabilities -->
-  </trace>
-  ...
-</family>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: trace">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_family "family"</td>
-    <td colspan="3">\ref element_family</td>
-  </tr>
-  <tr>
-    <td>\ref element_subFamily "subFamily"</td>
-    <td colspan="3">\ref element_subFamily</td>
-  </tr>
-  <tr>
-    <td>\ref element_device "device"</td>
-    <td colspan="3">\ref element_device</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>Pname</td>
-    <td>
-      Reference to a processor identifier as specified for a <b>processor</b> element. If <b>Pname</b> is set this
-      <b>trace</b> section only applies for target connections to the referenced processor. Otherwise, it applies
-      for all processors. <b>This attribute must be set if defining multiple \em trace elements within the same section.</b>
-      Only alphabetical characters, decimal digits, '-' and '_' are allowed. 
-    </td>
-    <td>RestrictedString</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <th>Child&nbsp;Elements</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Occurrence</th>
-  </tr>
-  <tr>
-    <td>\ref element_trace_serialwire "serialwire"</td>
-    <td>Describe the serial wire trace output capabilities of the processor.
-    </td>
-    <td>SerialWireType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_trace_traceport "traceport"</td>
-    <td>Describe the parallel trace port output capabilities of the processor.
-    </td>
-    <td>TracePortType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_trace_tracebuffer "tracebuffer"</td>
-    <td>Describe the on-device trace buffer capabilities of the processor.
-    </td>
-    <td>TraceBufferType</td>
-    <td>0..*</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-<hr>
-
-\section element_trace_serialwire /package/devices/family/.../trace/serialwire
-
-Indicates serial wire trace output capabilities of the specified processor.
-
-\b Example
-\code
-<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
-  ...
-  <trace Pname="Cortex-M4">
-    ...
-    <serialwire/>
-    ...
-  </trace>
-  ...
-</family>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: serialwire">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_trace "trace"</td>
-    <td colspan="3">\ref element_trace</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-<hr>
-
-\section element_trace_traceport /package/devices/family/.../trace/traceport
-
-Indicates parallel trace port output capabilities of the specified processor.
-This element describes possible configuration settings for capturing trace.
-
-\b Example
-\code
-<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
-  ...
-  <trace Pname="Cortex-M4">
-    ...
-    <traceport width="0x0000000B"/> <!-- support for port widths 1, 2, and 4 -->
-    ...
-  </trace>
-  ...
-</family>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: traceport">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_trace "trace"</td>
-    <td colspan="3">\ref element_trace</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>width</td>
-    <td>
-      Parallel trace port widths supported for the processor connection (see table below).
-    </td>
-    <td>NonNegativeInteger</td>
-    <td>optional</td>
-  </tr>
-</table>
-
-
-The attribute \b width specifies the available trace port width that is supported by the device.
-Each bit of this value represents an available trace port size. If bit \token{n} is set a trace port width of \token{n+1} is supported.
-The value <b>width=0x00008088</b> (as shown in the table) indicates that three port sizes (16-bit, 8-bit, and 4-bit) are supported by the device.
-
-<table class="cmtable" summary="Element: traceportwidth">
-  <tr>
-    <th>Bit</th>
-    <th>31</th>
-    <th>30</th>
-    <th>29</th>
-    <th>28</th>
-    <th>27</th>
-    <th>26</th>
-    <th>25</th>
-    <th>24</th>
-    <th>23</th>
-    <th>22</th>
-    <th>21</th>
-    <th>20</th>
-    <th>19</th>
-    <th>18</th>
-    <th>17</th>
-    <th>16</th>
-    <th>15</th>
-    <th>14</th>
-    <th>13</th>
-    <th>12</th>
-    <th>11</th>
-    <th>10</th>
-    <th> 9</th>
-    <th> 8</th>
-    <th> 7</th>
-    <th> 6</th>
-    <th> 5</th>
-    <th> 4</th>
-    <th> 3</th>
-    <th> 2</th>
-    <th> 1</th>
-    <th> 0</th>
-  </tr>
-  <tr>
-    <td>width</td>
-    <td>32</td>
-    <td>31</td>
-    <td>30</td>
-    <td>29</td>
-    <td>28</td>
-    <td>27</td>
-    <td>26</td>
-    <td>25</td>
-    <td>24</td>
-    <td>23</td>
-    <td>22</td>
-    <td>21</td>
-    <td>20</td>
-    <td>19</td>
-    <td>18</td>
-    <td>17</td>
-    <td>16</td>
-    <td>15</td>
-    <td>14</td>
-    <td>13</td>
-    <td>12</td>
-    <td>11</td>
-    <td>10</td>
-    <td> 9</td>
-    <td> 8</td>
-    <td> 7</td>
-    <td> 6</td>
-    <td> 5</td>
-    <td> 4</td>
-    <td> 3</td>
-    <td> 2</td>
-    <td> 1</td>
-  </tr>
-  <tr>
-    <td>Value</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>1</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>1</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-    <td>1</td>
-    <td>0</td>
-    <td>0</td>
-    <td>0</td>
-  </tr>
-</table>
-
-
-<p>&nbsp;</p>		
-<hr>
-
-\section element_trace_tracebuffer /package/devices/family/.../trace/tracebuffer
-
-Indicates on-device trace buffer capabilities of the specified processor.
-This element describes possible configuration settings for capturing trace
-and reading it from the buffer.
-
-\b Example
-\code
-<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
-  ...
-  <trace Pname="CoreCM4">
-    ...
-    <tracebuffer start="0x2000C000" size="0x4000"/>
-    ...
-  </trace>
-  ...
-</family>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: tracebuffer">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_trace "trace"</td>
-    <td colspan="3">\ref element_trace</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>start</td>
-    <td>Start address of the on-chip memory used as trace buffer for a supported configuration.</td>
-    <td>NonNegativeInteger</td>
-    <td>optional</td>
-  </tr>
-  <tr>
-    <td>size</td>
-    <td>Size of the on-chip memory used as trace buffer in bytes for a supported configuration.</td>
-    <td>NonNegativeInteger</td>
-    <td>optional</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-<hr>
-
-
-
-\section element_variant /package/devices/family/.../device/variant
-
-Defines a device variant. The element is optional. Can exist multiple times.
-
-\b Example
-\code
-<device Dname="STM32F205RB">
-  ...
-  <variant Dvariant="STM32F205RBT6">
-    <book name="doc\STM32F2_RM.PDF" title="STM32F2 Reference Manual"/>
-    <description>Use this device as an alternative.</description>
-    <feature type="QFP" count="64" name="LQFP 64 10x10x1.4" />
-    <feature type="Temp" n="-40" m="85" name="Industrial Temperature Range"/>
-  </variant>
-  <variant Dvariant="STM32F205RBT7">
-    <feature type="QFP" count="64" name="LQFP 64 10x10x1.4" />
-    <feature type="Temp" n="-40" m="105" name="Extended Temperature Range"/>
-  </variant>
-  ...
-</device>
-\endcode
-
-<p>&nbsp;</p>		
-
-<table class="cmtable" summary="Element: variant">
-  <tr>
-    <th>Parents</th>
-    <th colspan="3">Element Chain</th>
-  </tr>
-  <tr>
-    <td>\ref element_device "device"</td>
-    <td colspan="3">\ref element_device</td>
-  </tr>
-  <tr>
-    <th>Attributes</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Use</th>
-  </tr>
-  <tr>
-    <td>Dvariant</td>
-    <td>Name of the device variant. Only alphabetical characters, decimal digits, '-' and '_' are allowed</td>
-    <td>RestrictedString</td>
-    <td>required</td>
-  </tr>
-  <tr>
-    <th>Child Elements</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Occurrence</th>
-  </tr>
-  <tr>
-    <td>\ref element_book "book"</td>
-    <td>List books that are specific to this variant.</td>
-    <td>BookType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_description "description"</td>
-    <td>Device description.</td>
-    <td>DescriptionType</td>
-    <td>0..*</td>
-  </tr>
-  <tr>
-    <td>\ref element_feature "feature"</td>
-    <td>Define features for this device variant.</td>
-    <td>FeatureType</td>
-    <td>0..*</td>
-  </tr>
-</table>
-
-<p>&nbsp;</p>		
-<hr>
-*/
+/** 
+\page pdsc_devices_pg /package/devices element
+
+The level \elem{devices} contains all devices for which support is provided by the \ref CP_SWComponents "Software Pack". 
+
+Devices can be organized in hierarchy groups to limit redundancy. The hierarchy levels are:
+- \ref element_family "family": the attributes of a device family which includes also the processor.
+- \ref element_subFamily "subFamily": attributes of an optional sub-family; this adds or modifies features of a family.
+
+Device characteristics can be defined in:
+-	\ref element_device "device": attributes of a specific silicon device
+-	\ref element_variant "variant": attributes of a device variant (for example, with different package or temperature range) or an 
+       OEM device or board that integrates the device.
+       
+A device is described by the following properties:
+ - \ref element_description "description": textual device description
+ - \ref element_feature "feature": categorized list of device peripherals and features
+ - \ref element_book "book": documentation about the device and its processor(s)
+ - \ref element_processor "processor": processor and processor features embedded in the device
+ - \ref element_compile "compile": device specific general settings for the build tools
+ - \ref element_debugconfig "debugconfig": default settings for a debug connection
+ - \ref element_debugvars "debugvars": global debug access variables for use in sequences.
+ - \ref element_sequences "sequences": debug access sequences.
+ - \ref element_debugport "debugport": debug port description of the device for the debugger to configure a debug connection.
+ - \ref element_debug "debug": device specific information for the debugger to configure a debug connection including System View Description files.
+ - \ref element_trace "trace": device specific information for the debugger to configure trace.
+ - \ref element_memory "memory": memory layout of the device for internal and external RAM and ROM regions
+ - \ref element_algorithm "algorithm": device specific Flash programming algorithms
+
+A device will inherit the specifications from both the family and sub-family levels. Some properties are required to be unique. 
+For example, the name of the svd file attribute of the \elem{debug} property. 
+Therefore, the svd file specified on the family level can be redefined by the attribute on the sub-family or device level.
+Information like the description and feature entries are concatenated, starting with the information from the family and sub-family level
+and finalizing with the information on the device level.
+
+\b Example
+\code
+<package>
+  ...
+  <devices>
+    <!-- family level -->
+    <family Dfamily="STM32F2" Dvendor="STMicroelectronics:13">
+      <processor Dcore="Cortex-M3" DcoreVersion="r2p1"
+                 Dfpu="0" Dmpu="1" Dendian="Little-endian" Dclock="120000000"/>
+
+      <compile   header="Device/Include/stm32f2xx.h" define="STM32F2XX"/>
+      <debug     svd="SVD/STM32F20x.svd"/>
+      <algorithm name="Flash/STM32F2xx_OPT.flm" start="0x1FFFC000" size="0x00000010" style="Keil"/>
+      <book      name="doc/STM32F2.PDF" title="STM32F2 Reference Manual"/>
+
+      <description>
+        ARM 32-bit Cortex-M3 CPU based Microcontroller
+        - 120 MHz maximum frequency producing 150 DMIPS/1.25 DMIPS/MHz
+        - Memory Protection Unit
+        - Flexible static memory controller (supports Compact Flash, SRAM, PSRAM, NOR, NAND memories)
+        - LCD parallel interface, 8080/6800 modes
+        - Clock, reset and supply management
+      </description>
+
+      <feature type="Timer" n="10" m="32" name="General Purpose Timer with 60 MHz"/>
+      <feature type="Timer" n="2" m="16" name="Advanced Control Timer with 120 MHz"/>
+      <feature type="Timer" n="2" m="16" name="Basic Timer with 60 MHz"/>
+      <feature type="TimerOther" n="1" name="Independent Watchdog Timer"/>
+      <feature type="TimerOther" n="1" name="Window Watchdog Timer"/>
+      <feature type="DAC" n="2" m="12"/>
+      <feature type="SPI" n="3" name="SPI Interface (two of them can be used as I2S)"/>
+      <feature type="I2C" n="3"/>
+      <feature type="USART" n="4" name="USART Interface up to 7.5 Mbit/s"/>
+      <feature type="UART" n="2" name="UART Interface up to 3.75 Mbit/s"/>
+      <feature type="USBOTG" n="1"  name="USB OTG (Full-Speed) with PHY and ULPI"/>
+      <feature type="USBOTG" n="1"  name="USB OTG (High-Speed) with PHY and ULPI"/>
+      <feature type="CAN" n="2"  name="CAN Interface (2.0b Active)"/>
+      <feature type="SDIO" n="1" m="8" name="Supporting SD/MicroSD/MMC"/>
+      <feature type="VCC" n="1.8" m="3.6"/>
+
+      <!-- sub family level -->
+      <subFamily DsubFamily="128 Flash">
+        <memory name="SRAM"  access="rwx" start="0x20000000" size="0x10000" default="1"/>
+        <memory name="Flash" access="rx"  start="0x08000000" size="0x20000" startup="1" default="1"/>
+	
+        <!-- device level -->
+        <device Dname="STM32F205RB">
+          <feature type="IOs" n="51" name="Input and Output Ports"/>
+          <variant Dvariant="STM32F205RBT6">
+            <feature type="QFP" count="64" name="LQFP 64 10x10x1.4" />
+            <feature type="Temp" n="-40" m="85" name="Industrial Temperature Range"/>
+          </variant>
+          <variant Dvariant="STM32F205RBT7">
+            <feature type="QFP" count="64" name="LQFP 64 10x10x1.4" />
+            <feature type="Temp" n="-40" m="105" name="Extended Temperature Range"/>
+          </variant>
+        </device>
+		
+        <device Dname="STM32F205VB">
+          <feature type="IOs" n="82" name="Input and Output Ports"/>
+          <variant Dvariant="STM32F205VBT6">
+            <feature type="QFP" count="100" name="LQFP 100 14x14x1.4" />
+            <feature type="Temp" n="-40" m="85" name="Industrial Temperature Range"/>
+          </variant>
+        </device>
+      </subFamily>
+	  
+    </family>
+  </devices>
+</package>
+\endcode
+
+<p>&nbsp;</p>
+<hr>
+
+\section element_devices /package/devices
+
+Group level containing device \subpage pdsc_family_pg "family" descriptions. A package can contain only one element \elem{devices}.
+The group is not mandatory.
+
+\b Example
+\code
+<package>
+  ...
+  <devices>
+    ...
+  </devices>
+  ...
+</package>
+
+\endcode
+
+<p>&nbsp;</p>
+
+<table class="cmtable" summary="Element: devices">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_package "package"</td>
+    <td colspan="3">\ref element_package "/package"</td>
+  </tr>
+  <tr>
+    <th>Child&nbsp;Elements</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Occurrence</th>
+  </tr>
+  <tr>
+    <td>\ref element_family "family"</td>
+    <td>Device family group. Define all properties that are in common to devices of a family.</td>
+    <td>complexType</td>
+    <td>1..*</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+<hr>
+*/
+
+/** 
+\page pdsc_family_pg /package/devices/family element
+
+\section element_family /package/devices/family
+
+Define properties that are in common to all devices of a family. These properties are inherited by 
+subgroups or elements. This is a mechanism of granulation to reduce redundancy.  
+Multiple \<family> groups can be defined.
+ 
+\b Example
+\code
+<devices>
+  ...
+  <family Dfamily="STM32F2" Dvendor="STMicroelectronics:13">
+    <processor   .../>
+    <debugconfig .../>
+    <debugvars   .../>
+    <sequences   .../>
+    <compile     .../>
+    <memory      .../>
+    <algorithm   .../>
+    <book        .../>
+    <description> Write texte here </description>
+    <environment> ... </environment>
+    <feature     .../>
+    <debugport   .../>
+    <debug       .../>
+    <trace       .../>
+   
+    <subFamily DsubFamily="...">
+      ...
+      <device Dname="...">
+        ...
+      </device>
+      ...
+    </subFamily>
+    ...
+  </family>
+  ...
+</devices>
+\endcode 
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: family">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_devices "devices"</td>
+    <td colspan="3">\ref element_devices</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>Dfamily</td>
+    <td>Name of the device family.</td>
+    <td>xs:string</td>
+    <td>required</td>
+  </tr>
+  <tr>
+    <td>Dvendor</td>
+    <td>Device vendor name.  Use predefined values as listed in the table \ref DeviceVendorEnum "Device Vendor".</td>
+    <td>\ref DeviceVendorEnum "DeviceVendorEnum"</td>
+    <td>required</td>
+  </tr>
+  <tr>
+    <th>Child Elements</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Occurrence</th>
+  </tr>
+  <tr>
+    <td>\ref element_processor "processor"</td>
+    <td>List all processors that are in common to devices of the family.</td>
+    <td>ProcessorType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_compile "compile"</td>
+    <td>Specify compile or translate options that are relevant to all devices of the family.</td>
+    <td>CompileType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_debugconfig "debugconfig"</td>
+    <td>Specify default settings for the debug connection relevant to all devices of the family.</td>
+    <td>DebugConfigType</td>
+    <td>0..1</td>
+  </tr>
+  <tr>
+    <td>\ref element_debugvars "debugvars"</td>
+    <td>Define global debug access variables for settings relevant to all devices of the family unless replaced by debugvars on subFamily, device or variant level</td>
+    <td>DebugVarsType</td>
+    <td>0..1</td>
+  </tr>
+  <tr>
+    <td>\ref element_sequences "sequences"</td>
+    <td>Describe debug access sequences relevant to all devices of the family.</td>
+    <td>SequencesType</td>
+    <td>0..1</td>
+  </tr>
+  <tr>
+    <td>\ref element_debugport "debugport"</td>
+    <td>Describe a debug port relevant to all devices of the family.</td>
+    <td>DebugPortType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_debug "debug"</td>
+    <td>Specify debug options that are relevant to all devices of the family.</td>
+    <td>DebugType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_trace "trace"</td>
+    <td>Specify trace options that are relevant to all devices of the family.</td>
+    <td>TraceType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_memory "memory"</td>
+    <td>Specify memory areas that are available for all devices of the family.</td>
+    <td>MemoryType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_algorithm "algorithm"</td>
+    <td>Specify Flash programming algorithms that are suitable for all devices.</td>
+    <td>AlgorithmType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_book "book"</td>
+    <td>Specify documents that are relevant for all devices of a family.</td>
+    <td>BookType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_description "description"</td>
+    <td>Describe the device family.</td>
+    <td>DescriptionType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_environment "environment"</td>
+    <td>Specify tool specific settings.</td>
+    <td>EnvironmentType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_feature "feature"</td>
+    <td>Specify features that are available in all members of the device family.</td>
+    <td>FeatureType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_subFamily "subFamily"</td>
+    <td>A optional sub-family that is used to group devices.</td>
+    <td>group</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_device "device"</td>
+    <td>Individual devices that belong to the device family.</td>
+    <td>DeviceType</td>
+    <td>0..*</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+<hr>
+
+\section element_subFamily /package/devices/family/subFamily
+
+Define properties that are in common to all devices of a subFamily. This is another mechanism of granulation to reduce redundancy. 
+These properties are inherited by subgroups or elements. Multiple \<subFamily> groups can be defined.
+ 
+\b Example
+\code
+<family Dfamily="STM32F2" Dvendor="STMicroelectronics:13">
+  ...   
+  <subFamily DsubFamily="...">
+    <processor   .../>
+    <debugconfig .../>
+    <debugvars   .../>
+    <sequences   .../>
+    <compile     .../>
+    <memory      .../>
+    <algorithm   .../>
+    <book        .../>
+    <description> Write texte here </description>
+    <feature     .../>
+    <debugport   .../>
+    <debug       .../>
+    <trace       .../>
+    <device Dname="...">
+      ...
+    </device>
+  </subFamily>
+
+  <subFamily DsubFamily="STM32F2xx">
+    ...
+  </subFamily>
+
+</family>
+\endcode 
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: subFamily">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_family "family"</td>
+    <td colspan="3">\ref element_family</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>DsubFamily</td>
+    <td>Name of the device sub family.</td>
+    <td>xs:string</td>
+    <td>required</td>
+  </tr>
+  <tr>
+    <th>Child Elements</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Occurrence</th>
+  </tr>
+  <tr>
+    <td>\ref element_processor "processor"</td>
+    <td>Specify processors that are available in all devices of the sub-family.</td>
+    <td>ProcessorType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_compile "compile"</td>
+    <td>Specify compile or translate options that are relevant to all devices of the sub-family.</td>
+    <td>CompileType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_debugconfig "debugconfig"</td>
+    <td>Specify default settings for the debug connection relevant to all devices of the sub-family.</td>
+    <td>DebugConfigType</td>
+    <td>0..1</td>
+  </tr>
+  <tr>
+    <td>\ref element_debugvars "debugvars"</td>
+    <td>Define global debug access variables for user-defined settings relevant to all devices of the sub-family.</td>
+    <td>DebugVarsType</td>
+    <td>0..1</td>
+  </tr>
+  <tr>
+    <td>\ref element_sequences "sequences"</td>
+    <td>Describe debug access sequences relevant to all devices of the sub-family.</td>
+    <td>SequencesType</td>
+    <td>0..1</td>
+  </tr>
+  <tr>
+    <td>\ref element_debugport "debugport"</td>
+    <td>Describe a debug port relevant to all devices of the sub-family.</td>
+    <td>DebugPortType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_debug "debug"</td>
+    <td>Specify debug options that are relevant to all devices of the sub-family.</td>
+    <td>DebugType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_trace "trace"</td>
+    <td>Specify trace options that are relevant to all devices of the sub-family.</td>
+    <td>TraceType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_memory "memory"</td>
+    <td>Specify memory areas that are available in all device of the sub-family.</td>
+    <td>MemoryType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_algorithm "algorithm"</td>
+    <td>Specify Flash programming algorithms that can be used by all device of the sub-family.</td>
+    <td>AlgorithmType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_book "book"</td>
+    <td>Specify documents relevant for all device of the sub-family.</td>
+    <td>BookType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_description "description"</td>
+    <td>Description of the device family.</td>
+    <td>DescriptionType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_feature "feature"</td>
+    <td>Specify features available in devices of the sub-family.</td>
+    <td>FeatureType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_device "device"</td>
+    <td>List individual devices that belong to the device sub-family.</td>
+    <td>DeviceType</td>
+    <td>0..*</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+<hr>
+
+\section element_device /package/devices/family/../device
+
+Define properties that are specific to a device. Properties defined on upper levels get inherited, unless they can be overwritten.
+Multiple \<device> elements can be defined.
+
+\b Example
+\code
+<subFamily DsubFamily="STM32F405">
+  ...
+  <device Dname="STM32F405OE">
+    <memory    name="Flash" access="rx" start="0x08000000" size="0x80000" startup="1" default="1"/>
+    <algorithm name="Flash/STM32F4xx_1024.flm" start="0x08000000" size="0x80000" default="1" style="Keil"/>
+    <feature   type="IOs" n="72" name="Input and Output Ports"/>
+  </device>
+
+  <device Dname="STM32F405OG">
+    <memory    name="Flash" access="rx" start="0x08000000" size="0x100000" startup="1" default="1"/>
+    <algorithm name="Flash/STM32F4xx_1024.flm" start="0x08000000" size="0x100000" default="1" style="Keil"/>
+    <feature   type="IOs" n="72" name="Input and Output Ports"/>
+  </device>
+  ...
+</subFamily>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: device">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_family "family"</td>
+    <td colspan="3">\ref element_family</td>
+  </tr>
+  <tr>
+    <td>\ref element_subFamily "subFamily"</td>
+    <td colspan="3">\ref element_subFamily</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>Dname</td>
+    <td>Specifies the name of the device. Only alphabetical characters, decimal digits, '-' and '_' are allowed</td>
+    <td>RestrictedString</td>
+    <td>required</td>
+  </tr>
+  <tr>
+    <th>Child Elements</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Occurrence</th>
+  </tr>
+  <tr>
+    <td>\ref element_processor "processor"</td>
+    <td>Specify processors that are specific to this device.</td>
+    <td>ProcessorType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_compile "compile"</td>
+    <td>Specify compile or translate options specific to this device.</td>
+    <td>CompileType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_debugconfig "debugconfig"</td>
+    <td>Specify default settings for the debug connection specific to this device.</td>
+    <td>DebugConfigType</td>
+    <td>0..1</td>
+  </tr>
+  <tr>
+    <td>\ref element_debugvars "debugvars"</td>
+    <td>Define debug access variables for user-defined settings specific to this device.</td>
+    <td>DebugVarsType</td>
+    <td>0..1</td>
+  </tr>
+  <tr>
+    <td>\ref element_sequences "sequences"</td>
+    <td>Describe debug access sequences specific to this device.</td>
+    <td>SequencesType</td>
+    <td>0..1</td>
+  </tr>
+  <tr>
+    <td>\ref element_debugport "debugport"</td>
+    <td>Describe a debug port specific to this device.</td>
+    <td>DebugPortType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_debug "debug"</td>
+    <td>Specify debug options specific to this device.</td>
+    <td>DebugType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_trace "trace"</td>
+    <td>Specify trace options specific to this device.</td>
+    <td>TraceType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_memory "memory"</td>
+    <td>Specify memory areas that specific to this device.</td>
+    <td>MemoryType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_algorithm "algorithm"</td>
+    <td>Specify Flash programming algorithms that can be used by this device.</td>
+    <td>AlgorithmType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_book "book"</td>
+    <td>Specify documents specific to this device.</td>
+    <td>BookType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_description "description"</td>
+    <td>Description specific to this device.</td>
+    <td>DescriptionType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_feature "feature"</td>
+    <td>Specify features specific to this device.</td>
+    <td>FeatureType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_variant "variant"</td>
+    <td>Complex element specifying a variant of a device.</td>
+    <td>xs:string</td>
+    <td>0..*</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+<hr>
+
+\section element_algorithm /package/devices/family/.../algorithm
+
+Specify Flash programming algorithms with the address range and its size.  An algorithm with 
+\<default> set to \token{true} gets configured automatically to the download options of the project.
+Algorithms can be defined on various levels. Multiple \<algorithm> elements are possible. If the
+memory range and style are identical, the one on the lower level takes precedence.
+
+\b Example
+\code
+<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
+  ...
+  <!-- use for all devices of the family  -->
+  <algorithm name="Flash\STM32F2xx_512.flm" start=0x08000000 size=0x10000 default="1" style="Keil"/>
+ 
+  <subFamily DsubFamily="STM32F405">
+    <!-- use for all devices of a subFamily -->
+    <algorithm name="Flash/STM32F2xx_1024.flm" start=0x08000000 size=0x20000 default="1" style="Keil"/>       
+
+    <device Dname="STM32F405OE">
+	  <!-- finally, this is the default for the device -->
+      <algorithm name="Flash/STM32F2xx_2048.flm" start=0x08000000 size=0x40000 default="1" style="Keil"/>
+    </device>
+    ...
+</family>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Type: AlgorithmType">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_family "family"</td>
+    <td colspan="3">\ref element_family</td>
+  </tr>
+  <tr>
+    <td>\ref element_subFamily "subFamily"</td>
+    <td colspan="3">\ref element_subFamily</td>
+  </tr>
+  <tr>
+    <td>\ref element_device "device"</td>
+    <td colspan="3">\ref element_device</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>Pname</td>
+    <td>Processor identifier. This attribute <b>is mandatory for devices that embed multiple processors that require different algorithms</b>.
+        Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td>
+    <td>RestrictedString</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>name</td>
+    <td>Flash Programming Algorithm file including the path, which is relative to the root folder of the \ref CP_SWComponents "Software Pack".</td>
+    <td>xs:string</td>
+    <td>required</td>
+  </tr>
+  <tr>
+    <td>start</td>
+    <td>Base address for the Flash programming algorithm.</td>
+    <td>NonNegativeInteger</td>
+    <td>required</td>
+  </tr>
+  <tr>
+    <td>size</td>
+    <td>Size covered by the Flash programming algorithm. End address = start + size - 1</td>
+    <td>NonNegativeInteger</td>
+    <td>required</td>
+  </tr>
+   <tr>
+    <td>RAMstart</td>
+    <td>Base address for the RAM where the Flash programming algorithm will be executed from. If
+    specified, the \ref element_memory "memory" element does not require a \c default attribute.</td>
+    <td>NonNegativeInteger</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>RAMsize</td>
+    <td>Maximum size of RAM available for the execution of the Flash programming algorithm. 
+	End address = start + size - 1 is used for the Stack. If specified, the \ref element_memory 
+	"memory" element does not require a \c default attribute.</td>
+    <td>NonNegativeInteger</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>default</td>
+    <td>If \token{true}, then this is the default Flash programming algorithm that gets configured
+	in a project. If not specified or set to \token{false}, then the Flash programming algorithm can
+	be configured on a lower level. However, the Flash programming algorithm of a project can be
+	changed manually at any time during development.
+	</td>
+    <td>xs:boolean</td>
+    <td>optional</td>
+  </tr>
+    <tr>
+    <td>style</td>
+    <td>[Version 1.4.0] Today different tool-chains support different styles of incompatible flash
+	programming algorithms. The attribute specifies the style of the specified flash programming 
+	algorithm. For backward compatibility the default value is "Keil". The aim is to converge to
+	the <em>CMSIS</em> style.
+	</td>
+    <td>\ref AlgorithmStyleEnum "AlgorithmStyleEnum"</td>
+    <td>optional</td>
+  </tr>
+
+</table>
+
+
+<p>&nbsp;</p>		
+<hr>
+
+\section element_book /package/devices/family/.../book
+
+Specifies documents related to a device. Books can be entered on various levels.
+The book element contains the location, filename, and extension of the file. The title is used for display purposes.
+
+\b Example
+\code
+<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
+  ...
+  <book name="Documents/STM32F40x_DS.PDF" title="STM32F40x Data Sheet"/>                 <!-- valid for all devices of the family  -->
+
+  <subFamily DsubFamily="STM32F405">
+    <book name="Documents/STM32F4xx_RM.pdf" title="STM32F4 Series Reference Manual"/>    <!-- valid for all devices of a subFamily -->
+
+    <device Dname="STM32F405OE">
+      <book name="Documents/STM32F405OE_DS.PDF" title="STM32F405OE - Data Sheet"/>       <!-- valid for this device; Inherits all above -->
+    </device>
+    ...
+</family>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Type: BookType">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_family "family"</td>
+    <td colspan="3">\ref element_family</td>
+  </tr>
+  <tr>
+    <td>\ref element_subFamily "subFamily"</td>
+    <td colspan="3">\ref element_subFamily</td>
+  </tr>
+  <tr>
+    <td>\ref element_device "device"</td>
+    <td colspan="3">\ref element_device</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>Pname</td>
+    <td>Processor identifier. This attribute <b>is mandatory for devices that embed multiple processors and where the book refers to a single processor only</b>.
+        Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td>
+    <td>RestrictedString</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>name</td>
+    <td>File name of the document including the extension. The document path is relative to the package base folder. Directory/file names are case-sensitive.</td>
+    <td>xs:string</td>
+    <td>required</td>
+  </tr>
+  <tr>
+    <td>title</td>
+    <td>Book title. Can be used for being displayed in various environments.</td>
+    <td>xs:string</td>
+    <td>required</td>
+  </tr>
+</table>
+
+
+<p>&nbsp;</p>		
+<hr>
+
+\section element_compile /package/devices/family/.../compile
+
+Specify header files and preprocessor defines for programming. This element can occur on various levels.
+Multiple elements are allowed. The last occurrence in the hierarchy determines the actual define.
+
+\note
+- In the example below, the device \b STM32F407IG will have a define \c STM32F407IG. Previous defines
+  are overridden.
+- It is good practice to add both attributes (\c header and \c define) in the attributes list of the 
+  \c compile element together. This clarifies the relationship between header file and define.
+- The name of the header file should be exported by the IDE to the \ref RTE_Components_h file using the \#define CMSIS_device_header.
+  
+\b Example
+\code
+<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
+  ...
+  <compile   header="Device/Include/stm32f4xx.h"/>
+
+  <subFamily DsubFamily="STM32F407">
+    ...
+    <compile  header="Device/Include/stm32f4xx.h" define="STM32F40XX"/>
+
+    <device Dname="STM32F407IG">
+      <compile  header="Device/Include/stm32f4xx.h" define="STM32F407IG"/>
+    </device>
+  </subFamily>
+</family>
+\endcode
+
+<table class="cmtable" summary="Element: compile">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_family "family"</td>
+    <td colspan="3">\ref element_family</td>
+  </tr>
+  <tr>
+    <td>\ref element_subFamily "subFamily"</td>
+    <td colspan="3">\ref element_subFamily</td>
+  </tr>
+  <tr>
+    <td>\ref element_device "device"</td>
+    <td colspan="3">\ref element_device</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>Pname</td>
+    <td>Processor identifier. This attribute <b>is mandatory for devices that embed multiple processors if the header and define is different for each processor</b>.
+        Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td>
+   <td>RestrictedString</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>header</td>
+    <td>C-header file with path relative to the installation.</td>
+    <td>xs:string</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>define</td>
+    <td>C-file name with device specific preprocessor defines. The path is relative to the installation.</td>
+    <td>xs:string</td>
+    <td>optional</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+<hr>
+
+\section element_description /package/devices/family/.../description
+
+Brief description of the element. Can occur on various levels. Should only contain the unique features of the device. Number
+of bullet points should not exceed ten. To create a detailed feature list use the \ref element_feature instead.
+
+\b Example
+\code
+<package>
+  <devices>
+    <family Dfamily="STM32F2" Dvendor="STMicroelectronics:13">
+    
+      <description>
+        STM32F2 devices are designed for medical, industrial and consumer
+        applications and provide rich connectivity peripherals.
+        - At 120 MHz CPU clock: 150 DMIPS executing from Flash memory 
+        - ART Accelerator for low-power Flash execution (175 µA/MHz @ 120 MHz)
+        - Flexible Memory Controller supports Compact Flash, SRAM, PSRAM, NOR and NAND
+      </description>
+ 
+    </family>
+  </devices>
+</package>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: description">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_family "family"</td>
+    <td colspan="3">\ref element_family</td>
+  </tr>
+  <tr>
+    <td>\ref element_subFamily "subFamily"</td>
+    <td colspan="3">\ref element_subFamily</td>
+  </tr>
+  <tr>
+    <td>\ref element_device "device"</td>
+    <td colspan="3">\ref element_device</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>Pname</td>
+    <td>Processor Identifier. This attribute <b>is mandatory for devices that embed multiple processors and
+        where the description is specific to a single processor</b>.
+        Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td>
+    <td>RestrictedString</td>
+    <td>optional</td>
+  </tr>
+</table>
+
+
+<p>&nbsp;</p>		
+<hr>
+
+
+\section element_environment /package/devices/family/.../environment
+
+Tool-specific elements for a device.
+
+Can occur on various levels. 
+
+Contains information that is specific for a <b>development tool</b> identified by the \em name attribute.
+The structure of the \em element is not specified in the schema file which gives the <b>development tool</b> 
+full control of the \em element usage.
+
+\b Example
+\code
+<package>
+  <devices>
+    <family Dfamily="MySeries" Dvendor="Generic:5">
+      ...    
+      <environment name="MyConfigTool">
+        <file>MyConfigFile.cfg</file>
+        <control>MyControlString</control>
+		...
+      </environment>
+      ...
+    </family>
+  </devices>
+</package>
+\endcode
+
+\code
+<package>
+  <devices>
+    <family Dfamily="XMC1000 Series" Dvendor="Infineon:7">
+      ...    
+      <environment name="uv" Pname="M0">
+        <CMisc>--C99</CMisc>
+		...
+      </environment>
+      ...
+    </family>
+  </devices>
+</package>
+\endcode
+
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: description">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_family "family"</td>
+    <td colspan="3">\ref element_family</td>
+  </tr>
+  <tr>
+    <td>\ref element_subFamily "subFamily"</td>
+    <td colspan="3">\ref element_subFamily</td>
+  </tr>
+  <tr>
+    <td>\ref element_device "device"</td>
+    <td colspan="3">\ref element_device</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>name</td>
+    <td>Name of the development tool (e.g. "uv" for uVision)</td>
+    <td>xs:string</td>
+    <td>required</td>
+  </tr>
+  <tr>
+    <td>Pname</td>
+    <td>Identifies the processor the setting belongs to.
+        Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td>
+    <td>RestrictedString</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <th>Child Elements</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Occurrence</th>
+  </tr>
+  <tr>
+    <td>any</td>
+    <td>Any element that is available for the specified development tool.<br>
+	For uVision, the following elements are available: \<CMisc>, \<AMisc\>, \<LMisc\>, \<preBuild1\>, \<preBuild2\>, \<preRun1\>, \<preRun2\>, \<postBuild1\>, \<postBuild2\>, \<postRun1\>, \<postRun\>.</td>
+    <td>xs:anyAttribute</td>
+    <td>0..*</td>
+  </tr>
+</table>
+
+
+<p>&nbsp;</p>		
+<hr>
+
+
+\section element_feature /package/devices/family/.../feature
+
+This element specifies peripherals that devices can have. This can be used on \b web \b sites for the display of device
+features.
+
+Many device feature types are already predefined, such as timers, converters, Ethernet, USB, etc (for a complete list refer
+to table \ref DeviceFeatureTypeEnum "Device Feature Types"). Features can be defined on various levels. Inner elements
+supersede outer elements. 
+
+\b Example
+\code
+<package>
+  <devices>
+    <family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
+      ...
+      <!--  Features that are in common to this device family. -->
+      <feature type="TimerOther" n="1" name="Independent Watchdog Timer"/>
+      <feature type="TimerOther" n="1" name="Window Watchdog Timer"/>          <!-- The same feature type can be specified multiple times -->
+      <feature type="Other" n="1" name="Temperature Sensor"/>
+      <feature type="CoreOther" n="1" name="96-bit Unique Identifier"/>
+      <feature type="CoreOther" n="1" name="CRC Calculation Unit"/>
+      <feature type="DMA" n="16" name="General Purpose DMA with Centralized FIFO and Burst Support"/>
+      <feature type="PowerOther" n="1" name="POR, PDR, PVD, and BOR"/>
+      <feature type="XTAL" n="4000000" m="26000000" name="Crystal Oscillator"/>
+      <feature type="IntRC" n="16000000" name="Internal Factory-Trimmed RC"/>
+      <feature type="IntRC" n="32000" name="Internal RC with Calibration"/>
+      <feature type="RTC" n="32000" name="RTC with 32 kHz calibrated Oscillator and Battery Backup"/>
+      <feature type="PowerMode" n="3" name="Run, Stop, Standby"/>
+      <feature type="Temp" n="-40" m="85"/> 
+      <feature type="Temp" n="-40" m="105"/> 
+      <feature type="Timer" n="4" m="16" name="General Purpose Timer"/>
+      ...
+      <subFamily DsubFamily="STM32F407">
+        <!--  Features that are in common to this subFamily. -->
+        <feature type="IOs" n="36"/>                                                  <!-- Adds new feature to subFamily  -->
+        <feature type="Timer" n="7" m="32" name="General Purpose Timer"/>             <!-- Adds to settings from <family> -->
+
+        
+        <device Dname="STM32F407IE">
+          <!--  Feature specific to this device.  All above features are inherited.  -->
+          <feature type="QFP" n="176" name="LQFP 176 24x24x1.4"/>
+        </device>
+      </subFamily>
+    </family>
+  </devices>
+</package>
+\endcode
+
+<p>&nbsp;</p>
+
+<table class="cmtable" summary="Element: feature">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_family "family"</td>
+    <td colspan="3">\ref element_family</td>
+  </tr>
+  <tr>
+    <td>\ref element_subFamily "subFamily"</td>
+    <td colspan="3">\ref element_subFamily</td>
+  </tr>
+  <tr>
+    <td>\ref element_device "device"</td>
+    <td colspan="3">\ref element_device</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>Pname</td>
+    <td>Processor Identifier. This attribute <b>is mandatory for devices that embed multiple processors</b>.
+        Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td>
+    <td>RestrictedString</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>type</td>
+    <td>A feature (peripheral), such as \token{CAN}, \token{DMA}, \token{I/O}, \token{LCD}, etc. Predefined values must be used
+	as listed in the table \ref DeviceFeatureTypeEnum "Device Feature Types".</td>
+    <td>DeviceFeatureTypeEnum</td>
+    <td>required</td>
+  </tr>
+  <tr>
+    <td>n</td>
+    <td>Depends on the element \em \b type. Check table \ref DeviceFeatureTypeEnum "Device Feature Types".</td>
+    <td>xs:decimal</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>m</td>
+    <td>Depends on the elemen \em \b type. Check table \ref DeviceFeatureTypeEnum "Device Feature Types".</td>
+    <td>xs:decimal</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>name</td>
+    <td>Descriptive name of the feature. For example, "16-bit down counting timer". If omitted, the <b>Default Name</b> is used 
+	as described in the table \ref DeviceFeatureTypeEnum "Device Feature Types".</td>
+    <td>xs:string</td>
+    <td>optional</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+
+\anchor DeviceFeatureTypeEnum <b>Table: Device Feature Types</b> 
+
+The table lists predefined device features (peripherals).
+\note The attribute \a name of the element \ref element_feature is a descriptive text for a feature. If \a name is omitted, then the <b>Default Name</b> is used.
+
+|type=|n=|m=|Default Name|Example|Example shown as|
+|-----|--|--|------------|-------|----------------|
+|NVIC|Number of NVIC Interrupts|N/A|NVIC|\<feature type="NVIC" n="120" name="NVIC"/\>|NVIC with 120 interrupt sources|
+|DMA|Number of DMA Channels|N/A|DMA|\<feature type="DMA" n="16" name="High-Speed DMA"/\>|16-channel High-Speed DMA|
+|Crypto|Bitwidth, given as decimal Number (see example)|N/A|Cryptographic Engine|\<feature type="Crypto" n="128.256" name="HW accelerated AES Encryption Engine"/\>|128/256-bit HW accelerated AES Encryption Engine|
+|RNG|Number of RNGs|N/A|Random Number Generator|\<feature type="RNG" name="True Random Number Generator"/\>|True Random Number Generator|
+|CoreOther|Number of Features|N/A|Other Core Feature|\<feature type="CoreOther" n=1 name="96-bit Unique Identifier"/\>|1 x 96-bit Unique Identifier|
+|Memory|Number of Bytes|N/A|Memory|\<feature type="Memory" n="128" name="EEPROM"/\>|128 byte EEPROM|
+|MemoryOther|Number of Memories|N/A|Other Memory Type|\<feature type="MemoryOther" n="1" name="1 kB MRAM"/\>|1 x 1 kB MRAM|
+|ExtBus|Bitwidth of Bus Interface|N/A|External Bus Interface|\<feature type="ExtBus" n="16" name="External Bus Interface for SRAM Communication"/\>|16-bit External Bus Interface for SRAM Communication|
+|XTAL|Minimum Frequency in Hz|Maximum Frequency in Hz|External Crystal Oscillator|\<feature type="XTAL"  n="4000000" m="25000000" name="External Crystal Oscillator"/\>|4 MHz .. 25 MHz External Crystal Oscillator|
+|IntRC|Minimum Frequency in Hz|Maximum Frequency in Hz|Internal RC Oscillator|\<feature type="IntRC"  n="16000000" name="Internal RC Oscillator with +/- 1% accuracy"/\>|16 MHz Internal RC Oscillator with +/- 1% accuracy|
+|PLL|Number of PLLs|N/A|PLL|\<feature type="PLL"  n="3" name="Internal PLL"/\>|3 Internal PLL|
+|RTC|RTC Frequency|N/A|RTC|\<feature type="RTC"  n="32000" name="Internal RTC"/\>|32 kHz Internal RTC|
+|ClockOther|Number of Peripherals|N/A|Other Clock Peripheral|\<feature type="ClockOther" name="My special clock feature"/\>|My special clock feature|
+|PowerMode|Number of Power Modes|N/A|Power Modes|\<feature type="Mode"  n="3" name="Run, Sleep, Deep-Sleep"/\>|3 Power Modes: Run, Sleep, Deep-Sleep|
+|VCC|Minimum Supply Voltage|Maximum Supply Voltage|Operating Voltage|\<feature type="VCC"  n="1.8" m="3.6"/\>|1.8 V .. 3.6 V|
+|Consumption|Minimum Power Consumption|Typical Power Consumption|Power Consumption|\<feature type="Consumption"  n="0.00004" m="0.002" name="Ultra-Low Power Consumption"/\>|40 uW/MHz .. 2 mW/MHz Ultra-Low Power Consumption|
+|PowerOther|Number of Features|N/A|Other Power Feature|\<feature type="PowerOther" n="1" name="POR"/\>|1 x POR|
+|BGA|Number of Balls|N/A|BGA|\<feature type="BGA" n="256" name="Plastic Ball Grid Array"/\>|256-ball Plastic Ball Grid Array|
+|CSP|Number of Leads|N/A|CSP|\<feature type="CSP" n="28" name="Wafer-Level Chip-Scale Package"/\>|28-ball Wafer-Level Chip-Scale Package|
+|PLCC|Number of Leads|N/A|PLCC|\<feature type="PLCC" n="20" name="PLCC Package"/\>|20-lead PLCC Package|
+|QFN|Number of Leads|N/A|QFN|\<feature type="QFN" n="33" name="QFN Package"/\>|33-pad QFN Package|
+|QFP|Number of Leads|N/A|QFP|\<feature type="QFP" n="128" name="Low-Profile QFP Package"/\>|128-lead Low-Profile QFP Package|
+|SOP|Number of Leads|N/A|SOP|\<feature type="SOP" n="16" name="SSOP Package"/\>|16-lead SSOP Package|
+|DIP|Number of Leads|N/A|SOP|\<feature type="DIP" n="16" name="Dual In-Line Package"/\>|16-lead Dual In-Line Package|
+|PackageOther|Number of Pins|N/A|Other Package Type|\<feature type="PackageOther"  n="44" name="My other Package"/\>|44-contacts My other Package|
+|IOs|Number of I/Os|N/A|Inputs/Outputs|\<feature type="IOs"  n="112" name="General Purpose I/Os, 5V tolerant"/\>|112 General Purpose I/Os, 5V tolerant|
+|ExtInt|Number of External Interrupts|N/A|External Interrupts|\<feature type="ExtInt"  n="12"/\>|12 External Interrupts|
+|Temp|Minimum Operating Temperature|Maximum Operating Temperature|Operating Temperature Range|\<feature type="Temp"  n="-40" m="105" name="Extended Operating Temperature Range"/\>|-40 °C .. +105 °C Extended Operating Temperature Range|
+|ADC|Number of Channels|Resolution in Bit|ADC|\<feature type="ADC"  n="5" m="12" name="High-Performance ADC"/\>|5-channel x 12-bit High-Performance ADC|
+|DAC|Number of Channels|Resolution in Bit|DAC|\<feature type="DAC"  n="2" m="10"/\>|2 x 12-bit DAC|
+|TempSens|Number of Sensors|N/A|Temperature Sensor|\<feature type="TempSens"  n="1"/\>|1 x Temperature Sensor|
+|AnalogOther|Number of Features|N/A|Other Analog Peripheral|\<feature type="AnalogOther"  n="1" name="My Analog"/\>|1 x My Analog|
+|Timer|Number of Channels|Resolution in Bit|Timer/Counter Module|\<feature type="Timer"  n="2" m="32" name="Timer Module with Quadrature Encoding"/\>|2 x 32-bit Timer Module with Quadrature Encoding|
+|PWM|Number of Channels|Resolution in Bit|PWM|\<feature type="PWM"  n="2" m="16" name="Pulse Width Modulation"/\>|2 x 16-bit Pulse Width Modulation|
+|WDT|Number of Watchdogs|N/A|Watchdog|\<feature type="WDT"  n="1"/\>|1 x Watchdog Timer|
+|TimerOther|Number of Features|N/A|Other Timer Peripheral|\<feature type="TimerOther"  n="1" name="Quadrature En-/Decoder"/\>|1 x Quadrature En-/Decoder|
+|MPSerial|Number of Serial Peripherals|N/A|Multi-Purpose Serial Peripheral|\<feature type="MPSerial"  n="4" name="Multi-Purpose Serial Interface Module: I2C, I2S, SPI, UART"/\>|4 x Multi-Purpose Serial Interface Module: I2C, I2S, SPI, UART|
+|CAN|Number of CAN Interfaces|N/A|CAN|\<feature type="CAN"  n="2" name="CAN 2.0b Controller"/\>|2 x CAN 2.0b Controller|
+|ETH|Number of Ethernet Interfaces|Data Rate in Bit/s|Ethernet|\<feature type="ETH"  n="1" m="10000000" name="Integrated Ethernet MAC with PHY"/\>|1 x 10 Mbit/s Integrated Ethernet MAC with PHY|
+|I2C|Number of I2C Interfaces|N/A|I2C|\<feature type="I2C"  n="2"name="Low-Power I2C"/\>|2 x Low-Power I2C|
+|I2S|Number of I2S Interfaces|N/A|I2S|\<feature type="I2S"  n="3"/\>|3 x I2S|
+|LIN|Number of LIN Interfaces|N/A|LIN|\<feature type="LIN"  n="4"/\>|4 x LIN|
+|SDIO|Number of SDIO Interfaces|Bitwidth of SDIO Interface|SDIO|\<feature type="SDIO"  n="1" m="4" name="SDIO Interface"/\>|1 x 4-bit SDIO Interface|
+|SPI|Number of SPI Interfaces|Data Rate in Bit/s|SPI|\<feature type="SPI"  n="2" m="20000000" name="SPI Interface"/\>|2 x 20 Mbit/s SPI Interface|
+|UART|Number of UART Interfaces|Data Rate in Bit/s|UART|\<feature type="UART"  n="4" m="3000000" name="High-Speed UART Interface"/\>|4 x 3 Mbit/s High-Speed UART Interface|
+|USART|Number of USART Interfaces|Data Rate in Bit/s|USART|\<feature type="USART"  n="2" m="1000000" name="High-Speed USART Interface"/\>|2 x 1 Mbit/s High-Speed USART Interface|
+|USBD|Number of USB Dvice Interfaces|N/A|USB Device|\<feature type="USBD"  n="2" name="Full-Speed USB Device"/\>|2 x Full-Speed USB Device|
+|USBH|Number of USB Host Interfaces|N/A|USB Host|\<feature type="USBH"  n="2" name="High-Speed USB Host"/\>|2 x High-Speed USB Host|
+|USBOTG|Number of USB OTG Interfaces|N/A|USB OTG|\<feature type="USBOTG"  n="1" name="High-Speed USB OTG with PHY"/\>|1 x High-Speed USB OTG with PHY|
+|ComOther|Number of other Communication Peripherals|N/A|Other Communication Peripheral|\<feature type="ComOther"  n="1" name="ZigBee"/\>|1 x ZigBee|
+|Camera|Number of Camera Interface|Resolution in Bit|Camera Interface|\<feature type="Camera"  n="1" m="8" name="Digital Camera Interface"/\>|1 x 8-bit Digital Camera Interface|
+|GLCD|Number of Graphic LCD Controller|Maximum Resolution as a decimal number (see example)|Graphic LCD Controller|\<feature type="GLCD"  n="1" m="320.240" name="TFT LCD Controller"/\>|1 x 320 x 480 pixel TFT LCD Controller|
+|LCD|Number of Segment LCD Controller|Com.Seg as a decimal number (see example)|Segment LCD Controller|\<feature type="LCD"  n="1" m="16.40" name="Segment LCD Controller"/\>|1 x 16 x 40  Segment LCD Controller|
+|Touch|Number of Touch Channels|N/A|Capacitive Touch Inputs|\<feature type="Touch"  n="10" name="Capacitive Touch Inputs"/\>|10 x Capacitive Touch Inputs|
+|Other|Number of Features|N/A|Other Feature|\<feature type="Other"  n="2" name="My other Interface"/\>|2 x My other Interface|
+	
+<p>&nbsp;</p>		
+<hr>
+
+\section element_memory /package/devices/family/.../memory
+
+This element specifies memory regions that devices can have. Memory types are predefined and can be selected.
+This element can be defined on various levels. Inner memory elements supersede outer elements.
+
+\b Example
+\code
+</package>
+  ...
+  <devices>
+    <family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
+      <memory name="SRAM" access="rwx" start="0x20000000" size="0x20000" default="1"/>
+
+      <subFamily DsubFamily="STM32F407">
+        <debug  __dp="0" __ap="0" svd="SVD/STM32F40x.svd"/>
+        <memory name="SRAM1" access="rwx" start="0x20020000" size="0x20000" default="1"/>
+        <memory name="SRAM2" access="rwx" start="0x10000000" size="0x10000" default="1"/>
+        
+        <device Dname="STM32F407IE">
+          <memory name="Flash" access="rx" start="0x08000000" size="0x80000" startup="1" default="1"/>
+        </device>
+        
+      </subFamily>
+    </family>
+  </devices>
+  ...
+</package>
+\endcode
+<p>&nbsp;</p>
+
+<table class="cmtable" summary="Element: memory">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_family "family"</td>
+    <td colspan="3">\ref element_family</td>
+  </tr>
+  <tr>
+    <td>\ref element_subFamily "subFamily"</td>
+    <td colspan="3">\ref element_subFamily</td>
+  </tr>
+  <tr>
+    <td>\ref element_device "device"</td>
+    <td colspan="3">\ref element_device</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>Pname</td>
+    <td>Processor identifier. This attribute <b>is mandatory for devices that embed multiple processors</b>. 
+        Only alphabetical characters, decimal digits, '-' and '_' are allowed. </td>
+    <td>RestrictedString</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>id (deprecated in Version 1.4.0)</td>
+    <td>(deprecated Version 1.4.0) Identifier of the memory region consisting of a type indicator and an index (for example, \token{IRAM1}).
+	Predefind values can be selected as defined in \ref MemoryIDTypeEnum.</td>
+    <td>MemoryIDTypeEnum</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>name (new in Version 1.4.0)</td>
+    <td>unique name of the memory (new in Version 1.4.0) to be used in conjunction with <em>access</em>
+    <td>xs:string</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>access (new in Version 1.4.0)</td>
+    <td>access permission attributes of the memory. See MemoryAccessTypeString for details (new in Version 1.4.0).
+    <td>\ref MemoryAccessTypeString "MemoryAccessTypeString"</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>start</td>
+    <td>Base address of the memory using a hexadecimal value.</td>
+    <td>NonNegativeInteger</td>
+    <td>required</td>
+  </tr>
+  <tr>
+    <td>size</td>
+    <td>Size of the memory in bytes using a hexadecimal value.</td>
+    <td>NonNegativeInteger</td>
+    <td>required</td>
+  </tr>
+  <tr>
+    <td>default</td>
+    <td>Indicates a general purpose memory region, that does not require any special considerations (access speed, remapping, protection, etc.).
+    If \token{true}, then an IRAM memory region will be used by the linker for locating any data and an IROM memory region will for locating 
+    any code. Every device needs at least one default IRAM region.
+    If an \ref element_algorithm "algorithm" element is specified (without \c RAMstart and
+    \c RAMsize attributes),	the first listed IRAM region with default="1" will also be used for executing the flash programming algorithm.</td>
+    Default value is \token{false}.
+    <td>xs:boolean</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>startup</td>
+    <td>If \token{true}, the startup code of the application will be placed into this memory region. Default value is \token{false}.</td>
+    <td>xs:boolean</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>alias(new in Version 1.4.0)</td>
+    <td>reference to another memory description which shares the same physical memory. Some physical
+	memory is made accessible via different addresses, e.g. chached vs. non-cached accesses. This
+	avoids the impression that the device has twice as much memory available.
+    <td>xs:string</td>
+    <td>optional</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+
+\anchor MemoryIDTypeEnum <b>Table: Memory ID Types</b>
+
+The table lists identifiers for memory types.
+<table class="cmtable" summary="Enumeration: MemoryIDTypeEnum">
+  <tr>
+    <th>id=</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td class="XML-Token">RAM<i>x</i></td>
+    <td>External RAM. <i>x</i> can have a value between 1..8 </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">ROM<i>x</i></td>
+    <td>External ROM. <i>x</i> can have a value between 1..8 </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">IRAM<i>x</i></td>
+    <td>Internal RAM. <i>x</i> can have a value between 1..8 </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">IROM<i>x</i></td>
+    <td>Internal ROM. <i>x</i> can have a value between 1..8 </td>
+  </tr>
+</table>
+
+
+
+
+<p>&nbsp;</p>		
+<hr>
+
+\anchor MemoryAccessTypeString <b>Table: Memory Access Attribute String</b>
+
+The table lists the letters and their meaning for use in the access attribute string.
+<table class="cmtable" summary="Memory Access Permission Attributes">
+  <tr>
+    <th>access=</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td class="XML-Token">r</td>
+    <td><em>R</em>eadable</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">w</td>
+    <td><em>W</em>ritable</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">x</td>
+    <td>e<em>X</em>ecutable</td>
+  </tr>
+    <tr>
+    <td class="XML-Token">p</td>
+    <td><em>P</em>eripheral area. Details described in SVD.</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">s</td>
+    <td><em>S</em>ecure attribute</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">n</td>
+    <td><em>N</em>on-secure attribute</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">c</td>
+    <td>non-secure <em>C</em>allable attribute</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+<hr>
+
+\section element_processor /package/devices/family/.../processor
+
+Specifies attributes of the device processor. The element can occur on various levels.
+Elements of multi-processor devices can be associated with a specific processor using the attribute \elem{Pname}. If the information is relevant to
+all processors, no processor must be specified in \elem{Pname}. 
+
+\b Example
+\code
+<package>
+  ...
+  <devices>
+    <family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
+      <processor Dcore="Cortex-M4" DcoreVersion="r0p1"
+                 Dfpu="1" Dmpu="1" Dendian="Little-endian" Dclock="168000000"/>
+      ...
+    </family>
+  </devices>
+  ...
+</package>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: processor">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_family "family"</td>
+    <td colspan="3">\ref element_family</td>
+  </tr>
+  <tr>
+    <td>\ref element_subFamily "subFamily"</td>
+    <td colspan="3">\ref element_subFamily</td>
+  </tr>
+  <tr>
+    <td>\ref element_device "device"</td>
+    <td colspan="3">\ref element_device</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>Pname</td>
+    <td>Processor identifier. This attribute <b>is mandatory for devices that embed multiple processors</b>. 
+	      Each processor needs a unique identifier and must be used consistently in the <b>Pname</b> attribute of the elements within the scope of the current device family section.
+        Only alphabetical characters, decimal digits, '-' and '_' are allowed.
+    </td>
+    <td>RestrictedString</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>Dvendor</td>
+    <td>Specfies the device vendor using a predefined string. Use predefined values as listed in the table \ref DeviceVendorEnum "Device Vendor".</td>
+    <td>DeviceVendorEnum</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>Dcore</td>
+    <td>Specifies the processor core. Use predefined values as listed in the table \ref DcoreEnum "Device Cores".</td>
+    <td>DcoreEnum</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>Dfpu</td>
+    <td>Specifies whether a hardware Floating Point Unit is present in the processor.  Use predefined values as listed in the table \ref DfpuEnum "Device FPU".</td>
+    <td>DfpuEnum</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>Dmpu</td>
+    <td>Specifies whether a Memory Protection Unit is present in the processor. Use predefined values as listed in the table \ref DmpuEnum "Device MPU".</td>
+    <td>DmpuEnum</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>Dendian</td>
+    <td>Specifies the endianess of the processor. Use predefined values as listed in the table \ref DendianEnum "Endinaness".</td>
+    <td>DendianEnum</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>Dclock</td>
+    <td>Specifies the max clock frequency of the processor subsystem</td>
+    <td>xs:unsignedInt</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>DcoreVersion</td>
+    <td>Hardware revision of the processor core</td>
+    <td>xs:string</td>
+    <td>required</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+
+\anchor DeviceVendorEnum <b>Table: Device Vendors</b>
+
+The table lists predefined values representing device vendors. The list is extended from time to time (on request by new vendors). 
+Contact cmsis@arm.com to ask for an extension. These values can be used in the elements:
+- \ref element_board_mountedDevice 
+- \ref element_accept
+- \ref element_require
+- \ref element_deny
+- \ref element_example_board
+- \ref element_board_compatibleDevice
+- \ref element_gen_select
+
+<table class="cmtable" summary="Enumeration: DeviceVendorEnum">
+  <tr>
+    <th>Dvendor</th>
+    <th>Description</th>
+    <th>Web Link</th>
+  </tr>
+  <tr>
+    <td class="XML-Token">ABOV Semiconductor:126</td>
+    <td>ABOV Semiconductor</td>
+    <td>http://www.abov.co.kr/en/</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Ambiq Micro:120</td>
+    <td>Ambiq Micro</td>
+    <td>http://www.ambiqmicro.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Analog Devices:1</td>
+    <td>Analog Devices</td>
+    <td>http://www.analog.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">ARM:82</td>
+    <td>ARM Ltd.</td>
+    <td>http://www.arm.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Atmel:3</td>
+    <td>Atmel Corporation</td>
+    <td>http://www.atmel.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">CSR:118</td>
+    <td>CSR:</td>
+    <td>http://www.csr.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Cypress:19</td>
+    <td>Cypress Semiconductor</td>
+    <td>http://www.cypress.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Dialog Semiconductor:113</td>
+    <td>Dialog Semiconductor</td>
+    <td>http://www.dialog-semiconductor.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Freescale:78</td>
+    <td>Freescale</td>
+    <td>http://www.freescale.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Generic:5</td>
+    <td>Generic: Not a vendor specific device</td>
+    <td></td>
+  </tr>
+  <tr>
+    <td class="XML-Token">GigaDevice:123</td>
+    <td>GigaDevice</td>
+    <td>http://www.gigadevice.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Holtek:106</td>
+    <td>Holtek Microelectronics</td>
+    <td>http://www.holtek.com.tw</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Infineon:7</td>
+    <td>Infineon Technologies</td>
+    <td>http://www.infineon.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Lapis Semiconductor:10</td>
+    <td>Lapis Semiconductor</td>
+    <td>http://www.lapis-semi.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Maxim:23</td>
+    <td>Maxim Integrated</td>
+    <td>http://www.maximintegrated.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">MediaTek:129</td>
+    <td>MediaTek</td>
+    <td>http://www.mediatek.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">MegaChips:128</td>
+    <td>MegaChips</td>
+    <td>http://www.megachips.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">MicroSemi:112</td>
+    <td>Microsemi</td>
+    <td>http://www.microsemi.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Milandr:99</td>
+    <td>Milandr</td>
+    <td>http://www.milandr.ru</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">MindMotion:132</td>
+    <td>MindMotion</td>
+    <td>//http://www.mindmotion.com.cn</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Nordic Semiconductor:54</td>
+    <td>Nordic Semiconductor</td>
+    <td>http://www.nordicsemi.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Nuvoton:18</td>
+    <td>Nuvoton Technolgy Corp.</td>
+    <td>http://www.nuvoton.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">NXP:11</td>
+    <td>NXP</td>
+    <td>http://www.nxp.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Panasonic:131</td>
+    <td>Panasonic</td>
+    <td>http://www.panasonic.com/industrial</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Realtek Semiconductor:124</td>
+    <td>Realtek Semiconductor</td>
+    <td>http://www.realtek.com.tw</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Redpine Signals:125</td>
+    <td>Repine Signals</td>
+    <td>http://www.redpinesignals.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Renesas:117</td>
+    <td>Renesas</td>
+    <td>http://www.renesas.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">ROHM:103</td>
+    <td>ROHM</td>
+    <td>http://www.rohm.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Samsung:47</td>
+    <td>Samsung Semiconductor</td>
+    <td>http://www.samsung.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Silicon Labs:21</td>
+    <td>Silicon Labs</td>
+    <td>http://www.silabs.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Spansion:100</td>
+    <td>Spansion (previously Fujitsu)</td>
+    <td>http://www.spansion.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">STMicroelectronics:13</td>
+    <td>STMicroelectronics</td>
+    <td>http://www.st.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Texas Instruments:16</td>
+    <td>Texas Instruments</td>
+    <td>http://www.ti.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Toshiba:92</td>
+    <td>Toshiba Semiconductor</td>
+    <td>http://www.toshiba-components.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Triad Semiconductor:104</td>
+    <td>Triad Semiconductor</td>
+    <td>http://www.triadsemi.com</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">WIZnet:122</td>
+    <td>WIZnet</td>
+    <td>http://www.wiznet.co.kr</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Xinnova</td>
+    <td>Xinnova Technology</td>
+    <td>http://www.xinnovatech.com/en</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>
+
+\anchor AlgorithmStyleEnum <b>Table: Algorithm Styles</b>
+<table class="cmtable" summary="Enumeration: AlgorithmStyleEnum">
+  <tr>
+    <th>style=</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td class="XML-Token">Keil</td>
+    <td><a href="http://www.keil.com/pack/doc/CMSIS/Pack/html/_flash_algorithm.html" target="_blank">Flash Programming Algorithm</a> as defined by ARM/Keil</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">IAR</td>
+    <td>Flash Programming Algorithm as defined by IAR</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">CMSIS</td>
+    <td>To be agreed under CMSIS</td>
+  </tr>
+
+</table>
+
+<p>&nbsp;</p>
+
+
+\anchor DcoreEnum <b>Table: Device Cores</b>
+
+The table lists available device cores. The list is extended from time to time to reflect new processor cores.
+These values can be used in the elements:
+- \ref element_accept
+- \ref element_require
+- \ref element_deny
+- \ref element_processor
+	
+<table class="cmtable" summary="Enumeration: DcoreEnum">
+  <tr>
+    <th>Dcore=</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td class="XML-Token">Cortex-M0</td>
+    <td><a href="http://www.arm.com/products/processors/cortex-m/cortex-m0.php" target="_blank">ARM Cortex-M0</a> processor based device</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Cortex-M0+</td>
+    <td><a href="http://www.arm.com/products/processors/cortex-m/cortex-m0plus.php" target="_blank">ARM Cortex-M0+</a> processor based device</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Cortex-M1</td>
+    <td><a href="http://www.arm.com/products/processors/cortex-m/cortex-m1.php" target="_blank">ARM Cortex-M1</a> processor based device</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Cortex-M3</td>
+    <td><a href="http://www.arm.com/products/processors/cortex-m/cortex-m3.php" target="_blank">ARM Cortex-M3</a> processor based device</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Cortex-M4</td>
+    <td><a href="http://www.arm.com/products/processors/cortex-m/cortex-m4-processor.php" target="_blank">ARM Cortex-M4</a> processor based device</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Cortex-M7</td>
+    <td><a href="http://www.arm.com/products/processors/cortex-m/cortex-m7-processor.php" target="_blank">ARM Cortex-M7</a> processor based device</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">SC000</td>
+    <td>SecurCore <a href="http://www.arm.com/products/processors/securcore/sc000.php" target="_blank">SC000</a> based on technology of Cortex-M0.</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">SC300</td>
+    <td>SecurCore <a href="http://www.arm.com/products/processors/securcore/sc300.php" target="_blank">SC300</a> based on technology of Cortex-M3.</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Cortex-R4</td>
+    <td>ARM Cortex-R4 processor based device</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Cortex-R5</td>
+    <td>ARM Cortex-R5 processor based device</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Cortex-A8</td>
+    <td>ARM Cortex-A8 processor based device</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Cortex-A9</td>
+    <td>ARM Cortex-A9 processor based device</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Cortex-A15</td>
+    <td>ARM Cortex-A15 processor based device</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">*</td>
+    <td>Device based on any processor</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>
+
+
+\anchor DfpuEnum <b>Table: Device FPU</b>
+
+The table lists values that identicate whether a CPU has an Floating Point Unit (FPU).
+The tokens can be used in the elements:
+- \ref element_accept  
+- \ref element_require 
+- \ref element_deny  
+- \ref element_processor
+	
+<table class="cmtable" summary="Enumeration: DfpuEnum">
+  <tr>
+    <th>Dfpu=</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td class="XML-Token">NO_FPU</td>
+    <td>Hardware Floating Point Unit not present</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">FPU</td>
+    <td>Hardware Floating Point Unit present</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">SP_FPU</td>
+    <td>Single Precision Hardware Floating Point Unit present</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">DP_FPU</td>
+    <td>Double Precision Hardware Floating Point Unit present</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>
+
+\anchor DmpuEnum <b>Table: Device MPU</b>
+
+The table shows predefined values that identify whether a CPU has an Memory Protection Unit (MPU).
+The values can be used in the elements:
+- \ref element_accept  
+- \ref element_require 
+- \ref element_deny  
+- \ref element_processor
+
+<table class="cmtable" summary="Enumeration: DmpuEnum">
+  <tr>
+    <th>Dmpu=</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td class="XML-Token">MPU</td>
+    <td>Memory Protection Unit is present</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">NO_MPU</td>
+    <td>No Memory Protection Unit is present</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+
+\anchor DendianEnum <b>Table: Endianness</b>
+
+The table lists values representing	the endianness of a device.
+The values can be used in the elements:
+- \ref element_accept 
+- \ref element_require
+- \ref element_deny  
+- \ref element_processor
+
+<table class="cmtable" summary="Enumeration: DendianEnum">
+  <tr>
+    <th>Dendian=</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td class="XML-Token">Little-endian</td>
+    <td>The least significant byte of a multi-byte access is located at the specified address.</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Big-endian</td>
+    <td>The most significant byte of a multi-byte access is located at the specified address.</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Configurable</td>
+    <td>The byte ordering of multi-byte accesses is configurable.</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>
+<hr>
+
+\section element_debugconfig /package/devices/family/.../debugconfig
+
+Default debugger configuration for a target connection.
+
+\b Example
+\code
+
+<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
+  ...
+  <debugconfig default="jtag" clock="10000000" swj="1" sdf="Debug/SDF/lpc4300.sdf"/>
+  ...
+</family>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: debugconfig">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_family "family"</td>
+    <td colspan="3">\ref element_family</td>
+  </tr>
+  <tr>
+    <td>\ref element_subFamily "subFamily"</td>
+    <td colspan="3">\ref element_subFamily</td>
+  </tr>
+  <tr>
+    <td>\ref element_device "device"</td>
+    <td colspan="3">\ref element_device</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>default</td>
+    <td>
+      Specifies the default debug protocol to use for target connections. Predefined tokens must be used as
+      defined in \ref DebugProtocolEnum "Table: Debug Protocol Type". Default value is \token{swd}.
+    </td>
+    <td>DebugProtocolEnum</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>clock</td>
+    <td>Specifies the default debug clock setting in Hz for a target connection. Default value is \token{10000000}.</td>
+    <td>xs:unsignedInt</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>swj</td>
+    <td>
+      The device is accessed via a CoreSight SWJ-DP capable of switching between Serial Wire Debug (SWD) and JTAG protocols.
+      Default value is \token{true}.
+    </td>
+    <td>xs:bool</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>sdf</td>
+    <td>
+      This attribute specifies the filename and path of the system description file (SFD).
+      The system description file contains information about CoreSight components, there versions and how they
+      are interconnected and hooked to debug and access ports. If not specified an autodetection needs to
+      be initiated by the debugger at connection time.
+    </td>
+    <td>xs:string</td>
+    <td>optional</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+
+\anchor DebugProtocolEnum <b>Table: Debug Protocol Type</b>
+
+The table lists the values for debug protocol types.
+<table class="cmtable" summary="Enumeration: DataPatchAccessTypeEnum">
+  <tr>
+    <th>type=</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td class="XML-Token">jtag</td>
+    <td>
+      JTAG debug protocol.
+    </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">swd</td>
+    <td>
+      ARM Serial Wire Debug (SWD) protocol.
+    </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">cjtag</td>
+    <td>
+      CJTAG concurrent jtag debug protocol.
+    </td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+<hr>
+
+\section element_debugvars /package/devices/family/.../debugvars
+
+Specify \ref DebugVars "global debug access variables". Use these in addition 
+to the \ref PredefinedDebugVars "pre-defined variables" in order to
+query settings from a debug access sequences.<br>
+<br>
+Define debug access variables with statements of the following form.
+\code
+__var uservar = value;  // Comment: Define "uservar" and initialize to "value"
+\endcode
+
+\note 
+- Initialization values must be constant unsigned numbers. No expressions are allowed.
+- User-defined debug access variables are <b>read-only</b> in a debug access sequence.
+- Pre-defined debug access variables cannot be set in this element.
+
+\b Example
+\code
+
+<family Dfamily="EFM32WG Series" Dvendor="Energy Micro:97">
+  ...
+  <debugvars configfile="Debug/EFM32WGxxx.dbgconf" version="1.0">
+  
+    __var __TPIU_pinlocation = 0;  // Select one of four possible TPIU pin locations
+    
+    __var __SWO_pinlocation  = 0;  // Select one of four possible SWO pin locations
+    
+  </debugvars>
+  ...
+  <sequences>
+    <sequence name="TraceStart">
+      ...
+      <block if="__TPIU_pinlocation == 2">
+        ...
+        <!-- Configure device to use pins as defined for TPIU pin location 2 -->
+        ...
+      </block>
+      ...
+    </sequence>
+  </sequences>
+  ...
+  <debug __dp="0" __ap="0"/>
+  ...
+</family>
+\endcode
+
+<p>&nbsp;</p>
+
+<table class="cmtable" summary="Element: debugvars">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_family "family"</td>
+    <td colspan="3">\ref element_family</td>
+  </tr>
+  <tr>
+    <td>\ref element_subFamily "subFamily"</td>
+    <td colspan="3">\ref element_subFamily</td>
+  </tr>
+  <tr>
+    <td>\ref element_device "device"</td>
+    <td colspan="3">\ref element_device</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>configfile</td>
+    <td>
+      Configuration file with path relative to the package base folder (extension *.DBGCONF). This file contains 
+      assignments of a default value to global debug access variables. This file gets copied to the project folder
+      and is editable by the end-user. This file is read by the debugger after processing the global debug access variables.
+      By editing the values of the debug access variables, the end-user effectively controls the behavior of sequences.
+      The file can only assign new values but must not specify any new debug access variables.
+      \ref ConfigWizard "Configuration Wizard Annotations" shall be used within the file to provide a graphical user interface
+      for editing configuration options.
+    </td>
+    <td>xs:string</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>\ref VersionType "version"</td>
+    <td>
+      Version refers to the file version of the configfile attribute. If a configfile is specified the version attribute becomes
+      mandatory. The version shall be incremented if any changes have been made to the global debug access variable names or default
+      values. Based on the version information the tool environment will load a configfile with the version required by the debug
+      description. The end-user may be required to update the settings after updating to a new version.
+    </td>
+    <td>\ref VersionType</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>Pname</td>
+    <td>
+      Reference to a processor identifier as specified for a <b>processor</b> element. If <b>Pname</b> is set
+      for this <b>debugvars</b> element, the debug access variables and <b>configfile</b> of this element
+      are only valid for a debug connection to the referenced processor. Otherwise, they are valid for all processors.
+      <b>This attribute must be set if defining multiple \em debugvars sections for a device.</b>
+      Only alphabetical characters, decimal digits, '-' and '_' are allowed.
+    </td>
+    <td>RestrictedString</td>
+    <td>optional</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>
+
+\b Example: Configuration File 
+\code
+// File: EFM32WGxxx.dbgconf 
+// Version: 1.0
+// <<< Use Configuration Wizard in Context Menu >>>
+// <h>Trace Pin Setup
+ // <o> TPIU Pin Location
+//   <0=> Pin Location 0
+//   <1=> Pin Location 1
+//   <2=> Pin Location 2
+//   <3=> Pin Location 3
+// <i> Select TPIU pin location for your board configuration:
+// <i> - Pin Location 0 (TRACECLK: PD7, TRACEDATA0: PD6, TRACEDATA1: PD3,  TRACEDATA2: PD4,  TRACEDATA3: PD5)
+// <i> - Pin Location 1 (TRACECLK: PF8, TRACEDATA0: PF9, TRACEDATA1: PD13, TRACEDATA2: PB15, TRACEDATA3: PF3)
+// <i> - Pin Location 2 (TRACECLK: PC6, TRACEDATA0: PC7, TRACEDATA1: PD3,  TRACEDATA2: PD4,  TRACEDATA3: PD5)
+// <i> - Pin Location 3 (TRACECLK: PA6, TRACEDATA0: PA2, TRACEDATA1: PA3,  TRACEDATA2: PA4,  TRACEDATA3: PA5)
+// <i> Default: Pin Location 0
+__TPIU_pinlocation = 0;
+  
+// <o> SWO Pin Location
+//   <0=> Pin Location 0
+//   <1=> Pin Location 1
+//   <2=> Pin Location 2
+//   <3=> Pin Location 3
+// <i> Select SWO pin location for your board configuration:
+// <i> - Pin Location 0 (SWO: PF2)
+// <i> - Pin Location 1 (SWO: PC15)
+// <i> - Pin Location 2 (SWO: PD1)
+// <i> - Pin Location 3 (SWO: PD2)
+// <i> Default: Pin Location 0
+__SWO_pinlocation = 0;
+  
+// </h>
+// <<< end of configuration section >>>
+\endcode
+
+<p>&nbsp;</p>
+
+\anchor DebugVars <b>Debug Access Variables</b>
+
+Debug access variables hold 64-bit unsigned integer values and are used in debug access
+sequences to query debugger settings and states. They are <b>read-only</b> within a
+sequence except from a limited set of the \ref PredefinedDebugVars "pre-defined debug access variables".
+Use the <b>debugvars</b> element to specify additional user-defined debug access variables.
+
+
+\anchor PredefinedDebugVars <b>Table: Pre-defined Debug Access Variables</b><br>
+A debugger needs to support a set of pre-defined debug access variables. These are
+described in the following table.
+
+<table class="cmtable" summary="ExpressionType: Pre-defined Debug Access Variables">
+  <tr>
+    <th>Variable</th>
+    <th>Access</th>
+    <th>Description</th>
+    <th>Value=</th>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>__protocol</pre></td>
+    <td>Read-Only</td>
+    <td>
+      Debug protocol selection and parameters for target connection.
+    </td>
+    <td>
+      The following bit map applies:<br>
+      - Bit 0..15: Type
+        - \token{0}: Error<br>
+        - \token{1}: JTAG<br>
+        - \token{2}: Serial Wire Debug (SWD)<br>
+        - \token{3}: CJTAG<br>
+      - Bit 16: SWJ-DP
+      - Bit 17..63: Reserved
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>__connection</pre></td>
+    <td>Read-Only</td>
+    <td>
+      Target connection configuration.
+    </td>
+    <td>
+      The following bit map applies:<br>
+      - Bit 0..7: Connection type
+        - \token{0}: Error or target is disconnected.
+        - \token{1}: Connection for target debug.
+        - \token{2}: Connection for downloading application to flash.
+      - Bit 8..15: Reset type.
+        - \token{0}: Error.
+        - \token{1}: Hardware Reset (debugger reset line).
+        - \token{2}: System Reset Request.
+        - \token{3}: Processor Reset Request ("Vector Reset").
+      - Bit 16..63: Reserved
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>__dp</pre></td>
+    <td>Read/Write</td>
+    <td>
+      Debug Port selected for target accesses.<br>
+      This variable is initialized when entering a pre-defined debug access
+      sequence because of a debug event. The initialization value
+      is the <b>__dp</b> as defined for the used <b>debug</b> element.
+    </td>
+    <td>
+      Debug port ID as specified in a <b>debugport</b> element or
+      \token{0} if no <b>debugport</b> element exists.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>__ap</pre></td>
+    <td>Read/Write</td>
+    <td>
+      Access Port selected for target accesses.<br>
+      This variable is initialized when entering a pre-defined debug access
+      sequence because of a debug event. The initialization value
+      is the <b>__ap</b> as defined for the used <b>debug</b> element.
+    </td>
+    <td>
+      Access Port index.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>__traceout</pre></td>
+    <td>Read-Only</td>
+    <td>
+      Activated trace outputs (sinks). Additionally holds information on the selected port width if
+      a parallel trace port is enabled.
+    </td>
+    <td style="white-space: nowrap">
+      The following bit map applies:<br>
+      - Bit 0: Serial Wire Output (SWO) Trace enabled.
+      - Bit 1: Parallel Trace Port enabled.
+      - Bit 2: Trace Buffer enabled.
+      - Bit 3..15: Reserved.
+      - Bit 16..21: Selected Parallel Trace Port size.
+      - Bit 22..63: Reserved.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>__errorcontrol</pre></td>
+    <td>Read/Write</td>
+    <td>
+      Control variable for debug access error handling. All of its bit
+      fields are intialized to \token{0} when entering a pre-defined
+      debug access sequence because of a debug event.
+    </td>
+    <td>
+      The following bit map applies:<br>
+      - Bit 0: Skip errors if set to \token{1}. A debugger must
+               continue the sequence execution.
+      - Bit 1..63: Reserved
+    </td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+
+<hr>
+
+\section element_debugport /package/devices/family/.../debugport
+
+Describes a CoreSight debug port of the device and its capabilities. The element can occur on various
+levels. Use unique ID values for the attribute <b>__dp</b> to distinguish multiple <b>debugport</b>
+elements in later references.<br><br>
+<b>debugport</b> elements are required for targets with multiple debug ports. For devices with a
+single debug port these elements can be omitted. If no <b>debugport</b> element exists the only
+allowed <b>__dp</b> ID in later references is \token{0}.
+
+\b Example
+\code
+
+<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
+  ...
+  <debugconfig default="jtag" clock="10000000" swj="1"/>
+  
+  <debugport __dp="0">
+    <jtag tapindex="0"/>
+    <swd/>
+  </debugport>
+  
+  <debugport __dp="1">
+    <jtag tapindex="1"/> 
+  </debugport>
+  ...
+</family>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: debugport">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_family "family"</td>
+    <td colspan="3">\ref element_family</td>
+  </tr>
+  <tr>
+    <td>\ref element_subFamily "subFamily"</td>
+    <td colspan="3">\ref element_subFamily</td>
+  </tr>
+  <tr>
+    <td>\ref element_device "device"</td>
+    <td colspan="3">\ref element_device</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>__dp</td>
+    <td>
+      Unique ID of this <b>debugport</b>. It must be used consistently in references within the scope of
+      the parent section.
+    </td>
+    <td>xs:unsignedInt</td>
+    <td>required</td>
+  </tr>
+  <tr>
+    <th>Child&nbsp;Elements</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Occurrence</th>
+  </tr>
+  <tr>
+    <td>\ref element_dp_jtag "jtag"</td>
+    <td>Describe JTAG Test Access Port (TAP) properties of this debug port.</td>
+    <td>JtagType</td>
+    <td>0..1</td>
+  </tr>
+  <tr>
+    <td>\ref element_dp_swd "swd"</td>
+    <td>Describe CoreSight Serial Wire Debug Port (SW-DP) properties of this debug port.</td>
+    <td>SwdType</td>
+    <td>0..1</td>
+  </tr>
+  <tr>
+    <td>\ref element_dp_cjtag "cjtag"</td>
+    <td>Describe CJTAG Test Access Port (TAP) properties of this debug port.</td>
+    <td>CjtagType</td>
+    <td>0..1</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+<hr>
+
+
+\section element_dp_jtag /package/devices/family/.../debugport/jtag
+
+Indicates availability of a JTAG interface for the <b>debugport</b> parent element. Its
+attributes allow the manual override of a debugger's automatic JTAG Test Access Port (TAP)
+detection.
+
+\b Example
+\code
+<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
+  ...
+  <debugconfig default="swd" clock="10000000" swj="1"/>
+  
+  <debugport __dp="0">
+    <jtag tapindex="0" idcode="0x4BA00477" irlen="4"/>
+    <swd  idcode="0x2BA01477"/>
+  </debugport>
+  ...
+</family>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: jtag">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_debugport "debugport"</td>
+    <td colspan="3">\ref element_debugport</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>tapindex</td>
+    <td>Specifies the TAP index relative to the JTAG scan chain of this device. A debugger needs to determine the absolute index
+    if the device is part of an extended scan chain. Default value is \token{0}. </td>
+    <td>NonNegativeInteger</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>idcode</td>
+    <td>Specifies the IDCODE of the JTAG TAP. This value overrides the IDCODE read from the target. </td>
+    <td>NonNegativeInteger</td>
+    <td>optional</td>
+  </tr>
+<!--- finalize when there are multidrop devices available (or when we have DS-5 support for that)
+  <tr>
+    <td>targetsel</td>
+    <td>Specifies the value to write to a CoreSight debug port's TARGETSEL register to select this port for connection.
+    The element is required for debug ports with multi-drop support. It is ignored otherwise. <b>(Unsupported)</b></td>
+    <td>NonNegativeInteger</td>
+    <td>optional</td>
+  </tr>
+-->
+  <tr>
+    <td>irlen</td>
+    <td>Specifies the instruction register length of the JTAG TAP. This value overrides the instruction register length detected by a debugger. </td>
+    <td>xs:unsignedInt</td>
+    <td>optional</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+<hr>
+
+\section element_dp_swd /package/devices/family/.../debugport/swd
+
+Indicates availability of an ARM Serial Wire Debug (SWD) interface for the <b>debugport</b> parent element.
+Its attributes allow the manual override of SWD port characteristics as read from the target and provide
+information for the port selection in a system with multi-drop SWD support.
+
+\b Example
+\code
+<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
+  ...
+  <debugconfig default="swd" clock="10000000" swj="1"/>
+  
+  <debugport __dp="0">
+    <jtag tapindex="0" idcode="0x4BA00477" irlen="4"/>
+    <swd idcode="0x2BA01477"/>
+  </debugport>
+  ...
+</family>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: swd">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_debugport "debugport"</td>
+    <td colspan="3">\ref element_debugport</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>idcode</td>
+    <td>Specifies the IDCODE of the SWD port. It overrides the value read from the port's IDCODE register. </td>
+    <td>NonNegativeInteger</td>
+    <td>optional</td>
+  </tr>
+<!--- finalize when there are multidrop devices available (or when we have DS-5 support for that)
+  <tr>
+    <td>targetsel</td>
+    <td>Specifies the value to write to a CoreSight debug port's TARGETSEL register to select this port for connection.
+    The element is required for debug ports with multi-drop SWD support. It is ignored otherwise. <b>(Unsupported)</b></td>
+    <td>NonNegativeInteger</td>
+    <td>optional</td>
+  </tr>
+--->
+</table>
+
+<p>&nbsp;</p>		
+<hr>
+
+\section element_dp_cjtag /package/devices/family/.../debugport/cjtag
+
+Indicates availability of a CJTAG interface for the <b>debugport</b> parent element. Its
+attributes allow the manual override of a debugger's automatic CJTAG Test Access Port (TAP)
+detection.
+
+\b Example
+\code
+<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
+  ...
+  <debugconfig default="swd" clock="10000000" swj="1"/>
+  
+  <debugport __dp="0">
+    <cjtag tapindex="0" idcode="0x4BA00477" irlen="4"/>
+    <swd  idcode="0x2BA01477"/>
+  </debugport>
+  ...
+</family>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: cjtag">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_debugport "debugport"</td>
+    <td colspan="3">\ref element_debugport</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>tapindex</td>
+    <td>Specifies the TAP index relative to the JTAG scan chain of this device. A debugger needs to determine the absolute index
+    if the device is part of an extended scan chain. Default value is \token{0}. </td>
+    <td>NonNegativeInteger</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>idcode</td>
+    <td>Specifies the IDCODE of the JTAG TAP. This value overrides the IDCODE read from the target. </td>
+    <td>NonNegativeInteger</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>irlen</td>
+    <td>Specifies the instruction register length of the JTAG TAP. This value overrides the instruction register length detected by a debugger. </td>
+    <td>xs:unsignedInt</td>
+    <td>optional</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+<hr>
+
+\section element_sequences /package/devices/family/.../sequences
+
+Container for debug access sequences for this device.
+
+\b Example
+\code
+<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
+  ...
+  <sequences>
+    ...
+    <sequence name="DebugCoreStart" Pname="Cortex-M0">
+      ...
+    </sequence>
+    ...
+    <sequence name="ResetSystem" Pname="Cortex-M4">
+      ...
+    </sequence>
+    ...
+    <sequence name="TraceStart" Pname="Cortex-M4">
+      ...
+    </sequence>
+    ...
+  </sequences>
+  ...
+</family>
+\endcode
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: sequences">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_family "family"</td>
+    <td colspan="3">\ref element_family</td>
+  </tr>
+  <tr>
+    <td>\ref element_subFamily "subFamily"</td>
+    <td colspan="3">\ref element_subFamily</td>
+  </tr>
+  <tr>
+    <td>\ref element_device "device"</td>
+    <td colspan="3">\ref element_device</td>
+  </tr>
+  <tr>
+    <th>Child&nbsp;Elements</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Occurrence</th>
+  </tr>
+  <tr>
+    <td>\ref element_sequence "sequence"</td>
+    <td>
+      Describe a debug access sequence.
+    </td>
+    <td>SequenceType</td>
+    <td>1..*</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+<hr>
+
+\section element_sequence /package/devices/family/.../sequences/sequence
+
+Describes a Debug Access Sequence which contains <b>control</b> and
+<b>block</b> elements. <b>block</b> elements contains statements
+including calls to \ref DebugFunctions "Debug Access Functions". A Debug
+Access Sequence overrides or extends the default functionality of a development tool.
+Refer to \ref usage_of_sequences for details.<br>
+
+\note
+- <b>control</b> elements can contain other <b>control</b> and <b>block</b>
+  elements. <b>The maximum nesting of \em control elements is 10.</b>
+
+\b Example
+\code
+<family Dfamily="Generic Family" Dvendor="Generic:5">
+  ...
+  <sequences>
+    ...
+    <sequence name="UserSequence">
+      
+      <block info="Define variables and do debug accesses">
+        __var tpWidth = (__traceout &amp; 0x003F0000) >> 16;
+        ...
+      </block>
+      
+      <control if="__traceout &amp; 0x2" info="Parallel Trace Port enabled">
+      
+        <block>
+          // Do something generic for parallel trace port trace
+          ...
+        </block>
+        
+        <control if="tpWidth == 1" info="Configure device for 1-bit TPIU trace.">
+        
+          <block>
+            // Do debug accesses
+            ...
+          </block>
+          
+        </control>
+        
+        <control if="tpWidth == 2" info="Configure device for 2-bit TPIU trace.">
+        
+          <block>
+            // Do debug accesses
+            ...
+          </block>
+          
+        </control>
+        
+        <control if="tpWidth == 4" info="Configure device for 4-bit TPIU trace.">
+        
+          <block>
+            // Do debug accesses
+            ...
+          </block>
+          
+        </control>
+
+      </control>
+      ...
+    </sequence>
+    ...
+  </sequences>
+  ...
+</family>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: sequence">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_sequences "sequences"</td>
+    <td colspan="3">\ref element_sequences</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>name</td>
+    <td>Name of the Debug Access Sequence:<br>
+    - Pre-defined names are executed by the development tool described under \ref usage_of_sequences.
+    - Any Debug Access Sequence can be executed the \ref DebugFunctions "debug access function" <b>Sequence</b>.
+    </td>
+    <td>xs:string</td>
+    <td>required</td>
+  </tr>
+  <tr>
+    <td>Pname</td>
+    <td>
+      Reference to a processor identifier as specified for a <b>processor</b> element. If <b>Pname</b> is set
+      for this <b>sequence</b> element, a debugger executes the debug access sequence only for a debug connection
+      to the referenced processor. Otherwise, it is executed for all processors.
+      <b>This attribute must be set if defining multiple implementations of the same debug access sequence.</b>
+      Only alphabetical characters, decimal digits, '-' and '_' are allowed. 
+    </td>
+    <td>RestrictedString</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>disable</td>
+    <td>Disables execution of the \ref default_sequences "Default Debug Access Sequence".</td>
+    <td>xs:boolean</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>info</td>
+    <td>Descriptive text to display for example for error diagnostics.</td>
+    <td>xs:string</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <th>Child&nbsp;Elements</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Occurrence</th>
+  </tr>
+  <tr>
+    <td>\ref element_seq_control "control"</td>
+    <td>
+      Describe a debug access sequence flow control element.
+    </td>
+    <td>SequenceControlType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_seq_block "block"</td>
+    <td>
+      Describe a block of debug accesses.
+    </td>
+    <td>SequenceBlockType</td>
+    <td>0..*</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+
+\anchor sequences_names <b>Table: Pre-defined Debug Access Sequences</b>
+
+The following table list the Pre-defined Debug Access Sequences.
+For sequences that are not specified in a <b>sequence</b> element \ref default_sequences are executed.
+Refer to \ref usage_of_sequences Usage for more information about the execution of these sequences.
+
+<table class="cmtable" summary="Enumeration: SequenceNameEnum">
+  <tr>
+    <th>name=</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td class="XML-Token">\ref DebugPortSetup</td>
+    <td>Prepare the target debug port for connection; is executed before acquiring access to the debug port.<br>
+	May include for example an SWJ-DP switch sequence as defined in the ARM Debug Interface (ADI) Architecture Specification.<br>
+    <b>This sequence must not contain debug port/access port register and target memory accesses other than:</b>
+    - <b>Reading the \em DPIDR debug port register to release an SWD connection from its line reset.</b>
+    - <b>Writing the \em TARGETSEL debug port register (SWD protocol v2).</b>
+    </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">\ref DebugPortStart</td>
+    <td>Connect to the target debug port and power it up; is executed after DebugPortSetup.<br>
+	The parent <b>debugport</b> is default debug port for this sequence.<br>
+    <b>This sequence must not contain access port register and target memory accesses.</b></td>
+  </tr>
+  <tr>
+    <td class="XML-Token">\ref DebugPortStop</td>
+    <td>Power down and disconnect from target debug port.<br>
+    Executed as last step during target disconnect unless another debugger connection to this port is active. The parent
+    <b>debugport</b> is default debug port for this sequence.<br>
+    <b>This sequence must not contain access port register and target memory accesses.</b></td>
+  </tr>
+  <tr>
+    <td class="XML-Token">DebugDeviceUnlock</td>
+    <td>Check if the device is in a locked state and unlock it. Use <b>query</b> command elements
+    for user confirmation.<br>
+    Executed after having powered up the debug port.</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">\ref DebugCoreStart</td>
+    <td>Initialize core debug system.<br>
+    Executed after having connected and powered up the default debug port for the connection.</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">\ref DebugCoreStop</td>
+    <td>Uninitialize core debug system.<br>
+    Executed as last step during disconnect before powering down any debug ports no longer required for
+    concurrent connections.</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">DebugCodeMemRemap</td>
+    <td>Remap memory to execution location.<br>
+    Executed before verifying memory content after flash programming. This is required to replicate a memory remap of a device bootloader (that is not executed during debug connection).
+    </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">\ref ResetSystem</td>
+    <td>Execute a system-wide reset via software mechanisms.
+    </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">\ref ResetProcessor</td>
+    <td>Execute a processor reset via software mechanisms.
+    </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">\ref ResetHardware</td>
+    <td>Execute a system-wide reset via the dedicated debugger reset line, e.g. nRST.
+  </tr>
+  <tr>
+    <td class="XML-Token">\ref ResetHardwareAssert</td>
+    <td>Assert a system-wide reset via the dedicated debugger reset line, e.g. nRST.
+  </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">\ref ResetHardwareDeassert</td>
+    <td>Deassert a system-wide reset via the dedicated debugger reset line, e.g. nRST.
+    </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">\ref ResetCatchSet</td>
+    <td>Executed before a target reset to configure the vector catch to stop code execution after the reset.<br>
+    The implementation of <b>ResetCatchSet</b> requires an implementation of <b>ResetCatchClear</b>
+    to free any hardware resources used for stopping the core.
+    </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">\ref ResetCatchClear</td>
+    <td>Executed after a target reset to free hardware resources allocated by <b>ResetCatchSet</b>.
+    </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">FlashEraseDone</td>
+    <td>
+    Executed after erasing flash memory.
+    </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">FlashProgramDone</td>
+    <td>
+    Eexecuted after programming flash memory.
+    </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">TraceStart</td>
+    <td>Enable target trace capture.<br>
+    Executed before the debugger powers up and configures standard CoreSight trace components, e.g. after the initial target connection
+    as well as after a system-wide reset.
+    </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">TraceStop</td>
+    <td>Disable target trace capture.<br>
+    Executed after the debugger disabled and powered down standard CoreSight trace components.
+    </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">RecoverySupportStart</td>
+    <td>Executed before step or run command to support recovery from a lost target connection, e.g. after a low power mode.
+    </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">RecoverySupportStop</td>
+    <td>Executed after step or run command in context of the <b>RecoverySupportStart</b> sequence.
+    </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">RecoveryAcknowledge</td>
+    <td>Debugger acknowledge after recovering from a lost target connection. Can be executed independently
+    from a <b>RecoverySupportStart</b> sequence.
+    </td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>
+<hr>
+
+\section element_seq_control /package/devices/family/.../sequences/sequence/control
+
+Describes flow control like <b>if</b> and <b>while</b> blocks for debug access sequences.
+
+\b Example
+\code
+<family Dfamily="Generic Family" Dvendor="Generic:5">
+  ...
+  <sequences>
+    ...
+    <sequence name="UserSequence">
+      ...
+      <block info="Define variables and do debug accesses">
+        __var doIfBlock      = 1;
+        __var whileCondition = 1;
+        ...
+      </block>
+      ...
+      <control if="doIfBlock">
+      
+        <block>
+          // Do debug accesses
+          ...
+        </block>
+        
+      </control>
+      ...
+      <control while="whileCondition" timeout="5000">
+      
+        <block>
+          // Execute while "whileCondition" different from '0' with a timeout of 5ms
+          whileCondition = 0;
+        </block>
+        
+      </control>
+      ...
+    </sequence>
+    ...
+  </sequences>
+  ...
+</family>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: control">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_sequence "sequence"</td>
+    <td colspan="3">\ref element_sequence</td>
+  </tr>
+  <tr>
+    <td>\ref element_seq_control "control"</td>
+    <td colspan="3">\ref element_seq_control</td>
+  </tr>
+  <tr>
+    <th>Attribute</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>if</td>
+    <td>
+      Expression describing the condition under which to execute this sequence block.
+      The block is skipped if the condition resolved to \token{false}. Defaults to
+      \token{true} if not set.
+      Refer to \ref ExpressionType "Expression Rules" for the syntax.
+    </td>
+    <td>ExpressionType</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>while</td>
+    <td>
+      Expression describing a while-condition. The execution of the block contents is
+      repeated while the condition resolves to \token{true}, or until an optional
+      <b>timeout</b> is reached.
+      Refer to \ref ExpressionType "Expression Rules" for the syntax.
+    </td>
+    <td>ExpressionType</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>timeout</td>
+    <td>
+      Timeout in microseconds for a <b>block</b> with a <b>while</b> condition. A debugger must
+      extend the timeout to the closest possible time granularity. If the timeout is reached,
+      the current iteration including a last evaluation of the <b>while</b> condition must
+      finish. A value of \token{0} disables the timeout.<br>
+      This attribute defaults to \token{0}.
+    </td>
+    <td>xs:unsignedInt</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>info</td>
+    <td>Descriptive text to display for example for error diagnostics.</td>
+    <td>xs:string</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <th>Child&nbsp;Elements</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Occurrence</th>
+  </tr>
+  <tr>
+    <td>\ref element_seq_control "control"</td>
+    <td>
+      Describe a debug access sequence flow control element.
+    </td>
+    <td>SequenceControlType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_seq_block "block"</td>
+    <td>
+      Describe a block of debug accesses.
+    </td>
+    <td>SequenceBlockType</td>
+    <td>0..*</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>
+<hr>
+
+\section element_seq_block /package/devices/family/.../sequences/sequence/block
+
+Describes a block of debug accesses. See \ref DebugSyntaxRules "Debug Access Syntax Rules"
+for details on the allowed syntax of the block contents.
+
+\b Example
+\code
+<family Dfamily="Generic Family" Dvendor="Generic:5">
+  ...
+  <sequences>
+    ...
+    <sequence name="UserSequence">
+      ...
+      <block info="Define condition variales for later use in block elements.">
+        // Variable definition by __var keyword
+        __var doIfBlock      = 1;
+        __var whileCondition = 1;
+      </block>
+      ...
+    </sequence>
+    ...
+  </sequences>
+  ...
+</family>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: block">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_sequence "sequence"</td>
+    <td colspan="3">\ref element_sequence</td>
+  </tr>
+  <tr>
+    <td>\ref element_seq_control "control"</td>
+    <td colspan="3">\ref element_seq_control</td>
+  </tr>
+  <tr>
+    <th>Attribute</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>atomic</td>
+    <td>
+      Instruct the debugger to execute the block contents atomically; a debugger needs to
+      download and buffer all debug accesses to the debug probe and finish the
+      execution without further communication to the host PC. If a debugger cannot
+      support an atomic block it must abort the execution of the debug access sequence.<br>
+      </td>
+    <td>xs:boolean</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>info</td>
+    <td>Descriptive text to display for example for error diagnostics.</td>
+    <td>xs:string</td>
+    <td>optional</td>
+  </tr>
+</table>
+
+<b>Atomic Blocks:</b>
+- Do not use debug access results for subsequent accesses in the same atomic block.
+- Support for atomic blocks is highly debugger dependent. Keep them as short and simple as possible
+to address a wide range of debuggers.
+- <b>Query</b> and <b>Sequence</b> debug access functions must not be used in an atomic block.
+
+<p>&nbsp;</p>
+
+\anchor DebugSyntaxRules <b>Debug Access Syntax Rules</b>
+
+Debug accesses are described in <b>block</b> elements of a debug access sequence (<b>sequence</b> element).
+The following syntax is used for this purpose:
+- The contents of a <b>block</b> element is a series of statements.
+- Each statement must begin in a new line and is terminated by a \token{;} character.
+- A typical statement consists of variable, followed by a \token{=} character and an expression, where the
+\token{=} character is an assignment of the \ref ExpressionType "expression" result to the variable:
+\code
+variable = expression;
+\endcode
+- Alternatively, a statement can be a sole \ref ExpressionType "expression" without storing its result
+to a variable.
+\code
+expression;
+\endcode
+- Comments begin with two slashes (\token{//}) and end with a linebreak:
+\code
+// Whole line is a comment
+variable = expression;  // Comment appended to statement
+\endcode
+- Variables must be defined using the keyword \token{__var}. The definition must include an initalization
+  of the variable:
+\code
+__var variable = 0;
+\endcode
+- Variables can be defined only once within a scope. Scopes beging with entering a debug access
+  sequence or a <b>control</b> element. They are extended to child <b>control</b> elements.
+  Variables of a parent scope can be modified. Leaving a scope destroys all variables defined in it.<br>
+  <b>\em block elements do not begin a new scope.</b>
+\code
+<sequence name="MySequence">
+  
+  <block info="Block 1">
+    __var condvar = 1;
+    __var myvar1  = 5;
+    __var myvar2  = 0;
+  </block>
+  
+  <control if="condvar">
+    <block>
+      // __var myvar1 = 2;      // Redefinition, not allowed!
+      __var myvar3 = 2;
+      myvar2 = myvar1 + myvar3; // Assign value (5+2) = 7
+    </block>
+  </control>
+  
+  <block info="Block 2">
+    myvar1 = myvar2 + 1;  // Variable myvar1 holds the value '8' after this statement
+    // myvar2 = myvar3;   // myvar3 does not exist in this scope, not allowed!
+  </block>
+  
+</sequence>
+\endcode
+- The debug access variables <b>__dp</b>, <b>__ap</b>, and <b>__errorcontrol</b> can be modified
+  within a debug access sequence. An assigned value is held until leaving the sequence. Calling
+  another sequence by the <b>Sequence</b> debug access function will push their values on a
+  sequence execution stack. The values are restored when returning from such a call.
+
+
+\anchor ExpressionType <b>Expression Rules</b>
+
+Expressions are used in various places to describe one of the following:
+- A value as assigned in a \ref DebugSyntaxRules "debug access statement".
+- A condition to use in the <b>if</b> attribute of a <b>control</b> element.
+- A condition to use in the <b>while</b> attribute of a <b>control</b> element.
+- A parameter to a debug access function as described below.
+
+An expression may consist of the following:
+- Constant numbers in decimal and hexadecimal representation (prefix \token{0x}).
+- Arithmetic operators such as \token{+}, \token{-}, \token{*}, \token{/}, and \token{%}.
+- Bit-arithmetic operators such as \token{&}, \token{|}, \token{~}, \token{^}, \token{>>}, and \token{<<}.
+- Comparison-operators such as \token{==}, \token{!=}, \token{<}, \token{>}, \token{<=}, and \token{>=}.
+- Logic operators such as \token{!}, \token{&&}, \token{||}, and \token{==}.
+- Conditional expression operations like: \code (x < y) ? a : b \endcode
+- Precedence of sub-expressions is indicated by brackets (\token{(}, \token{)}). C-like precedence applies 
+  if brackets are omitted.
+- References to \ref DebugVars "debug access variables" for evaluating debug settings.
+- Calls to \ref DebugFunctions "debug access functions".
+
+\note
+- All values used in expressions resolve to 64-bit unsigned integer values.
+- All logic-operations and comparisons resolve to the value \token{1} if true, to \token{0} otherwise.
+- XML prohibits the use of the characters \token{&}, \token{<}, and \token{>}. Use the corresponding
+  XML entity names instead: \token{&amp;amp;}, \token{&amp;lt;}, and \token{&amp;gt;}.
+
+<p>&nbsp;</p>
+
+\anchor DebugFunctions <b>Table: Debug Access Functions</b>
+
+Debug access functions can be called in expressions in order to interact with the target device
+and the user. Parameters to functions can again be expressions.<br>
+By default, a debugger must abort the execution of a debug access sequence if a function call fails.
+However, this behavior can be controlled from a sequence by the <b>__errorcontrol</b> 
+\ref DebugVars "debug access variable".<br>
+<br>
+The following table describes the existing debug access functions, their parameters and the
+debug access variables which are evaluated for the function call.
+
+<table class="cmtable" summary="ExpressionType: debug access functions">
+  <tr>
+    <th>Function</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>Sequence("name")</pre></td>
+    <td>
+      Execute a debug access sequence.
+      Calling a sequence by this function causes the modifiable debug access variables <b>__dp</b>,
+      <b>__ap</b>, and <b>__errorcontrol</b> to be pushed on a sequence execution stack. Returning
+      from such a call will restore the state of these variables.<br>
+      <br>
+      <b>Parameters:</b><br>
+      - name: Name of the sequence to execute. It must be enclosed by quotes.
+      
+      <b>Return Value:</b><br>
+      Always returns \token{0}.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>Read8(addr)</pre></td>
+    <td>
+      Read an 8-bit value from target memory.
+      <b>A device must support native 8-bit memory accesses for this function to succeed.</b><br>
+      <br>
+      <b>Parameters:</b><br>
+      - addr: Memory address to read from.
+      
+      <b>Debug Access Variables:</b><br>
+      - __dp: The debug port to use for this memory access.
+      - __ap: The access port to use for this memory access.
+      
+      <b>Return Value:</b><br>
+      The 8-bit value as read from target memory.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>Read16(addr)</pre></td>
+    <td>
+      Read an 16-bit value from target memory.
+      <b>A device must support native 16-bit memory accesses for this function to succeed.</b><br>
+      <br>
+      <b>Parameters:</b><br>
+      - addr: Memory address to read from.
+      
+      <b>Debug Access Variables:</b><br>
+      - __dp: The debug port to use for this memory access.
+      - __ap: The access port to use for this memory access.
+
+      <b>Return Value:</b><br>
+      The 16-bit value as read from target memory.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>Read32(addr)</pre></td>
+    <td>
+      Read an 32-bit value from target memory.
+      <b>A device must support native 32-bit memory accesses for this function to succeed.</b><br>
+      <br>
+      <b>Parameters:</b><br>
+      - addr: Memory address to read from.
+      
+      <b>Debug Access Variables:</b><br>
+      - __dp: The debug port to use for this memory access.
+      - __ap: The access port to use for this memory access.
+
+      <b>Return Value:</b><br>
+      The 32-bit value as read from target memory.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>Read64(addr)</pre></td>
+    <td>
+      Read an 64-bit value from target memory.
+      <b>A device must support native 64-bit memory accesses for this function to succeed.</b><br>
+      <br>
+      <b>Parameters:</b><br>
+      - addr: Memory address to read from.
+      
+      <b>Debug Access Variables:</b><br>
+      - __dp: The debug port to use for this memory access.
+      - __ap: The access port to use for this memory access.
+      
+      <b>Return Value:</b><br>
+      The 64-bit value as read from target memory.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>ReadAP(addr)</pre></td>
+    <td>
+      Read a 32-bit value from an access port register.<br>
+      <br>
+      <b>Parameters:</b><br>
+      - addr: AP register address to read from. Addresses larger than \token{0xF} automatically cause
+      an AP register bank switch. 
+      
+      <b>Debug Access Variables:</b><br>
+      - __dp: The debug port to use for this memory access.
+      - __ap: The access port to use for this memory access.
+      
+      <b>Return Value:</b><br>
+      The 32-bit value as read from the AP register.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>ReadDP(addr)</pre></td>
+    <td>
+      Read a 32-bit value from a debug port register.<br>
+      <br>
+      <b>Parameters:</b><br>
+      - addr: DP register address to read from.
+      
+      <b>Debug Access Variables:</b><br>
+      - __dp: The debug port to use for this memory access.
+
+      <b>Return Value:</b><br>
+      The 32-bit value as read from the DP register.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>Write8(addr, val)</pre></td>
+    <td>
+      Write an 8-bit value to target memory.
+      <b>A device must support native 8-bit memory accesses for this function to succeed.</b><br>
+      <br>
+      <b>Parameters:</b><br>
+      - addr: Memory address to write to.
+      - val: Value to write.
+      
+      <b>Debug Access Variables:</b><br>
+      - __dp: The debug port to use for this memory access.
+      - __ap: The access port to use for this memory access.
+
+      <b>Return Value:</b><br>
+      Always returns \token{0}.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>Write16(addr, val)</pre></td>
+    <td>
+      Write a 16-bit value to target memory.
+      <b>A device must support native 16-bit memory accesses for this function to succeed.</b><br>
+      <br>
+      <b>Parameters:</b><br>
+      - addr: Memory address to write to.
+      - val: Value to write.
+      
+      <b>Debug Access Variables:</b><br>
+      - __dp: The debug port to use for this memory access.
+      - __ap: The access port to use for this memory access.
+
+      <b>Return Value:</b><br>
+      Always returns \token{0}.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>Write32(addr, val)</pre></td>
+    <td>
+      Write a 32-bit value to target memory.
+      <b>A device must support native 32-bit memory accesses for this function to succeed.</b><br>
+      <br>
+      <b>Parameters:</b><br>
+      - addr: Memory address to write to.
+      - val: Value to write.
+      
+      <b>Debug Access Variables:</b><br>
+      - __dp: The debug port to use for this memory access.
+      - __ap: The access port to use for this memory access.
+
+      <b>Return Value:</b><br>
+      Always returns \token{0}.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>Write64(addr, val)</pre></td>
+    <td>
+      Write a 64-bit value to target memory.
+      <b>A device must support native 64-bit memory accesses for this function to succeed.</b><br>
+      <br>
+      <b>Parameters:</b><br>
+      - addr: Memory address to write to.
+      - val: Value to write.
+      
+      <b>Debug Access Variables:</b><br>
+      - __dp: The debug port to use for this memory access.
+      - __ap: The access port to use for this memory access.
+
+      <b>Return Value:</b><br>
+      Always returns \token{0}.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>WriteAP(addr, val)</pre></td>
+    <td>
+      Write a 32-bit value to an access port register.
+      Addresses larger than 0xF automatically cause an AP register bank switch.<br>
+      <br>
+      <b>Parameters:</b><br>
+      - addr: Memory address to write to.
+      - val: Value to write.
+      
+      <b>Debug Access Variables:</b><br>
+      - __dp: The debug port to use for this memory access.
+      - __ap: The access port to use for this memory access.
+
+      <b>Return Value:</b><br>
+      Always returns \token{0}.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>WriteDP(addr, val)</pre></td>
+    <td>
+      Write a 32-bit value to a debug port register.<br>
+      <br>
+      <b>Parameters:</b><br>
+      - addr: Memory address to write to.
+      - val: Value to write.
+      
+      <b>Debug Access Variables:</b><br>
+      - __dp: The debug port to use for this memory access.
+
+      <b>Return Value:</b><br>
+      Always returns \token{0}.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>DAP_Delay(delay)</pre></td>
+    <td>
+      Debug probe command to wait for a specific delay.<br>
+      <br>
+      <b>Parameters:</b><br>
+      - delay: Wait time in microseconds.
+
+      <b>Return Value:</b><br>
+      Always returns \token{0}.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>DAP_WriteABORT(value)</pre></td>
+    <td>
+      Debug probe command to write an abort request to the CoreSight
+      ABORT register of the target debug port.<br>
+      <br>
+      <b>Parameters:</b><br>
+      - value: 32-bit value to write into the CoreSight ABORT register.
+      
+      <b>Debug Access Variables:</b><br>
+      - __dp: The debug port to use for this memory access.
+
+      <b>Return Value:</b><br>
+      Always returns \token{0}.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>DAP_SWJ_Pins(pinout, pinselect, pinwait)</pre></td>
+    <td>
+      Debug proble command to monitor and control the I/O Pins including the nRESET
+      device reset line.<br>
+      <b>I/O Pin Mapping</b> for <b>pinout</b>, <b>pinselect</b>, and <b>pinwait</b>:
+        - Bit 0: SWCLK/TCK
+        - Bit 1: SWDIO/TMS
+        - Bit 2: TDI
+        - Bit 3: TDO
+        - Bit 5: nTRST
+        - Bit 7: nRESET
+      
+      <br>
+      The <b>pinwait</b> time is useful in systems where the nRESET pin is implemented as open-drain
+      output. After nRESET is de-asserted by the debugger, external circuit may still hold the
+      target Device under reset for a time. Using the <b>pinwait</b> time, the debugger may monitor
+      selected I/O Pins and wait until they the expected value appears or a timeout expires.<br>
+      <br>
+      <b>Parameters:</b><br>
+      - pinout: Value for selected output pins.
+      - pinselect: Selects which output pins will be modified.
+      - pinwait: Wait timeout for the selected output to stabilize. A debugger must extend this timeout
+                 to the closest possible time granularity.
+        - 0 = no wait
+        - 1 .. 3000000 = time in microseconds (max 3s)
+
+      <b>Return Value:</b><br>
+      The state of the I/O Pins at the end of this operation. If a debugger is not
+      capable of monitoring the I/O Pins, it must return a value of \token{0xFFFFFFFF}.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>DAP_SWJ_Clock(val)</pre></td>
+    <td>
+      Debug probe command to set the clock frequency for JTAG and SWD communication mode.<br>
+      <br>
+      <b>Parameters:</b><br>
+      - val: Maximum SWD/JTAG Clock (SWCLK/TCK) value in Hz.
+
+      <b>Return Value:</b><br>
+      Always returns \token{0}.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>DAP_SWJ_Sequence(cnt, val)</pre></td>
+    <td>
+      Debug probe command to generate required SWJ sequences, e.g. for SWD/JTAG Reset, SWD<->JTAG
+      switch and Dormant operation.<br>
+      <br>
+      <b>Parameters:</b><br>
+      - cnt: Number of bits in sequence: 1..64. Larger sequences need to be implemented by multiple
+        subsequent <b>DAP_SWJ_Sequence</b> calls. Such a sequence of <b>DAP_SWJ_Sequence</b> commands
+        must be encapsulated in an atomic <b>block</b> to ensure correct execution.
+      - val: Sequence generated on SWDIO/TMS (with clock \@SWCLK/TCK), LSB transmitted first.
+      
+      <b>Return Value:</b><br>
+      Always returns \token{0}.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>DAP_JTAG_Sequence(cnt, tms, tdi)</pre></td>
+    <td>
+      Debug probe command to generate a JTAG sequence with fixed TMS value and capture TDO.<br>
+      <br>
+      <b>Parameters:</b><br>
+      - cnt: Length of the JTAG sequence (number of TCK cycles and TDI bits): 1..64
+      - tms: Fixed TMS value: 0..1
+      - tdi: Data generated on TDI with one bit per TCK cycle, LSB transmitted first.
+      
+      <b>Return Value:</b><br>
+      Data captured from TDO with one bit per TCK cycle, LSB captured first and padded with \token{0}s.
+    </td>
+  </tr>
+  <tr>
+    <td style="white-space: nowrap"><pre>Query(type, "message", default)</pre></td>
+    <td>
+      Query user input. The sequence execution stalls depending on the used <b>type</b>. If the
+      debugger runs in a batch mode, this function returns the value <b>default</b>.<br>
+      <br>
+      <b>Parameters:</b><br>
+      - type: Query type. Can be one of:
+        - \token{0} : <b>Query_Ok</b>, displays an informative message which has to be confirmed by the user. This
+              type allows the result <b>OK</b>.
+        - \token{1} : <b>Query_YesNo</b>, displays a query with the allowed results <b>Yes</b> and <b>No</b>.
+        - \token{2} : <b>Query_YesNoCancel</b>, displays a query with the allowed results <b>Yes</b>, <b>No</b>,
+              and <b>Cancel</b>.
+        - \token{3} : <b>Query_OkCancel</b>, displays a query with the allowed results <b>OK</b> and <b>Cancel</b>.
+      - message: A constant string with the query message to display. It must not be an expression and it must be
+                 enclosed by quotes.
+      - default: The default value to return if the debugger runs in batch mode. See <b>Return Values</b>
+                 for a list of allowed values.
+      
+      <b>Return Value:</b><br>
+      The result of the query. The user input maps to the following numbers:
+      - Error  : \token{0}
+      - OK     : \token{1}
+      - Cancel : \token{2}
+      - Yes    : \token{3}
+      - No     : \token{4}
+      
+    </td>
+  </tr>
+</table>
+
+\note
+- Target memory access functions must perform a debug access of the size indicated by their name.
+  The target system must support debug accesses of this size.
+- Results of all functions are casted to 64-bit unsigned integer values.
+- Some target access functions determine the used debug and access port by the current values of
+  the <b>__dp</b> and <b>__ap</b> debug access variables. If a target access requires a different
+  debug or access port than the default ones, it must change these values. This change is held
+  until finishing the sequence the change has occurred in.
+
+<p>&nbsp;</p>
+<hr>
+
+
+\section element_debug /package/devices/family/.../debug
+
+Describes configuration settings, default values, and patches for data accesses for a debug connection. Multiple <b>debug</b>
+elements can be defined which are either specific to a processor identified by attribute <b>Pname</b>, or which apply
+to all connections.
+
+\b Example
+\code
+<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
+  ...
+  <debug Pname="Cortex-M4" __dp="0" __ap="0" svd="SVD/LPC43xx.svd">
+    ...
+  </debug>
+  ...
+  <debug Pname="Cortex-M0" __dp="1" __ap="0" svd="SVD/LPC43xx.svd">
+    ...
+  </debug>
+  ...
+</family>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: debug">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_family "family"</td>
+    <td colspan="3">\ref element_family</td>
+  </tr>
+  <tr>
+    <td>\ref element_subFamily "subFamily"</td>
+    <td colspan="3">\ref element_subFamily</td>
+  </tr>
+  <tr>
+    <td>\ref element_device "device"</td>
+    <td colspan="3">\ref element_device</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>Pname</td>
+    <td>
+      Reference to a processor identifier as specified for a <b>processor</b> element. If <b>Pname</b> is set
+      this <b>debug</b> element's settings and data patches only apply for target connections to the referenced
+      processor. Otherwise, they apply for all processors.
+      <b>This attribute must be set if defining multiple \em debug elements within the same section.</b>
+      Only alphabetical characters, decimal digits, '-' and '_' are allowed.
+    </td>
+    <td>RestrictedString</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>__dp</td>
+    <td>
+      Default debug port ID to use for target accesses in this debug connection. The allowed values are
+      defined in <b>debugport</b> elements for this device. If no <b>debugport</b> element exists, the only
+      allowed value is \token{0}.<br>
+      The debug access variable <b>__dp</b> is initialized to this value when entering a pre-defined debug access
+      sequence because of a debug event.<br>
+      This attribute defaults to \token{0} if not set.
+    <td>xs:unsignedInt</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>__ap</td>
+    <td>
+      Default access port index to use for target accesses in this debug connection.<br>
+      The debug access variable <b>__ap</b> is initialized to this value when entering a pre-defined debug access
+      sequence because of a debug event.<br>
+      This attribute defaults to \token{0} if not set.
+    </td>
+    <td>xs:unsignedInt</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>svd</td>
+    <td>The system viewer description (*.SVD) file to load for this debug connection. The file path is relative
+    to the package base folder.</td>
+    <td>xs:string</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <th>Child&nbsp;Elements</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Occurrence</th>
+  </tr>
+  <tr>
+    <td>\ref element_dbg_datapatch "datapatch"</td>
+    <td>Define a patch to apply for data reads in this debug connection.
+    </td>
+    <td>DataPatchType</td>
+    <td>0..*</td>
+  </tr>
+
+</table>
+
+<p>&nbsp;</p>		
+<hr>
+
+\section element_dbg_datapatch /package/devices/family/.../debug/datapatch
+
+Describes a patch a debugger shall apply when reading data from the device.
+
+\b Example
+\code
+<family Dfamily="LPC800 Series" Dvendor="NXP:11">
+  ...
+  <debug svd="SVD\LPC800.svd">
+    ...
+    <datapatch type="Mem" __ap="0" address="0x1400000C" value="0x10000000" mask="0xFFFFFFFF" info="Patch MTB BASE register"/>
+    ...
+  </debug>
+  ...
+</family>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: datapatch">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_debug "debug"</td>
+    <td colspan="3">\ref element_debug</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>type</td>
+    <td>
+      The type of data access to patch. Predefined tokens must be used as defined in \ref DataPatchAccessTypeEnum "Table: Data Patch Access Type".
+      This attribute defaults to \token{Mem} if not set.
+    </td>
+    <td>DataPatchAccessTypeEnum</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>__dp</td>
+    <td>
+      The debug port ID to apply the patch for. The allowed values are defined by the <b>__dp</b> attribute of <b>debugport</b>
+      elements for this device. If no debugport element exists, the only allowed value is 0. If this attribute is not set, the debug port
+      ID for the data patch is set to the default <b>__dp</b> of this <b>debug</b> section.
+    <td>xs:unsignedInt</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>__ap</td>
+    <td>
+      The CoreSight access port index to apply the patch for. If this attribute is not set, the access port index
+      for the data patch is set to the default <b>__ap</b> of this <b>debug</b> section.
+    <td>xs:unsignedInt</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>address</td>
+    <td>The address for which to apply the patch.</td>
+    <td>NonNegativeInteger</td>
+    <td>required</td>
+  </tr>
+  <tr>
+    <td>value</td>
+    <td>The value with which the debugger patches the data access. <b>value</b> is specified in little-endian format.</td>
+    <td>NonNegativeInteger</td>
+    <td>required</td>
+  </tr>
+  <tr>
+    <td>mask</td>
+    <td>The bits of the data access to patch. The mask value is specified in little-endian format.</td>
+    <td>NonNegativeInteger</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>info</td>
+    <td>Descriptive text to display for example for error diagnostics.</td>
+    <td>xs:string</td>
+    <td>optional</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+
+\anchor DataPatchAccessTypeEnum <b>Table: Data Patch Access Type</b>
+
+The table lists the allowed values for data patch access types.
+<table class="cmtable" summary="Enumeration: DataPatchAccessTypeEnum">
+  <tr>
+    <th>type=</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td class="XML-Token">DP</td>
+    <td>CoreSight Debug Port register access.<br>
+    <b>Note:</b> This type refers to accesses via the <b>DPACC</b> instruction for <b>CoreSight JTAG-DPs</b>. Please refer to the
+    corresponding documentation for differences in the register interface between JTAG and Serial Wire debug ports.
+    </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">AP</td>
+    <td>CoreSight Access Port register access. </td>
+  </tr>
+  <tr>
+    <td class="XML-Token">Mem</td>
+    <td>Memory access. </td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>
+<hr>
+
+\section element_trace /package/devices/family/.../trace
+
+Describes device capabilities and possible configuration settings for capturing trace.
+Multiple <b>trace</b> elements can be defined which are either specific to a processor identified by attribute
+<b>Pname</b>, or which apply to all connections.
+
+\b Example
+\code
+<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
+  ...
+  <trace Pname="Cortex-M4">
+    <serialwire/>
+    <traceport   width="0x0000000B"/> <!-- support for port widths 1, 2, and 4 -->
+    <tracebuffer start="0x2000C000" size="0x4000"/>
+  </trace>
+  ...
+  <trace Pname="Cortex-M0">
+    <!-- Empty trace section for Cortex-M0, no trace capabilities -->
+  </trace>
+  ...
+</family>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: trace">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_family "family"</td>
+    <td colspan="3">\ref element_family</td>
+  </tr>
+  <tr>
+    <td>\ref element_subFamily "subFamily"</td>
+    <td colspan="3">\ref element_subFamily</td>
+  </tr>
+  <tr>
+    <td>\ref element_device "device"</td>
+    <td colspan="3">\ref element_device</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>Pname</td>
+    <td>
+      Reference to a processor identifier as specified for a <b>processor</b> element. If <b>Pname</b> is set this
+      <b>trace</b> section only applies for target connections to the referenced processor. Otherwise, it applies
+      for all processors. <b>This attribute must be set if defining multiple \em trace elements within the same section.</b>
+      Only alphabetical characters, decimal digits, '-' and '_' are allowed. 
+    </td>
+    <td>RestrictedString</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <th>Child&nbsp;Elements</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Occurrence</th>
+  </tr>
+  <tr>
+    <td>\ref element_trace_serialwire "serialwire"</td>
+    <td>Describe the serial wire trace output capabilities of the processor.
+    </td>
+    <td>SerialWireType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_trace_traceport "traceport"</td>
+    <td>Describe the parallel trace port output capabilities of the processor.
+    </td>
+    <td>TracePortType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_trace_tracebuffer "tracebuffer"</td>
+    <td>Describe the on-device trace buffer capabilities of the processor.
+    </td>
+    <td>TraceBufferType</td>
+    <td>0..*</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+<hr>
+
+\section element_trace_serialwire /package/devices/family/.../trace/serialwire
+
+Indicates serial wire trace output capabilities of the specified processor.
+
+\b Example
+\code
+<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
+  ...
+  <trace Pname="Cortex-M4">
+    ...
+    <serialwire/>
+    ...
+  </trace>
+  ...
+</family>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: serialwire">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_trace "trace"</td>
+    <td colspan="3">\ref element_trace</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+<hr>
+
+\section element_trace_traceport /package/devices/family/.../trace/traceport
+
+Indicates parallel trace port output capabilities of the specified processor.
+This element describes possible configuration settings for capturing trace.
+
+\b Example
+\code
+<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
+  ...
+  <trace Pname="Cortex-M4">
+    ...
+    <traceport width="0x0000000B"/> <!-- support for port widths 1, 2, and 4 -->
+    ...
+  </trace>
+  ...
+</family>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: traceport">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_trace "trace"</td>
+    <td colspan="3">\ref element_trace</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>width</td>
+    <td>
+      Parallel trace port widths supported for the processor connection (see table below).
+    </td>
+    <td>NonNegativeInteger</td>
+    <td>optional</td>
+  </tr>
+</table>
+
+
+The attribute \b width specifies the available trace port width that is supported by the device.
+Each bit of this value represents an available trace port size. If bit \token{n} is set a trace port width of \token{n+1} is supported.
+The value <b>width=0x00008088</b> (as shown in the table) indicates that three port sizes (16-bit, 8-bit, and 4-bit) are supported by the device.
+
+<table class="cmtable" summary="Element: traceportwidth">
+  <tr>
+    <th>Bit</th>
+    <th>31</th>
+    <th>30</th>
+    <th>29</th>
+    <th>28</th>
+    <th>27</th>
+    <th>26</th>
+    <th>25</th>
+    <th>24</th>
+    <th>23</th>
+    <th>22</th>
+    <th>21</th>
+    <th>20</th>
+    <th>19</th>
+    <th>18</th>
+    <th>17</th>
+    <th>16</th>
+    <th>15</th>
+    <th>14</th>
+    <th>13</th>
+    <th>12</th>
+    <th>11</th>
+    <th>10</th>
+    <th> 9</th>
+    <th> 8</th>
+    <th> 7</th>
+    <th> 6</th>
+    <th> 5</th>
+    <th> 4</th>
+    <th> 3</th>
+    <th> 2</th>
+    <th> 1</th>
+    <th> 0</th>
+  </tr>
+  <tr>
+    <td>width</td>
+    <td>32</td>
+    <td>31</td>
+    <td>30</td>
+    <td>29</td>
+    <td>28</td>
+    <td>27</td>
+    <td>26</td>
+    <td>25</td>
+    <td>24</td>
+    <td>23</td>
+    <td>22</td>
+    <td>21</td>
+    <td>20</td>
+    <td>19</td>
+    <td>18</td>
+    <td>17</td>
+    <td>16</td>
+    <td>15</td>
+    <td>14</td>
+    <td>13</td>
+    <td>12</td>
+    <td>11</td>
+    <td>10</td>
+    <td> 9</td>
+    <td> 8</td>
+    <td> 7</td>
+    <td> 6</td>
+    <td> 5</td>
+    <td> 4</td>
+    <td> 3</td>
+    <td> 2</td>
+    <td> 1</td>
+  </tr>
+  <tr>
+    <td>Value</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>1</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>1</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+    <td>1</td>
+    <td>0</td>
+    <td>0</td>
+    <td>0</td>
+  </tr>
+</table>
+
+
+<p>&nbsp;</p>		
+<hr>
+
+\section element_trace_tracebuffer /package/devices/family/.../trace/tracebuffer
+
+Indicates on-device trace buffer capabilities of the specified processor.
+This element describes possible configuration settings for capturing trace
+and reading it from the buffer.
+
+\b Example
+\code
+<family Dfamily="LPC4300 Series" Dvendor="NXP:11">
+  ...
+  <trace Pname="CoreCM4">
+    ...
+    <tracebuffer start="0x2000C000" size="0x4000"/>
+    ...
+  </trace>
+  ...
+</family>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: tracebuffer">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_trace "trace"</td>
+    <td colspan="3">\ref element_trace</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>start</td>
+    <td>Start address of the on-chip memory used as trace buffer for a supported configuration.</td>
+    <td>NonNegativeInteger</td>
+    <td>optional</td>
+  </tr>
+  <tr>
+    <td>size</td>
+    <td>Size of the on-chip memory used as trace buffer in bytes for a supported configuration.</td>
+    <td>NonNegativeInteger</td>
+    <td>optional</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+<hr>
+
+
+
+\section element_variant /package/devices/family/.../device/variant
+
+Defines a device variant. The element is optional. Can exist multiple times.
+
+\b Example
+\code
+<device Dname="STM32F205RB">
+  ...
+  <variant Dvariant="STM32F205RBT6">
+    <book name="doc\STM32F2_RM.PDF" title="STM32F2 Reference Manual"/>
+    <description>Use this device as an alternative.</description>
+    <feature type="QFP" count="64" name="LQFP 64 10x10x1.4" />
+    <feature type="Temp" n="-40" m="85" name="Industrial Temperature Range"/>
+  </variant>
+  <variant Dvariant="STM32F205RBT7">
+    <feature type="QFP" count="64" name="LQFP 64 10x10x1.4" />
+    <feature type="Temp" n="-40" m="105" name="Extended Temperature Range"/>
+  </variant>
+  ...
+</device>
+\endcode
+
+<p>&nbsp;</p>		
+
+<table class="cmtable" summary="Element: variant">
+  <tr>
+    <th>Parents</th>
+    <th colspan="3">Element Chain</th>
+  </tr>
+  <tr>
+    <td>\ref element_device "device"</td>
+    <td colspan="3">\ref element_device</td>
+  </tr>
+  <tr>
+    <th>Attributes</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Use</th>
+  </tr>
+  <tr>
+    <td>Dvariant</td>
+    <td>Name of the device variant. Only alphabetical characters, decimal digits, '-' and '_' are allowed</td>
+    <td>RestrictedString</td>
+    <td>required</td>
+  </tr>
+  <tr>
+    <th>Child Elements</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Occurrence</th>
+  </tr>
+  <tr>
+    <td>\ref element_book "book"</td>
+    <td>List books that are specific to this variant.</td>
+    <td>BookType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_description "description"</td>
+    <td>Device description.</td>
+    <td>DescriptionType</td>
+    <td>0..*</td>
+  </tr>
+  <tr>
+    <td>\ref element_feature "feature"</td>
+    <td>Define features for this device variant.</td>
+    <td>FeatureType</td>
+    <td>0..*</td>
+  </tr>
+</table>
+
+<p>&nbsp;</p>		
+<hr>
+*/

+ 1642 - 1630
CMSIS/Utilities/PACK.xsd

@@ -1,1630 +1,1642 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 
-  Copyright (c) 2013-2016 ARM Limited. All rights reserved.
- 
-  SPDX-License-Identifier: Apache-2.0
- 
-  Licensed under the Apache License, Version 2.0 (the License); you may
-  not use this file except in compliance with the License.
-  You may obtain a copy of the License at
- 
-  http://www.apache.org/licenses/LICENSE-2.0
- 
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an AS IS BASIS, WITHOUT
-  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-
-  $Date:        17. February 2016
-  $Revision:    1.4.4
-
-  $Project: Schema File for Package Description File Format Specification
-
-  Package file name convention <vendor>.<name>.<version>.pack
-  SchemaVersion=1.4
-
-  26. April 2016: 1.4.4
-  - added: attribute defaultResetSequence to DebugType.
-  - added: <requirements> section:
-    - <packages> defining dependencies between packs
-    - <languages> defining required language support e.g. C99
-    - <compiler> defining required toolchains
-  - added: <create> section used for tool independent project description
-    - attributes: name, documentation, condition
-    - <target> specifies the board and device targeted by the project 
-    - <options> 
-    - <files> specifies the grouped files 
-  - updated: <algorith> element
-    - added attributes: style, parameter and endian
-  - updated: <memory> element
-    - added attributes: name, access and alias
-    - deprecating attribute: id (replaced by name + access)
-    
-  03. Dec 2015: 1.4.3
-  - adding attribute "sdf" to devices section element debugconfig
-  
-  16. Oct 2015: 1.4.1
-  - pName, Dname, Dvariant type changed from xs:string to RestrictedString
-
-  28. Aug 2015: 1.4.0
-  - deprecate devices memory tag attribute id and use
-    introduced name and access attributes instead
-  - added devices memory tag attribute: alias
-  - added devices algorithm tag attribute: style
-  - added attribute to define a default component variant
-  - added board book category: layout
-  
-  29. May 2015
-  - added missing Pname attribute to GeneratorDeviceSelectType used for multi processor
-    devices  
-  12. Jan. 2014
-  - allow to link a component with a generator via new component attribute
-  - generator command extended to deal with more sophisticated command lines / document sequence
-  
--->
-
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="qualified" version="1.3">
-
-  <!-- NonNegativeInteger specifies the format in which numbers are represented in hexadecimal or decimal format -->
-  <xs:simpleType name="NonNegativeInteger">
-    <xs:restriction base="xs:string">
-      <xs:pattern value="[+]?(0x|0X)?[0-9a-fA-F]+"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- Registered Device Vendors -->
-  <xs:simpleType name="DeviceVendorEnum">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="ABOV Semiconductor:126"/>
-      <xs:enumeration value="Actel:56"/>
-      <xs:enumeration value="Altera:85"/>
-      <xs:enumeration value="Altium:65"/>
-      <xs:enumeration value="Ambiq Micro:120"/>
-      <xs:enumeration value="Analog Devices:1"/>
-      <xs:enumeration value="ARM:82"/>
-      <xs:enumeration value="ARM CMSIS:109"/>
-      <xs:enumeration value="Atmel:3"/>
-      <xs:enumeration value="CSR:118"/>
-      <xs:enumeration value="Cypress:19"/>
-      <xs:enumeration value="Dialog Semiconductor:113"/>
-      <xs:enumeration value="Dolphin:57"/>
-      <xs:enumeration value="Domosys:26"/>
-      <xs:enumeration value="Ember:98"/>
-      <xs:enumeration value="Energy Micro:97"/>
-      <xs:enumeration value="EnOcean:91"/>
-      <xs:enumeration value="Evatronix:64"/>
-      <xs:enumeration value="Freescale:78"/>
-      <xs:enumeration value="Generic:5"/>
-      <xs:enumeration value="GigaDevice:123"/>
-      <xs:enumeration value="Holtek:106"/>
-      <xs:enumeration value="Hynix Semiconductor:6"/>
-      <xs:enumeration value="Hyundai:35"/>
-      <xs:enumeration value="Infineon:7"/>
-      <xs:enumeration value="Kionix:127"/>
-      <xs:enumeration value="Lapis Semiconductor:10"/>
-      <xs:enumeration value="Luminary Micro:76"/>
-      <xs:enumeration value="Maxim:23"/>
-      <xs:enumeration value="MediaTek:129"/>
-      <xs:enumeration value="MegaChips:128"/>
-      <xs:enumeration value="Mentor Graphics Co.:24"/>
-      <xs:enumeration value="Micronas:30"/>
-      <xs:enumeration value="Microsemi:112"/>
-      <xs:enumeration value="Milandr:99"/>
-      <xs:enumeration value="MindMotion:132"/>
-      <xs:enumeration value="NetSilicon:67"/>
-      <xs:enumeration value="Nordic Semiconductor:54"/>
-      <xs:enumeration value="Nuvoton:18"/>
-      <xs:enumeration value="NXP:11"/>
-      <xs:enumeration value="OKI SEMICONDUCTOR CO.,LTD.:108"/>
-      <xs:enumeration value="Panasonic:131"/>
-      <xs:enumeration value="Realtek Semiconductor:124"/>
-      <xs:enumeration value="Redpine Signals:125"/>
-      <xs:enumeration value="Renesas:117"/>
-      <xs:enumeration value="ROHM:103"/>
-      <xs:enumeration value="Samsung:47"/>
-      <xs:enumeration value="Silicon Labs:21"/>
-      <xs:enumeration value="SONiX:110"/>
-      <xs:enumeration value="Spansion:100"/>
-      <xs:enumeration value="STMicroelectronics:13"/>
-      <xs:enumeration value="Sunrise Micro Devices:121"/>
-      <xs:enumeration value="TI:16"/>
-      <xs:enumeration value="Texas Instruments:16"/>
-      <xs:enumeration value="Toshiba:92"/>
-      <xs:enumeration value="Triad Semiconductor:104"/>
-      <xs:enumeration value="WIZnet:122"/>
-      <!-- deprecated: do not use -->
-      <xs:enumeration value="Freescale Semiconductor:78"/>
-      <xs:enumeration value="NXP (founded by Philips):11"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- AlgorithmStyleType: allow support of different flash programming algorithm styles -->
-  <xs:simpleType name="AlgorithmStyleType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Keil"/>
-      <xs:enumeration value="IAR"/>
-      <xs:enumeration value="CMSIS"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- Component Class Name Type: specify your own Class in taxonomy -->
-  <xs:simpleType name="CclassType">
-    <xs:restriction base="xs:string">
-      <xs:minLength value="3"/>
-      <xs:maxLength value="32"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- Component Group Name Type -->
-  <xs:simpleType name="CgroupType">
-    <xs:restriction base="xs:string">
-      <xs:minLength value="3"/>
-      <xs:maxLength value="32"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- Component Sub Name Type -->
-  <xs:simpleType name="CsubType">
-    <xs:restriction base="xs:string">
-      <xs:minLength value="0"/>
-      <xs:maxLength value="32"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- Component Variant Name Type -->
-  <xs:simpleType name="CvariantType">
-    <xs:restriction base="xs:string">
-      <xs:minLength value="3"/>
-      <xs:maxLength value="32"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- AccessType (added in 1.4.4) -->
-  <xs:simpleType name="AccessType">
-    <xs:restriction base="xs:string">
-      <xs:pattern value="[rwxpsnc]+"/>
-    </xs:restriction>
-  </xs:simpleType>
-  
-  <!-- Processor Type -->
-  <xs:complexType name="ProcessorType">
-    <!-- Pname defines an identifier for a specific processor in a multi-processor devices -->
-    <xs:attribute name="Pname"        type="RestrictedString"/>
-    <!-- Dcore specifies the processor from a list of supported processors -->
-    <xs:attribute name="Dcore"        type="DcoreEnum"/>
-    <!-- Dfpu specifies the hardware floating point unit -->
-    <xs:attribute name="Dfpu"         type="DfpuEnum"/>
-    <!-- Dmpu specifies the memory protection unit -->
-    <xs:attribute name="Dmpu"         type="DmpuEnum"/>
-    <!-- Dendian specifies the endianess supported by the processor -->
-    <xs:attribute name="Dendian"      type="DendianEnum"/>
-    <!-- Dclock specifies the maximum core clock frequency -->
-    <xs:attribute name="Dclock"       type="xs:unsignedInt"/>
-    <!-- DcoreVersion specifies the revision of the processor -->
-    <xs:attribute name="DcoreVersion" type="xs:string"/>
-  </xs:complexType>
-
-  <!-- Compile Type: -->
-  <xs:complexType name="CompileType">
-    <!-- Pname identifies the processor this setting belongs to -->
-    <xs:attribute name="Pname"  type="RestrictedString" use="optional"/>
-    <!-- CMSIS-CORE device header file (sets compiler include path) -->
-    <xs:attribute name="header" type="xs:string"/>
-    <!-- Device specific preprocessor define (sets preprocessor define  -->
-    <xs:attribute name="define" type="xs:string"/>
-  </xs:complexType>
-
-  <!-- DebugVarsType -->
-  <xs:complexType name="DebugVarsType">
-    <xs:simpleContent>
-      <xs:extension base="xs:string">
-        <xs:attribute name="configfile" type="xs:string"   use="optional"/>
-        <xs:attribute name="version"    type="VersionType" use="optional"/>
-        <xs:attribute name="Pname"      type="xs:string"   use="optional"/>
-        <xs:anyAttribute processContents="lax"/>
-      </xs:extension>
-    </xs:simpleContent>
-  </xs:complexType>
-
-  <!-- DebugProtocolEnum -->
-  <xs:simpleType name="DebugProtocolEnum">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="jtag"/>
-      <xs:enumeration value="cjtag"/>
-      <xs:enumeration value="swd"/>
-    </xs:restriction>
-  </xs:simpleType>
-  
-  <!-- DebugConfigType -->
-  <xs:complexType name="DebugConfigType">
-    <xs:attribute name="default" type="DebugProtocolEnum" use="optional" default="swd"/>
-    <xs:attribute name="clock"   type="xs:unsignedInt"    use="optional"/>
-    <xs:attribute name="swj"     type="xs:boolean"        use="optional"/>
-    <!-- Debugger System Description File -->
-    <xs:attribute name="sdf"     type="xs:string"         use="optional"/>
-    <xs:anyAttribute processContents="lax"/>
-  </xs:complexType>
-
-  <!-- JtagType -->
-  <xs:complexType name="JtagType">
-    <xs:attribute name="tapindex"     type="NonNegativeInteger" use="optional"/>
-    <xs:attribute name="idcode"       type="NonNegativeInteger" use="optional"/>
-    <xs:attribute name="targetsel"    type="NonNegativeInteger" use="optional"/>
-    <xs:attribute name="irlen"        type="xs:unsignedInt"     use="optional"/>
-    <xs:anyAttribute processContents="lax"/>
-  </xs:complexType>
-
-  <!-- SwdType -->
-  <xs:complexType name="SwdType">
-    <xs:attribute name="idcode"       type="NonNegativeInteger" use="optional"/>
-    <xs:attribute name="targetsel"    type="NonNegativeInteger" use="optional"/>
-    <xs:anyAttribute processContents="lax"/>
-  </xs:complexType>
-
-  <!-- DebugPortType -->
-  <xs:complexType name="DebugPortType">
-    <xs:sequence>
-      <xs:element name="jtag"     type="JtagType"     minOccurs="0" maxOccurs="1"/>
-      <xs:element name="swd"      type="SwdType"      minOccurs="0" maxOccurs="1"/>
-    </xs:sequence>
-    <xs:attribute name="__dp" type="xs:unsignedInt" use="optional"/>
-    <xs:anyAttribute processContents="lax"/>
-  </xs:complexType>
-
-  <!-- DataPatchAccessTypeEnum enumeration type -->
-  <xs:simpleType name="DataPatchAccessTypeEnum">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="DP"/>
-      <xs:enumeration value="AP"/>
-      <xs:enumeration value="Mem"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- ExpressionType -->
-  <xs:simpleType name="ExpressionType">
-    <xs:restriction base="xs:string"/>
-  </xs:simpleType>
-
-  <!-- DataPatchType -->
-  <xs:complexType name="DataPatchType">
-    <xs:attribute name="type"    type="DataPatchAccessTypeEnum" use="optional"/>
-    <xs:attribute name="address" type="NonNegativeInteger"      use="required"/>
-    <xs:attribute name="__dp"    type="xs:unsignedInt"          use="optional"/>
-    <xs:attribute name="__ap"    type="xs:unsignedInt"          use="optional"/>
-    <xs:attribute name="value"   type="NonNegativeInteger"      use="required"/>
-    <xs:attribute name="mask"    type="NonNegativeInteger"      use="optional"/>
-    <xs:attribute name="info"    type="xs:string"               use="optional"/>
-    <xs:anyAttribute processContents="lax"/>
-  </xs:complexType>
-
-  <!-- BlockType -->
-  <xs:complexType name="SequenceBlockType">
-    <xs:simpleContent>
-      <xs:extension base="xs:string">
-        <xs:attribute name="atomic" type="xs:boolean" use="optional"/>
-        <xs:attribute name="info"   type="xs:string"  use="optional"/>
-        <xs:anyAttribute processContents="lax"/>
-      </xs:extension>
-    </xs:simpleContent>
-  </xs:complexType>
-  
-  <!-- ControlType -->
-  <xs:complexType name="SequenceControlType">
-    <xs:sequence>
-      <xs:group ref="SequenceElementGroup" minOccurs="0" maxOccurs="unbounded"/>
-    </xs:sequence>
-    <xs:attribute name="if"       type="xs:string"        use="optional"/>
-    <xs:attribute name="while"    type="ExpressionType"   use="optional"/>
-    <xs:attribute name="timeout"  type="xs:unsignedInt"   use="optional"/>
-    <xs:attribute name="info"     type="xs:string"        use="optional"/>
-    <xs:anyAttribute processContents="lax"/>
-  </xs:complexType>
-
-  <!-- SequenceElementType -->
-  <xs:group name="SequenceElementGroup">
-    <xs:choice>
-      <xs:element name="block"   type="SequenceBlockType"/>
-      <xs:element name="control" type="SequenceControlType"/>
-    </xs:choice>
-  </xs:group>
-
-
-  <!-- SequenceType -->
-  <xs:complexType name="SequenceType">
-    <xs:sequence>
-      <xs:group ref="SequenceElementGroup" minOccurs="0" maxOccurs="unbounded"/>
-    </xs:sequence>
-    <xs:attribute name="name"    type="xs:string"  use="required"/>
-    <xs:attribute name="Pname"   type="RestrictedString"  use="optional"/>
-    <xs:attribute name="disable" type="xs:boolean" use="optional"/>
-    <xs:attribute name="info"    type="xs:string"  use="optional"/>
-    <xs:anyAttribute processContents="lax"/>
-  </xs:complexType>
-
-  <!-- SequencesType -->
-  <xs:complexType name="SequencesType">
-    <xs:sequence>
-      <xs:element name="sequence" type="SequenceType" minOccurs="1" maxOccurs="unbounded"/>
-    </xs:sequence>
-    <xs:anyAttribute processContents="lax"/>
-  </xs:complexType>
-  
-  <!-- DebugType -->  
-  <xs:complexType name="DebugType">
-    <xs:sequence>
-      <xs:element name="datapatch"     type="DataPatchType"             minOccurs="0" maxOccurs="unbounded"/>
-    </xs:sequence>
-    <xs:attribute name="__dp"  type="xs:unsignedInt" use="optional"/>
-    <xs:attribute name="__ap"  type="xs:unsignedInt" use="optional"/> <!-- access port index -->
-    <xs:attribute name="svd"   type="xs:string"      use="optional"/>
-    <xs:attribute name="Pname" type="RestrictedString"      use="optional"/>
-    <xs:attribute name="defaultResetSequence" type="xs:string" use="optional"/>    
-    <xs:anyAttribute processContents="lax"/>
-  </xs:complexType>
-
-  <!-- SerialWireType -->
-  <xs:complexType name="SerialWireType">
-    <xs:anyAttribute processContents="lax"/>
-  </xs:complexType>
-
-  <!-- TracePortType -->
-  <xs:complexType name="TracePortType">
-    <xs:attribute name="width" type="NonNegativeInteger" use="optional"/>
-    <xs:anyAttribute processContents="skip"/>
-  </xs:complexType>
-
-  <!-- TraceBufferType -->
-  <xs:complexType name="TraceBufferType">
-    <xs:attribute name="start" type="NonNegativeInteger" use="optional"/>
-    <xs:attribute name="size"  type="NonNegativeInteger" use="optional"/>
-    <xs:anyAttribute processContents="skip"/>
-  </xs:complexType>
-
-  <!-- TraceType -->
-  <xs:complexType name="TraceType">
-    <xs:sequence>
-      <xs:element name="serialwire"  type="SerialWireType"  minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="traceport"   type="TracePortType"   minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="tracebuffer" type="TraceBufferType" minOccurs="0" maxOccurs="unbounded"/>
-    </xs:sequence>
-    <xs:attribute name="Pname" type="RestrictedString" use="optional"/>
-    <xs:anyAttribute processContents="lax"/>
-  </xs:complexType>
-
-  <!-- Memory Type-->
-  <xs:complexType name="MemoryType">
-    <!-- Pname identifies the processor this setting belongs to -->
-    <xs:attribute name="Pname"   type="RestrictedString"/>
-    <!-- id specifies the enumerated ID of memory (deprecated in 1.4.4) -->
-    <xs:attribute name="id"      type="MemoryIDTypeEnum"    use="optional"/>
-    <!-- name specifies an identifier being use to refer to this memory range description (added in 1.4.4) -->
-    <xs:attribute name="name"    type="RestrictedString"    use="optional"/>
-    <!-- start specifies the base address of the memory -->
-    <xs:attribute name="start"   type="NonNegativeInteger"  use="required"/>
-    <!-- size specifies the size of the memory -->
-    <xs:attribute name="size"    type="NonNegativeInteger"  use="required"/>
-    <!-- access: specifies the access permissions of the memory (added in 1.4.4) -->
-    <xs:attribute name="access"  type="AccessType"          use="optional" default="r"/>
-    <!-- alias: reference to another memory by 'name' to express that the same physical memory is mapped at another address (added in 1.4.4) -->
-    <xs:attribute name="alias"   type="RestrictedString"    use="optional"/>
-    <!-- !!! deprecated, do not use / ignore !!! specifies whether the memory shall be 0 initialized -->
-    <xs:attribute name="init"    type="xs:boolean"          use="optional" default="0"/>
-    <!-- specifies whether the memory is used as default by linker -->
-    <xs:attribute name="default" type="xs:boolean"          use="optional" default="0"/>
-    <!-- specifies whether the memory shall be used for the startup by linker -->
-    <xs:attribute name="startup" type="xs:boolean"          use="optional" default="0"/>
-  </xs:complexType>
-
-  <!-- Algorithm Type -->
-  <xs:complexType name="AlgorithmType">
-    <!-- Pname identifies the processor this setting belongs to -->
-    <xs:attribute name="Pname"    type="RestrictedString"          use="optional"/>
-    <!-- name specifies the path and filename of the Flash Programming Algorithm -->
-    <xs:attribute name="name"     type="xs:string"          use="required"/>
-    <!-- start specifies the base address of the memory range that gets programmed -->
-    <xs:attribute name="start"    type="NonNegativeInteger" use="optional"/>
-    <!-- size specifies the size of the memory range that gets programmed -->
-    <xs:attribute name="size"     type="NonNegativeInteger" use="optional"/>
-    <!-- RAMstart specifies the base address in RAM from where the algorithm is executed -->
-    <xs:attribute name="RAMstart" type="NonNegativeInteger" use="optional"/>
-    <!-- RAMsize specifies the available RAM for executing the algorithm -->
-    <xs:attribute name="RAMsize"  type="NonNegativeInteger" use="optional"/>
-    <!-- if default is set the algorithm will be configured for any new project -->
-    <xs:attribute name="default"  type="xs:boolean"         use="optional" default="0"/>
-    <!-- style attribute: specifies the programming algorithm format (added in 1.4.4) -->
-    <xs:attribute name="style"    type="AlgorithmStyleType" use="optional" default="Keil"/>
-    <!-- parameter attribute: parmeter passed on algorithm invocation (added in 1.4.4) -->
-    <xs:attribute name="parameter" type="xs:string"         use="optional"/>
-    <!-- endian attribute: specifies the endianess of the algorithm (added in 1.4.4) -->
-    <xs:attribute name="endian"    type="DendianEnum"       use="optional" default="Little-endian"/>
-  </xs:complexType>
-
-  <!-- Book Type -->
-  <xs:complexType name="BookType">
-    <!-- Pname identifies the processor this setting belongs to -->
-    <xs:attribute name="Pname"   type="RestrictedString"/>
-    <!-- name specifies the path and filename of the document -->
-    <xs:attribute name="name"    type="xs:string" use="required"/>
-    <!-- title specifies the string displayed for this document -->
-    <xs:attribute name="title"   type="xs:string" use="required"/>
-  </xs:complexType>
-
-  <!-- Description Type-->
-  <xs:complexType name="DescriptionType">
-    <xs:simpleContent>
-      <xs:extension base="xs:string">
-        <!-- Pname identifies the processor this setting belongs to -->
-        <xs:attribute name="Pname" type="RestrictedString"/>
-      </xs:extension>
-    </xs:simpleContent>
-  </xs:complexType>
-
-  <!-- Device Feature Type -->
-  <xs:complexType name="DeviceFeatureType">
-    <xs:attribute name="Pname" type="RestrictedString"       use="optional"/>
-    <!-- <xs:attribute name="type"  type="DeviceFeatureTypeEnum" use="required"/> -->
-    <xs:attribute name="type"  type="xs:string"       use="required"/>
-    <xs:attribute name="n"     type="xs:decimal"      use="optional"/>
-    <xs:attribute name="m"     type="xs:decimal"      use="optional"/>
-    <xs:attribute name="name"  type="xs:string"       use="optional"/>
-    <!-- deprecated, only for backwards compatibility -->
-    <xs:attribute name="count" type="xs:int"          use="optional"/>
-  </xs:complexType>
-
-  <!-- Board Feature Type -->
-  <xs:complexType name="BoardFeatureType">
-    <!-- <xs:attribute name="type"  type="BoardFeatureTypeEnum" use="required"/> -->
-    <xs:attribute name="type"  type="xs:string"            use="required"/>
-    <xs:attribute name="n"     type="xs:decimal"           use="optional"/>
-    <xs:attribute name="m"     type="xs:decimal"           use="optional"/>
-    <xs:attribute name="name"  type="xs:string"            use="optional"/>
-  </xs:complexType>
-  
-  <!-- Environment Type -->
-  <xs:complexType name="EnvironmentType">
-    <xs:sequence>
-      <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
-    </xs:sequence>
-    <!-- name identifies the environment (e.g. "uv" for uVision ) this setting belongs to -->
-    <xs:attribute name="name" type="xs:string" use="required"/>
-    <!-- Pname identifies the processor this setting belongs to -->
-    <xs:attribute name="Pname"  type="RestrictedString" use="optional"/>
-    <xs:anyAttribute></xs:anyAttribute>
-  </xs:complexType>
-
-  <!-- Default Device Properties Group -->
-  <xs:group name="DefaultDevicePropertiesGroup">
-    <!-- multi-core devices have unique Pname attribute. One entry per processor and level -->
-    <xs:choice>
-      <xs:element name="compile"     type="CompileType"     />
-      <xs:element name="memory"      type="MemoryType"      />
-      <xs:element name="algorithm"   type="AlgorithmType"   />
-      <xs:element name="book"        type="BookType"        />
-      <xs:element name="description" type="DescriptionType" />
-      <xs:element name="feature"     type="DeviceFeatureType" />
-      <xs:element name="environment" type="EnvironmentType" />
-      <xs:element name="debugport"   type="DebugPortType"   />
-      <xs:element name="debug"       type="DebugType"       />
-      <xs:element name="trace"       type="TraceType"       />
-      <xs:element name="debugvars"   type="DebugVarsType"   />
-      <xs:element name="sequences"   type="SequencesType"   />
-    </xs:choice>
-  </xs:group>
-
-  <!-- Device Properties Group -->
-  <xs:group name="DevicePropertiesGroup">
-    <!-- multi-core devices have unique Pname attribute. One entry per processor and level -->
-    <xs:sequence>
-      <xs:element name="processor"   type="ProcessorType"   minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="debugconfig" type="DebugConfigType" minOccurs="0" maxOccurs="1"/>
-      <xs:group   ref="DefaultDevicePropertiesGroup"        minOccurs="0" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:group>
-
-  <xs:complexType name="DeviceType">
-    <xs:sequence>
-      <xs:group ref="DevicePropertiesGroup"/>
-      <!-- Variant Level begin-->
-      <xs:element name="variant" minOccurs="0" maxOccurs="unbounded">
-        <xs:complexType>
-          <xs:sequence>
-            <xs:group ref="DevicePropertiesGroup"/>
-          </xs:sequence>
-          <xs:attribute name="Dvariant" type="RestrictedString" use="required"/>
-        </xs:complexType>
-      </xs:element>
-      <!-- Variant Level end -->
-    </xs:sequence>
-    <xs:attribute name="Dname" type="RestrictedString" use="required"/>
-    <!-- <xs:attributeGroup ref="DefaultDeviceAttributesGroup"/> -->
-  </xs:complexType>
-
-  <!-- Dcore enumeration type -->
-  <xs:simpleType name="DcoreEnum">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="SC000"/>
-      <xs:enumeration value="SC300"/>
-      <xs:enumeration value="Cortex-M0"/>
-      <xs:enumeration value="Cortex-M0+"/>
-      <xs:enumeration value="Cortex-M1"/>
-      <xs:enumeration value="Cortex-M3"/>
-      <xs:enumeration value="Cortex-M4"/>
-      <xs:enumeration value="Cortex-M7"/>
-      <xs:enumeration value="Cortex-R4"/>
-      <xs:enumeration value="Cortex-R5"/>
-      <xs:enumeration value="Cortex-A5"/>
-      <xs:enumeration value="Cortex-A7"/>
-      <xs:enumeration value="Cortex-A8"/>
-      <xs:enumeration value="Cortex-A9"/>
-      <xs:enumeration value="Cortex-A15"/>
-      <xs:enumeration value="Cortex-A17"/>
-      <xs:enumeration value="Cortex-A53"/>
-      <xs:enumeration value="Cortex-A57"/>
-      <xs:enumeration value="Cortex-A72"/>
-      <xs:enumeration value="ARMV8MBL"/>
-      <xs:enumeration value="ARMV8MML"/>
-      <xs:enumeration value="other"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-
-  <!-- DeviceFeatureTypeEnum -->
-  <xs:simpleType name="DeviceFeatureTypeEnum">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Crypto"/>
-      <xs:enumeration value="NVIC"/>
-      <xs:enumeration value="DMA"/>
-      <xs:enumeration value="RNG"/>
-      <xs:enumeration value="CoreOther"/>
-      <xs:enumeration value="ExtBus"/>
-      <xs:enumeration value="Memory"/>
-      <xs:enumeration value="MemoryOther"/>
-      <xs:enumeration value="XTAL"/>
-      <xs:enumeration value="IntRC"/>
-      <xs:enumeration value="PLL"/>
-      <xs:enumeration value="RTC"/>
-      <xs:enumeration value="ClockOther"/>
-      <xs:enumeration value="PowerMode"/>
-      <xs:enumeration value="VCC"/>
-      <xs:enumeration value="Consumption"/>
-      <xs:enumeration value="PowerOther"/>
-      <xs:enumeration value="BGA"/>
-      <xs:enumeration value="CSP"/>
-      <xs:enumeration value="PLCC"/>
-      <xs:enumeration value="QFN"/>
-      <xs:enumeration value="QFP"/>
-      <xs:enumeration value="SOP"/>
-      <xs:enumeration value="DIP"/>
-      <xs:enumeration value="PackageOther"/>
-      <xs:enumeration value="IOs"/>
-      <xs:enumeration value="ExtInt"/>
-      <xs:enumeration value="Temp"/>
-      <xs:enumeration value="ADC"/>
-      <xs:enumeration value="DAC"/>
-      <xs:enumeration value="TempSens"/>
-      <xs:enumeration value="AnalogOther"/>
-      <xs:enumeration value="PWM"/>
-      <xs:enumeration value="Timer"/>
-      <xs:enumeration value="WDT"/>
-      <xs:enumeration value="TimerOther"/>
-      <xs:enumeration value="MPSerial"/>
-      <xs:enumeration value="CAN"/>
-      <xs:enumeration value="ETH"/>
-      <xs:enumeration value="I2C"/>
-      <xs:enumeration value="I2S"/>
-      <xs:enumeration value="LIN"/>
-      <xs:enumeration value="SDIO"/>
-      <xs:enumeration value="SPI"/>
-      <xs:enumeration value="UART"/>
-      <xs:enumeration value="USART"/>
-      <xs:enumeration value="USBD"/>
-      <xs:enumeration value="USBH"/>
-      <xs:enumeration value="USBOTG"/>
-      <xs:enumeration value="ComOther"/>
-      <xs:enumeration value="Camera"/>
-      <xs:enumeration value="GLCD"/>
-      <xs:enumeration value="LCD"/>
-      <xs:enumeration value="Touch"/>
-      <xs:enumeration value="Other"/>
-      <!-- deprecated, only for backwards compatibility -->
-      <xs:enumeration value="I/O"/>
-      <xs:enumeration value="D/A"/>
-      <xs:enumeration value="A/D"/>
-      <xs:enumeration value="Com"/>
-      <xs:enumeration value="USB"/>
-      <xs:enumeration value="Package"/>
-      <xs:enumeration value="Backup"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- BoardFeatureTypeEnum -->
-  <xs:simpleType name="BoardFeatureTypeEnum">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="ODbg"/>
-      <xs:enumeration value="XTAL"/>
-      <xs:enumeration value="PWR"/>
-      <xs:enumeration value="PWR"/>
-      <xs:enumeration value="PWRSock"/>
-      <xs:enumeration value="Batt"/>
-      <xs:enumeration value="Curr"/>
-      <xs:enumeration value="CoreOther"/>
-      <xs:enumeration value="RAM"/>
-      <xs:enumeration value="ROM"/>
-      <xs:enumeration value="Memory"/>
-      <xs:enumeration value="MemCard"/>
-      <xs:enumeration value="MemoryOther"/>
-      <xs:enumeration value="DIO"/>
-      <xs:enumeration value="AIO"/>
-      <xs:enumeration value="Proto"/>
-      <xs:enumeration value="USB"/>
-      <xs:enumeration value="ETH"/>
-      <xs:enumeration value="SPI"/>
-      <xs:enumeration value="I2C"/>
-      <xs:enumeration value="RS232"/>
-      <xs:enumeration value="RS422"/>
-      <xs:enumeration value="RS485"/>
-      <xs:enumeration value="CAN"/>
-      <xs:enumeration value="IrDA"/>
-      <xs:enumeration value="LineIn"/>
-      <xs:enumeration value="LineOut"/>
-      <xs:enumeration value="MIC"/>
-      <xs:enumeration value="Edge"/>
-      <xs:enumeration value="ConnOther"/>
-      <xs:enumeration value="Button"/>
-      <xs:enumeration value="Poti"/>
-      <xs:enumeration value="Joystick"/>
-      <xs:enumeration value="Touch"/>
-      <xs:enumeration value="ContOther"/>
-      <xs:enumeration value="Accelerometer"/>
-      <xs:enumeration value="Gyro"/>
-      <xs:enumeration value="Compass"/>
-      <xs:enumeration value="TempSens"/>
-      <xs:enumeration value="PressSens"/>
-      <xs:enumeration value="LightSens"/>
-      <xs:enumeration value="SensOther"/>
-      <xs:enumeration value="CustomFF"/>
-      <xs:enumeration value="ArduinoFF"/>
-      <xs:enumeration value="FreedomFF"/>
-      <xs:enumeration value="TowerFF"/>
-      <xs:enumeration value="LED"/>
-      <xs:enumeration value="Camera"/>
-      <xs:enumeration value="LCD"/>
-      <xs:enumeration value="GLCD"/>
-      <xs:enumeration value="Speaker"/>
-      <xs:enumeration value="Other"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- eraseTypeEnum -->
-  <xs:simpleType name="EraseTypeEnum">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="sector"/>
-      <xs:enumeration value="full"/>
-      <xs:enumeration value="no"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- MemoryIDTypeEnum -->
-  <xs:simpleType name="MemoryIDTypeEnum">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="IRAM1"/>
-      <xs:enumeration value="IRAM2"/>
-      <xs:enumeration value="IRAM3"/>
-      <xs:enumeration value="IRAM4"/>
-      <xs:enumeration value="IRAM5"/>
-      <xs:enumeration value="IRAM6"/>
-      <xs:enumeration value="IRAM7"/>
-      <xs:enumeration value="IRAM8"/>
-      <xs:enumeration value="IROM1"/>
-      <xs:enumeration value="IROM2"/>
-      <xs:enumeration value="IROM3"/>
-      <xs:enumeration value="IROM4"/>
-      <xs:enumeration value="IROM5"/>
-      <xs:enumeration value="IROM6"/>
-      <xs:enumeration value="IROM7"/>
-      <xs:enumeration value="IROM8"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- Dendian enumeration type -->
-  <xs:simpleType name="DendianEnum">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Little-endian"/>
-      <xs:enumeration value="Big-endian"/>
-      <xs:enumeration value="Configurable"/>
-      <xs:enumeration value="*"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- Dfpu enumeration type -->
-  <xs:simpleType name="DfpuEnum">
-    <xs:restriction base="xs:token">
-      <!-- core has FPU (type of FPU depends on Dcore) -->
-      <xs:enumeration value="FPU"/>
-      <xs:enumeration value="1"/>
-      <!-- core has no FPU -->
-      <xs:enumeration value="NO_FPU"/>
-      <xs:enumeration value="0"/>
-      <!-- single precision FPU -->
-      <xs:enumeration value="SP_FPU"/>
-      <!-- double precision FPU -->
-      <xs:enumeration value="DP_FPU"/>
-      <!-- any -->
-      <xs:enumeration value="*"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- Dmpu enumeration type -->
-  <xs:simpleType name="DmpuEnum">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="MPU"/>
-      <xs:enumeration value="NO_MPU"/>
-      <xs:enumeration value="0"/>
-      <xs:enumeration value="1"/>
-      <xs:enumeration value="*"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- file category type -->
-  <xs:simpleType name="FileCategoryType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="doc"/>
-      <xs:enumeration value="header"/>
-      <xs:enumeration value="include"/>
-      <xs:enumeration value="library"/>
-      <xs:enumeration value="object"/>
-      <xs:enumeration value="source"/>
-      <xs:enumeration value="sourceC"/>
-      <xs:enumeration value="sourceCpp"/>
-      <xs:enumeration value="sourceAsm"/>
-      <xs:enumeration value="linkerScript"/>
-      <xs:enumeration value="utility"/>
-      <xs:enumeration value="image"/>
-      <xs:enumeration value="other"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- file attribute type -->
-  <xs:simpleType name="FileAttributeType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="config"/>
-      <xs:enumeration value="copy"/>
-      <xs:enumeration value="template"/>
-      <xs:enumeration value="interface"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-
-  <!-- compiler toolchain enumeration -->
-  <xs:simpleType name="CompilerEnumType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="GCC"/>
-      <xs:enumeration value="ARMCC"/>
-      <xs:enumeration value="IAR"/>
-      <xs:enumeration value="Tasking"/>
-      <xs:enumeration value="GHS"/>
-      <xs:enumeration value="Cosmic"/>
-      <xs:enumeration value="G++"/> <!-- Code Sourcery -->
-      <xs:enumeration value="*"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <!-- compiler output enumeration -->
-  <xs:simpleType name="CompilerOutputType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="exe"/> <!-- executable -->
-      <xs:enumeration value="lib"/> <!-- library -->
-      <xs:enumeration value="*"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  
-
-  <xs:complexType name="FilterType">
-    <xs:attribute name="Dfamily"     type="xs:string"/> <!-- deprecated as they are too weak for filtering -->
-    <xs:attribute name="DsubFamily"  type="xs:string"/> <!-- deprecated as tehy are too weak for filtering -->
-    <xs:attribute name="Dvariant"    type="xs:string"/>
-    <xs:attribute name="Dvendor"     type="DeviceVendorEnum"/>
-    <xs:attribute name="Dname"       type="xs:string"/> <!-- can contain wildcards ?* in condition -->
-    <xs:attribute name="Dcore"       type="DcoreEnum"/>
-    <xs:attribute name="Dfpu"        type="DfpuEnum"/>
-    <xs:attribute name="Dmpu"        type="DmpuEnum"/>
-    <xs:attribute name="Dendian"     type="DendianEnum"/>
-    <xs:attribute name="Pname"       type="RestrictedString"/>
-    <xs:attribute name="Cvendor"     type="xs:string"/>
-    <xs:attribute name="Cbundle"     type="xs:string"/>
-    <xs:attribute name="Cclass"      type="CclassType"/>
-    <xs:attribute name="Cgroup"      type="CgroupType"/>
-    <xs:attribute name="Csub"        type="CsubType"/>
-    <xs:attribute name="Cvariant"    type="CvariantType"/>
-    <xs:attribute name="Cversion"    type="ConditionVersionType"/>
-    <xs:attribute name="Capiversion" type="ConditionVersionType"/>
-    <xs:attribute name="Tcompiler"   type="CompilerEnumType"/>
-    <xs:attribute name="Toutput"     type="CompilerOutputType"/>
-    <xs:attribute name="condition"   type="xs:string"/>
-  </xs:complexType>
-
-  <!-- taxonomy description type definition -->
-  <xs:complexType name="TaxonomyDescriptionType">
-    <xs:simpleContent>
-      <xs:extension base='xs:string'>
-        <xs:attribute name="Cclass"    type="CclassType" use="required"/> <!-- Class the description is associated with -->
-        <xs:attribute name="Cgroup"    type="CgroupType" use="optional"/> <!-- Group the description is associated with -->
-        <xs:attribute name="doc"       type="xs:string"  use="optional"/> <!-- link to documentation for the :Class:[Group] -->
-        <xs:attribute name="generator" type="xs:string"  use="optional"/> <!-- link a generator to a taxonomy -->
-      </xs:extension>
-    </xs:simpleContent>
-  </xs:complexType>
-
-  <xs:complexType name="TaxonomyType">
-    <xs:sequence>
-      <xs:element name="description" type="TaxonomyDescriptionType" minOccurs="1" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:complexType>
-
-  <!-- API type definition -->
-  <xs:complexType name="ApiType">
-    <xs:sequence>
-      <xs:element name="description" type="xs:string" minOccurs="0"/>
-      <!-- list of files / content -->
-      <xs:element name="files">
-        <xs:complexType>
-          <xs:sequence>
-            <xs:element name="file" type="FileType" maxOccurs="unbounded"/>
-          </xs:sequence>
-        </xs:complexType>
-      </xs:element>
-    </xs:sequence>
-    <xs:attribute name="Cclass"    type="CclassType" use="required"/>
-    <xs:attribute name="Cgroup"    type="CgroupType" use="required"/>
-    <xs:attribute name="exclusive" type="xs:boolean" use="optional" default="1"/>
-    <xs:attribute name="Capiversion" type="VersionType" use="optional"/>
-  </xs:complexType>
-
-  <xs:complexType name="ApisType">
-    <xs:sequence>
-      <xs:element name="api" type="ApiType" minOccurs="1" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:complexType>
-
-  <xs:complexType name="ConditionType">
-    <xs:sequence>
-      <xs:element name="description" type="xs:string" minOccurs="0"/>
-      <xs:choice minOccurs="1" maxOccurs="unbounded">
-        <xs:element name="accept"  type="FilterType"/>
-        <xs:element name="require" type="FilterType"/>
-        <xs:element name="deny"    type="FilterType"/>
-      </xs:choice>
-    </xs:sequence>
-    <xs:attribute name="id" type="xs:string" use="required"/>
-  </xs:complexType>
-
-  <xs:complexType name="ConditionsType">
-    <xs:sequence>
-      <xs:element name="condition" type="ConditionType" minOccurs="1" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:complexType>
-
-  <xs:complexType name="ComponentCategoryType">
-    <xs:attribute name="Cvendor"     type="xs:string"             use="optional"/>
-    <xs:attribute name="Cbundle"     type="xs:string"             use="optional"/>
-    <xs:attribute name="Cclass"      type="CclassType"            use="required"/>
-    <xs:attribute name="Cgroup"      type="CgroupType"            use="required"/>
-    <xs:attribute name="Csub"        type="CsubType"              use="optional"/>
-    <xs:attribute name="Cvariant"    type="CvariantType"          use="optional"/>
-    <xs:attribute name="Cversion"    type="ConditionVersionType"  use="optional"/>
-    <xs:attribute name="Capiversion" type="ConditionVersionType"  use="optional"/>
-    <xs:attribute name="instances"   type="InstancesType"         use="optional" default="1"/>
-  </xs:complexType>
-
-  <xs:complexType name="ExampleProjectType">
-    <xs:sequence>
-      <xs:element name="environment" maxOccurs="unbounded">
-        <xs:complexType>
-          <xs:attribute name="name" type="xs:string" use="required"/>
-          <xs:attribute name="load" type="xs:string" use="required"/>
-        </xs:complexType>
-      </xs:element>
-    </xs:sequence>
-  </xs:complexType>
-
-  <xs:complexType name="BoardReferenceType">
-    <xs:attribute name="name"        type="xs:string"        use="required"/> <!-- refers to Board Description by name   -->
-    <xs:attribute name="vendor"      type="xs:string"        use="required"/> <!-- refers to Board Description by vendor -->
-    <xs:attribute name="Dvendor"     type="DeviceVendorEnum" use="optional"/> <!-- deprecated in 1.2 -->
-    <xs:attribute name="Dfamily"     type="xs:string"        use="optional"/> <!-- deprecated in 1.2 -->
-    <xs:attribute name="DsubFamily"  type="xs:string"        use="optional"/> <!-- deprecated in 1.2 -->
-    <xs:attribute name="Dname"       type="xs:string"        use="optional"/> <!-- deprecated in 1.2 -->
-  </xs:complexType>
-
-  <xs:complexType name="CompatibleDeviceType">
-    <xs:attribute name="deviceIndex" type="xs:string"        use="optional" />
-    <xs:attribute name="Dvendor"     type="DeviceVendorEnum" use="optional"/>
-    <xs:attribute name="Dfamily"     type="xs:string"        use="optional"/>
-    <xs:attribute name="DsubFamily"  type="xs:string"        use="optional"/>
-    <xs:attribute name="Dname"       type="xs:string"        use="optional"/>
-  </xs:complexType>
-
-  <xs:complexType name="BoardsDeviceType">
-    <xs:attribute name="deviceIndex" type="xs:string"        use="optional" />
-    <xs:attribute name="Dvendor"     type="DeviceVendorEnum" use="required"/>
-    <xs:attribute name="Dfamily"     type="xs:string"        use="optional"/> <!-- use Dfamiliy or DsubFamily or Dname attribute exclusively -->
-    <xs:attribute name="DsubFamily"  type="xs:string"        use="optional"/> <!-- use Dfamiliy or DsubFamily or Dname attribute exclusively -->
-    <xs:attribute name="Dname"       type="xs:string"        use="optional"/> <!-- use Dfamiliy or DsubFamily or Dname attribute exclusively -->
-  </xs:complexType>
-
-  <xs:simpleType name="BoardBookCategoryEnum">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="setup"/>
-      <xs:enumeration value="schematic"/>
-      <xs:enumeration value="overview"/>
-      <xs:enumeration value="manual"/>
-      <xs:enumeration value="other"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <xs:complexType name="BoardsBookType">
-    <xs:attribute name="category" type="BoardBookCategoryEnum"/>
-    <xs:attribute name="name"     type="xs:string"/>
-    <xs:attribute name="title"    type="xs:string"/>
-  </xs:complexType>
-
-  <xs:complexType name="DebugInterfaceType">
-    <xs:attribute name="adapter"   type="xs:string"/>
-    <xs:attribute name="connector" type="xs:string"/>
-  </xs:complexType>
-     
-  <xs:group name="BoardElementsGroup">
-    <xs:choice>
-      <xs:element name="description"      type="xs:string"/>
-      <xs:element name="feature"          type="BoardFeatureType" maxOccurs="unbounded"></xs:element>
-      <xs:element name="mountedDevice"    type="BoardsDeviceType" maxOccurs="unbounded"/>
-      <xs:element name="compatibleDevice" type="CompatibleDeviceType" maxOccurs="unbounded"/>
-      <xs:element name="image">
-        <xs:complexType>
-          <xs:attribute name="small" type="xs:string" use="optional"/>
-          <xs:attribute name="large" type="xs:string" use="optional"/>
-        </xs:complexType>
-      </xs:element>
-      <xs:element name="debugInterface" type="DebugInterfaceType" maxOccurs="unbounded"/>
-      <xs:element name="book" type="BoardsBookType" maxOccurs="unbounded"/>
-    </xs:choice>
-  </xs:group>
-
-  <xs:complexType name="BoardType">
-    <xs:sequence>
-      <xs:group   ref="BoardElementsGroup" minOccurs="1" maxOccurs="unbounded"/>
-    </xs:sequence>
-    <xs:attribute name="vendor"       type="xs:string" use="required"/>
-    <xs:attribute name="name"         type="xs:string" use="required"/>
-    <xs:attribute name="revision"     type="xs:string" use="optional"/>
-    <xs:attribute name="salesContact" type="xs:string" use="optional"/>
-    <xs:attribute name="orderForm"    type="xs:anyURI" use="optional"/>
-  </xs:complexType>
-
-  <xs:complexType name="BoardsType">
-    <xs:sequence>
-      <xs:element name="board" type="BoardType" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:complexType>
-
-  <xs:complexType name="ExampleAttributesType">
-    <xs:choice maxOccurs="unbounded">
-      <xs:element name="category"    type="xs:string"             minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="component"   type="ComponentCategoryType" minOccurs="0" maxOccurs="unbounded"/>
-      <xs:element name="keyword"     type="xs:string"             minOccurs="0" maxOccurs="unbounded"/>
-    </xs:choice>
-  </xs:complexType>
-
-  <xs:complexType name="ExampleType">
-    <xs:sequence>
-      <!-- brief example description -->
-      <xs:element name="description" type="xs:string"/>
-      <!-- references the board -->
-      <xs:element name="board"       type="BoardReferenceType" maxOccurs="unbounded"/>
-      <!-- lists environments with their load files -->
-      <xs:element name="project"     type="ExampleProjectType"/>
-      <!-- categories, keywords and used components -->
-      <xs:element name="attributes"  type="ExampleAttributesType" />
-    </xs:sequence>
-    <!-- display name of the example -->
-    <xs:attribute name="name"        type="xs:string" use="required"/>
-    <!-- relative folder where the example is stored in the package -->
-    <xs:attribute name="folder"      type="xs:string" use="required"/>
-    <!-- archive file name with extension located in folder -->
-    <xs:attribute name="archive"     type="xs:string" use="optional"/>
-    <!-- file name with extension relative to folder -->
-    <xs:attribute name="doc"         type="xs:string" use="required"/>
-    <!-- version of the example -->
-    <xs:attribute name="version"     type="xs:string" use="optional"/>
-  </xs:complexType>
-
-  <!-- section listing all examples contained in the package -->
-  <xs:complexType name="ExamplesType">
-    <xs:sequence>
-      <xs:element name="example" type="ExampleType" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:complexType>
-
-  <xs:complexType name="KeywordsType">
-    <xs:sequence>
-      <xs:element name="keyword" type="xs:string" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:complexType>
-
-  <xs:simpleType name="InstancesType">
-    <xs:restriction base="xs:integer">
-      <xs:minInclusive value="1"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- Component file type definition -->
-  <xs:complexType name="FileType">
-    <xs:attribute name="condition" type="xs:string" use="optional"/>
-    <!-- file item category: source, header, include path, etc.  -->
-    <xs:attribute name="category" type="FileCategoryType" use ="required"/>
-    <!-- file item action attribute : config (copy to project, template, interface)  -->
-    <xs:attribute name="attr"     type="FileAttributeType" use ="optional"/>
-    <!-- description for "template" or "interface" files. Multiple items are combined when they have the same select attribute  -->
-    <xs:attribute name="select"   type="xs:string" use ="optional"/>
-    <!-- path + filename + extension -->
-    <xs:attribute name="name" type ="xs:string" use="required" />
-    <!-- copy file to project folder:  deprecated, use attr="config" instead  -->
-    <xs:attribute name="copy" type ="xs:string" use="optional"/>
-    <!-- simple file version: to be used by RTE copy file action to see whether the file needs updating in project -->
-    <xs:attribute name="version" type ="VersionType" use="optional"/>
-    <!-- path(s) to find source files for a library, paths are delimited with semicolon (;) -->
-    <xs:attribute name="src" type="xs:string" use ="optional"/>
-  </xs:complexType>
-
-  <!-- some strings are used to construct filenames (e.g. package name). Such names can contain only subset of characters 
-       and must not contain neither spaces nor dots.
-  -->
-  <xs:simpleType name="RestrictedString">
-    <xs:restriction base="xs:string">
-      <xs:pattern value="[\-_A-Za-z0-9]+"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <!-- version can contain one or more of alphanumeric characters and symbols '_' '-' '.' 
-       Important: version pattern shall remain the same while versions change
-  -->
-  <xs:simpleType name="VersionType">
-    <xs:restriction base="xs:string">
-      <xs:pattern value="[\.\-_A-Za-z0-9]+"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- version can contain one or more of alphanumeric characters and symbols '_' '-' '.' 
-       Allows specifing a version range: minVersion : maxVersion
-  -->
-  <xs:simpleType name="ConditionVersionType">
-    <xs:restriction base="xs:string">
-      <xs:pattern value="[\.:\-_A-Za-z0-9]+"/>
-    </xs:restriction>
-  </xs:simpleType>
-
-  <!-- PackageType creates a unique ID for a package (added in 1.4.4) -->
-  <xs:complexType name="PackageType">
-    <!-- vendor of the package -->
-    <xs:attribute name="vendor"  type="xs:string"            use="required"/>
-    <!-- name of the package -->
-    <xs:attribute name="name"    type="xs:string"            use="required"/>
-    <!-- version or version range of the package -->
-    <xs:attribute name="version" type="ConditionVersionType" use="required"/>
-  </xs:complexType>
-  
-  <!-- Package dependency section type (added in 1.4.4) -->
-  <xs:complexType name="PackagesType">
-    <xs:sequence maxOccurs="unbounded">
-      <xs:element name="package" type="PackageType"/>
-    </xs:sequence>
-  </xs:complexType>
-
-  <!-- LanguageType creates a unique language ID (added in 1.4.4) -->
-  <xs:complexType name="LanguageType">
-    <!-- language name e.g. C -->
-    <xs:attribute name="name"    type="xs:string" use="required"/>
-    <!-- language version e.g. C99 -->
-    <xs:attribute name="version" type="xs:string" use="required"/>
-  </xs:complexType>
-
-  <!-- Lanuage section type (added in 1.4.4) -->
-  <xs:complexType name="LanguagesType">
-    <xs:sequence maxOccurs="unbounded">
-      <xs:element name="language" type="LanguageType"/>
-    </xs:sequence>
-  </xs:complexType>
-
-  <!-- CompilerType crates a unique toolchain ID, e.g. armcc 5.4.0 (added in 1.4.4) -->
-  <xs:complexType name="CompilerType">
-    <xs:attribute name="name"    type="CompilerEnumType" use="required"/>
-    <xs:attribute name="version" type="ConditionVersionType" use="required"/>
-  </xs:complexType>
-
-  <!-- Compiler section type (added in 1.4.4) -->
-  <xs:complexType name="CompilersType">
-    <xs:sequence maxOccurs="unbounded">
-      <xs:element name="compiler" type="CompilerType"/>
-    </xs:sequence>
-  </xs:complexType>
-
-  <!-- Requirements Section: (added in 1.4.4) -->
-  <xs:complexType name="RequirementsType">
-    <xs:all>
-      <xs:element name="packages"  type="PackagesType"     minOccurs="0"/>
-      <xs:element name="languages" type="LanguagesType" minOccurs="0"/>
-      <xs:element name="compilers" type="CompilersType" minOccurs="0"/>
-    </xs:all>
-  </xs:complexType>
-
-  <!-- Project target specification: (added in 1.4.4) -->
-  <xs:complexType name="TargetType">
-    <xs:choice maxOccurs="unbounded">
-      <!-- build options -->
-      <xs:element name="output"     type="OutputType"/>
-      <!-- memory options -->
-      <xs:element name="memory"     type="TargetMemoryType"       minOccurs="0" maxOccurs="unbounded"/>
-      <!-- stack setting -->
-      <xs:element name="stack"      type="StackType" minOccurs="0" maxOccurs="1"/>
-      <!-- heap setting -->
-      <xs:element name="heap"       type="HeapType" minOccurs="0"  maxOccurs="1"/>
-      <!-- algorithm options -->
-      <xs:element name="algorithm"  type="TargetAlgorithmType"    minOccurs="0" maxOccurs="unbounded"/>
-      <!-- debug probe selection and configuration -->
-      <xs:element name="debugProbe" type="DebugProbeType"          minOccurs="0"/>
-    </xs:choice>
-    <!-- Board Vendor -->
-    <xs:attribute name="Bvendor"  type="xs:string" use="optional"/>
-    <!-- Board Name -->
-    <xs:attribute name="Bname"    type="xs:string" use="optional"/>
-    <!-- Board Version -->
-    <xs:attribute name="Bversion" type="xs:string" use="optional"/>
-    <!-- Device Vendor -->
-    <xs:attribute name="Dvendor"  type="xs:string" use="optional"/>
-    <!-- Device Name -->
-    <xs:attribute name="Dname"    type="xs:string" use="optional"/>
-    <!-- Processor Instance Name -->
-    <xs:attribute name="Pname"    type="xs:string" use="optional"/>
-    <!-- FPU used in target build -->
-    <xs:attribute name="Dfpu"    type="DfpuEnum" use="optional"/>
-    <!-- Endianess used in target build -->
-    <xs:attribute name="Dendian"    type="DendianEnum" use="optional"/>
-    <!-- MPU used in target build -->
-    <xs:attribute name="Dmpu"    type="DmpuEnum" use="optional"/>
-  </xs:complexType>
-
-  <!-- Debug probe specification: (added in 1.4.4) -->
-  <xs:complexType name="DebugProbeType">
-    <!-- Product Name of the debug probe-->
-    <xs:attribute name="name"      type="xs:string" use="required"/>
-    <!-- Debug protocol selection -->
-    <xs:attribute name="protocol"  type="xs:string" use="required"/>
-    <!-- Core clock configured by application -->
-    <xs:attribute name="coreClock" type="NonNegativeInteger" use="required"/>
-    <!-- TPIU clock configured-->
-    <xs:attribute name="tpiuClock" type="NonNegativeInteger" use="optional"/>
-  </xs:complexType>
-
-  <!-- Build settings for the project, setting RTE filter options (added in 1.4.4) -->
-  <xs:complexType name="OutputType">
-    <!-- Project output file name -->
-    <xs:attribute name="name"      type="xs:string"          use="required"/>
-    <!-- Project output library or executable -->
-    <xs:attribute name="type"      type="CompilerOutputType" use="required"/>
-    <!-- Project build for debug -->
-    <xs:attribute name="debug"     type="xs:boolean"         use="required"/>
-  </xs:complexType>
-
-  <!-- Memory settings for the project, redefining defaults from DFP (added in 1.4.4) --> 
-  <xs:complexType name="TargetMemoryType">
-    <xs:attribute name="id"      type="xs:string"  use="optional"/> <!-- only use with legacy DFPs -->
-    <!-- defines the name of the memory for reference, allows to redefine memory from DFP -->
-    <xs:attribute name="name"    type="xs:string"  use="required"/>
-    <!-- (re-)defines the start address of the memory -->
-    <xs:attribute name="start"   type="NonNegativeInteger"  use="optional"/>
-    <!-- (re-)defines the size in bytes of the memory -->
-    <xs:attribute name="size"    type="NonNegativeInteger"  use="optional"/>
-    <!-- disables the memory with the name specified by DFP -->
-    <xs:attribute name="remove"  type="xs:boolean" use="optional" default="0"/>
-    <!-- if true, this memory is used for the startup code -->
-    <xs:attribute name="startup" type="xs:boolean" use="optional" default="0"/>
-    <!-- if true, this memory is initialized with 0 -->
-    <xs:attribute name="init"    type="xs:boolean" use="optional" default="0"/>
-    <!-- overrides access permisson configured by the DFP -->
-    <xs:attribute name="access"  type="AccessType" use="optional"/>
-    <!-- specifies whether the memory is used as default by linker -->
-    <xs:attribute name="default" type="xs:boolean"          use="optional" default="0"/>
-  </xs:complexType>
-
-  <!-- Algorithm settings for the project, redefining defaults from DFP (added in 1.4.4) -->
-  <xs:complexType name="TargetAlgorithmType">
-    <!-- references the filename of the algorith, allowing to redefine attributes of algorithms in DFP -->
-    <xs:attribute name="name"     type="xs:string"           use="required"/>
-    <!-- overrides the start address programmed by named algorithm from DFP -->
-    <xs:attribute name="start"    type="NonNegativeInteger"  use="optional"/>
-    <!-- overrides the size programmed by named algorithm from DFP -->
-    <xs:attribute name="size"     type="NonNegativeInteger"  use="optional"/>
-    <!-- disables the algorithm specified as default in DFP -->
-    <xs:attribute name="remove"   type="xs:boolean"          use="optional" default="0"/>
-    <!-- overrides the RAMstart for algorithm with 'name' from DFP -->
-    <xs:attribute name="RAMstart" type="NonNegativeInteger"  use="optional"/>
-    <!-- overrides the RAMsize for algorithm with 'name' from DFP -->
-    <xs:attribute name="RAMsize"  type="NonNegativeInteger"  use="optional"/>
-  </xs:complexType>
-
-  <!-- element specifying the stack (added in 1.4.4) -->
-  <xs:complexType name="StackType">
-    <xs:attribute name="size" type="NonNegativeInteger" use="required"/>
-  </xs:complexType>
-
-  <!-- element specifying the heap (added in 1.4.4) -->
-  <xs:complexType name="HeapType">
-    <xs:attribute name="size" type="NonNegativeInteger" use="required"/>
-  </xs:complexType>
-
-  <!-- Project file type definition (added in 1.4.4) -->
-  <xs:complexType name="ProjectFileType">
-    <!-- path + filename + extension -->
-    <xs:attribute name="name" type ="xs:string" use="required" />
-    <!-- file item category: source, header, include path, etc.  -->
-    <xs:attribute name="category" type="FileCategoryType" use ="required"/>
-    <!-- path(s) to find source files for a library, paths are delimited with semicolon (;) -->
-    <xs:attribute name="src" type="xs:string" use ="optional"/>
-  </xs:complexType>
-
-  <!-- Group section contains a list of files and (sub-)groups (added in 1.4.4) -->
-  <xs:complexType name="GroupType">
-    <xs:choice maxOccurs="unbounded">
-      <xs:element name="file"  type="ProjectFileType"  />
-      <xs:element name="group" type="GroupType" />
-    </xs:choice>
-    <xs:attribute name="name" use="required"/>
-  </xs:complexType>
-
-  <!-- Files section within the project section (added in 1.4.4) -->
-  <xs:complexType name="ProjectFilesType">
-    <xs:choice maxOccurs="unbounded">
-      <xs:element name="file"  type="ProjectFileType"  />
-      <xs:element name="group" type="GroupType" />
-    </xs:choice>
-  </xs:complexType>
-  
-  <!-- Component selection section (added in 1.4.4) -->
-  <xs:complexType name="ComponentSelectType">
-    <xs:sequence>
-      <xs:element name="component" maxOccurs="unbounded">
-        <xs:complexType>
-          <xs:sequence>
-            <!-- all config files -->
-            <xs:element name="file" minOccurs="0" maxOccurs="unbounded">
-              <xs:complexType>
-                <!-- condition id of the condition that evaluates to true on project creation -->
-                <xs:attribute name="condition" type="xs:string" use="optional"/>
-                <!-- file item category: source, header, include path, etc.  -->
-                <xs:attribute name="category" type="FileCategoryType" use ="required"/>
-                <!-- file item action attribute : config (copy to project, template, interface)  -->
-                <xs:attribute name="attr"     type="FileAttributeType" use ="optional"/>
-                <!-- path + filename + extension -->
-                <xs:attribute name="name" type ="xs:string" use="required" />
-                <!-- configuration file version: to be used by RTE to see whether the file requires updating or not -->
-                <xs:attribute name="version" type ="VersionType" use="required"/>
-              </xs:complexType>
-            </xs:element>
-          </xs:sequence>
-          <xs:attribute name="Cvendor"     type="xs:string"             use="required"/>
-          <xs:attribute name="Cbundle"     type="xs:string"             use="required"/>
-          <xs:attribute name="Cclass"      type="CclassType"            use="required"/>
-          <xs:attribute name="Cgroup"      type="CgroupType"            use="required"/>
-          <xs:attribute name="Csub"        type="CsubType"              use="required"/>
-          <xs:attribute name="Cvariant"    type="CvariantType"          use="required"/>
-          <xs:attribute name="Cversion"    type="ConditionVersionType"  use="required"/>
-          <xs:attribute name="Capiversion" type="ConditionVersionType"  use="optional"/> <!-- only used when component implements an API -->
-          <xs:attribute name="instances"   type="InstancesType"         use="optional" default="1"/>
-        </xs:complexType>
-      </xs:element> 
-    </xs:sequence>
-  </xs:complexType>
-  
-  <!-- Project section: (added in 1.4.4) -->
-  <xs:complexType name="ProjectType">
-    <xs:all>
-      <!-- target selection and configuration -->
-      <xs:element name="target" type="TargetType"/>
-      <!-- components selected for project -->
-      <xs:element name="select" type="ComponentSelectType"/>
-      <!-- project files not contained in components -->
-      <xs:element name="files" type="ProjectFilesType"/>
-    </xs:all>
-    <!-- if no project name is provided, the filename of the GPDSC is used -->
-    <xs:attribute name="name" type="xs:string" use="optional"/>
-    <!-- optional link/reference to documentation about the project -->
-    <xs:attribute name="documentation" type="xs:string" use="optional"/>
-  </xs:complexType>
-
-  <!-- Create Section: (added in 1.4.4) -->
-  <xs:complexType name="CreateType">
-    <xs:sequence>
-      <!-- project section -->
-      <xs:element name="project" type="ProjectType" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:complexType>
-
-  <!-- release contains version as an attribute and notes as element text -->
-  <xs:complexType name="ReleaseType">
-    <xs:simpleContent>
-      <xs:extension base='xs:string'>
-        <xs:attribute name="version"     type="VersionType" use="required"/>
-        <xs:attribute name="date"        type="xs:date"     use="optional"/>
-        <xs:attribute name="deprecated"  type="xs:date"     use="optional"/>
-        <xs:attribute name="replacement" type="xs:string"   use="optional"/>
-      </xs:extension>
-    </xs:simpleContent>
-  </xs:complexType>
-
-  <xs:complexType name="ReleasesType">
-    <xs:sequence>
-      <xs:element name="release" type="ReleaseType" minOccurs="1" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:complexType>
-
-  <!-- Generator file type definition -->
-  <xs:complexType name="GeneratorFileType">
-    <!-- conditions can be used to filter relevant files depending on e.g. device name 
-         or toolchain -->
-    <xs:attribute name="condition" type="xs:string" use="optional"/>
-    <!-- file item category: generator specific file type -->
-    <xs:attribute name="category" type="xs:string" use ="required"/>
-    <!-- path + filename + extension -->
-    <xs:attribute name="name" type ="xs:string" use="required" />
-    <!-- file version -->
-    <xs:attribute name="version" type ="VersionType" use="optional"/>
-  </xs:complexType>
-
-  <xs:complexType name="GeneratorDeviceSelectType">
-    <xs:attribute name="Dvendor"     type="DeviceVendorEnum" use="required"/>
-    <xs:attribute name="Dname"       type="xs:string"        use="optional"/>
-    <xs:attribute name="Dvariant"    type="xs:string"        use="optional"/>
-    <xs:attribute name="Pname"       type="RestrictedString"        use="optional"/>
-  </xs:complexType>
-
-  <xs:complexType name="GeneratorCommandArgumentType">
-    <xs:simpleContent>
-      <xs:extension base='xs:string'>
-        <xs:attribute name="switch" type="xs:string" use="optional"/>
-      </xs:extension>
-    </xs:simpleContent>
-  </xs:complexType>
-
-  <xs:complexType name="GeneratorCommandArgumentsType">
-    <xs:sequence>
-      <xs:element name="argument" type="GeneratorCommandArgumentType" minOccurs="0" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:complexType>
-
-  <xs:complexType name="GpdscFileType">
-    <xs:attribute name="name" type="xs:string" use="required"/>
-  </xs:complexType>
-
-  <!-- Generator Type -->
-  <xs:complexType name="GeneratorType">
-    <xs:all>
-      <xs:element name="description" type="xs:string"/>
-      <xs:element name="select" type="GeneratorDeviceSelectType" minOccurs="0"/>
-      <xs:element name="command" type="xs:string"/>
-      <xs:element name="workingDir" type="xs:string" minOccurs="0"/>
-      <xs:element name="arguments" type="GeneratorCommandArgumentsType" minOccurs="0"/>
-      <xs:element name="gpdsc" type="GpdscFileType" minOccurs="0"/>
-      <!-- list of project files / content -->
-      <xs:element name="project_files" minOccurs="0">
-        <xs:complexType>
-          <xs:sequence>
-            <xs:element name="file" type="FileType" maxOccurs="unbounded"/>
-          </xs:sequence>
-        </xs:complexType>
-      </xs:element>
-      <!-- list of tool files / content -->
-      <xs:element name="files" minOccurs="0">
-        <xs:complexType>
-          <xs:sequence>
-            <!-- tool files are under sole control of the generator -->
-            <xs:element name="file" type="GeneratorFileType" maxOccurs="unbounded"/>
-          </xs:sequence>
-        </xs:complexType>
-      </xs:element>
-      <!-- Generator tools specific section ignored by other tools -->
-      <xs:element name="extensions" minOccurs="0">
-        <xs:complexType>
-          <xs:sequence>
-            <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded">
-            </xs:any>
-          </xs:sequence>
-        </xs:complexType>
-      </xs:element>
-    </xs:all>
-    <xs:attribute name="id"       type="xs:string" use ="required"/>
-    <xs:attribute name="Gvendor"  type="xs:string" use ="optional"/>
-    <xs:attribute name="Gtool"    type="xs:string" use ="optional"/>
-    <xs:attribute name="Gversion" type="xs:string" use ="optional"/>
-  </xs:complexType>
-  
-  <!-- Generators Section -->
-  <xs:complexType name="GeneratorsType">
-    <xs:sequence>
-      <xs:element name="generator" type="GeneratorType" minOccurs="1" maxOccurs="unbounded"/>
-    </xs:sequence>
-  </xs:complexType>
-
-  <!-- package description root point -->
-  <xs:element name="package" nillable="true">
-    <xs:complexType>
-      <xs:all>
-        <!-- name of the package (Device Support=DFP, Board Support=BSP) -->
-        <xs:element name="name" type="RestrictedString" minOccurs="1"/>
-        <!-- company name of the developer/maintainer of this package -->
-        <xs:element name="vendor" type="RestrictedString" minOccurs="1"/>
-        <!-- brief description of the content and purpose of the package -->
-        <xs:element name="description" type="xs:string" minOccurs="1"/>
-        <!-- download location of this PDSC and corresponding package file -->
-        <xs:element name="url" type="xs:anyURI" minOccurs="1"/>
-        <!-- e.g. mailto:Support@<vendor>.com or www.<vendor>.com/supportRequest -->
-        <xs:element name="supportContact" type="xs:string" minOccurs="0"/>
-        <!-- optional: click through license file name and relative path -->
-        <xs:element name="license" type="xs:string" minOccurs="0"/>
-        <!-- optional: section listing requirements (1.4.2) -->
-        <xs:element name="requirements" type="RequirementsType" minOccurs="0"/>
-        <!-- optional: section used for tool independant project creation (one shot) -->
-        <xs:element name="create" type="CreateType" minOccurs="0"/>
-        <!-- Version numbers and release history -->
-        <xs:element name="releases" type="ReleasesType" minOccurs="1"/>      
-        <!-- keyword for Search Engine Indexing (e.g. Google) -->
-        <xs:element name="keywords" type="KeywordsType" minOccurs="0"/>
-        <!-- generators are tools and utilities that are used to generate software components -->
-        <xs:element name="generators" type="GeneratorsType" minOccurs="0"/>
-        <!-- definition of devices including references to device support files contained in package -->
-        <xs:element name="devices" minOccurs="0">
-          <xs:complexType>
-            <!-- top level -->
-            <xs:sequence>
-              <!-- Family Level begin -->
-              <xs:element name="family" maxOccurs="unbounded">
-                <xs:complexType>
-                  <xs:sequence>
-                    <xs:group ref="DevicePropertiesGroup"/>
-                    <xs:element name="device" type="DeviceType" minOccurs="0" maxOccurs="unbounded"/>
-                    <!-- Sub Family Level begin-->
-                    <xs:element name="subFamily" minOccurs="0" maxOccurs="unbounded">
-                      <xs:complexType>
-                        <xs:sequence>
-                          <xs:group ref="DevicePropertiesGroup"/>
-                          <!-- Device Level begin-->
-                          <xs:element name="device" type="DeviceType" maxOccurs="unbounded"/>
-                          <!-- Device Level end -->
-                        </xs:sequence>
-                        <xs:attribute name="DsubFamily" type="xs:string" use="required"/>
-                      </xs:complexType>
-                    </xs:element>
-                    <!-- Sub Family Level end -->
-                  </xs:sequence>
-                  <xs:attribute name="Dfamily" type="xs:string"        use="required"/>
-                  <xs:attribute name="Dvendor" type="DeviceVendorEnum" use="required"/>
-                </xs:complexType>
-              </xs:element>
-              <!-- Family Level end -->
-            </xs:sequence>
-          </xs:complexType>
-        </xs:element>
-        <!-- devices end -->
-        <!-- definition of boards. Can be referenced by examples -->
-        <xs:element name="boards" type="BoardsType" minOccurs="0"/>
-        <!-- boards end -->
-        <!-- taxonomy section contains default descriptions used in the entire model -->
-        <xs:element name="taxonomy" type="TaxonomyType" minOccurs="0"/>
-        <!-- apis section contains api descriptions used in the entire model -->
-        <xs:element name="apis" type="ApisType" minOccurs="0"/>
-        <!-- conditions section contains all condition entries used by any component of the package -->
-        <xs:element name="conditions" type="ConditionsType" minOccurs="0"/>
-        <!-- examples section defining examples available within a package -->
-        <xs:element name="examples" type="ExamplesType" minOccurs="0"/>
-        <!-- software component definition -->
-        <xs:element name="components" minOccurs="0">
-          <xs:complexType>
-            <xs:choice minOccurs="1" maxOccurs="unbounded">
-              <!-- COMPONENT Description Root Point: -->
-              <xs:element name="bundle" minOccurs="1" maxOccurs="unbounded">
-                <xs:complexType>
-                  <xs:sequence>
-                    <xs:element name="description" type="xs:string"/>
-                    <xs:element name="doc"         type="xs:string"/>
-                    <xs:element name="component" minOccurs="1" maxOccurs="unbounded">
-                      <xs:complexType>
-                        <xs:sequence>
-                          <!-- a component can be deprecated if it is no longer maintained-->
-                          <xs:element name="deprecated" type="xs:boolean" minOccurs="0" default="false"/>
-                          <!-- short component description displayed -->
-                          <xs:element name="description" type="xs:string"/>
-                          <!-- content to be added to generated RTE_Component.h file -->
-                          <xs:element name="RTE_Components_h" type="xs:string" minOccurs="0"/>
-                          <!-- list of files / content -->
-                          <xs:element name="files">
-                            <xs:complexType>
-                              <xs:sequence>
-                                <xs:element name="file" type="FileType" maxOccurs="unbounded"/>
-                              </xs:sequence>
-                            </xs:complexType>
-                          </xs:element>
-                        </xs:sequence>
-                        <!-- component identity attributes Cclass Cvendor and Cversion are specified by bundle -->
-                        <xs:attribute name="Cgroup"   type="CgroupType"   use="required"/>
-                        <xs:attribute name="Csub"     type="CsubType"     use="optional"/>
-                        <xs:attribute name="Cvariant" type="CvariantType" use="optional"/>
-                        <!-- api version for this component -->
-                        <xs:attribute name="Capiversion"  type="VersionType" use="optional"/>
-                        <!-- component attribute for referencing a condition specified in conditions section above -->
-                        <xs:attribute name="condition" type="xs:string" use="optional"/>
-                        <!-- maximum allowed number of instances of a component in a project, default - 1-->
-                        <xs:attribute name="maxInstances" type="InstancesType" use="optional"/>
-                        <!-- association of component with a generator. If the component is selected the generator information becomes active -->
-                        <xs:attribute name="generator" type="xs:string" use="optional"/>
-                        <!-- identifies this component variant to be the preferred variant [Version 1.4.0] -->
-                        <xs:attribute name="isDefaultVariant" type="xs:boolean" use="optional"/>
-                      </xs:complexType>
-                    </xs:element>
-                  </xs:sequence>
-                  <!-- bundle attributes -->
-                  <xs:attribute name="Cbundle"  type="xs:string"   use="required"/>
-                  <xs:attribute name="Cvendor"  type="xs:string"   use="optional"/>
-                  <xs:attribute name="Cclass"   type="CclassType"  use="required"/>
-                  <xs:attribute name="Cversion" type="VersionType" use="required"/>
-                  <!-- association of component with a generator. If the component is selected the generator information becomes active -->
-                  <xs:attribute name="generator" type="xs:string" use="optional"/>
-                  <!-- identifies this bundle variant to be the preferred variant [Version 1.4.0] -->
-                  <xs:attribute name="isDefaultVariant" type="xs:boolean" use="optional"/>
-                </xs:complexType>
-              </xs:element>
-              <xs:element name="component" minOccurs="1" maxOccurs="unbounded">
-                <xs:complexType>
-                  <xs:sequence>
-                    <!-- a component can be deprecated if it is no longer maintained-->
-                    <xs:element name="deprecated" type="xs:boolean" minOccurs="0" default="false"/>
-                    <!-- short component description displayed -->
-                    <xs:element name="description" type="xs:string"/>
-                    <!-- content to be added to generated RTE_Component.h file -->
-                    <xs:element name="RTE_Components_h" type="xs:string" minOccurs="0"/>
-                    <!-- list of files / content -->
-                    <xs:element name="files">
-                      <xs:complexType>
-                        <xs:sequence>
-                          <xs:element name="file" type="FileType" maxOccurs="unbounded"/>
-                        </xs:sequence>
-                      </xs:complexType>
-                    </xs:element>
-                  </xs:sequence>
-                  <!-- component identity attributes -->
-                  <xs:attribute name="Cvendor"  type="xs:string"    use="optional"/>
-                  <xs:attribute name="Cclass"   type="CclassType"   use="required"/>
-                  <xs:attribute name="Cgroup"   type="CgroupType"   use="required"/>
-                  <xs:attribute name="Csub"     type="CsubType"     use="optional"/>
-                  <xs:attribute name="Cvariant" type="CvariantType" use="optional"/>
-                  <xs:attribute name="Cversion" type="VersionType"  use="required"/>
-                  <!-- api version for this component -->
-                  <xs:attribute name="Capiversion"  type="VersionType" use="optional"/>
-                  <!-- component attribute for referencing a condition specified in conditions section above -->
-                  <xs:attribute name="condition" type="xs:string" use="optional"/>
-                  <!-- maximum allowed number of instances of a component in a project, default - 1-->
-                  <xs:attribute name="maxInstances" type="InstancesType" use="optional"/>
-                  <!-- association of component with a generator. If the component is selected the generator information becomes active -->
-                  <xs:attribute name="generator" type="xs:string" use="optional"/>
-                  <!-- identifies this component variant to be the preferred variant [Version 1.4.0] -->
-                  <xs:attribute name="isDefaultVariant" type="xs:boolean" use="optional"/>
-                </xs:complexType>
-              </xs:element>
-            </xs:choice>
-            <xs:attribute name="generator" type="xs:string" use="optional"/>
-          </xs:complexType>
-        </xs:element>
-      </xs:all>
-      <xs:attribute name="schemaVersion" type="VersionType" use="required"/>
-    </xs:complexType>
-  </xs:element>
-</xs:schema>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 
+  Copyright (c) 2013-2016 ARM Limited. All rights reserved.
+ 
+  SPDX-License-Identifier: Apache-2.0
+ 
+  Licensed under the Apache License, Version 2.0 (the License); you may
+  not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+ 
+  http://www.apache.org/licenses/LICENSE-2.0
+ 
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an AS IS BASIS, WITHOUT
+  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+  $Date:        13. June 2016
+  $Revision:    1.4.5
+
+  $Project: Schema File for Package Description File Format Specification
+
+  Package file name convention <vendor>.<name>.<version>.pack
+  SchemaVersion=1.4
+
+  13. June 2016: 1.4.5
+  - added: Punits to ProcessorType
+  - added: Punit to DebugType
+  
+  26. April 2016: 1.4.4
+  - added: attribute defaultResetSequence to DebugType.
+  - added: <requirements> section:
+    - <packages> defining dependencies between packs
+    - <languages> defining required language support e.g. C99
+    - <compiler> defining required toolchains
+  - added: <create> section used for tool independent project description
+    - attributes: name, documentation, condition
+    - <target> specifies the board and device targeted by the project 
+    - <options> 
+    - <files> specifies the grouped files 
+  - updated: <algorith> element
+    - added attributes: style, parameter and endian
+  - updated: <memory> element
+    - added attributes: name, access and alias
+    - deprecating attribute: id (replaced by name + access)
+    
+  03. Dec 2015: 1.4.3
+  - adding attribute "sdf" to devices section element debugconfig
+  
+  16. Oct 2015: 1.4.1
+  - pName, Dname, Dvariant type changed from xs:string to RestrictedString
+
+  28. Aug 2015: 1.4.0
+  - deprecate devices memory tag attribute id and use
+    introduced name and access attributes instead
+  - added devices memory tag attribute: alias
+  - added devices algorithm tag attribute: style
+  - added attribute to define a default component variant
+  - added board book category: layout
+  
+  29. May 2015
+  - added missing Pname attribute to GeneratorDeviceSelectType used for multi processor
+    devices  
+  12. Jan. 2014
+  - allow to link a component with a generator via new component attribute
+  - generator command extended to deal with more sophisticated command lines / document sequence
+  
+-->
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="qualified" version="1.3">
+
+  <!-- NonNegativeInteger specifies the format in which numbers are represented in hexadecimal or decimal format -->
+  <xs:simpleType name="NonNegativeInteger">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="[+]?(0x|0X)?[0-9a-fA-F]+"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- Registered Device Vendors -->
+  <xs:simpleType name="DeviceVendorEnum">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="ABOV Semiconductor:126"/>
+      <xs:enumeration value="Actel:56"/>
+      <xs:enumeration value="Altera:85"/>
+      <xs:enumeration value="Altium:65"/>
+      <xs:enumeration value="Ambiq Micro:120"/>
+      <xs:enumeration value="Analog Devices:1"/>
+      <xs:enumeration value="ARM:82"/>
+      <xs:enumeration value="ARM CMSIS:109"/>
+      <xs:enumeration value="Atmel:3"/>
+      <xs:enumeration value="CSR:118"/>
+      <xs:enumeration value="Cypress:19"/>
+      <xs:enumeration value="Dialog Semiconductor:113"/>
+      <xs:enumeration value="Dolphin:57"/>
+      <xs:enumeration value="Domosys:26"/>
+      <xs:enumeration value="Ember:98"/>
+      <xs:enumeration value="Energy Micro:97"/>
+      <xs:enumeration value="EnOcean:91"/>
+      <xs:enumeration value="Evatronix:64"/>
+      <xs:enumeration value="Generic:5"/>
+      <xs:enumeration value="GigaDevice:123"/>
+      <xs:enumeration value="Holtek:106"/>
+      <xs:enumeration value="Hynix Semiconductor:6"/>
+      <xs:enumeration value="Hyundai:35"/>
+      <xs:enumeration value="Infineon:7"/>
+      <xs:enumeration value="Kionix:127"/>
+      <xs:enumeration value="Lapis Semiconductor:10"/>
+      <xs:enumeration value="Linear Technology:136"/>
+      <xs:enumeration value="Luminary Micro:76"/>
+      <xs:enumeration value="Maxim:23"/>
+      <xs:enumeration value="MediaTek:129"/>
+      <xs:enumeration value="MegaChips:128"/>
+      <xs:enumeration value="Mentor Graphics Co.:24"/>
+      <xs:enumeration value="Micronas:30"/>
+      <xs:enumeration value="Microsemi:112"/>
+      <xs:enumeration value="Milandr:99"/>
+      <xs:enumeration value="MindMotion:132"/>
+      <xs:enumeration value="NetSilicon:67"/>
+      <xs:enumeration value="Nordic Semiconductor:54"/>
+      <xs:enumeration value="Nuvoton:18"/>
+      <xs:enumeration value="NXP:11"/>
+      <xs:enumeration value="OKI SEMICONDUCTOR CO.,LTD.:108"/>
+      <xs:enumeration value="Panasonic:131"/>
+      <xs:enumeration value="Realtek Semiconductor:124"/>
+      <xs:enumeration value="Redpine Signals:125"/>
+      <xs:enumeration value="Renesas:117"/>
+      <xs:enumeration value="ROHM:103"/>
+      <xs:enumeration value="Samsung:47"/>
+      <xs:enumeration value="Silicon Labs:21"/>
+      <xs:enumeration value="SONiX:110"/>
+      <xs:enumeration value="Spansion:100"/>
+      <xs:enumeration value="STMicroelectronics:13"/>
+      <xs:enumeration value="Sunrise Micro Devices:121"/>
+      <xs:enumeration value="TI:16"/>
+      <xs:enumeration value="Texas Instruments:16"/>
+      <xs:enumeration value="Toshiba:92"/>
+      <xs:enumeration value="Triad Semiconductor:104"/>
+      <xs:enumeration value="WIZnet:122"/>
+      <xs:enumeration value="Xinnova:135"/>
+      <!-- deprecated: do not use -->
+      <xs:enumeration value="Freescale:78"/>
+      <xs:enumeration value="Freescale Semiconductor:78"/>
+      <xs:enumeration value="NXP (founded by Philips):11"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- AlgorithmStyleType: allow support of different flash programming algorithm styles -->
+  <xs:simpleType name="AlgorithmStyleType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Keil"/>
+      <xs:enumeration value="IAR"/>
+      <xs:enumeration value="CMSIS"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- Component Class Name Type: specify your own Class in taxonomy -->
+  <xs:simpleType name="CclassType">
+    <xs:restriction base="xs:string">
+      <xs:minLength value="3"/>
+      <xs:maxLength value="32"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- Component Group Name Type -->
+  <xs:simpleType name="CgroupType">
+    <xs:restriction base="xs:string">
+      <xs:minLength value="3"/>
+      <xs:maxLength value="32"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- Component Sub Name Type -->
+  <xs:simpleType name="CsubType">
+    <xs:restriction base="xs:string">
+      <xs:minLength value="0"/>
+      <xs:maxLength value="32"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- Component Variant Name Type -->
+  <xs:simpleType name="CvariantType">
+    <xs:restriction base="xs:string">
+      <xs:minLength value="3"/>
+      <xs:maxLength value="32"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- AccessType (added in 1.4.4) -->
+  <xs:simpleType name="AccessType">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="[rwxpsnc]+"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <!-- Processor Type -->
+  <xs:complexType name="ProcessorType">
+    <!-- Pname defines an identifier for a specific processor in a multi-processor devices -->
+    <xs:attribute name="Pname"        type="RestrictedString"/>
+    <!-- Punits specifies the number of processing units in a symmetric multi-processor core -->
+    <xs:attribute name="Punits"       type="InstancesType"/>
+    <!-- Dcore specifies the processor from a list of supported processors -->
+    <xs:attribute name="Dcore"        type="DcoreEnum"/>
+    <!-- Dfpu specifies the hardware floating point unit -->
+    <xs:attribute name="Dfpu"         type="DfpuEnum"/>
+    <!-- Dmpu specifies the memory protection unit -->
+    <xs:attribute name="Dmpu"         type="DmpuEnum"/>
+    <!-- Dendian specifies the endianess supported by the processor -->
+    <xs:attribute name="Dendian"      type="DendianEnum"/>
+    <!-- Dclock specifies the maximum core clock frequency -->
+    <xs:attribute name="Dclock"       type="xs:unsignedInt"/>
+    <!-- DcoreVersion specifies the revision of the processor -->
+    <xs:attribute name="DcoreVersion" type="xs:string"/>
+  </xs:complexType>
+
+  <!-- Compile Type: -->
+  <xs:complexType name="CompileType">
+    <!-- Pname identifies the processor this setting belongs to -->
+    <xs:attribute name="Pname"  type="RestrictedString" use="optional"/>
+    <!-- CMSIS-CORE device header file (sets compiler include path) -->
+    <xs:attribute name="header" type="xs:string"/>
+    <!-- Device specific preprocessor define (sets preprocessor define  -->
+    <xs:attribute name="define" type="xs:string"/>
+    <!-- Processor instance specific preprocessor define (sets preprocessor define on the commandline)  -->
+    <xs:attribute name="Pdefine" type="xs:string"/>
+  </xs:complexType>
+
+  <!-- DebugVarsType -->
+  <xs:complexType name="DebugVarsType">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <xs:attribute name="configfile" type="xs:string"   use="optional"/>
+        <xs:attribute name="version"    type="VersionType" use="optional"/>
+        <xs:attribute name="Pname"      type="xs:string"   use="optional"/>
+        <xs:anyAttribute processContents="lax"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+
+  <!-- DebugProtocolEnum -->
+  <xs:simpleType name="DebugProtocolEnum">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="jtag"/>
+      <xs:enumeration value="cjtag"/>
+      <xs:enumeration value="swd"/>
+    </xs:restriction>
+  </xs:simpleType>
+  
+  <!-- DebugConfigType -->
+  <xs:complexType name="DebugConfigType">
+    <xs:attribute name="default" type="DebugProtocolEnum" use="optional" default="swd"/>
+    <xs:attribute name="clock"   type="xs:unsignedInt"    use="optional"/>
+    <xs:attribute name="swj"     type="xs:boolean"        use="optional"/>
+    <!-- Debugger System Description File -->
+    <xs:attribute name="sdf"     type="xs:string"         use="optional"/>
+    <xs:anyAttribute processContents="lax"/>
+  </xs:complexType>
+
+  <!-- JtagType -->
+  <xs:complexType name="JtagType">
+    <xs:attribute name="tapindex"     type="NonNegativeInteger" use="optional"/>
+    <xs:attribute name="idcode"       type="NonNegativeInteger" use="optional"/>
+    <xs:attribute name="targetsel"    type="NonNegativeInteger" use="optional"/>
+    <xs:attribute name="irlen"        type="xs:unsignedInt"     use="optional"/>
+    <xs:anyAttribute processContents="lax"/>
+  </xs:complexType>
+
+  <!-- SwdType -->
+  <xs:complexType name="SwdType">
+    <xs:attribute name="idcode"       type="NonNegativeInteger" use="optional"/>
+    <xs:attribute name="targetsel"    type="NonNegativeInteger" use="optional"/>
+    <xs:anyAttribute processContents="lax"/>
+  </xs:complexType>
+
+  <!-- DebugPortType -->
+  <xs:complexType name="DebugPortType">
+    <xs:sequence>
+      <xs:element name="jtag"     type="JtagType"     minOccurs="0" maxOccurs="1"/>
+      <xs:element name="swd"      type="SwdType"      minOccurs="0" maxOccurs="1"/>
+    </xs:sequence>
+    <xs:attribute name="__dp" type="xs:unsignedInt" use="optional"/>
+    <xs:anyAttribute processContents="lax"/>
+  </xs:complexType>
+
+  <!-- DataPatchAccessTypeEnum enumeration type -->
+  <xs:simpleType name="DataPatchAccessTypeEnum">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="DP"/>
+      <xs:enumeration value="AP"/>
+      <xs:enumeration value="Mem"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- ExpressionType -->
+  <xs:simpleType name="ExpressionType">
+    <xs:restriction base="xs:string"/>
+  </xs:simpleType>
+
+  <!-- DataPatchType -->
+  <xs:complexType name="DataPatchType">
+    <xs:attribute name="type"    type="DataPatchAccessTypeEnum" use="optional"/>
+    <xs:attribute name="address" type="NonNegativeInteger"      use="required"/>
+    <xs:attribute name="__dp"    type="xs:unsignedInt"          use="optional"/>
+    <xs:attribute name="__ap"    type="xs:unsignedInt"          use="optional"/>
+    <xs:attribute name="value"   type="NonNegativeInteger"      use="required"/>
+    <xs:attribute name="mask"    type="NonNegativeInteger"      use="optional"/>
+    <xs:attribute name="info"    type="xs:string"               use="optional"/>
+    <xs:anyAttribute processContents="lax"/>
+  </xs:complexType>
+
+  <!-- BlockType -->
+  <xs:complexType name="SequenceBlockType">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <xs:attribute name="atomic" type="xs:boolean" use="optional"/>
+        <xs:attribute name="info"   type="xs:string"  use="optional"/>
+        <xs:anyAttribute processContents="lax"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+  
+  <!-- ControlType -->
+  <xs:complexType name="SequenceControlType">
+    <xs:sequence>
+      <xs:group ref="SequenceElementGroup" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute name="if"       type="xs:string"        use="optional"/>
+    <xs:attribute name="while"    type="ExpressionType"   use="optional"/>
+    <xs:attribute name="timeout"  type="xs:unsignedInt"   use="optional"/>
+    <xs:attribute name="info"     type="xs:string"        use="optional"/>
+    <xs:anyAttribute processContents="lax"/>
+  </xs:complexType>
+
+  <!-- SequenceElementType -->
+  <xs:group name="SequenceElementGroup">
+    <xs:choice>
+      <xs:element name="block"   type="SequenceBlockType"/>
+      <xs:element name="control" type="SequenceControlType"/>
+    </xs:choice>
+  </xs:group>
+
+
+  <!-- SequenceType -->
+  <xs:complexType name="SequenceType">
+    <xs:sequence>
+      <xs:group ref="SequenceElementGroup" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute name="name"    type="xs:string"  use="required"/>
+    <xs:attribute name="Pname"   type="RestrictedString"  use="optional"/>
+    <xs:attribute name="disable" type="xs:boolean" use="optional"/>
+    <xs:attribute name="info"    type="xs:string"  use="optional"/>
+    <xs:anyAttribute processContents="lax"/>
+  </xs:complexType>
+
+  <!-- SequencesType -->
+  <xs:complexType name="SequencesType">
+    <xs:sequence>
+      <xs:element name="sequence" type="SequenceType" minOccurs="1" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:anyAttribute processContents="lax"/>
+  </xs:complexType>
+  
+  <!-- DebugType -->  
+  <xs:complexType name="DebugType">
+    <xs:sequence>
+      <xs:element name="datapatch"     type="DataPatchType"             minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute name="__dp"  type="xs:unsignedInt" use="optional"/>
+    <xs:attribute name="__ap"  type="xs:unsignedInt" use="optional"/> <!-- access port index -->
+    <xs:attribute name="address" type="NonNegativeInteger" use="optional"/> <!-- CPU debug block base address -->
+    <xs:attribute name="svd"   type="xs:string"      use="optional"/>
+    <xs:attribute name="Pname" type="RestrictedString" use="optional"/>
+    <xs:attribute name="Punit" type="xs:unsignedInt" use="optional"/>
+    <xs:attribute name="defaultResetSequence" type="xs:string" use="optional"/>
+    <xs:anyAttribute processContents="lax"/>
+  </xs:complexType>
+
+  <!-- SerialWireType -->
+  <xs:complexType name="SerialWireType">
+    <xs:anyAttribute processContents="lax"/>
+  </xs:complexType>
+
+  <!-- TracePortType -->
+  <xs:complexType name="TracePortType">
+    <xs:attribute name="width" type="NonNegativeInteger" use="optional"/>
+    <xs:anyAttribute processContents="skip"/>
+  </xs:complexType>
+
+  <!-- TraceBufferType -->
+  <xs:complexType name="TraceBufferType">
+    <xs:attribute name="start" type="NonNegativeInteger" use="optional"/>
+    <xs:attribute name="size"  type="NonNegativeInteger" use="optional"/>
+    <xs:anyAttribute processContents="skip"/>
+  </xs:complexType>
+
+  <!-- TraceType -->
+  <xs:complexType name="TraceType">
+    <xs:sequence>
+      <xs:element name="serialwire"  type="SerialWireType"  minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="traceport"   type="TracePortType"   minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="tracebuffer" type="TraceBufferType" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute name="Pname" type="RestrictedString" use="optional"/>
+    <xs:anyAttribute processContents="lax"/>
+  </xs:complexType>
+
+  <!-- Memory Type-->
+  <xs:complexType name="MemoryType">
+    <!-- Pname identifies the processor this setting belongs to -->
+    <xs:attribute name="Pname"   type="RestrictedString"/>
+    <!-- id specifies the enumerated ID of memory (deprecated in 1.4.4) -->
+    <xs:attribute name="id"      type="MemoryIDTypeEnum"    use="optional"/>
+    <!-- name specifies an identifier being use to refer to this memory range description (added in 1.4.4) -->
+    <xs:attribute name="name"    type="RestrictedString"    use="optional"/>
+    <!-- start specifies the base address of the memory -->
+    <xs:attribute name="start"   type="NonNegativeInteger"  use="required"/>
+    <!-- size specifies the size of the memory -->
+    <xs:attribute name="size"    type="NonNegativeInteger"  use="required"/>
+    <!-- access: specifies the access permissions of the memory (added in 1.4.4) -->
+    <xs:attribute name="access"  type="AccessType"          use="optional" default="r"/>
+    <!-- alias: reference to another memory by 'name' to express that the same physical memory is mapped at another address (added in 1.4.4) -->
+    <xs:attribute name="alias"   type="RestrictedString"    use="optional"/>
+    <!-- !!! deprecated, do not use / ignore !!! specifies whether the memory shall be 0 initialized -->
+    <xs:attribute name="init"    type="xs:boolean"          use="optional" default="0"/>
+    <!-- specifies whether the memory is used as default by linker -->
+    <xs:attribute name="default" type="xs:boolean"          use="optional" default="0"/>
+    <!-- specifies whether the memory shall be used for the startup by linker -->
+    <xs:attribute name="startup" type="xs:boolean"          use="optional" default="0"/>
+  </xs:complexType>
+
+  <!-- Algorithm Type -->
+  <xs:complexType name="AlgorithmType">
+    <!-- Pname identifies the processor this setting belongs to -->
+    <xs:attribute name="Pname"    type="RestrictedString"          use="optional"/>
+    <!-- name specifies the path and filename of the Flash Programming Algorithm -->
+    <xs:attribute name="name"     type="xs:string"          use="required"/>
+    <!-- start specifies the base address of the memory range that gets programmed -->
+    <xs:attribute name="start"    type="NonNegativeInteger" use="optional"/>
+    <!-- size specifies the size of the memory range that gets programmed -->
+    <xs:attribute name="size"     type="NonNegativeInteger" use="optional"/>
+    <!-- RAMstart specifies the base address in RAM from where the algorithm is executed -->
+    <xs:attribute name="RAMstart" type="NonNegativeInteger" use="optional"/>
+    <!-- RAMsize specifies the available RAM for executing the algorithm -->
+    <xs:attribute name="RAMsize"  type="NonNegativeInteger" use="optional"/>
+    <!-- if default is set the algorithm will be configured for any new project -->
+    <xs:attribute name="default"  type="xs:boolean"         use="optional" default="0"/>
+    <!-- style attribute: specifies the programming algorithm format (added in 1.4.4) -->
+    <xs:attribute name="style"    type="AlgorithmStyleType" use="optional" default="Keil"/>
+    <!-- parameter attribute: parmeter passed on algorithm invocation (added in 1.4.4) -->
+    <xs:attribute name="parameter" type="xs:string"         use="optional"/>
+    <!-- endian attribute: specifies the endianess of the algorithm (added in 1.4.4) -->
+    <xs:attribute name="endian"    type="DendianEnum"       use="optional" default="Little-endian"/>
+  </xs:complexType>
+
+  <!-- Book Type -->
+  <xs:complexType name="BookType">
+    <!-- Pname identifies the processor this setting belongs to -->
+    <xs:attribute name="Pname"   type="RestrictedString"/>
+    <!-- name specifies the path and filename of the document -->
+    <xs:attribute name="name"    type="xs:string" use="required"/>
+    <!-- title specifies the string displayed for this document -->
+    <xs:attribute name="title"   type="xs:string" use="required"/>
+  </xs:complexType>
+
+  <!-- Description Type-->
+  <xs:complexType name="DescriptionType">
+    <xs:simpleContent>
+      <xs:extension base="xs:string">
+        <!-- Pname identifies the processor this setting belongs to -->
+        <xs:attribute name="Pname" type="RestrictedString"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+
+  <!-- Device Feature Type -->
+  <xs:complexType name="DeviceFeatureType">
+    <xs:attribute name="Pname" type="RestrictedString"       use="optional"/>
+    <!-- <xs:attribute name="type"  type="DeviceFeatureTypeEnum" use="required"/> -->
+    <xs:attribute name="type"  type="xs:string"       use="required"/>
+    <xs:attribute name="n"     type="xs:decimal"      use="optional"/>
+    <xs:attribute name="m"     type="xs:decimal"      use="optional"/>
+    <xs:attribute name="name"  type="xs:string"       use="optional"/>
+    <!-- deprecated, only for backwards compatibility -->
+    <xs:attribute name="count" type="xs:int"          use="optional"/>
+  </xs:complexType>
+
+  <!-- Board Feature Type -->
+  <xs:complexType name="BoardFeatureType">
+    <!-- <xs:attribute name="type"  type="BoardFeatureTypeEnum" use="required"/> -->
+    <xs:attribute name="type"  type="xs:string"            use="required"/>
+    <xs:attribute name="n"     type="xs:decimal"           use="optional"/>
+    <xs:attribute name="m"     type="xs:decimal"           use="optional"/>
+    <xs:attribute name="name"  type="xs:string"            use="optional"/>
+  </xs:complexType>
+  
+  <!-- Environment Type -->
+  <xs:complexType name="EnvironmentType">
+    <xs:sequence>
+      <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <!-- name identifies the environment (e.g. "uv" for uVision ) this setting belongs to -->
+    <xs:attribute name="name" type="xs:string" use="required"/>
+    <!-- Pname identifies the processor this setting belongs to -->
+    <xs:attribute name="Pname"  type="RestrictedString" use="optional"/>
+    <xs:anyAttribute></xs:anyAttribute>
+  </xs:complexType>
+
+  <!-- Default Device Properties Group -->
+  <xs:group name="DefaultDevicePropertiesGroup">
+    <!-- multi-core devices have unique Pname attribute. One entry per processor and level -->
+    <xs:choice>
+      <xs:element name="compile"     type="CompileType"     />
+      <xs:element name="memory"      type="MemoryType"      />
+      <xs:element name="algorithm"   type="AlgorithmType"   />
+      <xs:element name="book"        type="BookType"        />
+      <xs:element name="description" type="DescriptionType" />
+      <xs:element name="feature"     type="DeviceFeatureType" />
+      <xs:element name="environment" type="EnvironmentType" />
+      <xs:element name="debugport"   type="DebugPortType"   />
+      <xs:element name="debug"       type="DebugType"       />
+      <xs:element name="trace"       type="TraceType"       />
+      <xs:element name="debugvars"   type="DebugVarsType"   />
+      <xs:element name="sequences"   type="SequencesType"   />
+    </xs:choice>
+  </xs:group>
+
+  <!-- Device Properties Group -->
+  <xs:group name="DevicePropertiesGroup">
+    <!-- multi-core devices have unique Pname attribute. One entry per processor and level -->
+    <xs:sequence>
+      <xs:element name="processor"   type="ProcessorType"   minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="debugconfig" type="DebugConfigType" minOccurs="0" maxOccurs="1"/>
+      <xs:group   ref="DefaultDevicePropertiesGroup"        minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:group>
+
+  <xs:complexType name="DeviceType">
+    <xs:sequence>
+      <xs:group ref="DevicePropertiesGroup"/>
+      <!-- Variant Level begin-->
+      <xs:element name="variant" minOccurs="0" maxOccurs="unbounded">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:group ref="DevicePropertiesGroup"/>
+          </xs:sequence>
+          <xs:attribute name="Dvariant" type="RestrictedString" use="required"/>
+        </xs:complexType>
+      </xs:element>
+      <!-- Variant Level end -->
+    </xs:sequence>
+    <xs:attribute name="Dname" type="RestrictedString" use="required"/>
+    <!-- <xs:attributeGroup ref="DefaultDeviceAttributesGroup"/> -->
+  </xs:complexType>
+
+  <!-- Dcore enumeration type -->
+  <xs:simpleType name="DcoreEnum">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="SC000"/>
+      <xs:enumeration value="SC300"/>
+      <xs:enumeration value="Cortex-M0"/>
+      <xs:enumeration value="Cortex-M0+"/>
+      <xs:enumeration value="Cortex-M1"/>
+      <xs:enumeration value="Cortex-M3"/>
+      <xs:enumeration value="Cortex-M4"/>
+      <xs:enumeration value="Cortex-M7"/>
+      <xs:enumeration value="Cortex-R4"/>
+      <xs:enumeration value="Cortex-R5"/>
+      <xs:enumeration value="Cortex-A5"/>
+      <xs:enumeration value="Cortex-A7"/>
+      <xs:enumeration value="Cortex-A8"/>
+      <xs:enumeration value="Cortex-A9"/>
+      <xs:enumeration value="Cortex-A15"/>
+      <xs:enumeration value="Cortex-A17"/>
+      <xs:enumeration value="Cortex-A53"/>
+      <xs:enumeration value="Cortex-A57"/>
+      <xs:enumeration value="Cortex-A72"/>
+      <xs:enumeration value="ARMV8MBL"/>
+      <xs:enumeration value="ARMV8MML"/>
+      <xs:enumeration value="other"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+
+  <!-- DeviceFeatureTypeEnum -->
+  <xs:simpleType name="DeviceFeatureTypeEnum">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Crypto"/>
+      <xs:enumeration value="NVIC"/>
+      <xs:enumeration value="DMA"/>
+      <xs:enumeration value="RNG"/>
+      <xs:enumeration value="CoreOther"/>
+      <xs:enumeration value="ExtBus"/>
+      <xs:enumeration value="Memory"/>
+      <xs:enumeration value="MemoryOther"/>
+      <xs:enumeration value="XTAL"/>
+      <xs:enumeration value="IntRC"/>
+      <xs:enumeration value="PLL"/>
+      <xs:enumeration value="RTC"/>
+      <xs:enumeration value="ClockOther"/>
+      <xs:enumeration value="PowerMode"/>
+      <xs:enumeration value="VCC"/>
+      <xs:enumeration value="Consumption"/>
+      <xs:enumeration value="PowerOther"/>
+      <xs:enumeration value="BGA"/>
+      <xs:enumeration value="CSP"/>
+      <xs:enumeration value="PLCC"/>
+      <xs:enumeration value="QFN"/>
+      <xs:enumeration value="QFP"/>
+      <xs:enumeration value="SOP"/>
+      <xs:enumeration value="DIP"/>
+      <xs:enumeration value="PackageOther"/>
+      <xs:enumeration value="IOs"/>
+      <xs:enumeration value="ExtInt"/>
+      <xs:enumeration value="Temp"/>
+      <xs:enumeration value="ADC"/>
+      <xs:enumeration value="DAC"/>
+      <xs:enumeration value="TempSens"/>
+      <xs:enumeration value="AnalogOther"/>
+      <xs:enumeration value="PWM"/>
+      <xs:enumeration value="Timer"/>
+      <xs:enumeration value="WDT"/>
+      <xs:enumeration value="TimerOther"/>
+      <xs:enumeration value="MPSerial"/>
+      <xs:enumeration value="CAN"/>
+      <xs:enumeration value="ETH"/>
+      <xs:enumeration value="I2C"/>
+      <xs:enumeration value="I2S"/>
+      <xs:enumeration value="LIN"/>
+      <xs:enumeration value="SDIO"/>
+      <xs:enumeration value="SPI"/>
+      <xs:enumeration value="UART"/>
+      <xs:enumeration value="USART"/>
+      <xs:enumeration value="USBD"/>
+      <xs:enumeration value="USBH"/>
+      <xs:enumeration value="USBOTG"/>
+      <xs:enumeration value="ComOther"/>
+      <xs:enumeration value="Camera"/>
+      <xs:enumeration value="GLCD"/>
+      <xs:enumeration value="LCD"/>
+      <xs:enumeration value="Touch"/>
+      <xs:enumeration value="Other"/>
+      <!-- deprecated, only for backwards compatibility -->
+      <xs:enumeration value="I/O"/>
+      <xs:enumeration value="D/A"/>
+      <xs:enumeration value="A/D"/>
+      <xs:enumeration value="Com"/>
+      <xs:enumeration value="USB"/>
+      <xs:enumeration value="Package"/>
+      <xs:enumeration value="Backup"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- BoardFeatureTypeEnum -->
+  <xs:simpleType name="BoardFeatureTypeEnum">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="ODbg"/>
+      <xs:enumeration value="XTAL"/>
+      <xs:enumeration value="PWR"/>
+      <xs:enumeration value="PWR"/>
+      <xs:enumeration value="PWRSock"/>
+      <xs:enumeration value="Batt"/>
+      <xs:enumeration value="Curr"/>
+      <xs:enumeration value="CoreOther"/>
+      <xs:enumeration value="RAM"/>
+      <xs:enumeration value="ROM"/>
+      <xs:enumeration value="Memory"/>
+      <xs:enumeration value="MemCard"/>
+      <xs:enumeration value="MemoryOther"/>
+      <xs:enumeration value="DIO"/>
+      <xs:enumeration value="AIO"/>
+      <xs:enumeration value="Proto"/>
+      <xs:enumeration value="USB"/>
+      <xs:enumeration value="ETH"/>
+      <xs:enumeration value="SPI"/>
+      <xs:enumeration value="I2C"/>
+      <xs:enumeration value="RS232"/>
+      <xs:enumeration value="RS422"/>
+      <xs:enumeration value="RS485"/>
+      <xs:enumeration value="CAN"/>
+      <xs:enumeration value="IrDA"/>
+      <xs:enumeration value="LineIn"/>
+      <xs:enumeration value="LineOut"/>
+      <xs:enumeration value="MIC"/>
+      <xs:enumeration value="Edge"/>
+      <xs:enumeration value="ConnOther"/>
+      <xs:enumeration value="Button"/>
+      <xs:enumeration value="Poti"/>
+      <xs:enumeration value="Joystick"/>
+      <xs:enumeration value="Touch"/>
+      <xs:enumeration value="ContOther"/>
+      <xs:enumeration value="Accelerometer"/>
+      <xs:enumeration value="Gyro"/>
+      <xs:enumeration value="Compass"/>
+      <xs:enumeration value="TempSens"/>
+      <xs:enumeration value="PressSens"/>
+      <xs:enumeration value="LightSens"/>
+      <xs:enumeration value="SensOther"/>
+      <xs:enumeration value="CustomFF"/>
+      <xs:enumeration value="ArduinoFF"/>
+      <xs:enumeration value="FreedomFF"/>
+      <xs:enumeration value="TowerFF"/>
+      <xs:enumeration value="LED"/>
+      <xs:enumeration value="Camera"/>
+      <xs:enumeration value="LCD"/>
+      <xs:enumeration value="GLCD"/>
+      <xs:enumeration value="Speaker"/>
+      <xs:enumeration value="Other"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- eraseTypeEnum -->
+  <xs:simpleType name="EraseTypeEnum">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="sector"/>
+      <xs:enumeration value="full"/>
+      <xs:enumeration value="no"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- MemoryIDTypeEnum -->
+  <xs:simpleType name="MemoryIDTypeEnum">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="IRAM1"/>
+      <xs:enumeration value="IRAM2"/>
+      <xs:enumeration value="IRAM3"/>
+      <xs:enumeration value="IRAM4"/>
+      <xs:enumeration value="IRAM5"/>
+      <xs:enumeration value="IRAM6"/>
+      <xs:enumeration value="IRAM7"/>
+      <xs:enumeration value="IRAM8"/>
+      <xs:enumeration value="IROM1"/>
+      <xs:enumeration value="IROM2"/>
+      <xs:enumeration value="IROM3"/>
+      <xs:enumeration value="IROM4"/>
+      <xs:enumeration value="IROM5"/>
+      <xs:enumeration value="IROM6"/>
+      <xs:enumeration value="IROM7"/>
+      <xs:enumeration value="IROM8"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- Dendian enumeration type -->
+  <xs:simpleType name="DendianEnum">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Little-endian"/>
+      <xs:enumeration value="Big-endian"/>
+      <xs:enumeration value="Configurable"/>
+      <xs:enumeration value="*"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- Dfpu enumeration type -->
+  <xs:simpleType name="DfpuEnum">
+    <xs:restriction base="xs:token">
+      <!-- core has FPU (type of FPU depends on Dcore) -->
+      <xs:enumeration value="FPU"/>
+      <xs:enumeration value="1"/>
+      <!-- core has no FPU -->
+      <xs:enumeration value="NO_FPU"/>
+      <xs:enumeration value="0"/>
+      <!-- single precision FPU -->
+      <xs:enumeration value="SP_FPU"/>
+      <!-- double precision FPU -->
+      <xs:enumeration value="DP_FPU"/>
+      <!-- any -->
+      <xs:enumeration value="*"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- Dmpu enumeration type -->
+  <xs:simpleType name="DmpuEnum">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="MPU"/>
+      <xs:enumeration value="NO_MPU"/>
+      <xs:enumeration value="0"/>
+      <xs:enumeration value="1"/>
+      <xs:enumeration value="*"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- file category type -->
+  <xs:simpleType name="FileCategoryType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="doc"/>
+      <xs:enumeration value="header"/>
+      <xs:enumeration value="include"/>
+      <xs:enumeration value="library"/>
+      <xs:enumeration value="object"/>
+      <xs:enumeration value="source"/>
+      <xs:enumeration value="sourceC"/>
+      <xs:enumeration value="sourceCpp"/>
+      <xs:enumeration value="sourceAsm"/>
+      <xs:enumeration value="linkerScript"/>
+      <xs:enumeration value="utility"/>
+      <xs:enumeration value="image"/>
+      <xs:enumeration value="other"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- file attribute type -->
+  <xs:simpleType name="FileAttributeType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="config"/>
+      <xs:enumeration value="copy"/>
+      <xs:enumeration value="template"/>
+      <xs:enumeration value="interface"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+
+  <!-- compiler toolchain enumeration -->
+  <xs:simpleType name="CompilerEnumType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="GCC"/>
+      <xs:enumeration value="ARMCC"/>
+      <xs:enumeration value="IAR"/>
+      <xs:enumeration value="Tasking"/>
+      <xs:enumeration value="GHS"/>
+      <xs:enumeration value="Cosmic"/>
+      <xs:enumeration value="G++"/> <!-- Code Sourcery -->
+      <xs:enumeration value="*"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <!-- compiler output enumeration -->
+  <xs:simpleType name="CompilerOutputType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="exe"/> <!-- executable -->
+      <xs:enumeration value="lib"/> <!-- library -->
+      <xs:enumeration value="*"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  
+
+  <xs:complexType name="FilterType">
+    <xs:attribute name="Dfamily"     type="xs:string"/> <!-- deprecated as they are too weak for filtering -->
+    <xs:attribute name="DsubFamily"  type="xs:string"/> <!-- deprecated as tehy are too weak for filtering -->
+    <xs:attribute name="Dvariant"    type="xs:string"/>
+    <xs:attribute name="Dvendor"     type="DeviceVendorEnum"/>
+    <xs:attribute name="Dname"       type="xs:string"/> <!-- can contain wildcards ?* in condition -->
+    <xs:attribute name="Dcore"       type="DcoreEnum"/>
+    <xs:attribute name="Dfpu"        type="DfpuEnum"/>
+    <xs:attribute name="Dmpu"        type="DmpuEnum"/>
+    <xs:attribute name="Dendian"     type="DendianEnum"/>
+    <xs:attribute name="Pname"       type="RestrictedString"/>
+    <xs:attribute name="Cvendor"     type="xs:string"/>
+    <xs:attribute name="Cbundle"     type="xs:string"/>
+    <xs:attribute name="Cclass"      type="CclassType"/>
+    <xs:attribute name="Cgroup"      type="CgroupType"/>
+    <xs:attribute name="Csub"        type="CsubType"/>
+    <xs:attribute name="Cvariant"    type="CvariantType"/>
+    <xs:attribute name="Cversion"    type="ConditionVersionType"/>
+    <xs:attribute name="Capiversion" type="ConditionVersionType"/>
+    <xs:attribute name="Tcompiler"   type="CompilerEnumType"/>
+    <xs:attribute name="Toutput"     type="CompilerOutputType"/>
+    <xs:attribute name="condition"   type="xs:string"/>
+  </xs:complexType>
+
+  <!-- taxonomy description type definition -->
+  <xs:complexType name="TaxonomyDescriptionType">
+    <xs:simpleContent>
+      <xs:extension base='xs:string'>
+        <xs:attribute name="Cclass"    type="CclassType" use="required"/> <!-- Class the description is associated with -->
+        <xs:attribute name="Cgroup"    type="CgroupType" use="optional"/> <!-- Group the description is associated with -->
+        <xs:attribute name="doc"       type="xs:string"  use="optional"/> <!-- link to documentation for the :Class:[Group] -->
+        <xs:attribute name="generator" type="xs:string"  use="optional"/> <!-- link a generator to a taxonomy -->
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+
+  <xs:complexType name="TaxonomyType">
+    <xs:sequence>
+      <xs:element name="description" type="TaxonomyDescriptionType" minOccurs="1" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <!-- API type definition -->
+  <xs:complexType name="ApiType">
+    <xs:sequence>
+      <xs:element name="description" type="xs:string" minOccurs="0"/>
+      <!-- list of files / content -->
+      <xs:element name="files">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="file" type="FileType" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:sequence>
+    <xs:attribute name="Cclass"    type="CclassType" use="required"/>
+    <xs:attribute name="Cgroup"    type="CgroupType" use="required"/>
+    <xs:attribute name="exclusive" type="xs:boolean" use="optional" default="1"/>
+    <xs:attribute name="Capiversion" type="VersionType" use="optional"/>
+  </xs:complexType>
+
+  <xs:complexType name="ApisType">
+    <xs:sequence>
+      <xs:element name="api" type="ApiType" minOccurs="1" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="ConditionType">
+    <xs:sequence>
+      <xs:element name="description" type="xs:string" minOccurs="0"/>
+      <xs:choice minOccurs="1" maxOccurs="unbounded">
+        <xs:element name="accept"  type="FilterType"/>
+        <xs:element name="require" type="FilterType"/>
+        <xs:element name="deny"    type="FilterType"/>
+      </xs:choice>
+    </xs:sequence>
+    <xs:attribute name="id" type="xs:string" use="required"/>
+  </xs:complexType>
+
+  <xs:complexType name="ConditionsType">
+    <xs:sequence>
+      <xs:element name="condition" type="ConditionType" minOccurs="1" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="ComponentCategoryType">
+    <xs:attribute name="Cvendor"     type="xs:string"             use="optional"/>
+    <xs:attribute name="Cbundle"     type="xs:string"             use="optional"/>
+    <xs:attribute name="Cclass"      type="CclassType"            use="required"/>
+    <xs:attribute name="Cgroup"      type="CgroupType"            use="required"/>
+    <xs:attribute name="Csub"        type="CsubType"              use="optional"/>
+    <xs:attribute name="Cvariant"    type="CvariantType"          use="optional"/>
+    <xs:attribute name="Cversion"    type="ConditionVersionType"  use="optional"/>
+    <xs:attribute name="Capiversion" type="ConditionVersionType"  use="optional"/>
+    <xs:attribute name="instances"   type="InstancesType"         use="optional" default="1"/>
+  </xs:complexType>
+
+  <xs:complexType name="ExampleProjectType">
+    <xs:sequence>
+      <xs:element name="environment" maxOccurs="unbounded">
+        <xs:complexType>
+          <xs:attribute name="name" type="xs:string" use="required"/>
+          <xs:attribute name="load" type="xs:string" use="required"/>
+        </xs:complexType>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="BoardReferenceType">
+    <xs:attribute name="name"        type="xs:string"        use="required"/> <!-- refers to Board Description by name   -->
+    <xs:attribute name="vendor"      type="xs:string"        use="required"/> <!-- refers to Board Description by vendor -->
+    <xs:attribute name="Dvendor"     type="DeviceVendorEnum" use="optional"/> <!-- deprecated in 1.2 -->
+    <xs:attribute name="Dfamily"     type="xs:string"        use="optional"/> <!-- deprecated in 1.2 -->
+    <xs:attribute name="DsubFamily"  type="xs:string"        use="optional"/> <!-- deprecated in 1.2 -->
+    <xs:attribute name="Dname"       type="xs:string"        use="optional"/> <!-- deprecated in 1.2 -->
+  </xs:complexType>
+
+  <xs:complexType name="CompatibleDeviceType">
+    <xs:attribute name="deviceIndex" type="xs:string"        use="optional" />
+    <xs:attribute name="Dvendor"     type="DeviceVendorEnum" use="optional"/>
+    <xs:attribute name="Dfamily"     type="xs:string"        use="optional"/>
+    <xs:attribute name="DsubFamily"  type="xs:string"        use="optional"/>
+    <xs:attribute name="Dname"       type="xs:string"        use="optional"/>
+  </xs:complexType>
+
+  <xs:complexType name="BoardsDeviceType">
+    <xs:attribute name="deviceIndex" type="xs:string"        use="optional" />
+    <xs:attribute name="Dvendor"     type="DeviceVendorEnum" use="required"/>
+    <xs:attribute name="Dfamily"     type="xs:string"        use="optional"/> <!-- use Dfamiliy or DsubFamily or Dname attribute exclusively -->
+    <xs:attribute name="DsubFamily"  type="xs:string"        use="optional"/> <!-- use Dfamiliy or DsubFamily or Dname attribute exclusively -->
+    <xs:attribute name="Dname"       type="xs:string"        use="optional"/> <!-- use Dfamiliy or DsubFamily or Dname attribute exclusively -->
+  </xs:complexType>
+
+  <xs:simpleType name="BoardBookCategoryEnum">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="setup"/>
+      <xs:enumeration value="schematic"/>
+      <xs:enumeration value="overview"/>
+      <xs:enumeration value="manual"/>
+      <xs:enumeration value="other"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:complexType name="BoardsBookType">
+    <xs:attribute name="category" type="BoardBookCategoryEnum"/>
+    <xs:attribute name="name"     type="xs:string"/>
+    <xs:attribute name="title"    type="xs:string"/>
+  </xs:complexType>
+
+  <xs:complexType name="DebugInterfaceType">
+    <xs:attribute name="adapter"   type="xs:string"/>
+    <xs:attribute name="connector" type="xs:string"/>
+  </xs:complexType>
+     
+  <xs:group name="BoardElementsGroup">
+    <xs:choice>
+      <xs:element name="description"      type="xs:string"/>
+      <xs:element name="feature"          type="BoardFeatureType" maxOccurs="unbounded"></xs:element>
+      <xs:element name="mountedDevice"    type="BoardsDeviceType" maxOccurs="unbounded"/>
+      <xs:element name="compatibleDevice" type="CompatibleDeviceType" maxOccurs="unbounded"/>
+      <xs:element name="image">
+        <xs:complexType>
+          <xs:attribute name="small" type="xs:string" use="optional"/>
+          <xs:attribute name="large" type="xs:string" use="optional"/>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="debugInterface" type="DebugInterfaceType" maxOccurs="unbounded"/>
+      <xs:element name="book" type="BoardsBookType" maxOccurs="unbounded"/>
+    </xs:choice>
+  </xs:group>
+
+  <xs:complexType name="BoardType">
+    <xs:sequence>
+      <xs:group   ref="BoardElementsGroup" minOccurs="1" maxOccurs="unbounded"/>
+    </xs:sequence>
+    <xs:attribute name="vendor"       type="xs:string" use="required"/>
+    <xs:attribute name="name"         type="xs:string" use="required"/>
+    <xs:attribute name="revision"     type="xs:string" use="optional"/>
+    <xs:attribute name="salesContact" type="xs:string" use="optional"/>
+    <xs:attribute name="orderForm"    type="xs:anyURI" use="optional"/>
+  </xs:complexType>
+
+  <xs:complexType name="BoardsType">
+    <xs:sequence>
+      <xs:element name="board" type="BoardType" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="ExampleAttributesType">
+    <xs:choice maxOccurs="unbounded">
+      <xs:element name="category"    type="xs:string"             minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="component"   type="ComponentCategoryType" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="keyword"     type="xs:string"             minOccurs="0" maxOccurs="unbounded"/>
+    </xs:choice>
+  </xs:complexType>
+
+  <xs:complexType name="ExampleType">
+    <xs:sequence>
+      <!-- brief example description -->
+      <xs:element name="description" type="xs:string"/>
+      <!-- references the board -->
+      <xs:element name="board"       type="BoardReferenceType" maxOccurs="unbounded"/>
+      <!-- lists environments with their load files -->
+      <xs:element name="project"     type="ExampleProjectType"/>
+      <!-- categories, keywords and used components -->
+      <xs:element name="attributes"  type="ExampleAttributesType" />
+    </xs:sequence>
+    <!-- display name of the example -->
+    <xs:attribute name="name"        type="xs:string" use="required"/>
+    <!-- relative folder where the example is stored in the package -->
+    <xs:attribute name="folder"      type="xs:string" use="required"/>
+    <!-- archive file name with extension located in folder -->
+    <xs:attribute name="archive"     type="xs:string" use="optional"/>
+    <!-- file name with extension relative to folder -->
+    <xs:attribute name="doc"         type="xs:string" use="required"/>
+    <!-- version of the example -->
+    <xs:attribute name="version"     type="xs:string" use="optional"/>
+  </xs:complexType>
+
+  <!-- section listing all examples contained in the package -->
+  <xs:complexType name="ExamplesType">
+    <xs:sequence>
+      <xs:element name="example" type="ExampleType" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="KeywordsType">
+    <xs:sequence>
+      <xs:element name="keyword" type="xs:string" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:simpleType name="InstancesType">
+    <xs:restriction base="xs:unsignedInt">
+      <xs:minInclusive value="1"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- Component file type definition -->
+  <xs:complexType name="FileType">
+    <xs:attribute name="condition" type="xs:string" use="optional"/>
+    <!-- file item category: source, header, include path, etc.  -->
+    <xs:attribute name="category" type="FileCategoryType" use ="required"/>
+    <!-- file item action attribute : config (copy to project, template, interface)  -->
+    <xs:attribute name="attr"     type="FileAttributeType" use ="optional"/>
+    <!-- description for "template" or "interface" files. Multiple items are combined when they have the same select attribute  -->
+    <xs:attribute name="select"   type="xs:string" use ="optional"/>
+    <!-- path + filename + extension -->
+    <xs:attribute name="name" type ="xs:string" use="required" />
+    <!-- copy file to project folder:  deprecated, use attr="config" instead  -->
+    <xs:attribute name="copy" type ="xs:string" use="optional"/>
+    <!-- simple file version: to be used by RTE copy file action to see whether the file needs updating in project -->
+    <xs:attribute name="version" type ="VersionType" use="optional"/>
+    <!-- path(s) to find source files for a library, paths are delimited with semicolon (;) -->
+    <xs:attribute name="src" type="xs:string" use ="optional"/>
+  </xs:complexType>
+
+  <!-- some strings are used to construct filenames (e.g. package name). Such names can contain only subset of characters 
+       and must not contain neither spaces nor dots.
+  -->
+  <xs:simpleType name="RestrictedString">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="[\-_A-Za-z0-9]+"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <!-- version can contain one or more of alphanumeric characters and symbols '_' '-' '.' 
+       Important: version pattern shall remain the same while versions change
+  -->
+  <xs:simpleType name="VersionType">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="[\.\-_A-Za-z0-9]+"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- version can contain one or more of alphanumeric characters and symbols '_' '-' '.' 
+       Allows specifing a version range: minVersion : maxVersion
+  -->
+  <xs:simpleType name="ConditionVersionType">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="[\.:\-_A-Za-z0-9]+"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- PackageType creates a unique ID for a package (added in 1.4.4) -->
+  <xs:complexType name="PackageType">
+    <!-- vendor of the package -->
+    <xs:attribute name="vendor"  type="xs:string"            use="required"/>
+    <!-- name of the package -->
+    <xs:attribute name="name"    type="xs:string"            use="required"/>
+    <!-- version or version range of the package -->
+    <xs:attribute name="version" type="ConditionVersionType" use="required"/>
+  </xs:complexType>
+  
+  <!-- Package dependency section type (added in 1.4.4) -->
+  <xs:complexType name="PackagesType">
+    <xs:sequence maxOccurs="unbounded">
+      <xs:element name="package" type="PackageType"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <!-- LanguageType creates a unique language ID (added in 1.4.4) -->
+  <xs:complexType name="LanguageType">
+    <!-- language name e.g. C -->
+    <xs:attribute name="name"    type="xs:string" use="required"/>
+    <!-- language version e.g. C99 -->
+    <xs:attribute name="version" type="xs:string" use="required"/>
+  </xs:complexType>
+
+  <!-- Lanuage section type (added in 1.4.4) -->
+  <xs:complexType name="LanguagesType">
+    <xs:sequence maxOccurs="unbounded">
+      <xs:element name="language" type="LanguageType"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <!-- CompilerType crates a unique toolchain ID, e.g. armcc 5.4.0 (added in 1.4.4) -->
+  <xs:complexType name="CompilerType">
+    <xs:attribute name="name"    type="CompilerEnumType" use="required"/>
+    <xs:attribute name="version" type="ConditionVersionType" use="required"/>
+  </xs:complexType>
+
+  <!-- Compiler section type (added in 1.4.4) -->
+  <xs:complexType name="CompilersType">
+    <xs:sequence maxOccurs="unbounded">
+      <xs:element name="compiler" type="CompilerType"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <!-- Requirements Section: (added in 1.4.4) -->
+  <xs:complexType name="RequirementsType">
+    <xs:all>
+      <xs:element name="packages"  type="PackagesType"     minOccurs="0"/>
+      <xs:element name="languages" type="LanguagesType" minOccurs="0"/>
+      <xs:element name="compilers" type="CompilersType" minOccurs="0"/>
+    </xs:all>
+  </xs:complexType>
+
+  <!-- Project target specification: (added in 1.4.4) -->
+  <xs:complexType name="TargetType">
+    <xs:choice maxOccurs="unbounded">
+      <!-- build options -->
+      <xs:element name="output"     type="OutputType"/>
+      <!-- memory options -->
+      <xs:element name="memory"     type="TargetMemoryType"       minOccurs="0" maxOccurs="unbounded"/>
+      <!-- stack setting -->
+      <xs:element name="stack"      type="StackType" minOccurs="0" maxOccurs="1"/>
+      <!-- heap setting -->
+      <xs:element name="heap"       type="HeapType" minOccurs="0"  maxOccurs="1"/>
+      <!-- algorithm options -->
+      <xs:element name="algorithm"  type="TargetAlgorithmType"    minOccurs="0" maxOccurs="unbounded"/>
+      <!-- debug probe selection and configuration -->
+      <xs:element name="debugProbe" type="DebugProbeType"          minOccurs="0"/>
+    </xs:choice>
+    <!-- Board Vendor -->
+    <xs:attribute name="Bvendor"  type="xs:string" use="optional"/>
+    <!-- Board Name -->
+    <xs:attribute name="Bname"    type="xs:string" use="optional"/>
+    <!-- Board Version -->
+    <xs:attribute name="Bversion" type="xs:string" use="optional"/>
+    <!-- Device Vendor -->
+    <xs:attribute name="Dvendor"  type="xs:string" use="optional"/>
+    <!-- Device Name -->
+    <xs:attribute name="Dname"    type="xs:string" use="optional"/>
+    <!-- Processor Instance Name -->
+    <xs:attribute name="Pname"    type="xs:string" use="optional"/>
+    <!-- FPU used in target build -->
+    <xs:attribute name="Dfpu"    type="DfpuEnum" use="optional"/>
+    <!-- Endianess used in target build -->
+    <xs:attribute name="Dendian"    type="DendianEnum" use="optional"/>
+    <!-- MPU used in target build -->
+    <xs:attribute name="Dmpu"    type="DmpuEnum" use="optional"/>
+  </xs:complexType>
+
+  <!-- Debug probe specification: (added in 1.4.4) -->
+  <xs:complexType name="DebugProbeType">
+    <!-- Product Name of the debug probe-->
+    <xs:attribute name="name"      type="xs:string" use="required"/>
+    <!-- Debug protocol selection -->
+    <xs:attribute name="protocol"  type="xs:string" use="required"/>
+    <!-- Core clock configured by application -->
+    <xs:attribute name="coreClock" type="NonNegativeInteger" use="required"/>
+    <!-- TPIU clock configured-->
+    <xs:attribute name="tpiuClock" type="NonNegativeInteger" use="optional"/>
+  </xs:complexType>
+
+  <!-- Build settings for the project, setting RTE filter options (added in 1.4.4) -->
+  <xs:complexType name="OutputType">
+    <!-- Project output file name -->
+    <xs:attribute name="name"      type="xs:string"          use="required"/>
+    <!-- Project output library or executable -->
+    <xs:attribute name="type"      type="CompilerOutputType" use="required"/>
+    <!-- Project build for debug -->
+    <xs:attribute name="debug"     type="xs:boolean"         use="required"/>
+  </xs:complexType>
+
+  <!-- Memory settings for the project, redefining defaults from DFP (added in 1.4.4) --> 
+  <xs:complexType name="TargetMemoryType">
+    <xs:attribute name="id"      type="xs:string"  use="optional"/> <!-- only use with legacy DFPs -->
+    <!-- defines the name of the memory for reference, allows to redefine memory from DFP -->
+    <xs:attribute name="name"    type="xs:string"  use="required"/>
+    <!-- (re-)defines the start address of the memory -->
+    <xs:attribute name="start"   type="NonNegativeInteger"  use="optional"/>
+    <!-- (re-)defines the size in bytes of the memory -->
+    <xs:attribute name="size"    type="NonNegativeInteger"  use="optional"/>
+    <!-- disables the memory with the name specified by DFP -->
+    <xs:attribute name="remove"  type="xs:boolean" use="optional" default="0"/>
+    <!-- if true, this memory is used for the startup code -->
+    <xs:attribute name="startup" type="xs:boolean" use="optional" default="0"/>
+    <!-- if true, this memory is initialized with 0 -->
+    <xs:attribute name="init"    type="xs:boolean" use="optional" default="0"/>
+    <!-- overrides access permisson configured by the DFP -->
+    <xs:attribute name="access"  type="AccessType" use="optional"/>
+    <!-- specifies whether the memory is used as default by linker -->
+    <xs:attribute name="default" type="xs:boolean"          use="optional" default="0"/>
+  </xs:complexType>
+
+  <!-- Algorithm settings for the project, redefining defaults from DFP (added in 1.4.4) -->
+  <xs:complexType name="TargetAlgorithmType">
+    <!-- references the filename of the algorith, allowing to redefine attributes of algorithms in DFP -->
+    <xs:attribute name="name"     type="xs:string"           use="required"/>
+    <!-- overrides the start address programmed by named algorithm from DFP -->
+    <xs:attribute name="start"    type="NonNegativeInteger"  use="optional"/>
+    <!-- overrides the size programmed by named algorithm from DFP -->
+    <xs:attribute name="size"     type="NonNegativeInteger"  use="optional"/>
+    <!-- disables the algorithm specified as default in DFP -->
+    <xs:attribute name="remove"   type="xs:boolean"          use="optional" default="0"/>
+    <!-- overrides the RAMstart for algorithm with 'name' from DFP -->
+    <xs:attribute name="RAMstart" type="NonNegativeInteger"  use="optional"/>
+    <!-- overrides the RAMsize for algorithm with 'name' from DFP -->
+    <xs:attribute name="RAMsize"  type="NonNegativeInteger"  use="optional"/>
+  </xs:complexType>
+
+  <!-- element specifying the stack (added in 1.4.4) -->
+  <xs:complexType name="StackType">
+    <xs:attribute name="size" type="NonNegativeInteger" use="required"/>
+  </xs:complexType>
+
+  <!-- element specifying the heap (added in 1.4.4) -->
+  <xs:complexType name="HeapType">
+    <xs:attribute name="size" type="NonNegativeInteger" use="required"/>
+  </xs:complexType>
+
+  <!-- Project file type definition (added in 1.4.4) -->
+  <xs:complexType name="ProjectFileType">
+    <!-- path + filename + extension -->
+    <xs:attribute name="name" type ="xs:string" use="required" />
+    <!-- file item category: source, header, include path, etc.  -->
+    <xs:attribute name="category" type="FileCategoryType" use ="required"/>
+    <!-- path(s) to find source files for a library, paths are delimited with semicolon (;) -->
+    <xs:attribute name="src" type="xs:string" use ="optional"/>
+  </xs:complexType>
+
+  <!-- Group section contains a list of files and (sub-)groups (added in 1.4.4) -->
+  <xs:complexType name="GroupType">
+    <xs:choice maxOccurs="unbounded">
+      <xs:element name="file"  type="ProjectFileType"  />
+      <xs:element name="group" type="GroupType" />
+    </xs:choice>
+    <xs:attribute name="name" use="required"/>
+  </xs:complexType>
+
+  <!-- Files section within the project section (added in 1.4.4) -->
+  <xs:complexType name="ProjectFilesType">
+    <xs:choice maxOccurs="unbounded">
+      <xs:element name="file"  type="ProjectFileType"  />
+      <xs:element name="group" type="GroupType" />
+    </xs:choice>
+  </xs:complexType>
+  
+  <!-- Component selection section (added in 1.4.4) -->
+  <xs:complexType name="ComponentSelectType">
+    <xs:sequence>
+      <xs:element name="component" maxOccurs="unbounded">
+        <xs:complexType>
+          <xs:sequence>
+            <!-- all config files -->
+            <xs:element name="file" minOccurs="0" maxOccurs="unbounded">
+              <xs:complexType>
+                <!-- condition id of the condition that evaluates to true on project creation -->
+                <xs:attribute name="condition" type="xs:string" use="optional"/>
+                <!-- file item category: source, header, include path, etc.  -->
+                <xs:attribute name="category" type="FileCategoryType" use ="required"/>
+                <!-- file item action attribute : config (copy to project, template, interface)  -->
+                <xs:attribute name="attr"     type="FileAttributeType" use ="optional"/>
+                <!-- path + filename + extension -->
+                <xs:attribute name="name" type ="xs:string" use="required" />
+                <!-- configuration file version: to be used by RTE to see whether the file requires updating or not -->
+                <xs:attribute name="version" type ="VersionType" use="required"/>
+              </xs:complexType>
+            </xs:element>
+          </xs:sequence>
+          <xs:attribute name="Cvendor"     type="xs:string"             use="required"/>
+          <xs:attribute name="Cbundle"     type="xs:string"             use="required"/>
+          <xs:attribute name="Cclass"      type="CclassType"            use="required"/>
+          <xs:attribute name="Cgroup"      type="CgroupType"            use="required"/>
+          <xs:attribute name="Csub"        type="CsubType"              use="required"/>
+          <xs:attribute name="Cvariant"    type="CvariantType"          use="required"/>
+          <xs:attribute name="Cversion"    type="ConditionVersionType"  use="required"/>
+          <xs:attribute name="Capiversion" type="ConditionVersionType"  use="optional"/> <!-- only used when component implements an API -->
+          <xs:attribute name="instances"   type="InstancesType"         use="optional" default="1"/>
+        </xs:complexType>
+      </xs:element> 
+    </xs:sequence>
+  </xs:complexType>
+  
+  <!-- Project section: (added in 1.4.4) -->
+  <xs:complexType name="ProjectType">
+    <xs:all>
+      <!-- target selection and configuration -->
+      <xs:element name="target" type="TargetType"/>
+      <!-- components selected for project -->
+      <xs:element name="select" type="ComponentSelectType"/>
+      <!-- project files not contained in components -->
+      <xs:element name="files" type="ProjectFilesType"/>
+    </xs:all>
+    <!-- if no project name is provided, the filename of the GPDSC is used -->
+    <xs:attribute name="name" type="xs:string" use="optional"/>
+    <!-- optional link/reference to documentation about the project -->
+    <xs:attribute name="documentation" type="xs:string" use="optional"/>
+  </xs:complexType>
+
+  <!-- Create Section: (added in 1.4.4) -->
+  <xs:complexType name="CreateType">
+    <xs:sequence>
+      <!-- project section -->
+      <xs:element name="project" type="ProjectType" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <!-- release contains version as an attribute and notes as element text -->
+  <xs:complexType name="ReleaseType">
+    <xs:simpleContent>
+      <xs:extension base='xs:string'>
+        <xs:attribute name="version"     type="VersionType" use="required"/>
+        <xs:attribute name="date"        type="xs:date"     use="optional"/>
+        <xs:attribute name="deprecated"  type="xs:date"     use="optional"/>
+        <xs:attribute name="replacement" type="xs:string"   use="optional"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+
+  <xs:complexType name="ReleasesType">
+    <xs:sequence>
+      <xs:element name="release" type="ReleaseType" minOccurs="1" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <!-- Generator file type definition -->
+  <xs:complexType name="GeneratorFileType">
+    <!-- conditions can be used to filter relevant files depending on e.g. device name 
+         or toolchain -->
+    <xs:attribute name="condition" type="xs:string" use="optional"/>
+    <!-- file item category: generator specific file type -->
+    <xs:attribute name="category" type="xs:string" use ="required"/>
+    <!-- path + filename + extension -->
+    <xs:attribute name="name" type ="xs:string" use="required" />
+    <!-- file version -->
+    <xs:attribute name="version" type ="VersionType" use="optional"/>
+  </xs:complexType>
+
+  <xs:complexType name="GeneratorDeviceSelectType">
+    <xs:attribute name="Dvendor"     type="DeviceVendorEnum" use="required"/>
+    <xs:attribute name="Dname"       type="xs:string"        use="optional"/>
+    <xs:attribute name="Dvariant"    type="xs:string"        use="optional"/>
+    <xs:attribute name="Pname"       type="RestrictedString"        use="optional"/>
+  </xs:complexType>
+
+  <xs:complexType name="GeneratorCommandArgumentType">
+    <xs:simpleContent>
+      <xs:extension base='xs:string'>
+        <xs:attribute name="switch" type="xs:string" use="optional"/>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+
+  <xs:complexType name="GeneratorCommandArgumentsType">
+    <xs:sequence>
+      <xs:element name="argument" type="GeneratorCommandArgumentType" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <xs:complexType name="GpdscFileType">
+    <xs:attribute name="name" type="xs:string" use="required"/>
+  </xs:complexType>
+
+  <!-- Generator Type -->
+  <xs:complexType name="GeneratorType">
+    <xs:all>
+      <xs:element name="description" type="xs:string"/>
+      <xs:element name="select" type="GeneratorDeviceSelectType" minOccurs="0"/>
+      <xs:element name="command" type="xs:string"/>
+      <xs:element name="workingDir" type="xs:string" minOccurs="0"/>
+      <xs:element name="arguments" type="GeneratorCommandArgumentsType" minOccurs="0"/>
+      <xs:element name="gpdsc" type="GpdscFileType" minOccurs="0"/>
+      <!-- list of project files / content -->
+      <xs:element name="project_files" minOccurs="0">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="file" type="FileType" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <!-- list of tool files / content -->
+      <xs:element name="files" minOccurs="0">
+        <xs:complexType>
+          <xs:sequence>
+            <!-- tool files are under sole control of the generator -->
+            <xs:element name="file" type="GeneratorFileType" maxOccurs="unbounded"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <!-- Generator tools specific section ignored by other tools -->
+      <xs:element name="extensions" minOccurs="0">
+        <xs:complexType>
+          <xs:sequence>
+            <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded">
+            </xs:any>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:all>
+    <xs:attribute name="id"       type="xs:string" use ="required"/>
+    <xs:attribute name="Gvendor"  type="xs:string" use ="optional"/>
+    <xs:attribute name="Gtool"    type="xs:string" use ="optional"/>
+    <xs:attribute name="Gversion" type="xs:string" use ="optional"/>
+  </xs:complexType>
+  
+  <!-- Generators Section -->
+  <xs:complexType name="GeneratorsType">
+    <xs:sequence>
+      <xs:element name="generator" type="GeneratorType" minOccurs="1" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
+  <!-- package description root point -->
+  <xs:element name="package" nillable="true">
+    <xs:complexType>
+      <xs:all>
+        <!-- name of the package (Device Support=DFP, Board Support=BSP) -->
+        <xs:element name="name" type="RestrictedString" minOccurs="1"/>
+        <!-- company name of the developer/maintainer of this package -->
+        <xs:element name="vendor" type="RestrictedString" minOccurs="1"/>
+        <!-- brief description of the content and purpose of the package -->
+        <xs:element name="description" type="xs:string" minOccurs="1"/>
+        <!-- download location of this PDSC and corresponding package file -->
+        <xs:element name="url" type="xs:anyURI" minOccurs="1"/>
+        <!-- e.g. mailto:Support@<vendor>.com or www.<vendor>.com/supportRequest -->
+        <xs:element name="supportContact" type="xs:string" minOccurs="0"/>
+        <!-- optional: click through license file name and relative path -->
+        <xs:element name="license" type="xs:string" minOccurs="0"/>
+        <!-- optional: section listing requirements (1.4.2) -->
+        <xs:element name="requirements" type="RequirementsType" minOccurs="0"/>
+        <!-- optional: section used for tool independant project creation (one shot) -->
+        <xs:element name="create" type="CreateType" minOccurs="0"/>
+        <!-- Version numbers and release history -->
+        <xs:element name="releases" type="ReleasesType" minOccurs="1"/>      
+        <!-- keyword for Search Engine Indexing (e.g. Google) -->
+        <xs:element name="keywords" type="KeywordsType" minOccurs="0"/>
+        <!-- generators are tools and utilities that are used to generate software components -->
+        <xs:element name="generators" type="GeneratorsType" minOccurs="0"/>
+        <!-- definition of devices including references to device support files contained in package -->
+        <xs:element name="devices" minOccurs="0">
+          <xs:complexType>
+            <!-- top level -->
+            <xs:sequence>
+              <!-- Family Level begin -->
+              <xs:element name="family" maxOccurs="unbounded">
+                <xs:complexType>
+                  <xs:sequence>
+                    <xs:group ref="DevicePropertiesGroup"/>
+                    <xs:element name="device" type="DeviceType" minOccurs="0" maxOccurs="unbounded"/>
+                    <!-- Sub Family Level begin-->
+                    <xs:element name="subFamily" minOccurs="0" maxOccurs="unbounded">
+                      <xs:complexType>
+                        <xs:sequence>
+                          <xs:group ref="DevicePropertiesGroup"/>
+                          <!-- Device Level begin-->
+                          <xs:element name="device" type="DeviceType" maxOccurs="unbounded"/>
+                          <!-- Device Level end -->
+                        </xs:sequence>
+                        <xs:attribute name="DsubFamily" type="xs:string" use="required"/>
+                      </xs:complexType>
+                    </xs:element>
+                    <!-- Sub Family Level end -->
+                  </xs:sequence>
+                  <xs:attribute name="Dfamily" type="xs:string"        use="required"/>
+                  <xs:attribute name="Dvendor" type="DeviceVendorEnum" use="required"/>
+                </xs:complexType>
+              </xs:element>
+              <!-- Family Level end -->
+            </xs:sequence>
+          </xs:complexType>
+        </xs:element>
+        <!-- devices end -->
+        <!-- definition of boards. Can be referenced by examples -->
+        <xs:element name="boards" type="BoardsType" minOccurs="0"/>
+        <!-- boards end -->
+        <!-- taxonomy section contains default descriptions used in the entire model -->
+        <xs:element name="taxonomy" type="TaxonomyType" minOccurs="0"/>
+        <!-- apis section contains api descriptions used in the entire model -->
+        <xs:element name="apis" type="ApisType" minOccurs="0"/>
+        <!-- conditions section contains all condition entries used by any component of the package -->
+        <xs:element name="conditions" type="ConditionsType" minOccurs="0"/>
+        <!-- examples section defining examples available within a package -->
+        <xs:element name="examples" type="ExamplesType" minOccurs="0"/>
+        <!-- software component definition -->
+        <xs:element name="components" minOccurs="0">
+          <xs:complexType>
+            <xs:choice minOccurs="1" maxOccurs="unbounded">
+              <!-- COMPONENT Description Root Point: -->
+              <xs:element name="bundle" minOccurs="1" maxOccurs="unbounded">
+                <xs:complexType>
+                  <xs:sequence>
+                    <xs:element name="description" type="xs:string"/>
+                    <xs:element name="doc"         type="xs:string"/>
+                    <xs:element name="component" minOccurs="1" maxOccurs="unbounded">
+                      <xs:complexType>
+                        <xs:sequence>
+                          <!-- a component can be deprecated if it is no longer maintained-->
+                          <xs:element name="deprecated" type="xs:boolean" minOccurs="0" default="false"/>
+                          <!-- short component description displayed -->
+                          <xs:element name="description" type="xs:string"/>
+                          <!-- content to be added to generated RTE_Component.h file -->
+                          <xs:element name="RTE_Components_h" type="xs:string" minOccurs="0"/>
+                          <!-- list of files / content -->
+                          <xs:element name="files">
+                            <xs:complexType>
+                              <xs:sequence>
+                                <xs:element name="file" type="FileType" maxOccurs="unbounded"/>
+                              </xs:sequence>
+                            </xs:complexType>
+                          </xs:element>
+                        </xs:sequence>
+                        <!-- component identity attributes Cclass Cvendor and Cversion are specified by bundle -->
+                        <xs:attribute name="Cgroup"   type="CgroupType"   use="required"/>
+                        <xs:attribute name="Csub"     type="CsubType"     use="optional"/>
+                        <xs:attribute name="Cvariant" type="CvariantType" use="optional"/>
+                        <!-- api version for this component -->
+                        <xs:attribute name="Capiversion"  type="VersionType" use="optional"/>
+                        <!-- component attribute for referencing a condition specified in conditions section above -->
+                        <xs:attribute name="condition" type="xs:string" use="optional"/>
+                        <!-- maximum allowed number of instances of a component in a project, default - 1-->
+                        <xs:attribute name="maxInstances" type="InstancesType" use="optional"/>
+                        <!-- association of component with a generator. If the component is selected the generator information becomes active -->
+                        <xs:attribute name="generator" type="xs:string" use="optional"/>
+                        <!-- identifies this component variant to be the preferred variant [Version 1.4.0] -->
+                        <xs:attribute name="isDefaultVariant" type="xs:boolean" use="optional"/>
+                      </xs:complexType>
+                    </xs:element>
+                  </xs:sequence>
+                  <!-- bundle attributes -->
+                  <xs:attribute name="Cbundle"  type="xs:string"   use="required"/>
+                  <xs:attribute name="Cvendor"  type="xs:string"   use="optional"/>
+                  <xs:attribute name="Cclass"   type="CclassType"  use="required"/>
+                  <xs:attribute name="Cversion" type="VersionType" use="required"/>
+                  <!-- association of component with a generator. If the component is selected the generator information becomes active -->
+                  <xs:attribute name="generator" type="xs:string" use="optional"/>
+                  <!-- identifies this bundle variant to be the preferred variant [Version 1.4.0] -->
+                  <xs:attribute name="isDefaultVariant" type="xs:boolean" use="optional"/>
+                </xs:complexType>
+              </xs:element>
+              <xs:element name="component" minOccurs="1" maxOccurs="unbounded">
+                <xs:complexType>
+                  <xs:sequence>
+                    <!-- a component can be deprecated if it is no longer maintained-->
+                    <xs:element name="deprecated" type="xs:boolean" minOccurs="0" default="false"/>
+                    <!-- short component description displayed -->
+                    <xs:element name="description" type="xs:string"/>
+                    <!-- content to be added to generated RTE_Component.h file -->
+                    <xs:element name="RTE_Components_h" type="xs:string" minOccurs="0"/>
+                    <!-- list of files / content -->
+                    <xs:element name="files">
+                      <xs:complexType>
+                        <xs:sequence>
+                          <xs:element name="file" type="FileType" maxOccurs="unbounded"/>
+                        </xs:sequence>
+                      </xs:complexType>
+                    </xs:element>
+                  </xs:sequence>
+                  <!-- component identity attributes -->
+                  <xs:attribute name="Cvendor"  type="xs:string"    use="optional"/>
+                  <xs:attribute name="Cclass"   type="CclassType"   use="required"/>
+                  <xs:attribute name="Cgroup"   type="CgroupType"   use="required"/>
+                  <xs:attribute name="Csub"     type="CsubType"     use="optional"/>
+                  <xs:attribute name="Cvariant" type="CvariantType" use="optional"/>
+                  <xs:attribute name="Cversion" type="VersionType"  use="required"/>
+                  <!-- api version for this component -->
+                  <xs:attribute name="Capiversion"  type="VersionType" use="optional"/>
+                  <!-- component attribute for referencing a condition specified in conditions section above -->
+                  <xs:attribute name="condition" type="xs:string" use="optional"/>
+                  <!-- maximum allowed number of instances of a component in a project, default - 1-->
+                  <xs:attribute name="maxInstances" type="InstancesType" use="optional"/>
+                  <!-- association of component with a generator. If the component is selected the generator information becomes active -->
+                  <xs:attribute name="generator" type="xs:string" use="optional"/>
+                  <!-- identifies this component variant to be the preferred variant [Version 1.4.0] -->
+                  <xs:attribute name="isDefaultVariant" type="xs:boolean" use="optional"/>
+                </xs:complexType>
+              </xs:element>
+            </xs:choice>
+            <xs:attribute name="generator" type="xs:string" use="optional"/>
+          </xs:complexType>
+        </xs:element>
+      </xs:all>
+      <xs:attribute name="schemaVersion" type="VersionType" use="required"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>