776 lines
		
	
	
		
			43 KiB
		
	
	
	
		
			HTML
		
	
	
	
			
		
		
	
	
			776 lines
		
	
	
		
			43 KiB
		
	
	
	
		
			HTML
		
	
	
	
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 | |
| <html xmlns="http://www.w3.org/1999/xhtml">
 | |
| <head>
 | |
| <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 | |
| <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 | |
| <title>CMSIS-SVD Schema File</title>
 | |
| <title>CMSIS-SVD: CMSIS-SVD Schema File</title>
 | |
| <link href="tabs.css" rel="stylesheet" type="text/css"/>
 | |
| <link href="cmsis.css" rel="stylesheet" type="text/css" />
 | |
| <script type="text/javascript" src="jquery.js"></script>
 | |
| <script type="text/javascript" src="dynsections.js"></script>
 | |
| <script type="text/javascript" src="printComponentTabs.js"></script>
 | |
| <link href="navtree.css" rel="stylesheet" type="text/css"/>
 | |
| <script type="text/javascript" src="resize.js"></script>
 | |
| <script type="text/javascript" src="navtree.js"></script>
 | |
| <script type="text/javascript">
 | |
|   $(document).ready(initResizable);
 | |
|   $(window).load(resizeHeight);
 | |
| </script>
 | |
| <link href="search/search.css" rel="stylesheet" type="text/css"/>
 | |
| <script type="text/javascript" src="search/search.js"></script>
 | |
| <script type="text/javascript">
 | |
|   $(document).ready(function() { searchBox.OnSelectItem(0); });
 | |
| </script>
 | |
| </head>
 | |
| <body>
 | |
| <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
 | |
| <div id="titlearea">
 | |
| <table cellspacing="0" cellpadding="0">
 | |
|  <tbody>
 | |
|  <tr style="height: 46px;">
 | |
|   <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
 | |
|   <td style="padding-left: 0.5em;">
 | |
|    <div id="projectname">CMSIS-SVD
 | |
|     <span id="projectnumber">Version 1.3.3</span>
 | |
|    </div>
 | |
|    <div id="projectbrief">CMSIS System View Description</div>
 | |
|   </td>
 | |
|  </tr>
 | |
|  </tbody>
 | |
| </table>
 | |
| </div>
 | |
| <!-- end header part -->
 | |
| <div id="CMSISnav" class="tabs1">
 | |
|     <ul class="tablist">
 | |
|       <script type="text/javascript">
 | |
| 		<!--
 | |
| 		writeComponentTabs.call(this);
 | |
| 		//-->
 | |
|       </script>
 | |
| 	  </ul>
 | |
| </div>
 | |
| <!-- Generated by Doxygen 1.8.6 -->
 | |
| <script type="text/javascript">
 | |
| var searchBox = new SearchBox("searchBox", "search",false,'Search');
 | |
| </script>
 | |
|   <div id="navrow1" class="tabs">
 | |
|     <ul class="tablist">
 | |
|       <li><a href="index.html"><span>Main Page</span></a></li>
 | |
|       <li class="current"><a href="pages.html"><span>Usage and Description</span></a></li>
 | |
|       <li>
 | |
|         <div id="MSearchBox" class="MSearchBoxInactive">
 | |
|         <span class="left">
 | |
|           <img id="MSearchSelect" src="search/mag_sel.png"
 | |
|                onmouseover="return searchBox.OnSearchSelectShow()"
 | |
|                onmouseout="return searchBox.OnSearchSelectHide()"
 | |
|                alt=""/>
 | |
|           <input type="text" id="MSearchField" value="Search" accesskey="S"
 | |
|                onfocus="searchBox.OnSearchFieldFocus(true)" 
 | |
|                onblur="searchBox.OnSearchFieldFocus(false)" 
 | |
|                onkeyup="searchBox.OnSearchFieldChange(event)"/>
 | |
|           </span><span class="right">
 | |
|             <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
 | |
|           </span>
 | |
|         </div>
 | |
|       </li>
 | |
|     </ul>
 | |
|   </div>
 | |
| </div><!-- top -->
 | |
| <div id="side-nav" class="ui-resizable side-nav-resizable">
 | |
|   <div id="nav-tree">
 | |
|     <div id="nav-tree-contents">
 | |
|       <div id="nav-sync" class="sync"></div>
 | |
|     </div>
 | |
|   </div>
 | |
|   <div id="splitbar" style="-moz-user-select:none;" 
 | |
|        class="ui-resizable-handle">
 | |
|   </div>
 | |
| </div>
 | |
| <script type="text/javascript">
 | |
| $(document).ready(function(){initNavTree('schema_1_2_gr.html','');});
 | |
| </script>
 | |
| <div id="doc-content">
 | |
| <!-- window showing the filter options -->
 | |
| <div id="MSearchSelectWindow"
 | |
|      onmouseover="return searchBox.OnSearchSelectShow()"
 | |
|      onmouseout="return searchBox.OnSearchSelectHide()"
 | |
|      onkeydown="return searchBox.OnSearchSelectKey(event)">
 | |
| <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Pages</a></div>
 | |
| 
 | |
| <!-- iframe showing the search results (closed by default) -->
 | |
| <div id="MSearchResultsWindow">
 | |
| <iframe src="javascript:void(0)" frameborder="0" 
 | |
|         name="MSearchResults" id="MSearchResults">
 | |
| </iframe>
 | |
| </div>
 | |
| 
 | |
| <div class="header">
 | |
|   <div class="headertitle">
 | |
| <div class="title">CMSIS-SVD Schema File </div>  </div>
 | |
| </div><!--header-->
 | |
| <div class="contents">
 | |
| <div class="textblock"><pre class="fragment"><?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
 | |
|  
 | |
|   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:         23. September 2016
 | |
|   $Revision:     1.3.3
 | |
| 
 | |
|   Version 1.3.3:
 | |
