CAmkES: Embedded Systems

A broad range of systems fit in the category of embedded systems. These range from very simple and heavily resource-constrained systems, to complex distributed systems consisting of powerful and resource-rich processing nodes. The CAmkES component architecture has a minimum level of resource requirements, but can be usable on all ranges of embedded systems that fulfill 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, etc. We do not limit ourselves to any particular application domain.

Minimum Targeted System: Hardware

Targeted systems must satisfy minimum requirements with regards to the hardware they are implemented on. We require targeted systems to include:

  • a 32-bit (or 64-bit) CPU;
  • a memory-protection unit (MPU);
  • at least 200 kilobytes of primary memory (RAM and/or ROM).

It is important to note two things here. First, 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 will 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 will largely depend 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 200 KB of memory and the OS services provided by Iguana require at least 100 KB. We expect that this can be at least halved by tuning the kernel's memory footprint and the use of 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

With regards to software we require the system to run a minimal, high-performance microkernel. We have designed the system based on L4, however, a different kernel providing similar functionality could conceivably be used instead. In particular, the kernel must provide: pre-emptive multitasking, high-performance IPC (synchronous message passing), footprint optimization, 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 (e.g., GCC) for the target platform. This minimal environment should also support debugging tools such as a debugger and profiler.