blob: 24643bb625b58357d050b0b3a4a18439ad6b3e22 [file] [log] [blame]
Kévin Redon69b92d92019-01-24 16:39:20 +01001<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head>
4<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6<title>Overview</title>
Kévin Redon0bc0d742019-04-17 02:19:12 +02007<title>CMSIS-Core (Cortex-M): Overview</title>
Kévin Redon69b92d92019-01-24 16:39:20 +01008<link href="tabs.css" rel="stylesheet" type="text/css"/>
9<link href="cmsis.css" rel="stylesheet" type="text/css" />
10<script type="text/javascript" src="jquery.js"></script>
11<script type="text/javascript" src="dynsections.js"></script>
12<script type="text/javascript" src="printComponentTabs.js"></script>
13<link href="navtree.css" rel="stylesheet" type="text/css"/>
14<script type="text/javascript" src="resize.js"></script>
15<script type="text/javascript" src="navtree.js"></script>
16<script type="text/javascript">
17 $(document).ready(initResizable);
18 $(window).load(resizeHeight);
19</script>
20<link href="search/search.css" rel="stylesheet" type="text/css"/>
21<script type="text/javascript" src="search/search.js"></script>
22<script type="text/javascript">
23 $(document).ready(function() { searchBox.OnSelectItem(0); });
24</script>
25</head>
26<body>
27<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
28<div id="titlearea">
29<table cellspacing="0" cellpadding="0">
30 <tbody>
31 <tr style="height: 46px;">
32 <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
33 <td style="padding-left: 0.5em;">
Kévin Redon0bc0d742019-04-17 02:19:12 +020034 <div id="projectname">CMSIS-Core (Cortex-M)
35 &#160;<span id="projectnumber">Version 5.1.2</span>
Kévin Redon69b92d92019-01-24 16:39:20 +010036 </div>
Kévin Redon0bc0d742019-04-17 02:19:12 +020037 <div id="projectbrief">CMSIS-Core support for Cortex-M processor-based devices</div>
Kévin Redon69b92d92019-01-24 16:39:20 +010038 </td>
39 </tr>
40 </tbody>
41</table>
42</div>
43<!-- end header part -->
44<div id="CMSISnav" class="tabs1">
45 <ul class="tablist">
46 <script type="text/javascript">
47 <!--
48 writeComponentTabs.call(this);
49 //-->
50 </script>
51 </ul>
52</div>
53<!-- Generated by Doxygen 1.8.6 -->
54<script type="text/javascript">
55var searchBox = new SearchBox("searchBox", "search",false,'Search');
56</script>
57 <div id="navrow1" class="tabs">
58 <ul class="tablist">
59 <li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
60 <li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
61 <li><a href="modules.html"><span>Reference</span></a></li>
62 <li>
63 <div id="MSearchBox" class="MSearchBoxInactive">
64 <span class="left">
65 <img id="MSearchSelect" src="search/mag_sel.png"
66 onmouseover="return searchBox.OnSearchSelectShow()"
67 onmouseout="return searchBox.OnSearchSelectHide()"
68 alt=""/>
69 <input type="text" id="MSearchField" value="Search" accesskey="S"
70 onfocus="searchBox.OnSearchFieldFocus(true)"
71 onblur="searchBox.OnSearchFieldFocus(false)"
72 onkeyup="searchBox.OnSearchFieldChange(event)"/>
73 </span><span class="right">
74 <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
75 </span>
76 </div>
77 </li>
78 </ul>
79 </div>
80</div><!-- top -->
81<div id="side-nav" class="ui-resizable side-nav-resizable">
82 <div id="nav-tree">
83 <div id="nav-tree-contents">
84 <div id="nav-sync" class="sync"></div>
85 </div>
86 </div>
87 <div id="splitbar" style="-moz-user-select:none;"
88 class="ui-resizable-handle">
89 </div>
90</div>
91<script type="text/javascript">
92$(document).ready(function(){initNavTree('index.html','');});
93</script>
94<div id="doc-content">
95<!-- window showing the filter options -->
96<div id="MSearchSelectWindow"
97 onmouseover="return searchBox.OnSearchSelectShow()"
98 onmouseout="return searchBox.OnSearchSelectHide()"
99 onkeydown="return searchBox.OnSearchSelectKey(event)">
100<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Pages</a></div>
101
102<!-- iframe showing the search results (closed by default) -->
103<div id="MSearchResultsWindow">
104<iframe src="javascript:void(0)" frameborder="0"
105 name="MSearchResults" id="MSearchResults">
106</iframe>
107</div>
108
109<div class="header">
110 <div class="headertitle">
111<div class="title">Overview </div> </div>
112</div><!--header-->
113<div class="contents">
Kévin Redon0bc0d742019-04-17 02:19:12 +0200114<div class="textblock"><p>CMSIS-Core (Cortex-M) implements the basic run-time system for a Cortex-M device and gives the user access to the processor core and the device peripherals. In detail it defines:</p>
Kévin Redon69b92d92019-01-24 16:39:20 +0100115<ul>
116<li><b>Hardware Abstraction Layer (HAL)</b> for Cortex-M processor registers with standardized definitions for the SysTick, NVIC, System Control Block registers, MPU registers, FPU registers, and core access functions.</li>
117<li><b>System exception names</b> to interface to system exceptions without having compatibility issues.</li>
118<li><b>Methods to organize header files</b> that makes it easy to learn new Cortex-M microcontroller products and improve software portability. This includes naming conventions for device-specific interrupts.</li>
119<li><b>Methods for system initialization</b> to be used by each MCU vendor. For example, the standardized <a class="el" href="group__system__init__gr.html#ga93f514700ccf00d08dbdcff7f1224eb2" title="Function to Initialize the system. ">SystemInit()</a> function is essential for configuring the clock system of the device.</li>
120<li><b>Intrinsic functions</b> used to generate CPU instructions that are not supported by standard C functions.</li>
121<li>A variable to determine the <b>system clock frequency</b> which simplifies the setup the SysTick timer.</li>
122</ul>
Kévin Redon0bc0d742019-04-17 02:19:12 +0200123<p>The following sections provide details about the CMSIS-Core (Cortex-M):</p>
Kévin Redon69b92d92019-01-24 16:39:20 +0100124<ul>
125<li><a class="el" href="using_pg.html">Using CMSIS in Embedded Applications</a> describes the project setup and shows a simple program example.</li>
Kévin Redon0bc0d742019-04-17 02:19:12 +0200126<li><a class="el" href="using_TrustZone_pg.html">Using TrustZone&reg; for Armv8-M</a> describes how to use the security extensions available in the Armv8-M architecture.</li>
127<li><a class="el" href="templates_pg.html">CMSIS-Core Device Templates</a> describes the files of the CMSIS-Core (Cortex-M) in detail and explains how to adapt template files provided by Arm to silicon vendor devices.</li>
Kévin Redon69b92d92019-01-24 16:39:20 +0100128<li><a class="el" href="coreMISRA_Exceptions_pg.html">MISRA-C Deviations</a> describes the violations to the MISRA standard.</li>
129<li><a href="Modules.html"><b>Reference</b> </a> describe the features and functions of the <a class="el" href="device_h_pg.html">Device Header File &lt;device.h&gt;</a> in detail.</li>
130<li><a href="Annotated.html"><b>Data</b> <b>Structures</b> </a> describe the data structures of the <a class="el" href="device_h_pg.html">Device Header File &lt;device.h&gt;</a> in detail.</li>
131</ul>
132<hr/>
Kévin Redon0bc0d742019-04-17 02:19:12 +0200133<h2>CMSIS-Core (Cortex-M) in ARM::CMSIS Pack </h2>
134<p>Files relevant to CMSIS-Core (Cortex-M) are present in the following <b>ARM::CMSIS</b> directories: </p>
Kévin Redon69b92d92019-01-24 16:39:20 +0100135<table class="doxtable">
136<tr>
137<th>File/Folder </th><th>Content </th></tr>
138<tr>
139<td><b>CMSIS\Documentation\Core</b> </td><td>This documentation </td></tr>
140<tr>
Kévin Redon0bc0d742019-04-17 02:19:12 +0200141<td><b>CMSIS\Core\Include</b> </td><td>CMSIS-Core (Cortex-M) header files (for example core_cm3.h, core_cmInstr.h, etc.) </td></tr>
Kévin Redon69b92d92019-01-24 16:39:20 +0100142<tr>
Kévin Redon0bc0d742019-04-17 02:19:12 +0200143<td><b>Device</b> </td><td><a class="el" href="using_ARM_pg.html">Arm reference implementations</a> of Cortex-M devices </td></tr>
Kévin Redon69b92d92019-01-24 16:39:20 +0100144<tr>
145<td><b>Device\_Template_Vendor</b> </td><td><a class="el" href="templates_pg.html">CMSIS-Core Device Templates</a> for extension by silicon vendors </td></tr>
146</table>
147<hr/>
148<h1><a class="anchor" id="ref_v6-v8M"></a>
149Processor Support</h1>
Kévin Redon0bc0d742019-04-17 02:19:12 +0200150<p>CMSIS supports the complete range of <a href="http://www.arm.com/products/processors/cortex-m/index.php" target="_blank"><b>Cortex-M processors</b></a> (with exception of Cortex-M1) and the <a href="http://www.arm.com/products/processors/instruction-set-architectures/armv8-m-architecture.php" target="_blank"><b>Armv8-M architecture</b></a> including security extensions.</p>
Kévin Redon69b92d92019-01-24 16:39:20 +0100151<h2><a class="anchor" id="ref_man_sec"></a>
152Cortex-M Reference Manuals</h2>
Kévin Redon0bc0d742019-04-17 02:19:12 +0200153<p>The Cortex-M Device Generic User Guides contain the programmers model and detailed information about the core peripherals and are available for:</p>
Kévin Redon69b92d92019-01-24 16:39:20 +0100154<ul>
Kévin Redon0bc0d742019-04-17 02:19:12 +0200155<li><a href="http://infocenter.arm.com/help/topic/com.arm.doc.dui0497a/DUI0497A_cortex_m0_r0p0_generic_ug.pdf" target="_blank"><b>Cortex-M0 Devices Generic User Guide</b></a> (Armv6-M architecture)</li>
156<li><a href="http://infocenter.arm.com/help/topic/com.arm.doc.dui0662b/DUI0662B_cortex_m0p_r0p1_dgug.pdf" target="_blank"><b>Cortex-M0+ Devices Generic User Guide</b></a> (Armv6-M architecture)</li>
157<li><a href="http://infocenter.arm.com/help/topic/com.arm.doc.dui0552a/DUI0552A_cortex_m3_dgug.pdf" target="_blank"><b>Cortex-M3 Devices Generic User Guide</b></a> (Armv7-M architecture)</li>
Kévin Redon69b92d92019-01-24 16:39:20 +0100158<li><a href="http://infocenter.arm.com/help/topic/com.arm.doc.dui0553a/DUI0553A_cortex_m4_dgug.pdf" target="_blank"><b>Cortex-M4 Devices Generic User Guide</b></a> (ARMv7-M architecture)</li>
Kévin Redon0bc0d742019-04-17 02:19:12 +0200159<li><a href="http://infocenter.arm.com/help/topic/com.arm.doc.dui0646a/DUI0646A_cortex_m7_dgug.pdf" target="_blank"><b>Cortex-M7 Devices Generic User Guide</b></a> (Armv7-M architecture)</li>
Kévin Redon69b92d92019-01-24 16:39:20 +0100160</ul>
Kévin Redon0bc0d742019-04-17 02:19:12 +0200161<p>The <b>Cortex-M23</b> and <b>Cortex-M33</b> are described with Technical Reference Manuals that are available here:</p>
162<ul>
163<li><a href="http://infocenter.arm.com/help/topic/com.arm.doc.ddi0550c/cortex_m23_r1p0_technical_reference_manual_DDI0550C_en.pdf" target="_blank"><b>Cortex-M23 Technical Reference Manual</b></a> (Armv8-M baseline architecture)</li>
164<li><a href="http://infocenter.arm.com/help/topic/com.arm.doc.100230_0002_00_en/cortex_m33_trm_100230_0002_00_en.pdf" target="_blank"><b>Cortex-M33 Technical Reference Manual</b></a> (Armv8-M mainline architecture)</li>
165</ul>
Kévin Redon69b92d92019-01-24 16:39:20 +0100166<h2><a class="anchor" id="ARMv8M"></a>
Kévin Redon0bc0d742019-04-17 02:19:12 +0200167Armv8-M Architecture</h2>
168<p>Armv8-M introduces two profiles <b>baseline</b> (for power and area constrained applications) and <b>mainline</b> (full-featured with optional SIMD, floating-point, and co-processor extensions). Both Armv8-M profiles are supported by CMSIS.</p>
169<p>The Armv8-M Architecture is described in the <a href="http://developer.arm.com/products/architecture/m-profile/docs/ddi0553/latest/armv8-m-architecture-reference-manual" target="_blank"><b>Armv8-M Architecture Reference Manual</b></a>.</p>
Kévin Redon69b92d92019-01-24 16:39:20 +0100170<hr/>
171<h1><a class="anchor" id="tested_tools_sec"></a>
172Tested and Verified Toolchains</h1>
Kévin Redon0bc0d742019-04-17 02:19:12 +0200173<p>The <a class="el" href="templates_pg.html">CMSIS-Core Device Templates</a> supplied by Arm have been tested and verified with the following toolchains:</p>
Kévin Redon69b92d92019-01-24 16:39:20 +0100174<ul>
Kévin Redon0bc0d742019-04-17 02:19:12 +0200175<li>Arm: Arm Compiler 5.06 update 6 (not for Cortex-M23, Cortex-M33, Armv8-M)</li>
176<li>Arm: Arm Compiler 6.9</li>
177<li>Arm: Arm Compiler 6.6.2 (not for Cortex-M0, Cortex-M23, Cortex-M33, Armv8-M)</li>
178<li>GNU: GNU Tools for Arm Embedded 6.3.1 20170620</li>
179<li>IAR: IAR ANSI C/C++ Compiler for Arm 8.20.1.14183</li>
Kévin Redon69b92d92019-01-24 16:39:20 +0100180</ul>
181<hr/>
182 </div></div><!-- contents -->
183</div><!-- doc-content -->
184<!-- start footer part -->
185<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
186 <ul>
Kévin Redon0bc0d742019-04-17 02:19:12 +0200187 <li class="footer">Generated on Wed Aug 1 2018 17:12:09 for CMSIS-Core (Cortex-M) by Arm Ltd. All rights reserved.
Kévin Redon69b92d92019-01-24 16:39:20 +0100188 <!--
189 <a href="http://www.doxygen.org/index.html">
190 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
191 -->
192 </li>
193 </ul>
194</div>
195</body>
196</html>