|   - update file header to Apache 2.0 License
 | |
|   - add dimableIdentifierType, as a copy of previous identifierType adding "%s",
 | |
|   - update identifierType to only allow names without %s included.
 | |
|   - remove enumerationNameType.
 | |
|   - add headerEnumName to enumerationType and to dimArrayIndexType for peripheral arrays 
 | |
|     overwriting hierarchically generated names
 | |
|   - add dimName to dimElementGroup. Only valid in <cluster> context, ignored otherwise.
 | |
|   
 | |
|   Version 1.3.2:
 | |
|   adding dimIndexArray to peripheral-, cluster- and register-array to describe
 | |
|   enumeration of array indices.
 | |
| 
 | |
|   Version 1.3.1:
 | |
|   fixed peripheral name element type to identifierType to support %s for peripheral arrays
 | |
|   added optional protection element to addressBlockType and added p=privileged 
 | |
| 
 | |
|   Version 1.3:
 | |
|   added dim to peripherals to describe an array of peripherals.
 | |
|   added nesting of clusters to support hierarchical register structures.
 | |
|   added protection element as part of the registerPropertiesGroup indicating
 | |
|   special permissions are required for accessing a register.
 | |
|   CPU Section extended with description of the Secure Attribution Unit.
 | |
|   
 | |
|   Version 1.2:
 | |
|   Cortex-M7 support items have been added as optional tags for the device header file generation:
 | |
|   fpuDP, icachePresent, dcachePresent, itcmPresent, dtcmPresent
 | |
|   
 | |
|   Version 1.1:
 | |
|   For backward compatibility all additional tags have been made optional.
 | |
|   Extensions may be mandatory for successful device header file generation
 | |
|   Other changes are related to some restructuring of the schema.
 | |
|   
 | |
|   Note that the memory section has been removed since this would limit the
 | |
|   reuse of descriptions for a series of devices.
 | |
|  -->
 | |
| 
 | |
| <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="qualified" version="1.3">
 | |
|   <!-- stringType requires a none empty string of a least one character length -->
 | |
|   <xs:simpleType name="stringType">
 | |
|     <xs:restriction base="xs:string">
 | |
|       <xs:minLength value="1"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
| 
 | |
|   <xs:simpleType name="descriptionStringType">
 | |
|     <xs:restriction base="xs:string">
 | |
|       <xs:pattern value="[\p{IsBasicLatin}\p{IsLatin-1Supplement}]*" />
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
|   
 | |
|   <!-- cpuType specifies a selection of Cortex-M and Secure-Cores. This list will get extended as new processors are released -->
 | |
|   <xs:simpleType name="cpuNameType">
 | |
|     <xs:restriction base="xs:token">
 | |
|       <xs:enumeration value="CM0"/>
 | |
|       <xs:enumeration value="CM0PLUS"/>
 | |
|       <xs:enumeration value="CM0+"/>
 | |
|       <xs:enumeration value="CM1"/>
 | |
|       <xs:enumeration value="SC000"/>
 | |
|       <xs:enumeration value="CM23"/>
 | |
|       <xs:enumeration value="CM3"/>
 | |
|       <xs:enumeration value="CM33"/>
 | |
|       <xs:enumeration value="SC300"/>
 | |
|       <xs:enumeration value="CM4"/>
 | |
|       <xs:enumeration value="CM7"/>
 | |
|       <xs:enumeration value="ARMV8MML"/>
 | |
|       <xs:enumeration value="ARMV8MBL"/>
 | |
|       <xs:enumeration value="CA5"/>
 | |
|       <xs:enumeration value="CA7"/>
 | |
|       <xs:enumeration value="CA8"/>
 | |
|       <xs:enumeration value="CA9"/>
 | |
|       <xs:enumeration value="CA15"/>
 | |
|       <xs:enumeration value="CA17"/>
 | |
|       <xs:enumeration value="CA53"/>
 | |
|       <xs:enumeration value="CA57"/>
 | |
|       <xs:enumeration value="CA72"/>
 | |
|       <xs:enumeration value="other"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
|   <!-- revisionType specifies the CPU revision format as defined by ARM (rNpM) -->
 | |
|   <xs:simpleType name="revisionType">
 | |
|     <xs:restriction base="xs:string">
 | |
|       <xs:pattern value="r[0-9]*p[0-9]*"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
|   <!-- EndianType pre-defines the tokens for specifying the endianess of the device -->
 | |
|   <xs:simpleType name="endianType">
 | |
|     <xs:restriction base="xs:token">
 | |
|       <xs:enumeration value="little"/>
 | |
|       <xs:enumeration value="big"/>
 | |
|       <xs:enumeration value="selectable"/>
 | |
|       <xs:enumeration value="other"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
|   <!-- dataType pre-defines the tokens in line with CMSIS data type definitions -->
 | |
|   <xs:simpleType name="dataTypeType">
 | |
|     <xs:restriction base="xs:token">
 | |
|       <xs:enumeration value="uint8_t"/>
 | |
|       <xs:enumeration value="uint16_t"/>
 | |
|       <xs:enumeration value="uint32_t"/>
 | |
|       <xs:enumeration value="uint64_t"/>
 | |
|       <xs:enumeration value="int8_t"/>
 | |
|       <xs:enumeration value="int16_t"/>
 | |
|       <xs:enumeration value="int32_t"/>
 | |
|       <xs:enumeration value="int64_t"/>
 | |
|       <xs:enumeration value="uint8_t *"/>
 | |
|       <xs:enumeration value="uint16_t *"/>
 | |
|       <xs:enumeration value="uint32_t *"/>
 | |
|       <xs:enumeration value="uint64_t *"/>
 | |
|       <xs:enumeration value="int8_t *"/>
 | |
|       <xs:enumeration value="int16_t *"/>
 | |
|       <xs:enumeration value="int32_t *"/>
 | |
