Hello,

I am working on porting a Linux VME driver to Xenomai. I am having some 
ideas on how to do this, but I would like to have some feedback on this.

There are 2 ways to communicate to devices on the VME bus: memory mapped 
and using interrupts. At this moment I setup the memory mapping when the 
system starts, and then use these mapped areas to read and write from 
the devices. The interrupts are processed using a standard interrupt 
handler, and a "Wait for interrupt" IOCTL-call is available to wait for 
a specific interrupt. The driver defines several VME devices: some 
control devices and some data devices.

My plans for the new driver are to have an RTDM driver next to the 
standard Linux driver. I will be using the standard driver for the setup 
of the system, like setting up the memory mapping. The RTDM driver will 
define a RT-control device to perform the interrupt handling and an RTDM 
IOCTL will be used to wait for the interrupts. This way I can have a 
RT-thread to process the interrupts.

The reason for this setup are:

    * I do not want to rewrite the current driver, as this driver
      already has all the functionality needed, except for the
      RT-performance.
    * The interface to VME devices is done using memory access and no
      other SW is needed for this. This means that during operational
      use no driver functions will be accessed.
    * The memory mapping is not as straight forward in RTDM as it is in
      standard Linux: for example there is no mmap function in the
      device structure.
    * I can still use drivers for VME devices that depend on the current
      driver.


Is this the right way to do this, or are there other ways to implement a 
driver like this one?

Kind regards,
    Johan Borkhuis

_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to