1 <!-- HTML header for doxygen 1.9.6-->
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
5 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6 <meta http-equiv="X-UA-Compatible" content="IE=11"/>
7 <meta name="viewport" content="width=device-width, initial-scale=1"/>
8 <title>CMSIS-Core (Cortex-M): MPU Functions for Armv6-M/v7-M</title>
9 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
10 <link href="tabs.css" rel="stylesheet" type="text/css"/>
11 <link href="extra_navtree.css" rel="stylesheet" type="text/css"/>
12 <link href="extra_stylesheet.css" rel="stylesheet" type="text/css"/>
13 <link href="extra_search.css" rel="stylesheet" type="text/css"/>
14 <script type="text/javascript" src="jquery.js"></script>
15 <script type="text/javascript" src="dynsections.js"></script>
16 <script type="text/javascript" src="printComponentTabs.js"></script>
17 <script type="text/javascript" src="footer.js"></script>
18 <script type="text/javascript" src="navtree.js"></script>
19 <link href="navtree.css" rel="stylesheet" type="text/css"/>
20 <script type="text/javascript" src="resize.js"></script>
21 <script type="text/javascript" src="navtreedata.js"></script>
22 <script type="text/javascript" src="navtree.js"></script>
23 <link href="search/search.css" rel="stylesheet" type="text/css"/>
24 <script type="text/javascript" src="search/searchdata.js"></script>
25 <script type="text/javascript" src="search/search.js"></script>
26 <script type="text/javascript">
27 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
28 $(document).ready(function() { init_search(); });
31 <script type="text/javascript" src="darkmode_toggle.js"></script>
32 <link href="extra_stylesheet.css" rel="stylesheet" type="text/css"/>
33 <link href="extra_navtree.css" rel="stylesheet" type="text/css"/>
34 <link href="extra_search.css" rel="stylesheet" type="text/css"/>
35 <link href="version.css" rel="stylesheet" type="text/css" />
36 <script type="text/javascript" src="../../version.js"></script>
39 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
41 <table cellspacing="0" cellpadding="0">
43 <tr style="height: 55px;">
44 <td id="projectlogo" style="padding: 1.5em;"><img alt="Logo" src="cmsis_logo_white_small.png"/></td>
45 <td style="padding-left: 1em; padding-bottom: 1em;padding-top: 1em;">
46 <div id="projectname">CMSIS-Core (Cortex-M)
47  <span id="projectnumber"><script type="text/javascript">
49 writeHeader.call(this);
50 writeVersionDropdown.call(this, "CMSIS-Core (Cortex-M)");
55 <div id="projectbrief">CMSIS-Core support for Cortex-M processor-based devices</div>
57 <td> <div id="MSearchBox" class="MSearchBoxInactive">
59 <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()"> </span>
60 <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
61 onfocus="searchBox.OnSearchFieldFocus(true)"
62 onblur="searchBox.OnSearchFieldFocus(false)"
63 onkeyup="searchBox.OnSearchFieldChange(event)"/>
64 </span><span class="right">
65 <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
69 <!--END !PROJECT_NAME-->
74 <!-- end header part -->
75 <div id="CMSISnav" class="tabs1">
77 <script type="text/javascript">
78 writeComponentTabs.call(this);
82 <script type="text/javascript">
83 writeSubComponentTabs.call(this);
85 <!-- Generated by Doxygen 1.9.6 -->
86 <script type="text/javascript">
87 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
88 var searchBox = new SearchBox("searchBox", "search/",'.html');
92 <div id="side-nav" class="ui-resizable side-nav-resizable">
94 <div id="nav-tree-contents">
95 <div id="nav-sync" class="sync"></div>
98 <div id="splitbar" style="-moz-user-select:none;"
99 class="ui-resizable-handle">
102 <script type="text/javascript">
103 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
104 $(document).ready(function(){initNavTree('group__mpu__functions.html',''); initResizable(); });
107 <div id="doc-content">
108 <!-- window showing the filter options -->
109 <div id="MSearchSelectWindow"
110 onmouseover="return searchBox.OnSearchSelectShow()"
111 onmouseout="return searchBox.OnSearchSelectHide()"
112 onkeydown="return searchBox.OnSearchSelectKey(event)">
115 <!-- iframe showing the search results (closed by default) -->
116 <div id="MSearchResultsWindow">
117 <div id="MSearchResults">
120 <div id="SRResults"></div>
121 <div class="SRStatus" id="Loading">Loading...</div>
122 <div class="SRStatus" id="Searching">Searching...</div>
123 <div class="SRStatus" id="NoMatches">No Matches</div>
130 <div class="summary">
131 <a href="#groups">Content</a> |
132 <a href="#nested-classes">Data Structures</a> |
133 <a href="#define-members">Macros</a> |
134 <a href="#func-members">Functions</a> </div>
135 <div class="headertitle"><div class="title">MPU Functions for Armv6-M/v7-M</div></div>
137 <div class="contents">
139 <p>Functions that relate to the Memory Protection Unit.
140 <a href="#details">More...</a></p>
141 <table class="memberdecls">
142 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="groups" name="groups"></a>
143 Content</h2></td></tr>
144 <tr class="memitem:group__mpu__defines"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mpu__defines.html">Define values</a></td></tr>
145 <tr class="memdesc:group__mpu__defines"><td class="mdescLeft"> </td><td class="mdescRight">Define values for MPU region setup. <br /></td></tr>
146 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
147 </table><table class="memberdecls">
148 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
149 Data Structures</h2></td></tr>
150 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structMPU__Type.html">MPU_Type</a></td></tr>
151 <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Structure type to access the Memory Protection Unit (MPU). <a href="structMPU__Type.html#details">More...</a><br /></td></tr>
152 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
153 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structARM__MPU__Region__t.html">ARM_MPU_Region_t</a></td></tr>
154 <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Setup information of a single MPU Region. <a href="structARM__MPU__Region__t.html#details">More...</a><br /></td></tr>
155 <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
156 </table><table class="memberdecls">
157 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
158 Macros</h2></td></tr>
159 <tr class="memitem:ga3fead12dc24a6d00ad53f55a042486ca"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mpu__functions.html#ga3fead12dc24a6d00ad53f55a042486ca">ARM_MPU_RBAR</a>(Region, BaseAddress)</td></tr>
160 <tr class="memdesc:ga3fead12dc24a6d00ad53f55a042486ca"><td class="mdescLeft"> </td><td class="mdescRight">MPU Region Base Address Register Value. <br /></td></tr>
161 <tr class="separator:ga3fead12dc24a6d00ad53f55a042486ca"><td class="memSeparator" colspan="2"> </td></tr>
162 <tr class="memitem:ga96b93785c92e2dbcb3a2356c25bf2adc"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mpu__functions.html#ga96b93785c92e2dbcb3a2356c25bf2adc">ARM_MPU_RASR</a>(DisableExec, AccessPermission, TypeExtField, IsShareable, IsCacheable, IsBufferable, SubRegionDisable, Size)</td></tr>
163 <tr class="memdesc:ga96b93785c92e2dbcb3a2356c25bf2adc"><td class="mdescLeft"> </td><td class="mdescRight">MPU Region Attribute and Size Register Value. <br /></td></tr>
164 <tr class="separator:ga96b93785c92e2dbcb3a2356c25bf2adc"><td class="memSeparator" colspan="2"> </td></tr>
165 <tr class="memitem:ga332ed5f8969dd4df6b61c6ae32ec36dc"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mpu__functions.html#ga332ed5f8969dd4df6b61c6ae32ec36dc">ARM_MPU_RASR_EX</a>(DisableExec, AccessPermission, AccessAttributes, SubRegionDisable, Size)</td></tr>
166 <tr class="memdesc:ga332ed5f8969dd4df6b61c6ae32ec36dc"><td class="mdescLeft"> </td><td class="mdescRight">MPU Region Attribute and Size Register Value. <br /></td></tr>
167 <tr class="separator:ga332ed5f8969dd4df6b61c6ae32ec36dc"><td class="memSeparator" colspan="2"> </td></tr>
168 </table><table class="memberdecls">
169 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
170 Functions</h2></td></tr>
171 <tr class="memitem:ga31406efd492ec9a091a70ffa2d8a42fb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__compiler__conntrol__gr.html#gaba87361bfad2ae52cfe2f40c1a1dbf9c">__STATIC_INLINE</a> void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mpu__functions.html#ga31406efd492ec9a091a70ffa2d8a42fb">ARM_MPU_Enable</a> (uint32_t MPU_CTRL)</td></tr>
172 <tr class="memdesc:ga31406efd492ec9a091a70ffa2d8a42fb"><td class="mdescLeft"> </td><td class="mdescRight">Enable the memory protection unit (MPU) and. <br /></td></tr>
173 <tr class="separator:ga31406efd492ec9a091a70ffa2d8a42fb"><td class="memSeparator" colspan="2"> </td></tr>
174 <tr class="memitem:ga7cbc0a4a066ed90e85c8176228235d57"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__compiler__conntrol__gr.html#gaba87361bfad2ae52cfe2f40c1a1dbf9c">__STATIC_INLINE</a> void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mpu__functions.html#ga7cbc0a4a066ed90e85c8176228235d57">ARM_MPU_Disable</a> ()</td></tr>
175 <tr class="separator:ga7cbc0a4a066ed90e85c8176228235d57"><td class="memSeparator" colspan="2"> </td></tr>
176 <tr class="memitem:ga9dcb0afddf4ac351f33f3c7a5169c62c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__compiler__conntrol__gr.html#gaba87361bfad2ae52cfe2f40c1a1dbf9c">__STATIC_INLINE</a> void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mpu__functions.html#ga9dcb0afddf4ac351f33f3c7a5169c62c">ARM_MPU_ClrRegion</a> (uint32_t rnr)</td></tr>
177 <tr class="separator:ga9dcb0afddf4ac351f33f3c7a5169c62c"><td class="memSeparator" colspan="2"> </td></tr>
178 <tr class="memitem:ga16931f9ad84d7289e8218e169ae6db5d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__compiler__conntrol__gr.html#gaba87361bfad2ae52cfe2f40c1a1dbf9c">__STATIC_INLINE</a> void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mpu__functions.html#ga16931f9ad84d7289e8218e169ae6db5d">ARM_MPU_SetRegion</a> (uint32_t rbar, uint32_t rasr)</td></tr>
179 <tr class="separator:ga16931f9ad84d7289e8218e169ae6db5d"><td class="memSeparator" colspan="2"> </td></tr>
180 <tr class="memitem:ga042ba1a6a1a58795231459ac0410b809"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__compiler__conntrol__gr.html#gaba87361bfad2ae52cfe2f40c1a1dbf9c">__STATIC_INLINE</a> void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mpu__functions.html#ga042ba1a6a1a58795231459ac0410b809">ARM_MPU_SetRegionEx</a> (uint32_t rnr, uint32_t rbar, uint32_t rasr)</td></tr>
181 <tr class="separator:ga042ba1a6a1a58795231459ac0410b809"><td class="memSeparator" colspan="2"> </td></tr>
182 <tr class="memitem:gac1a949403bf84eecaf407003fb553ae7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__compiler__conntrol__gr.html#gaba87361bfad2ae52cfe2f40c1a1dbf9c">__STATIC_INLINE</a> void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mpu__functions.html#gac1a949403bf84eecaf407003fb553ae7">ARM_MPU_OrderedMemcpy</a> (volatile uint32_t *dst, const uint32_t *<a class="el" href="group__compiler__conntrol__gr.html#ga378ac21329d33f561f90265eef89f564">__RESTRICT</a> src, uint32_t len)</td></tr>
183 <tr class="separator:gac1a949403bf84eecaf407003fb553ae7"><td class="memSeparator" colspan="2"> </td></tr>
184 <tr class="memitem:gafa27b26d5847fa8e465584e376b6078a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__compiler__conntrol__gr.html#gaba87361bfad2ae52cfe2f40c1a1dbf9c">__STATIC_INLINE</a> void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__mpu__functions.html#gafa27b26d5847fa8e465584e376b6078a">ARM_MPU_Load</a> (MPU_Region_t const *table, uint32_t cnt)</td></tr>
185 <tr class="separator:gafa27b26d5847fa8e465584e376b6078a"><td class="memSeparator" colspan="2"> </td></tr>
187 <a name="details" id="details"></a><h2 class="groupheader">Description</h2>
188 <p>Functions that relate to the Memory Protection Unit. </p>
189 <p>The following functions support the optional Memory Protection Unit (MPU) that is available on the Cortex-M0+, M3, M4 and M7 processor.</p>
190 <p>The MPU is used to prevent from illegal memory accesses that are typically caused by errors in an application software.</p>
191 <p><b>Example:</b> </p><div class="fragment"><div class="line"><span class="keywordtype">int</span> main() </div>
192 <div class="line">{</div>
193 <div class="line"> <span class="comment">// Set Region 0</span></div>
194 <div class="line"> <a class="code hl_function" href="group__mpu__functions.html#ga042ba1a6a1a58795231459ac0410b809">ARM_MPU_SetRegionEx</a>(0UL, 0x08000000UL, <a class="code hl_define" href="group__mpu__functions.html#ga96b93785c92e2dbcb3a2356c25bf2adc">ARM_MPU_RASR</a>(0UL, ARM_MPU_AP_FULL, 0UL, 0UL, 1UL, 1UL, 0x00UL, ARM_MPU_REGION_SIZE_1MB));</div>
195 <div class="line"> </div>
196 <div class="line"> <a class="code hl_function" href="group__mpu__functions.html#ga31406efd492ec9a091a70ffa2d8a42fb">ARM_MPU_Enable</a>(0);</div>
197 <div class="line"> </div>
198 <div class="line"> <span class="comment">// Execute application code that is access protected by the MPU</span></div>
199 <div class="line"> </div>
200 <div class="line"> <a class="code hl_function" href="group__mpu__functions.html#ga7cbc0a4a066ed90e85c8176228235d57">ARM_MPU_Disable</a>();</div>
201 <div class="line">}</div>
202 <div class="ttc" id="agroup__mpu__functions_html_ga042ba1a6a1a58795231459ac0410b809"><div class="ttname"><a href="group__mpu__functions.html#ga042ba1a6a1a58795231459ac0410b809">ARM_MPU_SetRegionEx</a></div><div class="ttdeci">__STATIC_INLINE void ARM_MPU_SetRegionEx(uint32_t rnr, uint32_t rbar, uint32_t rasr)</div></div>
203 <div class="ttc" id="agroup__mpu__functions_html_ga31406efd492ec9a091a70ffa2d8a42fb"><div class="ttname"><a href="group__mpu__functions.html#ga31406efd492ec9a091a70ffa2d8a42fb">ARM_MPU_Enable</a></div><div class="ttdeci">__STATIC_INLINE void ARM_MPU_Enable(uint32_t MPU_CTRL)</div><div class="ttdoc">Enable the memory protection unit (MPU) and.</div></div>
204 <div class="ttc" id="agroup__mpu__functions_html_ga7cbc0a4a066ed90e85c8176228235d57"><div class="ttname"><a href="group__mpu__functions.html#ga7cbc0a4a066ed90e85c8176228235d57">ARM_MPU_Disable</a></div><div class="ttdeci">__STATIC_INLINE void ARM_MPU_Disable()</div></div>
205 <div class="ttc" id="agroup__mpu__functions_html_ga96b93785c92e2dbcb3a2356c25bf2adc"><div class="ttname"><a href="group__mpu__functions.html#ga96b93785c92e2dbcb3a2356c25bf2adc">ARM_MPU_RASR</a></div><div class="ttdeci">#define ARM_MPU_RASR(DisableExec, AccessPermission, TypeExtField, IsShareable, IsCacheable, IsBufferable, SubRegionDisable, Size)</div><div class="ttdoc">MPU Region Attribute and Size Register Value.</div><div class="ttdef"><b>Definition:</b> Ref_MPU.txt:59</div></div>
206 </div><!-- fragment --> <h2 class="groupheader">Macro Definition Documentation</h2>
207 <a id="ga96b93785c92e2dbcb3a2356c25bf2adc" name="ga96b93785c92e2dbcb3a2356c25bf2adc"></a>
208 <h2 class="memtitle"><span class="permalink"><a href="#ga96b93785c92e2dbcb3a2356c25bf2adc">◆ </a></span>ARM_MPU_RASR</h2>
210 <div class="memitem">
211 <div class="memproto">
212 <table class="memname">
214 <td class="memname">#define ARM_MPU_RASR</td>
216 <td class="paramtype"> </td>
217 <td class="paramname">DisableExec, </td>
220 <td class="paramkey"></td>
222 <td class="paramtype"> </td>
223 <td class="paramname">AccessPermission, </td>
226 <td class="paramkey"></td>
228 <td class="paramtype"> </td>
229 <td class="paramname">TypeExtField, </td>
232 <td class="paramkey"></td>
234 <td class="paramtype"> </td>
235 <td class="paramname">IsShareable, </td>
238 <td class="paramkey"></td>
240 <td class="paramtype"> </td>
241 <td class="paramname">IsCacheable, </td>
244 <td class="paramkey"></td>
246 <td class="paramtype"> </td>
247 <td class="paramname">IsBufferable, </td>
250 <td class="paramkey"></td>
252 <td class="paramtype"> </td>
253 <td class="paramname">SubRegionDisable, </td>
256 <td class="paramkey"></td>
258 <td class="paramtype"> </td>
259 <td class="paramname">Size </td>
267 </div><div class="memdoc">
269 <p>MPU Region Attribute and Size Register Value. </p>
270 <p>This macro is used to construct a valid <a class="el" href="structMPU__Type.html#a8f00c4a5e31b0a8d103ed3b0732c17a3">RASR</a> value. The ENABLE bit of the RASR value is implicitly set to 1.</p>
271 <dl class="params"><dt>Parameters</dt><dd>
272 <table class="params">
273 <tr><td class="paramname">DisableExec</td><td>Instruction access disable bit. 1 = disable instruction fetches. </td></tr>
274 <tr><td class="paramname">AccessPermission</td><td>Data access permission configures read/write access for User and Privileged mode. Possible values see <a class="el" href="group__mpu__defines.html#gabc4788126d7798469cb862a08d3050cc">ARM_MPU_AP_xxx</a>. </td></tr>
275 <tr><td class="paramname">TypeExtField</td><td>Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral. </td></tr>
276 <tr><td class="paramname">IsShareable</td><td>1 = region is shareable between multiple bus masters. </td></tr>
277 <tr><td class="paramname">IsCacheable</td><td>1 = region is cacheable (values may be kept in cache). </td></tr>
278 <tr><td class="paramname">IsBufferable</td><td>1 = region is bufferable (when using write-back caching). Cacheable but non-bufferable regions use write-through policy. </td></tr>
279 <tr><td class="paramname">SubRegionDisable</td><td>Sub-region disable field (8 bits). </td></tr>
280 <tr><td class="paramname">Size</td><td>Region size with values defined under <a class="el" href="group__mpu__defines.html#gadb0a92c0928c113120567e85ff1ba05c">ARM_MPU_REGION_SIZE_xxx</a>. </td></tr>
287 <a id="ga332ed5f8969dd4df6b61c6ae32ec36dc" name="ga332ed5f8969dd4df6b61c6ae32ec36dc"></a>
288 <h2 class="memtitle"><span class="permalink"><a href="#ga332ed5f8969dd4df6b61c6ae32ec36dc">◆ </a></span>ARM_MPU_RASR_EX</h2>
290 <div class="memitem">
291 <div class="memproto">
292 <table class="memname">
294 <td class="memname">#define ARM_MPU_RASR_EX</td>
296 <td class="paramtype"> </td>
297 <td class="paramname">DisableExec, </td>
300 <td class="paramkey"></td>
302 <td class="paramtype"> </td>
303 <td class="paramname">AccessPermission, </td>
306 <td class="paramkey"></td>
308 <td class="paramtype"> </td>
309 <td class="paramname">AccessAttributes, </td>
312 <td class="paramkey"></td>
314 <td class="paramtype"> </td>
315 <td class="paramname">SubRegionDisable, </td>
318 <td class="paramkey"></td>
320 <td class="paramtype"> </td>
321 <td class="paramname">Size </td>
329 </div><div class="memdoc">
331 <p>MPU Region Attribute and Size Register Value. </p>
332 <p>This macro is used to construct a valid <a class="el" href="structMPU__Type.html#a8f00c4a5e31b0a8d103ed3b0732c17a3">RASR</a> value. The ENABLE bit of the RASR value is implicitly set to 1.</p>
333 <dl class="params"><dt>Parameters</dt><dd>
334 <table class="params">
335 <tr><td class="paramname">DisableExec</td><td>Instruction access disable bit, 1= disable instruction fetches. </td></tr>
336 <tr><td class="paramname">AccessPermission</td><td>Data access permission configures read/write access for User and Privileged mode. Possible values see <a class="el" href="group__mpu__defines.html#gabc4788126d7798469cb862a08d3050cc">ARM_MPU_AP_xxx</a>. </td></tr>
337 <tr><td class="paramname">AccessAttributes</td><td>Memory access attribution, see <a class="el" href="group__mpu__defines.html#ga71d41084e984be70a23cb640fd89d1e2">ARM_MPU_ACCESS_xxx</a>. </td></tr>
338 <tr><td class="paramname">SubRegionDisable</td><td>Sub-region disable field (8 bits). </td></tr>
339 <tr><td class="paramname">Size</td><td>Region size with values defined under <a class="el" href="group__mpu__defines.html#gadb0a92c0928c113120567e85ff1ba05c">ARM_MPU_REGION_SIZE_xxx</a>. </td></tr>
346 <a id="ga3fead12dc24a6d00ad53f55a042486ca" name="ga3fead12dc24a6d00ad53f55a042486ca"></a>
347 <h2 class="memtitle"><span class="permalink"><a href="#ga3fead12dc24a6d00ad53f55a042486ca">◆ </a></span>ARM_MPU_RBAR</h2>
349 <div class="memitem">
350 <div class="memproto">
351 <table class="memname">
353 <td class="memname">#define ARM_MPU_RBAR</td>
355 <td class="paramtype"> </td>
356 <td class="paramname">Region, </td>
359 <td class="paramkey"></td>
361 <td class="paramtype"> </td>
362 <td class="paramname">BaseAddress </td>
370 </div><div class="memdoc">
372 <p>MPU Region Base Address Register Value. </p>
373 <p>This preprocessor function can be used to construct a valid <a class="el" href="structMPU__Type.html#a990c609b26d990b8ba832b110adfd353">RBAR</a> value. The VALID bit is implicitly set to 1.</p>
374 <dl class="params"><dt>Parameters</dt><dd>
375 <table class="params">
376 <tr><td class="paramname">Region</td><td>The region to be configured, number 0 to 15. </td></tr>
377 <tr><td class="paramname">BaseAddress</td><td>The base address for the region. </td></tr>
384 <h2 class="groupheader">Function Documentation</h2>
385 <a id="ga9dcb0afddf4ac351f33f3c7a5169c62c" name="ga9dcb0afddf4ac351f33f3c7a5169c62c"></a>
386 <h2 class="memtitle"><span class="permalink"><a href="#ga9dcb0afddf4ac351f33f3c7a5169c62c">◆ </a></span>ARM_MPU_ClrRegion()</h2>
388 <div class="memitem">
389 <div class="memproto">
390 <table class="memname">
392 <td class="memname"><a class="el" href="group__compiler__conntrol__gr.html#gaba87361bfad2ae52cfe2f40c1a1dbf9c">__STATIC_INLINE</a> void ARM_MPU_ClrRegion </td>
394 <td class="paramtype">uint32_t </td>
395 <td class="paramname"><em>rnr</em></td><td>)</td>
399 </div><div class="memdoc">
400 <p>Clear and disable the given MPU region. </p><dl class="params"><dt>Parameters</dt><dd>
401 <table class="params">
402 <tr><td class="paramname">rnr</td><td>Region number to be cleared. </td></tr>
409 <a id="ga7cbc0a4a066ed90e85c8176228235d57" name="ga7cbc0a4a066ed90e85c8176228235d57"></a>
410 <h2 class="memtitle"><span class="permalink"><a href="#ga7cbc0a4a066ed90e85c8176228235d57">◆ </a></span>ARM_MPU_Disable()</h2>
412 <div class="memitem">
413 <div class="memproto">
414 <table class="memname">
416 <td class="memname"><a class="el" href="group__compiler__conntrol__gr.html#gaba87361bfad2ae52cfe2f40c1a1dbf9c">__STATIC_INLINE</a> void ARM_MPU_Disable </td>
418 <td class="paramname"></td><td>)</td>
422 </div><div class="memdoc">
423 <p>Disable the MPU. </p>
427 <a id="ga31406efd492ec9a091a70ffa2d8a42fb" name="ga31406efd492ec9a091a70ffa2d8a42fb"></a>
428 <h2 class="memtitle"><span class="permalink"><a href="#ga31406efd492ec9a091a70ffa2d8a42fb">◆ </a></span>ARM_MPU_Enable()</h2>
430 <div class="memitem">
431 <div class="memproto">
432 <table class="memname">
434 <td class="memname"><a class="el" href="group__compiler__conntrol__gr.html#gaba87361bfad2ae52cfe2f40c1a1dbf9c">__STATIC_INLINE</a> void ARM_MPU_Enable </td>
436 <td class="paramtype">uint32_t </td>
437 <td class="paramname"><em>MPU_CTRL</em></td><td>)</td>
441 </div><div class="memdoc">
443 <p>Enable the memory protection unit (MPU) and. </p>
444 <dl class="params"><dt>Parameters</dt><dd>
445 <table class="params">
446 <tr><td class="paramname">MPU_CTRL</td><td>Additional control settings that configure MPU behaviour</td></tr>
450 <p>The function <a class="el" href="group__mpu__functions.html#ga31406efd492ec9a091a70ffa2d8a42fb">ARM_MPU_Enable</a> writes to the register <a class="el" href="structMPU__Type.html#a769178ef949f0d5d8f18ddbd9e4e926f">MPU->CTRL</a> and sets bit ENABLE. The parameter <em>MPU_CTRL</em> provides additional bit values (see table below) that configure the MPU behaviour. For processors that implement an <b>MPU Fault Handler</b> the <a class="el" href="group__NVIC__gr.html">MemoryManagement_IRQn</a> exception is enabled by setting the bit MEMFAULTACT in register SBC->SHCSR.</p>
451 <p>The following table contains possible values for the parameter <em>MPU_CTRL</em> that set specific bits in register MPU->CTRL. </p><table class="markdownTable">
452 <tr class="markdownTableHead">
453 <th class="markdownTableHeadLeft">Bit </th><th class="markdownTableHeadLeft">MPU_CTRL value </th><th class="markdownTableHeadLeft">When applied </th><th class="markdownTableHeadLeft">When not applied </th></tr>
454 <tr class="markdownTableRowOdd">
455 <td class="markdownTableBodyLeft">1 </td><td class="markdownTableBodyLeft">MPU_CTRL_HFNMIENA_Msk </td><td class="markdownTableBodyLeft">Enable MPU during hard fault, NMI, and FAULTMASK handlers execution </td><td class="markdownTableBodyLeft">Disable MPU during hard fault, NMI, and FAULTMASK handler execution </td></tr>
456 <tr class="markdownTableRowEven">
457 <td class="markdownTableBodyLeft">2 </td><td class="markdownTableBodyLeft">MPU_CTRL_PRIVDEFENA_Msk </td><td class="markdownTableBodyLeft">Enable default memory map as a background region for privileged access </td><td class="markdownTableBodyLeft">Use only MPU region settings </td></tr>
459 <p><b>Example:</b></p>
460 <div class="fragment"><div class="line"><span class="comment">// enable MPU with all region definitions. Exceptions are not protected by MPU.</span></div>
461 <div class="line"> MPU_Enable (0);</div>
462 <div class="line"> </div>
463 <div class="line"><span class="comment">// enable MPU with all region definitions and background regions for privileged access. Exceptions are protected by MPU.</span></div>
464 <div class="line"> MPU_Enable (MPU_CTRL_PRIVDEFENA_Msk | MPU_CTRL_HFNMIENA_Msk);</div>
465 </div><!-- fragment -->
468 <a id="gafa27b26d5847fa8e465584e376b6078a" name="gafa27b26d5847fa8e465584e376b6078a"></a>
469 <h2 class="memtitle"><span class="permalink"><a href="#gafa27b26d5847fa8e465584e376b6078a">◆ </a></span>ARM_MPU_Load()</h2>
471 <div class="memitem">
472 <div class="memproto">
473 <table class="memname">
475 <td class="memname"><a class="el" href="group__compiler__conntrol__gr.html#gaba87361bfad2ae52cfe2f40c1a1dbf9c">__STATIC_INLINE</a> void ARM_MPU_Load </td>
477 <td class="paramtype">MPU_Region_t const * </td>
478 <td class="paramname"><em>table</em>, </td>
481 <td class="paramkey"></td>
483 <td class="paramtype">uint32_t </td>
484 <td class="paramname"><em>cnt</em> </td>
492 </div><div class="memdoc">
493 <p>Load the given number of MPU regions from a table. </p><dl class="params"><dt>Parameters</dt><dd>
494 <table class="params">
495 <tr><td class="paramname">table</td><td>Pointer to the MPU configuration table. </td></tr>
496 <tr><td class="paramname">cnt</td><td>Number of regions to be configured.</td></tr>
500 <dl class="section note"><dt>Note</dt><dd>only up to 16 regions can be handled as the function <a class="el" href="group__mpu__functions.html#gafa27b26d5847fa8e465584e376b6078a">ARM_MPU_Load</a> uses the REGION field in <a class="el" href="structMPU__Type.html#a990c609b26d990b8ba832b110adfd353">MPU->RBAR</a>.</dd></dl>
501 <p><b>Example:</b> </p><div class="fragment"><div class="line"><span class="keyword">const</span> <a class="code hl_struct" href="structARM__MPU__Region__t.html">ARM_MPU_Region_t</a> mpuTable[3][4] = {</div>
502 <div class="line"> {</div>
503 <div class="line"> { .<a class="code hl_variable" href="structARM__MPU__Region__t.html#afe7a7721aa08988d915670efa432cdd2">RBAR</a> = <a class="code hl_define" href="group__mpu__functions.html#ga3fead12dc24a6d00ad53f55a042486ca">ARM_MPU_RBAR</a>(0UL, 0x08000000UL), .RASR = <a class="code hl_define" href="group__mpu__functions.html#ga96b93785c92e2dbcb3a2356c25bf2adc">ARM_MPU_RASR</a>(0UL, ARM_MPU_AP_FULL, 0UL, 0UL, 1UL, 1UL, 0x00UL, ARM_MPU_REGION_SIZE_1MB) },</div>
504 <div class="line"> { .RBAR = <a class="code hl_define" href="group__mpu__functions.html#ga3fead12dc24a6d00ad53f55a042486ca">ARM_MPU_RBAR</a>(1UL, 0x20000000UL), .RASR = <a class="code hl_define" href="group__mpu__functions.html#ga96b93785c92e2dbcb3a2356c25bf2adc">ARM_MPU_RASR</a>(1UL, ARM_MPU_AP_FULL, 0UL, 0UL, 1UL, 1UL, 0x00UL, ARM_MPU_REGION_SIZE_32KB) },</div>
505 <div class="line"> { .RBAR = <a class="code hl_define" href="group__mpu__functions.html#ga3fead12dc24a6d00ad53f55a042486ca">ARM_MPU_RBAR</a>(2UL, 0x40020000UL), .RASR = <a class="code hl_define" href="group__mpu__functions.html#ga96b93785c92e2dbcb3a2356c25bf2adc">ARM_MPU_RASR</a>(1UL, ARM_MPU_AP_FULL, 2UL, 0UL, 0UL, 0UL, 0x00UL, ARM_MPU_REGION_SIZE_8KB) }, </div>
506 <div class="line"> { .RBAR = <a class="code hl_define" href="group__mpu__functions.html#ga3fead12dc24a6d00ad53f55a042486ca">ARM_MPU_RBAR</a>(3UL, 0x40022000UL), .RASR = <a class="code hl_define" href="group__mpu__functions.html#ga96b93785c92e2dbcb3a2356c25bf2adc">ARM_MPU_RASR</a>(1UL, ARM_MPU_AP_FULL, 2UL, 0UL, 0UL, 0UL, 0xC0UL, ARM_MPU_REGION_SIZE_4KB) }</div>
507 <div class="line"> },</div>
508 <div class="line"> {</div>
509 <div class="line"> { .RBAR = <a class="code hl_define" href="group__mpu__functions.html#ga3fead12dc24a6d00ad53f55a042486ca">ARM_MPU_RBAR</a>(4UL, 0x08000000UL), .RASR = <a class="code hl_define" href="group__mpu__functions.html#ga96b93785c92e2dbcb3a2356c25bf2adc">ARM_MPU_RASR</a>(0UL, ARM_MPU_AP_FULL, 0UL, 0UL, 1UL, 1UL, 0x00UL, ARM_MPU_REGION_SIZE_1MB) },</div>
510 <div class="line"> { .RBAR = <a class="code hl_define" href="group__mpu__functions.html#ga3fead12dc24a6d00ad53f55a042486ca">ARM_MPU_RBAR</a>(5UL, 0x20000000UL), .RASR = <a class="code hl_define" href="group__mpu__functions.html#ga96b93785c92e2dbcb3a2356c25bf2adc">ARM_MPU_RASR</a>(1UL, ARM_MPU_AP_FULL, 0UL, 0UL, 1UL, 1UL, 0x00UL, ARM_MPU_REGION_SIZE_32KB) },</div>
511 <div class="line"> { .RBAR = <a class="code hl_define" href="group__mpu__functions.html#ga3fead12dc24a6d00ad53f55a042486ca">ARM_MPU_RBAR</a>(6UL, 0x40020000UL), .RASR = <a class="code hl_define" href="group__mpu__functions.html#ga96b93785c92e2dbcb3a2356c25bf2adc">ARM_MPU_RASR</a>(1UL, ARM_MPU_AP_FULL, 2UL, 0UL, 0UL, 0UL, 0x00UL, ARM_MPU_REGION_SIZE_8KB) }, </div>
512 <div class="line"> { .RBAR = <a class="code hl_define" href="group__mpu__functions.html#ga3fead12dc24a6d00ad53f55a042486ca">ARM_MPU_RBAR</a>(7UL, 0x40022000UL), .RASR = <a class="code hl_define" href="group__mpu__functions.html#ga96b93785c92e2dbcb3a2356c25bf2adc">ARM_MPU_RASR</a>(1UL, ARM_MPU_AP_FULL, 2UL, 0UL, 0UL, 0UL, 0xC0UL, ARM_MPU_REGION_SIZE_4KB) }</div>
513 <div class="line"> },</div>
514 <div class="line"> {</div>
515 <div class="line"> { .RBAR = <a class="code hl_define" href="group__mpu__functions.html#ga3fead12dc24a6d00ad53f55a042486ca">ARM_MPU_RBAR</a>(4UL, 0x18000000UL), .RASR = <a class="code hl_define" href="group__mpu__functions.html#ga96b93785c92e2dbcb3a2356c25bf2adc">ARM_MPU_RASR</a>(0UL, ARM_MPU_AP_FULL, 0UL, 0UL, 1UL, 1UL, 0x00UL, ARM_MPU_REGION_SIZE_1MB) },</div>
516 <div class="line"> { .RBAR = <a class="code hl_define" href="group__mpu__functions.html#ga3fead12dc24a6d00ad53f55a042486ca">ARM_MPU_RBAR</a>(5UL, 0x30000000UL), .RASR = <a class="code hl_define" href="group__mpu__functions.html#ga96b93785c92e2dbcb3a2356c25bf2adc">ARM_MPU_RASR</a>(1UL, ARM_MPU_AP_FULL, 0UL, 0UL, 1UL, 1UL, 0x00UL, ARM_MPU_REGION_SIZE_32KB) },</div>
517 <div class="line"> { .RBAR = <a class="code hl_define" href="group__mpu__functions.html#ga3fead12dc24a6d00ad53f55a042486ca">ARM_MPU_RBAR</a>(6UL, 0x50020000UL), .RASR = <a class="code hl_define" href="group__mpu__functions.html#ga96b93785c92e2dbcb3a2356c25bf2adc">ARM_MPU_RASR</a>(1UL, ARM_MPU_AP_FULL, 2UL, 0UL, 0UL, 0UL, 0x00UL, ARM_MPU_REGION_SIZE_8KB) }, </div>
518 <div class="line"> { .RBAR = <a class="code hl_define" href="group__mpu__functions.html#ga3fead12dc24a6d00ad53f55a042486ca">ARM_MPU_RBAR</a>(7UL, 0x50022000UL), .RASR = <a class="code hl_define" href="group__mpu__functions.html#ga96b93785c92e2dbcb3a2356c25bf2adc">ARM_MPU_RASR</a>(1UL, ARM_MPU_AP_FULL, 2UL, 0UL, 0UL, 0UL, 0xC0UL, ARM_MPU_REGION_SIZE_4KB) }</div>
519 <div class="line"> }</div>
520 <div class="line">};</div>
521 <div class="line"> </div>
522 <div class="line"><span class="keywordtype">void</span> UpdateMpu(uint32_t idx)</div>
523 <div class="line">{</div>
524 <div class="line"> <a class="code hl_function" href="group__mpu__functions.html#gafa27b26d5847fa8e465584e376b6078a">ARM_MPU_Load</a>(mpuTable[idx], 4);</div>
525 <div class="line">}</div>
526 <div class="ttc" id="agroup__mpu__functions_html_ga3fead12dc24a6d00ad53f55a042486ca"><div class="ttname"><a href="group__mpu__functions.html#ga3fead12dc24a6d00ad53f55a042486ca">ARM_MPU_RBAR</a></div><div class="ttdeci">#define ARM_MPU_RBAR(Region, BaseAddress)</div><div class="ttdoc">MPU Region Base Address Register Value.</div><div class="ttdef"><b>Definition:</b> Ref_MPU.txt:41</div></div>
527 <div class="ttc" id="agroup__mpu__functions_html_gafa27b26d5847fa8e465584e376b6078a"><div class="ttname"><a href="group__mpu__functions.html#gafa27b26d5847fa8e465584e376b6078a">ARM_MPU_Load</a></div><div class="ttdeci">__STATIC_INLINE void ARM_MPU_Load(MPU_Region_t const *table, uint32_t cnt)</div></div>
528 <div class="ttc" id="astructARM__MPU__Region__t_html"><div class="ttname"><a href="structARM__MPU__Region__t.html">ARM_MPU_Region_t</a></div><div class="ttdoc">Setup information of a single MPU Region.</div><div class="ttdef"><b>Definition:</b> Ref_MPU.txt:84</div></div>
529 <div class="ttc" id="astructARM__MPU__Region__t_html_afe7a7721aa08988d915670efa432cdd2"><div class="ttname"><a href="structARM__MPU__Region__t.html#afe7a7721aa08988d915670efa432cdd2">ARM_MPU_Region_t::RBAR</a></div><div class="ttdeci">uint32_t RBAR</div><div class="ttdoc">The region base address register value (RBAR)</div><div class="ttdef"><b>Definition:</b> Ref_MPU.txt:85</div></div>
530 </div><!-- fragment -->
533 <a id="gac1a949403bf84eecaf407003fb553ae7" name="gac1a949403bf84eecaf407003fb553ae7"></a>
534 <h2 class="memtitle"><span class="permalink"><a href="#gac1a949403bf84eecaf407003fb553ae7">◆ </a></span>ARM_MPU_OrderedMemcpy()</h2>
536 <div class="memitem">
537 <div class="memproto">
538 <table class="memname">
540 <td class="memname"><a class="el" href="group__compiler__conntrol__gr.html#gaba87361bfad2ae52cfe2f40c1a1dbf9c">__STATIC_INLINE</a> void ARM_MPU_OrderedMemcpy </td>
542 <td class="paramtype">volatile uint32_t * </td>
543 <td class="paramname"><em>dst</em>, </td>
546 <td class="paramkey"></td>
548 <td class="paramtype">const uint32_t *<a class="el" href="group__compiler__conntrol__gr.html#ga378ac21329d33f561f90265eef89f564">__RESTRICT</a> </td>
549 <td class="paramname"><em>src</em>, </td>
552 <td class="paramkey"></td>
554 <td class="paramtype">uint32_t </td>
555 <td class="paramname"><em>len</em> </td>
563 </div><div class="memdoc">
564 <p>Memcpy with strictly ordered memory access, e.g. used by code in <a class="el" href="group__mpu__functions.html#gafa27b26d5847fa8e465584e376b6078a">ARM_MPU_Load</a>. </p><dl class="params"><dt>Parameters</dt><dd>
565 <table class="params">
566 <tr><td class="paramname">dst</td><td>Destination data is copied to. </td></tr>
567 <tr><td class="paramname">src</td><td>Source data is copied from. </td></tr>
568 <tr><td class="paramname">len</td><td>Amount of data words to be copied. </td></tr>
575 <a id="ga16931f9ad84d7289e8218e169ae6db5d" name="ga16931f9ad84d7289e8218e169ae6db5d"></a>
576 <h2 class="memtitle"><span class="permalink"><a href="#ga16931f9ad84d7289e8218e169ae6db5d">◆ </a></span>ARM_MPU_SetRegion()</h2>
578 <div class="memitem">
579 <div class="memproto">
580 <table class="memname">
582 <td class="memname"><a class="el" href="group__compiler__conntrol__gr.html#gaba87361bfad2ae52cfe2f40c1a1dbf9c">__STATIC_INLINE</a> void ARM_MPU_SetRegion </td>
584 <td class="paramtype">uint32_t </td>
585 <td class="paramname"><em>rbar</em>, </td>
588 <td class="paramkey"></td>
590 <td class="paramtype">uint32_t </td>
591 <td class="paramname"><em>rasr</em> </td>
599 </div><div class="memdoc">
600 <p>Configure an MPU region.</p>
601 <p>The region number should be contained in the rbar value.</p>
602 <dl class="params"><dt>Parameters</dt><dd>
603 <table class="params">
604 <tr><td class="paramname">rbar</td><td>Value for <a class="el" href="structMPU__Type.html#a990c609b26d990b8ba832b110adfd353">RBAR</a> register. </td></tr>
605 <tr><td class="paramname">rasr</td><td>Value for <a class="el" href="structMPU__Type.html#a8f00c4a5e31b0a8d103ed3b0732c17a3">RASR</a> register. </td></tr>
612 <a id="ga042ba1a6a1a58795231459ac0410b809" name="ga042ba1a6a1a58795231459ac0410b809"></a>
613 <h2 class="memtitle"><span class="permalink"><a href="#ga042ba1a6a1a58795231459ac0410b809">◆ </a></span>ARM_MPU_SetRegionEx()</h2>
615 <div class="memitem">
616 <div class="memproto">
617 <table class="memname">
619 <td class="memname"><a class="el" href="group__compiler__conntrol__gr.html#gaba87361bfad2ae52cfe2f40c1a1dbf9c">__STATIC_INLINE</a> void ARM_MPU_SetRegionEx </td>
621 <td class="paramtype">uint32_t </td>
622 <td class="paramname"><em>rnr</em>, </td>
625 <td class="paramkey"></td>
627 <td class="paramtype">uint32_t </td>
628 <td class="paramname"><em>rbar</em>, </td>
631 <td class="paramkey"></td>
633 <td class="paramtype">uint32_t </td>
634 <td class="paramname"><em>rasr</em> </td>
642 </div><div class="memdoc">
643 <p>Configure the given MPU region. </p><dl class="params"><dt>Parameters</dt><dd>
644 <table class="params">
645 <tr><td class="paramname">rnr</td><td>Region number to be configured. </td></tr>
646 <tr><td class="paramname">rbar</td><td>Value for <a class="el" href="structMPU__Type.html#a990c609b26d990b8ba832b110adfd353">RBAR</a> register. </td></tr>
647 <tr><td class="paramname">rasr</td><td>Value for <a class="el" href="structMPU__Type.html#a8f00c4a5e31b0a8d103ed3b0732c17a3">RASR</a> register. </td></tr>
654 </div><!-- contents -->
655 </div><!-- doc-content -->
656 <!-- start footer part -->
657 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
660 <script type="text/javascript">
662 writeFooter.call(this);