|       <xs:enumeration value="int64_t *"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
|   <!-- nvicPrioBitsType specifies the integer value range for the number of bits used in NVIC to encode priority levels -->
 | |
|   <xs:simpleType name="nvicPrioBitsType">
 | |
|     <xs:restriction base="xs:integer">
 | |
|       <xs:minInclusive value="2"/>
 | |
|       <xs:maxInclusive value="8"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
|   <!-- dimableIdentifierType specifies the subset and sequence of characters used for specifying identifiers that may contain %s from dim. -->
 | |
|   <!-- this is particularly important as these are used in ANSI C Structures during the device header file generation -->
 | |
|   <xs:simpleType name="dimableIdentifierType">
 | |
|     <xs:restriction base="xs:string">
 | |
|       <xs:pattern value="((%s)|(%s)[_A-Za-z]{1}[_A-Za-z0-9]*)|([_A-Za-z]{1}[_A-Za-z0-9]*(\[%s\])?)|([_A-Za-z]{1}[_A-Za-z0-9]*(%s)?[_A-Za-z0-9]*)"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
|   <!-- identifierType specifies the subset and sequence of characters used for specifying identifiers that must not contain %s from dim. -->
 | |
|   <!-- this is particularly important as these are used in ANSI C Structures during the device header file generation -->
 | |
|   <xs:simpleType name="identifierType">
 | |
|     <xs:restriction base="xs:string">
 | |
|       <xs:pattern value="[_A-Za-z0-9]*"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
|   <!-- V1.3: Protection Access Attribute Strings -->
 | |
|   <xs:simpleType name="protectionStringType">
 | |
|     <xs:restriction base="xs:string">
 | |
|       <!-- s = Secure                      -->
 | |
|       <!-- n = Non-secure                  -->
 | |
|       <!-- p = Privileged                  -->
 | |
|       <xs:pattern value="[snp]"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
|   <!-- V1.3: SAU Access Type -->
 | |
|   <xs:simpleType name="sauAccessType">
 | |
|     <xs:restriction base="xs:string">
 | |
|       <!-- c = non-secure Callable / Secure -->
 | |
|       <!-- n = Non-secure                   -->
 | |
|       <xs:pattern value="[cn]"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
| 
 | |
|   <!-- dimIndexType specifies the subset and sequence of characters used for specifying the sequence of indices in register arrays -->
 | |
|   <xs:simpleType name="dimIndexType">
 | |
|     <xs:restriction base="xs:string">
 | |
|       <xs:pattern value="[0-9]+\-[0-9]+|[A-Z]-[A-Z]|[_0-9a-zA-Z]+(,\s*[_0-9a-zA-Z]+)+"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
|   <!-- scaledNonNegativeInteger specifies the format in which numbers are represented in hexadecimal or decimal format -->
 | |
|   <xs:simpleType name="scaledNonNegativeInteger">
 | |
|     <xs:restriction base="xs:string">
 | |
|       <xs:pattern value="[+]?(0x|0X|#)?[0-9a-fA-F]+[kmgtKMGT]?"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
|   <!-- enumeratedValueDataType specifies the number formats for the values in enumeratedValues -->
 | |
|   <xs:simpleType name="enumeratedValueDataType">
 | |
|     <xs:restriction base="xs:string">
 | |
|       <xs:pattern value="[+]?(((0x|0X)[0-9a-fA-F]+)|([0-9]+)|((#|0b)[01xX]+))"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
|   <!-- accessType specfies the pre-defined tokens for the available accesses -->
 | |
|   <xs:simpleType name="accessType">
 | |
|     <xs:restriction base="xs:token">
 | |
|       <xs:enumeration value="read-only"/>
 | |
|       <xs:enumeration value="write-only"/>
 | |
|       <xs:enumeration value="read-write"/>
 | |
|       <xs:enumeration value="writeOnce"/>
 | |
|       <xs:enumeration value="read-writeOnce"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
|   <!-- modifiedWriteValuesType specifies the pre-defined tokens for the write side effects -->
 | |
|   <xs:simpleType name="modifiedWriteValuesType">
 | |
|     <xs:restriction base="xs:token">
 | |
|       <xs:enumeration value="oneToClear"/>
 | |
|       <xs:enumeration value="oneToSet"/>
 | |
|       <xs:enumeration value="oneToToggle"/>
 | |
|       <xs:enumeration value="zeroToClear"/>
 | |
|       <xs:enumeration value="zeroToSet"/>
 | |
|       <xs:enumeration value="zeroToToggle"/>
 | |
|       <xs:enumeration value="clear"/>
 | |
|       <xs:enumeration value="set"/>
 | |
|       <xs:enumeration value="modify"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
|   <!-- readAction type specifies the pre-defined tokens for read side effects -->
 | |
|   <xs:simpleType name="readActionType">
 | |
|     <xs:restriction base="xs:token">
 | |
|       <xs:enumeration value="clear"/>
 | |
|       <xs:enumeration value="set"/>
 | |
|       <xs:enumeration value="modify"/>
 | |
|       <xs:enumeration value="modifyExternal"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
|   <!-- enumUsageType specifies the pre-defined tokens for selecting what access types an enumeratedValues set is associated with -->
 | |
|   <xs:simpleType name="enumUsageType">
 | |
|     <xs:restriction base="xs:token">
 | |
|       <xs:enumeration value="read"/>
 | |
|       <xs:enumeration value="write"/>
 | |
|       <xs:enumeration value="read-write"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
|   <!-- bitRangeType specifies the bit numbers to be restricted values from 0 - 69 -->
 | |
|   <xs:simpleType name="bitRangeType">
 | |
|     <xs:restriction base="xs:token">
 | |
|       <xs:pattern value="\[([0-4])?[0-9]:([0-4])?[0-9]\]"/>
 | |
|     </xs:restriction>
 | |
|   </xs:simpleType>
 | |
