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 2025 | 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 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: Read and Write errors with VME-EVR-300 |
From: | "Hong, Ran via Tech-talk" <tech-talk at aps.anl.gov> |
To: | Heinz Junkes <junkes at fhi-berlin.mpg.de> |
Cc: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Wed, 5 Oct 2022 02:38:55 +0000 |
Dear Heinz,
I tried the 2-CPU scheme and it seems working. I have mvme3100 as the arbiter and mvme2500 as the CPU for the IOC. I will investigate a few other places of the code and see if this problem goes away. Particularly, I will check the ISR function. I had interrupt
problems before. If I had more than 1 EVR in the crate, it had interrupt errors. I solved this problem by adding a read-back in the ISR function, but I had no idea why that could work.
Ran Hong
From: Heinz Junkes <junkes at fhi-berlin.mpg.de>
Sent: Tuesday, October 4, 2022 6:34 AM To: Hong, Ran <rhong at anl.gov> Cc: tech-talk at aps.anl.gov <tech-talk at aps.anl.gov> Subject: Re: Read and Write errors with VME-EVR-300 Hello Ran Hong,
I have similar problems in a constellation with MVME6100 and STRUCK SIS3316. I could solve the problem ( not elegant ) by using another (old) CPU as VME arbiter in slot 1 and disabling the arbiter on the MVME6100 and plugging the CPU into slot 2. Heinz > On 4. Oct 2022, at 02:29, Hong, Ran via Tech-talk <tech-talk at aps.anl.gov> wrote: > > Hello All, > > I am testing a VME IOC with 1 VME-EVM-300 and 6 VME-EVR-300 boards. The CPU board is mvme-3100, and the driver is derived from mrfioc2: > https://github.com/epics-modules/mrfioc2 > I experienced many errors like missing time stamp, incorrect GTX waveform, and so on. They all stem from issues when reading from or writing to VME registries using READ32 or WRITE32 in the driver. For example, in evrMrmApp/src/drvem.cpp line 803 to 806 for latching the timestamp, > epicsUInt32 > ctrl= > READ32 > (base, > Control); > > > // > > Latch timestamp > > WRITE32 > (base, > Control, ctrl|Control_tsltch); > > > It reads the control registry, modify the bit for timestamp latch, and write it back to the control registry. Occasionally, I saw the READ32 returns 0xffffffff, which is an invalid value for the control registry, and the subsequent WRITE32 results in a mess in the EVR. > > Has anyone experienced similar issues? Any suggestions to prevent or mitigate the VME I/O errors? > > Thanks! > > Ran Hong |