CMSIS-Pack  Version 1.4.7
Delivery Mechanism for Software Packs
 All Pages
Project Description (*.CPDSC) Format (new)

The purpose of this file format is the environment/tool independant definition of a software project. Environment specific project formats shall be derived from this description in a one time creation step. The CPDSC file is considered static and there is no expectation to keep the projects synchronized.

Note
The generator (*.GPDSC) constructs share be used for synchronizing updated software components driven by code generators.

The scope of the project description includes:

  • CMSIS run time ennvironment configuration (RTE)
  • Project build including linker script generation
  • Flash programming
  • Basic configuration of the debug adapter

The project format only creates a basic project configuration and does not reflect tool specific features and configuration options.

The import and conversion from the CPDSC format into a toolchain specific format is the responsibility of the tool vendor ensuring that updates and changes in the tool specific project format will be managed appropriately.

Definition of CMSIS project

A CMSIS software project is a collection of files in a directory structure described by a CPDSC file. The CPDSC file is located in the base folder of the directory structure. There is only one CPDSC file contained in the project directory structure. A CPDSC file contains one or more related project descriptions.

 


Example CMSIS Project Description File (*.CPDSC):

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PACK.xsd">
<vendor>Keil</vendor>
<name>STM32F429_Flash</name>
<description>CMSIS RTOS Blinky for STM32F429</description>
<url>www.keil.com/pack/Keil.STM32F4xx_DFP.pdsc</url>
<releases>
<release version="5.20.0.2">Generated 2016-05-10T22:08:37</release>
</releases>
<requirements>
<packages>
<package name="STM32F4xx_DFP" vendor="Keil" version="2.8.0:2.8.0"/>
<package name="CMSIS" vendor="ARM" version="4.5.0:4.5.0"/>
</packages>
</requirements>
<create>
<project name="STM32F429_Flash" documentation="./Abstract.txt">
<target Dendian="Little-endian" Dfpu="SP_FPU" Dname="STM32F429ZITx" Dvendor="STMicroelectronics:13">
<output debug="1" name="Blinky" type="exe"/>
<debugProbe coreClock="10000000" name="ST-Link" protocol="swd"/>
<memory access="rx" default="1" name="IROM1" size="0x200000" start="0x8000000" startup="1"/>
<memory access="rw" default="1" init="1" name="IRAM1" size="0x30000" start="0x20000000"/>
<memory access="rw" default="0" init="1" name="IRAM2" size="0x10000" start="0x10000000"/>
</target>
<select>
<component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="4.1.0"/>
<component Cclass="CMSIS" Cgroup="RTOS" Csub="Keil RTX" Cvendor="ARM" Cversion="4.78.0">
<file attr="config" category="source" name="CMSIS/RTOS/RTX/Templates/RTX_Conf_CM.c" version="4.70.1"/>
</component>
<component Cbundle="STM32F429I-Discovery" Cclass="Board Support" Cgroup="Buttons" Cvendor="Keil" Cversion="1.0.0"/>
<component Cbundle="STM32F429I-Discovery" Cclass="Board Support" Cgroup="LED" Cvendor="Keil" Cversion="1.0.0"/>
<component Cclass="Device" Cgroup="STM32Cube Framework" Csub="Classic" Cvendor="Keil" Cversion="1.4.0">
<file attr="config" category="header" name="CMSIS/Driver/Config/RTE_Device.h" version="2.3.1"/>
<file attr="config" category="header" name="MDK/Templates/Inc/stm32f4xx_hal_conf.h" version="1.4.2"/>
</component>
<component Cclass="Device" Cgroup="STM32Cube HAL" Csub="Common" Cvendor="Keil" Cversion="1.4.0"/>
<component Cclass="Device" Cgroup="STM32Cube HAL" Csub="Cortex" Cvendor="Keil" Cversion="1.4.0"/>
<component Cclass="Device" Cgroup="STM32Cube HAL" Csub="GPIO" Cvendor="Keil" Cversion="1.4.0"/>
<component Cclass="Device" Cgroup="STM32Cube HAL" Csub="PWR" Cvendor="Keil" Cversion="1.4.0"/>
<component Cclass="Device" Cgroup="STM32Cube HAL" Csub="RCC" Cvendor="Keil" Cversion="1.4.0"/>
<component Cclass="Device" Cgroup="Startup" Cvendor="Keil" Cversion="2.4.0">
<file attr="config" category="source" condition="STM32F429xx_ARMCC" name="Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/arm/startup_stm32f429xx.s" version="2.4.2"/>
<file attr="config" category="source" name="Drivers/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c" version="2.4.2"/>
</component>
</select>
<files>
<group name="Source Files">
<file category="sourceC" name="./Blinky.c"/>
<file category="sourceC" name="./Thread_LED.c"/>
</group>
<group name="Documentation">
<file category="doc" name="./Abstract.txt"/>
</group>
</files>
</project>
</create>
</package>

Top level structure of the CMSIS project description

The CPDSC file format shares the schema file (PACK.xsd) with PDSC and GPDSC, however a CPDSC file can only contain the following top level elements:

  • <vendor> [required]: creator of the project and/or CMSIS project description
  • <name> [required]: name of the example project which shall match the name of this file
  • <description> [required]: high level summary of the CMSIS Project
  • <releases> [required]: release notes history of the example project. The attributes deprecated and replacement are not supported in the context of CPDSC files.
  • <url> [required]: file origin in case of generated CMSIS projects or url of the pack it is contained in or repository link for the file.
  • <supportContact> [optional]: may provide an email address or web page URL for reporting project specific questions and problems
  • <license> [optional]: path to a license document, relative to cpdsc file. Users are urged to review the terms and conditions of an example prior to using it.
  • <requirements> specifies required packs, compiler and programming languages
  • <create> contains the project details

 


/CPDSC package

Parents Element Chain
root description root point
Attributes Description Type Use
schemaVersion version of PACK.xsd the description is compatible with VersionType required
Child Elements Description Type Occurrence
name file name of the CPDSC file RestrictedString <1>
vendor creator/owner of the CPDSC file RestrictedString <1>
description high level description of the project(s) xs:string <1>
url file location if generated, link to the PACK this file belongs to xs:anyURI <1>
supportContact email or web page for reporting errors or problems related to this project xs:string <0..1>
license reference to a license file relative to this CPDSC xs:string <0..1>
releases release history and release notes for tracking changes to this project ReleasesType <1>
requirements specifies required packs, compiler and programming languages for the project RequirementsType <1>
create section capturing the project configuration CreateType <1>