Tools, software frameworks, and work flows for productivity with CMSIS based projects
 All Pages

CMSIS project files use the file extension *.cprj and CMSIS project layer files use the file extension *.clayer. Both file types share a single file format which can be validated using the dedicate CPRJ schema file located in CMSIS/Utilities/CPRJ.xsd.

The location of a project or layer file always marks the root point and all file references are always relative to this root point, unless a file belongs to a component. In the latter case the files are relative to the base directory of the referenced CMSIS Software Pack version.

The high level structure of a project is constructed from:

Element Link Description
<created> /cprj/created Information about the tool that had produced this file.
<info> /cprj/info Information about the project: description, documentation, categories, license.
<layers> /cprj/layers Definition of the layer within the project or layer.
<packages> /cprj/packages List of all CMSIS Software Packs required to construct and build the project (components and device).
<compilers> /cprj/compilers Information about the toolchains/compilers and their versions that can be used to build the project.
<target> /cprj/target Information about the HW targeted as well as build output and top level toolchain options.
<components> /cprj/components List of all CMSIS Software Pack components and used config file versions that need to be included for building the project.
<files> /cprj/files List of all source files and include paths that are local to the project (project subdirectories only)
other defined types cprj specific types Description of all locally defined schema types.

Example CMSIS Project File (*.cprj):

