i.MX 6SoloX SDMA usage from M4

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

i.MX 6SoloX SDMA usage from M4

1,245 Views
terosihvo
Contributor I

Hi,

I am doing some initial software development on i.MX 6SoloX M4 core. In order to make software trials fast, I have simply used Lauterbach debugger to upload and run the code on M4 core. This works fine.

Now I am investigating the use of SDMA from M4 side. I am trying to run iMX6_Platform_SDK sdma test code which I have modified (mainly peripheral addresses from 0x02xx xxxx to 0x42xx xxxx) to be able to program the SDMA from M4 side. The problem is that when starting the first DMA transfer used for uploading the SDMA scripts, the SDMA code immediately enters in the Debug stage (indicated by SDMAARM_ONCE_STAT register) and stays there. Why is this happening?

BR,

Tero

Labels (1)
Tags (3)
0 Kudos
4 Replies

824 Views
igorpadykov
NXP Employee
NXP Employee

Hi Tero

iMX6_Platform_SDK does not support i.MX 6SoloX.

For testing one can look at Linux driver, please check attached

Linux Manual Chapter 4 Smart Direct Memory Access (SDMA) API

Best regards

igor

-----------------------------------------------------------------------------------------------------------------------

Note: If this post answers your question, please click the Correct Answer button. Thank you!

-----------------------------------------------------------------------------------------------------------------------

0 Kudos

824 Views
terosihvo
Contributor I

Hi,

Yes, I know iMX6_Platform_SDK does not support i.MX 6SoloX. However, the SDMA driver code and the tests using it should show what must be written and to which SDMA peripheral registers to make the SDMA work. So I have copied the driver code from the SDK and modified it such that the SDMA peripheral register writes go to 0x420ECxxx addresses where M4 core sees the SDMA peripheral instead of 0x020ECxxx addresses where A9 core sees it.

According to my understanding, the SDMA should be working even if it is programmed from M4 core side. I have checked that all the peripheral clocks (including the SDMA clock) are enabled. A9 core should not mix things since it is not running (the M4 core test application is started from the debugger). But for some reason, the SDMA core immediately enters Debug state when the first DMA transfer for uploading the SDMA scripts is triggered. This also happens when the the M4 core is started from Uboot but not the Linux. Of course, Linux SDMA driver will mix things and this must be taken into account when Linux is started, but for now, the goal is just to test the SDMA with M4 core only.

So what goes wrong in using the SDMA from M4 core side?

0 Kudos

824 Views
igorpadykov
NXP Employee
NXP Employee

could you try to run the same test using A9 core ?

0 Kudos

824 Views
terosihvo
Contributor I

Problem solved. RDC prevented SDMA access to M4 code memory area from where the SDMA script code was supposed to be uploaded to SDMA code memory during the SDMA initialization.

BR,

Tero

0 Kudos