|   <!-- writeContraintType specifies how to describe the restriction of the allowed values that can be written to a resource -->
 | |
|   <xs:complexType name="writeConstraintType">
 | |
|     <xs:choice>
 | |
|       <xs:element name="writeAsRead" type="xs:boolean"/>
 | |
|       <xs:element name="useEnumeratedValues" type="xs:boolean"/>
 | |
|       <xs:element name="range">
 | |
|         <xs:complexType>
 | |
|           <xs:sequence>
 | |
|             <xs:element name="minimum" type="scaledNonNegativeInteger"/>
 | |
|             <xs:element name="maximum" type="scaledNonNegativeInteger"/>
 | |
|           </xs:sequence>
 | |
|         </xs:complexType>
 | |
|       </xs:element>
 | |
|     </xs:choice>
 | |
|   </xs:complexType>
 | |
|   <!-- addressBlockType specifies the elements to describe an address block -->
 | |
|   <xs:complexType name="addressBlockType">
 | |
|     <xs:sequence>
 | |
|       <xs:element name="offset" type="scaledNonNegativeInteger"/>
 | |
|       <xs:element name="size" type="scaledNonNegativeInteger"/>
 | |
|       <xs:element name="usage">
 | |
|         <xs:simpleType>
 | |
|           <xs:restriction base="xs:token">
 | |
|             <xs:enumeration value="registers"/>
 | |
|             <xs:enumeration value="buffer"/>
 | |
|             <xs:enumeration value="reserved"/>
 | |
|           </xs:restriction>
 | |
|         </xs:simpleType>
 | |
|       </xs:element>
 | |
|       <!-- Version 1.3.2: optional access protection for an address block s=secure n=non-secure p=privileged -->
 | |
|       <xs:element name="protection" type="protectionStringType" minOccurs="0"/>
 | |
|     </xs:sequence>
 | |
|   </xs:complexType>
 | |
|   <!-- interruptType specifies how to describe an interrupt associated with a peripheral -->
 | |
|   <xs:complexType name="interruptType">
 | |
|     <xs:sequence>
 | |
|       <xs:element name="name" type="stringType"/>
 | |
|       <xs:element name="description" type="xs:string" minOccurs="0"/>
 | |
|       <xs:element name="value" type="xs:integer"/>
 | |
|     </xs:sequence>
 | |
|   </xs:complexType>
 | |
|   <!-- register properties group specifies register size, access permission and reset value 
 | |
|        this is used in multiple locations. Settings are inherited downstream. -->  
 | |
|   <xs:group name="registerPropertiesGroup">
 | |
|     <xs:sequence>
 | |
|       <xs:element name="size" type="scaledNonNegativeInteger" minOccurs="0"/>
 | |
|       <xs:element name="access" type="accessType" minOccurs="0"/>
 | |
|       <!-- V 1.3: extended register access protection -->
 | |
|       <xs:element name="protection" type="protectionStringType" minOccurs="0"/>
 | |
|       <xs:element name="resetValue" type="scaledNonNegativeInteger" minOccurs="0"/>
 | |
|       <xs:element name="resetMask" type="scaledNonNegativeInteger" minOccurs="0"/>
 | |
|     </xs:sequence>
 | |
|   </xs:group>
 | |
|   <!-- bitRangeLsbMsbStyle specifies the bit position of a field within a register 
 | |
|        by specifying the least significant and the most significant bit position -->
 | |
|   <xs:group name="bitRangeLsbMsbStyle">
 | |
|     <xs:sequence>
 | |
|       <xs:element name="lsb"  type="scaledNonNegativeInteger"/>
 | |
|       <xs:element name="msb"  type="scaledNonNegativeInteger"/>
 | |
|     </xs:sequence>
 | |
|   </xs:group>
 | |
|   <!-- bitRangeOffsetWidthStyle specifies the bit position of a field within a register
 | |
|        by specifying the least significant bit position and the bitWidth of the field -->
 | |
|   <xs:group name="bitRangeOffsetWidthStyle">
 | |
|     <xs:sequence>
 | |
|       <xs:element name="bitOffset" type="scaledNonNegativeInteger"/>
 | |
|       <xs:element name="bitWidth" type="scaledNonNegativeInteger" minOccurs="0"/>   
 | |
|     </xs:sequence> 
 | |
|   </xs:group>
 | |
|   
 | |
|   <!-- dimElementGroup specifies the number of array elements (dim), the address offset
 | |
|        between to consecutive array elements and an a comma seperated list of strings 
 | |
|        being used for identifying each element in the array -->
 | |
|   <xs:group name="dimElementGroup">
 | |
|     <xs:sequence>
 | |
|       <xs:element name="dim" type="scaledNonNegativeInteger"/>
 | |
|       <xs:element name="dimIncrement" type="scaledNonNegativeInteger"/>
 | |
|       <xs:element name="dimIndex" type="dimIndexType" minOccurs="0"/>
 | |
|       <xs:element name="dimName" type="identifierType" minOccurs="0"/>
 | |
|       <xs:element name="dimArrayIndex" type="dimArrayIndexType" minOccurs="0"/>
 | |
|     </xs:sequence>
 | |
|   </xs:group>
 | |
| 
 | |
|   <xs:complexType name="cpuType">
 | |
|     <xs:sequence>
 | |
|       <!-- V1.1: ARM processor name: Cortex-Mx / SCxxx -->
 | |
|       <xs:element name="name" type="cpuNameType"/>
 | |
|       <!-- V1.1: ARM defined revision of the cpu -->
 | |
|       <xs:element name="revision" type="revisionType"/>
 | |
|       <!-- V1.1: Endian specifies the endianess of the processor/device -->
 | |
|       <xs:element name="endian" type="endianType"/>
 | |
|       <!-- V1.1: mpuPresent specifies whether or not a memory protection unit is physically present -->
 | |
