cancel
Showing results for 
Search instead for 
Did you mean: 

Linked list GPDMA port configuration mismatch

mkrk
Associate III

I'd like to report one issue with DMA Linked List editor. I need to do PSSI reception with GPDMA using linked list on STM32H7R3L8H6H. CubeMX is version v6.15.0 and CubeIDE is v1.19.0.

Based on reference manual (RM) and AN5593, the GPDMA ports 0 and 1 are both AHB ports, with port 0 being capable of direct access to APB peripherals. However, Linked list editor in CubeMX displays port options with wrong names:

mkrk_0-1759134139527.png

I guess it follows HPDMA port naming. Maybe it should avoid naming at all or decide it based on the DMA channel option in the List editor.

It looks like a minor issue, but I happened to make opposite choice because memory is on AXI bus so for me it is yet another problem on the way of getting the whole thing working.

 

3 REPLIES 3
Ghofrane GSOURI
ST Employee

Hello @mkrk 

Your detailed explanation is much appreciated.

Issue has been raised to dev team for resolution.

Internal ticket number is 218536 

THX

Ghofrane

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

mkrk
Associate III

Thanks @Ghofrane GSOURI 

There seems to be one more issue with Linked list editor. Now I picked source port 0 and destination port 1, saved IOC file and closed it. When re-opening IOC file and looking at Linked list editor, destination port is 0. I look at IOC file and see that there is no separate source and destination port parameter, but a single TransferAllocatedPortSrc which is zero. Here is a block of LinkedList parameters from IOC:

