Originally developed by the Roboterclub Aachen e.V. for the Eurobot competition, xpcc became a separate project in 2009 and since then focussed on a new approach to cross target microcontroller libraries.
It stands out for its extensive use of static C++ classes and templates which is unusual in this field, but lends itself well to the static nature of embedded development.
The main goal of xpcc is to provide a simple API which is efficient enough to be deployed on a small ATtiny, yet powerful enough to make use of advanced capabilities found on 32bit ARM Cortex-M.
The xpcc library main features are:
- efficient object-oriented C++ API,
- support of AVR and ARM Cortex-M based micro-controllers from Atmel, NXP and ST,
- build system based on SCons and Jinja2 template engine,
- cross platform peripheral interfaces: Gpio, Uart, IĀ²C, Spi, Can,
- write once, run anywhere external IC drivers using these interfaces, and
- lightweight, non-blocking workflow using timers and cooperative multitasking.