Enhanced Project Management for Embedded C/C++ Programming using Software Components
This talk introduces a set of plug-ins to create and manage C/C++ projects for embedded application development using Software Components.
Software development for embedded systems becomes more and more challenging:
- Number of available microcontroller devices and their variants grows rapidly, functionality and performance increases.
- Embedded software complexity rises, applications must cover wider range of versatile tasks
Application portability also plays important role. It is often required that the same application is able to run on different devices from different vendors, still making use of device specific features.
That makes efficient development of embedded applications highly dependent on:
- Unification in software interfaces to processors and peripherals
- Availability of device information, startup code, device drivers, flash programming algorithms, device aware debugging
- Possibility to reuse middleware and application software components.
The Cortex Microcontroller Software Interface Standard (CMSIS) drives unification within the ecosystem of the ARM Cortex-M based devices. One area of the standard is CMSIS-Pack specification that deals with the aspect of distribution of device support and software components like RTOS, middleware, board drivers, etc.
ARM provides an open source reference implementation for Eclipse – CMSIS-Pack plug-ins.
The plug-ins can be re-used as part of configuration utilities and development environments. They implement the fundamentals to access the information and resources contained in Software Packs as well as provide CDT integration to create and dynamically manage C/C++ projects, update toolchain settings.
This talk demonstrates the features of the CMSIS-PACK plug-ins using live demo as well as touches the following aspects:
- Development Flow from “New Project” to “Build completed”
- Accessing/Using device information
- Dynamic project management
- Dynamic configuration of project (component selection + configuration)
- Resolving component dependencies
- Toolchain integration and Build
The pre-built plug-ins as well as source code are available on GitHub: