We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
One of the most basic rules for reliable embedded software is to AVOID dynamic memory allocation. See MISRA and others... For the less experienced programmer, when using malloc extensively, it is likely that at some point in time it will fail to allocate the large chunk of memory you need, because the memory pool is fragmented. When it fails, your code does not have much choice other than reset the system, otherwise it will continue to be impaired forever... In the light of the above, I cannot fathom why Keil, an ARM company, is making this basic mistake. I have tested this TCPNet rubbish a while ago with a simple tcp Connection exchanging data back and forth, and it locked up after less than one hour! The web server did not work much better either. If you look around at other proper implementations done by Segger, Express Logic, etc... you will see how it should be done. I have seen some people here complaining about alloc_mem() returning NULL. If you want a reliable IP stack look elsewhere. Keil does not have one.
For the less experienced programmer, when using malloc extensively, it is likely that at some point in time it will fail to allocate the large chunk of memory you need, because the memory pool is fragmented.
This can't be related to TCPnet as it doesn't use malloc as far as I can see this in my application. I btw didn't see any lock-up either. Keil's stack uses a dedicated packet buffer similar to the other products you mentioned. There is nothing bad about this. NetX does use fixed block sizes to allocate memory. Maybe this is what you actually meant? Using fixed block sizes vs. using variable size allocation is basically just the choice between speed (fixed) and memory usage (variable).