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  <20122013  2014  2015  2016  2017  2018  2019  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019 
<== Date ==> <== Thread ==>

Subject: RE: epicsAtExit
From: "Szalata, Zenon M." <zms@slac.stanford.edu>
To: Mark Rivers <rivers@cars.uchicago.edu>, "Williams Jr., Ernest L." <ernesto@slac.stanford.edu>
Cc: "tech-talk@aps.anl.gov" <tech-talk@aps.anl.gov>
Date: Thu, 28 Jun 2012 09:09:48 -0700
Hi Mark,
I don't see the printf message in the console output.  I see no evidence that rebootCB() is called.
This is how I have implemented the _wtReg function:

asynStatus drvV792::_wtReg( uint off,word v){
//------------------------------------------------------------------------------
// Reads a register at off offset wrt base and returns the read value in v.
//------------------------------------------------------------------------------
  volatile word* padr=(word*)(_pmem+off);
  if(!_pmem) return(asynError);
  *padr=v;
//printf( "%s::_wtReg: off=0x%x, v=%d\n",dname,off,v);
  return(asynSuccess);
}

I will try the read after write in rebootCB().

Thank you Mark,
Zen

> -----Original Message-----
> From: Mark Rivers [mailto:rivers@cars.uchicago.edu]
> Sent: Wednesday, June 27, 2012 9:01 PM
> To: Szalata, Zenon M.; Williams Jr., Ernest L.
> Cc: tech-talk@aps.anl.gov
> Subject: RE: epicsAtExit
> 
> Hi Zen,
> 
> With the asyn driver do you see the printf message, i.e. is the
> drvV792::rebootCb()  function being called?
> 
> Perhaps the VME writes to disable interrupts are not actually being done
> because they are cached, and the cache is never flushed before the system
> shuts down.  Have you declared ILEV and EVTR  to be volatile? What happens if
> you do a read from those registers after the writes, which should flush the
> cache?
> 
> Mark
> 
> ________________________________
> From: Szalata, Zenon M. [zms@slac.stanford.edu]
> Sent: Wednesday, June 27, 2012 7:40 PM
> To: Mark Rivers; Williams Jr., Ernest L.
> Cc: tech-talk@aps.anl.gov
> Subject: epicsAtExit
> 
> Hi Mark,
> I have a problem, which I have been ignoring for a while.
> I have a device driver for a VME module based on asynPortDriver class.  It is
> used with asyn R4.18, EPICS R3.14.12.2, vxWorks 6.6.
> I have coded a couple of routines to disable interrupts when the IOC is
> shutdown (with CTRL-X), which does not work.  Restarting the IOC which uses
> the asyn based driver with CTRL-X fails to come up.  The IOC reaches some
> point in the booting sequence and then I suppose it crashes because the boot
> starts all over.  I recover from that with a VME reset.  Also, if I disable interrupts
> before rebooting all works fine.
> I have created another device driver using the conventional approach, which
> does not use asyn.  As far as I can tell most of the code if not the same is
> equivalent.  With this device driver the interrupts get disabled on exit.
> This is what I have in the asynPortDriver version of the device driver:
> 
> In the constructor I have:
> 
>   epicsAtExit( rebootCbC,this);
> 
> then I have:
> 
> extern "C"{
> ...
> static void rebootCbC( void* pvt){
>   drvV792* pthis=(drvV792*)pvt;
>   pthis->rebootCb();
> }
> }
> 
> void drvV792::rebootCb(){
> //------------------------------------------------------------------------------
>   printf( "%s::rebootCb: Interrupts disabled and Soft reset\n",dname);
>   fflush(stdout);
>   epicsThreadSleep(1.0);
>   _wtReg( ILEV,0);
>   _wtReg( EVTR,0);
> }
> 
> Writing 0 to the EVTR disables interrupts.  Also writing 0 to the ILEV register
> disables interrupts.
> In fact, the same rebootCB code, seems to work fine in the non-asyn driver.
> Is something subtle taking place because of vxWorks?
> Can you offer suggestion on how to make it work?
> Thanks in advance,
> Zen



Replies:
RE: epicsAtExit Mark Rivers
Re: epicsAtExit Andrew Johnson
References:
epicsAtExit Szalata, Zenon M.
RE: epicsAtExit Mark Rivers

Navigate by Date:
Prev: Re: LabVIEW EPICS connection Dale L. Brewe
Next: RE: epicsAtExit Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019 
Navigate by Thread:
Prev: Re: epicsAtExit Eric Norum
Next: RE: epicsAtExit Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019 
ANJ, 18 Nov 2013 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·