With the rapid developments of electronic and computer technologies, operating system has already been an essential and necessary component of an embedded system. Although some famous embedded operating systems have been already developed and used, such as VxWorks, QNX, Embedded Linux, Windows CE, uC/OS, eCos, etc., due to the dedicated features, various types of embedded operating systems are needed to meet the requirements of the field.
It is obviously necessary and valuable to enhance the research on the design and development of embedded operating systems. The ARM based embedded operating system micro kernel developed by the authors of this paper is one such good attempt, in which the inter-task communication lays the foundation of the micro-kernel.
It describes the design and implementation of an ARM based embedded operating system micro kernel developed on Linux platform with GNU tool chain in technical details, including the three-layer architecture of the kernel (boot layer, core layer and task layer), multi-task schedule (priority for real-time and round-robin for time-sharing), IRQ handler, SWI handler, system calls, and inter-task communication based on which the micro-kernel architecture is constructed.
On the foundation of this micro kernel, more components essential to a practical operating system, such as file system and TCP/IP processing, can be added in order to form a real and practical multi-task micro-kernel embedded operating system. The main contributions of this embedded operating system micro kernel are:
1) Both real-time and time-sharing scheduling. As we know, real-time system is an important application field of embedded systems. While on the other hand, time-sharing tasking is also popularly required, e.g. various kinds of Web based embedded control or management systems. The micro kernel described in this paper is designed to implement both kinds of schedules. The priority schedule is used for real-time tasks and round-robin for time-sharing ones.
2) Three-layer architecture. The kernel is designed as a three-layer system and all the manipulations of the kernel are elaborately designated to each of them. For example, the boot layer responds for the booting and initialization of the operating system, the core layer for the internal manipulations of the kernel, and the task layer manipulates the kernel level tasks and user level tasks.
Inter-task communication routines accomplish the messages transmission among time-sharing tasks. With such architecture, it is in fact designed as a micro kernel, based on which more components can be added to form a practical micro-kernel embedded operating system.
The code count of the entire kernel is only about 3,000 lines, and simple, foundational and extensible. It can be provided to the students for learning and research, therefore is beneficial for curriculum teaching and experiment.
To read more of this external content, download the complete paper from the on line author archives at the Indian Institute of Technology – Jodhpur