Embedded Linux – why?
I have pondered before the appropriateness of Linux for embedded applications. My initial stance was clear enough: I could see very little sense in it. Why use a desktop operating system in such a completely different context? Over the years, the popularity of embedded Linux has increased, the technology of embedded systems has moved on and I have reappraised my views accordingly. With Mentor Embedded offering comprehensive support for customers using Linux and Android, I thought it was worth revisiting the philosophical debate …
So, what are the upsides and downsides of using Linux for an embedded application?
There are plenty of reasons why it is attractive. A great many programmers are very familiar with both the API and the kernel itself. So getting skilled people, who need little training, is not so hard. The very wide use of Linux means that a vast array of drivers and middleware components are available, offering many opportunities for reuse, keeping costs down. And, of course, the OS itself is free, so there are no worries about recurring license costs etc.
But there are downsides. Linux is not intrinsically deterministic and, hence, not really suitable for hard real time applications. It carries quite a large memory footprint. And, although there are no license costs, there are legal issues, which could result in an obligation to make application software available as open source.
The good news is that, although these downsides may sound damning, Linux can be a good choice, if its use is approached correctly. Some applications do not need a true real time response and are not overly sensitive to memory footprint. And anyway, by using the right tools, the performance and memory utilization can be optimized. Tools and the right backup can also avoid problems with legal issues and make the deployment of a Linux based system straightforward and cost effective.
Going forward, there are bigger challenges, such as systems which are implemented using multiple cores, some of which may be running Linux, whereas others utilize an RTOS. In this context, the right OS can truly be selected for each job. For multicore and multi-OS, tools and support to implement and optimize a system are no longer optional.
Comments
Leave a Reply
You must be logged in to post a comment.
Colin I coincidentally have interest in this subject and I suspect others do as well.
I wonder if you will be writing more on the subject? And perhaps cover some basics like: 1) Various implementations of embedded Linux that address the limitations you mentioned, 2) currently available Linux versions that are popular and/or versions you’ve used, 3) the application of some tools, and the foundations of Linux in embedded applications.
I see Linux mentioned here and there, and even a “Tiny Linux” but I never see so much regarding the foundations of using Linux in embedded systems.
My 1st attempt at getting familiar did not go so well (bought an old SIMM stick/uC Linux kit off of eBay, not well documented, ran into somewhat show-stopper obstacles, can’t get kit running).
Hope to read more-thanks!
I am sure that this is a topic which will be covered again from time to time. You should look out for white papers from my colleagues too. Here’s the place to look: http://www.mentor.com/embedded-software/techpubs/
Thanks Colin. I am downloading several white papers now.
Also, I found what appears to be a good starting platform for embedded Linux at Intellimetrix. They provide an learning kit for $249. I think I’ll pick one up.