



As my friend Sean well knows, I would really like to get my hands around a project where I can make use of Linux in an embedded system.
I’ve come close in the past; really I have. But every time I think there’s an opportunity, it seems that some situation arises that squashes it. However, a glimmer of light has started to creep into my peripheral vision…I think.
In the past when an opportunity has been there to make use of Linux, the real-time aspect has not been too heavy. That’s made the choice fairly simple, since I had a sufficient level of confidence that it would more than keep up. However, in this new possibility, it may be that a standard Linux distro may not do the trick where raw speed is concerned. To give a general scope, I need to be able to deal with Gigabit Ethernet speeds. We’ll have some hardware assistance, but I need the application to really scream.
I’m aware of a number of changes in the 2.6x kernel that makes it somewhat more amenable to semi real-time applications, but it still seems to me that it is limited enough to consider one of the real-time variants that exist. So, a number of questions come to mind with respect to the hard real-time needs of a high speed application:
1. With any particular variant (standard distro’s or something with real-time extensions), is there a way to put into place very high-speed, deterministic processes that can then communicate with lower-priority, more traditional Linux processes? It occurs to me that I’ve seen products that essentially place an RTOS above the hardware, which in turn runs Linux as a task. My concerns there run to points such as what happens to memory protection in that case? How do real-time processes communicate vs. Linux tasks? How do real-time tasks communicate with Linux tasks? Can the RTOS run in non-protected mode while Linux operates using memory management? And so on…
2. How complicated does the whole thing get with respect to the fact that this application will be hosted on non-Intel hardware that uses FLASH as it’s primary storage instead of a hard disk? If we assume that we’ll be using some variant that has an RTOS at the bottom, how can one partition FLASH up so that both Linux and the RTOS can gain access safely?
3. Can you (here I assume that you can, but I’ll ask anyhow) install interrupt handlers that run independently of the Linux kernel? What are the implications of direct hardware access? That is, I presume that the RTOS portion (again assuming something structured that way) gives you that ability to drive devices in some efficient manner.
4. Just how real-time can I get? (big, broad question)
I’m quite sure these are all easily answered and there are guaranteed to be many more-significant questions to be asked. These stem from my general ignorance of using Linux in such an application and are what pops into my head initially for some reason.
So, if anyone has experiences that they’d like to pass along, I’ll be more than grateful to hear them. Lord knows if I’ll actually get to use Linux this time, but I’m gonna try.
All info greatly appreciated!
Another area that I’m a bit concerned about is the whole issue of GNU and what our final responsibilities would be there. I know the general rules, but I’d love to hear from folks who’ve been through the process.


More Options ...

Categories
Tag Cloud
Blog RSS
Comments RSS


Void (Default)
Life
Earth
Wind
Water
Fire
Lightweight