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-RTOS2: Stack Requirements</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-RTOS2
47  <span id="projectnumber"><script type="text/javascript">
49 writeHeader.call(this);
50 writeVersionDropdown.call(this, "CMSIS-RTOS2");
55 <div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation</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 <!-- Generated by Doxygen 1.9.6 -->
83 <script type="text/javascript">
84 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
85 var searchBox = new SearchBox("searchBox", "search/",'.html');
89 <div id="side-nav" class="ui-resizable side-nav-resizable">
91 <div id="nav-tree-contents">
92 <div id="nav-sync" class="sync"></div>
95 <div id="splitbar" style="-moz-user-select:none;"
96 class="ui-resizable-handle">
99 <script type="text/javascript">
100 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
101 $(document).ready(function(){initNavTree('pStackRequirements.html',''); initResizable(); });
104 <div id="doc-content">
105 <!-- window showing the filter options -->
106 <div id="MSearchSelectWindow"
107 onmouseover="return searchBox.OnSearchSelectShow()"
108 onmouseout="return searchBox.OnSearchSelectHide()"
109 onkeydown="return searchBox.OnSearchSelectKey(event)">
112 <!-- iframe showing the search results (closed by default) -->
113 <div id="MSearchResultsWindow">
114 <div id="MSearchResults">
117 <div id="SRResults"></div>
118 <div class="SRStatus" id="Loading">Loading...</div>
119 <div class="SRStatus" id="Searching">Searching...</div>
120 <div class="SRStatus" id="NoMatches">No Matches</div>
126 <div><div class="header">
127 <div class="headertitle"><div class="title">Stack Requirements </div></div>
129 <div class="contents">
130 <div class="textblock"><p>Keil RTX v5 kernel functions are executed in handler mode (using PendSV/SysTick/SVC) and the tables below lists the maximum stack requirements for the Main Stack (MSP) that the user should consider.</p>
131 <p>The stack for the <a class="el" href="group__CMSIS__RTOS__KernelCtrl.html#ga9ae2cc00f0d89d7b6a307bba942b5221">osKernelStart</a> function is referred as "Startup" and RTX v5 uses 32 bytes (with Arm Compiler). However the user should also consider additional stack that might be allocated by the 'main' function of the embedded application. The following picture shows a worst-case memory allocation of the Main Stack.</p>
133 <img src="KernelStackUsage.png" alt=""/>
134 <div class="caption">
135 Main Stack usage of RTX v5 applications</div></div>
136 <p>The stack requirements depend on the compiler and the optimization level. RTX v5 supports event annotations and this configuration impacts also the stack requirement.</p>
137 <p><b>Arm Compiler ARMCC V6.10</b>: Main Stack requirements for PendSV/SysTick/SVC</p>
138 <table class="markdownTable">
139 <tr class="markdownTableHead">
140 <th class="markdownTableHeadLeft">Optimization </th><th class="markdownTableHeadLeft">RTX Kernel </th><th class="markdownTableHeadLeft">RTX Kernel + Event Recorder </th></tr>
141 <tr class="markdownTableRowOdd">
142 <td class="markdownTableBodyLeft">-O1 (Debug) </td><td class="markdownTableBodyLeft">152 bytes </td><td class="markdownTableBodyLeft">280 bytes </td></tr>
143 <tr class="markdownTableRowEven">
144 <td class="markdownTableBodyLeft">-Os (Balanced) </td><td class="markdownTableBodyLeft">120 bytes </td><td class="markdownTableBodyLeft">256 bytes </td></tr>
145 <tr class="markdownTableRowOdd">
146 <td class="markdownTableBodyLeft">-Oz (Size) </td><td class="markdownTableBodyLeft">112 bytes </td><td class="markdownTableBodyLeft">248 bytes </td></tr>
148 <p><b>Arm Compiler ARMCC V5.06</b>: Main Stack requirements for PendSV/SysTick/SVC</p>
149 <table class="markdownTable">
150 <tr class="markdownTableHead">
151 <th class="markdownTableHeadLeft">Optimization </th><th class="markdownTableHeadLeft">RTX Kernel </th><th class="markdownTableHeadLeft">RTX Kernel + Event Recorder </th></tr>
152 <tr class="markdownTableRowOdd">
153 <td class="markdownTableBodyLeft">-O0 (Debug) </td><td class="markdownTableBodyLeft">176 bytes </td><td class="markdownTableBodyLeft">360 bytes </td></tr>
154 <tr class="markdownTableRowEven">
155 <td class="markdownTableBodyLeft">-O1 </td><td class="markdownTableBodyLeft">112 bytes </td><td class="markdownTableBodyLeft">248 bytes </td></tr>
156 <tr class="markdownTableRowOdd">
157 <td class="markdownTableBodyLeft">-O2 </td><td class="markdownTableBodyLeft">112 bytes </td><td class="markdownTableBodyLeft">256 bytes </td></tr>
158 <tr class="markdownTableRowEven">
159 <td class="markdownTableBodyLeft">-O3 </td><td class="markdownTableBodyLeft">112 bytes </td><td class="markdownTableBodyLeft">248 bytes </td></tr>
161 </div></div><!-- contents -->
162 </div><!-- PageDoc -->
163 </div><!-- doc-content -->
164 <!-- start footer part -->
165 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
168 <script type="text/javascript">
170 writeFooter.call(this);