Supported IDEs and Toolchains
Why CMSIS Matters

Open-CMSIS
Getting started
First we will need the Edge Impulse SDK pack and an Edge Impulse project CMSIS-packs. You can download these from the deployment section of the Edge Impulse Studio.Deploy your project to an Open CMSIS pack

Open-CMSIS Deploy
- EdgeImpulse.EI-SDK.x.y.z.pack
- EdgeImpulse.project_name.x.y.z.pack
Edge Impulse SDK Pack
The Edge Impulse SDK pack contains the Edge Impulse library and the required dependencies. The pack will be listed under theEdgeImpulse::EI-SDK
category, and is now available from the Arm Keil Pack Installer.

Arm Keil - Edge Impulse SDK pack
CMSIS-Pack Requirements
The Edge Impulse SDK pack requires the following CMSIS packs:- CMSIS-NN 4.0.0 Focuses on optimizing ML operators for Cortex-M, targeting Edge AI applications.
- CMSIS-DSP 1.15.0 A collection of DSP functions optimized for Cortex-M processors, suitable for DSP applications.
External Links to other CMSIS Supported IDEs and Toolchains:
These are some of the other IDEs and toolchains that are supported by CMSIS and can be used to integrate Edge Impulse models into your projects: Other vendors and toolchains that support CMSIS include (but are not limited to): 3PEAK, ABOV Semiconductor, Active-Semi, AlifSemiconductor, AmbiqMicro, Amiccom, Analog Devices, APEXMIC, Arm, ASN, AutoChips, AWS, Brainchip, Cesanta, Clarinox, Cmsemicon, Cypress, Dialog Semiconductor, ELAN, Embedded Artists, EmbeddedOffice, EmCraft, EmSA, FMD, FMSH, Geehy, GigaDevice, GorgonMeducer, HDSC, Himax, Hitex, Holtek, Infineon, Keil, L-Tek, LVGL, lwIP, Maxim, MDK-Packs, Megawin, Memfault, Microchip, Microsemi, MindMotion, NordicSemiconductor, Nuvoton, NXP, Oryx-Embedded, Puya, QuantumLeaps, RealThread, RealTimeLogic, redlogix, Renesas, SEGGER, SILAN, Silicon Labs, Sinowealth, SodiusWillert, SONiX, Tencent, tensorflow, Texas Instruments, Toshiba, wolfSSL, YTMicro, Zilog.Background
Developed in response to the growing need for a vendor-independent hardware abstraction layer, CMSIS has evolved from its inception following the launch of Arm Cortex-M3 devices. It has simplified software reuse, minimized the learning curve for developers, and contributed to faster deployment of new devices. Originally focused on Cortex-M based microcontrollers, CMSIS now extends its support to Cortex-A class devices, catering to applications that demand high-performance microcontrollers. Over the years, CMSIS has introduced various components to support development needs ranging from signal processing to real-time system management, and its recent additions, such as CMSIS-NN, aim to address the needs of edge computing and machine learning on low-power devices.Open-CMSIS-Pack
The Open-CMSIS-Pack project aims to streamline the integration and management of software components for embedded and IoT projects, enhancing code reuse across these domains. Hosted by Linaro in collaboration with Arm, NXP, and ST, this incubation project focuses on standardizing software component packaging and providing foundational tools for their validation, distribution, integration, management, and maintenance. CMSIS-Packs are a central element of this initiative, offering a packaging technology that supports nearly 9,000 microcontrollers. These packs deliver software components, device parameters, and evaluation board support through a collection of source code, header files, libraries, documentation, templates, startup code, programming algorithms, and example projects. They address several challenges by providing metadata for software components, ensuring consistent upgrades, defining interfaces and relationships between components, and simplifying the integration process with dependency information for toolchains, devices, and processors. The Open-CMSIS-Pack project, launched in April 2021, has not yet finalized its roadmap but plans to create command-line tools for project builds, workflows for software pack verification, enhance pack description formats, simplify the creation of software packs from sources like CMake projects, and develop a software layer for pre-configured software components. It also aims to organize the taxonomies of standard APIs to support reusable software stacks. This initiative represents a significant step toward removing the complexity and enhancing software compatibility and reusability in the diverse and fragmented IoT and embedded systems landscape.Breakdown of the Components of CMSIS
CMSIS encompasses a range of components and tools designed to cater to different aspects of microcontroller system development:Base Software Components:
- CMSIS-Core: Provides essential headers and startup files for Cortex-M system software development.
- CMSIS-Driver: Offers standardized APIs for common peripherals, enhancing compatibility across bare-metal and RTOS-based systems.
- CMSIS-RTOS v2: Features a standard API for real-time operating systems, enabling easy transitions between different RTOS versions.
Extended Software Components:
- CMSIS-DSP: A collection of DSP functions optimized for Cortex-M processors, suitable for DSP applications.
- CMSIS-NN: Focuses on optimizing ML operators for Cortex-M, targeting Edge AI applications.
- CMSIS-View: Enhances visibility into embedded applications for analyzing events and faults.
- CMSIS-Compiler: Supports I/O operations retargeting and offers an OS-independent interface for multithreading.
- CMSIS-Toolbox: Provides project management and continuous integration tools across multiple compilers.
- CMSIS-Stream: Optimizes data block streaming in DSP/ML applications.
- CMSIS-Pack: Standardizes the packaging mechanism for software components, device parameters, and board support.
- CMSIS-SVD: Enables device vendors to describe peripherals in XML, facilitating the automatic generation of compliant C header files.