|       <xs:element name="mpuPresent" type="xs:boolean" minOccurs="0"/>
 | |
|       <!-- V1.1: fpuPresent specifies whether or not a floating point hardware unit is physically present -->
 | |
|       <xs:element name="fpuPresent" type="xs:boolean" minOccurs="0"/>
 | |
|       <!-- V1.2: fpuDP specifies a double precision floating point hardware unit is physically present-->
 | |
|       <xs:element name="fpuDP" type="xs:boolean" minOccurs="0"/>
 | |
|       <!-- V1.2: icachePresent specifies that an instruction cache is physically present-->
 | |
|       <xs:element name="icachePresent" type="xs:boolean" minOccurs="0"/>
 | |
|       <!-- V1.2: dcachePresent specifies that a data cache is physically present-->
 | |
|       <xs:element name="dcachePresent" type="xs:boolean" minOccurs="0"/>
 | |
|       <!-- V1.2: itcmPresent specifies that an instruction tightly coupled memory is physically present-->
 | |
|       <xs:element name="itcmPresent" type="xs:boolean" minOccurs="0"/>
 | |
|       <!-- V1.2: dtcmPresent specifies that an data tightly coupled memory is physically present-->
 | |
|       <xs:element name="dtcmPresent" type="xs:boolean" minOccurs="0"/>
 | |
|       <!-- V1.1: vtorPresent is used for Cortex-M0+ based devices only. It indicates whether the Vector -->
 | |
|       <!--       Table Offset Register is implemented in the device or not                              -->
 | |
|       <xs:element name="vtorPresent" type="xs:boolean" minOccurs="0"/>
 | |
|       <!-- V1.1: nvicPrioBits specifies the number of bits used by the Nested Vectored Interrupt Controller -->
 | |
|       <!--       for defining the priority level = # priority levels                                        -->
 | |
|       <xs:element name="nvicPrioBits" type="scaledNonNegativeInteger"/>
 | |
|       <!-- V1.1: vendorSystickConfig is set true if a custom system timer is implemented in the device -->
 | |
|       <!--       instead of the ARM specified SysTickTimer                                             -->
 | |
|       <xs:element name="vendorSystickConfig" type="xs:boolean"/>
 | |
|       <!-- V1.3: reports the total number of interrupts implemented by the device (optional) -->
 | |
|       <xs:element name="deviceNumInterrupts" type="scaledNonNegativeInteger" minOccurs="0"/>
 | |
|       <!-- V1.3: sauRegions specifies the available number of address regions -->
 | |
|       <!--       if not specified a value of zero is assumed                  -->
 | |
|       <xs:element name="sauNumRegions" type="scaledNonNegativeInteger" minOccurs="0"/>
 | |
|       <!-- V1.3: SAU Regions Configuration (if fully or partially predefined) -->
 | |
|       <xs:element name="sauRegionsConfig" minOccurs="0">
 | |
|         <xs:complexType>
 | |
|           <xs:sequence>
 | |
|             <xs:element name="region" minOccurs="0" maxOccurs="unbounded">
 | |
|               <!-- addressBlockType specifies the elements to describe an address block -->
 | |
|               <xs:complexType>
 | |
|                 <xs:sequence minOccurs="1"   maxOccurs="unbounded">
 | |
|                   <xs:element name="base"    type="scaledNonNegativeInteger"/>
 | |
|                   <xs:element name="limit"   type="scaledNonNegativeInteger"/>
 | |
|                   <xs:element name="access"  type="sauAccessType"/>
 | |
|                 </xs:sequence>
 | |
|                 <xs:attribute name="enabled" type="xs:boolean" use="optional" default="true"/>
 | |
|                 <xs:attribute name="name"    type="xs:string"  use="optional"/>
 | |
|               </xs:complexType>
 | |
|             </xs:element>
 | |
|           </xs:sequence>
 | |
|           <xs:attribute name="enabled" type="xs:boolean" use="optional" default="true"/>
 | |
|           <xs:attribute name="protectionWhenDisabled" type="protectionStringType" use="optional" default="s"/>
 | |
|         </xs:complexType>
 | |
|       </xs:element>
 | |
|      </xs:sequence>
 | |
|   </xs:complexType>
 | |
| 
 | |
|   <xs:complexType name="enumeratedValueType">
 | |
|     <xs:sequence>
 | |
|       <!-- name is a ANSI C indentifier representing the value (C Enumeration) -->
 | |
|       <xs:element name="name" type="identifierType"/>
 | |
|       <!-- description contains the details about the semantics/behavior specified by this value -->
 | |
|       <xs:element name="description" type="stringType" minOccurs="0"/>
 | |
|       <xs:choice>
 | |
|         <xs:element name="value" type="enumeratedValueDataType"/>
 | |
|         <!-- isDefault specifies the name and description for all values that are not
 | |
|              specifically described individually -->
 | |
|         <xs:element name="isDefault" type="xs:boolean"/>
 | |
|       </xs:choice>
 | |
|     </xs:sequence>
 | |
|   </xs:complexType>
 | |
|   
 | |
|   <xs:complexType name="enumerationType">
 | |
|     <xs:sequence>
 | |
|       <!-- name specfies a reference to this enumeratedValues section for reuse purposes
 | |
|            this name does not appear in the System Viewer nor the Header File. -->
 | |
|       <xs:element name="name" type="identifierType" minOccurs="0"/>
 | |
|       <!-- overrides the hierarchical enumeration type in the device header file. User is responsible for uniqueness across description -->
 | |
|       <xs:element name="headerEnumName" type="identifierType" minOccurs="0"/>
 | |
|       <!-- usage specifies whether this enumeration is to be used for read or write or 
 | |
|                                                        (read and write) accesses -->
 | |
|       <xs:element name="usage" type="enumUsageType" minOccurs="0"/>
 | |
|       <!-- enumeratedValue derivedFrom=<identifierType> -->
 | |
