Real-Time Systems Development

The availability of several real-time variants, and its increasing popularity for desktop and server usage, has meant that Linux is now being seriously evaluated for embedded applications. Device drivers are collections of subroutines which together offer a software interface to an I/O device. They may be bound into the kernel, or dynamically loaded into a running system. All device drivers have to comply with a standardized interface (API) by having their code organized into a small set of functions which fit in with the published system calls. To further 'virtualize' the device interface, in Unix they are accessed through the file system directories.

Recently there has been increasing interest in the use of the Linux kernel for real-time embedded systems, as described in Chapter 9. This is curious because Linux is far from being suitable for real-time applications. It was created for a multi-user, mini-computer with large file system, a 'fair-shares' scheduler, and virtual memory support. This discrepancy reminds me of the time when Pascal was enthusiastically greeted as the final solution for real- time programming, despite all its immediately obvious shortcomings. But for whatever reasons, Linux is being used for an increasing number of high- profile products and services. Of particular note, when writing this chapter, is the TomTom GPS in-car navigation system which provides a 3D model of the road ahead with text and voice synthesized driving advice. In addition, a variety of PDAs and high functionality mobile phones have been announced...