uIP demo on lpc23xx: how much memory?

nobody wrote on Wednesday, May 16, 2007:

i saw the uIP demo for lpc2368 and would like to use the smallest
(and cheapest) possible lpc23xx controller instead of the 2368.
as i still don’t have any lpc hardware here, i’d like to know
if i can get it to fit on a 2364 and still have a little room
to add my own application code.

so how much flash and sram memory is still free with this demo
on the 2368?

P.S.: the difference in memory size between the devices is the following:
device  / flash / local bus sram
lpc2364 / 128kB / 8kB
lpc2366 / 256kB / 32kB
lpc2368 / 512kB / 32kB 

rtel wrote on Wednesday, May 16, 2007:

As downloaded the kernel and uIP stack only have a footprint as follows:

Kernel - 7.4K ROM and 350bytes RAM + the heap
uIP - 14K ROM including the WEB pages, and 11K RAM

Note however:

No effort has been made to reduce the code size.  This is not fully optimised, and unused symbols have not been removed.  Using GCC it has been proven to me that the kernel size can be a little as 4K (actually about the same as the IAR build) if unused symbols are removed.

The more RAM you provide uIP the better the throughput can be.  You can provide uIP with tiny buffers of a few hundred bytes if slow throughput is ok for your application.  I can’t recall the buffers allocated to the Ethernet hardware itself.

Read the memory management section of the FreeRTOS.org site for information on the heap usage, and the memory FAQ for information on how much heap each task and queue will take.

I think your best bet is to get a copy of CrossWorks (eval versions are available) and try configuring it for the low RAM version of the LPC to see if you can get it to fit or not.  8K is really not very much, so I think it will be a push.


nobody wrote on Wednesday, May 16, 2007:

thanks for the info
as i understand from what you write, the one thing that eats up a lot is uIP for ethernet buffers.
what i didn’t write in the “memory difference” listing (cause it’s the same for all lpc23xx) is
that all these devices have an independent 16kB SRAM just for the ethernet mac buffers. the ethernet
dma transfers go directly from/to there.
i read this buffer mem is mapped to local sram, but i don’t know if that means it can be used for
general purpose memory stuff.

so the question is: does the uIP demo for lpc23xx use those 16kB special ethernet sram for buffers
(in which case there shouldn’t be a real problem with 8kB normal sram) or does it only know general
sram and doesn’t make the difference between the 16kB buffers and the 8kB general purpose sram?
if the latter is the case, the question is: can the 16kB buffer mem be used like normal sram
(in which case the lpc2364 would have 24kB usable sram) or not?