CMSIS Packs  Version 0.10
Mechanism to install software, device support, APIs, and example projects
 All Pages
/package/devices/family level

/package/devices/family

Define properties that are in common to all devices of a family. These properties are inherited by subgroups or elements. This is a mechanism of granulation to reduce redundancy. Multiple <family> groups can be defined.

Example:

<devices>
...
<family Dfamily="STM32F2" Dvendor="STMicroelectronics:13">
<processor .../>
<compile .../>
<debug .../>
<memory .../>
<algorithm .../>
<book .../>
<description> Write texte here </description>
<feature .../>
<subfamily Dsubfamily="...">
...
</subfamily>
<device Dname="...">
...
</device>
</family>
...
</devices>

 

Parents Element Chain
devices /package/devices
Attributes Description Type Occurrence
Dfamily Name of the device family. xs:string 1..1
Dvendor Device vendor name. Predefined values must be selected. DeviceVendorEnum 1..1
Child Elements Description Type Occurrence
processor List all processors that are in common to devices of the family. ProcessorType 0..*
compile Specify compile or translate options that are relevant to all devices of the family. CompileType 0..*
debug Specify debug options that are relevant to all devices of the family. DebugType 0..*
memory Specify memory areas that are available for all devices of the family. MemoryType 0..*
algorithm Specify Flash programming algorithms that are suitable for all devices. AlgorithmType 0..*
book Specify documents that are relevant for all devices of a family. BookType 0..*
description Describe the device family. DescriptionType 0..*
feature Specify features that are available in all members of the device family. FeatureType 0..*
subfamily A optional sub-family that is used to group devices. group 0..*
device Individual devices that belong to the device family. DeviceType 0..*

 


/package/devices/family/subfamily

Define properties that are in common to all devices of a subfamily. This is another mechanism of granulation to reduce redundancy. These properties are inherited by subgroups or elements. Multiple <subfamily> groups can be defined.

Example:

<family Dfamily="STM32F2" Dvendor="STMicroelectronics:13">
...
<subfamily Dsubfamily="...">
<processor .../>
<compile .../>
<debug .../>
<memory .../>
<algorithm .../>
<book .../>
<description> Write texte here </description>
<feature .../>
<device Dname="...">
...
</device>
</subfamily>
<subfamily Dsubfamily="STM32F2xx">
...
</subfamily>
</family>

 

Parents Element Chain
family /package/devices/family
Attributes Description Type Occurrence
Dfamily Name of the device family. xs:string 1..1
Child Elements Description Type Occurrence
processor Specify processors that are available in all devices of the sub-family. ProcessorType 0..*
compile Specify compile or translate options that are relevant to all devices of the sub-family. CompileType 0..*
debug Specify debug options that are relevant to all devices of the sub-family. DebugType 0..*
memory Specify memory areas that are available in all device of the sub-family. MemoryType 0..*
algorithm Specify Flash programming algorithms that can be used by all device of the sub-family. AlgorithmType 0..*
book Specify documents relevant for all device of the sub-family. BookType 0..*
description Description of the device family. DescriptionType 0..*
feature Specify features available in devices of the sub-family. FeatureType 0..*
device List individual devices that belong to the device sub-family. DeviceType 0..*

 


/package/devices/family/device

Define properties that are specific to a device. Properties defined on upper levels get inherited, unless they can be overwritten. Multiple <device> elements can be defined.

Example:

<subFamily DsubFamily="STM32F405">
...
<device Dname="STM32F405OE">
<memory id="IROM1" start="0x08000000" size="0x80000" startup="1" default="1"/>
<algorithm name="Flash\STM32F4xx_1024.flm" start="0x08000000" size="0x80000" default="1"/>
<feature type="I/O" count="72" name="Input and Output Ports"/>
</device>
<device Dname="STM32F405OG">
<memory id="IROM1" start="0x08000000" size="0x100000" startup="1" default="1"/>
<algorithm name="Flash\STM32F4xx_1024.flm" start="0x08000000" size="0x100000" default="1"/>
<feature type="I/O" count="72" name="Input and Output Ports"/>
</device>
...
</subfamily>

 

