• 0
YakirP

Pmod wifi SDK problem

Question

Hi

i'm using Vivado 2018.2 + Zedboard, my goal is to use the WiFiScan from the examples attached to Pmod WiFi folder.

i have build the project in vivado section and exported it to SDK

at that point i'm creating new application project, choose C++ project and select finish.

i'm getting the following errors: 
flexible array member 'DHCPDG_T::options' not at end of 'struct DHCPMEM_T'    DHCP.h    ‪/proj_bsp/ps7_cortexa9_0/include/DEIPcK/utility‬    line 216    C/C++ Problem
flexible array member 'DHCPDG_T::options' not at end of 'struct DHCPMEM_T'    DHCP.h    ‪/proj_bsp/ps7_cortexa9_0/libsrc/PmodWIFI_v1_0/src/DEIPcK/utility‬    line 216    C/C++ Problem
flexible array member 'SMGR_T::rgPages' not at end of 'class TCPSocket'    HeapMgr.h    ‪/proj_bsp/ps7_cortexa9_0/include/DEIPcK/utility‬    line 145    C/C++ Problem
flexible array member 'SMGR_T::rgPages' not at end of 'class TCPSocket'    HeapMgr.h    ‪/proj_bsp/ps7_cortexa9_0/libsrc/PmodWIFI_v1_0/src/DEIPcK/utility‬    line 145    C/C++ Problem
flexible array member 'SMGR_T::rgPages' not at end of 'class UDPSocket'    HeapMgr.h    ‪/proj_bsp/ps7_cortexa9_0/include/DEIPcK/utility‬    line 145    C/C++ Problem
flexible array member 'SMGR_T::rgPages' not at end of 'class UDPSocket'    HeapMgr.h    ‪/proj_bsp/ps7_cortexa9_0/libsrc/PmodWIFI_v1_0/src/DEIPcK/utility‬    line 145    C/C++ Problem
flexible array member 'SMGR_T::rgPages' not at end of 'struct DNSMEM_T'    HeapMgr.h    ‪/proj_bsp/ps7_cortexa9_0/include/DEIPcK/utility‬    line 145    C/C++ Problem
flexible array member 'SMGR_T::rgPages' not at end of 'struct DNSMEM_T'    HeapMgr.h    ‪/proj_bsp/ps7_cortexa9_0/libsrc/PmodWIFI_v1_0/src/DEIPcK/utility‬    line 145    C/C++ Problem

thanks for the help
 

image.thumb.png.3fc2a20f28291c3ccb71b85feed83706.png

Share this post


Link to post
Share on other sites

13 answers to this question

Recommended Posts

  • 0

Hi @YakirP,

You are getting these errors due to not adding the correct folders to your application. This YouTube tutorial for the Pmod WIFI walks through the correct process. The tutorial is for an Artix-7 FPGA but the SDK portion of the tutorial will be the same. I have attached a screen shot of the block design using the zedboard and Pmod WIFI.

cheers,

Jon

Vivado_2018_2_pmod_wifi.jpg

Share this post


Link to post
Share on other sites
  • 0

