Hi,
In the past weeks we were working on porting the last LWIP version to RTEMS for
the LPC1768 microcontroller. Our main goal was to accomplish this with the
minimum number of changes for both projects. Fortunately, the result was
positive.
Now, we are capable of providing to the community with this new version of the
RTEMS+LWIP port.
Our changes/adds conducted on LWIP were few, but we think that those could be
helpful for the community. Furthermore, we think some of this modifications
could help developers in porting LWIP to new platforms.
In details (including changes in RTEMS - for better understanding):
- RTEMS OS: No changes were needed here. Despite this we will be posting a
possible improvement in the newlib maillist soon. It consist in adding the gcc
function attribute "warn_unused_result" to the pthread_*_init functions. As a
result, developers will be warned about checking the return value. NOTE: a
common error here could be not checking the return value, assuming a successful
result, and trying to, for example, lock a mutex which init function has
returned ENOMEM. (We found this exact mistake in the current LWIP OS layer
implementation for Unix)
- RTEMS LPC1768_MBED BSP: We added a new section to the linker script, so we
were able to put the LWIP and driver buffers in an exact memory location (useful
when working with DMA devices).
- RTEMS LPC1768_MBED Ethernet Driver: Based on an existing driver from MBED, we
ported it to RTEMS. NOTE: we will be creating our own driver in the near future.
- LWIP: As mentioned previously, we needed to put all LWIP buffers in DMA memory
locations. Consequently, we added the "section" attribute to LWIP ram_heap and
memp_memory buffers. Furthermore, as this is a common strategy in embedded
devices with DMA, we made it generic and we will send these changes to the LWIP
project. Additionally, we will provide some minor adds/changes to the lwip log
system and statistics system.
- LWIP-contrib: Some of the changes/adds were: fixing some issues related with
posix initialization checks and allow set threads stack size.
- LWIP-test-app: A simple TCP echo server with debugging functionality
(rtems malloc statistics, rtems stack checker, lwip statistics, driver
statistics and registers dump) available.
In order to provide you with the patches so you can review the changes/adds,
Should we upload those to the "patches" section of the web page? or should
we send those to the list?
Regards.
--
Casares, Federico
Sr. Software Engineer
Taller Technologies Argentina
San Lorenzo 47, 3rd Floor, Office 5
Córdoba, Argentina