|
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ış:
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.Çağlar AKYÜZ <address@hidden> writes:What kind of external memory do you mean? SAM7X does not have any external memory bus. Are you using a parallel memory from GPIO?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.In my current tests, I am retrieving files from external DataFlash. Eventually I will be retrieving bulk data from external NAND memory.
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.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.
My thought was the possibility to call netconn_write() with the NO_COPY optionWhat is the interface of your Dataflash? I'm still getting hard time to realize how you will address Dataflash directly.and instead of passing a pointer to a RAM data buffer, pass a starting DataFlashaddress.
Çağlar
[Prev in Thread] | Current Thread | [Next in Thread] |