On 12/12/2012 10:28 AM, Michael Haberler wrote:
> 
> 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

A stepper pulse driver ? You name it...

-- 
                                            Gilles.

_______________________________________________
Xenomai mailing list
[email protected]
http://www.xenomai.org/mailman/listinfo/xenomai

Reply via email to