Official ARM version: v5.6.0

This commit is contained in:
rihab kouki 2020-07-28 11:24:49 +01:00
parent 9f95ff5b6b
commit 96d6da4e25
2939 changed files with 339304 additions and 113320 deletions

View file

@ -3,8 +3,8 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>Software Packs Overview</title>
<title>CMSIS-Pack: Software Packs Overview</title>
<title>Overview</title>
<title>CMSIS-Pack: Overview</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>
@ -32,7 +32,7 @@
<td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">CMSIS-Pack
&#160;<span id="projectnumber">Version 1.5.0</span>
&#160;<span id="projectnumber">Version 1.6.0</span>
</div>
<div id="projectbrief">Delivery Mechanism for Software Packs</div>
</td>
@ -107,10 +107,10 @@ $(document).ready(function(){initNavTree('cp_Packs.html','');});
<div class="header">
<div class="headertitle">
<div class="title">Software Packs Overview </div> </div>
<div class="title">Overview </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The <b>CMSIS-Pack</b> format is used to deliver a Software Pack and is aimed to be scalable for future requirements. It provides a management process and supports a tool independent distribution for:</p>
<div class="textblock"><p>The <b>CMSIS-Pack</b> format is used to deliver a software package and is aimed to be scalable for future requirements. It provides a management process and supports a tool independent distribution for:</p>
<ul>
<li><a class="el" href="createPack_DFP.html">Device Support</a> for tool chains and software applications to target a specific device:<ul>
<li>Information about the processor and it's features.</li>
@ -141,58 +141,145 @@ $(document).ready(function(){initNavTree('cp_Packs.html','');});
</li>
<li><a class="el" href="cp_SWComponents.html#cp_CodeTemplates">User Code Templates</a> help to understand the basic concepts of a software component better and to give the user a good starting point for implementing his application.</li>
</ul>
<h1><a class="anchor" id="PackFilenames"></a>
Pack Conventions</h1>
<p>A <a class="el" href="cp_SWComponents.html">Software Pack</a> is a collection of files located in directories that are archived in a file with the extension *.pack using the standard <a href="http://en.wikipedia.org/wiki/Zip_%28file_format%29" target="_blank">ZIP file format</a>. The Pack Description file (PDSC) with the file extension *.pdsc contains the <a class="el" href="packFormat.html">meta information</a>, describing the content of a pack based on <a href="https://en.wikipedia.org/wiki/XML" target="_blank">XML</a>. The PDSC file must be:</p>
<h1><a class="anchor" id="cp_Components"></a>
Software Components</h1>
<p>A software component encapsulates a set of related functions. Software components can contain C/C++ source files, object code, assembler files, header files, or libraries. The interfaces of software components should be defined with <a class="el" href="cp_SWComponents.html#cp_API">API</a>headers" to make them substitutable by other compatible components at design time. In addition, CMSIS software components should contain documentation for the software component. They may provide user code templates that give a starting point for the application developer, and can have optional debug view descriptions for debuggers.</p>
<p>CMSIS software components can also refer to multiple interfaces of other software components. This could be also a hardware abstraction layer for a device peripheral.</p>
<p>Configuration files contain application specific parameters for a software component. These files are typically copied to the user project workspace; all other files are not modified by the user and can remain in a separate location which avoids that a project workspace is polluted by many source files that should be considered as “black-box” elements by the application programmer.</p>
<div class="image">
<img src="software_component.png" alt="software_component.png"/>
</div>
<p><a class="anchor" id="cp_CompDetails"></a></p>
<h2>Technical Details </h2>
<p>A component lists the files that belong to it and that are relevant for a project. The component itself or each individual file may refer to a <a class="el" href="pdsc_conditions_pg.html#element_condition">condition</a> that must resolve to true; if it is false, the component or file is not applicable in the given context.</p>
<p>Each software component must have the following attributes that are used to identify the component:</p>
<ul>
<li>included in the <a class="el" href="cp_SWComponents.html">Software Pack</a></li>
<li>located in the base folder of the archive</li>
<li>compliant with the <a class="el" href="cp_SWComponents.html">Software Pack</a> file <a class="el" href="cp_Packs.html#pack_filename">naming convention</a></li>
<li>Component Class (<code>Cclass</code>): A component class which is a top-level component name, for example <b>CMSIS</b>, <b>Device</b>, <b>File</b> <b>System</b> </li>
<li>Component Group (<code>Cgroup</code>): A component group name, for example <b>CMSIS:RTOS</b>, <b>Device:Startup</b>, <b>File</b> <b>System:CORE</b> </li>
<li>Component Version (<code>Cversion</code>): the version number of the software component.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd><ul>
<li>The <em>base folder</em> is defined to be the root folder './' of a zip archive and it is imperative that the whole <a class="el" href="cp_SWComponents.html">Software Pack</a> only contains a single PDSC file.</li>
<li>Future tools shall support this case: if the PDSC file is located in an immediate subdirectory, then the subdirectory becomes the base folder. The <a class="el" href="cp_SWComponents.html">Software Pack</a> is installed as if the subdirectory does not exist. All files and directories located in the root folder are ignored and do not get installed.</li>
</ul>
</dd></dl>
<h2><a class="anchor" id="pack_filename"></a>
Pack File Name</h2>
<p>A <a class="el" href="cp_SWComponents.html">Software Pack</a> must have a unique filename. Therefore it is constructed from vendor, packname and version and the file extension *.pack.</p>
<p><b>&lt;vendor&gt;.&lt;name&gt;.&lt;version&gt;.pack</b>.</p>
<p>Where:</p>
<p>Optionally, a software component may have additional attributes:</p>
<ul>
<li><b>&lt;vendor&gt;</b> is the name of the supplier or vendor of the <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li>
<li><b>&lt;name&gt;</b> is the name of the <a class="el" href="cp_SWComponents.html">Software Pack</a>. All packs that are published by a vendor must have a unique packname.</li>
<li><b>&lt;release version="X.Y.Z"&gt;</b>specifies the <a class="el" href="pdsc_package_pg.html#VersionType">version number</a> of the release for the <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li>
<li><b>.pack</b> is the file extension identifying a <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li>
<li>Component Sub-Group (<code>Csub</code>): A component sub-group that is used when multiple compatible implementations of a component are be available. For example <b>CMSIS:RTOS:MyRTOS</b>, <b>Device:Driver</b> <b>USBD:Full-speed</b> </li>
<li>Component Variant (<code>Cvariant</code>): A variant of the software component is typically used when the same implementation has multiple top-level configurations, like debug and release.</li>
<li>Component Vendor (<code>Cvendor</code>): the supplier of the software component.</li>
<li>Cbundle: allows to combine multiple software components into a software bundle. For example if a network stack is used, all interfaces must match to that component.</li>
<li>Instances: allow to deploy multiple instances of a software component. Each instance can have a separate configuration file.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd><ul>
<li>The XML elements <b>&lt;vendor&gt;</b>, <b>&lt;name&gt;</b>, and the version attribute of the <b>&lt;release&gt;</b> are specified in the <a class="el" href="packFormat.html#Filenames">PDSC</a> file. PDSC, Pack filenames are case sensitive and need to match exactly.</li>
<li><b>&lt;vendor&gt;</b> and <b>&lt;name&gt;</b> <em>must</em> <em>not</em> contain spaces.</li>
<li>The PDSC file needs to reside in the base folder of the Pack. All file references are relative to the location of the PDSC file.</li>
</ul>
</dd></dl>
<h2><a class="anchor" id="pack_Cclass"></a>
Software Component Cclasses</h2>
<p>If you add a software component in the PDSC file, you have to specify a component class (CClass), component group (Cgroup), and the component's version number (Cversion). For more information refer to <a class="el" href="cp_SWComponents.html#cp_Components">Software Components</a>.</p>
<p>If applicable, try to map the <b>Cclass</b> of your software component to one of the following predefined or already well established classes:</p>
<p>The <code>Cclass</code>, <code>Cgroup</code>, <code>Csub</code>, <code>Cvariant</code> and <code>Cversion</code> attributes are used together with the vendor specified by the pack to identify a component. A component vendor must ensure that the combination <code>Cclass</code>, <code>Cgroup</code>, <code>Csub</code> and <code>Cversion</code> is unique and not used by multiple components within the same Pack. Advertise a set of attributes to be used by other software components using the <a class="el" href="element_taxonomy.html">/package/taxonomy element</a>.</p>
<p>For a list of established Cclasses, refer to <a class="el" href="cp_Packs.html#pack_Cclass">Software Component Cclasses</a>.</p>
<p>In case multiple interdependent components (belonging to the same <code>Cclass</code>) form part of a solution, these can be grouped in a so called <a class="el" href="cp_SWComponents.html#cp_Bundles">bundle</a>.</p>
<p>Use the following syntax to reference to software components and APIs:<br/>
<b>&lt;Vendor&gt;::&lt;Cclass&gt;:&lt;Cgroup&gt;:&lt;Csub&gt;</b></p>
<p><b>Examples:</b> </p>
<ul>
<li>Board Support: Generic interfaces for evaluation and development boards</li>
<li>CMSIS: <em>Cortex Microcontroller Software Interface Standard</em> components</li>
<li>CMSIS Driver: Unified device drivers compliant to the CMSIS-Driver specification</li>
<li>Compiler: Arm Compiler software extensions</li>
<li>Data Exchange: Software components for data exchange</li>
<li>Device: Startup and system setup components</li>
<li>File System*: File drive support and file system</li>
<li>Graphics*: Graphical libraries for user interfaces</li>
<li>Network*: Network stack using Internet protocols</li>
<li>RTOS*: Real-time operating systems</li>
<li>Safety: Components for testing application software against safety standards</li>
<li>Security*: Encryption for secure communication or storage</li>
<li>USB*: Universal Serial Bus stack</li>
<li>Wireless*: Communication stacks such as Bluetooth, WiFi, and ZigBee</li>
<li><b>::CMSIS:RTOS (API)</b> - the CMSIS-RTOS API.</li>
<li><b>ARM::CMSIS:DSP</b> - the CMSIS-DSP Library.</li>
<li><b>::File System:Drive:NOR</b> - the NOR Flash Drive of a file system.</li>
</ul>
<p>Classes with a * should always be used together with a <a class="el" href="pdsc_components_pg.html#Component_Bundle">bundle</a> to avoid conflicts with other software components.</p>
<p>If you wish to standardize a new Cclass, please send an inquiry to <a href="#" onclick="location.href='mai'+'lto:'+'cms'+'is'+'@ar'+'m.'+'com'; return false;">cmsis<span style="display: none;">.nosp@m.</span>@arm<span style="display: none;">.nosp@m.</span>.com</a> or raise an issue on the public <a href="https://github.com/ARM-software/CMSIS_5/issues">CMSIS GitHub development repository</a>.</p>
<p>Here is an example for the display of software components in a development tool:</p>
<div class="image">
<img src="ComponentDisplay.png" alt="ComponentDisplay.png"/>
<div class="caption">
Display of a software component in development tools</div></div>
<h2>Software Component Files </h2>
<p>Each software component consists of a certain number of files. Each file has at least the following attributes:</p>
<ul>
<li><code>name:</code> File path, file name, and file extension in the format path/name.extension. The file path is relative to the root directory of the Pack.</li>
<li><code>category:</code> Defines the purpose of the file. Select the predefined value as listed in the table <a class="el" href="pdsc_components_pg.html#FileCategoryEnum">File Categories</a>.</li>
</ul>
<p>Optionally, every file may have the following attributes:</p>
<ul>
<li><code>attr:</code> Defines the special use and handling of a file. Select a predefined value as defined in the table <a class="el" href="pdsc_components_pg.html#FileAttributeEnum">File Attributes</a>.</li>
<li><code>condition:</code> Enter the identifier (attribute <em><b>id</b></em>) of a <a class="el" href="pdsc_conditions_pg.html#element_condition">condition</a>. The element is used if the condition resolves to <span class="XML-Token">true</span>.</li>
<li><code>select:</code> Brief description and purpose of the file. The <b><em>select</em></b> attribute is <b>required</b> when <b><em>attr</em></b> is set to <span class="XML-Token">template</span> or <span class="XML-Token">interface</span>. When multiple template files of a component have the same <b><em>select</em></b> string, they are treated as a single selectable template. This way, multiple template or interface files can be bundled.</li>
<li><code>src:</code> Path information. The path is specified relative to the Pack Description File (PDSC).</li>
<li><code>version:</code> File-specific version information. This is used particularly for files copied into the project workspace. Before a file gets copied, a version check avoids unnecessary copy actions. If a file does not have a version, then the component version is used.</li>
</ul>
<h1><a class="anchor" id="cp_Cond"></a>
References to other software components</h1>
<p>Software components can reference other software components (either within the same pack or in other packs) using conditions:</p>
<div class="image">
<img src="conditions.png" alt="conditions.png"/>
</div>
<p>A condition describes dependencies on:</p>
<ul>
<li>a specific device</li>
<li>a certain processor</li>
<li>tool attributes</li>
<li>the presence of other components (pcak internal or external)</li>
</ul>
<p>Conditions can be used to ensure that specific software components are either present in the system or can prevent that illegal combinations of software components are chosen by the user.</p>
<p>Conditions are used to define <b>AND/OR</b> rules that make components conditional and therefore only available under certain circumstances, for example for specific devices or processors. Conditions are also used to express dependencies between software components.</p>
<p>Each condition has an <b>id</b> that is unique within the scope of a the PDSC file. An id can be referenced in the <code>condition</code> attribute of components, APIs, examples, files and other conditions. All attributes set in a <b>accept</b>, <b>require</b>, or <b>deny</b> element must resolve to true for the element to become true. A condition becomes true when:</p>
<ul>
<li>At least one <b>accept</b> element is true, <em>AND</em> </li>
<li>all <b>require</b> elements are true, <em>AND</em> </li>
<li>no <b>deny</b> element is true.</li>
</ul>
<p>If a condition resolves to false during processing, the respective element will be ignored.</p>
<h1><a class="anchor" id="cp_Requirements"></a>
Requirements</h1>
<p>Packs can require other packs to be available (and can even ask for a specific version of a pack):</p>
<div class="image">
<img src="requirements.png" alt="requirements.png"/>
</div>
<p>There are three different requirement types:</p>
<ul>
<li>The <code>packages</code> section lists CMSIS Packs that have been used to configure the project. This includes the specification of a version range to ensure compatibility. If no version is provided, the latest installed version is used. If not yet installed, the latest available version will be installed before resolving the configuration.</li>
<li>The <code>compilers</code> section specifies the toolchains that are supported by this example. The required compiler version is specified using the version element. If no compiler is specified, it is assumed that any toolchain will work.</li>
<li>The <code>languages</code> section allows to specify requirements regarding the programming language, for example C99 standard. If no language requirements are set, ANSI C is assumed.</li>
</ul>
<h1><a class="anchor" id="cp_APIDef"></a>
Central API definition</h1>
<p>The CMSIS-Pack system allows a central API definition that shares header file information and documentation of an <a class="el" href="pdsc_apis_pg.html#element_api">API interface</a>.</p>
<div class="image">
<img src="api.png" alt="api.png"/>
</div>
<p>This single API interface definition ensures consistency when it is used across multiple implementations that consume the interface. The API interface definition can be distributed separately or as part of the software component that consumes this interface.</p>
<p>An example is the <b>CMSIS-Driver</b> pack that contains various hardware interface drivers that all compatible with the CMSIS-Driver APIs (that are published in the CMSIS Pack).</p>
<h1><a class="anchor" id="cp_RTECompH"></a>
Inventory header file: RTE_Components.h</h1>
<p>Frequently, the behavior or features of a software component depend on the presence of other software components in the application. For example, a network stack can interface to Ethernet or serial PPP (UART). Depending on the presence of interface components, the implementation may behave differently.</p>
<p>To simplify application configuration, the file <b>RTE_Components.h</b> is generated before the project build step. It contains the inventory of all selected components. For each selected software component, it contains #define statements that are specified by the component meta data. The following example shows an RTE_Components.h file:</p>
<div class="fragment"><div class="line"><span class="comment">/* </span></div>
<div class="line"><span class="comment"> Auto generated Run-Time-Environment Component Configuration File </span></div>
<div class="line"><span class="comment"> * Do not modify ! *** </span></div>
<div class="line"><span class="comment"> */</span> </div>
<div class="line"></div>
<div class="line"><span class="preprocessor">#ifndef RTE_COMPONENTS_H </span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define RTE_COMPONENTS_H </span></div>
<div class="line"><span class="preprocessor"></span></div>
<div class="line"><span class="comment">/* </span></div>
<div class="line"><span class="comment"> Define the Device Header File: </span></div>
<div class="line"><span class="comment"> */</span> </div>
<div class="line"></div>
<div class="line"><span class="preprocessor">#define CMSIS_device_header &quot;stm32f10x.h&quot; </span></div>
<div class="line"><span class="preprocessor"></span></div>
<div class="line"><span class="preprocessor">#define RTE_Network_Interface_ETH_0 </span><span class="comment">/* Network Interface ETH 0 */</span><span class="preprocessor"> </span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define RTE_Network_Socket_BSD </span><span class="comment">/* Network Socket BSD */</span><span class="preprocessor"> </span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define RTE_Network_Socket_TCP </span><span class="comment">/* Network Socket TCP */</span><span class="preprocessor"> </span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#define RTE_Network_Socket_UDP </span><span class="comment">/* Network Socket UDP */</span><span class="preprocessor"> </span></div>
<div class="line"><span class="preprocessor"></span></div>
<div class="line"><span class="preprocessor">#endif </span><span class="comment">/* RTE_COMPONENTS_H */</span><span class="preprocessor"></span></div>
</div><!-- fragment --><p>Use this information in other header files to control features that depend on the inclusion to other software components. For example:</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;RTE_Components.h&quot;</span> </div>
<div class="line"><span class="preprocessor">#ifdef RTE_Network_Interface_ETH_0 // if component is included </span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#include &quot;Net_Config_ETH_0.h&quot;</span> <span class="comment">// add related configuration file </span></div>
<div class="line"><span class="preprocessor">#endif</span></div>
</div><!-- fragment --><h1><a class="anchor" id="cp_Combine"></a>
Combining software components</h1>
<p>When using software components, you can use the conditions to automatically resolve dependencies on other components. Use this to combine components for a project in a certain way, while combining them differently for another project. In the following example, a network stack transfers data via Ethernet. The network stack requires a MAC and PHY to do this. The selected device from silicon vendor A that contains an on-chip MAC, thus only requiring a PHY to be selected:</p>
<div class="image">
<img src="internal_mac_example.png" alt="internal_mac_example.png"/>
<div class="caption">
Example with internal MAC</div></div>
<p> You can copy the project, select a different device from silicon vendor B for example and let the run-time environment manager do the exchange of the components. As the new devices do not have an on-chip MAC, you need to select a different component to fulfill the requirement for the network stack:</p>
<div class="image">
<img src="external_mac_example.png" alt="external_mac_example.png"/>
<div class="caption">
Example with external MAC and PHY</div></div>
<p> This reduces the development time drastically, as the developer does not need to care for the correct dependency between software components, but can concentrate on the implementation of his own application code.</p>
<h1><a class="anchor" id="cp_PackSteps"></a>
Steps to Create a Pack</h1>
<p>The following image shows the basic steps that are required to create a Software Pack:</p>
@ -219,12 +306,88 @@ Pack Tutorial</h1>
<tr>
<td>Pack_with_Board_Support.zip </td><td><a class="el" href="createPackBoard.html">Pack with Board Support</a> </td></tr>
</table>
<h1><a class="anchor" id="PackFilenames"></a>
Pack Conventions</h1>
<p>A <a class="el" href="cp_SWComponents.html">Software Pack</a> is a collection of files located in directories that are archived in a file with the extension *.pack using the standard <a href="http://en.wikipedia.org/wiki/Zip_%28file_format%29" target="_blank">ZIP file format</a>. The Pack Description file (PDSC) with the file extension *.pdsc contains the <a class="el" href="packFormat.html">meta information</a>, describing the content of a pack based on <a href="https://en.wikipedia.org/wiki/XML" target="_blank">XML</a>. The PDSC file must be:</p>
<ul>
<li>included in the <a class="el" href="cp_SWComponents.html">Software Pack</a></li>
<li>located in the base folder of the archive</li>
<li>compliant with the <a class="el" href="cp_SWComponents.html">Software Pack</a> file <a class="el" href="cp_Packs.html#pack_filename">naming convention</a></li>
</ul>
<dl class="section note"><dt>Note</dt><dd><ul>
<li>The <em>base folder</em> is defined to be the root folder './' of a zip archive and it is imperative that the whole <a class="el" href="cp_SWComponents.html">Software Pack</a> only contains a single PDSC file.</li>
<li>Future tools shall support this case: if the PDSC file is located in an immediate subdirectory, then the subdirectory becomes the base folder. The <a class="el" href="cp_SWComponents.html">Software Pack</a> is installed as if the subdirectory does not exist. All files and directories located in the root folder are ignored and do not get installed.</li>
</ul>
</dd></dl>
<h2><a class="anchor" id="pack_filename"></a>
Pack File Name</h2>
<p>A <a class="el" href="cp_SWComponents.html">Software Pack</a> must have a unique filename. Therefore it is constructed from vendor, packname and version and the file extension *.pack.</p>
<p><b>&lt;vendor&gt;.&lt;name&gt;.&lt;version&gt;.pack</b>.</p>
<p>Where:</p>
<ul>
<li><b>&lt;vendor&gt;</b> is the name of the supplier or vendor of the <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li>
<li><b>&lt;name&gt;</b> is the name of the <a class="el" href="cp_SWComponents.html">Software Pack</a>. All packs that are published by a vendor must have a unique pack name.</li>
<li><b>&lt;release version="X.Y.Z"&gt;</b>specifies the <a class="el" href="pdsc_package_pg.html#VersionType">version number</a> of the release for the <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li>
<li><b>.pack</b> is the file extension identifying a <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li>
</ul>
<dl class="section note"><dt>Note</dt><dd><ul>
<li>The XML elements <b>&lt;vendor&gt;</b>, <b>&lt;name&gt;</b>, and the version attribute of the <b>&lt;release&gt;</b> are specified in the <a class="el" href="packFormat.html#Filenames">PDSC</a> file. PDSC, Pack filenames are case sensitive and need to match exactly.</li>
<li><b>&lt;vendor&gt;</b> and <b>&lt;name&gt;</b> <em>must</em> <em>not</em> contain spaces.</li>
<li>The PDSC file needs to reside in the base folder of the Pack. All file references are relative to the location of the PDSC file.</li>
</ul>
</dd></dl>
<h2><a class="anchor" id="pack_Cclass"></a>
Software Component Cclasses</h2>
<p>If you add a software component in the PDSC file, you have to specify a component class (CClass), component group (Cgroup), and the component's version number (Cversion). For more information refer to <a class="el" href="cp_SWComponents.html#cp_Components">Software Components</a>.</p>
<p>If applicable, try to map the <b>Cclass</b> of your software component to one of the following predefined or already well established classes listed below. These <b>Cclass</b> names are pre-defined in the CMSIS pack using the <a class="el" href="element_taxonomy.html">taxonomy</a> element.</p>
<table class="doxtable">
<tr>
<th align="left">Cclass </th><th align="left">Description </th></tr>
<tr>
<td align="left">Audio </td><td align="left">Software components for audio processing </td></tr>
<tr>
<td align="left">Board Support </td><td align="left">Generic interfaces for evaluation and development boards </td></tr>
<tr>
<td align="left">Board Part * </td><td align="left">Drivers that support an external component available on an evaluation board </td></tr>
<tr>
<td align="left">CMSIS </td><td align="left"><em>Cortex Microcontroller Software Interface Standard</em> components </td></tr>
<tr>
<td align="left">CMSIS Driver </td><td align="left">Unified device drivers compliant to the CMSIS-Driver specification </td></tr>
<tr>
<td align="left">Compiler </td><td align="left">Arm Compiler software extensions </td></tr>
<tr>
<td align="left">Data Exchange </td><td align="left">Data exchange components or data formatter, for example JSON </td></tr>
<tr>
<td align="left">Device </td><td align="left">Startup and system setup components </td></tr>
<tr>
<td align="left">Extension Board * </td><td align="left">Drivers that support an extension boards or shield </td></tr>
<tr>
<td align="left">File System* </td><td align="left">File drive support and file system </td></tr>
<tr>
<td align="left">Graphics* </td><td align="left">Graphical libraries for user interfaces </td></tr>
<tr>
<td align="left">IoT Client * </td><td align="left">IoT cloud client connectors </td></tr>
<tr>
<td align="left">IoT Utility * </td><td align="left">IoT specific utilities, i.e. a socket interface </td></tr>
<tr>
<td align="left">Network* </td><td align="left">Network stack using Internet protocols </td></tr>
<tr>
<td align="left">RTOS* </td><td align="left">Real-time operating systems </td></tr>
<tr>
<td align="left">Security* </td><td align="left">Encryption for secure communication or storage </td></tr>
<tr>
<td align="left">USB* </td><td align="left">Universal Serial Bus stack </td></tr>
<tr>
<td align="left">Utility </td><td align="left">Generic software utility components </td></tr>
</table>
<p>Classes with a * should always be used together with a <a class="el" href="pdsc_components_pg.html#Component_Bundle">bundle</a> to avoid conflicts with other software components.</p>
<p>If you wish to standardize a new Cclass, please send an inquiry to <a href="#" onclick="location.href='mai'+'lto:'+'cms'+'is'+'@ar'+'m.'+'com'; return false;">cmsis<span style="display: none;">.nosp@m.</span>@arm<span style="display: none;">.nosp@m.</span>.com</a> or raise an issue on the public <a href="https://github.com/ARM-software/CMSIS_5/issues">CMSIS GitHub development repository</a>. </p>
</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:42 for CMSIS-Pack by Arm Ltd. All rights reserved.
<li class="footer">Generated on Wed Jul 10 2019 15:21:00 for CMSIS-Pack Version 1.6.0 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