lwIP 1.4.0 GCC ARM Cortex-M3 target I have been developing on the above platform for some time quite successfully without optimisation. Recently I turned on optimisation and found the raw httpd server (from lwIP contrib) stopped functioning correctly when serving jpg files that didn't fit in a single Ethernet frame. The jpg loaded very slowly, and a wireshark log appear to show junk being spewed onto the wire in between frames (at least, there were frames appearing that were of a protocol unknown to me, and wireshark seemed a bit confused too, and I am only using a point to point connection).
My first suspect was the Ethernet driver, as I always suspect my code first ;o) and this problem appeared to have the symptom of a missing volatile qualifier on a variable close to the hardware. Many hours later I did what I should probably have done to start with, and try to isolate which file being optimised was causing the problem. This experiment would appear, at least, to point to inet_chksum.c, although I'm still open to anything being the actual cause. inet_chksum.c was configured with LWIP_CHKSUM_ALGORITHM 2. I can compile my entire project with optimisation turned up to -Os, and manually set inet_chksum.c to use -O0, and everything runs fine. Likewise, I can set the entire project to use optimisation -O0, and manually set just inet_chksum.c to -O1 (the lowest optimisation) and the problem is present. The code does not crash, and the jpg does load eventually. Setting LWIP_CHKSUM_ALGORITHM to 1 does not change the behaviour. Does this make any sort of sense? A quick scan of the C file does not show any obvious reason. Have I run into a know problem here? I cannot see anything in the bug list. Can you suggest any options I should try? Regards, Richard. + http://www.FreeRTOS.org Designed for Microcontrollers. More than 7000 downloads per month. _______________________________________________ lwip-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/lwip-users
