I am looking at section 55.7 of the document IMX6DQRM and noticed that the CCBs and BDs are located in the A9 memory space. The language in the document seems to imply that both processes in the A9 and the ROM scripts in the SDMA core both read and write to these structures. How does the A9 and SDMA core coordinate their access to these data structures?
I do not see any software mutual exclusion implemented in the SDMA Linux drivers and I cannot determine what the ROM scripts are doing since they are not open source.
Hi Paul
some examples and descriptions of sdma programming can be found in
baremetal sdk document iMX6_Firmware_Guide.pdf Chapter 29 Configuring
the SDMA Driver (zip can be found on )
MX25 SDMA CSPI example
Freescale i.MX SDMA tutorial (part I)
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hello Igor,
I don't feel this addresses the question that I asked. I am interested in how the AP and SDMA core ensure only one of them has exclusive access to the CCBs and DBs. Looking at the Linux SDMA driver, it seems that no mechanism is being used to ensure that the SDMA core is not accessing the CCBs and DBs while the driver is accessing them. None of the documents provided demonstrate how the ROM scripts might be doing this.
I am currently investigating an issue where the SDMA core seems to randomly stop issuing interrupts to the AP. The likely explanation at the moment is that there is a race condition caused by the Linux SDMA interrupt handler and ROM scripts modifying the D flag of the DBs.
Hi Paul
unfortunately nxp does not support sdma programming, that is no documentation, app notes
or programming guides are available. If you have special task for developing application with sdma
suggest to proceed with NXP Professional Services | NXP
Best regards
igor
Hello Igor,
I am not asking for help with SDMA programming. I have asked twice what mechanism is being used to prevent the A9 and SDMA core from accessing the CCBs and DBs at the same time in firmware and software distributed by Freescale/NXP.
Hello Paul
general approach is that A9 should prepare all sdma structures and then
start sdma, then it should not change CCBs and DB. One can read Chapter 29
Configuring the SDMA Driver iMX6_Firmware_Guide.pdf.
Best regards
igor