Parents Element Chain
family /package/devices/family
subfamily /package/devices/family/subfamily
Attributes Description Type Use
Dname Specifies the name of the device. xs:string required
Child Elements Description Type Occurrence
processor Specify processors that are specific to this device. ProcessorType 0..*
compile Specify compile or translate options specific to this device. CompileType 0..*
debug Specify debug options specific to this device. DebugType 0..*
memory Specify memory areas that specific to this device. MemoryType 0..*
algorithm Specify Flash programming algorithms that can be used by this device. AlgorithmType 0..*
book Specify documents specific to this device. BookType 0..*
description Description specific to this device. DescriptionType 0..*
feature Specify features specific to this device. FeatureType 0..*
variant Complex element specifying a variant of a device. VariantType 0..*

 


/package/devices/family/algorithm

Specify Flash programming algorithms with the address range and its size. An algorithm with <default> set to true gets configured automatically to the download options of the project. Algorithms can be defined on various levels. Multiple <algorithm> elements are possible.

Example:

<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
...
<algorithm name="Flash\STM32F2xx_512.flm" start=0x08000000 size=0x10000 default="1"/> <!-- valid for all devices of the family -->
<subFamily DsubFamily="STM32F405">
<algorithm name="Flash\STM32F2xx_1024.flm" start=0x08000000 size=0x20000 default="1"/> <!-- valid for all devices of a subFamily -->
<device Dname="STM32F405OE">
<algorithm name="Flash\STM32F2xx_2048.flm" start=0x08000000 size=0x40000 default="1"/> <!-- finally, this is the default for the device -->
</device>
...
</family>

 

Parents Element Chain
family /package/devices/family
subfamily /package/devices/family/subfamily
device /package/devices/family/device
Attributes Description Type Use
Pname Processor identifier. This attribute is mandatory for devices that embed multiple processors. xs:string optional
name Flash Programming Algorithm file including the path, which is relative to the root folder of the Software Pack. xs:string required
start Base address for the Flash programming algorithm. NonNegativeInteger required
size Size covered by the Flash programming algorithm. End address = start + size - 1 NonNegativeInteger required
RAMstart Base address for the RAM where the Flash programming algorithm will be executed from. NonNegativeInteger required
RAMsize Maximum size of RAM available for the execution of the Flash programming algorithm. End address = start + size - 1 is used for the Stack NonNegativeInteger required
default If true, then this is the default Flash programming algorithm that gets configured in a project. If not specified or set to false, then the Flash programming algorithm can be configured on a lower level. However, the Flash programming algorithm of a project can be changed manually at any time during development. xs:boolean optional

 


/package/devices/family/book

Specifies documents related to a device. Books can be entered on various levels. The book element contains the location, filename, and extension of the file. The title is used for display purposes.

Example:

<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
...
<book name="Documents\STM32F40x_DS.PDF" title="STM32F40x Data Sheet"/> <!-- valid for all devices of the family -->
<subFamily DsubFamily="STM32F405">
<book name="Documents\STM32F4xx_RM.pdf" title="STM32F4 Series Reference Manual"/> <!-- valid for all devices of a subFamily -->
<device Dname="STM32F405OE">
<book name="Documents\STM32F405OE_DS.PDF" title="STM32F405OE - Data Sheet"/> <!-- valid for this device; Inherits all above -->
</device>
...
</family>

 

Parents Element Chain
family /package/devices/family
subfamily /package/devices/family/subfamily
device /package/devices/family/device
Attributes Description Type Use
Pname Processor identifier. This attribute is mandatory for devices that embed multiple processors. xs:string optional
name Filename of the document including the extension. The document path is relative to the package base folder. xs:string required
title Book title. Can be used for being displayed in various environments. xs:string required

 


/package/devices/family/compile

Specify header filed and preprocessor defines for programming. This element can occure on various levels. Multiple such elements are allowed.

Example:

<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
...
<compile header="Device\Include\stm32f4xx.h"/>
<subFamily DsubFamily="STM32F407">
...
<compile define="STM32F40XX"/>
<device Dname="STM32F407IG">
<compile define="STM32F407IG"/>
</device>
</subfamily>
</family>

 

Parents Element Chain
family /package/devices/family
subfamily /package/devices/family/subfamily
device /package/devices/family/device
Attributes Description Type Use
Pname Processor identifier. This attribute is mandatory for devices that embed multiple processors. xs:string optional
header C-header file with path relative to the installation. xs:string optional
define C-file name with device specific preprocessor defines. The path is relative to the installation. xs:string optional

 



