I plan to make an inertial navigation system with beagleboard. The
sensors are using UART and SPI interfaces and
are placed on a daughterboard. Since the response time is important, I
think I should use a real time OS. After
googling a little bit, I found that only two RT OS might be usable for
BB: QNX and RTAI. But I don't know the status of
them, Does anyone have experience using them? Can I use it now or
soon? Since I am pretty new to beagleboard,
I want to get all help I can.
My program also need to communicate with SPI3 and UART2 on
daughterboard. Can anyone point a
direction how to write an interface to do the communication?
I plan to make an inertial navigation system with beagleboard. The
sensors are using UART and SPI interfaces and
are placed on a daughterboard. Since the response time is important, I
think I should use a real time OS. After
googling a little bit, I found that only two RT OS might be usable for
BB: QNX and RTAI. But I don't know the status of
them, Does anyone have experience using them?
As far as I know RTAI is a kind of dead end direction (just my personal
opinion). You might be interesting in Xenomai.org. However, in the long
run, I think that PREEMPT_RT kernel patches are better choice unless
you have really hard realtime constraints which might be currently
better reached with Xenomai.
I personally did not try neither Xenomai nor PREEMPT_RT on BB so
it just a theoretical thoughts . It would be interesting to hear about
your experience if you decide to try them.
Another way could be writing a kernel module to use
daughterboard-driven interrupts. You'll get pretty close to real time
that way, and latencies will be minimal, even using a standard linux
kernel.
But buffering data this way implies extra latencies, and and I don't
like the idea of use for example a 40MHz microcontroller having a
720MHz processor. The good thing about David's suggestion is that it
offloads the designer work
I think, configuring only the absolutely required kernel with RT scheduler (PREEMPT) and a careful design of the application (and drivers) would be good enough. Also, all the unnecessary peripherals should be disabled (powered-down). Using a Beagle board would be ok for a non-customer/commercial projects, but for anything commercial, I would suggest using a clone (without any unnecessary peripheral) and fully configured kernel, optimized drivers and application.