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
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
|
<!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>/package/components element</title>
<title>CMSIS-Pack: /package/components element</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
 <span id="projectnumber">Version 1.6.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 Page</span></a></li>
<li class="current"><a href="pages.html"><span>Usage and 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('pdsc_components_pg.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"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </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">/package/components element </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>The element <a class="el" href="pdsc_components_pg.html#element_components">/package/components</a> describes software components contained in the Pack. A component lists the files that belong to a component 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 component must have a Class (Cclass=), a Group (Cgroup=), and a Version (Cversion=) which is used to identify the component. Optionally a component may have a Sub-Group (Csub=) and Variant (Cvariant=) to add further categories. The Class, Group, Sub-Group, Variant and Version is used together with the vendor specified by the Pack, to identify a component. A component vendor must ensure that the combination Class, Group, Sub-Group and Version is unique and not used by multiple components.</p>
<p><b>Example</b> </p>
<div class="fragment"><div class="line"><package></div>
<div class="line"> ...</div>
<div class="line"> <components></div>
<div class="line"> <!-- component has dependency described by <span class="stringliteral">"CMSIS Core"</span> condition --></div>
<div class="line"> <component Cclass=<span class="stringliteral">"CMSIS"</span> Cgroup=<span class="stringliteral">"Core"</span> Cversion=<span class="stringliteral">"3.1.0"</span> condition=<span class="stringliteral">"CMSIS Core"</span>></div>
<div class="line"> <description>CMSIS-Core (Cortex-M) for Cortex-M, SC000, and SC300 processor.</description></div>
<div class="line"> <files></div>
<div class="line"> <!-- CPU independent --></div>
<div class="line"> <file category="doc" name="CMSIS/Documentation/Core/html/index.html"/></div>
<div class="line"> <file category="header" name="CMSIS/Include/core_cmFunc.h"/></div>
<div class="line"> <file category="header" name="CMSIS/Include/core_cmInstr.h"/></div>
<div class="line"> <!-- CPU dependent --></div>
<div class="line"> <file category="header" condition="CM0" name="CMSIS/Include/core_cm0.h"/></div>
<div class="line"> <file category="header" condition="CM0+" name="CMSIS/Include/core_cm0plus.h"/></div>
<div class="line"> <file category="header" condition="CM3" name="CMSIS/Include/core_cm3.h"/></div>
<div class="line"> <file category="header" condition="CM4" name="CMSIS/Include/core_cm4.h"/></div>
<div class="line"> <file category="header" condition="CM4" name="CMSIS/Include/core_cm4_simd.h"/></div>
<div class="line"> <file category="header" condition="SC000" name="CMSIS/Include/core_sc000.h"/></div>
<div class="line"> <file category="header" condition="SC300" name="CMSIS/Include/core_sc300.h"/></div>
<div class="line"> </files></div>
<div class="line"> </component></div>
<div class="line"></div>
<div class="line"> <component Cclass="CMSIS" Cgroup="DSP" Cversion="1.1.0" condition="CMSIS DSP"></div>
<div class="line"> <description>CMSIS-DSP Library for Cortex-M0, Cortex-M3 and Cortex-M4 as well as SC000 and SC300 processor based devices</description></div>
<div class="line"></div>
<div class="line"> <files></div>
<div class="line"> <!-- CPU independent --></div>
<div class="line"> <file category="doc" name="CMSIS/Documentation/DSP/html/index.html"/></div>
<div class="line"> <file category="header" name="CMSIS/Include/arm_math.h"/></div>
<div class="line"> <!-- CPU and Compiler dependent --></div>
<div class="line"> <!-- ARMCC --></div>
<div class="line"> <file category="library" condition="CM0_LE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM0l_math.lib"/></div>
<div class="line"> <file category="library" condition="CM0_BE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM0b_math.lib"/></div>
<div class="line"> <file category="library" condition="CM3_LE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM3l_math.lib"/></div>
<div class="line"> <file category="library" condition="CM3_BE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM3b_math.lib"/></div>
<div class="line"> <file category="library" condition="CM4_LE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM4l_math.lib"/></div>
<div class="line"> <file category="library" condition="CM4_BE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM4b_math.lib"/></div>
<div class="line"> <file category="library" condition="CM4F_LE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM4lf_math.lib"/></div>
<div class="line"> <file category="library" condition="CM4F_BE_ARMCC" name="CMSIS/Lib/ARM/arm_cortexM4bf_math.lib"/></div>
<div class="line"> <!-- GCC --></div>
<div class="line"> <file category="library" condition="CM0_LE_GCC" name="CMSIS/Lib/GCC/libarm_cortexM0l_math.a"/></div>
<div class="line"> <file category="library" condition="CM3_LE_GCC" name="CMSIS/Lib/GCC/libarm_cortexM3l_math.a"/></div>
<div class="line"> <file category="library" condition="CM4_LE_GCC" name="CMSIS/Lib/GCC/libarm_cortexM4l_math.a"/></div>
<div class="line"> <file category="library" condition="CM4F_LE_GCC" name="CMSIS/Lib/GCC/libarm_cortexM4lf_math.a"/></div>
<div class="line"> <!-- G++ --></div>
<div class="line"> <file category="library" condition="CM0_LE_G++" name="CMSIS/Lib/G++/libarm_cortexM0l_math.a"/></div>
<div class="line"> <file category="library" condition="CM3_LE_G++" name="CMSIS/Lib/G++/libarm_cortexM3l_math.a"/></div>
<div class="line"> <file category="library" condition="CM4_LE_G++" name="CMSIS/Lib/G++/libarm_cortexM4l_math.a"/></div>
<div class="line"> <file category="library" condition="CM4F_LE_G++" name="CMSIS/Lib/G++/libarm_cortexM4lf_math.a"/></div>
<div class="line"> </files></div>
<div class="line"> </component></div>
<div class="line"></div>
<div class="line"> <component condition="ARM_CM0" Cclass="Device" Cgroup="Startup" Cversion="3.1.1"></div>
<div class="line"> <description>System Startup for generic Arm Cortex-M0 device</description></div>
<div class="line"> <files></div>
<div class="line"> <file category="header" name="Device/ARM/ARMCM0/Include/ARMCM0.h"/></div>
<div class="line"> <file category="header" name="Device/ARM/ARMCM0/Include/system_ARMCM0.h"/></div>
<div class="line"> <file category="source" condition="Compiler_ARM" name="Device/ARM/ARMCM0/Source/ARM/startup_ARMCM0.s"/></div>
<div class="line"> <file category="source" condition="Compiler_GCC" name="Device/ARM/ARMCM0/Source/GCC/startup_ARMCM0.S"/></div>
<div class="line"> <file category="source" condition="Compiler_G++" name="Device/ARM/ARMCM0/Source/G++/startup_ARMCM0.S"/></div>
<div class="line"> <file category="source" condition="Compiler_IAR" name="Device/ARM/ARMCM0/Source/IAR/startup_ARMCM0.s"/></div>
<div class="line"> <file category="source" name="Device/ARM/ARMCM0/Source/system_ARMCM0.c" attr="template"/></div>
<div class="line"> </files></div>
<div class="line"> </component></div>
<div class="line"> </components></div>
<div class="line"> ...</div>
<div class="line"></package></div>
</div><!-- fragment --><p> </p>
<h1><a class="anchor" id="Component_Bundle"></a>
Component Bundle</h1>
<p>In case multiple inter-dependent components that belong to the same <b>Cclass</b> form part of a solution, these can be grouped into a <em>bundle</em>. A <em>bundle</em> specifies identical attributes <b>Cclass</b>, <b>Cversion</b> and optionally <b>Cgroup</b> and <b>Cvendor</b> for several components. Components within a bundle inherit these attributes set by the bundle and cannot alter these attributes. Bundles ensure consistency of attributes across multiple interworking components and restrict the mix and match of components within a Cclass from different Software Packs.</p>
<p>An example of a <b>bundle</b> is shown in the <a class="el" href="createPackBoard.html#cp_BundleExample">Create a BSP Bundle</a> section where the bundle is used to deliver board support files for a certain development platform.</p>
<h1><a class="anchor" id="Component_Files"></a>
Component Files</h1>
<p>The files of a Software Component will be used in development tool-chains to build an application. Depending on the attributes, the files are handled differently:</p>
<ul>
<li>Libraries, source, and header files without an attribute cannot be modified. These files are stored in the folders of the Software Component and get directly included from this location into the project.</li>
<li>Source and header files that have the attribute <code>"config"</code> are copied to the project so that they can be edited by the user and tailored to the needs of the application. If a Software Component allows multiple instances of files, they can be copied multiple times to a project and will get a suffix <em>_%Instance%</em> (see <a class="el" href="pdsc_components_pg.html#Component_Instances">Component Instances</a>). Please note that header files that are used with the attribute <code>"config"</code> need to be stored separately from other header files (for example in an extra directory) to avoid that due to the include path search order of the compiler, the unmodified header file in the pack repository is found first and used by the compiler (creating unexpected results).</li>
<li>Source and header files that have the attribute <code>"template"</code> are part of <a class="el" href="cp_SWComponents.html#cp_CodeTemplates">User Code Templates</a> and can be added to a project manually by the user.</li>
</ul>
<p>The following image shows the dependency between the attribute and the display in a development environment:</p>
<div class="image">
<img src="component_files.png" alt="component_files.png"/>
<div class="caption">
Display of files of a Software Component in development tools</div></div>
<h1><a class="anchor" id="Component_Instances"></a>
Component Instances</h1>
<p>Modern microcontrollers often have multiple instances of the same peripheral interface (for example UART, SPI, USB, etc.). To be able to have separate configuration files for each of these instances, Software Components can have multiple instances as well. The attribute <b>maxInstances</b> declares the maximum number of instances that can be used in a project for a certain Software Component.</p>
<p>If the user selects for example two instances of the same component, all files with the attribute <code>"config"</code> will be copied twice to the project. The name of the component (for example <code>config_mylib.h</code>) will be expanded with an <code>_%Instance%</code> number:</p>
<ol type="1">
<li>Instance: config_mylib<em>_0</em>.h</li>
<li>Instance: config_mylib<em>_1</em>.h</li>
</ol>
<p>The availability of instances in a project can be made public in the <code>RTE_Components.h</code> file. This can be used to check for the availability of a certain instance in the user application code:</p>
<div class="fragment"><div class="line"><RTE_Components_h></div>
<div class="line"> <!-- the following content goes into file <span class="stringliteral">'RTE_Components.h'</span> --></div>
<div class="line"> #define RTE_FileSystem_Drive_NOR_%Instance% <span class="comment">/* File System NOR Flash Drive %Instance% */</span></div>
<div class="line"></RTE_Components_h></div>
</div><!-- fragment --><p> <br/>
</p>
<div class="image">
<img src="Component_Instances.png" alt="Component_Instances.png"/>
<div class="caption">
Component instances in PDSC file and in development tools</div></div>
<h1><a class="anchor" id="RTE_Components_h"></a>
RTE_Components.h</h1>
<p>The build environment should generate a C/C++ include file with the name <b>RTE_Components.h</b> that contains:</p>
<ul>
<li>The statements of the related <RTE_Components_h> element for all selected software components.</li>
<li>The header file name specified in the <compile> element of the <a class="el" href="pdsc_devices_pg.html">/package/devices element</a>.</li>
</ul>
<p><b>Example</b> </p>
<p>The following example shows a sample content of a file <b>RTE_Components.h</b>. It contains the statements that are specified with the element <b>RTE_Components_h</b> of four software components.</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"><span class="preprocessor">#define CMSIS_device_header "stm32f10x.h"</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>The <b>RTE_Components.h</b> file allows to create software that works with any supported device as it gives access to the <b>CMSIS_device_header</b>. The <b>CMSIS_device_header</b> reflects the current selected device and gives you for example access to the processor configuration. Refer to <b>"Device Header File <device.h>"</b> in <a href="../../Core/html/device_h_pg.html"><b>CMSIS-Core(M)</b></a> or <a href="../../Core_A/html/device_h_pg.html"><b>CMSIS-Core(A)</b></a> for more information.</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include CMSIS_device_header </span><span class="comment">/* header file of the selected device in the project */</span><span class="preprocessor"></span></div>
<div class="line"><span class="preprocessor"></span></div>
<div class="line"><span class="preprocessor">#if (defined (__MPU_PRESENT)) && (__MPU_PRESENT == 1)</span></div>
<div class="line"><span class="preprocessor"></span> <span class="comment">// device has MPU, start the related code</span></div>
<div class="line"><span class="preprocessor">#else</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor"> #error "Software Component requires a device with MPU"</span></div>
<div class="line"><span class="preprocessor">#endif</span></div>
</div><!-- fragment --><p>Another typical usage of the <b>RTE_Components.h</b> file is in header files to control for example the inclusion of files that are related to other components for the same Software Pack.</p>
<div class="fragment"><div class="line"><span class="preprocessor">#include "RTE_Components.h"</span></div>
<div class="line"> </div>
<div class="line"><span class="preprocessor">#ifdef RTE_Network_Interface_ETH_0 // generated when software component Network Interface ETH 0 is included</span></div>
<div class="line"><span class="preprocessor"></span><span class="preprocessor">#include "Net_Config_ETH_0.h"</span> <span class="comment">// add the related configuration file for these component </span></div>
<div class="line"><span class="preprocessor">#endif</span></div>
</div><!-- fragment --><p> </p>
<hr/>
<h1><a class="anchor" id="Pre_Include_Global_h"></a>
Pre_Include_Global_h</h1>
<p>The build environment shall generate a C/C++ header file with the name <b>Pre_Include_Global.h</b> from all selected components and add this file to the command line as a pre-include file for the build of all modules in the project. Note: the file shall be generated into the RTE/<target> subdirectory.</p>
<div class="fragment"><div class="line"><component Cclass=<span class="stringliteral">"Other"</span> Cgroup=<span class="stringliteral">"Alpha"</span> ...></div>
<div class="line"> <Pre_Include_Global_h></div>
<div class="line"> <span class="comment">// enabling global pre include</span></div>
<div class="line"><span class="preprocessor"> #define GLOBAL_Component_Alpha 0x4</span></div>
<div class="line"><span class="preprocessor"></span> </Pre_Include_Global_h></div>
<div class="line"></component></div>
<div class="line"></div>
<div class="line"><component Cclass=<span class="stringliteral">"Other"</span> Cgroup=<span class="stringliteral">"Beta"</span> ...></div>
<div class="line"> <Pre_Include_Global_h></div>
<div class="line"> <span class="comment">// enabling global pre include</span></div>
<div class="line"><span class="preprocessor"> #define GLOBAL_Component_Beta 0x8</span></div>
<div class="line"><span class="preprocessor"></span> </Pre_Include_Global_h></div>
<div class="line"></component></div>
</div><!-- fragment --><p>results in .../RTE/target_1/Pre_Include_Global.h: </p>
<div class="fragment"><div class="line"><span class="comment">// enabling global pre include</span></div>
<div class="line"><span class="preprocessor">#define GLOBAL_Component_Alpha 0x4</span></div>
<div class="line"><span class="preprocessor"></span><span class="comment">// enabling global pre include</span></div>
<div class="line"><span class="preprocessor">#define GLOBAL_Component_Beta 0x8</span></div>
</div><!-- fragment --><p>No need to explicitly include this file as it is automatically added as pre-include into the build for all modules.</p>
<p> </p>
<hr/>
<h1><a class="anchor" id="Pre_Include_Local_h"></a>
Pre_Include_Local_h</h1>
<p>The build environment shall generate a C/C++ header file with the name <b>Pre_Include_<Cclass>_<component>.h</b> from the selected component and add this file to the command line as a pre-include file for the build of all modules of this component. The same is done for each component containing a "Pre_Include_Local_h" element. Note: files shall be generated into the RTE/<target> subdirectory.</p>
<div class="fragment"><div class="line"><component Cclass=<span class="stringliteral">"Other"</span> Cgroup=<span class="stringliteral">"Alpha"</span> ...></div>
<div class="line"> <Pre_Include_Local_h></div>
<div class="line"> <span class="comment">// enabling local pre include</span></div>
<div class="line"><span class="preprocessor"> #define Local_Component_Alpha 1</span></div>
<div class="line"><span class="preprocessor"></span> </Pre_Include_Local_h></div>
<div class="line"></component></div>
</div><!-- fragment --><p>results in .../RTE/target_1/Pre_Include_Other_Alpha.h: </p>
<div class="fragment"><div class="line"><span class="comment">// enabling local pre include</span></div>
<div class="line"><span class="preprocessor">#define Local_Component_Alpha 1</span></div>
</div><!-- fragment --><p>No need to explicitly include this file as it is automatically added as pre-include into the build for all modules of component Other:Alpha.</p>
<p> </p>
<hr/>
<h1><a class="anchor" id="element_components"></a>
/package/components</h1>
<p>Grouping element containing a choice of at least one bundle or component. No more than one element <em>components</em> can exist in a Pack.</p>
<table class="cmtable" summary="Element: Components">
<tr>
<th>Parent </th><th colspan="3">Element Chain </th></tr>
<tr>
<td><a class="el" href="pdsc_package_pg.html">package</a> </td><td colspan="3"><a class="el" href="pdsc_package_pg.html">/package</a> </td></tr>
<tr>
<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr>
<tr>
<td>generator </td><td>Specifies the generator ID of the generator that has been used to generate all components within this section. </td><td>xs:string </td><td>optional </td></tr>
<tr>
<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr>
<tr>
<td><a class="el" href="pdsc_components_pg.html#element_bundle">bundle</a> </td><td>Grouping element for a collection of inter-operable components belonging to the same Cclass </td><td>ComponentType </td><td>1..* </td></tr>
<tr>
<td><a class="el" href="pdsc_components_pg.html#element_component">component</a> </td><td>Grouping element for components </td><td>ComponentType </td><td>1..* </td></tr>
</table>
<p> </p>
<hr/>
<h1><a class="anchor" id="element_bundle"></a>
/package/components/bundle</h1>
<p>A bundle describes a named collection of inter-operable components of the identical <em>Cvendor</em>, <em>Cclass</em> and <em>Cversion</em>. Components enclosed in a bundle must not specify any of the following attributes <em>Cvendor</em>, <em>Cclass</em> and <em>Cversion</em>.</p>
<table class="cmtable" summary="Element: Bundle">
<tr>
<th>Parent </th><th colspan="3">Element Chain </th></tr>
<tr>
<td><a class="el" href="pdsc_components_pg.html#element_components">components</a> </td><td colspan="3"><a class="el" href="pdsc_components_pg.html#element_components">/package/components</a> </td></tr>
<tr>
<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr>
<tr>
<td>Cbundle </td><td>Defines the name of the bundle. It becomes a mandatory part of the component ID. </td><td>xs:string </td><td>required </td></tr>
<tr>
<td>Cvendor </td><td>Defines the component vendor all components of this bundle belong to. If not explicitly set the component vendor is derived from the package vendor. The component vendor is a mandatory part of the component ID. </td><td>xs:string </td><td>optional </td></tr>
<tr>
<td>Cclass </td><td>Defines the component class to which all components in the bundle belong. Is a mandatory part of the component ID. Predefined values can be used as listed in the table <a class="el" href="element_taxonomy.html#CclassType">Component Classes</a>. </td><td>CclassType </td><td>required </td></tr>
<tr>
<td>Cversion </td><td>Defines the version of all components contained in the bundle. The component version is a mandatory part of the component ID. The version format is described in <a class="el" href="pdsc_package_pg.html#VersionType">Version Type</a>. </td><td>VersionType </td><td>required </td></tr>
<tr>
<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr>
<tr>
<td>description </td><td>Brief description of the bundle </td><td>xs:string </td><td>1..1 </td></tr>
<tr>
<td>doc </td><td>Documentation for the bundle: File path, file name, and file extension in the format <b>path/name.extension</b>. The file path is relative to the root directory of the Pack. </td><td>xs:string </td><td><p class="starttd">1..1 </p>
<p class="endtd"></p>
</td></tr>
<tr>
<td><a class="el" href="pdsc_components_pg.html#element_component">component</a> </td><td>Grouping element for components. </td><td>ComponentType </td><td>1..* </td></tr>
</table>
<p> </p>
<hr/>
<h1><a class="anchor" id="element_component"></a>
/package/components/.../component</h1>
<p>A component describes a collection of files (source, header, configuration, library) that can be versioned and categorized.</p>
<table class="cmtable" summary="Element: Component">
<tr>
<th>Parent </th><th colspan="3">Element Chain </th></tr>
<tr>
<td><a class="el" href="pdsc_components_pg.html#element_components">components</a> </td><td colspan="3"><a class="el" href="pdsc_components_pg.html#element_components">/package/components</a> </td></tr>
<tr>
<td><a class="el" href="pdsc_components_pg.html#element_components">components</a> </td><td colspan="3"><a class="el" href="pdsc_components_pg.html#element_bundle">/package/components/bundle</a> </td></tr>
<tr>
<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr>
<tr>
<td>Cvendor </td><td>Defines the component vendor this component is shipped by. It is a mandatory part of the component ID and will be inherited from the package vendor if not specified. <br/>
<span class="XML-Token">Must not be specified for a component within a bundle.</span> </td><td>xs:string </td><td>optional </td></tr>
<tr>
<td>Cclass </td><td>Defines the component class to which the component belongs. This is a mandatory part of the component ID. Predefined values can be used as listed in the table <a class="el" href="element_taxonomy.html#CclassType">Component Classes</a>. <br/>
<span class="XML-Token">Must not be specified for a component within a bundle.</span> </td><td>CclassType </td><td>required </td></tr>
<tr>
<td>Cgroup </td><td>Defines the component group to whoch the component belongs. Is a mandatory part of the component ID. Predefined values can be used as listed in the table <a class="el" href="element_taxonomy.html#CgroupType">Component Groups</a>. </td><td>CgroupType </td><td>required </td></tr>
<tr>
<td>Csub </td><td>Defines the component subgroup. Is an optional part of the component ID. The type is described in <a class="el" href="pdsc_components_pg.html#CsubType">Component Subgroups</a>. </td><td>CsubType </td><td>optional </td></tr>
<tr>
<td>Cvariant </td><td>Defines a variant of a component. Is an optional part of the component ID. The variant specifier is a brief string (for example: <span class="XML-Token">release</span>, <span class="XML-Token">debug</span>). </td><td>xs:string [3..32] </td><td>optional </td></tr>
<tr>
<td>Cversion </td><td>Defines the version of this component. Is a mandatory part of the component ID. The version format is described in <a class="el" href="pdsc_package_pg.html#VersionType">Version Type</a>. <br/>
<span class="XML-Token">Must not be specified for a component within a bundle.</span> </td><td>VersionType </td><td>required </td></tr>
<tr>
<td>Capiversion </td><td>For components that are based on an API, it defines the version of the API used by this component. It ensures that the API header file with this or any higher version is acceptable for using that component. The version format is described in <a class="el" href="pdsc_package_pg.html#VersionType">Version Type</a>. </td><td>VersionType </td><td>optional </td></tr>
<tr>
<td>condition </td><td>Enter the <b>id</b> of a <a class="el" href="pdsc_conditions_pg.html#element_conditions">condition</a>. The component is available and can be selected when the condition is true. </td><td>xs:string </td><td>optional </td></tr>
<tr>
<td>maxInstances </td><td>Maximum allowed instances of a component in a project. Default is <span class="XML-Token">1</span> for one instance. The range is [<span class="XML-Token">1..10</span>]. </td><td>xs:integer </td><td>optional </td></tr>
<tr>
<td>isDefaultVariant </td><td>Identifies this component variant to be the preferred variant for tool driven selection [Version 1.4.0] </td><td>xs:boolean </td><td>optional </td></tr>
<tr>
<td>generator </td><td>This links the component with a generator description located in the same file. If this component is selected by the run time configuration, the tool will test whether the configured <a class="el" href="pdsc_generators_pg.html">gpdsc file</a> does already exist or not. If the file is not present, then the command specified by the referenced generator section, will be invoked. If the gpdsc file already exists it will be included into the project </td><td>xs:string </td><td>optional </td></tr>
<tr>
<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr>
<tr>
<td>deprecated </td><td>When set to <span class="XML-Token">true</span>, then the component is deprecated and no longer maintained. Default is <span class="XML-Token">false</span> to indicate an actively maintained component. </td><td>xs:boolean </td><td>0..1 </td></tr>
<tr>
<td>description </td><td>Brief description of the component. </td><td>xs:string </td><td>1..1 </td></tr>
<tr>
<td>RTE_Components_h </td><td>Source code that is copied into the file <a class="el" href="pdsc_components_pg.html#RTE_Components_h">RTE_Components.h</a> when the component is selected by the run time environment configuration. </td><td>xs:string </td><td>0..1 </td></tr>
<tr>
<td>Pre_Include_Global_h </td><td>Source code that is copied into the file <a class="el" href="pdsc_components_pg.html#Pre_Include_Global_h">Pre_Include_Global_h</a> when the component is selected by the run time environment configuration. </td><td>xs:string </td><td>0..1 </td></tr>
<tr>
<td>Pre_Include_Local_Component_h </td><td>Source code that is copied into the file <a class="el" href="pdsc_components_pg.html#Pre_Include_Local_h">Pre_Include_Local_h</a> <Cclass>_<Component_name>.h when the component is selected by the run time environment configuration. </td><td>xs:string </td><td><p class="starttd">0..1 </p>
<p class="endtd"></p>
</td></tr>
<tr>
<td><a class="el" href="pdsc_components_pg.html#element_files">files</a> </td><td>Grouping element for all files that are part of this component. </td><td>group </td><td>1 </td></tr>
</table>
<p> </p>
<p><a class="anchor" id="CsubType"></a><b>Component Subgroups</b></p>
<p>Component Subgroups are specified by the element <em><b>Csub</b>,</em> and create subcategories within Component Classes (<em><b>Cclass</b>)</em> and Component Groups (<em><b>Cgroup</b>)</em>. A <em><b>Csub</b> name</em> is of type <em>xs:string</em> with a length between 3 and 32 characters. No <b><em>Csub</em> names</b> have been predefined.</p>
<p>Subgroups exists in the elements:</p>
<ul>
<li><a class="el" href="pdsc_conditions_pg.html#element_accept">/package/conditions/condition/accept</a></li>
<li><a class="el" href="pdsc_conditions_pg.html#element_require">/package/conditions/condition/require</a></li>
<li><a class="el" href="pdsc_conditions_pg.html#element_deny">/package/conditions/condition/deny</a></li>
<li><a class="el" href="pdsc_components_pg.html#element_component">/package/components/.../component</a></li>
<li><a class="el" href="pdsc_examples_pg.html#element_example_attribute_component">/package/examples/example/attributes/component</a></li>
</ul>
<p><b>Example:</b> </p>
<div class="fragment"><div class="line"><... Csub=<span class="stringliteral">"MyRTOS"</span> Cgroup=<span class="stringliteral">"RTOS"</span> Cclass=<span class="stringliteral">"CMSIS"</span>...></div>
</div><!-- fragment --><p> </p>
<hr/>
<h1><a class="anchor" id="element_files"></a>
/package/.../files</h1>
<p>The group <b>files</b> can appear in various Pack elements. This group is the frame for defining individual file properties.</p>
<p><b>Example:</b> </p>
<div class="fragment"><div class="line"><package></div>
<div class="line"> ...</div>
<div class="line"> <apis></div>
<div class="line"> <api Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"Driver UART"</span> exclusive=<span class="stringliteral">"0"</span>></div>
<div class="line"> <files></div>
<div class="line"> ...</div>
<div class="line"> </files></div>
<div class="line"> </api></div>
<div class="line"> </apis></div>
<div class="line"> ...</div>
<div class="line"> <components></div>
<div class="line"> <component Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"Startup"</span> Cversion=<span class="stringliteral">"3.1.1"</span> > </div>
<div class="line"> <files></div>
<div class="line"> ...</div>
<div class="line"> </files></div>
<div class="line"> </component></div>
<div class="line"> </components></div>
<div class="line"> ...</div>
<div class="line"></package></div>
</div><!-- fragment --><p> </p>
<table class="cmtable" summary="Element: Files">
<tr>
<th>Parents </th><th colspan="3">Element Chain </th></tr>
<tr>
<td><a class="el" href="pdsc_apis_pg.html#element_api">api</a> </td><td colspan="3"><a class="el" href="pdsc_apis_pg.html#element_api">/package/apis/api</a> </td></tr>
<tr>
<td><a class="el" href="pdsc_components_pg.html#element_component">component</a> </td><td colspan="3"><a class="el" href="pdsc_components_pg.html#element_component">/package/components/component</a> </td></tr>
<tr>
<td><a class="el" href="pdsc_components_pg.html#element_component">component</a> </td><td colspan="3"><a class="el" href="pdsc_components_pg.html#element_component">/package/components/bundle/component</a> </td></tr>
<tr>
<th>Child Elements </th><th>Description </th><th>Type </th><th>Occurrence </th></tr>
<tr>
<td><a class="el" href="pdsc_components_pg.html#element_file">file</a> </td><td>Frame for the individual <a class="el" href="pdsc_components_pg.html#element_file">file</a> of a component. </td><td>group </td><td>1..* </td></tr>
</table>
<p> </p>
<hr/>
<h1><a class="anchor" id="element_file"></a>
/package/.../files/file</h1>
<p>The element <b>file</b> is the mechanism to attach files to the software. The file purpose is defined through the <b>category</b> attribute. The <b>name</b> attribute identifies the file.</p>
<p><b>Example:</b> </p>
<div class="fragment"><div class="line"><package></div>
<div class="line"> ...</div>
<div class="line"> <apis></div>
<div class="line"> <api Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"Driver UART"</span> exclusive=<span class="stringliteral">"0"</span>></div>
<div class="line"> <files></div>
<div class="line"> <file category=<span class="stringliteral">"doc"</span> name=<span class="stringliteral">"Driver/Doc/UART/html/index.html"</span>/></div>
<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"Driver/Include/Driver_UART.h"</span>/></div>
<div class="line"> </files></div>
<div class="line"> </api></div>
<div class="line"> </apis></div>
<div class="line"> ...</div>
<div class="line"> <components></div>
<div class="line"> <component Cclass=<span class="stringliteral">"Device"</span> Cgroup=<span class="stringliteral">"Startup"</span> Cversion=<span class="stringliteral">"3.1.1"</span> > </div>
<div class="line"> <files></div>
<div class="line"> <file category=<span class="stringliteral">"header"</span> name=<span class="stringliteral">"Device/Include/system_stm32f2xx.h"</span>/></div>
<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"Device/Source/ARM/startup_stm32f2xx.s"</span> attr=<span class="stringliteral">"template"</span>/></div>
<div class="line"> <file category=<span class="stringliteral">"source"</span> name=<span class="stringliteral">"Device/Source/system_stm32f2xx.c"</span> attr=<span class="stringliteral">"template"</span>/></div>
<div class="line"> </files></div>
<div class="line"> </component></div>
<div class="line"> </components></div>
<div class="line"> ...</div>
<div class="line"></package></div>
</div><!-- fragment --><p> </p>
<table class="cmtable" summary="Element: File">
<tr>
<th>Parents </th><th colspan="3">Element Chain </th></tr>
<tr>
<td><a class="el" href="pdsc_components_pg.html#element_files">files</a> </td><td colspan="3"><a class="el" href="pdsc_components_pg.html#element_files">/package/apis/api/files</a> </td></tr>
<tr>
<td><a class="el" href="pdsc_components_pg.html#element_files">files</a> </td><td colspan="3"><a class="el" href="pdsc_components_pg.html#element_files">/package/components/component/files</a> </td></tr>
<tr>
<td><a class="el" href="pdsc_components_pg.html#element_files">files</a> </td><td colspan="3"><a class="el" href="pdsc_components_pg.html#element_files">/package/components/bundle/component/files</a> </td></tr>
<tr>
<td><a class="el" href="pdsc_components_pg.html#element_files">files</a> </td><td colspan="3"><a class="el" href="pdsc_generators_pg.html#element_gen_project_files">/package/generators/generator/project_files</a> </td></tr>
<tr>
<th>Attributes </th><th>Description </th><th>Type </th><th>Use </th></tr>
<tr>
<td>name </td><td>File path, file name, and file extension in the format <b>path/name.extension</b>. The file path is relative to the root directory of the Pack. </td><td>xs:string </td><td>required </td></tr>
<tr>
<td>path </td><td>for <b>category="header"</b> the path attribute explicitly can be used to specify the include path to be added to the commandline of the build tools, specifying an imcomplete path. This way the include file requires the specification of the subdirectory (e.g. #include "sub_dir/includeFile.h") which can act as acting as namespace for header files which otherwise have the same name. </td><td>xs:string </td><td>optional </td></tr>
<tr>
<td>category </td><td>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>. </td><td><a class="el" href="pdsc_components_pg.html#FileCategoryEnum">FileCategoryEnum</a> </td><td>required </td></tr>
<tr>
<td>attr </td><td>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>. </td><td><a class="el" href="pdsc_components_pg.html#FileAttributeEnum">FileAttributeEnum</a> </td><td>optional </td></tr>
<tr>
<td>condition </td><td>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>. If the condition resolves to <span class="XML-Token">false</span>, then the element will be ignored. For example, a library might be specific for a certain toolchain or processor instruction set. </td><td>xs:string </td><td>optional </td></tr>
<tr>
<td>select </td><td>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. </td><td>xs:string </td><td>optional </td></tr>
<tr>
<td>src </td><td>Path information. The path is specified relative to the Pack Description File. If <em><b>category</b> is</em> set to <span class="XML-Token">library</span>, then the <em><b>src</b> string</em> can contain a list of directory paths separated by semicolons. A debugger will search those paths for locating the source files of the modules archived in the library supporting the debugging of library code. </td><td>xs:string </td><td>optional </td></tr>
<tr>
<td>version </td><td>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. The version format is described in <a class="el" href="pdsc_package_pg.html#VersionType">Version Type</a>. </td><td>VersionType </td><td>optional </td></tr>
<tr>
<td>public </td><td>Set publishing permissions for the documentation. If <em><public></em> is <span class="XML-Token">true</span>, then the vendor gives permission to extract the documentation from the pack and publish it on a web-page. Links to web pages are assumed to be public. The default value is <span class="XML-Token">false</span>. </td><td>xs:boolean </td><td>optional </td></tr>
</table>
<p> </p>
<p><a class="anchor" id="FileAttributeEnum"></a><b>Table: File Attributes</b></p>
<p>The file attribute defines the special handling in the project when being used as configuration, template, or interface file. The table lists the values available as a file attribute. </p>
<table class="cmtable" summary="Type: FileAttributeEnum">
<tr>
<th>attr= </th><th>Description </th></tr>
<tr>
<td class="XML-Token">config </td><td>The file is a configuration file of the component. It is expected that only configuration options are modified. The file is managed as part of the component, as a project-specific file typically copied into the component section of the project.s </td></tr>
<tr>
<td class="XML-Token">template </td><td><p class="starttd">The file is used as a source code template file. It is expected to be edited and extended by the software developer. The file can be copied into a user section of the project. </p>
<p class="endtd"></p>
</td></tr>
</table>
<dl class="section note"><dt>Note</dt><dd>Header files with the attribute <span class="XML-Token">config</span> must be located in a directory within the pack that is not otherwise specified as an "include folder" of this or any other component's files of the category "header" or "include". For example: <pre class="fragment"><file category="header" name="src/config/user_config.h" attr="config" version="1.0.0" />
</pre> Config files are copied into the project folder and are adopted specifically for that project. Due to the include path search order of the compiler, chances exist that the unmodified header file in the pack repository is found first and used by the compiler (creating unexpected results).</dd></dl>
<p> </p>
<p><a class="anchor" id="FileCategoryEnum"></a><b>Table: File Categories</b></p>
<p>File category types define the use of component files within the application. Typically, these files are added to the project and processed by the build tools.</p>
<p>File categories are used in the following elements:</p>
<ul>
<li><a class="el" href="pdsc_components_pg.html#element_file">/package/.../files/file</a></li>
<li><a class="el" href="pdsc_generators_pg.html#element_gen_file">/package/generators/generator/files/file</a></li>
<li><a class="el" href="cpdsc_pg.html#element_component_file">/package/create/project/select/component/file</a></li>
</ul>
<p>The table lists the predefined values for a file category. </p>
<table class="cmtable" summary="Type: FileCategoryEnum">
<tr>
<th>category= </th><th>Description </th></tr>
<tr>
<td class="XML-Token">doc </td><td>Documentation </td></tr>
<tr>
<td class="XML-Token">header </td><td>Header file used in the component. Sets an include file path and adds the file name attribute to the list of files to be added to a module using the <b>#include</b> statement. Note: specify only those files as header files that form part of the API of the component, required to use the component </td></tr>
<tr>
<td class="XML-Token">include </td><td>Sets an include file path. Note: ensure that the name attribute specifies a directory and ends with a '/'. </td></tr>
<tr>
<td class="XML-Token">library </td><td>Library file </td></tr>
<tr>
<td class="XML-Token">object </td><td>Object file that can be added to the application </td></tr>
<tr>
<td class="XML-Token">source </td><td>Startup-, system-, and other C/C++, assembler, etc. source files </td></tr>
<tr>
<td class="XML-Token">sourceC </td><td>C source file </td></tr>
<tr>
<td class="XML-Token">sourceCpp </td><td>C++ source file </td></tr>
<tr>
<td class="XML-Token">sourceAsm </td><td>Assembly source file </td></tr>
<tr>
<td class="XML-Token">linkerScript </td><td>linker script file that can be selected by tool-chains </td></tr>
<tr>
<td class="XML-Token">utility </td><td>a command line tool that can be configured for pre- or post-processing during the build process </td></tr>
<tr>
<td class="XML-Token">image </td><td>Files of image type are marked for special processing into a File System Image embedded into the application. This category requires the <em>attr</em> being set to <em>template</em>. </td></tr>
<tr>
<td class="XML-Token">preIncludeGlobal </td><td>The specified file is added as a pre-include file to the compiler command line for all modules of the whole <b>project</b> (globally). </td></tr>
<tr>
<td class="XML-Token">preIncludeLocal </td><td>The specified file is added as a pre-include file to the compiler command line for all modules of the <b>component</b> (locally). </td></tr>
<tr>
<td class="XML-Token">other </td><td>Other file types not covered in the list above </td></tr>
</table>
<p> </p>
<hr/>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="packFormat.html">Pack Description (*.pdsc) Format</a></li>
<li class="footer">Generated on Wed Jul 10 2019 15:21:01 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
-->
</li>
</ul>
</div>
</body>
</html>
|