CMSIS-Pack  Version 1.3
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.

Example:

<package schemaVersion="1.2" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="PACK.xsd">
<vendor>ExampleVendor</vendor>
<name>STM32F2xx_DFP</name> <!-- name of package -->
<description>Device Family Package for STMicroelectronics STM32F2 Family of ARM Cortex-M3 based Microcontroller</description>
<url></url>
<supportContact>http://www.arm.com/support</supportContact>
<license>.\END_USER_LICENCE_AGREEMENT.rtf</license>
<releases>
<release version="1.0.0" date="14.12.2000">
First Release version of STM32F2 Device Family Pack.
</release>
<release version="0.9.0">
Beta version of STM32F2 Device Family Pack.
</release>
</releases>
<keywords> <!-- keywords for indexing -->
<keyword>ST</keyword>
<keyword>Device Support</keyword>
<keyword>Device Family Package ST</keyword>
<keyword>STM32F2</keyword>
<keyword>STM32F2xx</keyword>
</keywords>
<taxonomy> <!-- class and group descriptions -->
<description Cclass="Board Support">
Generic Interfaces and Templates for Evaluation and Development Boards
</description>
</taxonomy>
...
</package>

 

/package

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: "http://www.w3.org/2001/XMLSchema-instance" 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 Web location of the Software Pack. URL can be used by installers for downloading, updating, or checking versions. 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
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 ben 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

A version number can consist of numbers and letters separated by the characters: . (dot), - (dash), _ (underscore). The version format itself must remain unchanged throughout the lifecycle. Otherwise, a reliable version comparison is impossible. It is recommended to use a version format with three numbers separated by dots. major.minor.build.

Note
For configuration files, it might be more applicable to use a single incrementing number for the version.

Version types are used in:

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

<release version="1.4.2" ...>

 


/package/keywords

Is the group element for wrapping keywords, which can be used to find a PACK. Keywords can be exported to web pages to provide information for search engines, such as Google.

Example:

<package>
...
<keywords>
<keyword>ARM</keyword>
<keyword>Cortex-M</keyword>
<keyword>TCP/IP Stack</keyword>
</keywords>
...
</package>

 

Parent Element Element Chain
package /package
Child Elements Description Type Occurrence
keyword Element that encloses one keyword. Enter a keyword between the opening and closing tag of this element. xs:string 1..1

 


/package/releases

Contains the release history of the PACK. This element is mandatory. No more than one such group can exist in a PACK. It contains the full release history of the PACK.

Example:

<package>
...
<releases>
...
</releases>
...
</package>

 

Parent Element Element Chain
package /package
Child Element Description Type Occurrence
release Contains the version number of the release with some brief information about the main changes in that specific release. xs:string 1..*

 


/package/releases/release

Contains brief information of the main changes in each release version of a PACK. The content is a string written between the opening and closing release tags. The latest release version is always listed on top.

Example:

<releases>
<release version="1.1.1">Fixed a problem with the feature xyz.
</release>
<release version="1.1.0">Introduces a new feature xyz.
</release>
<release version="1.0.0">First published version.
</release>
</releases>

 

Parent Element Element Chain
releases /package/releases
Attributes Description Type Use
version Version number of the release. The version format is described in Version Type. VersionType required
date Release date. xs:date optional
deprecated Pack is no longer officially supported after the set date. It will be excluded from checks for update. Deprecated packs may remain available for download. Tools will continue to work but may provide indicators highlighting end of support for the pack and its content. Not recommended for use with new projects. xs:date optional
replacement Specifies the vendor and name of the Pack that shall be used instead. Use in conjunction with the deprectated attribute. E.g. the maintainer of the PACK A.X_DFP changes from vendor A to vendor B. In this case the attribute deprecated gets set in the A.X_DFP.pdsc and the replacement attribute set to B.X_DFP. Tools use this information to redirect users to a supported pack. xs:string optional

 


/package/taxonomy

