Quality RTOS & Embedded Software

 Real time embedded FreeRTOS RSS feed 
Quick Start Supported MCUs PDF Books Trace Tools Ecosystem


Many errors and warnings after building FreeRTOS-Plus-TCP-Multi

Posted by hitech14 on June 7, 2018

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,


Many errors and warnings after building FreeRTOS-Plus-TCP-Multi

Posted by heinbali01 on June 7, 2018

The items that you mention are part of an old demo module Test_Code\Sockets_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;
	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.

[ Back to the top ]    [ About FreeRTOS ]    [ Privacy ]    [ Sitemap ]    [ ]

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.

Latest News

FreeRTOS v10.2.1 is available for immediate download. MIT licensed, includes 64-bit RISC-V, NXP Cortex-M33 demo, Nuvoton Cortex-M23 demo & STM32H745 dual core (AMP) demo.

NXP tweet showing LPC5500 (ARMv8-M Cortex-M33) running FreeRTOS.

View a recording of the "OTA Update Security and Reliability" webinar, presented by TI and AWS.


FreeRTOS and other embedded software careers at AWS.

FreeRTOS Partners

ARM Connected RTOS partner for all ARM microcontroller cores

Cadence Tensilica Cortes

Espressif ESP32

IAR Partner

Microchip Premier RTOS Partner

RTOS partner of NXP for all NXP ARM microcontrollers





STMicro RTOS partner supporting ARM7, ARM Cortex-M3, ARM Cortex-M4 and ARM Cortex-M0

Texas Instruments MCU Developer Network RTOS partner for ARM and MSP430 microcontrollers

OpenRTOS and SafeRTOS

Xilinx Microblaze and Zynq partner