The instructions for building and running the TCP echo demo on a Linux simulator target should probably mention that with a 64-bit host (which are now pretty much universal) you must set ipconfigBUFFER_PADDING to 14 in FreeRTOSIPConfig.h:
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/FreeRTOSIPConfig.h b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/FreeRTOSIPConfig.h
index 82975dff5..ffffa90b4 100644
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/FreeRTOSIPConfig.h
+++ b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/FreeRTOSIPConfig.h
@@ -301,6 +301,8 @@ disconnecting stage will timeout after a period of non-activity. */
#define ipconfigTCP_KEEP_ALIVE ( 1 )
#define ipconfigTCP_KEEP_ALIVE_INTERVAL ( 20 ) /* in seconds */
+#define ipconfigBUFFER_PADDING 14
+
#define portINLINE __inline
#endif /* FREERTOS_IP_CONFIG_H */
Otherwise, the assert at line 1156 in FreeRTOS_IP.c will fail:
1139 BaseType_t FreeRTOS_IPInit( const uint8_t ucIPAddress[ ipIP_ADDRESS_LENGTH_BYTES ],
1140 const uint8_t ucNetMask[ ipIP_ADDRESS_LENGTH_BYTES ],
1141 const uint8_t ucGatewayAddress[ ipIP_ADDRESS_LENGTH_BYTES ],
1142 const uint8_t ucDNSServerAddress[ ipIP_ADDRESS_LENGTH_BYTES ],
1143 const uint8_t ucMACAddress[ ipMAC_ADDRESS_LENGTH_BYTES ] )
1144 {
1145 BaseType_t xReturn = pdFALSE;
[...]
1151
1152 if( sizeof( uintptr_t ) == 8 )
1153 {
1154 /* This is a 64-bit platform, make sure there is enough space in
1155 * pucEthernetBuffer to store a pointer. */
1156 configASSERT( ipconfigBUFFER_PADDING == 14 );
1157 }
1158
Unfortunately, the default assert handler in the demo main.c just silently goes into an infinite loop, so it takes a fair bit of effort to figure out why the demo won’t run as-is. Therefore, I’d also suggest adding an fprintf() call in main.c. I also prefer an exit() call, but I can see that might not be what everybody would want:
diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/main.c b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/main.c
index 0cf0a0709..c12730511 100644
--- a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/main.c
+++ b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/main.c
@@ -247,10 +247,8 @@ volatile uint32_t ulSetToNonZeroInDebuggerToContinue = 0;
/* Called if an assertion passed to configASSERT() fails. See
http://www.freertos.org/a00110.html#configASSERT for more information. */
- /* Parameters are not used. */
- ( void ) ulLine;
- ( void ) pcFileName;
-
+ fprintf(stderr,"assert failed %s line %lu\n", pcFileName, ulLine);
+ exit(1);
taskENTER_CRITICAL();
{