Red Hat Docs > Manuals > EDK Manuals > |
By Michael Tiemann, Chief Technology Officer
An anonymous coward once wrote that "the difference between theory and practice, while quite small in theory, is rather large in practice."
So it is with using Linux for embedded systems. While Linux is being touted as the answer for literally hundreds of new embedded product designs, the embedded systems programmer faces immediate and hard questions: how small, reliable, real-time, lightweight, inexpensive, flexible, feature-rich, portable, scalable, standard, does the solution need to be? The more deeply embedded the device, the larger the difference is between theory and practice.
This difference, while interesting in theory, has a very immediate and practical impact on the future of Linux. Unlike proprietary operating systems, Linux is open source, and anybody can read, modify, or share it as they wish. Believers claim that this "democratization of technology" is a fundamentally superior approach to centralized technology management, while skeptics fear that if anybody can make a change, the technology will devolve in the ensuing anarchy. In the desktop space, democracy has reigned supreme: the community accepts that "the best code wins," which means it also accepts that lesser code does lose. This model of natural selection has resulted in unprecedented advances in functionality, quality, compatibility, and rate of innovation.
But the deeper one delves into the embedded market, the more one finds that the democratic process that favors superior code gives way to the dictatorial reality of hardware, schedule, power, and cost requirements that are unique to every single application. In this context, code that would be best for one platform is totally out of the question for another, and that goes against the design and portability assumptions of Linux. Indeed, since the forces that created literally thousands of independent, incompatible embedded operating systems began acting on Linux (no commercial RTOS has even a 10% market share in the embedded market!), several companies have created their own, incompatible approaches to embedding Linux.
An approach is needed that solves the problem in a way that is both Linux-compatible and Linux-independent. This need has led to the development of the EL/IX application programmer's interface (API). The EL/IX API, based on POSIX, is suitable for other embedded operating systems as well. The goals with the API are two-fold: (1) to make it easy for developers individually to gain control over Linux and its associated technologies without needing to fork or to fragment implementations, and (2) to make it possible for the industry as a whole to endorse a common API standard, thereby making Linux a strong (and possibly dominant) technology in the embedded systems arena.
The Red Hat Embedded DevKit (EDK) provides a unified development environment designed to help you configure, build, install, and boot an optimized Linux environment on both your Linux desktop system and your embedded Linux device. As with any open source project, we expect evolution to outpace proprietary development schedules, and we encourage your feedback (and patches) to make our product not only the best, but also one that you can and want to recommend to others.
In parallel with Red Hat's EDK, we have taken an active role in coordinating the EL/IX API development as a configurable standard for embedded Linux.
The goal of the project is, first and foremost, to standardize the APIs available in desktop Linux today so that developers have the following resources:
A clear and consistent idea of what functionality they can expect for a given embedded target
Support for developing embedded applications using the Linux desktop environment as both a host and development platform
A way to scale functionality according to the requirements of their specific target
The freedom to use any kernel (Linux or otherwise) which implements the interface of the EL/IX API that their application requires
The ability to easily port to any hardware that runs any kernel that supports the subsets of the EL/IX API they require
The EL/IX API will be extensible and open source. Moreover, the first version of the API will adhere to the following additional requirements:
Elements must already be implemented in standard Linux distributions ("don't define what doesn't exist")
Demonstrable real-time performance when running on an actual real-time OS ("prove it works beyond Linux")
Based on POSIX where possible ("build on accepted standards")
Over 100 developers who are working on real-time and/or Linux development have endorsed this standard and are active participants in the drafting, review, and implementation of the API. If you are interested in following and/or participating in this activity, please visit http://sourceware.cygnus.com/elix and register according to your interests.
By meeting the technical requirements of the embedded developer, and by using internationally accepted standards in an open source implementation, we intend to make the adoption of the API a "no-brainer." Indeed, the impact on today's Linux developer is virtually nil. But the impact of adopting the API in the embedded community will be profound: flexibility and freedom will prevail over fragmentation, and life will be better both for the customers who want to buy intelligent devices and developers who want to use intelligent software solutions to build them.
We are glad to have you join us.
| ||
---|---|---|