Aloha All
Years ago, we at Keck, bypassed the module_types problem for those drivers
which we use and/or have control over. In fact we do not use module_types.
What we did was add a thin layer on top of devLib -which we had hoped
would one day be rolled into devLib- that provides for caching and
retrieving card information (base addresses, interrupt vectors, interrupt
levels, i/o port configuration etc). The drivers were then modified to call
functions within that module.
In addition we added a configure routine to each driver. The configure
routines are called prior to iocInit so that all card information is cached
for valid cards (non-existant cards are rejected). During iocInit the driver
init routines are called, as before, but invalid card numbers do not
cause problems.
The result is that we can add or remove cards without any changes
to config files, drivers, or startup scripts. If one calls a configure
routine for a non-existant card it is not registered and the driver
functions will never attempt to access it. Note that most drivers were
modified to provide more stringent error checking by using koDevLib functions
(layered on top of devLib) to probe the cached information.
We have a XYCOM XVME 240 driver with the aforementioned changes.
If anyone is interested in this please let me know and I will ensure
that the code is current in our ftp site.
Allan
>
> > Dear Ned Arnold
> > Maybe this should have gone to the list, but the answer is
> > probably pretty obvious.
> >
> > >
> > > Old style drivers have the starting address, interrupt vectors,
> > > max number of cards, etc stored in include/module_types.h .
> > >
> >
> > I want to use a bunch of XYCOM XVME-240's in a single crate. The limit on
> > the number of these modules, as specified in include/module_types.h, is 2.
> > If I want to increase that to 10, is it just a matter of changing the
> > value to 10 in include/module_types.h and recompiling?
> >
> > thanks for any help,
> > Steve Pate
>
>
> You could do it that way, but everytime you get a new EPICS release you
> would have to remember to change it.
>
> The scheme that is recommended to change items defined in module_types.h is :
>
> 1) Copy the file base/drv/old/module_types.c to your application area src
> directory.
>
> 2) Edit module_types.c to delete things you don't want to change and edit
> those that you do.
>
> 3) Add module_types.o into your xxxAppLib (Makefile.Vx)
>
> 4) In the startup file, after the "ld < xxxAppLib", exceute the function
> module_types. e.g.
>
>
> cd appbin (example is for 3.13.2)
> ld < iocCore
> ld < seq
>
> ld < xxxAppLib
>
> module_types
>
>
>
> This will over-write the default values before the drivers begin their
> initialization.
>
>
>
> Ned
>
>
>
- Navigate by Date:
- Prev:
Re: INP field for generic GPIB record Ned Arnold
- Next:
Joerger 100MHz VWG Korhonen Timo
- 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
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: INP field for generic GPIB record Ned Arnold
- Next:
Compiling EPICS Robert Willson
- 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
2018
2019
2020
2021
2022
2023
2024
|