summaryrefslogtreecommitdiff
path: root/CMSIS/Documentation/SVD/html/group__cpu_section__gr.html
blob: b728a3578c9548ae16b4086497c7ae09a3966305 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
<!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>CPU Section</title>
<title>CMSIS-SVD: CPU Section</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);
</script>
<link href="stylsheetf" rel="stylesheet" type="text/css" />
</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
   &#160;<span id="projectnumber">Version 1.3.1</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.2 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
      <li><a href="modules.html"><span>Reference</span></a></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('group__cpu_section__gr.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">CPU Section</div>  </div>
<div class="ingroups"><a class="el" href="group__svd___format__1__1__gr.html">SVD Extensions</a></div></div><!--header-->
<div class="contents">
<p>The CPU section describes the processor included in the microcontroller device. This section is mandatory if the SVD file shall be used for the device header file generation.</p>
<pre>
<span class="opt">&lt;cpu&gt;</span>
    <span class="mand">&lt;name&gt;<em>cpuNameType</em>&lt;/name&gt;
    &lt;revision&gt;<em>revisionType</em>&lt;/revision&gt;
    &lt;endian&gt;<em>endianType</em>&lt;/endian&gt;
    &lt;mpuPresent&gt;<em>xs:boolean</em>&lt;/mpuPresent&gt;
    &lt;fpuPresent&gt;<em>xs:boolean</em>&lt;/fpuPresent&gt;
    &lt;fpuDP&gt;<em>xs:boolean</em>&lt;/fpuDP&gt;
    &lt;icachePresent&gt;<em>xs:boolean</em>&lt;/icachePresent&gt;
    &lt;dcachePresent&gt;<em>xs:boolean</em>&lt;/dcachePresent&gt;
    &lt;itcmPresent&gt;<em>xs:boolean</em>&lt;/itcmPresent&gt;
    &lt;dtcmPresent&gt;<em>xs:boolean</em>&lt;/dtcmPresent&gt;
    &lt;vtorPresent&gt;<em>xs:boolean</em>&lt;/vtorPresent&gt;
    &lt;nvicPrioBits&gt;<em>scaledNonNegativeInteger</em>&lt;/nvicPrioBits&gt;
    &lt;vendorSystickConfig&gt;<em>xs:boolean</em>&lt;/vendorSystickConfig&gt;
    &lt;deviceNumInterrupts&gt;<em>scaledNonNegativeInteger</em>&lt;deviceNumInterrupts&gt;
    &lt;sauNumRegions&gt;<em>scaledNonNegativeInteger</em>&lt;/sauRegions&gt;
    &lt;sauRegionsConfig&gt;<em>sauRegionsConfigType</em>&lt;/sauRegionsConfig&gt;
    </span>
<span class="opt">&lt;/cpu&gt;</span>
</pre><table  class="cmtable" summary="CPU Section Elements">
<tr>
<th nowrap="nowrap">Element Name </th><th>Description </th><th>Type </th><th>Occurrence  </th></tr>
<tr>
<td>name </td><td>The predefined tokens are:<ul>
<li><span class="XML-Token">CM0</span>: ARM Cortex-M0</li>
<li><span class="XML-Token">CM0PLUS</span>: ARM Cortex-M0+</li>
<li><span class="XML-Token">CM3</span>: ARM Cortex-M3</li>
<li><span class="XML-Token">CM4</span>: ARM Cortex-M4</li>
<li><span class="XML-Token">CM7</span>: ARM Cortex-M7</li>
<li><span class="XML-Token">SC000</span>: ARM Secure Core SC000</li>
<li><span class="XML-Token">SC300</span>: ARM Secure Core SC300</li>
<li><span class="XML-Token">other</span>: other processor architectures  </li>
</ul>
</td><td>cpuNameType  </td><td>1..1   </td></tr>
<tr>
<td>revisionType  </td><td>Defines the HW revision of the processor. The defined version format is <span class="XML-Token">r<em>N</em>p<em>M</em></span> (N,M = [0 - 9]).  </td><td>revisionType </td><td>1..1   </td></tr>
<tr>
<td>endian  </td><td>Defines the endianess of the processor being one of:<ul>
<li><span class="XML-Token">little</span>: little endian memory (least significant byte gets allocated at the lowest address).</li>
<li><span class="XML-Token">big</span>: byte invariant big endian data organization (most significant byte gets allocated at the lowest address).</li>
<li><span class="XML-Token">selectable</span>: little and big endian are configurable for the device and become active after the next reset.</li>
<li><span class="XML-Token">other</span>: the endianess is neither little nor big endian.  </li>
</ul>
</td><td>endianType  </td><td>1..1   </td></tr>
<tr>
<td>mpuPresent  </td><td>Indicates that the processor is equipped with a memory protection unit (MPU). This tag is either set to <span class="XML-Token">true</span> or <span class="XML-Token">false</span>, <span class="XML-Token">1</span> or <span class="XML-Token">0</span>. </td><td>boolean  </td><td>1..1   </td></tr>
<tr>
<td>fpuPresent  </td><td>Indicates that the processor is equipped with a hardware floating point unit (FPU). Cortex-M4 and Cortex-M7 are the only available Cortex-M processor with an optional FPU. This tag is either set to <span class="XML-Token">true</span> or <span class="XML-Token">false</span>, <span class="XML-Token">1</span> or <span class="XML-Token">0</span>. </td><td>boolean  </td><td>1..1   </td></tr>
<tr>
<td>fpuDP  </td><td>Indicates that the processor is equipped with a double precision floating point unit. Flag is only valid if fpuPresent is set true. Cortex-M7 is currently the only Cortex-M processor available with a double precision floating point unit. </td><td>boolean </td><td>0..1   </td></tr>
<tr>
<td>icachePresent </td><td>Indicates that the processor has an instruction cache. Note: only an option for Cortex-M7 based devices.  </td><td>boolean  </td><td>0..1   </td></tr>
<tr>
<td>dcachePresent </td><td>Indicates that the processor has an data cache. Note: only an option for Cortex-M7 based devices.  </td><td>boolean  </td><td>0..1   </td></tr>
<tr>
<td>itcmPresent </td><td>Indicates that the processor has an instruction tightly coupled memory. Note: only an option for Cortex-M7 based devices.  </td><td>boolean  </td><td>0..1   </td></tr>
<tr>
<td>dtcmPresent </td><td>Indicates that the processor has an data tightly coupled memory. Note: only an option for Cortex-M7 based devices.  </td><td>boolean  </td><td>0..1   </td></tr>
<tr>
<td>vtorPresent  </td><td>This is an optional flag used for the Cortex-M0+ based devices only. It indicates whether the Vector Table Offset Register (VTOR) is implemented in the Cortex-M0+ device or not. This tag is either set to <span class="XML-Token">true</span> or <span class="XML-Token">false</span>, <span class="XML-Token">1</span> or <span class="XML-Token">0</span>. If it is not specified VTOR is assumed to be present. </td><td>boolean  </td><td>1..1   </td></tr>
<tr>
<td>nvicPrioBits  </td><td>Defines the number of bits that are available in the Nested Vectored Interrupt Controller (NVIC) for configuring the priority. </td><td>scaledNonNegativeInteger  </td><td>1..1   </td></tr>
<tr>
<td>vendorSystickConfig </td><td>Indicates whether the processor implements a vendor-specific System Tick Timer. If <span class="XML-Token">false</span>, then the ARM defined System Tick Timer is available. If <span class="XML-Token">true</span>, then a vendor-specific System Tick Timer must be implemented. This tag is either set to <span class="XML-Token">true</span> or <span class="XML-Token">false</span>, <span class="XML-Token">1</span> or <span class="XML-Token">0</span>. </td><td>boolean  </td><td>1..1   </td></tr>
<tr>
<td>deviceNumInterrupts </td><td>Specifies the total number of interrupts implemented by the device. This value can be used to validate the number of described interrupts </td><td>scaledNonNegativeInteger </td><td>0..1   </td></tr>
<tr>
<td>sauNumRegions </td><td>If set and not zero this flag indicates that the device is equipped with a Security Attribution Unit (SAU) and the maximum number of available address regions.  </td><td>scaledNonNegativeInteger  </td><td>0..1   </td></tr>
<tr>
<td>sauRegionsConfig </td><td><p class="starttd">If the Secure Attribution Unit is preconfigured by HW or Firmware, the settings are described here.</p>
<p><span class="XML-Token">&lt;sauRegionsConfig</span> enabled=true protectionWhenDisabled="s"<span class="XML-Token">&gt;</span></p>
<ul>
<li><span class="XML-Token">&lt;base&gt;<em>adddress</em>&lt;/base&gt;</span>: SAU Region base adddress (type=scaledNonNegativeInteger) [1..1]</li>
<li><span class="XML-Token">&lt;limit&gt;<em>address</em>&lt;/limit&gt;</span>: SAU Region limit adddress (type=scaledNonNegativeInteger) [1..1]</li>
<li><span class="XML-Token">&lt;access&gt;<em>flag</em>&lt;/access&gt;</span>: one of "n" = non-secure or "c" = secure callable (type=string) [1..1]</li>
<li>attribute: <span class="XML-Token">enabled =</span> [true|false]: SAU Region is active (type=boolean) [0..1]</li>
<li>attribute: <span class="XML-Token">name =</span> [string]: brief name for identifying the SAU Region(type=string) [0..1]</li>
</ul>
<p class="endtd"><span class="XML-Token">&lt;/sauRegionsConfig&gt;</span></p>
<ul>
<li>attribute: <span class="XML-Token">enabled =</span> [true|false]: enable/disable the complete SAU (type=boolean) [0..1]</li>
<li>attribute: <span class="XML-Token">protectionWhenDisabled =</span> [s|n]: if the complete SAU is disabled the whole memory is treated either "s" = secure or "n" non-secure - [0..1] (default="s")  </li>
</ul>
</td><td>SauRegionsConfigType </td><td><p class="starttd">0..1  </p>
<p class="endtd"></p>
</td></tr>
</table>
<h1><a class="anchor" id="cpuSection_ex"></a>
Example:</h1>
<div class="fragment"><div class="line">...</div>
<div class="line">&lt;cpu&gt;</div>
<div class="line">    &lt;name&gt;CM7&lt;/name&gt; </div>
<div class="line">    &lt;revision&gt;r0p0&lt;/revision&gt;</div>
<div class="line">    &lt;endian&gt;little&lt;/endian&gt;</div>
<div class="line">    &lt;mpuPresent&gt;<span class="keyword">true</span>&lt;/mpuPresent&gt;</div>
<div class="line">    &lt;!-- has <span class="keywordtype">double</span> precision FPU --&gt;</div>
<div class="line">    &lt;fpuPresent&gt;<span class="keyword">true</span>&lt;/fpuPresent&gt;</div>
<div class="line">    &lt;fpuDP&gt;<span class="keyword">true</span>&lt;/fpuDP&gt;</div>
<div class="line">    &lt;!-- has instruction and data cache --&gt;</div>
<div class="line">    &lt;icachePresent&gt;<span class="keyword">true</span>&lt;/icachePresent&gt;</div>
<div class="line">    &lt;dcachePresent&gt;<span class="keyword">true</span>&lt;/dcachePresent&gt;</div>
<div class="line">    &lt;!-- has no instruction nor data tighly coupled memory --&gt;</div>
<div class="line">    &lt;itcmPresent&gt;<span class="keyword">false</span>&lt;/itcmPresent&gt;</div>
<div class="line">    &lt;dtcmPresent&gt;<span class="keyword">false</span>&lt;/dtcmPresent&gt;</div>
<div class="line">    &lt;nvicPrioBits&gt;4&lt;/nvicPrioBits&gt;</div>
<div class="line">    &lt;vendorSystickConfig&gt;<span class="keyword">false</span>&lt;/vendorSystickConfig&gt; </div>
<div class="line">&lt;/cpu&gt;</div>
<div class="line">...</div>
</div><!-- fragment --><p>This example describes a device based on a Cortex-M7 core of HW revision r0p0, with fixed little endian memory scheme, including Memory Protection Unit and double precision hardware Floating Point Unit. It has and instruction and a data cache but no Tightly Coupled Memories. The Nested Vectored Interrupt Controller uses 4 bits for configuring the priority of an interrupt. It is equipped with the standard System Tick Timer as defined by ARM. </p>
</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 Tue Oct 27 2015 14:35:46 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.2 
	-->
	</li>
  </ul>
</div>
</body>
</html>