The Apparatus Framework
What is it?
The Apparatus Framework is an object-oriented software framework written in C++ for embedded applications. It implements RT-OS abstraction, simulation facilities, device and communication concepts, design pattern and more.
The Apparatus Framework leverages the starting point for embedded software development and shortens development time. Projects get a proofed platform to build on it and the development team can soon focus on the real application features.
The framework is hardware and RT-OS independent and has been ported to major OS and RT-OS. See the list of ports for supported kernels.
International companies rely on the Apparatus Framework. It is used in telecommunication, industrial controls, etc.
A big achievement for the Apparatus Framework was the nomination on the Embedded World 2006 for the Embedded Award in the category software.
The Apparatus Framework (formerly called the Apparatus Services) exists since about 10 years. The development of the framework started when we realized that a lot of embedded software projects start with creating fundamental services such as kernel abstraction, startup handling, simulation of missing (because still under development) hardware, implementation of design pattern and other stuff. All these things were similar in most projects but re-implemented. The problem is that this work doesn't actually add value to the product! The final user has no immediate benefit from a kernel abstraction!
The Apparatus Framework is written in C++. All used concepts are designed for embedded systems with limited resources. As an example, the standard template library is partly re-implemented without using dynamic memory allocation. All 'new' and 'delete' methods are implemented using real-time safe (deterministic) allocation mechanisms (most RT-OS provide similar solutions). The framework is provide with a graphical configuration tool based on the eCos configuration tool. All API documentation is generated by Doxygen. The source code is mature and lots of proved concepts are implemented and already used in industrial application (elevator, industrial control, telecommunication devices, measurement devices, etc.).
One of the most important features provided by the framework is the ability to simulate the embedded software on a developer workstation running MS Windows. An example project: We were asked to develop embedded software running on eCos on a customer specific hardware. Hardware development started in parallel to the software development (this means: hardware for software tests not available for months). We implemented the embedded application on top of the Apparatus Framework API, tested the functions (state machines, etc.) on the developer workstations and all the communication went over 'named pipes' to a hardware simulation implemented with C++/MFC. When the hardware was ready we ported the Apparatus Framework to eCos and the customer specific hardware and tested the application on the embedded hardware. Big parts of the application were already tested on Windows and we could soon concentrate on testing timings and other aspects that can only be tested with real hardware.
Focusing on powerful embedded hardware the Apparatus Framework is designed to run on 32bit or 16bit Microcontroller and a RT-OS (VxWorks, OSE, VRTX32, pSOS, Linux, eCos, etc.). The framework can easily be ported to almost any other operating system.
The Apparatus Framework is hosted on www.bbv.ch and is licensed under LGPL since years. Hosting by SF shall allow other embedded software developer to join the development team and bring in more good ideas and concepts.
The KernelServices encapsulate commonly used kernels providing independence and flexibility. This abstraction enables bbv to collaborate efficiently with many different customers and their kernels.
Common Pattern such as Observer/Observable, Timer/Manager and the Post Office are ready for the use within embedded systems. Especially when it comes to designing a systematic, well-ordered start-up and shut-down procedure for a device, the Factory pattern proves very helpful.
The DeviceServices provide abstractions for common devices like RS232, IrDA, EEPROMs, Flash-ROMs, chip cards, file system, dial-up, Ethernet and embedded DB. All components support HW tests and self-check. Additionally, the package contains tools with checksum and compression algorithms.
The SimulationServices help us develop applications on a PC simulation without target hardware.This is a very valuable advantage which should not be underestimated.
The CommunicationServices open the doors for device network support. TCP/IP, UDP, ICMP, PPP, Slip, HTTP, XML, FTP, CHAP and PAP - just to name a few. An embedded Web-Server is included. CommunicationServices give your application the power to be accessed remotely: remote monitoring, remote maintenance and remote controlling.
The TestServices were made to improve the quality of our software. Basic implementations in a small framework which support Packet- and
The Apparatus Framework have been ported to the following Kernels:
- eCos of RedHat/Cygnus. A first class highly configurable Open Source real-time kernel.
- Linux. The popular classic.
- µC/OS-II from Micriµm, the company of Jean J. Labrosse.
- OSE - Classic and Delta - from ENEA
- VRTX from the company Mentor Graphics (formerly Microtec Ltd.)
- The ACE Open Source wrapper of Douglas Schmidt and with it dozens of other OS (most UNIX derivates, real-time OSs like LinxOS, VxWorks, pSOS or QNX up to CRAYs UNICOS). Tested on Windows and Linux.
- VxWorks from the company Wind River. The market leader.
- RTK68 from the company ABATRON AG
Checkout the overview to find out the limitations with each supported kernel.