Group to list description elements that define component classes and component group names used within a package description. This element is optional.

Example:

<package>
...
<taxonomy>
...
</taxonomy>
...
</package>

 

Parent Element Element Chain
package /package
Child Elements Description Type Occurrence
description Describes or defines a component class or class-group combination. TaxonomyDescriptionType 1..*

 


/package/taxonomy/description

This element describes a component class or the combination bwtween a component class and a component group. Components are categorized by Cclass and Cgroup. The creator of a package can define names for Cclass and Cgroup. Thus, configuration tools can display the set of available components. A document can be referenced using the attribute doc. The attribute generator can The description itself is a string entered between the opening and closing tags of the element description.

It is recommended to use an already agreed taxonomy for interchangeable components. For example, the combinaion of class CMSIS and group Startup is defined for the device-specific CMSIS-CORE files.

 

Example:

<taxonomy>
<description Cclass="Board Support">Generic Interfaces for Evaluation and Development Boards</description>
<description Cclass="CMSIS" doc="CMSIS\Documentation\General\html\index.html">Cortex Microcontroller Software Interface Components</description>
<description Cclass="Device" doc="CMSIS\Documentation\Core\html\index.html">Startup, System Setup</description>
<description Cclass="CMSIS Driver" doc="CMSIS\Documentation\Driver\html\index.html">Unified Device Drivers compliant to CMSIS-Driver Specifications</description>
<description Cclass="File System">File Drive Support and File System</description>
<description Cclass="Graphics">Graphical User Interface</description>
<description Cclass="Network">Network Stack using Internet Protocols</description>
<description Cclass="USB">Universal Serial Bus Stack</description>
</taxonomy>

 

Parent Element Element Chain
taxonomy /package/taxonomy
Attributes Description Type Use
Cclass Component Class Name. Can be defined by the creator of the package. Predefined values can be used as listed in the table Component Classes. Cclass required
Cgroup Component Group Name. Can be defined by the creator of the package. Predefined values can be used as listed in the table Component Groups. CgroupType optional
doc Reference to documentation. xs:string optional
generator Reference to a generator. Enter the id value of the element /package/generators/generator. xs:string optional

 

Table: Component Classes

Component Class names are strings with a minimum length of 3 characters and a maximum length of 32 characters. Component class names are specified in the section /package/taxonomy/description.

These values can be used in the elements:

Example:

<... Cclass="CMSIS" ...>

 

The table lists predefined Component Classes.

Cclass= Description
Board Support Components providing interfaces for Evaluation and Development Boards
CMSIS Components defined by Cortex Microcontroller Software Interface Standard (e.g. CMSIS-CORE, CMSIS-DSP and CMSIS-RTOS)
Device Components containing device specific implementations of non-standard APIs (e.g. HAL drivers, CMSIS Startup files)
CMSIS Driver Components implementing unified device drivers compliant to CMSIS-Driver (e.g. UART, SPI, USB, etc.)
File System Components implementing some kind of File Systems (e.g. Flash or RAM based file systems)
Graphics Components implementing some kind of Display and Graphics Software
Network Components implementing some kind of Network Communications (e.g. TCP/IP Stack)
USB Components implementing some kind of USB interfaces (e.g. Host and Device interfaces)

 

Table: Component Groups

Component Group names are specified by the element Cgroup and create categories within a Component Class specified by the element Cclass. The creator of the PACK can define the names in the element /package/taxonomy/description. A Component Group name is string with a lenght between 3 and 32 characters.

Example:

<... Cgroup="RTOS" Cclass="CMSIS"...>

 

Component Groups can be used in the elements:

The table lists predefined values for the Component Class Cclass="CMSIS". No other Component Groups have been defined so far.

Cgroup= Description
CORE A component containing device support in accordance to the CMSIS-CORE specification (startup, system and device files)
DSP A component implementing the CMSIS-DSP API specification.
RTOS A component implementing the CMSIS-RTOS API specification.