cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
simozz
Scholar
Scholar
631 Views
Registered: ‎05-14-2017

AXI DMA SG remains idle without any error flagged.

Jump to solution

Hi,

I am trying to stream raw data from PL to PS using an AXI DMA in Scatter Gather mode.

The DMA address map and BD chain is set as follows:

Screenshot_2020-08-10_15-40-09.png

 

sg_bd[0][NXTDESC] = 0x60000040
sg_bd[0][NXTDESC_MSB] = 0x00000000
sg_bd[0][BUFFER_ADDRESS] = 0x64000000
sg_bd[0][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[0][CONTROL] = 0x03ffffff

sg_bd[1][NXTDESC] = 0x60000080
sg_bd[1][NXTDESC_MSB] = 0x00000000
sg_bd[1][BUFFER_ADDRESS] = 0x64800000
sg_bd[1][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[1][CONTROL] = 0x03ffffff

sg_bd[2][NXTDESC] = 0x600000c0
sg_bd[2][NXTDESC_MSB] = 0x00000000
sg_bd[2][BUFFER_ADDRESS] = 0x65000000
sg_bd[2][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[2][CONTROL] = 0x03ffffff

sg_bd[3][NXTDESC] = 0x60000100
sg_bd[3][NXTDESC_MSB] = 0x00000000
sg_bd[3][BUFFER_ADDRESS] = 0x65800000
sg_bd[3][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[3][CONTROL] = 0x03ffffff

sg_bd[4][NXTDESC] = 0x60000140
sg_bd[4][NXTDESC_MSB] = 0x00000000
sg_bd[4][BUFFER_ADDRESS] = 0x66000000
sg_bd[4][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[4][CONTROL] = 0x03ffffff

sg_bd[5][NXTDESC] = 0x60000180
sg_bd[5][NXTDESC_MSB] = 0x00000000
sg_bd[5][BUFFER_ADDRESS] = 0x66800000
sg_bd[5][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[5][CONTROL] = 0x03ffffff

sg_bd[6][NXTDESC] = 0x600001c0
sg_bd[6][NXTDESC_MSB] = 0x00000000
sg_bd[6][BUFFER_ADDRESS] = 0x67000000
sg_bd[6][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[6][CONTROL] = 0x03ffffff

sg_bd[7][NXTDESC] = 0x60000200
sg_bd[7][NXTDESC_MSB] = 0x00000000
sg_bd[7][BUFFER_ADDRESS] = 0x67800000
sg_bd[7][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[7][CONTROL] = 0x03ffffff

sg_bd[8][NXTDESC] = 0x60000240
sg_bd[8][NXTDESC_MSB] = 0x00000000
sg_bd[8][BUFFER_ADDRESS] = 0x68000000
sg_bd[8][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[8][CONTROL] = 0x03ffffff

sg_bd[9][NXTDESC] = 0x60000280
sg_bd[9][NXTDESC_MSB] = 0x00000000
sg_bd[9][BUFFER_ADDRESS] = 0x68800000
sg_bd[9][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[9][CONTROL] = 0x03ffffff

sg_bd[10][NXTDESC] = 0x600002c0
sg_bd[10][NXTDESC_MSB] = 0x00000000
sg_bd[10][BUFFER_ADDRESS] = 0x69000000
sg_bd[10][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[10][CONTROL] = 0x03ffffff

sg_bd[11][NXTDESC] = 0x60000300
sg_bd[11][NXTDESC_MSB] = 0x00000000
sg_bd[11][BUFFER_ADDRESS] = 0x69800000
sg_bd[11][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[11][CONTROL] = 0x03ffffff

sg_bd[12][NXTDESC] = 0x60000340
sg_bd[12][NXTDESC_MSB] = 0x00000000
sg_bd[12][BUFFER_ADDRESS] = 0x6a000000
sg_bd[12][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[12][CONTROL] = 0x03ffffff

sg_bd[13][NXTDESC] = 0x60000380
sg_bd[13][NXTDESC_MSB] = 0x00000000
sg_bd[13][BUFFER_ADDRESS] = 0x6a800000
sg_bd[13][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[13][CONTROL] = 0x03ffffff

sg_bd[14][NXTDESC] = 0x600003c0
sg_bd[14][NXTDESC_MSB] = 0x00000000
sg_bd[14][BUFFER_ADDRESS] = 0x6b000000
sg_bd[14][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[14][CONTROL] = 0x03ffffff

sg_bd[15][NXTDESC] = 0x60000400
sg_bd[15][NXTDESC_MSB] = 0x00000000
sg_bd[15][BUFFER_ADDRESS] = 0x6b800000
sg_bd[15][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[15][CONTROL] = 0x03ffffff

sg_bd[16][NXTDESC] = 0x60000440
sg_bd[16][NXTDESC_MSB] = 0x00000000
sg_bd[16][BUFFER_ADDRESS] = 0x6c000000
sg_bd[16][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[16][CONTROL] = 0x03ffffff

sg_bd[17][NXTDESC] = 0x60000480
sg_bd[17][NXTDESC_MSB] = 0x00000000
sg_bd[17][BUFFER_ADDRESS] = 0x6c800000
sg_bd[17][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[17][CONTROL] = 0x03ffffff

sg_bd[18][NXTDESC] = 0x600004c0
sg_bd[18][NXTDESC_MSB] = 0x00000000
sg_bd[18][BUFFER_ADDRESS] = 0x6d000000
sg_bd[18][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[18][CONTROL] = 0x03ffffff

sg_bd[19][NXTDESC] = 0x60000500
sg_bd[19][NXTDESC_MSB] = 0x00000000
sg_bd[19][BUFFER_ADDRESS] = 0x6d800000
sg_bd[19][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[19][CONTROL] = 0x03ffffff

sg_bd[20][NXTDESC] = 0x60000540
sg_bd[20][NXTDESC_MSB] = 0x00000000
sg_bd[20][BUFFER_ADDRESS] = 0x6e000000
sg_bd[20][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[20][CONTROL] = 0x03ffffff

sg_bd[21][NXTDESC] = 0x60000580
sg_bd[21][NXTDESC_MSB] = 0x00000000
sg_bd[21][BUFFER_ADDRESS] = 0x6e800000
sg_bd[21][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[21][CONTROL] = 0x03ffffff

sg_bd[22][NXTDESC] = 0x600005c0
sg_bd[22][NXTDESC_MSB] = 0x00000000
sg_bd[22][BUFFER_ADDRESS] = 0x6f000000
sg_bd[22][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[22][CONTROL] = 0x03ffffff

sg_bd[23][NXTDESC] = 0x60000000
sg_bd[23][NXTDESC_MSB] = 0x00000000
sg_bd[23][BUFFER_ADDRESS] = 0x6f800000
sg_bd[23][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[23][CONTROL] = 0x03ffffff

S2MM_CURDESC = 0x60000000
S2MM_TAILDESC = 0x60000600

where each sg_bd is a 16 unsigned register array(0x40 = 64 Bytes), and sg_bd[0] physical address is 0x60000000 (so the base offset of address map).

However, even following the Programming sequence for S2MM from PG021, the DMA remains in idle state since no interrupt is flagged (and I am enabling IOC and errors interrupt flags).

The S2MM control and status registers content after setting S2MM_CURDESC and S2MM_TAILDESC are:

S2MM_DMACR_OFFT = 00015013
S2MM_DMASR_OFFT = 00010008

Data is being streamed from PL to S_AXIS_S2MM interface because the M_AXIS streaming core has been tested multiple times with AXI DMA in direct mode.

Is there something wrong in my S2MM BD chain setup ?

Thanks.

s.

 

 

 

Tags (3)
0 Kudos
1 Solution

Accepted Solutions
simozz
Scholar
Scholar
532 Views
Registered: ‎05-14-2017

Solved ! With BD cycle enabled the bd chain setup in my case is as follows :

sg_bd[0] address = 0x60000000
sg_bd[0][NXTDESC] = 0x60000040
sg_bd[0][NXTDESC_MSB] = 0x00000000
sg_bd[0][BUFFER_ADDRESS] = 0x64000000
sg_bd[0][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[0][CONTROL] = 0x03ffffff

sg_bd[1] address = 0x60000040
sg_bd[1][NXTDESC] = 0x60000080
sg_bd[1][NXTDESC_MSB] = 0x00000000
sg_bd[1][BUFFER_ADDRESS] = 0x64800000
sg_bd[1][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[1][CONTROL] = 0x03ffffff

sg_bd[2] address = 0x60000080
sg_bd[2][NXTDESC] = 0x600000c0
sg_bd[2][NXTDESC_MSB] = 0x00000000
sg_bd[2][BUFFER_ADDRESS] = 0x65000000
sg_bd[2][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[2][CONTROL] = 0x03ffffff

sg_bd[3] address = 0x600000c0
sg_bd[3][NXTDESC] = 0x60000100
sg_bd[3][NXTDESC_MSB] = 0x00000000
sg_bd[3][BUFFER_ADDRESS] = 0x65800000
sg_bd[3][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[3][CONTROL] = 0x03ffffff

sg_bd[4] address = 0x60000100
sg_bd[4][NXTDESC] = 0x60000140
sg_bd[4][NXTDESC_MSB] = 0x00000000
sg_bd[4][BUFFER_ADDRESS] = 0x66000000
sg_bd[4][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[4][CONTROL] = 0x03ffffff

sg_bd[5] address = 0x60000140
sg_bd[5][NXTDESC] = 0x60000180
sg_bd[5][NXTDESC_MSB] = 0x00000000
sg_bd[5][BUFFER_ADDRESS] = 0x66800000
sg_bd[5][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[5][CONTROL] = 0x03ffffff

sg_bd[6] address = 0x60000180
sg_bd[6][NXTDESC] = 0x600001c0
sg_bd[6][NXTDESC_MSB] = 0x00000000
sg_bd[6][BUFFER_ADDRESS] = 0x67000000
sg_bd[6][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[6][CONTROL] = 0x03ffffff

sg_bd[7] address = 0x600001c0
sg_bd[7][NXTDESC] = 0x60000200
sg_bd[7][NXTDESC_MSB] = 0x00000000
sg_bd[7][BUFFER_ADDRESS] = 0x67800000
sg_bd[7][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[7][CONTROL] = 0x03ffffff

sg_bd[8] address = 0x60000200
sg_bd[8][NXTDESC] = 0x60000240
sg_bd[8][NXTDESC_MSB] = 0x00000000
sg_bd[8][BUFFER_ADDRESS] = 0x68000000
sg_bd[8][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[8][CONTROL] = 0x03ffffff

sg_bd[9] address = 0x60000240
sg_bd[9][NXTDESC] = 0x60000280
sg_bd[9][NXTDESC_MSB] = 0x00000000
sg_bd[9][BUFFER_ADDRESS] = 0x68800000
sg_bd[9][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[9][CONTROL] = 0x03ffffff

sg_bd[10] address = 0x60000280
sg_bd[10][NXTDESC] = 0x600002c0
sg_bd[10][NXTDESC_MSB] = 0x00000000
sg_bd[10][BUFFER_ADDRESS] = 0x69000000
sg_bd[10][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[10][CONTROL] = 0x03ffffff

sg_bd[11] address = 0x600002c0
sg_bd[11][NXTDESC] = 0x60000300
sg_bd[11][NXTDESC_MSB] = 0x00000000
sg_bd[11][BUFFER_ADDRESS] = 0x69800000
sg_bd[11][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[11][CONTROL] = 0x03ffffff

sg_bd[12] address = 0x60000300
sg_bd[12][NXTDESC] = 0x60000340
sg_bd[12][NXTDESC_MSB] = 0x00000000
sg_bd[12][BUFFER_ADDRESS] = 0x6a000000
sg_bd[12][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[12][CONTROL] = 0x03ffffff

sg_bd[13] address = 0x60000340
sg_bd[13][NXTDESC] = 0x60000380
sg_bd[13][NXTDESC_MSB] = 0x00000000
sg_bd[13][BUFFER_ADDRESS] = 0x6a800000
sg_bd[13][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[13][CONTROL] = 0x03ffffff

sg_bd[14] address = 0x60000380
sg_bd[14][NXTDESC] = 0x600003c0
sg_bd[14][NXTDESC_MSB] = 0x00000000
sg_bd[14][BUFFER_ADDRESS] = 0x6b000000
sg_bd[14][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[14][CONTROL] = 0x03ffffff

sg_bd[15] address = 0x600003c0
sg_bd[15][NXTDESC] = 0x60000400
sg_bd[15][NXTDESC_MSB] = 0x00000000
sg_bd[15][BUFFER_ADDRESS] = 0x6b800000
sg_bd[15][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[15][CONTROL] = 0x03ffffff

sg_bd[16] address = 0x60000400
sg_bd[16][NXTDESC] = 0x60000440
sg_bd[16][NXTDESC_MSB] = 0x00000000
sg_bd[16][BUFFER_ADDRESS] = 0x6c000000
sg_bd[16][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[16][CONTROL] = 0x03ffffff

sg_bd[17] address = 0x60000440
sg_bd[17][NXTDESC] = 0x60000480
sg_bd[17][NXTDESC_MSB] = 0x00000000
sg_bd[17][BUFFER_ADDRESS] = 0x6c800000
sg_bd[17][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[17][CONTROL] = 0x03ffffff

sg_bd[18] address = 0x60000480
sg_bd[18][NXTDESC] = 0x600004c0
sg_bd[18][NXTDESC_MSB] = 0x00000000
sg_bd[18][BUFFER_ADDRESS] = 0x6d000000
sg_bd[18][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[18][CONTROL] = 0x03ffffff

sg_bd[19] address = 0x600004c0
sg_bd[19][NXTDESC] = 0x60000500
sg_bd[19][NXTDESC_MSB] = 0x00000000
sg_bd[19][BUFFER_ADDRESS] = 0x6d800000
sg_bd[19][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[19][CONTROL] = 0x03ffffff

sg_bd[20] address = 0x60000500
sg_bd[20][NXTDESC] = 0x60000540
sg_bd[20][NXTDESC_MSB] = 0x00000000
sg_bd[20][BUFFER_ADDRESS] = 0x6e000000
sg_bd[20][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[20][CONTROL] = 0x03ffffff

sg_bd[21] address = 0x60000540
sg_bd[21][NXTDESC] = 0x60000580
sg_bd[21][NXTDESC_MSB] = 0x00000000
sg_bd[21][BUFFER_ADDRESS] = 0x6e800000
sg_bd[21][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[21][CONTROL] = 0x03ffffff

sg_bd[22] address = 0x60000580
sg_bd[22][NXTDESC] = 0x600005c0
sg_bd[22][NXTDESC_MSB] = 0x00000000
sg_bd[22][BUFFER_ADDRESS] = 0x6f000000
sg_bd[22][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[22][CONTROL] = 0x03ffffff

sg_bd[23] address = 0x600005c0
sg_bd[23][NXTDESC] = 0x60000000
sg_bd[23][NXTDESC_MSB] = 0x00000000
sg_bd[23][BUFFER_ADDRESS] = 0x6f800000
sg_bd[23][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[23][CONTROL] = 0x03ffffff

S2MM_CURRDESC = 0x60000000
S2MM_TAILDESC = 0x60000600

Also, I had to manually set S2MM_CURRDESC_MSB and S2MM_TAILDESC_MSB.

Works great.

s.

 

View solution in original post

0 Kudos
3 Replies
simozz
Scholar
Scholar
533 Views
Registered: ‎05-14-2017

Solved ! With BD cycle enabled the bd chain setup in my case is as follows :

sg_bd[0] address = 0x60000000
sg_bd[0][NXTDESC] = 0x60000040
sg_bd[0][NXTDESC_MSB] = 0x00000000
sg_bd[0][BUFFER_ADDRESS] = 0x64000000
sg_bd[0][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[0][CONTROL] = 0x03ffffff

sg_bd[1] address = 0x60000040
sg_bd[1][NXTDESC] = 0x60000080
sg_bd[1][NXTDESC_MSB] = 0x00000000
sg_bd[1][BUFFER_ADDRESS] = 0x64800000
sg_bd[1][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[1][CONTROL] = 0x03ffffff

sg_bd[2] address = 0x60000080
sg_bd[2][NXTDESC] = 0x600000c0
sg_bd[2][NXTDESC_MSB] = 0x00000000
sg_bd[2][BUFFER_ADDRESS] = 0x65000000
sg_bd[2][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[2][CONTROL] = 0x03ffffff

sg_bd[3] address = 0x600000c0
sg_bd[3][NXTDESC] = 0x60000100
sg_bd[3][NXTDESC_MSB] = 0x00000000
sg_bd[3][BUFFER_ADDRESS] = 0x65800000
sg_bd[3][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[3][CONTROL] = 0x03ffffff

sg_bd[4] address = 0x60000100
sg_bd[4][NXTDESC] = 0x60000140
sg_bd[4][NXTDESC_MSB] = 0x00000000
sg_bd[4][BUFFER_ADDRESS] = 0x66000000
sg_bd[4][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[4][CONTROL] = 0x03ffffff

sg_bd[5] address = 0x60000140
sg_bd[5][NXTDESC] = 0x60000180
sg_bd[5][NXTDESC_MSB] = 0x00000000
sg_bd[5][BUFFER_ADDRESS] = 0x66800000
sg_bd[5][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[5][CONTROL] = 0x03ffffff

sg_bd[6] address = 0x60000180
sg_bd[6][NXTDESC] = 0x600001c0
sg_bd[6][NXTDESC_MSB] = 0x00000000
sg_bd[6][BUFFER_ADDRESS] = 0x67000000
sg_bd[6][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[6][CONTROL] = 0x03ffffff

sg_bd[7] address = 0x600001c0
sg_bd[7][NXTDESC] = 0x60000200
sg_bd[7][NXTDESC_MSB] = 0x00000000
sg_bd[7][BUFFER_ADDRESS] = 0x67800000
sg_bd[7][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[7][CONTROL] = 0x03ffffff

sg_bd[8] address = 0x60000200
sg_bd[8][NXTDESC] = 0x60000240
sg_bd[8][NXTDESC_MSB] = 0x00000000
sg_bd[8][BUFFER_ADDRESS] = 0x68000000
sg_bd[8][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[8][CONTROL] = 0x03ffffff

sg_bd[9] address = 0x60000240
sg_bd[9][NXTDESC] = 0x60000280
sg_bd[9][NXTDESC_MSB] = 0x00000000
sg_bd[9][BUFFER_ADDRESS] = 0x68800000
sg_bd[9][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[9][CONTROL] = 0x03ffffff

sg_bd[10] address = 0x60000280
sg_bd[10][NXTDESC] = 0x600002c0
sg_bd[10][NXTDESC_MSB] = 0x00000000
sg_bd[10][BUFFER_ADDRESS] = 0x69000000
sg_bd[10][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[10][CONTROL] = 0x03ffffff

sg_bd[11] address = 0x600002c0
sg_bd[11][NXTDESC] = 0x60000300
sg_bd[11][NXTDESC_MSB] = 0x00000000
sg_bd[11][BUFFER_ADDRESS] = 0x69800000
sg_bd[11][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[11][CONTROL] = 0x03ffffff

sg_bd[12] address = 0x60000300
sg_bd[12][NXTDESC] = 0x60000340
sg_bd[12][NXTDESC_MSB] = 0x00000000
sg_bd[12][BUFFER_ADDRESS] = 0x6a000000
sg_bd[12][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[12][CONTROL] = 0x03ffffff

sg_bd[13] address = 0x60000340
sg_bd[13][NXTDESC] = 0x60000380
sg_bd[13][NXTDESC_MSB] = 0x00000000
sg_bd[13][BUFFER_ADDRESS] = 0x6a800000
sg_bd[13][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[13][CONTROL] = 0x03ffffff

sg_bd[14] address = 0x60000380
sg_bd[14][NXTDESC] = 0x600003c0
sg_bd[14][NXTDESC_MSB] = 0x00000000
sg_bd[14][BUFFER_ADDRESS] = 0x6b000000
sg_bd[14][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[14][CONTROL] = 0x03ffffff

sg_bd[15] address = 0x600003c0
sg_bd[15][NXTDESC] = 0x60000400
sg_bd[15][NXTDESC_MSB] = 0x00000000
sg_bd[15][BUFFER_ADDRESS] = 0x6b800000
sg_bd[15][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[15][CONTROL] = 0x03ffffff

sg_bd[16] address = 0x60000400
sg_bd[16][NXTDESC] = 0x60000440
sg_bd[16][NXTDESC_MSB] = 0x00000000
sg_bd[16][BUFFER_ADDRESS] = 0x6c000000
sg_bd[16][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[16][CONTROL] = 0x03ffffff

sg_bd[17] address = 0x60000440
sg_bd[17][NXTDESC] = 0x60000480
sg_bd[17][NXTDESC_MSB] = 0x00000000
sg_bd[17][BUFFER_ADDRESS] = 0x6c800000
sg_bd[17][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[17][CONTROL] = 0x03ffffff

sg_bd[18] address = 0x60000480
sg_bd[18][NXTDESC] = 0x600004c0
sg_bd[18][NXTDESC_MSB] = 0x00000000
sg_bd[18][BUFFER_ADDRESS] = 0x6d000000
sg_bd[18][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[18][CONTROL] = 0x03ffffff

sg_bd[19] address = 0x600004c0
sg_bd[19][NXTDESC] = 0x60000500
sg_bd[19][NXTDESC_MSB] = 0x00000000
sg_bd[19][BUFFER_ADDRESS] = 0x6d800000
sg_bd[19][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[19][CONTROL] = 0x03ffffff

sg_bd[20] address = 0x60000500
sg_bd[20][NXTDESC] = 0x60000540
sg_bd[20][NXTDESC_MSB] = 0x00000000
sg_bd[20][BUFFER_ADDRESS] = 0x6e000000
sg_bd[20][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[20][CONTROL] = 0x03ffffff

sg_bd[21] address = 0x60000540
sg_bd[21][NXTDESC] = 0x60000580
sg_bd[21][NXTDESC_MSB] = 0x00000000
sg_bd[21][BUFFER_ADDRESS] = 0x6e800000
sg_bd[21][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[21][CONTROL] = 0x03ffffff

sg_bd[22] address = 0x60000580
sg_bd[22][NXTDESC] = 0x600005c0
sg_bd[22][NXTDESC_MSB] = 0x00000000
sg_bd[22][BUFFER_ADDRESS] = 0x6f000000
sg_bd[22][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[22][CONTROL] = 0x03ffffff

sg_bd[23] address = 0x600005c0
sg_bd[23][NXTDESC] = 0x60000000
sg_bd[23][NXTDESC_MSB] = 0x00000000
sg_bd[23][BUFFER_ADDRESS] = 0x6f800000
sg_bd[23][BUFFER_ADDRESS_MSB] = 0x00000000
sg_bd[23][CONTROL] = 0x03ffffff

S2MM_CURRDESC = 0x60000000
S2MM_TAILDESC = 0x60000600

Also, I had to manually set S2MM_CURRDESC_MSB and S2MM_TAILDESC_MSB.

Works great.

s.

 

View solution in original post

0 Kudos
pedro_uno
Advisor
Advisor
519 Views
Registered: ‎02-12-2013

If I understand you believe the AXI DMA Controller is not running because you do not detect the interrupt.

I have recently worked on a design using that core and I found it helpful to attach a System ILA core to all the axi buses and the interrupt out line.  In my case, I was getting interrupts but the data was not visible to the processor. I could observe the SG bus, the AXI Lite control bus, the streaming data bus and the dma bus into the PS. 

Having the ILA in there let me verify the dma core was running and that data was going to the right addresses.

 

----------------------------------------
DSP in hardware and software
-----------------------------------------
simozz
Scholar
Scholar
511 Views
Registered: ‎05-14-2017

@pedro_uno

The DMA was always running and this can be read from the status register.

Data was streamed from PL to DMA because the streaming core (a master axi4s) has been tested many times.

By exclusion, the problem was of course due to a bd chain setup issue.

Of course System ILA is useful as well.

Thanks for sharing your experience.

s.

0 Kudos