summaryrefslogtreecommitdiff
path: root/docs/Pack/html/cp_Packs.html
blob: d730a8f5d8b1b4ed420851d1cc7a0eb95bc0c15f (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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
<!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>Software Packs Overview</title>
<title>CMSIS-Pack: Software Packs 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>
<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-Pack
   &#160;<span id="projectnumber">Version 1.5.0</span>
   </div>
   <div id="projectbrief">Delivery Mechanism for Software Packs</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><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Usage&#160;and&#160;Description</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('cp_Packs.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>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">Software Packs 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>
<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>
<li>C and assembly files for the device startup and access to the memory mapped peripheral registers.</li>
<li>Parameters, technical information, and data sheets about the device family and the specific devices.</li>
<li>Device description and available peripherals.</li>
<li>Memory layout of internal and external RAM and ROM address ranges.</li>
<li><a class="el" href="flashAlgorithm.html">Flash algorithms</a> for programming the device.</li>
<li>Debug and trace configurations as well as System View Description files for device specific display of the memory mapped peripheral registers.</li>
</ul>
</li>
<li><a class="el" href="createPackBoard.html">Board Support</a> for rapid development in the prototyping stage:<ul>
<li>Information about the development board and it's features.</li>
<li>Parameters, technical information, and data sheets about the board, the mounted microcontroller and peripheral devices.</li>
<li>Drivers for on-board peripheral devices</li>
</ul>
</li>
<li><a class="el" href="cp_SWComponents.html">Software Components</a> simplify the re-use of software and the management of 3rd party software. They contain:<ul>
<li>A collection of source modules, header and <a class="el" href="configWizard.html">configuration files</a> as well as libraries.</li>
<li>Documentation of the software, including features and APIs.</li>
</ul>
</li>
<li><a class="el" href="cp_SWComponents.html#cp_API">Application Programming Interfaces</a> specify one or more APIs for <a class="el" href="cp_SWComponents.html#cp_Components">software components</a> that are part of another <a class="el" href="cp_SWComponents.html">Software Pack</a>.</li>
<li><a class="el" href="cp_SWComponents.html#cp_Examples">Example Projects</a> can be used as a reference and starting point for similar applications. They contain:<ul>
<li>Fully defined application projects that work out of the box in the specified build and debug environments.</li>
<li>Documentation about the purpose of the example, how to build, configure and execute the application.</li>
</ul>
</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>
<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 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>
</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>
<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>
</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>
<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>
<div class="image">
<img src="PackCreateSteps.png" alt="PackCreateSteps.png"/>
</div>
<ol type="1">
<li><b>Produce input:</b> Create the files that will be delivered with the Pack.</li>
<li><b>Organize files:</b> Use directories to separate the content of the Pack.</li>
<li><b>Create PDSC file:</b> The XML based PDSC file can be created using any text editor. Editors that can validate XML code against a schema file help to find bugs early in the Pack development stage.</li>
<li><b>Generate Pack:</b> Any compression tool supporting the ZIP format can be used to create a Pack file. <a class="el" href="packChk.html">packChk.exe</a> is helpful for the validation of the contents of a Pack.</li>
</ol>
<p>The following pages will show how to create a Software Pack from scratch. The page <a class="el" href="cp_SWComponents.html">Pack with Software Components</a> will start with a simple Pack containing only the PDSC file and a single software component and will then explain further elements of a Pack in more detail. The page <a class="el" href="createPack_DFP.html">Pack with Device Support</a> adds information on the additional requirements that a DFP has, while <a class="el" href="createPackBoard.html">Pack with Board Support</a> will elaborate on the content specific to a BSP.</p>
<h1><a class="anchor" id="PackTutorials"></a>
Pack Tutorial</h1>
<p>The <b>ARM::CMSIS</b> Pack contains tutorials that are explained on the following pages. In the <b>\CMSIS\Pack\Tutorials</b> directory the following three ZIP files are available: </p>
<table class="doxtable">
<tr>
<th>ZIP File </th><th>Documentation  </th></tr>
<tr>
<td>Pack_with_Software_Components.zip </td><td><a class="el" href="cp_SWComponents.html">Pack with Software Components</a> </td></tr>
<tr>
<td>Pack_with_Device_Support.zip </td><td><a class="el" href="createPack_DFP.html">Pack with Device Support</a> </td></tr>
<tr>
<td>Pack_with_Board_Support.zip </td><td><a class="el" href="createPackBoard.html">Pack with Board Support</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:42 for CMSIS-Pack 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>