Problem building Firmware for DUET Wifi
-
Hello,
I'm still struggling to build the firmware. I try to follow the instructions. I can successfully build CoreNG, FreeRTOS and RRFLibraries. After having built all those I get stuck building RepRapFirmware (Duet2_RTOS) with the first error saying:
Invoking: Cross G++ Compiler
arm-none-eabi-g++ -D__SAM4E8E__ -DRTOS -DDUET_NG -D_XOPEN_SOURCE -I"C:\Eclipse\Firmware\CoreNG\cores\arduino" -I"C:\Eclipse\Firmware\CoreNG\libraries\Flash" -I"C:\Eclipse\Firmware\CoreNG\libraries\SharedSpi" -I"C:\Eclipse\Firmware\CoreNG\libraries\Storage" -I"C:\Eclipse\Firmware\CoreNG\libraries\Wire" -I"C:\Eclipse\Firmware\CoreNG\asf" -I"C:\Eclipse\Firmware\CoreNG\asf\common\utils" -I"C:\Eclipse\Firmware\CoreNG\asf\common\services\clock" -I"C:\Eclipse\Firmware\CoreNG\asf\common\services\ioport" -I"C:\Eclipse\Firmware\CoreNG\asf\sam\drivers" -I"C:\Eclipse\Firmware\CoreNG\asf\sam\services\flash_efc" -I"C:\Eclipse\Firmware\CoreNG\asf\sam\utils" -I"C:\Eclipse\Firmware\CoreNG\asf\sam\utils\cmsis\sam4e\include" -I"C:\Eclipse\Firmware\CoreNG\asf\sam\utils\header_files" -I"C:\Eclipse\Firmware\CoreNG\asf\sam\utils\preprocessor" -I"C:\Eclipse\Firmware\CoreNG\asf\thirdparty\CMSIS\Include" -I"C:\Eclipse\Firmware\CoreNG\variants\duetNG" -I"C:\Eclipse\Firmware\RepRapFirmware\src" -I"C:\Eclipse\Firmware\RepRapFirmware\src\DuetNG" -I"C:\Eclipse\Firmware\RepRapFirmware\src\Networking" -I"C:\Eclipse\Firmware\DuetWiFiSocketServer\src\include" -I"C:\Eclipse\Firmware\FreeRTOS\src\include" -I"C:\Eclipse\Firmware\FreeRTOS\src\portable\GCC\ARM_CM4F" -I"C:\Eclipse\Firmware\RRFLibraries\src" -O2 -Wall -c -std=gnu++17 -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -fno-threadsafe-statics -fno-rtti -fno-exceptions -nostdlib -Wdouble-promotion -fsingle-precision-constant "-Wa,-ahl=DriverMode.s" -MMD -MP -MF"src/Movement/StepperDrivers/DriverMode.d" -MT"src/Movement/StepperDrivers/DriverMode.o" -o "src/Movement/StepperDrivers/DriverMode.o" "../src/Movement/StepperDrivers/DriverMode.cpp"
In file included from ../src/Networking/ESP8266WiFi/WiFiSocket.cpp:10:0:
../src/Networking/ESP8266WiFi/WiFiInterface.h:131:22: error: 'NumWiFiTcpSockets' was not declared in this scope
WiFiSocket *sockets[NumWiFiTcpSockets];
^~~~~~~~~~~~~~~~~Any help is greatly appreciated!
-
Looks like you haven't added project DuetWiFiSocketServer to your workspace, or you have the wrong version. File MessageFormats.h from that project supplies that definition.
-
Thanks, I was indeed on master with the DuetWiFiSocketServer. With dev it resolved this problem (now having some linking problems). Just to be sure I'm using the following branches:
CoreNG: master
FreeRTOS: master
RRFLibraries: master
DuetWiFiSocketServer: dev
RepRapFirmware: v2-dev -
Yes that's correct.
-
Finally I could build the firmware. However my repositories were pretty messy by playing around so much. Therefore I decided to build fresh with all the right versions. Unfortunately now I'm hitting a wall with:
Building file: ../src/FilamentMonitors/LaserFilamentMonitor.cpp
../src/GCodes/GCodes.cpp: In member function 'void GCodes::Init()':
../src/GCodes/GCodes.cpp:190:20: error: 'class UARTClass' has no member named 'SetInterruptCallback'; did you mean 'setInterruptPriority'?
SERIAL_AUX_DEVICE.SetInterruptCallback(GCodes::CommandEmergencyStop);
^~~~~~~~~~~~~~~~~~~~
setInterruptPriorityI would prefer not to go around and first build the wrong branches to get it running again...
-
Check out the latest CoreNG source code. That definition is in a file that I committed yesterday. I also committed more changes to RepRapFirmware and FreeRTOS.
-
Thanks, now it is building again!
My findings during the build process for the Duet Wifi were:
- Getting the right branches (and matching versions):
CoreNG: master
FreeRTOS: master
RRFLibraries: master
DuetWiFiSocketServer: dev
RepRapFirmware: v2-devadditionally I needed (not mentioned in the howto):
CoreESP8266: dev-
For the DuetWifiSocketServer and the CoreESP8266 I needed the xtensa-lx106-elf-gcc cross-compiler. I found in a project file that you used one that came with an Arduino package. So I also installed the Arduino Package ESP8266 which provided the corresponding compiler and set the paths correspondingly.
-
I needed to manually add some paths when files could not be found.
Maybe this info is useful for someone trying to do the same.
-
@mwinterm would you be able to provide a link for the xtensa-lx106-elf-gcc cross-compiler? This is the only remaining issue I cannot seem to solve and I have tried downloading from several sources but they do not seem to work. It would really appreciate if you could provide some information on this.