Open csmith608 opened 3 months ago
This builds on-top of arduino-cli
. You should install that, and make sure you have the board packages installed.
This repo will work you through the setup: https://github.com/fprime-community/fprime-baremetal-reference
@LeStarch I have the arduino-cli installed and working as well as the rp2040 board package.
@csmith608 is arduino-cli on your PATH?
(fprime-venv) your-user@cs-mbp-2022 led-blinker % arduino-cli version
arduino-cli Version: 0.35.3 Commit: 95cfd654 Date: 2024-02-19T13:24:24Z
(fprime-venv) your-user@cs-mbp-2022 led-blinker % ls /Users/your-user/led-blinker/fprime-arduino/cmake/toolchain
ATmega128.cmake featherrp2040rfm.cmake support teensy41.cmake
esp32.cmake rpipico.cmake teensy32.cmake thingplusrp2040.cmake
featherM0.cmake rpipicow.cmake teensy40.cmake
There is a bug in the arduino-cli-wrapper package TypeError: 'type' object is not subscriptable
caused by assemble_output_data(test_files: dict[Source, Path]
that should read assemble_output_data(test_files: Dict[Source, Path]
.
I also notice you are in Python3.8. This may have worked in newer versions of Python.
I'd recommend:
/Users/your-user/fprime-venv/lib/python3.8/site-packages/arduino_cli_cmake_wrapper/cli.py
on line 193
to capitalize the word dict
from the text abovepurge
and generate
. If this fixes the problem, then we can patch that script. If more problems abound, run fprime-util version-check
so we can try to reproduce.
The fixed that, then it complained about the TcpClient send port, so I changed it from
@ Takes data to transmit out the UART device
guarded input port send: Drv.ByteStreamSend
To
@ Takes data to transmit out the UART device
guarded input port $send: Drv.ByteStreamSend
I don't think I can make the PR for the arduino-cli-cmake-wrapper, but I could for the TcpClient It has now successfully built
I fixed the $send
port in TcpClient with this commit
The fprime-arduino devel branch should build for the RP2040 now.
fprime-util generate fails with logs:
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ fprime-util generate
[INFO] Generating build directory at: /home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow
[INFO] Using toolchain file /home/user/Desktop/led-blinker/fprime-arduino/cmake/toolchain/rpipicow.cmake for platform default
-- The C compiler identification is GNU 12.3.0
-- The CXX compiler identification is GNU 12.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/arm-none-eabi-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/arm-none-eabi-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- [python3] python3 found at: /home/user/Desktop/led-blinker/fprime-venv/bin/python3
-- [fpp-tools] fpp-depend found at: /home/user/Desktop/led-blinker/fprime-venv/bin/fpp-depend
-- [fpp-tools] fpp-to-xml found at: /home/user/Desktop/led-blinker/fprime-venv/bin/fpp-to-xml
-- [fpp-tools] fpp-to-cpp found at: /home/user/Desktop/led-blinker/fprime-venv/bin/fpp-to-cpp
-- [fpp-tools] fpp-locate-defs found at: /home/user/Desktop/led-blinker/fprime-venv/bin/fpp-locate-defs
-- [FPRIME] Module locations: /home/user/Desktop/led-blinker/fprime;/home/user/Desktop/led-blinker/fprime-arduino;/home/user/Desktop/led-blinker
-- [FPRIME] Configuration module: /home/user/Desktop/led-blinker/fprime/config
-- [FPRIME] Installation directory: /home/user/Desktop/led-blinker/build-artifacts
-- Target build toolchain/platform: rpipicow/ArduinoFw
-- Including /home/user/Desktop/led-blinker/fprime-arduino/cmake/platform/ArduinoFw.cmake
-- [fprime-arduino] Including Types Directory: /home/user/Desktop/led-blinker/fprime-arduino/cmake/platform/types/arm
-- [LIBRARY] Including library fprime-arduino at /home/user/Desktop/led-blinker/fprime-arduino
-- [sub-build] Performing sub-build: info-cache
-- [sub-build] Generating: info-cache with target/fpp_locs;target/fpp_depend
CMake Error at fprime/cmake/utilities.cmake:586 (message):
-- Configuring incomplete, errors occurred!
[sub-build] Failed to generate: info-cache:
See also "/home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/CMakeFiles/CMakeOutput.log".
See also "/home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/CMakeFiles/CMakeError.log".
[ERROR] FauxBuildException occurred. arduino-cli failed with return code:
1
/tmp/tmpe33adt3t/tmpe33adt3t.ino:1:10: fatal error: TimeLib.h: No such
file or directory
1 | #include <TimeLib.h>
| ^~~~~~~~~~~
compilation terminated.
Error during build: exit status 1
Traceback (most recent call last):
File "/home/user/Desktop/led-blinker/fprime-venv/bin/arduino-cli-wrapper", line 8, in <module>
sys.exit(main())
File "/home/user/Desktop/led-blinker/fprime-venv/lib/python3.10/site-packages/arduino_cli_cmake_wrapper/cli.py", line 235, in main
test_file_map, stdout, stderr = build(arguments.board, arguments.libraries, [])
File "/home/user/Desktop/led-blinker/fprime-venv/lib/python3.10/site-packages/arduino_cli_cmake_wrapper/builder.py", line 103, in build
stdout, stderr = compile_sketch(board, temporary_path, args)
File "/home/user/Desktop/led-blinker/fprime-venv/lib/python3.10/site-packages/arduino_cli_cmake_wrapper/builder.py", line 83, in compile_sketch
raise FauxBuildException(f"arduino-cli failed with return code: {process.returncode}", process.stderr)
arduino_cli_cmake_wrapper.types.FauxBuildException: arduino-cli failed with
return code: 1
/tmp/tmpe33adt3t/tmpe33adt3t.ino:1:10: fatal error: TimeLib.h: No such
file or directory
1 | #include <TimeLib.h>
| ^~~~~~~~~~~
compilation terminated.
Error during build: exit status 1
CMake Error at
fprime-arduino/cmake/toolchain/support/arduino-wrapper.cmake:72 (message):
Could not run 'arduino-cli' please install 'arduino-cli' and board
'rp2040:rp2040:rpipicow'.
Call Stack (most recent call first):
fprime-arduino/cmake/toolchain/support/arduino-support.cmake:117 (run_arduino_wrapper)
fprime-arduino/cmake/toolchain/support/arduino-support.cmake:178 (setup_arduino_libraries)
LedBlinker/CMakeLists.txt:27 (finalize_arduino_executable)
Call Stack (most recent call first):
fprime/cmake/sub-build/sub-build.cmake:39 (execute_process_or_fail)
fprime/cmake/FPrime.cmake:152 (run_sub_build)
fprime/cmake/FPrime.cmake:221 (fprime_initialize_build_system)
CMakeLists.txt:13 (include)
[ERROR] CMake erred with return code 1. Partial build cache remains. Run purge to clean-up.
fprime-util version-check:
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ fprime-util version-check
Operating System: Linux
CPU Architecture: x86_64
Platform: Linux-6.5.0-41-generic-x86_64-with-glibc2.35
Python version: 3.10.12
CMake version: 3.22.1
Pip version: 24.1.2
Pip packages:
fprime-tools==3.4.4
fprime-gds==3.4.3
fprime-fpp-*==2.1.0a3
arduino-cli version:
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ arduino-cli version
arduino-cli Version: 1.0.2 Commit: 33dfa8e8 Date: 2024-07-02T12:53:01Z
Does anyone knows how to fix it or what could be the reason?
fprime-util generate fails with logs:
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ fprime-util generate [INFO] Generating build directory at: /home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow [INFO] Using toolchain file /home/user/Desktop/led-blinker/fprime-arduino/cmake/toolchain/rpipicow.cmake for platform default -- The C compiler identification is GNU 12.3.0 -- The CXX compiler identification is GNU 12.3.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/arm-none-eabi-gcc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /home/user/.arduino15/packages/rp2040/tools/pqt-gcc/2.2.0-d04e724/bin/arm-none-eabi-g++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- [python3] python3 found at: /home/user/Desktop/led-blinker/fprime-venv/bin/python3 -- [fpp-tools] fpp-depend found at: /home/user/Desktop/led-blinker/fprime-venv/bin/fpp-depend -- [fpp-tools] fpp-to-xml found at: /home/user/Desktop/led-blinker/fprime-venv/bin/fpp-to-xml -- [fpp-tools] fpp-to-cpp found at: /home/user/Desktop/led-blinker/fprime-venv/bin/fpp-to-cpp -- [fpp-tools] fpp-locate-defs found at: /home/user/Desktop/led-blinker/fprime-venv/bin/fpp-locate-defs -- [FPRIME] Module locations: /home/user/Desktop/led-blinker/fprime;/home/user/Desktop/led-blinker/fprime-arduino;/home/user/Desktop/led-blinker -- [FPRIME] Configuration module: /home/user/Desktop/led-blinker/fprime/config -- [FPRIME] Installation directory: /home/user/Desktop/led-blinker/build-artifacts -- Target build toolchain/platform: rpipicow/ArduinoFw -- Including /home/user/Desktop/led-blinker/fprime-arduino/cmake/platform/ArduinoFw.cmake -- [fprime-arduino] Including Types Directory: /home/user/Desktop/led-blinker/fprime-arduino/cmake/platform/types/arm -- [LIBRARY] Including library fprime-arduino at /home/user/Desktop/led-blinker/fprime-arduino -- [sub-build] Performing sub-build: info-cache -- [sub-build] Generating: info-cache with target/fpp_locs;target/fpp_depend CMake Error at fprime/cmake/utilities.cmake:586 (message): -- Configuring incomplete, errors occurred! [sub-build] Failed to generate: info-cache: See also "/home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/CMakeFiles/CMakeOutput.log". See also "/home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow/CMakeFiles/CMakeError.log". [ERROR] FauxBuildException occurred. arduino-cli failed with return code: 1 /tmp/tmpe33adt3t/tmpe33adt3t.ino:1:10: fatal error: TimeLib.h: No such file or directory 1 | #include <TimeLib.h> | ^~~~~~~~~~~ compilation terminated. Error during build: exit status 1 Traceback (most recent call last): File "/home/user/Desktop/led-blinker/fprime-venv/bin/arduino-cli-wrapper", line 8, in <module> sys.exit(main()) File "/home/user/Desktop/led-blinker/fprime-venv/lib/python3.10/site-packages/arduino_cli_cmake_wrapper/cli.py", line 235, in main test_file_map, stdout, stderr = build(arguments.board, arguments.libraries, []) File "/home/user/Desktop/led-blinker/fprime-venv/lib/python3.10/site-packages/arduino_cli_cmake_wrapper/builder.py", line 103, in build stdout, stderr = compile_sketch(board, temporary_path, args) File "/home/user/Desktop/led-blinker/fprime-venv/lib/python3.10/site-packages/arduino_cli_cmake_wrapper/builder.py", line 83, in compile_sketch raise FauxBuildException(f"arduino-cli failed with return code: {process.returncode}", process.stderr) arduino_cli_cmake_wrapper.types.FauxBuildException: arduino-cli failed with return code: 1 /tmp/tmpe33adt3t/tmpe33adt3t.ino:1:10: fatal error: TimeLib.h: No such file or directory 1 | #include <TimeLib.h> | ^~~~~~~~~~~ compilation terminated. Error during build: exit status 1 CMake Error at fprime-arduino/cmake/toolchain/support/arduino-wrapper.cmake:72 (message): Could not run 'arduino-cli' please install 'arduino-cli' and board 'rp2040:rp2040:rpipicow'. Call Stack (most recent call first): fprime-arduino/cmake/toolchain/support/arduino-support.cmake:117 (run_arduino_wrapper) fprime-arduino/cmake/toolchain/support/arduino-support.cmake:178 (setup_arduino_libraries) LedBlinker/CMakeLists.txt:27 (finalize_arduino_executable) Call Stack (most recent call first): fprime/cmake/sub-build/sub-build.cmake:39 (execute_process_or_fail) fprime/cmake/FPrime.cmake:152 (run_sub_build) fprime/cmake/FPrime.cmake:221 (fprime_initialize_build_system) CMakeLists.txt:13 (include) [ERROR] CMake erred with return code 1. Partial build cache remains. Run purge to clean-up.
fprime-util version-check:
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ fprime-util version-check Operating System: Linux CPU Architecture: x86_64 Platform: Linux-6.5.0-41-generic-x86_64-with-glibc2.35 Python version: 3.10.12 CMake version: 3.22.1 Pip version: 24.1.2 Pip packages: fprime-tools==3.4.4 fprime-gds==3.4.3 fprime-fpp-*==2.1.0a3
arduino-cli version:
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ arduino-cli version arduino-cli Version: 1.0.2 Commit: 33dfa8e8 Date: 2024-07-02T12:53:01Z
Does anyone knows how to fix it or what could be the reason?
Did you run:
arduino-cli lib install Time
Did you run:
arduino-cli lib install Time
@ethancheez thank you, it helped. Generate was successfully finished, but the next step (build) fails:
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ fprime-util build
[ 0%] Built target version
[ 0%] Building CXX object LedBlinker/CMakeFiles/fprime_arduino_patcher.dir/__/fprime-arduino/cmake/toolchain/support/sources/extras.cpp.obj
[ 1%] Linking CXX static library ../lib/rpipicow/libfprime_arduino_patcher.a
[ 1%] Built target fprime_arduino_patcher
[ 1%] Generating ProcTypeEnumAi.xml
[ 2%] Generating FppConstantsAc.cpp, FppConstantsAc.hpp, ProcTypeEnumAc.cpp, ProcTypeEnumAc.hpp
[ 2%] Building CXX object config/CMakeFiles/config.dir/FppConstantsAc.cpp.obj
[ 2%] Building CXX object config/CMakeFiles/config.dir/ProcTypeEnumAc.cpp.obj
[ 2%] Linking CXX static library ../lib/rpipicow/libconfig.a
[ 2%] Built target config
[ 2%] Building CXX object F-Prime/Fw/Cfg/CMakeFiles/Fw_Cfg.dir/ConfigCheck.cpp.obj
[ 2%] Linking CXX static library ../../../lib/rpipicow/libFw_Cfg.a
[ 2%] Built target Fw_Cfg
[ 2%] Generating ActiveEnumAi.xml, DeserialStatusEnumAi.xml, DirectionEnumAi.xml, EnabledEnumAi.xml, HealthEnumAi.xml, LogicEnumAi.xml, OnEnumAi.xml, OpenEnumAi.xml, SerialStatusEnumAi.xml, SuccessEnumAi.xml
[ 2%] Generating ActiveEnumAc.cpp, ActiveEnumAc.hpp, DeserialStatusEnumAc.cpp, DeserialStatusEnumAc.hpp, DirectionEnumAc.cpp, DirectionEnumAc.hpp, EnabledEnumAc.cpp, EnabledEnumAc.hpp, HealthEnumAc.cpp, HealthEnumAc.hpp, LogicEnumAc.cpp, LogicEnumAc.hpp, OnEnumAc.cpp, OnEnumAc.hpp, OpenEnumAc.cpp, OpenEnumAc.hpp, SerialStatusEnumAc.cpp, SerialStatusEnumAc.hpp, SuccessEnumAc.cpp, SuccessEnumAc.hpp
[ 2%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/Assert.cpp.obj
[ 3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/String.cpp.obj
[ 3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/InternalInterfaceString.cpp.obj
[ 3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/MallocAllocator.cpp.obj
[ 3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/MemAllocator.cpp.obj
[ 3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/PolyType.cpp.obj
[ 4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/SerialBuffer.cpp.obj
[ 4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/Serializable.cpp.obj
[ 4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/StringType.cpp.obj
[ 4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/StringUtils.cpp.obj
[ 4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/ActiveEnumAc.cpp.obj
[ 5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/DeserialStatusEnumAc.cpp.obj
[ 5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/DirectionEnumAc.cpp.obj
[ 5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/EnabledEnumAc.cpp.obj
[ 5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/HealthEnumAc.cpp.obj
[ 5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/LogicEnumAc.cpp.obj
[ 6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/OnEnumAc.cpp.obj
[ 6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/OpenEnumAc.cpp.obj
[ 6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/SerialStatusEnumAc.cpp.obj
[ 6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/SuccessEnumAc.cpp.obj
[ 6%] Linking CXX static library ../../../lib/rpipicow/libFw_Types.a
[ 6%] Built target Fw_Types
[ 6%] Building CXX object F-Prime/Fw/Logger/CMakeFiles/Fw_Logger.dir/Logger.cpp.obj
[ 6%] Building CXX object F-Prime/Fw/Logger/CMakeFiles/Fw_Logger.dir/LogAssert.cpp.obj
[ 6%] Linking CXX static library ../../../lib/rpipicow/libFw_Logger.a
[ 6%] Built target Fw_Logger
[ 7%] Building CXX object F-Prime/Fw/Obj/CMakeFiles/Fw_Obj.dir/ObjBase.cpp.obj
[ 7%] Building CXX object F-Prime/Fw/Obj/CMakeFiles/Fw_Obj.dir/SimpleObjRegistry.cpp.obj
[ 7%] Linking CXX static library ../../../lib/rpipicow/libFw_Obj.a
[ 7%] Built target Fw_Obj
[ 7%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/InputPortBase.cpp.obj
[ 7%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/InputSerializePort.cpp.obj
[ 7%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/OutputPortBase.cpp.obj
[ 8%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/OutputSerializePort.cpp.obj
[ 8%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/PortBase.cpp.obj
[ 8%] Linking CXX static library ../../../lib/rpipicow/libFw_Port.a
[ 8%] Built target Fw_Port
[ 9%] Generating TimePortAi.xml
[ 9%] Generating TimePortAc.cpp, TimePortAc.hpp
[ 9%] Building CXX object F-Prime/Fw/Time/CMakeFiles/Fw_Time.dir/Time.cpp.obj
[ 9%] Building CXX object F-Prime/Fw/Time/CMakeFiles/Fw_Time.dir/TimePortAc.cpp.obj
[ 9%] Linking CXX static library ../../../lib/rpipicow/libFw_Time.a
[ 9%] Built target Fw_Time
[ 10%] Generating ComPortAi.xml
[ 10%] Generating ComPortAc.cpp, ComPortAc.hpp
[ 10%] Building CXX object F-Prime/Fw/Com/CMakeFiles/Fw_Com.dir/ComPacket.cpp.obj
[ 10%] Building CXX object F-Prime/Fw/Com/CMakeFiles/Fw_Com.dir/ComBuffer.cpp.obj
[ 10%] Building CXX object F-Prime/Fw/Com/CMakeFiles/Fw_Com.dir/ComPortAc.cpp.obj
[ 11%] Linking CXX static library ../../../lib/rpipicow/libFw_Com.a
[ 11%] Built target Fw_Com
[ 12%] Generating TlmGetPortAi.xml, TlmPortAi.xml
[ 12%] Generating TlmGetPortAc.cpp, TlmGetPortAc.hpp, TlmPortAc.cpp, TlmPortAc.hpp
[ 12%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmBuffer.cpp.obj
[ 12%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmPacket.cpp.obj
[ 12%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmString.cpp.obj
[ 13%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmGetPortAc.cpp.obj
[ 13%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmPortAc.cpp.obj
[ 13%] Linking CXX static library ../../../lib/rpipicow/libFw_Tlm.a
[ 13%] Built target Fw_Tlm
[ 13%] Generating LogPortAi.xml, LogSeverityEnumAi.xml, LogTextPortAi.xml
[ 13%] Generating LogPortAc.cpp, LogPortAc.hpp, LogSeverityEnumAc.cpp, LogSeverityEnumAc.hpp, LogTextPortAc.cpp, LogTextPortAc.hpp
[ 13%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogBuffer.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogPacket.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogString.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/TextLogString.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogPortAc.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogSeverityEnumAc.cpp.obj
[ 15%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogTextPortAc.cpp.obj
[ 15%] Linking CXX static library ../../../lib/rpipicow/libFw_Log.a
[ 15%] Built target Fw_Log
[ 16%] Generating CmdPortAi.xml, CmdRegPortAi.xml, CmdResponseEnumAi.xml, CmdResponsePortAi.xml
[ 16%] Generating CmdPortAc.cpp, CmdPortAc.hpp, CmdRegPortAc.cpp, CmdRegPortAc.hpp, CmdResponseEnumAc.cpp, CmdResponseEnumAc.hpp, CmdResponsePortAc.cpp, CmdResponsePortAc.hpp
[ 16%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdArgBuffer.cpp.obj
[ 16%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdPacket.cpp.obj
[ 16%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdString.cpp.obj
[ 17%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdPortAc.cpp.obj
[ 17%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdRegPortAc.cpp.obj
[ 17%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdResponseEnumAc.cpp.obj
[ 17%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdResponsePortAc.cpp.obj
[ 17%] Linking CXX static library ../../../lib/rpipicow/libFw_Cmd.a
[ 17%] Built target Fw_Cmd
[ 17%] Generating ParamValidEnumAi.xml, PrmGetPortAi.xml, PrmSetPortAi.xml
[ 17%] Generating ParamValidEnumAc.cpp, ParamValidEnumAc.hpp, PrmGetPortAc.cpp, PrmGetPortAc.hpp, PrmSetPortAc.cpp, PrmSetPortAc.hpp
[ 17%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/PrmBuffer.cpp.obj
[ 18%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/PrmString.cpp.obj
[ 18%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/ParamValidEnumAc.cpp.obj
[ 18%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/PrmGetPortAc.cpp.obj
[ 18%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/PrmSetPortAc.cpp.obj
[ 18%] Linking CXX static library ../../../lib/rpipicow/libFw_Prm.a
[ 18%] Built target Fw_Prm
[ 18%] Generating BufferGetPortAi.xml, BufferSendPortAi.xml
[ 18%] Generating BufferGetPortAc.cpp, BufferGetPortAc.hpp, BufferSendPortAc.cpp, BufferSendPortAc.hpp
[ 18%] Building CXX object F-Prime/Fw/Buffer/CMakeFiles/Fw_Buffer.dir/Buffer.cpp.obj
[ 19%] Building CXX object F-Prime/Fw/Buffer/CMakeFiles/Fw_Buffer.dir/BufferGetPortAc.cpp.obj
[ 19%] Building CXX object F-Prime/Fw/Buffer/CMakeFiles/Fw_Buffer.dir/BufferSendPortAc.cpp.obj
[ 19%] Linking CXX static library ../../../lib/rpipicow/libFw_Buffer.a
[ 19%] Built target Fw_Buffer
[ 19%] Building CXX object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/libcrc/CRC32.cpp.obj
[ 19%] Building C object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/libcrc/lib_crc.c.obj
cc1: warning: command-line option '-std=c++17' is valid for C++/ObjC++ but not for C
[ 19%] Building CXX object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/HashBufferCommon.cpp.obj
[ 19%] Building CXX object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/HashCommon.cpp.obj
[ 20%] Linking CXX static library ../../../lib/rpipicow/libUtils_Hash.a
[ 20%] Built target Utils_Hash
[ 21%] Generating DpGetPortAi.xml, DpRequestPortAi.xml, DpResponsePortAi.xml, DpSendPortAi.xml, DpStateEnumAi.xml
[ 21%] Generating DpGetPortAc.cpp, DpGetPortAc.hpp, DpRequestPortAc.cpp, DpRequestPortAc.hpp, DpResponsePortAc.cpp, DpResponsePortAc.hpp, DpSendPortAc.cpp, DpSendPortAc.hpp, DpStateEnumAc.cpp, DpStateEnumAc.hpp
[ 21%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpContainer.cpp.obj
[ 21%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpGetPortAc.cpp.obj
[ 21%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpRequestPortAc.cpp.obj
[ 22%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpResponsePortAc.cpp.obj
[ 22%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpSendPortAc.cpp.obj
[ 22%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpStateEnumAc.cpp.obj
[ 22%] Linking CXX static library ../../../lib/rpipicow/libFw_Dp.a
[ 22%] Built target Fw_Dp
[ 22%] Building CXX object F-Prime/Fw/Comp/CMakeFiles/Fw_Comp.dir/PassiveComponentBase.cpp.obj
[ 22%] Linking CXX static library ../../../lib/rpipicow/libFw_Comp.a
[ 22%] Built target Fw_Comp
[ 22%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/TaskCommon.cpp.obj
[ 22%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/TaskString.cpp.obj
[ 22%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/QueueCommon.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/QueueString.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/Queue.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/Task.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/File.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/FileSystem.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/IntervalTimer.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/Mutex.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Pthreads/BufferQueueCommon.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Pthreads/FIFOBufferQueue.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/IntervalTimer.cpp.obj
cc1: warning: command-line option '-std=gnu++17' is valid for C++/ObjC++ but not for C
In file included from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/Arduino.h:121,
from /home/user/Desktop/led-blinker/fprime-arduino/cmake/platform/FprimeArduino.hpp:9,
from /home/user/Desktop/led-blinker/fprime-arduino/Arduino/Os/IntervalTimer.cpp:7:
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:48: warning: multi-character character constant [-Wmultichar]
189 | return (us * (clock_get_hz(clk_sys) / 1'000'000));
| ^~~~~
In file included from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/ArduinoAPI.h:39,
from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/ArduinoAPI.h:2,
from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/Arduino.h:28:
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h: In function 'bool arduino::isAscii(int)':
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h:66:12: error: 'isascii' was not declared in this scope; did you mean 'isAscii'?
66 | return ( isascii (c) == 0 ? false : true);
| ^~~~~~~
| isAscii
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h: In function 'int arduino::toAscii(int)':
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h:148:10: error: 'toascii' was not declared in this scope; did you mean 'toAscii'?
148 | return toascii (c);
| ^~~~~~~
| toAscii
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h: In static member function 'static int RP2040::usToPIOCycles(int)':
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:48: error: expected ')' before '\x303030'
189 | return (us * (clock_get_hz(clk_sys) / 1'000'000));
| ^~~~~
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:22: note: to match this '('
189 | return (us * (clock_get_hz(clk_sys) / 1'000'000));
| ^
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:58: error: expected ')' before ';' token
189 | return (us * (clock_get_hz(clk_sys) / 1'000'000));
| ^
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:16: note: to match this '('
189 | return (us * (clock_get_hz(clk_sys) / 1'000'000));
| ^
gmake[2]: *** [Arduino/Os/CMakeFiles/Arduino_Os.dir/build.make:244: Arduino/Os/CMakeFiles/Arduino_Os.dir/IntervalTimer.cpp.obj] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:4852: Arduino/Os/CMakeFiles/Arduino_Os.dir/all] Error 2
gmake: *** [Makefile:136: all] Error 2
[ERROR] CMake erred with return code 2
What am I missing now? And, by the way, there weren't in instruction this command "arduino-cli lib install Time" or I have missed something?
And, by the way, there weren't in instruction this command "arduino-cli lib install Time" or I have missed something?
The instructions for that are here.
As for the build error, it is caused by 1'000'000
which is a syntax error in the RP2040 package itself when using the standard lower than C++17
(I believe fprime uses C++11
by default). I should have forced the compiler to use C++17
standard here, but it looks like it may still be using an older standard.
When you run fprime-util generate rpipicow
, there should be something at the beginning that looks like this:
-- The C compiler identification is GNU 12.3.0
-- The CXX compiler identification is GNU 12.3.0
What version is yours reporting?
The instructions for that are here.
Thank you. I have used this one and it seems to be deprecated.
What version is yours reporting?
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ fprime-util generate
[INFO] Generating build directory at: /home/user/Desktop/led-blinker/build-fprime-automatic-rpipicow
[INFO] Using toolchain file /home/user/Desktop/led-blinker/fprime-arduino/cmake/toolchain/rpipicow.cmake for platform default
-- The C compiler identification is GNU 12.3.0
-- The CXX compiler identification is GNU 12.3.0
The suspicious is the following warning during build:
cc1: warning: command-line option '-std=gnu++17' is valid for C++/ObjC++ but not for C
What version is yours reporting?
Mine is also reporting GNU 12.3.0.
The suspicious is the following warning during build:
cc1: warning: command-line option '-std=gnu++17' is valid for C++/ObjC++ but not for C
I am also getting this, but mine successfully builds. I will try some tests to see if I can reproduce your error.
I will try some tests to see if I can reproduce your error.
Okay. I will be waiting for your feedback. I'm ready to give necessary information for you to reproduce the problem.
Can you show me your output of pip list | grep fprime
, cmake --version
, and g++ --version
? And also which branches are you on for both fprime
and fprime-arduino
?
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ pip list | grep fprime
fprime-fpl-convert-xml 1.0.3
fprime-fpl-extract-xml 1.0.3
fprime-fpl-layout 1.0.3
fprime-fpl-write-pic 1.0.3
fprime-fpp-check 2.1.0a3
fprime-fpp-depend 2.1.0a3
fprime-fpp-filenames 2.1.0a3
fprime-fpp-format 2.1.0a3
fprime-fpp-from-xml 2.1.0a3
fprime-fpp-locate-defs 2.1.0a3
fprime-fpp-locate-uses 2.1.0a3
fprime-fpp-syntax 2.1.0a3
fprime-fpp-to-cpp 2.1.0a3
fprime-fpp-to-json 2.1.0a3
fprime-fpp-to-xml 2.1.0a3
fprime-gds 3.4.3
fprime-tools 3.4.4
fprime-visual 1.0.2
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ cmake --version
cmake version 3.22.1
CMake suite maintained and supported by Kitware (kitware.com/cmake).
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ g++ --version
g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker/fprime-arduino$ git show-branch
* [devel] Fix $send escape for TcpClient
! [main] fprime v3.4.3 support
--
* [devel] Fix $send escape for TcpClient
* [devel^] Teensyduino 1.59 now uses C++17 standard
* [devel~2] Ensure data is available in the stream before attempting to allocate/read
- [main] fprime v3.4.3 support
-- [devel~3] bump to fprime v3.4.3
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker/fprime$ git show-branch
[devel] Rename EventsInterface to EventInterface (#2792)
Try out fprime release v3.4.3. In the fprime directory, run git checkout v3.4.3
.
Edit: If that doesn't work, try edit fprime/cmake/settings.cmake
line 16 to:
set(CMAKE_CXX_STANDARD 17)
This is only temporary, trying to see if the rpipicow.cmake
is successfully setting the C++17 standard or not.
Edit 2: You can also try running sudo apt update && sudo apt upgrade -y
. I have a slightly newer version of cmake. The others seem to match.
It seems that amount of errors decreased:
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ fprime-util build
[ 0%] Built target version
[ 0%] Building CXX object LedBlinker/CMakeFiles/fprime_arduino_patcher.dir/__/fprime-arduino/cmake/toolchain/support/sources/extras.cpp.obj
[ 1%] Linking CXX static library ../lib/rpipicow/libfprime_arduino_patcher.a
[ 1%] Built target fprime_arduino_patcher
[ 1%] Generating ProcTypeEnumAi.xml
[ 2%] Generating FppConstantsAc.cpp, FppConstantsAc.hpp, ProcTypeEnumAc.cpp, ProcTypeEnumAc.hpp
[ 2%] Building CXX object config/CMakeFiles/config.dir/FppConstantsAc.cpp.obj
[ 2%] Building CXX object config/CMakeFiles/config.dir/ProcTypeEnumAc.cpp.obj
[ 2%] Linking CXX static library ../lib/rpipicow/libconfig.a
[ 2%] Built target config
[ 2%] Building CXX object F-Prime/Fw/Cfg/CMakeFiles/Fw_Cfg.dir/ConfigCheck.cpp.obj
[ 2%] Linking CXX static library ../../../lib/rpipicow/libFw_Cfg.a
[ 2%] Built target Fw_Cfg
[ 2%] Generating ActiveEnumAi.xml, DeserialStatusEnumAi.xml, DirectionEnumAi.xml, EnabledEnumAi.xml, HealthEnumAi.xml, LogicEnumAi.xml, OnEnumAi.xml, OpenEnumAi.xml, SerialStatusEnumAi.xml, SuccessEnumAi.xml
[ 2%] Generating ActiveEnumAc.cpp, ActiveEnumAc.hpp, DeserialStatusEnumAc.cpp, DeserialStatusEnumAc.hpp, DirectionEnumAc.cpp, DirectionEnumAc.hpp, EnabledEnumAc.cpp, EnabledEnumAc.hpp, HealthEnumAc.cpp, HealthEnumAc.hpp, LogicEnumAc.cpp, LogicEnumAc.hpp, OnEnumAc.cpp, OnEnumAc.hpp, OpenEnumAc.cpp, OpenEnumAc.hpp, SerialStatusEnumAc.cpp, SerialStatusEnumAc.hpp, SuccessEnumAc.cpp, SuccessEnumAc.hpp
[ 2%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/Assert.cpp.obj
[ 3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/String.cpp.obj
[ 3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/InternalInterfaceString.cpp.obj
[ 3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/MallocAllocator.cpp.obj
[ 3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/MemAllocator.cpp.obj
[ 3%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/PolyType.cpp.obj
[ 4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/SerialBuffer.cpp.obj
[ 4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/Serializable.cpp.obj
[ 4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/StringType.cpp.obj
[ 4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/StringUtils.cpp.obj
[ 4%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/ActiveEnumAc.cpp.obj
[ 5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/DeserialStatusEnumAc.cpp.obj
[ 5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/DirectionEnumAc.cpp.obj
[ 5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/EnabledEnumAc.cpp.obj
[ 5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/HealthEnumAc.cpp.obj
[ 5%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/LogicEnumAc.cpp.obj
[ 6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/OnEnumAc.cpp.obj
[ 6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/OpenEnumAc.cpp.obj
[ 6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/SerialStatusEnumAc.cpp.obj
[ 6%] Building CXX object F-Prime/Fw/Types/CMakeFiles/Fw_Types.dir/SuccessEnumAc.cpp.obj
[ 6%] Linking CXX static library ../../../lib/rpipicow/libFw_Types.a
[ 6%] Built target Fw_Types
[ 6%] Building CXX object F-Prime/Fw/Logger/CMakeFiles/Fw_Logger.dir/Logger.cpp.obj
[ 6%] Building CXX object F-Prime/Fw/Logger/CMakeFiles/Fw_Logger.dir/LogAssert.cpp.obj
[ 6%] Linking CXX static library ../../../lib/rpipicow/libFw_Logger.a
[ 6%] Built target Fw_Logger
[ 7%] Building CXX object F-Prime/Fw/Obj/CMakeFiles/Fw_Obj.dir/ObjBase.cpp.obj
[ 7%] Building CXX object F-Prime/Fw/Obj/CMakeFiles/Fw_Obj.dir/SimpleObjRegistry.cpp.obj
[ 7%] Linking CXX static library ../../../lib/rpipicow/libFw_Obj.a
[ 7%] Built target Fw_Obj
[ 7%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/InputPortBase.cpp.obj
[ 7%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/InputSerializePort.cpp.obj
[ 7%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/OutputPortBase.cpp.obj
[ 8%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/OutputSerializePort.cpp.obj
[ 8%] Building CXX object F-Prime/Fw/Port/CMakeFiles/Fw_Port.dir/PortBase.cpp.obj
[ 8%] Linking CXX static library ../../../lib/rpipicow/libFw_Port.a
[ 8%] Built target Fw_Port
[ 9%] Generating TimePortAi.xml
[ 9%] Generating TimePortAc.cpp, TimePortAc.hpp
[ 9%] Building CXX object F-Prime/Fw/Time/CMakeFiles/Fw_Time.dir/Time.cpp.obj
[ 9%] Building CXX object F-Prime/Fw/Time/CMakeFiles/Fw_Time.dir/TimePortAc.cpp.obj
[ 9%] Linking CXX static library ../../../lib/rpipicow/libFw_Time.a
[ 9%] Built target Fw_Time
[ 10%] Generating ComPortAi.xml
[ 10%] Generating ComPortAc.cpp, ComPortAc.hpp
[ 10%] Building CXX object F-Prime/Fw/Com/CMakeFiles/Fw_Com.dir/ComPacket.cpp.obj
[ 10%] Building CXX object F-Prime/Fw/Com/CMakeFiles/Fw_Com.dir/ComBuffer.cpp.obj
[ 10%] Building CXX object F-Prime/Fw/Com/CMakeFiles/Fw_Com.dir/ComPortAc.cpp.obj
[ 11%] Linking CXX static library ../../../lib/rpipicow/libFw_Com.a
[ 11%] Built target Fw_Com
[ 12%] Generating TlmGetPortAi.xml, TlmPortAi.xml
[ 12%] Generating TlmGetPortAc.cpp, TlmGetPortAc.hpp, TlmPortAc.cpp, TlmPortAc.hpp
[ 12%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmBuffer.cpp.obj
[ 12%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmPacket.cpp.obj
[ 12%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmString.cpp.obj
[ 13%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmGetPortAc.cpp.obj
[ 13%] Building CXX object F-Prime/Fw/Tlm/CMakeFiles/Fw_Tlm.dir/TlmPortAc.cpp.obj
[ 13%] Linking CXX static library ../../../lib/rpipicow/libFw_Tlm.a
[ 13%] Built target Fw_Tlm
[ 13%] Generating LogPortAi.xml, LogSeverityEnumAi.xml, LogTextPortAi.xml
[ 13%] Generating LogPortAc.cpp, LogPortAc.hpp, LogSeverityEnumAc.cpp, LogSeverityEnumAc.hpp, LogTextPortAc.cpp, LogTextPortAc.hpp
[ 13%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogBuffer.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogPacket.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogString.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/TextLogString.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogPortAc.cpp.obj
[ 14%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogSeverityEnumAc.cpp.obj
[ 15%] Building CXX object F-Prime/Fw/Log/CMakeFiles/Fw_Log.dir/LogTextPortAc.cpp.obj
[ 15%] Linking CXX static library ../../../lib/rpipicow/libFw_Log.a
[ 15%] Built target Fw_Log
[ 16%] Generating CmdPortAi.xml, CmdRegPortAi.xml, CmdResponseEnumAi.xml, CmdResponsePortAi.xml
[ 16%] Generating CmdPortAc.cpp, CmdPortAc.hpp, CmdRegPortAc.cpp, CmdRegPortAc.hpp, CmdResponseEnumAc.cpp, CmdResponseEnumAc.hpp, CmdResponsePortAc.cpp, CmdResponsePortAc.hpp
[ 16%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdArgBuffer.cpp.obj
[ 16%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdPacket.cpp.obj
[ 16%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdString.cpp.obj
[ 17%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdPortAc.cpp.obj
[ 17%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdRegPortAc.cpp.obj
[ 17%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdResponseEnumAc.cpp.obj
[ 17%] Building CXX object F-Prime/Fw/Cmd/CMakeFiles/Fw_Cmd.dir/CmdResponsePortAc.cpp.obj
[ 17%] Linking CXX static library ../../../lib/rpipicow/libFw_Cmd.a
[ 17%] Built target Fw_Cmd
[ 17%] Generating ParamValidEnumAi.xml, PrmGetPortAi.xml, PrmSetPortAi.xml
[ 17%] Generating ParamValidEnumAc.cpp, ParamValidEnumAc.hpp, PrmGetPortAc.cpp, PrmGetPortAc.hpp, PrmSetPortAc.cpp, PrmSetPortAc.hpp
[ 17%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/PrmBuffer.cpp.obj
[ 18%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/PrmString.cpp.obj
[ 18%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/ParamValidEnumAc.cpp.obj
[ 18%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/PrmGetPortAc.cpp.obj
[ 18%] Building CXX object F-Prime/Fw/Prm/CMakeFiles/Fw_Prm.dir/PrmSetPortAc.cpp.obj
[ 18%] Linking CXX static library ../../../lib/rpipicow/libFw_Prm.a
[ 18%] Built target Fw_Prm
[ 18%] Generating BufferGetPortAi.xml, BufferSendPortAi.xml
[ 18%] Generating BufferGetPortAc.cpp, BufferGetPortAc.hpp, BufferSendPortAc.cpp, BufferSendPortAc.hpp
[ 18%] Building CXX object F-Prime/Fw/Buffer/CMakeFiles/Fw_Buffer.dir/Buffer.cpp.obj
[ 19%] Building CXX object F-Prime/Fw/Buffer/CMakeFiles/Fw_Buffer.dir/BufferGetPortAc.cpp.obj
[ 19%] Building CXX object F-Prime/Fw/Buffer/CMakeFiles/Fw_Buffer.dir/BufferSendPortAc.cpp.obj
[ 19%] Linking CXX static library ../../../lib/rpipicow/libFw_Buffer.a
[ 19%] Built target Fw_Buffer
[ 19%] Building CXX object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/libcrc/CRC32.cpp.obj
[ 19%] Building C object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/libcrc/lib_crc.c.obj
cc1: warning: command-line option '-std=c++17' is valid for C++/ObjC++ but not for C
[ 19%] Building CXX object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/HashBufferCommon.cpp.obj
[ 19%] Building CXX object F-Prime/Utils/Hash/CMakeFiles/Utils_Hash.dir/HashCommon.cpp.obj
[ 20%] Linking CXX static library ../../../lib/rpipicow/libUtils_Hash.a
[ 20%] Built target Utils_Hash
[ 21%] Generating DpGetPortAi.xml, DpRequestPortAi.xml, DpResponsePortAi.xml, DpSendPortAi.xml, DpStateEnumAi.xml
[ 21%] Generating DpGetPortAc.cpp, DpGetPortAc.hpp, DpRequestPortAc.cpp, DpRequestPortAc.hpp, DpResponsePortAc.cpp, DpResponsePortAc.hpp, DpSendPortAc.cpp, DpSendPortAc.hpp, DpStateEnumAc.cpp, DpStateEnumAc.hpp
[ 21%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpContainer.cpp.obj
[ 21%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpGetPortAc.cpp.obj
[ 21%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpRequestPortAc.cpp.obj
[ 22%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpResponsePortAc.cpp.obj
[ 22%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpSendPortAc.cpp.obj
[ 22%] Building CXX object F-Prime/Fw/Dp/CMakeFiles/Fw_Dp.dir/DpStateEnumAc.cpp.obj
[ 22%] Linking CXX static library ../../../lib/rpipicow/libFw_Dp.a
[ 22%] Built target Fw_Dp
[ 22%] Building CXX object F-Prime/Fw/Comp/CMakeFiles/Fw_Comp.dir/PassiveComponentBase.cpp.obj
[ 22%] Linking CXX static library ../../../lib/rpipicow/libFw_Comp.a
[ 22%] Built target Fw_Comp
[ 22%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/TaskCommon.cpp.obj
[ 22%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/TaskString.cpp.obj
[ 22%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/QueueCommon.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/QueueString.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/Queue.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/Task.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/File.cpp.obj
[ 23%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/FileSystem.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/IntervalTimer.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Baremetal/Mutex.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Pthreads/BufferQueueCommon.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/__/__/__/fprime/Os/Pthreads/FIFOBufferQueue.cpp.obj
[ 24%] Building CXX object Arduino/Os/CMakeFiles/Arduino_Os.dir/IntervalTimer.cpp.obj
cc1: warning: command-line option '-std=gnu++17' is valid for C++/ObjC++ but not for C
In file included from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/ArduinoAPI.h:39,
from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/ArduinoAPI.h:2,
from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/Arduino.h:28,
from /home/user/Desktop/led-blinker/fprime-arduino/cmake/platform/FprimeArduino.hpp:9,
from /home/user/Desktop/led-blinker/fprime-arduino/Arduino/Os/IntervalTimer.cpp:7:
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h: In function 'bool arduino::isAscii(int)':
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h:66:12: error: 'isascii' was not declared in this scope; did you mean 'isAscii'?
66 | return ( isascii (c) == 0 ? false : true);
| ^~~~~~~
| isAscii
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h: In function 'int arduino::toAscii(int)':
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/api/../../../ArduinoCore-API/api/WCharacter.h:148:10: error: 'toascii' was not declared in this scope; did you mean 'toAscii'?
148 | return toascii (c);
| ^~~~~~~
| toAscii
gmake[2]: *** [Arduino/Os/CMakeFiles/Arduino_Os.dir/build.make:244: Arduino/Os/CMakeFiles/Arduino_Os.dir/IntervalTimer.cpp.obj] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:4852: Arduino/Os/CMakeFiles/Arduino_Os.dir/all] Error 2
gmake: *** [Makefile:136: all] Error 2
[ERROR] CMake erred with return code 2
It seems to me that errors related to "1'000'000" disappeared after I modified settings.cmake. But it doesn't recognize toascii function
I have made brute force fix of the problem by replacing isascii (c) == 0 with ((c) & ~0x7f) != 0 and toascii(c) with ((c) & 0x7f). I have decided to do it based on discussion WCharacter.h - isascii not declared in this scope on arm-none-eabi . The discussion ended with the following fix
@ethancheez what is you fprime-util version-check and arduino-cli version?
fprime-util version-check:
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ fprime-util version-check Operating System: Linux CPU Architecture: x86_64 Platform: Linux-6.5.0-41-generic-x86_64-with-glibc2.35 Python version: 3.10.12 CMake version: 3.22.1 Pip version: 24.1.2 Pip packages: fprime-tools==3.4.4 fprime-gds==3.4.3 fprime-fpp-*==2.1.0a3
arduino-cli version:
(fprime-venv) user@user-VirtualBox:~/Desktop/led-blinker$ arduino-cli version arduino-cli Version: 1.0.2 Commit: 33dfa8e8 Date: 2024-07-02T12:53:01Z
@ethancheez what is you fprime-util version-check and arduino-cli version?
Operating System: Linux
CPU Architecture: x86_64
Platform: Linux-4.4.0-22621-Microsoft-x86_64-with-glibc2.35
Python version: 3.10.12
CMake version: 3.29.6
Pip version: 24.1.2
Pip packages:
fprime-tools==3.4.4
fprime-gds==3.4.3
fprime-fpp-*==2.1.0a3
arduino-cli Version: 1.0.2 Commit: 33dfa8e8 Date: 2024-07-02T12:53:01Z
Let's try some things to avoid having to edit the RP2040 package files and fprime core files. In fprime-arduino/cmake/toolchain/rpipicow.cmake
line 17, change it to:
add_compile_options(-D_BOARD_RPIPICOW -DUSE_BASIC_TIMER -D_GNU_SOURCE)
Let's try some things to avoid having to edit the RP2040 package files and fprime core files. In
fprime-arduino/cmake/toolchain/rpipicow.cmake
line 17, change it to:
add_compile_options(-D_BOARD_RPIPICOW -DUSE_BASIC_TIMER -D_GNU_SOURCE)
It seems to fix problem with isascii and toascii functions, but the problem with c++ standards remains(I have returned original value in fprime/cmake/settings.cmake
):
cc1: warning: command-line option '-std=gnu++17' is valid for C++/ObjC++ but not for C
In file included from /home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/Arduino.h:121,
from /home/user/Desktop/TestingLed/fprime-arduino/cmake/platform/FprimeArduino.hpp:9,
from /home/user/Desktop/TestingLed/fprime-arduino/Arduino/Os/IntervalTimer.cpp:7:
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:48: warning: multi-character character constant [-Wmultichar]
189 | return (us * (clock_get_hz(clk_sys) / 1'000'000));
| ^~~~~
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h: In static member function 'static int RP2040::usToPIOCycles(int)':
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:48: error: expected ')' before '\x303030'
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:22: note: to match this '('
189 | return (us * (clock_get_hz(clk_sys) / 1'000'000));
| ^
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:58: error: expected ')' before ';' token
189 | return (us * (clock_get_hz(clk_sys) / 1'000'000));
| ^
/home/user/.arduino15/packages/rp2040/hardware/rp2040/3.9.3/cores/rp2040/RP2040Support.h:189:16: note: to match this '('
189 | return (us * (clock_get_hz(clk_sys) / 1'000'000));
| ^
gmake[2]: *** [Arduino/Os/CMakeFiles/Arduino_Os.dir/build.make:244: Arduino/Os/CMakeFiles/Arduino_Os.dir/IntervalTimer.cpp.obj] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:4852: Arduino/Os/CMakeFiles/Arduino_Os.dir/all] Error 2
gmake: *** [Makefile:136: all] Error 2
[ERROR] CMake erred with return code 2
Can you try changing to this in the rpipicow.cmake
file:
add_compile_options(-std=c++17 -std=gnu++17 -std=gnu17) # Force C++17 standard
This will add a bunch of warnings saying something like command-line option '-std=gnu17' is valid for C/ObjC but not for C++
, you can ignore it since the -std=gnu++17
should handle C++
Edit: Also try to remove all the flags except the -std=c++17
flag
add_compile_options(-std=c++17) # Force C++17 standard
@ethancheez, neither the first approach, nor the second one helped. By the way, was you able to reproduce this issue on your side? Is this only on my side?
@ethancheez, neither the first approach, nor the second one helped. By the way, was you able to reproduce this issue on your side? Is this only on my side?
I was not able to reproduce it. I tried a completely new Ubuntu VM and reinstalled everything and successfully builds. Do you mind listing the steps you took to create your project?
These were my steps (the important parts). If you followed the tutorial step by step, you would run fprime-bootstrap project
instead of fprime-bootstrap clone
python -m venv ~/venv/fprime
. ~/venv/fprime/bin/activate
pip install fprime-bootstrap
fprime-bootstrap clone https://github.com/fprime-community/fprime-tutorial-arduino-blinker.git
cd fprime-tutorial-arduino-blinker
. ~/fprime-venv/bin/activate
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=$VIRTUAL_ENV/bin sh
pip install arduino-cli-cmake-wrapper
arduino-cli config init
arduino-cli config add board_manager.additional_urls https://www.pjrc.com/teensy/package_teensy_index.json
arduino-cli config add board_manager.additional_urls https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
arduino-cli config add board_manager.additional_urls https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
arduino-cli config add board_manager.additional_urls https://mcudude.github.io/MegaCore/package_MCUdude_MegaCore_index.json
arduino-cli config add board_manager.additional_urls https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
arduino-cli core update-index
arduino-cli core install teensy:avr
arduino-cli core install adafruit:samd
arduino-cli core install esp32:esp32
arduino-cli core install MegaCore:avr
arduino-cli core install rp2040:rp2040
arduino-cli lib install Time
fprime-util generate rpipicow
fprime-util build rpipicow -j8
Hello,
I've been trying to run the arduino led blinker tutorial on the RP2040. https://fprime-community.github.io/fprime-tutorial-arduino-blinker/
I'm getting stuck on the first
fprime-util generate
. I'm getting the error shown belowHere's my settings.ini file
Some observations:
pip install -U fprime-tools
Any ideas? Let me know if you need any more information