summaryrefslogtreecommitdiff
path: root/docs/RTOS2/html/index.html
blob: 97e96b76c1a8d46e52a876aaf35d05a557c8da1b (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
<!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>Main Page</title>
<title>CMSIS-RTOS2: Main Page</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-RTOS2
   &#160;<span id="projectnumber">Version 2.1.3</span>
   </div>
   <div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation</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 class="current"><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>
      <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('index.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">&#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>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</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-RTOS2 Documentation</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The <b>CMSIS-RTOS v2 (CMSIS-RTOS2)</b> provides generic RTOS interfaces for Arm&reg; Cortex&reg; processor-based devices. It provides a standardized API for software components that require RTOS functionality and gives therefore serious benefits to the users and the software industry:</p>
<ul>
<li>CMSIS-RTOS2 provides basic features that are required in many applications.</li>
<li>The unified feature set of the CMSIS-RTOS2 reduces learning efforts and simplifies sharing of software components.</li>
<li>Middleware components that use the CMSIS-RTOS2 are RTOS agnostic and are easier to adapt.</li>
<li>Standard project templates of the CMSIS-RTOS2 may be shipped with freely available CMSIS-RTOS2 implementations.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>The CMSIS-RTOS API Version 2 defines a minimum feature set. Implementations with extended features may be provided by the RTOS vendors.</dd></dl>
<p>The CMSIS-RTOS2 manages the resources of the microcontroller system and implements the concept of parallel threads that run concurrently.</p>
<p>Applications frequently require several concurrent activities. CMSIS-RTOS2 can manage multiple concurrent activities at the time when they are needed. Each activity gets a separate thread which executes a specific task and this simplifies the overall program structure. The CMSIS-RTOS2 system is scalable and additional threads can be added easily at a later time. Threads have a priority allowing faster execution of time-critical parts of a user application.</p>
<p>The CMSIS-RTOS2 offers services needed in many real-time applications, for example, periodical activation of timer functions, memory management, and message exchange between threads with time limits.</p>
<p>The CMSIS-RTOS2 addresses the following new requirements:</p>
<ul>
<li>Dynamic object creation no longer requires static memory, static memory buffers are now optional.</li>
<li>Support for Armv8-M architecture that provides a secure and non-secure state of code execution.</li>
<li>Provisions for message passing in multi-core systems.</li>
<li>Full support of C++ run-time environments.</li>
<li>C interface which is binary compatible across <a href="http://infocenter.arm.com/help/topic/com.arm.doc.subset.swdev.abi/index.html">ABI compatible compilers</a>.</li>
</ul>
<p>As a consequence of these requirements the CMSIS-RTOS2 has the following fundamental modifications:</p>
<ul>
<li>The functions osXxxxNew replace osXxxxCreate functions; osXxxxNew and osXxxxDelete create and destroy objects.</li>
<li>The C function <code>main</code> is no longer started as a thread (this was an optional feature in CMSIS-RTOS v1).</li>
<li>Functions that return osEvent have been replaced.</li>
</ul>
<p>CMSIS-RTOS2 provides an translation layer to <a href="../../RTOS/html/index.html" class="el">CMSIS-RTOS v1</a>. It is possible to intermix <a class="el" href="rtos_api2.html">CMSIS-RTOS C API v2</a> and <a href="../../RTOS/html/functionOverview.html" class="el">CMSIS-RTOS C API v1</a> within the same application. Over time, you may migrate to the new API as explained in <a class="el" href="os2Migration.html">Migration from API v1 to API v2</a>.</p>
<p>CMSIS-RTOS2 is not POSIX compliant, but has provisions to enable a C++11/C++14 interface.</p>
<p>The following sections provide further details about CMSIS-RTOS2 and the RTX reference implementation.</p>
<ul>
<li><a class="el" href="rtos_revisionHistory.html">Revision History</a> documents changes made in each version for CMSIS-RTOS v2 and RTX v5.</li>
<li><a class="el" href="genRTOS2IF.html">Generic RTOS Interface</a> provides an overview about the APIs available with CMSIS-RTOS v2.</li>
<li><a class="el" href="functionOverview.html">Function Overview</a> lists the CMSIS-RTOS2 API functions and the header file cmsis_os2.h.</li>
<li><a class="el" href="rtosValidation.html">RTOS Validation</a> describes the validation suite that is publicly available.</li>
<li><a class="el" href="os2Migration.html">Migration from API v1 to API v2</a> shows how to use CMSIS-RTOS2 in existing projects and lists function differences to CMSIS-RTOS v1.</li>
<li><a class="el" href="rtx5_impl.html">RTX v5 Implementation</a> provides general information about the operation and usage of RTX v5.</li>
</ul>
<hr/>
<h2>CMSIS-RTOS2 in ARM::CMSIS Pack </h2>
<p><a class="anchor" id="directory"></a> The following files relevant to CMSIS-RTOS2 are present in the <b>ARM::CMSIS</b> Pack directories: </p>
<table class="doxtable">
<tr>
<th align="left">Directory </th><th align="left">Content  </th></tr>
<tr>
<td align="left"><b>CMSIS/Documentation/RTOS2</b> </td><td align="left">This documentation </td></tr>
<tr>
<td align="left"><b>CMSIS/RTOS2/Include</b> </td><td align="left"><a class="el" href="genRTOS2IF.html#cmsis_os2_h">cmsis_os2.h header file</a> </td></tr>
<tr>
<td align="left"><b>CMSIS/RTOS2/RTX</b> </td><td align="left">CMSIS-RTOS2 reference implementation based on RTX version 5 </td></tr>
<tr>
<td align="left"><b>CMSIS/RTOS2/Source</b> </td><td align="left">Generic <b>OS tick</b> implementations for various processors based on <a class="el" href="rtos_os_tick_api.html">OS Tick API</a> </td></tr>
<tr>
<td align="left"><b>CMSIS/RTOS2/Template</b> </td><td align="left">Compatibility layer to <a href="../../RTOS/html/index.html" class="el">CMSIS-RTOS v1</a> </td></tr>
</table>
</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:46 for CMSIS-RTOS2 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>