lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [lwip-users] Re: Desired - reference netconn_write() to external mem


From: Çağlar AKYÜZ
Subject: Re: [lwip-users] Re: Desired - reference netconn_write() to external memory
Date: Wed, 11 Oct 2006 16:25:03 +0300
User-agent: Mozilla Thunderbird 1.5.0.7 (Windows/20060909)

Alan Lamphier yazmış:
Çağlar AKYÜZ <address@hidden> writes:

What came to mind today was the possibility to call netconn_write() with
NO_COPY, referencing an external memory location instead of pointing to an
internal buffer.
What kind of external memory do you mean? SAM7X does not have any external memory bus. Are you using a parallel memory from GPIO?

In my current tests, I am retrieving files from external DataFlash.  Eventually
I will be retrieving bulk data from external NAND memory.
Then, I guess, you use SPI interface to transfer data from DataFlash to RAM. If this is the case I don't understand how you are going to transfer from Dataflash directly.
Actually I'm unable to get your problem. If you are facing slow transfer rate and want to increase it, then try to give some extra information. For instance, I couldn't exceed 5 KBytes per second transfer rate with TCP on a SAM7X while I can reach 800 KBytes per second with UDP one the same machine.

I seem to be in the ~310KBytes per second range with TCP right now, but I need
yet to test with larger file size transfers.  My problem is that the limited
processor RAM makes it difficult to optimize lwIP options for large data
transfers, from what I understand.  I had been calling netconn_write(), with the
COPY option as the passing data buffer is reloaded with new data from DataFlash
just after the netconn_write() call - so the original data buffer would not be
intact for retransmissions.
Actually I think this will not improve the performance of MAC. Because ACK'ing of TCP frames is one of the major drawbacks which degrades performance ( thanks to Delayed ACK algorithm!). Secondly I agree with you. You should use NOCOPY option. Try to segment your buffer into 2, use one for Dataflash update while the other one is for MAC transmission. Then, change the pointers and so on.
My thought was the possibility to call netconn_write() with the NO_COPY option
and instead of passing a pointer to a RAM data buffer, pass a starting DataFlash
address.
What is the interface of your Dataflash? I'm still getting hard time to realize how you will address Dataflash directly.

Çağlar




reply via email to

[Prev in Thread] Current Thread [Next in Thread]