Hey there,
I hope this is the right place for this kind of post, if not I welcome any suggestions on where to ask about this sort of thing.
I’m trying to make the transition from VSCode+Arduino extension to VSCode+PlatformIO and the project I’m working on relies on the WiFiWebServer library, so I made a project that uses the WebServer example just to verify it builds. I’ve been using this library in the Arduino environment with no problems, fwiw.
Unfortunately, it doesn’t and so far I’ve been unable to figure out the root cause of the failure. I’m not expecting anyone to figure this out for me, but it would be really helpful if someone could confirm that this library can in fact successfully build with an RP2040 Connect with PlatformIO.
What I see are errors related to functions being redefined and bool not being a type. From what I can tell, it appears the .c code is (indirectly) including Arduino.h which uses bool which of course isn’t part of C, only C++. The code in C:\Users\Eric.platformio\packages\toolchain-gccarmnoneeabi\arm-none-eabi\include\c++\9.2.1\tr1\cstdint seems to be expected to #include <stdint> which I think would correct that, but this only happens if _GLIBCXX_HAVE_STDINT_H is defined, which it isn’t (I put an #error right before #include to verify). Guessing there might be some kind of standard lib setup problem, or perhaps a compiler configuration somewhere I need to learn about.
Anyway, if someone has a chance to try to build this example in WiFiWebServer with an RP2040 Connect I’d sure appreciate it. Even better would be some suggestions on what I might be able to do to get this to work. Thanks for any assistance!
As an aside, I am really liking what I see with PlatformIO - great stuff!
Here’s my platformio.ini
[platformio]
default_envs = nanorp2040connect
[env:nanorp2040connect]
platform = raspberrypi
board = nanorp2040connect
framework = arduino
lib_deps = khoih-prog/WiFiWebServer@^1.4.0
And here is the build output:
> Executing task in folder PIOTest: C:\Users\Eric\.platformio\penv\Scripts\platformio.exe run --target upload <
Processing nanorp2040connect (platform: raspberrypi; board: nanorp2040connect; framework: arduino)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/raspberrypi/nanorp2040connect.html
PLATFORM: Raspberry Pi RP2040 (1.3.0) > Arduino Nano RP2040 Connect
HARDWARE: RP2040 133MHz, 264KB RAM, 2MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, jlink, raspberrypi-swd)
PACKAGES:
- framework-arduino-mbed 2.4.1
- tool-openocd-raspberrypi 2.1100.0 (11.0)
- tool-rp2040tools 1.0.2
- toolchain-gccarmnoneeabi 1.90201.191206 (9.2.1)
LDF: Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 36 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <WiFiWebServer> 1.4.0
| |-- <WiFiNINA_Generic> 1.8.13
| | |-- <SPI>
| | |-- <WiFi101> 0.16.1
| | | |-- <SPI>
| |-- <Functional-Vlpp> 1.0.2
| |-- <ESP_AT_Lib> 1.4.0
| |-- <WiFi101> 0.16.1
| | |-- <SPI>
| |-- <WiFiEspAT> 1.3.1
|-- <WiFiEspAT> 1.3.1
Building in release mode
Compiling .pio\build\nanorp2040connect\src\main.cpp.o
Compiling .pio\build\nanorp2040connect\liba19\SPI\SPI.cpp.o
Compiling .pio\build\nanorp2040connect\libfb9\WiFi101\WiFi.cpp.o
Compiling .pio\build\nanorp2040connect\libfb9\WiFi101\WiFiClient.cpp.o
Compiling .pio\build\nanorp2040connect\libfb9\WiFi101\WiFiMDNSResponder.cpp.o
Compiling .pio\build\nanorp2040connect\libfb9\WiFi101\WiFiSSLClient.cpp.o
Compiling .pio\build\nanorp2040connect\libfb9\WiFi101\WiFiServer.cpp.o
Compiling .pio\build\nanorp2040connect\libfb9\WiFi101\WiFiUdp.cpp.o
Compiling .pio\build\nanorp2040connect\libfb9\WiFi101\bsp\source\nm_bsp_arduino.c.o
Compiling .pio\build\nanorp2040connect\libfb9\WiFi101\bsp\source\nm_bsp_arduino_avr.c.o
In file included from src\main.cpp:18:
src\defines.h:97:4: warning: #warning Using WiFiNINA using WiFiNINA_Generic Library [-Wcpp]
97 | #warning Using WiFiNINA using WiFiNINA_Generic Library
| ^~~~~~~
In file included from src\defines.h:372,
Compiling .pio\build\nanorp2040connect\libfb9\WiFi101\bus_wrapper\source\nm_bus_wrapper_samd21.cpp.o
from src\main.cpp:18:
.pio\libdeps\nanorp2040connect\WiFiWebServer\src/WiFiWebServer.h:110:4: warning: #warning RP2040-based board selected [-Wcpp]
110 | #warning RP2040-based board selected
| ^~~~~~~
.pio\libdeps\nanorp2040connect\WiFiWebServer\src/WiFiWebServer.h:116:4: warning: #warning Use RP2040 architecture from WiFiWebServer [-Wcpp]
116 | #warning Use RP2040 architecture from WiFiWebServer
| ^~~~~~~Compiling .pio\build\nanorp2040connect\libfb9\WiFi101\common\source\nm_common.c.o
Compiling .pio\build\nanorp2040connect\libfb9\WiFi101\driver\source\m2m_ate_mode.c.o
Compiling .pio\build\nanorp2040connect\libfb9\WiFi101\driver\source\m2m_crypto.c.o
In file included from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\variants\NANO_RP2040_CONNECT/pinmode_arduino.h:30,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/Arduino.h:26,
from .pio\libdeps\nanorp2040connect\WiFi101\src/bsp/include/nm_bsp_arduino.h:47,
from .pio\libdeps\nanorp2040connect\WiFi101\src\bsp\source\nm_bsp_arduino.c:46:
C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/api/Common.h:75:9: error: unknown type name 'bool'
75 | typedef bool boolean;
| ^~~~
Compiling .pio\build\nanorp2040connect\libfb9\WiFi101\driver\source\m2m_hif.c.o
Compiling .pio\build\nanorp2040connect\libfb9\WiFi101\driver\source\m2m_ota.c.o
Compiling .pio\build\nanorp2040connect\libfb9\WiFi101\driver\source\m2m_periph.c.o
Compiling .pio\build\nanorp2040connect\libfb9\WiFi101\driver\source\m2m_ssl.c.o
*** [.pio\build\nanorp2040connect\libfb9\WiFi101\bsp\source\nm_bsp_arduino.c.o] Error 1
In file included from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/Arduino.h:76,
from .pio\libdeps\nanorp2040connect\WiFiNINA_Generic\src/WiFiClient_Generic.h:56,
from .pio\libdeps\nanorp2040connect\WiFiNINA_Generic\src/WiFi_Generic.h:76,
from .pio\libdeps\nanorp2040connect\WiFiNINA_Generic\src/WiFiNINA_Generic.h:60,
from .pio\libdeps\nanorp2040connect\WiFiWebServer\src/WiFiWebServer.h:128,
from src\defines.h:372,
from src\main.cpp:18:
C:\Users\Eric\.platformio\packages\framework-arduino-mbed\variants\NANO_RP2040_CONNECT/pins_arduino.h:84: warning: "BOARD_NAME" redefined
84 | #define BOARD_NAME "Nano RP2040 Connect"
|
In file included from src\main.cpp:18:
src\defines.h:366: note: this is the location of the previous definition
366 | #define BOARD_NAME BOARD_TYPE
|
In file included from src\defines.h:372,
from src\main.cpp:18:
.pio\libdeps\nanorp2040connect\WiFiWebServer\src/WiFiWebServer.h:130:4: warning: #warning Use WiFiNINA from WiFiWebServer [-Wcpp]
130 | #warning Use WiFiNINA from WiFiWebServer
| ^~~~~~~
In file included from src\defines.h:372,
from src\main.cpp:18:
.pio\libdeps\nanorp2040connect\WiFiWebServer\src/WiFiWebServer.h:157:4: warning: #warning SENDCONTENT_P_BUFFER_SZ using default 4 Kbytes [-Wcpp]
157 | #warning SENDCONTENT_P_BUFFER_SZ using default 4 Kbytes
| ^~~~~~~
In file included from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/mbed/platform/include/platform/platform.h:26,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/mbed/platform/include/platform/FileHandle.h:25,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/macros.h:41,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\variants\NANO_RP2040_CONNECT/pins_arduino.h:2,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/Arduino.h:76,
from .pio\libdeps\nanorp2040connect\WiFi101\src\utility/WiFiSocket.h:28,
from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFiClient.cpp:20:
C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/mbed/platform/include/platform/mbed_retarget.h:742:9: error: conflicting declaration of C function 'int close(int)'
742 | int close(int fildes);
| ^~~~~
In file included from .pio\libdeps\nanorp2040connect\WiFi101\src\utility/WiFiSocket.h:24,
from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFiClient.cpp:20:
.pio\libdeps\nanorp2040connect\WiFi101\src/socket/include/socket.h:1839:15: note: previous declaration 'sint8 close(SOCKET)'
1839 | NMI_API sint8 close(SOCKET sock);
| ^~~~~
In file included from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/mbed/platform/include/platform/platform.h:26,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/mbed/platform/include/platform/FileHandle.h:25,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/macros.h:41,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\variants\NANO_RP2040_CONNECT/pins_arduino.h:2,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/Arduino.h:76,
from .pio\libdeps\nanorp2040connect\WiFi101\src\utility/WiFiSocket.h:28,
from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFiUdp.cpp:22:
C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/mbed/platform/include/platform/mbed_retarget.h:742:9: error: conflicting declaration of C function 'int close(int)'
742 | int close(int fildes);
| ^~~~~
In file included from .pio\libdeps\nanorp2040connect\WiFi101\src\utility/WiFiSocket.h:24,
from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFiUdp.cpp:22:
.pio\libdeps\nanorp2040connect\WiFi101\src/socket/include/socket.h:1839:15: note: previous declaration 'sint8 close(SOCKET)'
1839 | NMI_API sint8 close(SOCKET sock);
| ^~~~~
In file included from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFiClient.h:28,
from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFi101.h:35,
from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFiMDNSResponder.h:27,
from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFiMDNSResponder.cpp:32:
.pio\libdeps\nanorp2040connect\WiFi101\src\socket/include/socket.h:1839:15: error: conflicting declaration of C function 'sint8 close(SOCKET)'
1839 | NMI_API sint8 close(SOCKET sock);
| ^~~~~
In file included from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/mbed/platform/include/platform/platform.h:26,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/mbed/platform/include/platform/FileHandle.h:25,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/macros.h:41,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\variants\NANO_RP2040_CONNECT/pins_arduino.h:2,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/Arduino.h:76,
from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFiMDNSResponder.cpp:31:
C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/mbed/platform/include/platform/mbed_retarget.h:742:9: note: previous declaration 'int close(int)'
742 | int close(int fildes);
| ^~~~~
.pio\libdeps\nanorp2040connect\WiFi101\src\WiFiMDNSResponder.cpp: In member function 'bool WiFiMDNSResponder::parseRequest()':
.pio\libdeps\nanorp2040connect\WiFi101\src\WiFiMDNSResponder.cpp:141:13: warning: variable length array 'request' is used [-Wvla]
141 | uint8_t request[minimumExpectedRequestLength];
| ^~~~~~~
.pio\libdeps\nanorp2040connect\WiFi101\src\WiFiMDNSResponder.cpp: In member function 'void WiFiMDNSResponder::replyToRequest()':
.pio\libdeps\nanorp2040connect\WiFi101\src\WiFiMDNSResponder.cpp:188:11: warning: variable length array 'response' is used [-Wvla]
188 | uint8_t response[responseSize];
| ^~~~~~~~
In file included from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFiClient.h:28,
from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFiSSLClient.h:23,
from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFiSSLClient.cpp:20:
.pio\libdeps\nanorp2040connect\WiFi101\src\socket/include/socket.h:1839:15: error: conflicting declaration of C function 'sint8 close(SOCKET)'
1839 | NMI_API sint8 close(SOCKET sock);
| ^~~~~
In file included from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/mbed/platform/include/platform/platform.h:26,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/mbed/platform/include/platform/FileHandle.h:25,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/macros.h:41,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\variants\NANO_RP2040_CONNECT/pins_arduino.h:2,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/Arduino.h:76,
from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFiClient.h:23,
from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFiSSLClient.h:23,
from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFiSSLClient.cpp:20:
C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/mbed/platform/include/platform/mbed_retarget.h:742:9: note: previous declaration 'int close(int)'
742 | int close(int fildes);
| ^~~~~
In file included from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/mbed/platform/include/platform/platform.h:26,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/mbed/platform/include/platform/FileHandle.h:25,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/macros.h:41,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\variants\NANO_RP2040_CONNECT/pins_arduino.h:2,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/Arduino.h:76,
from .pio\libdeps\nanorp2040connect\WiFi101\src\utility/WiFiSocket.h:28,
from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFiServer.cpp:20:
C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/mbed/platform/include/platform/mbed_retarget.h:742:9: error: conflicting declaration of C function 'int close(int)'
742 | int close(int fildes);
| ^~~~~
In file included from .pio\libdeps\nanorp2040connect\WiFi101\src\utility/WiFiSocket.h:24,
from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFiServer.cpp:20:
.pio\libdeps\nanorp2040connect\WiFi101\src/socket/include/socket.h:1839:15: note: previous declaration 'sint8 close(SOCKET)'
1839 | NMI_API sint8 close(SOCKET sock);
| ^~~~~
*** [.pio\build\nanorp2040connect\libfb9\WiFi101\WiFiClient.cpp.o] Error 1
*** [.pio\build\nanorp2040connect\libfb9\WiFi101\WiFiSSLClient.cpp.o] Error 1
*** [.pio\build\nanorp2040connect\libfb9\WiFi101\WiFiMDNSResponder.cpp.o] Error 1
In file included from .pio\libdeps\nanorp2040connect\WiFiWebServer\src/WiFiWebServer.h:411,
from src\defines.h:372,
from src\main.cpp:18:
.pio\libdeps\nanorp2040connect\WiFiWebServer\src/Parsing-impl.h: In member function 'bool WiFiWebServer::_parseForm(WiFiClient&, const arduino::String&, uint32_t)':
.pio\libdeps\nanorp2040connect\WiFiWebServer\src/Parsing-impl.h:896:23: warning: variable length array 'endBuf' is used [-Wvla]
896 | uint8_t endBuf[boundary.length()];
| ^~~~~~
*** [.pio\build\nanorp2040connect\libfb9\WiFi101\WiFiUdp.cpp.o] Error 1
*** [.pio\build\nanorp2040connect\libfb9\WiFi101\WiFiServer.cpp.o] Error 1
In file included from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/mbed/platform/include/platform/platform.h:26,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/mbed/platform/include/platform/FileHandle.h:25,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/macros.h:41,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\variants\NANO_RP2040_CONNECT/pins_arduino.h:2,
from C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/Arduino.h:76,
from .pio\libdeps\nanorp2040connect\WiFi101\src\utility/WiFiSocket.h:28,
from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFi.cpp:36:
C:\Users\Eric\.platformio\packages\framework-arduino-mbed\cores\arduino/mbed/platform/include/platform/mbed_retarget.h:742:9: error: conflicting declaration of C function 'int close(int)'
742 | int close(int fildes);
| ^~~~~
In file included from .pio\libdeps\nanorp2040connect\WiFi101\src\utility/WiFiSocket.h:24,
from .pio\libdeps\nanorp2040connect\WiFi101\src\WiFi.cpp:36:
.pio\libdeps\nanorp2040connect\WiFi101\src/socket/include/socket.h:1839:15: note: previous declaration 'sint8 close(SOCKET)'
1839 | NMI_API sint8 close(SOCKET sock);
| ^~~~~
*** [.pio\build\nanorp2040connect\libfb9\WiFi101\WiFi.cpp.o] Error 1
================================================================================================ [FAILED] Took 11.55 seconds ================================================================================================
Environment Status Duration
----------------- -------- ------------
nanorp2040connect FAILED 00:00:11.553