CMSIS Packs  Version 0.10
Mechanism to install software, device support, APIs, and example projects
 All Pages
Software Pack Concept

The Pack Concept supports devices, software components, and example projects and describes the content of a Software Pack in a way that allows development tools to pick-up device information and related software components or example projects. Software components can have dependencies to devices or other software components that are part of the same Software Pack or any other Software Pack that is available.

Software Pack

The Pack Concept is used to deliver a Software Pack and is aimed to be scalable for future requirements. It provides a management process and supports a tool independent distribution for:

  • Device Support: for tool chains and software applications to target a specific device it requires:
    • Information about the processor and it's features.
    • Parameters, technical information, and data sheets about the device family and the specific devices.
    • Device description and available peripherals.
    • Memory layout of internal and external RAM and ROM address ranges.
    • Flash algorithms for programming the device.
    • Debug and trace configurations as well as System View Description files for device specific display of the memory mapped peripheral registers.
    • C and assembly files for the device startup and access to the memory mapped peripheral registers.
  • Software Components simplify the re-use of software and the management of 3rd party software. They contain:
    • A collection of source modules, header and configuration files as well as libraries.
    • Documentation of the software, including features and APIs.
  • Application Programming Interfaces specify one or more APIs for Software Components that are part of another Software Pack.
  • Example Projects can be used as a reference and starting point for similar applications. They contain:
    • Fully defined application projects that work out of the box in the specified build and debug environments.
    • Documentation about the purpose of the example, how to build, configure and execute the application.

All files that belong to a Software Pack are compressed into a *.PACK file using a standard ZIP file format. The content of each Software Pack is described in the Pack Description (*.PDSC) file that is part of each Pack. Refer to Pack Description (*.PDSC) Format for more information.

SoftwarePacks.png
Typical Software Packs

The figure above shows the following Software Packs:

  • Device Family Pack (DFP) : contains CMSIS system/startup, drivers, flash algorithms for a microcontroller device family.
  • CMSIS : contains the generic CMSIS components (CORE, DSP Library, and RTOS implementation).
  • MDK Professional Middleware : contains the middleware libraries that are part of MDK Professional.
  • Middleware 3rd Party : contains other middleware components that integration into the Pack concept.

Device Family Pack (DFP)

A Software Pack that contains Device Support is named Device Family Pack (DFP). A DFP may contain additional Software Components or Example Projects or any combination of those. The typical content of a DFP is:

  • Device Support as described above.
  • Software Components that configure the device and basic device drivers, in particular:
    • CMSIS-compliant System and Startup files required to setup the C run-time library, device clock, and memory interface.
    • Peripheral Driver Interfaces that provide software routines for physical device peripherals used by middleware stacks.

A Device Family Pack (DFP) may be provided by a Silicon Vendor and is used to extend development tools with support for new devices. In general, the DFP enables Silicon Vendors to distribute tool independent device support for their device families.

Software Components

Once a Software Pack is installed on a system the Software Components are available for the development tools. Software Components are a collection of source modules, header and configuration files as well as libraries. An API is a special form that only defines the Application Programming Interface (API) of a software component. An API does not contain the actual implementation usually provided by source code or library files and cannot be selected in a development tool.

Software Components and APIs are selected using the following taxonomy:

  • Component Class: examples are CMSIS, Device, File System
  • Component Group: examples are CMSIS:RTOS, Device:Startup, File System:CORE
  • Component Sub-Group: examples are CMSIS:RTOS:Keil RTX, Device:Driver USBD:Full-speed

Software Components and APIs have also the following additional information:

  • Component Vendor: the supplier of the software component.
  • Component Version: the version number of the software component.
  • Component Variant: a variant of the software component.

Software Components and APIs are referenced with the following syntax:
<Vendor>::<Component Class>:<Component Group>:<Sub-Group>

Examples:

  • ::CMSIS:RTOS (API): The CMSIS-RTOS API.
  • ARM::CMSIS:DSP: The CMSIS-DSP Library.
  • Keil::File System:Drive:NORThe NOR Flash Drive of a file system.

Some software components allow several instances which is useful when for example more than one peripheral can be connected. A installation or development tool may display these components and allows selection of these with the above described attributes.

ComponentSelection.png
Selection of Software Components in development tools

Revision History

Version Description
0.10 Release for beta review