[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re(2): Re(2): Re(2): Problem with external dma and linked lists.



My current implementation rewrites the whole CMD register, for the counter
part I use the first two bytes from the STAT register, this should be okay
because the external channel is stopped when I read the STAT register in
the interrupt routine. I think I will try the approach with writing to the
CMD register + 2 bytes....but the counter is limited to 16 Bit, so I think
this will be useless for our implementation anyway. 

Thanks again,

	Arne Bockholdt

per.zander@xxxxxxx.com schreibt:
>Are you sure you haven't written anything else to the 
>R_EXT_DMA0_CMD after you have set the transfer counter ?
>Each write to the R_EXT_DMA0_CMD will also write the transfer 
>counter since the transfer counter is a field in the 
>R_EXT_DMA0_CMD register. This can be prevented by writing a 
>word (16-bit) value to R_EXT_DMA0_CMD + 2 instead of writing 
>the full R_EXT_DMA0_CMD register.
>
>Per Zander
>
>On Tue, 6 May 2003, Arne Bockholdt wrote:
>
>> Hallo Per,
>> 
>> thank you for your help, after some modifications based on your mail, it
>> works nearly as expected now. The only problem remains is the transfer
>> counter. I implemented the method with d_eop, It seems that the transfer
>> counter seems to be updated the wrong way. After I transfered all of my
>> data to the connected FPGA the transfer counter is still not 0. The
>> Start/Stop bit of register R_EXT_DMA_0_STAT is cleared but the counter
>> part isn't 0. The data has been transfered successfully at this point. I
>> disabled the transfer counter interrupt but I need the counter to
>measure
>> the number of transfered data. The weird thing is that the counter will
>> never reach 0 even if I set it to the value of bytes / 2 for a new
>> transfer and transfer the data. (I do NOT reset the DMA controller
>before
>> each new transfer, I think this should be okay, isn't it ?)
>> 
>> BTW: I can't find a single word of the information you gave me by mail
>in
>> the official documentation. I really think that the docu should be
>updated
>> in the external DMA part.
>> 
>> Thank you once again,
>> 
>> 	Arne Bockholdt
>> 
>> per.zander@xxxxxxx.com schreibt:
>> >If you don't set eop, you will not get the eop interrupt and 
>> >you will not advance the CH4_FIRST pointer to the next packet 
>> >(i.e. to NULL if you only have one). You will however process 
>> >the DMA data buffer and send it out to the external DMA. 
>> >
>> >If you choose the approach to skip eop in the output descriptors,
>> >you could use e.g. R_DMA_CH4_DESCR and the dma4_descr interrupt /
>> >DMA descriptor intr bit to track the DMA progress.
>> >Another approach could be to use eop in the descriptors but restart
>> >the external DMA channel when you get the dma4_eop interrupt.
>> 
>> 
>> 
>> Dipl. Inform. Arne Bockholdt
>> REA Elektronik GmbH
>> Teichwiesenstr. 1
>> 64367 Mühltal-Waschenbach
>> Tel. +49 (0) 6154 / 638-115, Fax -195
>> ABockholdt@xxxxxxx.de
>> 
>



Dipl. Inform. Arne Bockholdt
REA Elektronik GmbH
Teichwiesenstr. 1
64367 Mühltal-Waschenbach
Tel. +49 (0) 6154 / 638-115, Fax -195
ABockholdt@xxxxxxx.de