when I try to setup the eDMA by using the config tools, this windows pops up:
I did some trials, the auto-code from different version are quite different.
What should supposed to use? eDMA2.3.0 or the 2.4.0
Does NXP have any update info for this version update?
Solved! Go to Solution.
Hi,
you're right. I suggested you to use non-transactional TCD mode, however as you might notice there is an incorrect implementation of transfer sizes in transactional mode. This is a known issue which will be fixed. As you can see the EDMA_PrepareTransferConfig() function has different parameter input types for source and destination sizes to the EDMA_PrepareTransfer() function. I'm sorry for this inconvenience.
Best Regards,
Martin Stano
MCUXpresso Config Tools team
Hi!
I'd recommend you to use the latest eDMA configuration component version, which is 2.4.0. Especially the non-transactional API mode (TCD structures) of the eDMA channels which is the most optimized way to pre-configure the DMA transfers.
The Migration Dialog window which offers you to "downgrade" your current component version is a known bug and it will be fixed in the next Config Tools version release. For now just set the "ignore" checkbox and press cancel.
Best Regards,
Martin Stano
MCUXpresso Config Tools team
Unfornately what I experienced is exactly the opposition from your suggestion:
when I donwgrade from V2.4.0 to V2.3.0 the eDMA config tools works perfectly, single TCD, scatter gather mode all are good
but when I use the V2.4.0, the result from the eDMA configure just drive me crazy, here is my test result:
I have a very simple srcAddr and dstAddr array as global variable
uint32_t srcAddr[8] = {0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8};
and
uint32_t dstAddr[8];
below is the "auto-code" from the eDMA (v2.4.0) by using configuration tools
by using different majo loop transfer (bytes), the test result looked like this:
Question: Why the output always doubled as the major loop transfer number?
in the V2.3.0, when I set
major loop transfer byte as 4, I got -> 1 0 0 0 0 0 0 0
major loop transfer byte as 8, I got -> 1 2 0 0 0 0 0 0
major loop transfer byte as 12,I got -> 1 2 3 0 0 0 0 0
.....
I am pretty sure the results from V2.3.0 is expected exactly due to the reference manual. (4 bytes = 1 uint32_t)
the scatter gather mode by V2.4.0 is A desaster. The example code which worked perfectly by V2.3.0. but by V2.4.0 the output is totally wrong.
Has any one from NXP validated the result of eDMA config tool in V2.4.0?
Hi,
you're right. I suggested you to use non-transactional TCD mode, however as you might notice there is an incorrect implementation of transfer sizes in transactional mode. This is a known issue which will be fixed. As you can see the EDMA_PrepareTransferConfig() function has different parameter input types for source and destination sizes to the EDMA_PrepareTransfer() function. I'm sorry for this inconvenience.
Best Regards,
Martin Stano
MCUXpresso Config Tools team
thanks for your lightspeed feedback.
I am feeling now much better, it is only a bug in SW tools. I had some time before a doubt the MCU would have some hardware bug.
Thank you for your kindly support
You are welcome. I can prepare a hotfix patch with correctly generated code in case you want to use no other than transactional API mode. Are you using MCUXpresso Config Tools version 11?
Best Regards
Martin Stano
MCUXpresso Config Tools team
I am now using MCUXpresso IDE v11.5.0 [Build 7232] [2022-01-11]