Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <2017 Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <2017
<== Date ==> <== Thread ==>

Subject: Re: Asyn and devices with changing register map
From: Dirk Zimoch <dirk.zimoch@psi.ch>
To: "Konrad, Martin" <konrad@frib.msu.edu>
Cc: EPICS <tech-talk@aps.anl.gov>
Date: Mon, 16 Jan 2017 13:59:40 +0100
Hello Konrad,

I have written regDev to solve this type of problems. It does not use asyn.

You simply specify address and data type in the INP/OUT link. Our FPGA developers use it a lot, because they can easily generate new template or substitution files that match their code without the help of anyone from Controls. It can also be used for quickly prototyping access to a new VME or PCI board or to extend functionality of existing drivers by giving direct access to registers unsupported by the driver. Exchanging data with another program using shared memory is also possible.

RegDev is a device support front end without any driver knowledge (like asyn). I have driver back ends for VME access and memory mapped files (e.g. /sys/bus/pci/devices/*resource*, /dev/mem, /dev/shm/*).

Git repositories:
A helper function:
https://github.com/paulscherrerinstitute/memDisplay
regDev device support:
https://github.com/paulscherrerinstitute/regdev
mmap driver:
https://github.com/paulscherrerinstitute/mmap

Dirk


On 06.01.2017 23:30, Konrad, Martin wrote:
Hi Mark,
I am intending to implement a driver for an FPGA-based device based on
asynPortDriver. I am wondering how to deal with devices which are under
heavy development resulting in frequent changes to their register map.
In this context I am looking for a simple and clean way to tie records
to a certain address.

In a world without Asyn I would implement a driver that simply reads the
address and the type of a register from the INP/OUT fields of my
records. This could be changed easily (even by an FPGA engineer) without
recompiling the driver and all configuration data is in the record
definition. Note that I'm fine with this slightly harder to read data in
the INP/OUT field. Usually the record's name, the description field, and
if necessary additional comments provide sufficient information about
what the address stands for.

Using Asyn it seems like I need to populate Asyn's paramList which in
the case of most drivers seems to be a hard-coded mapping between names
and addresses. Are there any drivers that populate this dynamically on
IOC start from a configuration file or even from the EPICS database file?

Thanks a lot,

Martin


References:
Asyn and devices with changing register map Konrad, Martin

Navigate by Date:
Prev: Re: CA server bind failure on Windows Ralph Lange
Next: Re: CA server bind failure on Windows Benjamin Franksen
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <2017
Navigate by Thread:
Prev: Re: Asyn and devices with changing register map Konrad, Martin
Next: The limit of height property of Grouping Container of CSS widget 吴煊
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  <2017
ANJ, 14 Feb 2017 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·