/package/devices/family/debugTBD

Note
Not implemented. Open for discussion

Specify configuration settings and sequence hooks to be execute during debugging and downloading. The group is optional and can exist multiple times.

Example:

<family Dfamily="LPC18xx Series" Dvendor="NXP (founded by Philips):11">
...
<debug svd="SVD\LPC18xx.svd" ap="0">
<coresight>
...
</coresight>
<configuration>
...
</configuration>
<hooks>
...
</hooks>
</debug>
...
</family>

 

Parents Element Chain
family /package/devices/family
subfamily /package/devices/family/subfamily
device /package/devices/family/device
Attributes Description Type Use
Pname Processor identifier. This attribute is mandatory for devices that embed multiple processors. xs:string optional
svd The system viewer description (*.SVD) file. The file path is relative to the package base folder. xs:string optional
ap The default CoreSight access port to use for memory accesses in the target connection. If not defined, the default access port value is 0 (standard AHB-AP). xs:string optional
dp The debug port index in the JTAG chain when using multi-core platforms. This refers to a device internal JTAG-chain. Additional JTAG TAPs on a platform are not considered in the index value. The default value is 0, which would be the first JTAG TAP in the chain. xs:string optional
Child Elements Description Type Occurrence
coresight Group to specify the CoreSight debug architecture for the connection. If the group is not specified, the debugger obtains all information about CoreSight components via the ROM Table at the access port <ap>. CoreSightGroup 0..*
configuration Group to describes debugger parameters and default settings for the target connection. DebugConfigGroup 0..1
hooks Group to implement sequences that execute during target connection and debugging. HooksGroup 0..1

 


/package/devices/family/.../debug/coresightTBD

Note
Not implemented. Open for discussion

Define how to obtain information about the CoreSight debug architecture. If not specified, then the debugger obtains all information about CoreSight components via the ROM Table defined at the access port <ap> in /package/devices/family/debugTBD. The element is optional and can exist multiple times.

