This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM6442: Error in BCDMA copying large amounts of data

Part Number: AM6442

Dear TI support team,

I run the example mcu_plus_sdk_am64x_09_01_00_41\examples\drivers\udma\udma_memcpy_interrupt\am64x-evm\r5fss0-0_freertos, only one R5FSS0_CORE0 was run, and modified the num of bytes to be copied.

I found that as long as the num of bytes to be copied is greater than or equal to 64KB, UdmaUtils_getTrpdTr15Response will return a failure (CSL_UDMAP_TR_RESPONSE_STATUS_TRANSFER_ERR).

That's why? I guess BCDMA for data copying is related to TCM? because TCMA or TCMB only have 64KB.

Regards,

Jian

  • I have found where to set up to successfully copy large amounts of data, icnt0, icnt1,icnt2 and icnt3 can be used for transmitting data from source to destination at different speeds. 

    But I couldn't find any information on how to set the optimal value of icnt0 in TRM. I set it to 1KB and it can run successfully.

    Regards,

    Jian

  • Hello jian,

    Your icnt and dicnt settings seem OK to transfer large data transfer.

    Typically, these values are 16 bits and the maximum you can transfer to 64KB -1  with each icnt parameters.

    You need to configure icnto and icnt1 values to transfer 64KB data.

    For example, in your use case you need to transfer 64KB. In this case, you can configure icnto and inct1 as below.

    Icnt0 = data_Length/2 and icnt1 = data_Length/32KB. In this situation we are trying to send the maximum data in the icnt 0 iteration and the will remain data will be sent at the next icnt 1value. And, please try to follow the same procedure for other icnt settings.

    Regards,

    S.Anil.

  • Hello S.Anil,

    Thank you for your reply.

    Yes, I know icnt type is UINT16. What I want to know is how to set up these ICNTs to achieve maximum transmission performance? For example, the amount of data that needs to be transmitted is 500KB.

    Regards,

    Jian

  • Hello Jian,

    Sorry for the delayed response as I am busy fixing other customer issues.

    As mentioned above, with icnt0 you can try to transfer the maximum range and if the inc0 is over, then you can go for inct1 and so on.

    For your use case , you can define icnt0 as maximum to 50KB and next define icnt1 as 10 so, that for each iteration of icnt1, data will be transferred to 50KB and this same data size can be transferred till to icnt1. In your use case you need two, icnt values.

    Regards,

    S.Anil.