|       <xs:element name="enumeratedValue" type="enumeratedValueType" minOccurs="1" maxOccurs="unbounded"/>
 | |
|     </xs:sequence>
 | |
|     <xs:attribute name="derivedFrom" type="identifierType" use="optional"/>
 | |
|   </xs:complexType>
 | |
| 
 | |
|   <xs:complexType name="dimArrayIndexType">
 | |
|     <xs:sequence>
 | |
|       <xs:element name="headerEnumName" type="identifierType" minOccurs="0"/>
 | |
|       <xs:element name="enumeratedValue" type="enumeratedValueType" minOccurs="1" maxOccurs="unbounded"/>
 | |
|     </xs:sequence>
 | |
|   </xs:complexType>
 | |
| 
 | |
|   <xs:complexType name="fieldType">
 | |
|     <xs:sequence>
 | |
|       <xs:group    ref="dimElementGroup" minOccurs="0"/>
 | |
|       <!-- name specifies a field's name. The System Viewer and the device header file will
 | |
|            use the name of the field as identifier -->
 | |
|       <xs:element name="name" type="dimableIdentifierType"/>
 | |
|       <!-- description contains reference manual level information about the function and 
 | |
|            options of a field -->
 | |
|       <xs:element name="description" type="stringType" minOccurs="0"/>
 | |
|       <!-- alternative specifications of the bit position of the field within the register -->
 | |
|       <xs:choice minOccurs="1" maxOccurs="1">
 | |
|         <!-- bit field described by lsb followed by msb tag -->
 | |
|         <xs:group ref="bitRangeLsbMsbStyle"/>
 | |
|         <!-- bit field described by bit offset relative to Bit0 + bit width of field -->
 | |
|         <xs:group ref="bitRangeOffsetWidthStyle"/>
 | |
|         <!-- bit field described by [<msb>:<lsb>] -->
 | |
|         <xs:element name="bitRange" type="bitRangeType"/>
 | |
|       </xs:choice>
 | |
|       <!-- access describes the predefined permissions for the field. -->
 | |
|       <xs:element name="access" type="accessType" minOccurs="0"/>
 | |
|       <!-- predefined description of write side effects -->
 | |
|       <xs:element name="modifiedWriteValues" type="modifiedWriteValuesType" minOccurs="0"/>
 | |
|       <!-- writeContstraint specifies the subrange of allowed values -->
 | |
|       <xs:element name="writeConstraint" type="writeConstraintType" minOccurs="0"/>
 | |
|       <!-- readAction specifies the read side effects. -->
 | |
|       <xs:element name="readAction" type="readActionType" minOccurs="0"/>
 | |
|       <!-- enumeratedValues derivedFrom=<identifierType> -->
 | |
|       <xs:element name="enumeratedValues" type="enumerationType" minOccurs="0" maxOccurs="2">
 | |
|       </xs:element>
 | |
|     </xs:sequence>
 | |
|     <xs:attribute name="derivedFrom" type="dimableIdentifierType" use="optional"/>
 | |
|   </xs:complexType>
 | |
| 
 | |
|   <xs:complexType name="fieldsType">
 | |
|     <xs:sequence>
 | |
|       <!-- field derivedFrom=<identifierType> -->
 | |
|       <xs:element name="field" type="fieldType" minOccurs="1" maxOccurs="unbounded"/>
 | |
|     </xs:sequence>
 | |
|   </xs:complexType>
 | |
| 
 | |
|   <xs:complexType name="registerType">
 | |
|     <xs:sequence>
 | |
|       <xs:group    ref="dimElementGroup" minOccurs="0"/>
 | |
|       <!-- name specifies the name of the register. The register name is used by System Viewer and
 | |
|                                      device header file generator to represent a register -->
 | |
|       <xs:element name="name" type="dimableIdentifierType"/>
 | |
|       <!-- display name specifies a register name without the restritions of an ANSIS C identifier.
 | |
|                                      The use of this tag is discouraged because it does not allow consistency between
 | |
|                                      the System View and the device header file. -->
 | |
|       <xs:element name="displayName" type="stringType" minOccurs="0"/>
 | |
|       <!-- description contains a reference manual level description about the register and it's purpose -->
 | |
|       <xs:element name="description" type="stringType" minOccurs="0"/>
 | |
|       <xs:choice>
 | |
|         <!-- alternateGroup specifies the identifier of the subgroup a register belongs to.
 | |
|                                        This is useful if a register has a different description per mode but a single name -->
 | |
|         <xs:element name="alternateGroup" type="identifierType" minOccurs="0"/>
 | |
|         <!-- V1.1: alternateRegister specifies an alternate register description for an address that is
 | |
|                                        already fully described. In this case the register name must be unique within the peripheral -->
 | |
|         <xs:element name="alternateRegister" type="dimableIdentifierType" minOccurs="0"/>
 | |
|       </xs:choice>
 | |
|       <!-- addressOffset describes the address of the register relative to the baseOffset of the peripheral -->
 | |
|       <xs:element name="addressOffset" type="scaledNonNegativeInteger"/>
 | |
|       <!-- registerPropertiesGroup elements specify the default values for register size, access permission and
 | |
|                                      reset value. These default values are inherited to all fields contained in this register -->
 | |
|       <xs:group    ref="registerPropertiesGroup" minOccurs="0"/>
 | |
|       <!-- V1.1: dataType specifies a CMSIS compliant native dataType for a register (i.e. signed, unsigned, pointer) -->
 | |
|       <xs:element name="dataType" type="dataTypeType" minOccurs="0"/>
 | |
|       <!-- modifiedWriteValues specifies the write side effects -->
 | |
|       <xs:element name="modifiedWriteValues" type="modifiedWriteValuesType" minOccurs="0"/>
 | |
|       <!-- writeConstraint specifies the subset of allowed write values -->
 | |
|       <xs:element name="writeConstraint" type="writeConstraintType" minOccurs="0"/>
 | |