Note
Child elements are TBD. Basically, each child has the attributes
  • base (base address of the CoreSight component),
  • version (version of the component, can contain specialization information like "CM4_v3.5" for an ETM),
  • ap (the access port to access the component's registers) and name (a name for later reference in the PDSC file).
  • Additionally, it can contain a set of child nodes describing features of the CoreSight component.

Example:

<debug svd="SVD\LPC18xx.svd" ap="0">
<coresight autodetect="true"> <!-- ap is the same as described in debug -->
<!-- autodetect enabled, below entries are overrides or extensions to the ROM Table -->
<ROMTAB base="0xE00FF000" version="CM3"/>
<SCS base="0xE000E000" version="v7M"/>
<FPB base="0xE0002000" version="v7M">
<instructionComp count="4"/>
<literalComp count="2"/>
</FPB>
<DWT base="0xE0001000" version="v7M">
<addrComp count="4"/>
<valueMatch count="1"/>
</DWT>
<ITM base="0xE0000000" version="v7M"/>
<ETM base="0xE0041000" version="CM3_v3.5"/>
<TPIU base="0xE0040000" version="CM3">
<traceport maxsize="4"/>
</TPIU>
<ETB base="0xE0042000"> <!-- REQUIRED EXTENSION, NOT VISIBLE IN ROM TABLE WITHOUT PRECONFIGURATION -->
<!-- these features are NOT necessary for this target; just for demonstration purposes -->
<ramBase value="0x2000C000"/>
<ramWidth value="4"/>
<ramDepth value="0x1000"/>
</ETB>
</coresight>
</debug>

 

Parents Element Chain
debug /package/devices/family/debugTBD
Attributes Description Type Use
autodetect

Specifies whether CoreSight components shall be detected automatically via the ROM Table.

  • If true, CoreSight component descriptions in child nodes are overrides to auto-detected components.
  • If false, only CoreSight components described in child nodes are known to the debugger.

Default value is true.

xs:boolean optional
ap Access port for reading the ROM table and for accessing CoreSight components. xs:string optional
Child Elements Description Type Occurrence
ROMTAB . tbd tbd
SCS . tbd tbd
DWT . tbd tbd
ITM . tbd tbd
ETM . tbd tbd
FPB . tbd tbd
BPU . tbd tbd
CSTF . tbd tbd
TPIU . tbd tbd
SWO . tbd tbd
ETB . tbd tbd
MTB . tbd tbd
CIT . tbd tbd

 


/package/devices/family/.../debug/configurationTBD

Note
Not implemented. Open for discussion

Define settings for the debugger and default settings for user configurable debugger features. The element is optional and can exist one time. If not implemented, the default values apply as described below.

 



/package/devices/family/description

Detailed description of the element. Can occure on various levels.

Example

<package>
<devices>
<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
<description>
ARM 32-bit Cortex-M4 CPU based Microcontroller with Floating Point Unit (FPU)
- 168 MHz maximum frequency producing 210 DMIPS/1.25 DMIPS/MHz
- Adaptive real-time accelerator (ART Accelerator)
- Memory Protection Unit
- Flexible static memory controller (supports Compact Flash, SRAM, PSRAM, NOR, NAND memories)
- LCD parallel interface, 8080/6800 modes
- Clock, reset and supply management
- 1.8 to 3.6 V application supply and I/Os
- POR, PDR, PVD and BOR
- 4 to 25 MHz crystal oscillator
- Internal 16 MHz factory-trimmed RC
- 32 kHz oscillator for RTC with calibration
- Internal 32 kHz RC with calibration
- Low power Sleep, Stop and Standby modes
- VBAT supply for RTC
- 20 x 32 bit backup registers
- optional 4 KB backup SRAM
</description>
</family>
</devices>
</package>

 

Parents Element Chain
family /package/devices/family
subfamily /package/devices/family/subfamily
device /package/devices/family/device
Attributes Description Type Use
Pname Processor Identifier. This attribute is mandatory for devices that embed multiple processors. xs:string optional

 


/package/devices/family/feature

This element specifies the peripherals that devices can have. Feature types are predefined, for example, for timers, converters, Ethernet, USB, etc. Features can be defined on various levels. Inner elements supersede outer elements.

Example:

<package>
<devices>
<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
...
<!-- Features that are in common to this device family. -->
<feature type="Timer" count="12" name="16-Bit Timer with Input Capture, Output Compare and PWM"/>
<feature type="Timer" count="2" name="Watchdog, Real Time Counter and 24-bit down counter"/>
<feature type="A/D" count="16" name="12-bit Analog to Digital Converter"/>
<feature type="D/A" count="2" name="12-bit Digital to Analog Converter"/>
<feature type="I/O" count="51" name="Input and Output Ports"/>
<feature type="Com" count="3" name="SPI Interface"/>
<feature type="Com" count="2" name="I2S Interface"/>
<feature type="Com" count="4" name="USART Interface"/>
<feature type="Com" count="2" name="UART Interface"/>
<feature type="USB" count="2" name="USB OTG (Full Speed, Full Speed/Half Speed)"/>
<feature type="CAN" count="2" name="CAN Interface"/>
<feature type="ETH" count="1" name="MAC 10/100"/>
<feature type="Com" count="1" name="SDIO Interface"/>
...
<subFamily DsubFamily="STM32F407">
<!-- Features that are in common to this subfamily. -->
<feature type="I/O" count="14" name="Input and Output Ports"/> <!-- overrides settings from <family> -->
<feature type="ETH" count="1" name="MAC 1000"/> <!-- adds new feature to subfamily -->
<device Dname="STM32F407IE">
<!-- Feature specific to this device. All above features are inherited. -->
<feature type="Com" count="3" name="I2C Interface"/>
</device>
</subfamily>
</family>
</devices>
</package>

 

Parents Element Chain
family /package/devices/family
subfamily /package/devices/family/subfamily
device /package/devices/family/device
Attributes Description Type Use
Pname Processor Identifier. This attribute is mandatory for devices that embed multiple processors. xs:string optional
type A feature (peripheral), such as CAN, DMA, I/O, LCD, etc. Predefined tokens must be used. FeatureTypeEnum required
count Number of instances of this feature. Default value is 1. xs:unsignedInt optional
name Descriptive name of the feature. For example, "16-bit down counting timer". xs:string required

 


/package/devices/family/memory

This element specifies memory reagions that devices can have. Memory types are predefined and can be selected. This element can be defined on various levels. Inner memory elements supersede outer elements.

Example:

</package>
...
<devices>
<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
<memory id="IRAM1" start="0x20000000" size="0x20000" init="0" default="1"/>
<subFamily DsubFamily="STM32F407">
<debug svd="SVD\STM32F40x.svd"/>
<memory id="IRAM1" start="0x20020000" size="0x20000" init="0" default="1"/>
<memory id="IRAM2" start="0x10000000" size="0x10000" init="0" default="1"/>
<device Dname="STM32F407IE">
<memory id="IROM1" start="0x08000000" size="0x80000" startup="1" default="1"/>
</device>
</subfamily>
</family>
</devices>
...
</package>

 

Parents Element Chain
family /package/devices/family
subfamily /package/devices/family/subfamily
device /package/devices/family/device
Attributes Description Type Use
Pname Processor identifier. This attribute is mandatory for devices that embed multiple processors. xs:string optional
id Identifier of the memory region consisting of a type indicator and an index (for example, IRAM1). Predefind values can be selected. MemoryIDTypeEnum required
start Base address of the memory using a hexadecimal value. NonNegativeInteger required
size Size of the memory in bytes using a hexadecimal value. NonNegativeInteger required
default Specifies the default memory region. If true, then this is the default memory region for the application code. Applies only to memory of type ROM. Default value is false. xs:boolean optional
init Specifies whether the memory reagion should be initialized. If true, the memory will be initialized to 0 by default. This applies only to memory of type RAM. Default is false. xs:boolean optional
startup If true, the startup code of the application will be placed into this memory region. Default value is false. xs:boolean optional

 


/package/devices/family/processor

Specifies attributes of the device processor. The element can occur on various levels. Elements of multi-processor devices can be associated with a specific processor using the attribute <Pname>. If the information is relevant to all processors, no processor must be specified in <Pname>.

Example:

<package>
...
<devices>
<family Dfamily="STM32F4" Dvendor="STMicroelectronics:13">
<processor Dcore="Cortex-M4" DcoreVersion="r0p1"
Dfpu="1" Dmpu="1" Dendian="Little-endian" Dclock="168000000"/>
...
</family>
</devices>
...
</package>

 

Parents Element Chain
family /package/devices/family
subfamily /package/devices/family/subfamily
device /package/devices/family/device
Attributes Description Type Use
Pname Processor identifier. This attribute is mandatory for devices that embed multiple processors. Each processor needs a unique identifier and must be used consistently in the Pname attribute of the elements within the scope of the current device family section. xs:string optional
Dvendor Specfies the device vendor using a predefined string. DeviceVendorEnum optional
Dcore Specifies the processor core using a predefined string. DcoreEnum optional
Dfpu Specifies whether a hardware floating point unit is present in the processor or not (default: false). DfpuEnum optional
Dmpu Specifies whether a memory protection unit is present in the processor or not (default: false) DmpuEnum optional
Dendian Specifies the byte endianess of the processor DendianEnum optional
Dclock Specifies the max clock frequency of the processor subsystem xs:unsignedInt optional
DcoreVersion Hardware revision of the processor core xs:string required

 


/package/devices/family/.../device/variant

Defines a device variant. The element is optional. Can exist multiple times.

Example:

<device Dname="STM32F205RB">
...
<variant Dvariant="STM32F205RBT6">
<book name="doc\STM32F2_RM.PDF" title="STM32F2 Reference Manual"/>
<description>Use this device as an alternative.</description>
<feature type="Package" count="64" name="LQFP 64 10x10x1.4"/>
<feature type="Temp" name="-49 to 105"/>
</variant>
<variant Dvariant="STM32F205RBT7">
<feature type="Package" count="64" name="LQFP 64 10x10x1.4" />
<feature type="Temp" name="-49 to 105"/>
</variant>
...
</device>

 

Parents Element Chain
device /package/devices/family/device
Attributes Description Type Use
Dvariant Name of the device variant xs:string required
Child Elements Description Type Occurrence
book List books that are specific to this variant. BookType 0..*
description Device description. DescriptionType 0..*
feature Define features for this devie variant. FeatureType 0..*