The XCDL project defines and implements a component framework, as a set of metadata and a collection of tools specifically designed to configure and build complex, package based, multi-variant (multi-architecture, multi-board, multi-toolchain) embedded projects. It is inspired by eCos CDL and also incorporates some ARM CMSIS Pack concepts. The primary projects to benefit from XCDL are:
- xPacks (as repository for packages/components)
- µOS++ IIIe (as content for the components)
- Eclipse Embedded CDT (as graphical tools to manage the components).
The XCDL project was initially hosted on GitHub, but now it is part of the xPack project.
XCDL was definitely inspired by the eCos CDL, and many concepts are borrowed from it, including large excerpts from the eCos manuals, especially from The eCos Component Writer’s Guide.
The XCDL Eclipse implementation also maintains a good degree of compatibility with the current ARM CMSIS Packs (v1.x). More CMSIS Packs features are planned to be integrated, so that XCDL should be a superset of CMSIS Pack.
The reference implementation will include several Eclipse plug-ins as graphical configuration tools (part of GNU ARM Eclipse), and several command line tools for non graphical environments (source code part of the XCDL project).
Although targeted to Eclipse, these specifications should not prevent other development environments to implement them, so, if needed, these specifications will be amended to make alternate implementations possible.
Component Writer’s Guide
- The build process (not yet updated for XCDL)
- The XCDL graphical tools
How to use
Work in progress
The XCDL software is released under the MIT.
Remarks and criticism
- eCos - The embedded configurable operating system by Cygnus Solutions (Wikipedia)
- Manual: The eCos Component Writer’s Guide, by Bart Veer and John Dallaway, published in 2001, available from eCos Documentation.
- Book: Embedded software development with eCos, by Anthony J. Massa, published in 2003 at Prentice Hall, available from Amazon
- Book: Software Build Systems: Principles and Experience, by Peter Smith, published in 2011 at Addison Wesley, available from Amazon
- IEEE Std 830-1998: IEEE Recommended Practice for Software Requirements Specifications, published in 1998
- CMSIS-Pack - ARM mechanism to install software, device support, APIs, and example projects
Distribution management systems
- OpenEmbedded - the build framework for embedded Linux (with more detail in the Yocto documentation)
- BitBake User Manual (PDF)
- Gentoo Development Guide
- MacPorts Guide
- Arch PKGBUILD
- NPM - the package manager for JS (special interest for the packet.json format)
- yotta - mbed module manager
IoT development environments
For an exhaustive list, see Wikipedia.
- Apache Maven (written in Java, XML configuration files)
- SCons (configuration files are Python scripts)
- RAKE - Ruby Make (tasks and dependencies in Ruby)
- buildr - Apache Buildr is a build system for Java-based applications
- Gradle (written in Groovy)
- CMake (written in C++; uses native builders like make)
- Waf (a build tool written in Python)
- GNU Make (the classical tool; hopeless for folders with spaces)
For an exhaustive list see Wikipedia.
- Hudson (the original Sun project, donated by Oracle to the Eclipse Foundation)
- Jenkins (the more active fork, backed by the project creator)
- Travis (the GitHub prefered solution, very good integration)
- Felix Geisendörfer’s Node.js Style Guide