<?xml version="1.0" encoding="UTF-8" ?>
<cprj schemaVersion="1.0.0" xmlns:xsi="" xsi:noNamespaceSchemaLocation="CPRJ.xsd">
<created tool="┬ÁVision V5.29.0.13" timestamp="2020-01-21T11:38:01" />
<info isLayer="false" >
<description>BSD Client application on top of MCB4300 Basic I/O layer with Ethernet</description>
<category>Wired Network, BSD Client, Board IO</category>
<layer name="IO" hasTarget="1">
<description>Basic I/O layer for MCB4300 for Ethernet applications</description>
<category>Board IO, Wired Network</category>
<layer name="APP" hasTarget="0">
<description>BSD Client application for Basic I/O layers with Ethernet</description>
<category>Board IO, Wired Network</category>
<package name="CMSIS" vendor="ARM"/>
<package name="CMSIS-Driver" vendor="ARM"/>
<package name="ARM_Compiler" vendor="Keil"/>
<package name="LPC4300_DFP" vendor="Keil"/>
<package name="MDK-Middleware" vendor="Keil"/>
<compiler name="AC5" version="5.0.0:5.99.99"/>
<target Ddsp="NO_DSP" Dendian="Little-endian" Dfpu="NO_FPU" Dmve="NO_MVE" Dname="LPC4357" Dtz="NO_TZ" Dvendor="NXP:11" Pname="Cortex-M4">
<output intdir="./Debug/" name="BSD_Client" outdir="./Debug/" type="exe"/>
<ldflags compiler="AC5" add="--entry=Reset_Handler --load_addr_map_info --map --strict" file="BSD_Client.sct"/>
<cflags compiler="AC5" add="--c99 --omf_browse ./debug/main.crf -D__MICROLIB -O1"/>
<asflags compiler="AC5" add="--pd __MICROLIB SETA 1 --xref"/>
<component layer="IO" Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM"/>
<component layer="IO" Cclass="CMSIS" Cgroup="RTOS2" Csub="Keil RTX5" Cvariant="Source" Cvendor="ARM">
<file attr="config" category="source" name="CMSIS/RTOS2/RTX/Config/RTX_Config.c" version="5.1.0"/>
<file attr="config" category="header" name="CMSIS/RTOS2/RTX/Config/RTX_Config.h" version="5.5.0"/>
<component layer="IO" Cbundle="ARM Compiler" Cclass="Compiler" Cgroup="Event Recorder" Cvariant="DAP" Cvendor="Keil">
<cflags compiler="AC5" add="--omf_browse ./debug/eventrecorder.crf" remove="--omf_browse ./debug/main.crf"/>
<file attr="config" category="header" name="Config/EventRecorderConf.h" version="1.1.0"/>
<component layer="IO" Cbundle="MCB4300" Cclass="Board Support" Cgroup="Graphic LCD" Cvendor="Keil"/>
<component layer="IO" Cbundle="MCB4300" Cclass="Board Support" Cgroup="LED" Cvendor="Keil"/>
<component layer="APP" Cbundle="MDK-Pro" Cclass="Network" Cgroup="CORE" Cvariant="IPv4/IPv6 Debug" Cvendor="Keil">
<file attr="config" category="source" name="Network/Config/Net_Config.c" version="7.0.0"/>
<file attr="config" category="source" name="Network/Config/Net_Debug.c" version="7.0.0"/>
<component layer="APP" Cbundle="MDK-Pro" Cclass="Network" Cgroup="Interface" Csub="ETH" Cvendor="Keil" instances="1">
<file attr="config" category="header" name="Network/Config/Net_Config_ETH.h" version="7.2.0"/>
<component layer="APP" Cbundle="MDK-Pro" Cclass="Network" Cgroup="Socket" Csub="BSD" Cvendor="Keil">
<file attr="config" category="header" name="Network/Config/Net_Config_BSD.h" version="5.0.4"/>
<component layer="APP" Cbundle="MDK-Pro" Cclass="Network" Cgroup="Socket" Csub="TCP" Cvendor="Keil">
<file attr="config" category="header" name="Network/Config/Net_Config_TCP.h" version="7.1.0"/>
<component layer="APP" Cbundle="MDK-Pro" Cclass="Network" Cgroup="Socket" Csub="UDP" Cvendor="Keil">
<file attr="config" category="header" name="Network/Config/Net_Config_UDP.h" version="5.1.0"/>
<component layer="IO" Cclass="CMSIS Driver" Cgroup="Ethernet MAC" Cvendor="Keil"/>
<component layer="IO" Cclass="CMSIS Driver" Cgroup="Ethernet PHY" Csub="DP83848C" Cvendor="Keil"/>
<component layer="IO" Cclass="CMSIS Driver" Cgroup="SPI" Csub="SSP" Cvendor="Keil"/>
<component layer="IO" Cclass="Device" Cgroup="GPDMA" Cvendor="Keil"/>
<component layer="IO" Cclass="Device" Cgroup="GPIO" Cvendor="Keil"/>
<component layer="IO" Cclass="Device" Cgroup="SCU" Cvendor="Keil"/>
<component layer="IO" Cclass="Device" Cgroup="Startup" Cvendor="Keil">
<file attr="config" category="source" name="Device/Source/ARM/startup_LPC43xx.s" version="1.0.0"/>
<file attr="config" category="source" name="Device/Source/system_LPC43xx.c" version="1.0.3"/>
<file attr="config" category="header" name="RTE_Driver/Config/RTE_Device.h" version="2.2.1"/>
<group layer="APP" name="Source">
<file category="sourceC" name="./main.c"/>
<file category="sourceC" name="./BSD_Client.c"/>
<group name="Documentation">
<file layer="APP" category="doc" name="./Abstract.txt"/>


Parents Element Chain
root description root point of description
Attributes Description Type Use
schemaVersion Version of CPRJ.xsd the description is compatible/validate with VersionType required
Child Elements Description Type Occurrence
created Element containing timestamp and tool information. CreatedType 0..1
info Section containing project information. InfoType 1..1
layers Section containing layer information. LayersType 1..1
compilers Specify compilers that can be used to build the project. CompilersType 1..1
packages Specify packs required by the project. PackagesType 1..1
target Section specifying the device and active architectural features like e.g. hardware floating point support. Sub elements specify tool specific commandline options as well as output parameters. Note: Layers may not have a <target> section. TargetType 0..1
components Specify the software components selected for the Run-Time Environment (RTE) including complete list of configuration files. ComponentsType 0..1
files List of all project specific files required for the project build, which are not part of a component. ProjectFilesType 0..1