|       <!-- readAcction specifies the read side effects -->
 | |
|       <xs:element name="readAction" type="readActionType" minOccurs="0"/>
 | |
|       <!-- fields section contains all fields that belong to this register -->
 | |
|       <xs:element name="fields" type="fieldsType" minOccurs="0" maxOccurs="1"/>
 | |
|     </xs:sequence>
 | |
|     <xs:attribute name="derivedFrom" type="dimableIdentifierType" use="optional"/>
 | |
|   </xs:complexType>
 | |
| 
 | |
|   <!-- V1.1: A cluster is a set of registers that are composed into a C data structure in the device header file -->
 | |
|   <xs:complexType name="clusterType">
 | |
|     <xs:sequence>
 | |
|       <xs:group   ref="dimElementGroup" minOccurs="0"/>
 | |
|       <xs:element name="name" type="dimableIdentifierType"/>
 | |
|       <xs:element name="description" type="xs:string"/>
 | |
|       <!-- V1.1: alternateCluster specifies an alternative description for a cluster address range that is
 | |
|                  already fully described. In this case the cluster name must be unique within the peripheral -->
 | |
|       <xs:element name="alternateCluster" type="dimableIdentifierType" minOccurs="0"/>
 | |
|       <!-- V1.1: headerStructName specifies the name for the cluster structure typedef
 | |
|                  used in the device header generation instead of the cluster name -->
 | |
|       <xs:element name="headerStructName" type="identifierType" minOccurs="0"/>
 | |
|       <xs:element name="addressOffset" type="scaledNonNegativeInteger"/>
 | |
|       <!-- registerPropertiesGroup elements specify the default values for register size, access permission and
 | |
|                  reset value. These default values are inherited to all registers contained in this peripheral -->
 | |
|       <xs:group ref="registerPropertiesGroup" minOccurs="0"/>
 | |
|       <xs:sequence>
 | |
|         <xs:choice minOccurs="1" maxOccurs="unbounded">
 | |
|           <xs:element name="register" type="registerType" minOccurs="0" maxOccurs="unbounded"/>
 | |
|           <!-- 1.3: nesting of cluster is supported -->
 | |
|           <xs:element name="cluster" type="clusterType" minOccurs="0" maxOccurs="unbounded"/>
 | |
|         </xs:choice>
 | |
|       </xs:sequence>
 | |
|     </xs:sequence>
 | |
|     <xs:attribute name="derivedFrom" type="dimableIdentifierType" use="optional"/>
 | |
|   </xs:complexType>
 | |
| 
 | |
|   <!-- the registers section can have an arbitrary list of cluster and register sections -->
 | |
|   <xs:complexType name="registersType">
 | |
|     <xs:choice minOccurs="1" maxOccurs="unbounded">
 | |
|       <xs:element name="cluster" type="clusterType"/>
 | |
|       <xs:element name="register" type="registerType"/>
 | |
|     </xs:choice>
 | |
|   </xs:complexType>
 | |
| 
 | |
|   <xs:complexType name="peripheralType">
 | |
|     <xs:sequence>
 | |
|       <!-- 1.3: specify uni-dimensional array of peripheral - requires name="<name>[%s]" -->
 | |
|       <xs:group    ref="dimElementGroup" minOccurs="0"/>
 | |
|       <!-- name specifies the name of a peripheral. This name is used for the System View and device header file -->
 | |
|       <xs:element name="name" type="dimableIdentifierType"/>
 | |
|       <!-- version specifies the version of the peripheral descriptions -->
 | |
|       <xs:element name="version" type="stringType" minOccurs="0"/>
 | |
|       <!-- description provides a high level functional description of the peripheral -->
 | |
|       <xs:element name="description" type="stringType" minOccurs="0"/>
 | |
|       <!-- V1.1: alternatePeripheral specifies an alternative description for an address range that is
 | |
|            already fully by a peripheral described. In this case the peripheral name must be unique within the device description -->
 | |
|       <xs:element name="alternatePeripheral" type="dimableIdentifierType" minOccurs="0"/>
 | |
|       <!-- groupName assigns this peripheral to a group of peripherals. This is only used bye the System View -->
 | |
|       <xs:element name="groupName" type="xs:Name" minOccurs="0"/>
 | |
|       <!-- prependToName specifies a prefix that is placed in front of each register name of this peripheral. 
 | |
|                          The device header file will show the registers in a C-Struct of the peripheral without the prefix. -->
 | |
|       <xs:element name="prependToName" type="identifierType" minOccurs="0"/>
 | |
|       <!-- appendToName is a postfix that is appended to each register name of this peripheral. The device header 
 | |
|                          file will sho the registers in a C-Struct of the peripheral without the postfix -->
 | |
|       <xs:element name="appendToName" type="identifierType" minOccurs="0"/>
 | |
|       <!-- V1.1: headerStructName specifies the name for the peripheral structure typedef
 | |
|                          used in the device header generation instead of the peripheral name -->
 | |
|       <xs:element name="headerStructName" type="dimableIdentifierType" minOccurs="0"/>
 | |
|       <!-- disableCondition contains a logical expression based on constants and register or bit-field values 
 | |
|                          if the condition is evaluated to true, the peripheral display will be disabled -->
 | |
|       <xs:element name="disableCondition" type="stringType" minOccurs="0"/>
 | |
|       <!-- baseAddress specifies the absolute base address of a peripheral. For derived peripherals it is mandatory
 | |
|                          to specify a baseAddress. -->
 | |
|       <xs:element name="baseAddress" type="scaledNonNegativeInteger"/>
 | |
|       <!-- registerPropertiesGroup elements specify the default values for register size, access permission and
 | |
|                          reset value. These default values are inherited to all registers contained in this peripheral -->
 | |
|       <xs:group ref="registerPropertiesGroup" minOccurs="0"/>
 | |
