Sigh, here we go, this is where I say Linux is not all things to all people, and the get ripped to shreds by the whole Internet.
The thing is, in the chat rooms at the Multicore virtual conference, it was assumed that the OS was Linux. Yes, all of the hardware vendors will supply a Linux BSP with their multicore chip. We were working on one at Xilinx for the dual core Cortex-A9.
Linux is great!
There are many reasons to use Linux in an embedded system. It is free to use, the tools are free, there is a huge amount of support available by asking on a mailing list, all good reasons. The one topper reason (in my experience) for using Linux is the system needs a complete TCP/IP stack. If you are doing networking and need to get going quickly, Linux is the way to go.
And, I am a real Linux guy. I am typing this on my Ubuntu 10.04 Dell 17.3″ screen laptop, Big Red. (Because it is big and red, duh.) I put Ubuntu on my wife’s laptop. At work that is where I spend all my time, in Linux, writing code for an embedded Linux system. I have been into the kernel and have working driver code to prove it.
However; embedded Linux is not a one size fits all, use it anyplace and it will be perfect solution.
Linux, The price of Free is Expensive.
Sometimes the system is too small, does not have an MMU (yes I have built a system with uClinux), or is otherwise not suited for Linux.
One thing about Linux, it is very difficult to get a minimal implementation. A kernel all by itself is not a useful thing. You need at least busy box, and usually more to get any real work done. As packages get added and more features are enabled, the system starts to grow. Type ‘ps’ on an embedded Linux system. Do you know, really know, what all those processes are doing?
Being an insane control freak, that bothers me.
Kernels come out all the time. There are always fixes and updates. Most don’t affect the code in your system. Right? Your sure about that? It is a full time job keeping up with kernel updates and patches. Plus there are the patches for the specific processor architecture in your system. So, what do you do?
Basically you pick a kernel version and start building. The kernel gets updated when there is a real bug. Otherwise it never changes. Some day a major security flaw will make all the systems vulnerable. Hopefully that does not happen on your watch.
I could claim that Linux does not scale for multicore processors. At first, I thought that was the topic of this article. What the research paper really says is there are bottlenecks for most major Linux applications above 48 cores. 48 is a pretty decent number of cores, if you think about it. Most systems today are at 2. A big dollar system gets to 4, and real servers run with 8. We are still a long way from 48.
Why not Linux?
Let’s throw out the old code and start over again. The new stuff will be better, I promise. O, those software guys are just nuts like that.
People who have worked with me know, I have argued,and heatedly, against the big redo. So why am I arguing to start over with a new operating system and a completely new paradigm for applications? It would be better to be the Linux on multicore expert. That would surely get me more gigs in the future.
It is actually simple. If I need a side project, I want to start from the metal and work up. It is personal.