1 # CMSIS-Toolbox {#mainpage}
3 The **CMSIS-Toolbox** provides command-line tools for:
5 - Project creation and build of embedded applications utilizing [Software Packs](https://www.keil.arm.com/packs/) with support for multiple compilation tools.
6 - Software Pack creation, maintenance, and distribution utilizing the [CMSIS-Pack format](https://open-cmsis-pack.github.io/Open-CMSIS-Pack-Spec/main/html/index.html).
8 ## Access to CMSIS-Toolbox
10 - [**CMSIS-Toolbox GitHub Repo**](https://github.com/Open-CMSIS-Pack/cmsis-toolbox/releases) - direct access to the release versions for the tools.
11 - [**vcpkg**](todo) - uses the Arm tools artifactory for consistent installation of development tools.
15 The following tools support the creation of build information for embedded applications:
18 :--------------|:-------------
19 **cpackget** | **Pack Manager:** install and manage software packs in the development environment.
20 **csolution** | **Project Manager:** create build information for embedded applications that consist of one or more related projects.
21 **cbuild** | **Build Invocation:** orchestrate the build steps utilizing CMSIS tools and a CMake compilation process.
23 The build information is defined with **User Input Files** in YAML format. It starts with a `*.csolution.yml` file that refers related, but independent projects defined with `*.cproject.yml` files. A `*.cproject.yml` may refer one or more `*.clayer.yml` files that define re-usable project parts that may be shared across projects.
25 The build information can refer to **Software Packs** that define Device and Board information and provide access to re-usable software components such as drivers and middleware. A `cdefault.yml` file provides a common setup for various compilers and generic translation controls enable compiler agonistic projects; compiler toolchain specific controls may be used when required.
27 The **Output Files** contain detailed build information and manage the configuration files for software components.
29 The diagram below provides an overview of the **build information** used by the CMSIS-Toolbox.
31 
35 - Flexible CLI tools that can be used stand-alone or integrated into [VS Code](https://marketplace.visualstudio.com/items?itemName=Arm.keil-studio-pack) or DevOps systems for Continuous Integration (CI).
36 - Stand-alone tools that are available for all host platforms (Windows, Mac, Linux) and flexible deployable.
37 - [Software Packs](https://www.keil.arm.com/packs/) simplify tool setup with `device:` or `board:` selection and project creation with access to reusable software components.
38 - Organize solutions with projects that are independently managed simplifies a wide range of use cases including multi-processor applications or unit testing.
39 - Provisions for product lifecycle management (PLM) with versioned software packs that are easy to update and management for configuration files.
40 - Software layers enable code reuse across similar applications with a pre-configured set of source files and software components.
41 - Multiple hardware targets allow application deployment to different hardware (test board, production hardware, virtual hardware, etc.).
42 - Multiple build types support software testing and verification (debug build, test build, release build, ect.).
44 ## Software Pack Creation
46 The following tools support the creation of Software Packs in [CMSIS-Pack format](https://open-cmsis-pack.github.io/Open-CMSIS-Pack-Spec/main/html/index.html):
49 :--------------|:-------------
50 **packchk** | **Pack Validation:** installs and manages software packs in the local development environment.
51 **svdconv** | **SVD Check / Convert:** validate and/or convert System View Description (SVD) files.
53 In addition several scripts are provided that simplify pack creation with desktop or cloud workflows. This is described in several hands-on tutorials:
55 Hands-on Tutorial | Description
56 :-------------------------|:-------------
57 [**SW-Pack-HandsOn**](https://github.com/Open-CMSIS-Pack/SW-Pack-HandsOn) | Explains the steps to create a simple software pack using the Open-CMSIS-Pack technology.
58 [**DFP-Pack-HandsOn**](https://github.com/Open-CMSIS-Pack/DFP-Pack-HandsOn) | Explains the structure and creation of a Device Family Pack (DFP).
59 [**BSP-Pack-HandsOn**](https://github.com/Open-CMSIS-Pack/DFP-Pack-HandsOn) | Explains the structure and creation of a Board Support Pack (BSP).