µTasker Forum > NXPTM LPC2XXX and LPC17XX
Ethernet DMA for LPC23XX project
martinh:
Hello,
we are using the LPC23XX project to transfer data via ethernet (UDP protocol). Now that the amount of data has increased we are looking for a way to speed up transfer.
As a first step checksum calculation in fnSendUDP() has been cancelled.
That led to a transfer rate of 2,93ms per 11060 bytes, i.e. 265ns/byte as an average.
The next idea is to use DMA for transfering the data.
Has such an ethernet DMA transfer ever been realized with that LPC2XXX project?
Does anybody know of an appropriate project or can give some hints where to start?
Any comment would be welcome.
Martin H.
mark:
Hi Marin
The Ethernet controller is using DMA to transfer the data from RAM to the Ethernet port.
It is not using DMA to set the data to the SRAM - the DMA controller in the LPC23xx doesn't support RAM-RAM DMA transfers.
Compare your results with these for the M522xx and Kinetis here: http://www.utasker.com/docs/uTasker/uTaskerBenchmarks.PDF
For optimal results (with CS) a processor with IP checksum offloading has quite large advantages as shown by Kinetis results).
Regards
Mark
martinh:
Hi Mark,
so with other words the suggested way to speed up the whole transfer is to use uMemcpy() with DMA ?
Has that DMA transfer with uMemcpy() already been realized in the project?
At least I did not find the DMA initialisation. Could you give me a pointer?
Regards,
Martin
mark:
Hi Martin
Unfortunately it is not possible to use DMA in uMemcpy() since the LPCs doesn't support memory->memory DMA transfers.
This is one of the first DMA routines that I add because it makes a measurable difference in comparison to a loop doing it but the LPCs only support peripheral DMA transfers to certain memory areas - which is of course a shame.
Regards
Mark
martinh:
Hi Mark,
that is surprising me.
I am using LPC2468 and the manual says:
“30.3 Features of the GPDMA
…
• Memory-to-memory, memory-to-peripheral, peripheral-to-memory, and
peripheral-to-peripheral transfers”
I am aware that the project was made for LPC2368, but the manual for LPC2368 contains the same information.
Regards,
Martin
Navigation
[0] Message Index
[#] Next page
Go to full version