The Component Architectures for Microkernel-based Embedded Systems (CAmkES) project aims to create a quick catalogue solution for embedded systems. Creating new component technology will increase the reliability of embedded systems and decrease the cost.
The project aims to reduce the complexity and cost of developing complex software for embedded systems such as handheld devices.
The traditional approach to creating software that runs on embedded systems is inflexible, expensive and requires highly-specialised programming skills. With a growing global demand on embedded systems to deliver more complex functionality, reliability and security, a new approach is required for software development for these devices.
CAmkES forms part of NICTA’s Embedded, Real-Time and Operating Systems (ERTOS) group, which focuses on reducing the cost and improving the reliability and trustworthiness of embedded systems software.
See also:
What has this research achieved?
This project has devised and developed a component-based framework for developing embedded operating system software.
In recent years, software developed for business, web-based and PC applications has achieved efficiency gains by taking a more modular approach to development. This allows significant re-use of software components, providing more flexibility and complexity in the resulting applications.
This project applies the same principles of reliable, re-usable software components to embedded systems, resulting in more powerful, flexible applications that are easier and less expensive to develop.
Who will benefit?
Creating rich software applications for embedded devices much more quickly and with less expense will create socio-economic benefits. Users of embedded systems devices will get more powerful applications for those devices more quickly.
What are the key features?
The CAmkES solution is built specifically for the L4 microkernel, an open source operating system for embedded systems, with growing support in the open source community. CAmkES will be released as open source, and therefore be exposed to a significant user community of developers and users.
A component architecture devised on top of microkernel operating systems directly addresses the low productivity in rapid development of complex and trusted embedded systems.
CAmkES specifically addresses the key issues of performance, overhead, and flexibility, by providing a component model where connections between components are first class entities. This means that connections (and therefore communication between components) are explicitly specified, and that the characteristics of the connections can be defined by the system designer in the same way as component functionality.
Progress update
The initial work on creating the core component features of CAmkES was completed in 2006. Further work continued through 2007 to enhance those features and add new components. The technology has been licensed to NICTA spinout Open Kernel Labs for use in further development of the OKL4 embedded operating system. We anticipate an open source release of the framework in the near future.
Research team:
Dr Ihor Kuz (project leader), Dr Jenny Liu, Ted Wong, Nicholas FitzRoy-Dale
Publications
Gernot Heiser, Kevin Elphinstone, Ihor Kuz, Gerwin Klein and Stefan M. Petters
Towards trustworthy computing systems: taking microkernels to the next level
ACM Operating Systems Review, 41(4), 3–11, (July, 2007) pdf
Ihor Kuz and Yan Liu
Extending the capabilities of component models for embedded systems
Proceedings of the Third International Conference on the Quality of Software-Architectures (QoSA), Boston, MA, USA, July, 2007 pdf
Ihor Kuz, Yan Liu, Ian Gorton and Gernot Heiser
CAmkES: a component model for secure microkernel-based embedded systems
Journal of Systems and Software Special Edition on Component-Based Software Engineering of Trustworthy Embedded Systems, 80(5), 687–699, (May, 2007) preprint
Participants
Status: Completed
The category of embedded systems encompasses a broad range from very simple and heavily resource-constrained systems to complex distributed systems consisting of powerful and resource-rich processing nodes. The component architecture we developed has a minimum level of resource requirements, but can be used for all ranges of embedded systems that fulfil these requirements. This means that it will be usable for real-time embedded systems, networked and distributed embedded systems, power-constrained systems, sensor networks, secure systems and so on. We do not limit ourselves to any particular application domain.
Minimum targeted system: Hardware
Targeted systems must satisfy minimum requirements for the hardware they are implemented on. We require targeted systems to include:
It is important to note that in most cases the need for an MPU will be fulfilled by a memory-management unit (MMU). However, support for virtual address spaces is not a requirement, only memory protection is important. Also, while a number of features (in particular security-related features) of the component architecture require memory protection, it should be possible to make use of a subset of the component architecture on hardware without memory protection.
Second, the amount of memory necessary largely depends on the platform, application requirements and specific features of the component architecture used by the application. For example currently on ARM, the L4 microkernel requires 200KB of memory and the OS services provided by Iguana require at least 100KB. We expect this can be at least halved by tuning the kernel’s memory footprint and using better compilers. Furthermore, most of the memory will not need to be writable and could be provided as ROM containing the software images.
Typical resource constraints imposed by the available hardware (as well as the nature of the application) include limited primary memory, limited (or possibly no) secondary memory, limited power supply and limited processing power.
Minimum targeted system: Software
The system must run a minimal, high-performance microkernel. We have designed the system based on NICTA’s and Open Kernel Labs' L4 microkernel, however, a different kernel providing similar functionality could conceivably be used. In particular, the kernel must provide: pre-emptive multitasking, high-performance IPC (synchronous message passing), footprint optimisation, and memory protection.
The components and component architecture run at user level and are not part of the kernel. We require a minimal development environment to be available. This consists of a
(C language) cross-compiler suite (for example GCC) for the target platform. This minimal environment should also support debugging tools such as a debugger and profiler.
The purpose of our component architecture is to provide support for developing embedded systems on top of microkernels. The architecture provides a component model, standard interfaces and component definitions, standard component implementations, standard services, and support for various architectural patterns and styles suited for embedded systems.
Challenges
Component-based development shifts the development emphasis from programming software to composing software systems. It brings with it obvious benefits for embedded systems such as reusability, maintainability and a reduction of software complexity which leads to improved productivity. However, applying component-based development in the embedded domain also introduces several new concepts and challenges:
Feature summary
The main features of the CAmkES architecture are:
A layered component architecture
CAmkES is part of a layered architecture, as shown below:

Our layered architecture also provides an encapsulation of the dependency information, which makes it easy to create customised embedded applications without needing to know or understand the underlying OS architecture or feature dependency. For example, a developer can implement the function calls between component interfaces without knowing that the invocation relies on IPC.
Development of CAmkES-based embedded systems
As in general, non-embedded component-based software development, the development of CAmkES-based embedded systems has four stages: design, implementation deployment and runtime. These are shown below.
