4 ms·
I'm sure there is an real-time version of Linux that would work on the ARM, but these systems still have worst-case scheduling latencies of around 100us, and ar
by revelation 10y ago
I'm sure there is an real-time version of Linux that would work on the ARM, but these systems still have worst-case scheduling latencies of around 100us, and around 10us in just normal operation.
So they are perfectly fine for some subset of real-time tasks, where you just need some sort of guarantee like "this thread will not be starved of CPU for 10 milliseconds". But that kind of latency and jitter isn't going to work out when you want to generate something like a fast PWM signal or send out audio over I2S in software or generally do any task that relies on reproducible (fast) timings. You could connect a servo to your real-time Linux generated PWM signal and it would tremble like it's drunk.
And honestly, modern beefy ARM cores like the BeagleBone uses have been tuned for throughput above everything else that you will find it extremely difficult to get anywhere near the timing that a PRU can do and still have anything resembling a useful system.
There's a nifty presentation from TI [1] where they have the ARM core do nothing but toggle one of it's GPIOs and it takes 200ns for that to go through all the various layers of caches, pin muxing, buses, interconnects, what have you. And that's a GHz processor!
1: http://processors.wiki.ti.com/images/3/34/Sitara_boot_camp_pru-module1-hw-overview.pdf http://processors.wiki.ti.com/images/3/34/Sitara_boot_camp_p...
- greggyb 10y agoThanks very much. I never realized this. I appreciate the time you took to answer.