CMSIS-Pack  Version 1.4.9
Delivery Mechanism for Software Packs
 All Pages
/package element

The basic package information captures the package vendor, the package name, a brief description of the package, and the schema version. Additional elements support the logistics of handling packages. The url specifies the origin of the description. It may be left empty if the pack will not be uploaded onto a web server. A license file might point to license agreements. A list of keywords assists searching for packages.


<package schemaVersion="1.4" xmlns:xs="" xs:noNamespaceSchemaLocation="PACK.xsd">
<name>STM32F2xx_DFP</name> <!-- name of package -->
<description>Device Family Package for STMicroelectronics STM32F2 Family of ARM Cortex-M3 based Microcontroller</description>
<release version="1.0.0" date="2014-12-14">
First Release version of STM32F2 Device Family Pack.
<release version="0.9.0">
Beta version of STM32F2 Device Family Pack.
<keywords> <!-- keywords for indexing -->
<keyword>Device Support</keyword>
<keyword>Device Family Package ST</keyword>
<taxonomy> <!-- class and group descriptions -->
<description Cclass="Board Support">
Generic Interfaces and Templates for Evaluation and Development Boards



Parent Element Element Chain
root Document root
Attributes Description Type Use
schemaVersion CMSIS-PDSC schema version used for describing the Software Pack (for example, "1.2"). The version format is described in Version Type. VersionType required
xmlns:xs Is set to: "" to indicate compliance to the XML format. xs:decimal required
xs:noNamespaceSchemaLocation Path and file name of the PACK.xsd Schema. For example, "PACK.xsd". xs:string required
Child Elements Description Type Occurrence
name Name of the Software Pack. Could be displayed by an installer. xs:string 1..1
vendor Name of the supplier or vendor of the Software Pack. xs:string 1..1
description Brief description of the Software Pack. xs:string 1..1
url HTTP URL or file URI location of the Software Pack. The URL can be used by installers for downloading, updating, or checking versions. If left empty, the Pack cannot be updated automatically from a server location. xs:anyURI 1..1
supportContact HTTP URL or e-mail address for users to get support for the content of the PACK xs:string 0..1
license Path to a license document. xs:string 0..1
requirements Specifies other CMSIS-Packs, programming languages and compiler as well as their respective version or version range required by the components in this pack. RequirementsType 0..1
create Use only when creating CMSIS software projects. Refer to Project Description (*.CPDSC) Format for details. CreateType 0..1
releases Version release history with brief information about a Software Pack. ReleasesGroup 1..1
keywords Defines keywords that might be used to find a Software Pack. Keywords may be also exported to web page to provide information for search engines, such as Google. group 0..1
generators Specifies generator tools that have been used to create the Software Pack. GeneratorsType 0..1
devices Defines the device family, the devices, and optionally variants (such as boards). group 0..1
boards Defines the development board support package. BoardsType 0..1
taxonomy Contains the description for a component class or for the combination between a component class and component group. TaxonomyType 0..1
apis Defines the API (Application Programming Interfaces) specifications contained in the Software Pack. ApisType 0..1
conditions Is a group that contains dependency definitions used within the PACK. These rules can describe dependencies on various levels: device attributes, components, or tools. Conditions are referenced by components and files. ConditionsType 0..1
examples Lists the examples that are included in the PACK. group 0..1
components Lists the software components that are included in the PACK. group 0..1


Version Type

CMSIS-PACK version specification is inspired by the Semantic Versioning 2.0.0. Under this scheme, version numbers and the way they are incremented convey a meaning about the underlying content quality and the significance of changes from one version to the next. A version consists of 3 mandatory and 2 optional sections:

MAJOR.MINOR.PATCH[-Pre Release][+Build Metadata]
  1. MAJOR: increment MAJOR for backwards incompatible changes
    • non-negative integer
    • 0 indicates initial development, unstable and anything may change at any time
      ARM.CMSIS.0.9.0.pack < ARM.CMSIS.1.0.0.pack
  2. MINOR: increment MINOR for backwards compatible additions and changes
    • non-negative integer
    • accepted: – trailing zeros are accepted but effectively ignored for version comparison
      ARM.CMSIS.1.02.0.pack equal to ARM.CMSIS.1.2.0.pack
  3. PATCH: increment PATCH for bug fixes not affecting compatibility
    • non-negative integer
    • accepted:
      • trailing zeros are accepted but effectively ignored for version comparison
      • a version ending after MINOR without specifying PATCH. In this case PATCH == 0 is assumed.
        ARM.CMSIS.1.1.pack equal to ARM.CMSIS.1.1.0.pack
  4. pre release: the optional pre-release string must start with a hyphen ('-') immediately after the PATCH and consists of a series of dot separated ASCII alphanumerics and hyphen ([0-9A-Za-z-]).
    • accepted: the pre-release string immediately following the PATCH without a hyphen if the first item is a character.
  5. build metadata: the optional build metadata must be denoted by appending a plus sign ('+') and a series of dot separated identifiers. Identifiers comprise only ASCII alphanumerics and hyphen [0-9A-Za-z-]+. Two versions that differ only in the build metadata, have the same precedence.

The above is extending the recommendation that was given in previous version of this specification.:

Version types are used in:

Example: this example applies to /package/releases/release.

<release version="1.4.2-RC2" ...>