Many errors and warnings after building FreeRTOS-Plus-TCP-Multi
Hi all,
After building de files of FreeRTOS-Plus-TCP-Multi with GCC Arm toolchain, I get many errors and warnings.
For example: unknown typename xZeroCopyBufferDescriptor, ipconfigMAXUDPDATALENGTH and
FreeRTOSGetZeroCopyBuffer()??
Where can I find these definitions?
Thanks for help in advance,
Max
Many errors and warnings after building FreeRTOS-Plus-TCP-Multi
The items that you mention are part of an old demo module
Test_CodeSockets_Test.c
. I’m sorry but it has not been updated for a long time.
If I am not mistaken, xZeroCopyBufferDescriptor_t
should be:
~~~
typedef NetworkBufferDescriptort *xZeroCopyBufferDescriptort;
~~~
Note that nowadays, the initial ‘x’ would not be used for a typedef anymore, so it would become ZeroCopyBufferDescriptor_t
.
ipconfigMAX_UDP_DATA_LENGTH
indicates the length of the UDP packets that are transmitted.
The function FreeRTOS_GetZeroCopyBuffer()
was a wrapper, it would call the function pxGetNetworkBufferWithDescriptor()
.
I think it looked lke this:
~~~
BaseTypet FreeRTOSGetZeroCopyBuffer( xZeroCopyBufferDescriptort *pBuffer, sizet xRequestedSizeBytes, TickTypet xBlockTimeTicks )
{
BaseTypet xResult;
*pBuffer = pxGetNetworkBufferWithDescriptor( xRequestedSizeBytes, xBlockTimeTicks );
if( *pBuffer != NULL )
{
xResult = pdPASS;
}
else
{
xResult = pdFAIL;
}
return xResult;
}
~~~
Zero-copy for UDP:
For UDP sockets, zero-copy means that the user doesn’t pass character buffers, but Network Buffers, which travel from the Network Interface all the way to the application ( FreeRTOS_recvfrom()
), without ever getting ( mem- ) copied.
The same for FreeRTOS_sendto()
: the user fills and sends a Network Bufferm which won’t get copied neither. If you have a zero-copy driver, the memory of the Network Buffer will be passed directly to DMA.
The actual library sources files of FreeRTOS+TCP are these nine:
~~~
FreeRTOSARP.c
FreeRTOSDHCP.c
FreeRTOSDNS.c
FreeRTOSIP.c
FreeRTOSSockets.c
FreeRTOSStreamBuffer.c
FreeRTOSTCPIP.c
FreeRTOSTCPWIN.c
FreeRTOSUDP_IP.c
~~~
I hope that they compile without too many problems. Yes we also tested it with the GCC Arm toolchain.
Max, are you sure you need the /multi version of FreeRTOS+TCP? For which platform, if I may ask?
The /multi version has support for multiple Network Interfaces, and also multiple IP-addresses. it also implements IPv6, but that part is still under construction.