|       <!-- addressBlock specifies one or more address ranges that are assigned exclusively to this peripheral. 
 | |
|                          derived peripherals may have no addressBlock, however none-derived peripherals are required to specify
 | |
|                          at least one address block -->
 | |
|       <xs:element name="addressBlock" type="addressBlockType" minOccurs="0" maxOccurs="unbounded"/>
 | |
|       <!-- interrupt specifies can specify one or more interrtupts by name, description and value -->
 | |
|       <xs:element name="interrupt" type="interruptType" minOccurs="0" maxOccurs="unbounded"/>
 | |
|       <!-- registers section contains all registers owned by the peripheral. In case a peripheral gets derived it does
 | |
|                         not have its own registers section, hence this section is optional. A unique peripheral without a 
 | |
|                         registers section is not allowed -->
 | |
|       <xs:element name="registers" type="registersType" minOccurs="0" maxOccurs="1">
 | |
|       </xs:element>
 | |
|     </xs:sequence>
 | |
|     <xs:attribute name="derivedFrom" type="dimableIdentifierType" use="optional"/>
 | |
|   </xs:complexType>
 | |
|   
 | |
|   <!-- ==================================================== -->
 | |
|   <!-- The top level element of a description is the device -->
 | |
|   <!-- ==================================================== -->
 | |
|   <xs:element name="device" nillable="true">
 | |
|     <xs:complexType>
 | |
|       <xs:sequence>
 | |
|         <!-- V1.1: Vendor Name -->
 | |
|         <xs:element name="vendor" type="stringType" minOccurs="0"/>
 | |
|         <!-- V1.1: Vendor ID - a short name for referring to the vendor (e.g. Texas Instruments = TI) -->
 | |
|         <xs:element name="vendorID" type="identifierType" minOccurs="0"/>
 | |
|         <!-- name specifies the device name being described -->
 | |
|         <xs:element name="name" type="identifierType"/>
 | |
|         <!-- V1.1: series specifies the device series or family name -->
 | |
|         <xs:element name="series" type="stringType" minOccurs="0"/>
 | |
|         <!-- version specifies the version of the device description -->
 | |
|         <xs:element name="version" type="stringType"/>
 | |
|         <!-- description is a string describing the device features (e.g. memory size, peripherals, etc.) -->
 | |
|         <xs:element name="description" type="stringType"/>
 | |
|         <!-- V1.1: licenseText specifies the file header section to be included in any derived file -->
 | |
|         <xs:element name="licenseText" type="stringType" minOccurs="0"/>
 | |
|         <!-- V1.1: cpu specifies the details of the processor included in the device -->
 | |
|         <xs:element name="cpu" type="cpuType" minOccurs="0"/>
 | |
|         <!-- V1.1: the tag specifies the filename without extension of the CMSIS System Device include file.
 | |
|              This tag is used by the header file generator for customizing the include statement referencing the
 | |
|              CMSIS system file within the CMSIS device header file. By default the filename is "system_<device.name>"
 | |
|              In cases a device series shares a single system header file, the name of the series shall be used 
 | |
|              instead of the individual device name. -->
 | |
|         <xs:element name="headerSystemFilename" type="identifierType" minOccurs="0"/>
 | |
|         <!-- V1.1: headerDefinitionPrefix specifies the string being prepended to all names of types defined in
 | |
|              generated device header file -->
 | |
|         <xs:element name="headerDefinitionsPrefix" type="identifierType" minOccurs="0"/>
 | |
|         <!-- addressUnitBits specifies the size of the minimal addressable unit in bits -->
 | |
|         <xs:element name="addressUnitBits" type="scaledNonNegativeInteger"/>
 | |
|         <!-- width specifies the number of bits for the maximum single transfer size allowed by the bus interface.
 | |
|              This sets the maximum size of a single register that can be defined for an address space -->
 | |
|         <xs:element name="width" type="scaledNonNegativeInteger"/>
 | |
|         <!-- registerPropertiesGroup elements specify the default values for register size, access permission and
 | |
|              reset value -->
 | |
|         <xs:group ref="registerPropertiesGroup" minOccurs="0"/>
 | |
| 
 | |
|         <!-- peripherals is containing all peripherals -->
 | |
|         <xs:element name="peripherals">
 | |
|           <xs:complexType>
 | |
|             <xs:sequence>
 | |
|               <xs:element name="peripheral" type="peripheralType" minOccurs="1" maxOccurs="unbounded"/>
 | |
|             </xs:sequence>
 | |
|           </xs:complexType>
 | |
|         </xs:element>
 | |
| 
 | |
|         <!-- Vendor Extensions: this section captures custom extensions. This section will be ignored by default -->
 | |
|         <xs:element name="vendorExtensions" minOccurs="0" maxOccurs="1">
 | |
|           <xs:complexType>
 | |
|             <xs:sequence>
 | |
|               <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded">
 | |
|               </xs:any>
 | |
|             </xs:sequence>
 | |
|           </xs:complexType>
 | |
|         </xs:element>
 | |
|       </xs:sequence>
 | |
|       <xs:attribute name="schemaVersion" type="xs:decimal" use="required"/>
 | |
|     </xs:complexType>
 | |
|   </xs:element>
 | |
| </xs:schema>
 | |
| 
 | |
| <!-- END OF FILE --></pre> </div></div><!-- contents -->
 | |
| </div><!-- doc-content -->
 | |
| <!-- start footer part -->
 | |
| <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
 | |
|   <ul>
 | |
|     <li class="footer">Generated on Wed Aug 1 2018 17:12:47 for CMSIS-SVD by Arm Ltd. All rights reserved.
 | |
| 	<!--
 | |
|     <a href="http://www.doxygen.org/index.html">
 | |
|     <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 
 | |
| 	-->
 | |
| 	</li>
 | |
|   </ul>
 | |
| </div>
 | |
| </body>
 | |
| </html>
 |