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-Toolbox: CMSIS-Toolbox</title>
9 <link href="doxygen.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="tabs.js"></script>
13 <script type="text/javascript" src="footer.js"></script>
14 <script type="text/javascript" src="navtree.js"></script>
15 <link href="navtree.css" rel="stylesheet" type="text/css"/>
16 <script type="text/javascript" src="resize.js"></script>
17 <script type="text/javascript" src="navtreedata.js"></script>
18 <script type="text/javascript" src="navtree.js"></script>
19 <link href="search/search.css" rel="stylesheet" type="text/css"/>
20 <script type="text/javascript" src="search/searchdata.js"></script>
21 <script type="text/javascript" src="search/search.js"></script>
22 <script type="text/javascript">
23 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
24 $(document).ready(function() { init_search(); });
27 <script type="text/javascript" src="darkmode_toggle.js"></script>
28 <link href="extra_stylesheet.css" rel="stylesheet" type="text/css"/>
29 <link href="extra_navtree.css" rel="stylesheet" type="text/css"/>
30 <link href="extra_search.css" rel="stylesheet" type="text/css"/>
31 <link href="extra_tabs.css" rel="stylesheet" type="text/css"/>
32 <link href="version.css" rel="stylesheet" type="text/css"/>
33 <script type="text/javascript" src="../../version.js"></script>
36 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
38 <table cellspacing="0" cellpadding="0">
40 <tr style="height: 55px;">
41 <td id="projectlogo" style="padding: 1.5em;"><img alt="Logo" src="cmsis_logo_white_small.png"/></td>
42 <td style="padding-left: 1em; padding-bottom: 1em;padding-top: 1em;">
43 <div id="projectname">CMSIS-Toolbox
45 <div id="projectbrief">Command line tools for project build with packs</div>
47 <td> <div id="MSearchBox" class="MSearchBoxInactive">
49 <span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()"> </span>
50 <input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
51 onfocus="searchBox.OnSearchFieldFocus(true)"
52 onblur="searchBox.OnSearchFieldFocus(false)"
53 onkeyup="searchBox.OnSearchFieldChange(event)"/>
54 </span><span class="right">
55 <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
59 <!--END !PROJECT_NAME-->
64 <!-- end header part -->
65 <div id="CMSISnav" class="tabs1">
67 <script type="text/javascript">
68 writeComponentTabs.call(this);
72 <script type="text/javascript">
73 writeSubComponentTabs.call(this);
75 <!-- Generated by Doxygen 1.9.6 -->
76 <script type="text/javascript">
77 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
78 var searchBox = new SearchBox("searchBox", "search/",'.html');
82 <div id="side-nav" class="ui-resizable side-nav-resizable">
84 <div id="nav-tree-contents">
85 <div id="nav-sync" class="sync"></div>
88 <div id="splitbar" style="-moz-user-select:none;"
89 class="ui-resizable-handle">
92 <script type="text/javascript">
93 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
94 $(document).ready(function(){initNavTree('index.html',''); initResizable(); });
97 <div id="doc-content">
98 <!-- window showing the filter options -->
99 <div id="MSearchSelectWindow"
100 onmouseover="return searchBox.OnSearchSelectShow()"
101 onmouseout="return searchBox.OnSearchSelectHide()"
102 onkeydown="return searchBox.OnSearchSelectKey(event)">
105 <!-- iframe showing the search results (closed by default) -->
106 <div id="MSearchResultsWindow">
107 <div id="MSearchResults">
110 <div id="SRResults"></div>
111 <div class="SRStatus" id="Loading">Loading...</div>
112 <div class="SRStatus" id="Searching">Searching...</div>
113 <div class="SRStatus" id="NoMatches">No Matches</div>
119 <div><div class="header">
120 <div class="headertitle"><div class="title">CMSIS-Toolbox </div></div>
122 <div class="contents">
123 <div class="textblock"><p><a class="anchor" id="mainpage"></a> The <b>CMSIS-Toolbox</b> is developed as part of the <a href="https://www.open-cmsis-pack.org/">Open-CMSIS-Pack</a> project in collaboration with Arm, NXP, and STMicroelectronics. It is an integral part of next generation software tools and unifies development flows with popular embedded toolchains (Arm, GCC, IAR, and LLVM compiler).</p>
124 <p>The CMSIS-Toolbox provides command-line tools for:</p>
126 <li>Project creation and build of embedded applications utilizing <a href="https://www.keil.arm.com/packs/">Software Packs</a> with support for multiple compilation tools.</li>
127 <li>Software Pack creation, maintenance, and distribution utilizing the <a href="https://open-cmsis-pack.github.io/Open-CMSIS-Pack-Spec/main/html/index.html">CMSIS-Pack format</a>.</li>
129 <h1><a class="anchor" id="autotoc_md0"></a>
130 Access to CMSIS-Toolbox</h1>
131 <p>CMSIS-Toolbox is actively maintained in a dedicated GitHub repository and released as a set of binary utilities.</p>
133 <li><a href="https://github.com/Open-CMSIS-Pack/cmsis-toolbox/blob/main/docs/README.md"><b>CMSIS-Toolbox User Guide</b></a> - provides user documentation for the CMSIS-Toolbox.</li>
134 <li><a href="https://artifacts.keil.arm.com/cmsis-toolbox/"><b>CMSIS-Toolbox Artifacts</b></a> - pre-built utilities for integration into IDEs and CI workflows.</li>
135 <li><a href="https://github.com/Open-CMSIS-Pack/cmsis-toolbox"><b>CMSIS-Toolbox GitHub Repo</b></a> - contains the source code and releases.</li>
137 <h1><a class="anchor" id="autotoc_md1"></a>
138 Overall Workflow</h1>
139 <p>The CMSIS-Toolbox uses <a href="https://www.keil.arm.com/packs/">Software Packs</a> for device/board support and access reusable software components.</p>
140 <p>The overall operation is controlled with intuitive <a href="https://github.com/ReinhardKeil/cmsis-toolbox/blob/main/docs/YML-Input-Format.md">User Input files in YAML format</a>. The application is defined in the <code>*.csolution.yml</code> file and contains one or more projects that can utilize pre-configured software layers. The build engine CMake/Ninja calls the C/C++ compiler toolchain that generates the Build Output.</p>
141 <p>The <code>cbuild</code> command orchestrates the overall build process and calls individual command line tools to generate the target application binary image or library.</p>
143 <img src="tool-overview.png" alt=""/>
144 <div class="caption">
145 Overview of Project Definition</div></div>
146 <h1><a class="anchor" id="autotoc_md2"></a>
147 Key Features and Benefits</h1>
149 <li>Flexible CLI tools that can be used stand-alone or integrated into <a href="https://marketplace.visualstudio.com/items?itemName=Arm.keil-studio-pack">VS Code</a> or DevOps systems for Continuous Integration (CI).</li>
150 <li>Stand-alone tools that are available for all host platforms (Windows, Mac, Linux) and flexible deployable.</li>
151 <li>Support for multiple toolchains (Arm, GCC, IAR, and LLVM compiler), even within the same set of project files and command line options to select different toolchains during verification.</li>
152 <li><a href="https://www.keil.arm.com/packs/">Software Packs</a> simplify tool setup with <code>device:</code> or <code>board:</code> selection and project creation with access to reusable software components.</li>
153 <li>Organize solutions with projects that are independently managed simplifies a wide range of use cases including multi-processor applications or unit testing.</li>
154 <li>Provisions for product lifecycle management (PLM) with versioned software packs that are easy to update and management for configuration files.</li>
155 <li>Software layers enable code reuse across similar applications with a pre-configured set of source files and software components.</li>
156 <li>Multiple hardware targets allow application deployment to different hardware (test board, production hardware, virtual hardware, etc.).</li>
157 <li>Multiple build types support software testing and verification (debug build, test build, release build, ect.).</li>
158 <li>Linker Script Management utilizes device and board information to define the available memory and allows flexible control of the linker operation.</li>
159 <li>Uses a CMake backend for the build process that integrates with other tools such as VS Code intellisense. </li>
161 </div></div><!-- PageDoc -->
162 </div><!-- contents -->
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);