RTLinux problem on Geode

Nov 26, 2003 7 Replies

Were attempting to run RTLinux on SC2200 Geode based system and are experiencing problems. I’ve seen a few posts on RTLinux Geode problems and am hoping someone might have some ideas.



Were booting our board to Linux using LinuxBIOS so I believe all of the power management features of the Geode are disabled. The basic application were running has 4 main task, 3 are triggered on receipt of serial data (19.2 & 38.4) and the other is at RTAI periodic task running at 64 Hz. This application runs OK on a Pentium based PC104 board but exceptions out in various ways at startup when run on a Geode board. We’ve noted we get INT7 spurious interrupts when running on the Geode but don’t believe this is part of the problem. We’ve tried executing some basic applications on the Geode that have only one or two tasks and find that we sometimes see exceptions while other times we execute cleanly. We’ve run some basic memory and HW test on the Geode board and believe it’s probably OK.



Given all the posts noting real-time interrupt issues on the Geode were a little worried we may be having basic HW issues. Would like to hear if anyone has had success running real-time code on a Geode. Thanks.


Have you tried to run non RTLinux (that is, pristine Linux kernel compiled for Geode) on this very same board? I presume the posts you mention above regard latency which is a real Geode SMM managed pseudo hardware problem. Still it's been fairly simple to override as long one can live with latencys of around 100us. Couldn't your problem be related to Linux BIOS not initializing everything Linux/RTLinux assumes will be ready when it boots and maybe some SMM management that is missing and that shoudn't be? Have you tried it with another BIOS?

Regards.

Elder.

There is no guaranteed latency in standard Linux. It's good for soft realtime, but unusable for hard realtime.

-Michael

You're right. I was thinking of RTAI (and maybe RTLinux) when I wrote that part but did not make it clear.

Regards.

Elder.

What BIOS are you using? I have had numerous problems - mostly intermittent - with some VSA code. I've spent many hours hand-crafting hacked BIOS modules with different VSA code variants. You may be able to solve your problems by experimenting in this way.

But in general if you have hard RT requirements, I'd advise against Geode. You can mitigate problems by using XPressBIOS and *native* drivers for *everything* (i.e. no VSA), but it's a hell of a lot of work.

Thanks all for your suggestions. We had considered that it might be a LinuxBios problem so we reverted our National Semi Pompano development board back to the original Bios (XpressROM BIOS) and booted Linux via Etherboot and experienced the same issues. We also ran the on a Compulab Geode SC2200 development board with a General Systems BIOS with power management disabled with the same result. We are using the Adeos patch instead of RThal but I believe we had the same problem under RThal.

To simplify the environment we came up with a test case that has 2 simple hard real time tasks, one running at 10Hz and another running at 100Hz. Both do nothing more than increment a variable and go back to sleep.. Even this simple test case crashes intermittently on Geode based boards but runs fine on our Pentium development boards. Problem manifests as a memory access or invalid op-code exception. Starting to wonder if its some problem with the Geode MMU under Linux.

Have not tried developing any test case for Linux alone but we have been using Telnet routinely without problems so in general Linux appears to be OK. We really need the real time response provided by RTLinux, not sure we’ll learn much running under Linux alone but we might try some experiments if all else fails.

Hi Bill,

[...]

Look at the CMOS setup options in your BIOS. If there is anything in there related to, for instance, audio support at "normal" I/O addresses, then your BIOS contains VSA code (My understanding was that XPressBIOS doesn't, which is why I suggested it, but I haven't actually used it). This is the Root Of All Evil on Geode systems. Power management is a red herring. VSA code runs all the time, and is constantly stealing cycles from your application.

I think it's some kind of double fault condition, when the system is already in SMM and something happens that can't be serviced in SMM. It's not clear to me why these problems only manifest under Linux, but I surmise that the whole contraption is inherently rickety and it just hasn't been tested thoroughly in Linux.

Just AAMOI - Try changing the RAM configuration. Add more RAM. This fixes our problems, though it doesn't improve the realtime performance (or lack thereof) which Geode exhibits.

Every program has at least one bug and can be shortened by at least one instruction -- from which, by induction, one can deduce that every program can be reduced to one instruction which doesn't work. Peter Kannegießer + Embedded Computers see http://www.lippert-at.com

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required