Hi David,
I have upgraded LwIP from 1.41 to 2.02 and only handled the sys_arch.h/c files The only thing I can remember that I had to change was the ip_addr variable definitions in my own code. Beside that I have not mad any change to the LwIP code. STM32F4 and also F7 with FreeRTOS... Works like a charm. BR, Noam. ________________________________ From: lwip-users <lwip-users-bounces+noam=silrd....@nongnu.org> on behalf of David Lockyer <david.lock...@chronos.co.uk> Sent: Wednesday, September 6, 2017 5:12 PM To: lwip-users@nongnu.org Subject: [lwip-users] LWIP_MPU_COMPATIBLE set to 1, but still get memory management fault in lwip_select. Hi, I have a project that uses an STM32F MCU running FreeRTOS (cortex mpu port) & lwip, with the MPU enabled. I'm upgrading to lwip 2.0.2 from lwip 1.4.1, that I had to customize to be compatible with the MPU, in particular in lwip_select(). The motivation was to use the LWIP_MPU_COMPATIBLE define, so a direct modification of the stack source was not required. However for me it still appears to try to access another threads memory, triggering an exception. The changes I had to make were: Index: lib/lwip-2.0.2/src/api/sockets.c =================================================================== --- lib/lwip-2.0.2/src/api/sockets.c (revision xxxxx) +++ lib/lwip-2.0.2/src/api/sockets.c (working copy) @@ -1428,7 +1428,9 @@ /* Put this select_cb on top of list */ select_cb.next = select_cb_list; if (select_cb_list != NULL) { + RAISE_PRIVILEGE(); select_cb_list->prev = &select_cb; + RESET_PRIVILEGE(); } select_cb_list = &select_cb; /* Increasing this counter tells event_callback that the list has changed. */ @@ -1508,7 +1510,9 @@ /* Take us off the list */ SYS_ARCH_PROTECT(lev); if (select_cb.next != NULL) { + RAISE_PRIVILEGE(); select_cb.next->prev = select_cb.prev; + RESET_PRIVILEGE(); } if (select_cb_list == &select_cb) { LWIP_ASSERT("select_cb.prev == NULL", select_cb.prev == NULL); @@ -1515,7 +1519,9 @@ select_cb_list = select_cb.next; } else { LWIP_ASSERT("select_cb.prev != NULL", select_cb.prev != NULL); + RAISE_PRIVILEGE(); select_cb.prev->next = select_cb.next; + RESET_PRIVILEGE(); } /* Increasing this counter tells event_callback that the list has changed. */ select_cb_ctr++; Is there something else I missed here that would remove the need for this modification? Kind regards, David Lockyer ______________________________________________________________________ This email has been scanned by the Symantec Email Security.cloud service. For more information please visit http://www.symanteccloud.com ______________________________________________________________________
_______________________________________________ lwip-users mailing list lwip-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/lwip-users