The Arm® CMSIS Solution extension is a graphical user interface for csolution projects that use the CMSIS-Toolbox. The extension supports microcontroller devices that incorporate Arm Cortex®-M processors and Arm Ethos®-U Neural Processing Units (NPUs), and works with various C/C++ compilers and debuggers.
This extension is free to use and you can install it individually or as part of the Arm Keil® Studio Pack.
Arm CMSIS Solution provides the following views:
- CMSIS view: Access your source code and actions such as build, run, and debug from the Solution outline.
- Create Solution view: Create new solutions for devices or boards from template projects or example applications.
- Configure Solution view: Add layers to your reference applications or select a compiler toolchain for your solutions.
- Manage Solution view: Manage your solutions with multiple targets, projects, and build types to define the scope of your applications.
- Software Components view: Access reusable building blocks that are provided in software packs.
Settings: Configure features like pack download, clangd, or usage of web services. When Use Web Services is enabled, Arm CMSIS Solution gets from keil.arm.com information about devices, boards, and examples that are provided in software packs.
Arm CMSIS Solution works as a standalone tool and can also interact with other VS Code extensions:
- Arm Tools Environment Manager: Installs tools (compiler, debugger, simulation models, and utilities) for software development.
- Arm CMSIS Debugger: Installs a GDB-based debugger (for CMSIS-DAP, ULINK, JLink, ST-Link, an other adapters) along with pyOCD.
- Red Hat YAML: Provides syntax support when editing csolution project files such as
*.csolution.yml
and*.cproject.yml
. - clangd: Adds smart features to the VS Code editor, including code completion, compile errors, and go-to-definition.
For detailed information refer to User Interface in the CMSIS Solution documentation.
The CMSIS view gives you access to the source code of your application. The CMSIS view shows the multiple projects that belong to the context set. The various elements available for a project are:
- Board: The name of the target board and documentation.
- Device: The name of the target device, documentation, and device-specific debug options (
*.dbgconf
). - File groups: Groups used to organize user source code.
- Constructed-files: Files generated for the CMSIS Run-Time Environment (RTE).
- Linker: Script files used in the project context and access to linker map file.
- Components: Reusable software modules that you select in the Software Components view. You can also access documentation or a run configuration generator such as STM32CubeMX or MCUXpresso Config.
- Layers: Sets of source files, software components, and configuration files that you can reuse in different projects.
Action buttons allow you to build, run, and debug your application, edit csolution project files or manage the solution configuration. The Configuration Wizard offers a graphical view to configuration file options.
To start a new csolution project, select a board or device and choose from the following project types:
- Templates: Templates are stub projects providing a minimal setup for the selected use case.
- Reference applications: Reference applications are hardware-agnostic and require additional software layers with API drivers for the target board selected.
- CMSIS solution examples: These examples are created for a specific hardware or evaluation board and interface with board and device peripherals.
- µVision examples: Example projects created for the µVision IDE. Arm CMSIS Solution automatically converts µVision projects to the csolution project format.
Then create the csolution project on the selected folder on your Host computer.
When using a reference application select compatible software layers for your solution from this view.
Select reusable software components for your application from this view.
CMSIS-Packs provide software components with other optional items such as configuration files, documentation, and user code templates. A software component typically interfaces with other software components or with device peripherals. The list of software components depends on the device or board selected.
Select a context set from this view. For a given target type, a context set combines related projects which you can build for an application. You might need to use different build types for projects, for example in cases where not all parts of an application require extra debug overhead.
Many configuration files have annotations for the CMSIS Configuration Wizard. Using the Open Preview button in the editor allows you to modify options in a graphical view.
The YML syntax support in the editor detects errors, provides auto completion, and documentation links on hover over.
Arm CMSIS Solution generates the Run and Debug configuration files (launch.json
and tasks.json
) for the Arm CMSIS Debugger and pyOCD. It supports single-core and multi-core configurations for CMSIS-DAP, ULINK, JLink, and ST-Link debug adapters.
The Run and Debug configuration is enabled with the target-set:
node and a debugger:
setting as shown below:
target-types:
- type: FRDM-K32L3A6
board: FRDM-K32L3A6
device: K32L3A60VPJ1A
target-set:
- set:
debugger:
name: CMSIS-DAP
interface: swd
To submit feedback or report issues on the Arm CMSIS Solution extension, please use GitHub issues in the extension repository.