DFP and CMSIS components ¶
This page describes the purpose of a Device Family Pack (DFP) and summarizes the CMSIS components provided in the STM32Cube embedded software. It explains concepts and deliverables for users who integrate device support and CMSIS building blocks into their projects.
Device Family Pack (DFP) ¶
A Device Family Pack (DFP) is a standardized software component that:
Provides tool-agnostic device support for a family or series of STM32 microcontrollers.
Supply the files and metadata tools need to create and configure projects (device description, startup, programming algorithms, debug setup, examples).
Allow IDEs and toolchains to present devices, memory maps and debug options consistently, and to install device-specific assets.
DFP typically contains (conceptual view):
Device properties and feature lists that describe the family and variants.
System and startup sources: startup_<device>.s, system_<device>.c/.h, and templates required to initialize the C runtime and clocks.
Device description (SVD): machine-readable peripheral and register model used to generate device header files and debugger views.
Device header and CMSIS-Core support that expose core and peripheral register definitions for firmware development.
Flash programming algorithms for on-target programming/erase.
Debug and trace descriptions for tool-agnostic debugger configuration.
A DFP is distribution packaging: it supplies ready-to-use files, not a run-time library. The DFP enables consistent device support across tools. It does not replace the need to inspect actual device datasheets for electrical or timing details.
A DFP is specific to a family or series of devices, not to a single MCU. Refer to each STM32 series DFP documentation for more details on a specific DFP software component (see Device Family Packs).
CMSIS components ¶
STM32Cube embedded software provides the CMSIS components listed under the arch/ folder:
CMSIS-Core: processor and core-access headers for Arm Cortex devices, CMSIS core API and startup/system file templates used to initialize the processor and provide consistent access to NVIC, SysTick, and core registers.
CMSIS-Compiler: compiler abstraction and retargeting helpers that hide compiler-specific differences (macros, attributes, weak symbol syntax, inline/optimization hints) to allow the same source to build with multiple toolchains.
CMSIS-DSP: optimized signal-processing and math library for embedded applications (vector, filter, transform, matrix functions) with Cortex hardware optimizations where available.
CMSIS-NN: efficient neural-network kernels targeted to Cortex-M devices, offering compact and performant implementations for inference on microcontrollers.
DFP / CMSIS complementarity ¶
The DFP provides device-specific files (startup, SVD, flash algorithms). Integrate those assets into your build and debug setup rather than reimplementing them.
CMSIS-Core and CMSIS-Compiler ensure portable access to processor features and compiler independence. Use CMSIS-DSP and CMSIS-NN for performance-sensitive numeric workloads.
ST specificities ¶
ST provides a curated DFP and CMSIS packaging that supplements the ARM baseline with device- and ecosystem- oriented assets aimed at real projects:
Rich device descriptors and tooling artifacts (pinout, clock, peripheral mappings) to simplify board and device configuration with STM32CubeMX2.
Pre-generated SVD and device header files plus multiple startup_* and linker script variants to support common toolchains and project templates.
Flash programming algorithms and IDE-specific patches (e.g., IDEs_patches/EWARM) to ease device programming and debugger setup.
These ST-provided additions are concrete conveniences on top of the ARM CMSIS specification. They do not change CMSIS concepts but make device support and tooling ready-to-use for STM32 development with the IDEs commonly used by customers.