This might be completely random (i’m not familiar with RT linux at all, and only beginning with beaglebone), but wouldn’t the PRUSS be useful here? The way I understand it, it’s just a real time core in the Sitara processor that you can program independently, and maybe control from the linux user space. A quick google turned up these threads that might be worth a read:
I did have a bit of a look at this. One problem is that I need to do floating point calculations. The problem could probably be recast to fixed point but it would be complex calculation in PRUSS assembler. Perhaps it would possible for the PRUSS to perform the DAQ io and hand the calculation to a kernel thread…
I did have a bit of a look at this. One problem is that I need to do floating point calculations. The problem could probably be recast to fixed point but it would be complex calculation in PRUSS assembler. Perhaps it would possible for the PRUSS to perform the DAQ io and hand the calculation to a kernel thread…
Hi Evan,
Same problem as before. Linux response is not deterministic and hence it cannot process the calculation and return the result in 10uS. Using the PRUSS for DAQ is no better than using DMA. Can you explain why you need the calculated output to occur in 10uS?
As predicted by others jitter in a standard 3.2.28 kernel is terrible, milliseconds in some cases.
I’ve tried nanosleep but it seems to have a minimum resolution of around 75us even when called with a sleep of 0 (min 32us, max 1200us, mean 77us). The CPU is at about 27% indicating that is it doing some sort of wait. Can someone suggest a finer grained sleep function? The PRU might be an option here?
Even though I think starterware will be the long term solution I want to play with llinux while I get my embedded skills up.
I managed to compile 3.2.28 with PREEMPT_RT. The first thing I noticed is that the CPU frequency is now 600MHz instead of 720MHz!!! Has anyone else noticed this behaviour?
Although, it's probably safe to renable by default now.. We were
having stability problems in the past and it turned out it was the
tied to the very-low frequency opp point..
My testing shows that PREEMPT_RT is still pretty bad at controlling latency and jitter on the time scale I need (~20us). I’ve used RTAI on x86 in the past and it was pretty good. Sadly it doesn’t seem to tracking current kernel development.
My testing shows that PREEMPT_RT is still pretty bad at controlling latency
and jitter on the time scale I need (~20us). I've used RTAI on x86 in the
past and it was pretty good. Sadly it doesn't seem to tracking current
kernel development.
You can also take a look and Xenomai [1] which uses similar approach
as RTAI but is currently under active development. We were able to get
some good results with it on BeagleBoard (not the Bone) as described
here [2,3]