Am 12.12.2012 um 10:09 schrieb Gilles Chanteperdrix: > On 12/12/2012 09:30 AM, Michael Haberler wrote: >>> >>> ... >> >> just to make sure I understand your suggestion: >> >> in kernel mode you'd suggest to go through gpiolib and use >> gpio_get_value/gpio_set_value if possible ? >> >> in user mode you can prepare things through sysfs but I dont see an >> alternative to memory-mapped register manipulation in that case if >> one wants to avoid system calls like read/write/open/ioctl which >> likely will be a dog on top of switching to secondary domain > > This happens if you put the kernel/user split in the wrong place. For > instance, if your GPIOS are used to implement an I2C master, > implementing the I2C master in user-space manipulating GPIOS in > kernel-space is the wrong thing to do. What you should do is implement > the I2C master in kernel-space, and use it either in other drivers, or > in user-space. This way, you will get a write for a whole I2C transfer > instead of a write for each GPIO change. The same goes for a PWM, SPI > master, RS232 why not, etc... If your GPIOs are used to power on/power > off some devices, then using them in primary mode is probably not relevant.
in that particular application, the GPIO's are used, among others, for generating stepper pulses, and the thread running this should be as fast as possible; in the RTAI/parport version of that code that's anywhere from 20-50uSec nothing else though except wiggling pins, in particular no interrupt-driven input; so I dont see any extra functionality a kernel driver could provide -m _______________________________________________ Xenomai mailing list [email protected] http://www.xenomai.org/mailman/listinfo/xenomai
