I am trying to implement code to do DMA data transfer from a VME module to mv6100 local memory using vxWorks routines: sysTempeDmaStart and sysTempeDmaStatus. sysTempeDmaStart completes with status 0, which should be success. It returns in the TEMPE_DMA_STATUS structure the following values:
dmaDone=0 is this a failure?
dstax=0x1000000 is this contents of the tempe status reg?
dcsaUx=0x0
dcsaLx=0x94080000 this is source address
dcdaUx=0x0
dcdaLx=0x29ae860 this is the destination address
dclaUx=0x0
dclaLx=0x0
dcntx=0x54000 this is the remaining byte count
timeBaseU=0x23 ?
timeBaseL=0x5e51d6f9 ?
Because I set the userHandler=WAIT_FOREVER in structure TEMPE_DMA_ATTRIBUTES, I think that dmaDone=0 above, means that the dma failed. If it indeed failed, I fail to see why. The field dstax=0x1000000 I think is trying to tell me why it fails, but I do not know how to interpret it. I set up the dma for a large data transfer (0x54000) but I also tried smaller byte count, 1024, which also fails. The reason I think that the dma fails is that the local memory buffer holds zero values after the call to sysTempeDmaStart, while I see non zero values in the VME module buffer.
I wonder if some of you folks with much experience in these matters could provide me with a simple example how to setup the call to sysTempeDmaStart routine.
Thanks in advance,
Zen
- Replies:
- Re: DMA Example Andrew Johnson
- Navigate by Date:
- Prev:
RE: Building 32-bit EPICS binaries on 64-bit Linux systems Mark Rivers
- Next:
How to introduce usage of genSub ? haquin
- 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: MAXv problem update EPICS record Ron Sluiter
- Next:
Re: DMA Example Andrew Johnson
- 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
|