Linkedlist.MDMA_Channel0.GP_SW.0.BlkHWRequest=DMA_BREQ_SINGLE_BURST
Linkedlist.MDMA_Channel0.GP_SW.0.DataHandling=NONE
Linkedlist.MDMA_Channel0.GP_SW.0.DataSize=8192
Linkedlist.MDMA_Channel0.GP_SW.0.DestBurstLength=1
Linkedlist.MDMA_Channel0.GP_SW.0.DestDataWidth=DMA_DEST_DATAWIDTH_WORD
Linkedlist.MDMA_Channel0.GP_SW.0.DestInc=DMA_DINC_INCREMENTED
Linkedlist.MDMA_Channel0.GP_SW.0.Direction=DMA_PERIPH_TO_MEMORY
Linkedlist.MDMA_Channel0.GP_SW.0.DstAddress=0
Linkedlist.MDMA_Channel0.GP_SW.0.Instance=MDMA_Channel0
Linkedlist.MDMA_Channel0.GP_SW.0.LL_CIRCULARNODE=PSSI_DMA_LL_N1
Linkedlist.MDMA_Channel0.GP_SW.0.LL_MASTERDMA=GPDMA1
Linkedlist.MDMA_Channel0.GP_SW.0.LL_NAME=PSSI_DMA_LL
Linkedlist.MDMA_Channel0.GP_SW.0.LL_TYPE=CIRCULAR
Linkedlist.MDMA_Channel0.GP_SW.0.Mode=DMA_NORMAL
Linkedlist.MDMA_Channel0.GP_SW.0.NODE_NAME=PSSI_DMA_LL_N1
Linkedlist.MDMA_Channel0.GP_SW.0.RequestParameters=LL_NAME,LL_MASTERDMA,LL_TYPE,LL_CIRCULARNODE,NODE_NAME,BlkHWRequest,Requestforcodegen,Direction,SrcInc,DestInc,SrcDataWidth,DestDataWidth,SrcBurstLength,DestBurstLength,TransferAllocatedPortSrc,TransferEventMode,Mode,DataHandling,TriggerPolarity,SrcAddress,DstAddress,DataSize
Linkedlist.MDMA_Channel0.GP_SW.0.Requestforcodegen=GPDMA1_REQUEST_PSSI
Linkedlist.MDMA_Channel0.GP_SW.0.SrcAddress=(uint32_t)(&hpssi.Instance->DR)
Linkedlist.MDMA_Channel0.GP_SW.0.SrcBurstLength=1
Linkedlist.MDMA_Channel0.GP_SW.0.SrcDataWidth=DMA_SRC_DATAWIDTH_WORD
Linkedlist.MDMA_Channel0.GP_SW.0.SrcInc=DMA_SINC_FIXED
Linkedlist.MDMA_Channel0.GP_SW.0.TransferAllocatedPortsrc=DMA_SRC_ALLOCATED_PORT0
Linkedlist.MDMA_Channel0.GP_SW.0.TransferEventMode=DMA_TCEM_EACH_LL_ITEM_TRANSFER
Linkedlist.MDMA_Channel0.GP_SW.0.TriggerPolarity=DMA_TRIG_POLARITY_MASKED
Linkedlist.MDMA_Channel0.GP_SW.1.BlkHWRequest=DMA_BREQ_SINGLE_BURST
Linkedlist.MDMA_Channel0.GP_SW.1.DataHandling=NONE
Linkedlist.MDMA_Channel0.GP_SW.1.DataSize=8192
Linkedlist.MDMA_Channel0.GP_SW.1.DestBurstLength=1
Linkedlist.MDMA_Channel0.GP_SW.1.DestDataWidth=DMA_DEST_DATAWIDTH_WORD
Linkedlist.MDMA_Channel0.GP_SW.1.DestInc=DMA_DINC_INCREMENTED
Linkedlist.MDMA_Channel0.GP_SW.1.Direction=DMA_PERIPH_TO_MEMORY
Linkedlist.MDMA_Channel0.GP_SW.1.DstAddress=0
Linkedlist.MDMA_Channel0.GP_SW.1.Instance=MDMA_Channel0
Linkedlist.MDMA_Channel0.GP_SW.1.LL_CIRCULARNODE=PSSI_DMA_LL_N1
Linkedlist.MDMA_Channel0.GP_SW.1.LL_MASTERDMA=GPDMA1
Linkedlist.MDMA_Channel0.GP_SW.1.LL_NAME=PSSI_DMA_LL
Linkedlist.MDMA_Channel0.GP_SW.1.LL_TYPE=CIRCULAR
Linkedlist.MDMA_Channel0.GP_SW.1.Mode=DMA_NORMAL
Linkedlist.MDMA_Channel0.GP_SW.1.NODE_NAME=PSSI_DMA_LL_N2
Linkedlist.MDMA_Channel0.GP_SW.1.RequestParameters=LL_NAME,LL_MASTERDMA,LL_TYPE,LL_CIRCULARNODE,NODE_NAME,BlkHWRequest,Requestforcodegen,Direction,SrcInc,DestInc,SrcDataWidth,DestDataWidth,SrcBurstLength,DestBurstLength,TransferAllocatedPortSrc,TransferEventMode,Mode,DataHandling,TriggerPolarity,SrcAddress,DstAddress,DataSize
Linkedlist.MDMA_Channel0.GP_SW.1.Requestforcodegen=GPDMA1_REQUEST_PSSI
Linkedlist.MDMA_Channel0.GP_SW.1.SrcAddress=(uint32_t)(&hpssi.Instance->DR)
Linkedlist.MDMA_Channel0.GP_SW.1.SrcBurstLength=1
Linkedlist.MDMA_Channel0.GP_SW.1.SrcDataWidth=DMA_SRC_DATAWIDTH_WORD
Linkedlist.MDMA_Channel0.GP_SW.1.SrcInc=DMA_SINC_FIXED
Linkedlist.MDMA_Channel0.GP_SW.1.TransferAllocatedPortsrc=DMA_SRC_ALLOCATED_PORT0
Linkedlist.MDMA_Channel0.GP_SW.1.TransferEventMode=DMA_TCEM_EACH_LL_ITEM_TRANSFER
Linkedlist.MDMA_Channel0.GP_SW.1.TriggerPolarity=DMA_TRIG_POLARITY_MASKED
Linkedlist.MDMA_Channel0.Request0=GP_SW
Linkedlist.MDMA_Channel0.Request1=GP_SW
Linkedlist.MDMA_Channel0.RequestsNb=2
Linkedlist.RequestSet0=MDMA_Channel0
Linkedlist.RequestSetsNb=1

Generated code (linked_list.c) also puts both to zero:

pNodeConfig.Init.TransferAllocatedPort = DMA_SRC_ALLOCATED_PORT0|DMA_DEST_ALLOCATED_PORT0;



Hello @mkrk 

Thank you very much for your valuable contributions.

A separate ticket has been submitted to the development team to address and correct this behavior

Internal ticket number is 218572 .

THX

Ghofrane 

 

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.