On Wed, Apr 15, 2020 at 01:14:02PM -0700, Michael Cheponis wrote: > Is there already a way to do "hard real time" on NetBSD? > > To me, "hard real time" means from an external pin going 'high' to the 1st > instruction of my driver executing is on the order of (up to) 10 usec. > > Many eons ago, I did this on BSD4.3 VAX 785 and achieved < about 100 usec > jitter. It was a Royal Pain to do, since so many places in the kernel > turned off interrupts as it massaged various data structures. The pain was > to find every one of those and break them down to absolutely minimize the > time interrupts were turned off. > > But it worked: Here it is controlling various hopping machines: > https://www.youtube.com/watch?v=mG_ZKXo6Rlg&feature=youtu.be&t=34 I'm > sitting controlling the thing; the umbilical goes back to a UNIBUS > interface in the VAX. Timesharing only slowed down; it did not stop during > operation. > > I'm especially interested in getting the RPi to operate 'hard real time' on > NetBSD. I mainly want to use the RPi to control a robot -- low level as > well has higher-level planning/control.
It should be doable in an interrupt handler running at high IPL - these days the global interrupt enable flag is turned off for very short time (a few instructions) on NetBSD. Maybe even IPL_VM would be acceptable. But your GPIO needs to be able to generate an interrupt. I know it works on Allwinner A20, but I'm much less familiar with RPI. -- Manuel Bouyer <[email protected]> NetBSD: 26 ans d'experience feront toujours la difference --
