fprime-community / fprime-arduino

An implementation allowing fprime to be run on a limite number of Arduino compatible devices.
Apache License 2.0
24 stars 9 forks source link

Generate not working for RP2040 #27

Open csmith608 opened 3 months ago

csmith608 commented 3 months ago

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 below

[INFO] Generating build directory at: /Users/your-user/led-blinker/build-fprime-automatic-rpipicow
[INFO] Using toolchain file /Users/your-user/led-blinker/fprime-arduino/cmake/toolchain/rpipicow.cmake for platform default
Traceback (most recent call last):
  File "/Users/your-user/fprime-venv/bin/arduino-cli-wrapper", line 5, in <module>
    from arduino_cli_cmake_wrapper.cli import main
  File "/Users/your-user/fprime-venv/lib/python3.8/site-packages/arduino_cli_cmake_wrapper/cli.py", line 193, in <module>
    def assemble_output_data(test_files: dict[Source, Path], stages: Dict[Stage, List[str]], detect: bool, include: bool, post_link: bool) -> Tuple[Dict, Path]:
TypeError: 'type' object is not subscriptable
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:43 (run_arduino_wrapper)
  fprime-arduino/cmake/toolchain/support/arduino-support.cmake:201 (set_arduino_build_settings)
  fprime-arduino/cmake/toolchain/rpipicow.cmake:19 (include)
  /usr/local/Cellar/cmake/3.29.0/share/cmake/Modules/CMakeDetermineSystem.cmake:146 (include)
  CMakeLists.txt:7 (project)

CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
-- Configuring incomplete, errors occurred!
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage

Here's my settings.ini file

[fprime]
project_root: .
framework_path: ./fprime

default_cmake_options:  FPRIME_ENABLE_FRAMEWORK_UTS=OFF
                        FPRIME_ENABLE_AUTOCODER_UTS=OFF
library_locations: ./fprime-arduino
default_toolchain: rpipicow
deployment_cookiecutter: https://github.com/fprime-community/fprime-arduino-deployment-cookiecutter.git

Some observations:

Any ideas? Let me know if you need any more information

LeStarch commented 3 months ago

This builds on-top of arduino-cli. You should install that, and make sure you have the board packages installed.

LeStarch commented 3 months ago

This repo will work you through the setup: https://github.com/fprime-community/fprime-baremetal-reference

csmith608 commented 3 months ago

@LeStarch I have the arduino-cli installed and working as well as the rp2040 board package.

LeStarch commented 3 months ago

@csmith608 is arduino-cli on your PATH?

csmith608 commented 3 months ago
(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
LeStarch commented 3 months ago

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.

LeStarch commented 3 months ago

I'd recommend:

  1. Edit /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 above
  2. Run purge 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.

csmith608 commented 3 months ago

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

ethancheez commented 2 months ago

I fixed the $send port in TcpClient with this commit

The fprime-arduino devel branch should build for the RP2040 now.

Gonta01 commented 1 week ago

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?

ethancheez commented 6 days ago

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
Gonta01 commented 6 days ago

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?

ethancheez commented 6 days ago

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?

Gonta01 commented 6 days ago

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
Gonta01 commented 6 days ago

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

ethancheez commented 6 days ago

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.

Gonta01 commented 6 days ago

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.

ethancheez commented 6 days ago

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?

Gonta01 commented 6 days ago
(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)
ethancheez commented 6 days ago

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.

Gonta01 commented 6 days ago

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
Gonta01 commented 6 days ago

It seems to me that errors related to "1'000'000" disappeared after I modified settings.cmake. But it doesn't recognize toascii function

Gonta01 commented 6 days ago

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

Gonta01 commented 6 days ago

@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 commented 5 days ago

@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)
Gonta01 commented 5 days ago

Let's try some things to avoid having to edit the RP2040 package files and fprime core files. Infprime-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
ethancheez commented 4 days ago

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
Gonta01 commented 4 days ago

@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 commented 4 days ago

@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