Zynq: Can not compile FreeRTOS with the LwIP stack with the Xilinx SDK tools using the SOCKET_API option selected

mikeeeeeee wrote on Thursday, May 29, 2014:

I am using version 2014.4 of the Xilinx SDK tools.
I am using 8.0.1 downloaded from the FreeeRTOS site.

I have followed the http://www.freertos.org/RTOS-Xilinx-Zynq.html instructions to create a starting project and would like to use TCP/IP sockets in my application so I did the following steps.

  1. Open the sytstem.mms file and clicked the modify Modify BSP button.
  2. I check the box next to lwip140. Version 1.06a is the selected by default.
  3. If I click OK now and rebuild the project it will rebuild without any errors.
  4. I want to use the socket API so I select the lwip140 from the tree on the left and in the api_mode row I change from RAW_API to SOCKET_API.
  5. I try and rebuild the BSP I get the following error.

lwIP can be used with the following EMAC peripherals found in your system:

ERROR:EDK - issued from TCL procedure “lwip_sw_drc” line 10
lwip140 () - lwIP with Sockets requires “xilkernel or freertos” OS
ERROR:EDK - Error(s) while running DRCs.
make: *** [ps7_cortexa9_0/lib/libxil.a] Error 2
make: Target `all’ not remade because of errors.

How can I build with the BSP with the socket API enabled in the LwIP stack with version 8.0.1 of FreeRTOS?

rtel wrote on Thursday, May 29, 2014:

Well I’m afraid I cannot support Xilinx’s tools, but am willing to speculate from experience of using them.

Real Time Engineers Ltd provide FreeRTOS projects for the Zynq with the FreeRTOS code being built as part of the application. The projects have a dependency on a hardware design project and a ‘stand alone’ BSP project.

Xilinx provide FreeRTOS as a BSP in place of the stand alone BSP. Therefore when you create a networking project only the application code is the main project, and that project has dependencies the lwIP BSP, a hardware project (as before) and the FreeRTOS BSP project.

My speculation is then that in the TCL code the lwIP BSP has a dependency on the FreeRTOS BSP, and as you are working with a project that builds FreeRTOS as part of the application the TCL code doesn’t know about it and flags a dependency error.

As it happens I am also working on updating the official FreeRTOS project to include lwIP, but in my project lwIP is being built as part of the application, not as a BSP component, so the dependency will not exist. This is in active development at the moment, but I’m afraid I can’t say when it will be released yet.