Open-CMSIS-Pack  Version 1.7.44
Delivery Mechanism for Software Packs
/package/requirements

There are the following requirement types:

  • The <packages> 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.
  • The <compilers> 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.
  • The <languages> section allows to specify requirements regarding the programming language, for example C99 standard. If no language requirements are set, ANSI C is assumed.
  • The <targets> section allows to specify requirements regarding the device or device series. If no target requirements are set, the pack is listed as generic that works with any device, board, or processor.

Example requirements section:

<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/>
...
<requirements>
<packages>
<package name="STM32F4xx_DFP" vendor="Keil" version="2.8.0:2.8.0"/>
</packages>
<compilers>
<compiler name="ARMCC" version="5.0.0:5.99.0"/>
</compilers>
<languages>
<language name="C" version="99"/>
</languages>
</requirements>
...
</package>

/requirements

Parents Element Chain
package /package
Attributes Description Type Use
Child Elements Description Type Occurrence
packages List of software packs required for the project to build. PackagesType <0..1>
compilers List of compilers required for the project to build. Support for all compilers is assumed when not specified. CompilersType <0..1>
languages List of language standards required for the project to build. Assuming ANSI C if not set. LanguagesType <0..1>
targets Restrict a software pack to a list of devices, boards, or processor cores that are supported. TargetsType <0..1>

 


/package/requirements/packages

Example packages section:

<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/>
...
<requirements>
<packages>
<package name="STM32F4xx_DFP" vendor="Keil" version="2.8.0:2.8.0"/>
</packages>
</requirements>
...
</package>

/package

Parents Element Chain
packages /package/requirements/packages
Attributes Description Type Use
vendor specify vendor of the package (e.g. "ARM") RestrictedString required
name Name of the pack RestrictedString required
version Version of the required software pack which can be:
  • Minimum version (higher versions are accepted).
  • Version range specified with min_version:max_version. min_version must be lower or equal than max_version. If min_version and max_version are equal, the version must match.
  • If no version is specified, the latest available version is assumed.
VersionType optional

 


/package/requirements/compilers

Example compilers section:

<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/>
...
<requirements>
<compilers>
<compiler name="ARMCC" version="5.0.0:5.99.0"/>
</compilers>
</requirements>
...
</package>

/compiler

Parents Element Chain
requirements element_requirements
Attributes Description Type Use
name Name of the required compiler (i.e. "ARMCC", "IAR") CompilerEnumType required
version Version of the required compiler which can be:
  • Minimum version (higher versions are accepted).
  • Version range specified with min_version:max_version. min_version must be lower or equal than max_version. If min_version and max_version are equal, the version must match.
VersionType required

 


/package/requirements/languages

Example languages section:

<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/>
...
<requirements>
<languages>
<language name="C" version="99"/>
<languages>
</requirements>
...
</package>

/language

Parents Element Chain
requirements element_requirements
Attributes Description Type Use
name Name of the programming language (i.e. "C", "C++") xs:string required
version Version of the language standard (i.e. 90, 99, etc.). The setting will be reflected in the compiler commandline. xs:string required

 


/package/requirements/targets

The targets section marks a pack device specific. Multiple targets can be listed to allow usage for several devices or device series. The indented usage is for installers and web pages to show packs only for specific devices.

It allows also to specify boards and processor cores, as overtime this element may simplify conditions. However, currently it has no impact on the selection of pack content such as components. Therefore these attributes are experimental.

Example targets section:

<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd"/>
...
<requirements>
<targets>
<target Dvendor="STMicroelectronics:13" Dname="STM32H7*"/> <!-- supports STM32H7 device series -->
<target Dvendor="STMicroelectronics:13" Dname="STM32U585"/> <!-- and supports STM32U585 device -->
</targets>
</requirements>
...
</package>

/target

Parents Element Chain
targets /package/requirements/targets
Attributes Description Type Use
Dvendor Specifies the silicon vendor of the device xs:string optional
Dname Specifies the name of the device (wildcards possible) xs:string optional
Dcore Specifies a processor core (experimental) xs:string optional
Bvendor Specifies the board vendor (experimental) xs:string optional
Bname Specifies the board name (experimental) xs:string optional
Brevision Specifies the board revision (experimental) xs:string optional