CMSIS Packs  Version 0.10
Mechanism to install software, device support, APIs, and example projects
 All Pages
/package/components level

The element /package/components 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 condition that must resolve to true; if it is false the component or file is not applicable in the given context.

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.

In case multiple interdependant components that belong to the same Cclass form part of a solution, these can be grouped in a so called bundle. A bundle specifies the attributes Cclass, Cversion and optionally Cgroup and Cvendor. Components within a bundle inherit the attributes set by the bundle and must not set these attributes. Bundles ensure consistency of attributes across multiple interworking components and restrict the mix and match of components within a Cclass from different solutions.

Example

<package>
...
<components>
<!-- component has dependency described by "CMSIS Core" condition" -->
<component Cclass="CMSIS" Cgroup="CORE" Cversion="3.1.0" condition="CMSIS Core">
<description>CMSIS-CORE for Cortex-M, SC000, and SC300 processor.</description>
<files>
<!-- CPU independent -->
<file category="doc" name="CMSIS\Documentation\Core\html\index.html"/>
<file category="header" name="CMSIS\Include\core_cmFunc.h"/>
<file category="header" name="CMSIS\Include\core_cmInstr.h"/>
<!-- CPU dependent -->
<file category="header" condition="CM0" name="CMSIS\Include\core_cm0.h"/>
<file category="header" condition="CM0+" name="CMSIS\Include\core_cm0plus.h"/>
<file category="header" condition="CM3" name="CMSIS\Include\core_cm3.h"/>
<file category="header" condition="CM4" name="CMSIS\Include\core_cm4.h"/>
<file category="header" condition="CM4" name="CMSIS\Include\core_cm4_simd.h"/>
<file category="header" condition="SC000" name="CMSIS\Include\core_sc000.h"/>
<file category="header" condition="SC300" name="CMSIS\Include\core_sc300.h"/>
</files>
</component>
<component Cclass="CMSIS" Cgroup="DSP" Cversion="1.1.0" condition="CMSIS DSP">
<description>CMSIS-DSP Library for Cortex-M0, Cortex-M3 and Cortex-M4 as well as SC000 and SC300 processor based devices</description>
<files>
<!-- CPU independent -->
<file category="doc" name="CMSIS\Documentation\DSP\html\index.html"/>
<file category="header" name="CMSIS\Include\arm_math.h"/>
<!-- CPU and Compiler dependent -->
<!-- ARMCC -->
<file category="library" condition="CM0_LE_ARMCC" name="CMSIS\Lib\ARM\arm_cortexM0l_math.lib"/>
<file category="library" condition="CM0_BE_ARMCC" name="CMSIS\Lib\ARM\arm_cortexM0b_math.lib"/>
<file category="library" condition="CM3_LE_ARMCC" name="CMSIS\Lib\ARM\arm_cortexM3l_math.lib"/>
<file category="library" condition="CM3_BE_ARMCC" name="CMSIS\Lib\ARM\arm_cortexM3b_math.lib"/>
<file category="library" condition="CM4_LE_ARMCC" name="CMSIS\Lib\ARM\arm_cortexM4l_math.lib"/>
<file category="library" condition="CM4_BE_ARMCC" name="CMSIS\Lib\ARM\arm_cortexM4b_math.lib"/>
<file category="library" condition="CM4F_LE_ARMCC" name="CMSIS\Lib\ARM\arm_cortexM4lf_math.lib"/>
<file category="library" condition="CM4F_BE_ARMCC" name="CMSIS\Lib\ARM\arm_cortexM4bf_math.lib"/>
<!-- GCC -->
<file category="library" condition="CM0_LE_GCC" name="CMSIS\Lib\GCC\libarm_cortexM0l_math.a"/>
<file category="library" condition="CM3_LE_GCC" name="CMSIS\Lib\GCC\libarm_cortexM3l_math.a"/>
<file category="library" condition="CM4_LE_GCC" name="CMSIS\Lib\GCC\libarm_cortexM4l_math.a"/>
<file category="library" condition="CM4F_LE_GCC" name="CMSIS\Lib\GCC\libarm_cortexM4lf_math.a"/>
<!-- G++ -->
<file category="library" condition="CM0_LE_G++" name="CMSIS\Lib\G++\libarm_cortexM0l_math.a"/>
<file category="library" condition="CM3_LE_G++" name="CMSIS\Lib\G++\libarm_cortexM3l_math.a"/>
<file category="library" condition="CM4_LE_G++" name="CMSIS\Lib\G++\libarm_cortexM4l_math.a"/>
<file category="library" condition="CM4F_LE_G++" name="CMSIS\Lib\G++\libarm_cortexM4lf_math.a"/>
</files>
</component>
<component condition="ARM_CM0" Cclass="Device" Cgroup="Startup" Cversion="3.1.1">
<description>System Startup for generic ARM Cortex-M0 device</description>
<files>
<file category="header" name="Device\ARM\ARMCM0\Include\ARMCM0.h"/>
<file category="header" name="Device\ARM\ARMCM0\Include\system_ARMCM0.h"/>
<file category="source" condition="Compiler_ARM" name="Device\ARM\ARMCM0\Source\ARM\startup_ARMCM0.s"/>
<file category="source" condition="Compiler_GCC" name="Device\ARM\ARMCM0\Source\GCC\startup_ARMCM0.S"/>
<file category="source" condition="Compiler_G++" name="Device\ARM\ARMCM0\Source\G++\startup_ARMCM0.S"/>
<file category="source" condition="Compiler_IAR" name="Device\ARM\ARMCM0\Source\IAR\startup_ARMCM0.s"/>
<file category="source" name="Device\ARM\ARMCM0\Source\system_ARMCM0.c" attr="template"/>
</files>
</component>
</components>
...
</package>

 

