Home

Awesome

Create a Software Pack - Hands-On Example

This repository explains the steps to create a simple software pack using the Open-CMSIS-Pack technology.

The pack contains software from the imaginary "ACME Corp." and shows how to frame a middelware as evaluation and commercial version. The software component itself is available in two flavors: debug (that could have additional test outputs) and release.

NOTE: evaluation and commercial are typically two different packs, but this first hands-on is simple and uses just one pack for it.

ContentDescription
gen_pack.shScript that builds the pack; refer to prerequisites and usage information for details.
gen_doc.shScript that builds the documentation (using Dxoygen). This is an example - other dcoumentation generation mechnisms can be used as well.
check_links.shScript that checks all links in the documentation for consistency and availability.
.github/workflows/pack.yamlGitHub workflow that generates the pack on every commit.
.github/workflows/gh-pages.yamlGitHub workflow that generates the documentation on the gh-pages branch.

Benefits of Software Pack Delivery

The CMSIS-Pack technology is available in multiple toolchains. Below is a brief history:

Benefits for a Software Vendor

To learn more review the session about Generating CMSIS-Packs for Middleware.

Pack Development

The following section explains how to create a pack.

Tool-Environment (Recommended)

Steps to Create a Software Pack

An example middleware is explained in this meeting recording starting at 15:05.

Local Pack Development

  1. Clone this repository (as it serves as a getting started example)

  2. Register this pack with cpackget via PDSC file using this commands:

    cpackget update-index                    // optional to ensure that pack index is up-to-date
    cpackget add ACME.ACME_Middleware.pdsc   // pack now appears in toolchains, i.e. in MDK
    csolution list packs
    
  3. The content of the pack can now be seen in the Manage Component dialog of uVision.

For changing the PDSC file it is recommended to use VS Code with XML extension, but any editor would work.

After modifications to the PDSC file run packchk; include all packs that are required by your software in the validation:

Using Command Prompt:

packchk ACME.ACME_Middleware.pdsc -i %CMSIS_PACK_ROOT%/ARM/CMSIS/5.9.0/ARM.CMSIS.pdsc

Using Git Bash console:

packchk ACME.ACME_Middleware.pdsc -i $CMSIS_PACK_ROOT/ARM/CMSIS/5.9.0/ARM.CMSIS.pdsc

With CMSIS-Toolbox v1.7.0 the XML schema check is available with packchk, the command may be then extended to:

packchk ACME.ACME_Middleware.pdsc -i $CMSIS_PACK_ROOT/ARM/CMSIS/5.9.0/ARM.CMSIS.pdsc -s /c/Keil_v5/UV4/PACK.xsd

The pack can be created locally in the directory output using Git Bash:

./gen_pack.sh -v

Verify Pack in Tools

To verify the tools such as the VS Code - Keil Studio Desktop extension, install the pack with:

cpackget add ./output/ACME.ACME_Middleware.1.0.0.pack

Notes:

  <releases>
    <release version="1.0.1-rc0">
      Further development
    </release>
    <release version="1.0.0" date="2023-04-17">
      Initial version
    </release>
  </releases>

Pack Creation on GitHub

Once changes are committed, GitHub Actions create the pack and the documentation.

Publish Pack

The pack can be hosted on the <url> specified in the *.pdsc file.

Refer to Publish a Pack in the Open-CMSIS-Pack specification for further details.

Issues and Questions

Use Issues on this GitHub to raise questions or submit problems.

Happy Packing!