On 2013-02-08 12:35, Gilles Chanteperdrix wrote:
> On 02/08/2013 12:28 PM, Jan Kiszka wrote:
> 
>> On 2013-02-08 10:18, Gilles Chanteperdrix wrote:
>>> On 02/08/2013 10:07 AM, Stéphane LOS wrote:
>>>
>>>> Le 07/02/2013 17:11, Gilles Chanteperdrix a écrit :
>>>>> On 02/07/2013 03:53 PM, Stéphane LOS wrote:
>>>>>
>>>>>> Hello Sirs,
>>>>>>
>>>>>> Hilscher is offering a Linux driver based on UIO for cifX boards.
>>>>>>
>>>>>> In my understanding, down to 1ms cycle time, a PREEMPT RT solution
>>>>>> should be enough.
>>>>>>
>>>>>> The cifX boards can manage with bus cycle times down to 250µs like with
>>>>>> EtherCAT or Sercos III firmwares.
>>>>>>
>>>>>> So it seems in that cases that using Xenomai would be the way to go.
>>>>>> I suppose that it would be needed to modify or change the existing
>>>>>> driver but I can't figure out how things (Xenomai / RTDM / UIO) fit
>>>>>> together.
>>>>>>
>>>>>> UIO is the kernel module that allows the mapping of the board memory to
>>>>>> user space.
>>>>>>
>>>>>> The cifX driver uses the libpciaccess to pick up the board and retrieve
>>>>>> some board information from UIO before the mapping.
>>>>>> Then it uses pthread and rt functions when accessing the board.
>>>>>>
>>>>>> Since UIO and libpciaccess are only used during the initialization, is
>>>>>> it a problem for a Xenomai application ?
>>>>>>
>>>>>> We have setup a Xenomai system and tried to compile the user land
>>>>>> library with Xenomai options and flags and it seems we have been 
>>>>>> successful.
>>>>>> The driver should be using the POSIX skin of Xenomai if we have been 
>>>>>> lucky.
>>>>>>
>>>>>> I can't see why we would need RTDM. Any hint please ?
>>>>>>
>>>>>> I am an absolute beginner in the Xenomai arena, don't throw me to the
>>>>>> lions...
>>>>>>
>>>>>
>>>>> If UIO is used to register an interrupt handler for instance, the
>>>>> interrupt handler will not be called in real-time context when used with
>>>>> Xenomai, so, you would have to use the (deprecated) native or posix skin
>>>>> services to register a user-space interrupt handler, or more likely
>>>>> write an RTDM driver. On the other hand, if what you need is simply
>>>>> accessing the board registers through MMIO, then you do not need RTDM.
>>>>>
>>>>> While accessing registers from user-space may be tempting, there is a
>>>>> risk of ending up with an application where the driver code is not
>>>>> clearly separated. Writing a driver separated from the application is
>>>>> preferable, as it provides a sane isolation between the two. If you
>>>>> change the hardware, you just have to rewrite a driver which follows the
>>>>> same profile, if you want to write another application using the same
>>>>> driver, you can keep the driver.
>>>>>
>>>>
>>>> Thank you for your kind support Gilles.
>>>>
>>>> The cifX Device Driver is Hilscher's library to deal with cifX boards 
>>>> and is available for the major OSes.
>>>> Additionally it is available to anybody as source code, the cifX Driver 
>>>> Toolkit when one has to create a driver for his own OS.
>>>>
>>>> This driver library accesses the board interface which is a Dual Port 
>>>> Memory.
>>>>
>>>> So the user application shall use this layer and gets independence from 
>>>> the target OS.
>>>>
>>>> I understand that we should create an RTDM driver instead of a UIO 
>>>> driver and adapt the user library so that it uses the RTDM driver.
>>>
>>>>
>>>> Am I right ?
>>>
>>>
>>> I tried to explain why it may be better to create an RTDM driver, but in
>>> this case this may not be the best option. The answer to your question
>>> depends on what you have to do to implement the driver. As I said, if
>>> you simply have to access MMIO registers, user-space may be fine, if you
>>> have to handle interrupts kernel-space (so, RTDM) is preferable.
>>
>> Are we talking about linux/drivers/uio/uio_cif.c here? That one
>> obviously has interrupt support.
>>
>> If your customers may want to use Xenomai 3 with I-pipe instead of
>> Preempt-RT underneath (both options will exist), RTDM will still be
>> required for interrupt handling. If you like to, you could propose such
>> a driver for Xenomai integration. That would ensure it will come with
>> future releases.
>>
>> I also wonder if it didn't make sense for us to provide an UIO-like
>> infrastructure for such use cases (single-user device drivers with IRQ
>> event channel needs).
> 
> 
> The native and posix skin provide support for interrupts in user-space...

That's deprecated, and UIO is more than this.

Jan

-- 
Siemens AG, Corporate Technology, CT RTC ITP SDP-DE
Corporate Competence Center Embedded Linux

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

Reply via email to