/package/components

Grouping element containing a choice of at least one bundle or component. No more than one element components can exist in a PACK.

Parent Element Chain
package /package
Child Elements Description Type Occurrence
bundle Grouping element for a collection of interoperable components belonging to the same Cclass ComponentType 0..*
component Grouping element for components ComponentType 0..*

 


/package/components/bundle

A bundle section describes a named collection of interoperable components of the identical Cvendor, Cclass and Cversion. Components enclosed in a bundle must not specify any of the above attributes. In addition to components a bundle has the mandatory elements description and a documentation.

Parent Element Chain
components /package/components
Elements Description Type Occurrence
description Brief description of the bundle xs:string 1..1
documentation Documentation for the bundle: 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. xs:string 1..1
Attributes Description Type Occurrence
Cbundle Defines the name of the bundle. It becomes a mandatory part of the component ID. xs:string 1..1
Cclass Defines the component class all components in the bundle belong to. Is a mandatory part of the component ID. CclassType 1..1
Cvendor 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. xs:string 0..1
Cversion Defines the version of all component contained in the bundle. The component version is a mandatory part of the component ID. The recommended version format is major.minor.build. Version management relies on version format remaining unchanged between versions and that version value is always being incremented. VersionType 1..1
Child Elements Description Type Occurrence
component Grouping element for components. A bundle contains at least one component. ComponentType 1..*

 


/package/components/.../component

A component section describes a collection of source, header, configuration and library files with additional meta information categorized and versioned

Parent Element Chain
components /package/components
Attributes Description Type Occurrence
Cvendor 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. Must not be specified for a component within a bundle xs:string 0..1
Cclass Defines the component class this component belongs to. Is a mandatory part of the component ID. Must not be specified for a component within a bundle CclassType 1..1
Cgroup Defines the component group this component belongs to. Is a mandatory part of the component ID. CgroupType 1..1
Csub Defines the component sub-group this component belongs to. Is an optional part of the component ID. CsubType 0..1
Cversion Defines the version of this component. Is a mandatory part of the component ID. The recommended version format is major.minor.build. Version management relies on version format remaining unchanged between versions and that version value is always being incremented. Must not be specified for a component within a bundle VersionType 1..1
Cvariant Defines a variant of a component. Is an optional part of the component ID. The variant specifier is a brief string (e.g. release, debug). Version management relies on variants to remain unchanged between versions. VariantType 0..1
condition Component is only used when the condition with the specified attribute id is true. xs:string 0..1
maxInstances Maximum allowed number of instances of a component in a project. Default is 1 for one instance. 1..10 (integer) 0..1
Child Elements Description Type Occurrence
deprecated When set to "true" the component is deprecated and no longer maintained. Default is "false" to indicate an actively maintained component. xs:boolean 0..1
description Brief overview description of the component. xs:string 1..1
RTE_Components_h Source code that is copied into the file RTE_Components.h when the component is included into a software project. xs:string 0..1
files Grouping element for all file descriptions that are part of this component.. group 0..1

 


/package/.../files

The group files can appear in various PACK elements. This group is the frame for defining individual file properties.

Example:

<package>
...
<apis>
<api Cclass="Device" Cgroup="Driver UART" exclusive="0">
<files>
...
</files>
</api>
</apis>
...
<components>
<component Cclass="Device" Cgroup="Startup" Cversion="3.1.1" >
<files>
...
</files>
</component>
</components>
...
</package>

 

Parents Element Chain
api /package/apis/api/files
component /package/components/component/files
Child Elements Description Type Occurrence
file Frame for the individual file of a component. group 0..1

 


/package/.../files/file

The element file is the mechanism to attach required files to the software. The file purpose is defined through the category attribute. The name attribute identifies the file. No child element exist.

Example:

<package>
...
<apis>
<api Cclass="Device" Cgroup="Driver UART" exclusive="0">
<files>
<file category="doc" name="Driver\Doc\UART\html\index.html"/>
<file category="header" name="Driver\Include\Driver_UART.h"/>
</files>
</api>
</apis>
...
<components>
<component Cclass="Device" Cgroup="Startup" Cversion="3.1.1" >
<files>
<file category="header" name="Device\Include\system_stm32f2xx.h"/>
<file category="source" name="Device\Source\ARM\startup_stm32f2xx.s" attr="template"/>
<file category="source" name="Device\Source\system_stm32f2xx.c" attr="template"/>
</files>
</component>
</components>
...
</package>

 

Parents Element Chain
files /package/apis/api/files
files /package/components/component/files
Attributes Description Type Occurrence
name 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. xs:string 1..1
category Defines the purpose of the file (e.g. documentation, source code, header file, library, etc.) FileCategoryEnum 1..1
attr The optional file attribute imply special handling of files (e.g. configuration files are copied into the local RTE folder of the project and are managed by RTE. Template and Interface files can be selected to be copied and added to a user group of the project) FileAttributeEnum 0..1
condition File is only used if the condition with the specified attribute id resolves to true. E.g. a library may be specific for a certain processor's instruction set or tool chain. xs:string 0..1
select A brief description of the file and it's purpose. The select attribute is required when attr is set to template or interface. When multiple template files in a component have the same select string they are treated as a single selectable template. This way multiple template or interface files can be bundled. xs:string 0..1
src If file category is library the src string contains a list of directory paths seperated by a semicolon. The path is specified relative to the PACK Description file. A debugger will search the given paths for locating the source files of the modules archived in the library supporting the debugging of library code. xs:string 0..1
version File specific version information. This is used for files with attribute config as they are fully version managed. if a file does not have a version specified the component version is used. xs:string 0..1