my Vivado desing looks the same besides the gpio ip (i don't need it).

it passed the generate bitstream successfully -> export hardware and launch SDK.

i keep following the video attached (as i did before) and i'm trying to make a new application project (C++ project).

after hitting finish on it, the SDK takes couple of minutes to update the software and then the error jumpes from no where.

i'm using the library of vivado attached to the YouTube video so i don't know about which folders are you talking about.

as i wrote, this error jumped even before i'm touching my new project. i didn't copy yet anything to the new project.

any help?

Share this post


Link to post
Share on other sites
  • 0

Hi @YakirP,

I am getting the same error as you are using Vivado/SDK 2018.2 and Vivado/SDK 2018.3. I did not get this error using Vivado/SDK 2017.4. For the time being I would suggest using Vivado/SDK 2017.4.  We are looking into this but it may be some time before we determine what the issue is.  I did find a xilinx forum thread about this issue here

thank you,

Jon

Wifi_error_1.jpg

Wifi_error_2.jpg

Share this post


Link to post
Share on other sites
  • 0

I am wondering if there is any update to this problem? Your link suggests the solution is to go Windows 7, which is not a viable solution. According to the global-build.log,

  76 In file included from ./DEIPcK/utility/deIP.h:409:0,
  77                  from ../../../include/DEIPcK.h:64,
  78                  from DEIPcK/DEIPcK.cpp:54:
  79 ./DEIPcK/utility/DHCP.h:216:25: error: flexible array member 'DHCPDG_T::options' not at end of 'struct DHCPMEM_T'
  80      uint8_t     options[];      // variable lenght options ends with the end opiton of 0xFF

  88 In file included from ./DEIPcK/utility/deIP.h:404:0,
  89                  from ../../../include/DEIPcK.h:64,
  90                  from DEIPcK/DEIPcK.cpp:54:
  91 ./DEIPcK/utility/HeapMgr.h:145:25: error: flexible array member 'SMGR_T::rgPages' not at end of 'struct DNSMEM_T'
  92      PGID        rgPages[];

Seems the problem occurs during the build. I can't see anything wrong with the flexible array element in either struct.

I am coming to the conclusion that a user cannot fix this problem. The issue from my side is, your PmodWiFi is unusable and following the instructions from the YouTube video doesn't work. Is there any hope to get this problem fixed?

Share this post


Link to post
Share on other sites
  • 0

Hi @rzsmi,

The content team is aware that the Pmod WIFI has errors when using Vivado/SDK 2018.2 and Vivado/SDK 2018.3. They will address this issue when they have bandwidth.  Unfortunately we do not have an ETA for when this will be done. The current suggestion/solution is to use Vivado 2017.4.  We are sorry for any inconvenience this may cause.

best regards,

Jon

Share this post


Link to post
Share on other sites
  • 0

FYI, tried Linux as alternative and ran into a completely different set of problems.  The make file had errors.

 

LinuxMakeError.png

ErrosWiFiSDK.png

Share this post


Link to post
Share on other sites
  • 0

Hi @jonpaolo02 and @rzsmi,

I apologize for the long delay.

I was able to get the Pmod WiFi up and running on Vivado and SDK 2019.1 (on Windows 10) successfully. I needed to download the latest Vivado Library from the Digilent GitHub (https://github.com/Digilent/vivado-library) since some changes were made to the compilation order on the Pmod WiFi a few months ago, and made sure that I had Vivado choose that repository via the Settings->IP->Repository within the Project Manager on the right-hand side of the Vivado GUI. I have attached a picture of my Block Design that I used.

Otherwise, within SDK for completeness sake, I created a blank c++ application, deleted the main.c that came with it, and copied over the HTTPServer (since it already includes the same materials as the WiFiScan) from the hw_platform in the examples folder to the src folder within the application, made the appropriate WiFi SSID and password changes in the HTTPServerConfig.h file. I also made some changes in the deWebIOServerSrc.cpp file to make sure the appropriate input and output pins were added to the PinPage.htm via the addPINs function.

I will test this on Vivado 2019.2 and Vitis/SDK 2019.2 as well.

Please let me know if you have any questions about this.

Thanks,
JColvin

Zedboard WiFi 2019-1 block design.PNG

Share this post


Link to post
Share on other sites
  • 0

@jonpaolo02,

I used the master one via the green "Clone or Download" button. The release version looked like it was done prior to the small changes that were made. I'll ask to see if this updated version will get a formal release.

Share this post


Link to post
Share on other sites
  • 0

Hi @jonpaolo02,

I was able to get the WiFi IP working successfully on the Zedboard with Vivado and Vitis 2019.2 This is what I did to get to working :

1. Build Block Design as normal in Vivado 2019.2 (i.e., I followed the Getting Started with Pmod IPs, and used the latest Vivado library zip download from the Digilent GitHub).
2. Create the HDL wrapper for the block design, generate the bitstream, and export the hardware including the bitstream via the File->Export->Export Hardware option. This will create a .xsa file that Vitis uses.
3. Under the Tools option, choose Launch Vitis.
4. After Vitis has successfully launched, choose the "Create Platform Project" under the Project header in the middle of the GUI. Choose a name for it and click Next.
5. Choose "Create from hardware specification (XSA)", click Next, and then browse for the XSA file that Vivado created in step 2. Keep the operating system as standalone and processor as ps7_cortexa9_0. You can choose to keep the Generate boot components checked or unchecked, though I did not test the boot components on my project in the in the interest of having less variables to worry about. (Edit: I tried later to get the boot components working, though have been unsuccessful as of yet)
6. This will create the create the platform in Vitis. I right-clicked on the platform project and chose "Clean Project" followed by "Build Project"; I'm not certain if those steps are a required, though it doesn't hurt.
7. I then clicked on File->New->Application Project. I named the project and clicked Next. Under the "Select a platform from repository" tab, I selected the platform I named earlier (in this case, "Zed-WiFiSD-19-2") and clicked Next. I changed the language used to C++ and maintained the standalone OS on the ps7_cortexa9_0 CPU and clicked Next. I choose Empty Application (since that was the only option) and choose Finish.
8. From there, I followed the same procedure used in SDK 2019.1; i.e., I copied the HTTPServer stored in the [platform_name]->hw->drivers->PmodWIFIF_v1_0->examples folder to the src folder in the application project created in Step 7, and made the changes to deWebIOServerSrc.cpp and HTTPServerConfig.h.
9. At this point, the only thing missing is the .elf file in the application project so it can be successfully launched. I was able to get it generated within the (currently missing) Binaries folder by right clicking on the application project (I choose the one with the "_system" in it's name) and choosing "Clean Project" followed by "Build Project" once the former has finished. This generated the .elf file.
10. There was an error listed in the project that states the .elf for the FSBL was not found, but since the Generate Boot Components option was left unchecked, I ignored this error. After turning on the Zedboard and connecting to it via a serial terminal, I then clicked on the Xilinx tab, chose "Program FPGA", and then right-clicked on the application project and choose Run As->Launch on Hardware.

Please let me know if you have any questions about this.

Thanks,
JColvin

design_1_wrapper.xsa vitis_export_archive.ide.zip

Share this post


Link to post
Share on other sites
  • 0
On 1/8/2020 at 6:10 PM, JColvin said:

and copied over the HTTPServer (since it already includes the same materials as the WiFiScan) from the hw_platform in the examples folder to the src folder within the application, made the appropriate WiFi SSID and password changes in the HTTPServerConfig.h file. I also made some changes in the deWebIOServerSrc.cpp file to make sure the appropriate input and output pins were added to the PinPage.htm via the addPINs function.

Where is this WifiScan project?  The examples folder?  I am lost trying to find these sources.  I have the hardware platform built just fine.

Clyde

Share this post


Link to post
Share on other sites
  • 0

Hi @Clyde,

The WiFiScan project is in the [platform_name]->hw->drivers->PmodWIFIF_v1_0->examples folder, yes. That folder will have a number of examples, WiFiScan, HTTPServer, and a couple of TCP examples. Whatever example you wish to use you will need to copy over to the src folder in the application project.

Let me know if you have any questions about this.

Thanks,
JColvin

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now