-
Notifications
You must be signed in to change notification settings - Fork 111
Open
Description
Issue template
- Hardware description: pi pico * / rp2040 / rp2350
- Installation type: platformio CLI
- Version or commit hash: microros jazzy
Steps to reproduce the issue
Try to build a simple script for rp2040 or rp2350, using…
- https://github.com/maxgerhardt/platform-raspberrypi.git#1ab176cd4d4edd38a156e0c25e12e86ad96b21ef
- https://github.com/maxgerhardt/platform-raspberrypi.git
- https://github.com/hippo5329/platform-raspberrypi.git
Platformio.ini:
[env:pico]
platform = <platform link>
board = rpipico <or rpipico2>
framework = arduino
board_build.core = earlephilhower
board_microros_distro = jazzy
board_microros_transport = serial
lib_ldf_mode = chain+
lib_deps =
https://github.com/micro-ROS/micro_ros_platformioProcedure:
3 Docker debian containers, each with a fresh platformio install.
Dockerfile
FROM debian:bookworm
RUN apt update && apt install \
git python3-venv wget nano gcc-arm-none-eabi cmake g++ gcc -y \
&& rm -rf /var/cache/apt/
RUN wget -O get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py &&\
python3 get-platformio.py
RUN mkdir -p /usr/local/bin &&\
ln -s ~/.platformio/penv/bin/platformio /usr/local/bin/platformio &&\
ln -s ~/.platformio/penv/bin/pio /usr/local/bin/pio &&\
ln -s ~/.platformio/penv/bin/piodebuggdb /usr/local/bin/piodebuggdb &&\
mkdir -p /etc/udev/rules.d/ &&\
wget -O /etc/udev/rules.d/99-platformio-udev.rules https://raw.githubusercontent.com/platformio/platformio-core/develop/platformio/assets/system/99-platformio-udev.rules
ENTRYPOINT ["/bin/bash"]run:
git clone https://github.com/micro-ROS/micro_ros_platformio/
cd micro_ros_platformio/examples/micro-ros_publisher/ #use aforementioned example
nano -n platformio.ini #replace with my `platformio.ini`
# each container uses one of the 3 platform links
pio runExpected behavior
All 3 platforms should build fine.
Actual behavior
- Compiles fine:
https://github.com/maxgerhardt/platform-raspberrypi.git#1ab176cd4d4edd38a156e0c25e12e86ad96b21ef
Shortened log
Building in release mode
Compiling .pio/build/pico/FrameworkArduinoBootloader/boot2_w25q080_2_padded_checksum.S.o
Compiling .pio/build/pico/src/Main.cpp.o
Generating linkerscript /root/micro_ros_platformio/examples/micro-ros_publisher/.pio/build/pico/memmap_default.ld
Compiling .pio/build/pico/libd94/micro_ros_platformio/platform_code/arduino/clock_gettime.cpp.o
Compiling .pio/build/pico/libd94/micro_ros_platformio/platform_code/arduino/serial/micro_ros_transport.cpp.o
Compiling .pio/build/pico/FrameworkArduino/BluetoothDebug.cpp.o
Compiling .pio/build/pico/FrameworkArduino/Bootsel.cpp.o
Compiling .pio/build/pico/FrameworkArduino/CoreMutex.cpp.o
Compiling .pio/build/pico/FrameworkArduino/FS.cpp.o
Compiling .pio/build/pico/FrameworkArduino/PIOProgram.cpp.o
Compiling .pio/build/pico/FrameworkArduino/RP2040Support.cpp.o
Compiling .pio/build/pico/FrameworkArduino/RP2040USB.cpp.o
Compiling .pio/build/pico/FrameworkArduino/SerialPIO.cpp.o
Compiling .pio/build/pico/FrameworkArduino/SerialUART.cpp.o
Compiling .pio/build/pico/FrameworkArduino/SerialUSB.cpp.o
Compiling .pio/build/pico/FrameworkArduino/StackThunk.cpp.o
Compiling .pio/build/pico/FrameworkArduino/Tone.cpp.o
Compiling .pio/build/pico/FrameworkArduino/WMath.cpp.o
Compiling .pio/build/pico/FrameworkArduino/_freertos.cpp.o
Compiling .pio/build/pico/FrameworkArduino/api/Common.cpp.o
Compiling .pio/build/pico/FrameworkArduino/api/IPAddress.cpp.o
Compiling .pio/build/pico/FrameworkArduino/api/PluggableUSB.cpp.o
Compiling .pio/build/pico/FrameworkArduino/api/Print.cpp.o
src/Main.cpp: In function 'void setup()':
src/Main.cpp:64:34: warning: 'rcl_ret_t rclc_timer_init_default(rcl_timer_t*, rclc_support_t*, uint64_t, rcl_timer_callback_t)' is deprecated: Call rclc_timer_init_default2 instead [-Wdeprecated-declarations]
64 | RCCHECK(rclc_timer_init_default(
| ~~~~~~~~~~~~~~~~~~~~~~~^
65 | &timer,
| ~~~~~~~
66 | &support,
| ~~~~~~~~~
67 | RCL_MS_TO_NS(timer_timeout),
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
68 | timer_callback));
| ~~~~~~~~~~~~~~~
src/Main.cpp:23:43: note: in definition of macro 'RCCHECK'
23 | #define RCCHECK(fn) { rcl_ret_t temp_rc = fn; if((temp_rc != RCL_RET_OK)){error_loop();}}
| ^~
In file included from .pio/libdeps/pico/micro_ros_platformio/libmicroros/include/rclc/rclc.h:32,
from src/Main.cpp:5:
.pio/libdeps/pico/micro_ros_platformio/libmicroros/include/rclc/timer.h:63:1: note: declared here
63 | rclc_timer_init_default(
| ^~~~~~~~~~~~~~~~~~~~~~~
Compiling .pio/build/pico/FrameworkArduino/api/Stream.cpp.o
Compiling .pio/build/pico/FrameworkArduino/api/String.cpp.o
Compiling .pio/build/pico/FrameworkArduino/cyw43_wrappers.cpp.o
Compiling .pio/build/pico/FrameworkArduino/delay.cpp.o
Archiving .pio/build/pico/libd94/libmicro_ros_platformio.a
Indexing .pio/build/pico/libd94/libmicro_ros_platformio.a
Compiling .pio/build/pico/FrameworkArduino/libb64/cdecode.cpp.o
Compiling .pio/build/pico/FrameworkArduino/libb64/cencode.cpp.o
Compiling .pio/build/pico/FrameworkArduino/lock.cpp.o
Compiling .pio/build/pico/FrameworkArduino/lwip_wrap.cpp.o
Compiling .pio/build/pico/FrameworkArduino/main.cpp.o
Compiling .pio/build/pico/FrameworkArduino/malloc-lock.cpp.o
Compiling .pio/build/pico/FrameworkArduino/posix.cpp.o
Compiling .pio/build/pico/FrameworkArduino/sdkoverride/att_db.c.o
Compiling .pio/build/pico/FrameworkArduino/sdkoverride/btstack_flash_bank.cpp.o
Compiling .pio/build/pico/FrameworkArduino/sdkoverride/hids_device.c.o
Compiling .pio/build/pico/FrameworkArduino/sdkoverride/inet_chksum.cpp.o
Compiling .pio/build/pico/FrameworkArduino/sdkoverride/pico_bootsel_via_double_reset.c.o
Compiling .pio/build/pico/FrameworkArduino/stdlib_noniso.cpp.o
Compiling .pio/build/pico/FrameworkArduino/wiring_analog.cpp.o
Compiling .pio/build/pico/FrameworkArduino/wiring_digital.cpp.o
Compiling .pio/build/pico/FrameworkArduino/wiring_private.cpp.o
Compiling .pio/build/pico/FrameworkArduino/wiring_pulse.cpp.o
Compiling .pio/build/pico/FrameworkArduino/wiring_shift.cpp.o
Archiving .pio/build/pico/libFrameworkArduino.a
Indexing .pio/build/pico/libFrameworkArduino.a
Linking .pio/build/pico/firmware.elf
Generating UF2 image
elf2uf2 ".pio/build/pico/firmware.elf" ".pio/build/pico/firmware.uf2"
Retrieving maximum program size .pio/build/pico/firmware.elf
Flash size: 2.00MB
Sketch size: 2.00MB
Filesystem size: 0.00MB
Maximium Sketch size: 2093056 EEPROM start: 0x101ff000 Filesystem start: 0x101ff000 Filesystem end: 0x101ff000
Checking size .pio/build/pico/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [= ] 11.5% (used 30140 bytes from 262144 bytes)
Flash: [= ] 5.7% (used 118272 bytes from 2093056 bytes)
Building .pio/build/pico/firmware.bin
Building .pio/build/pico/firmware.bin.signed
- Doesn't compile:
https://github.com/maxgerhardt/platform-raspberrypi.git
Shortened log
Building micro-ROS library
Build mcu micro-ROS environment failed:
--- stderr: rmw_implementation_cmake
CMake Warning:
Manually-specified variables were not used by the project:
BUILD_SHARED_LIBS
CMAKE_POSITION_INDEPENDENT_CODE
THIRDPARTY
---
--- stderr: test_interface_files
CMake Warning:
Manually-specified variables were not used by the project:
BUILD_SHARED_LIBS
CMAKE_POSITION_INDEPENDENT_CODE
THIRDPARTY
---
--- stderr: rosidl_typesupport_interface
CMake Warning:
Manually-specified variables were not used by the project:
CMAKE_POSITION_INDEPENDENT_CODE
THIRDPARTY
---
--- stderr: tracetools
CMake Warning:
Manually-specified variables were not used by the project:
THIRDPARTY
---
--- stderr: rcutils
CMake Warning:
Manually-specified variables were not used by the project:
ENABLE_TESTING
THIRDPARTY
In file included from /root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/error_handling.c:35:
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h: In function '__rcutils_convert_uint64_t_into_c_str':
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h:109:48: warning: unused parameter 'number' [-Wunused-parameter]
109 | __rcutils_convert_uint64_t_into_c_str(uint64_t number, char * buffer, size_t buffer_size)
| ~~~~~~~~~^~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h:109:63: warning: unused parameter 'buffer' [-Wunused-parameter]
109 | __rcutils_convert_uint64_t_into_c_str(uint64_t number, char * buffer, size_t buffer_size)
| ~~~~~~~^~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h:109:78: warning: unused parameter 'buffer_size' [-Wunused-parameter]
109 | __rcutils_convert_uint64_t_into_c_str(uint64_t number, char * buffer, size_t buffer_size)
| ~~~~~~~^~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h: In function '__rcutils_format_error_string':
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h:142:28: warning: unused parameter 'error_string' [-Wunused-parameter]
142 | rcutils_error_string_t * error_string,
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h:143:33: warning: unused parameter 'error_state' [-Wunused-parameter]
143 | const rcutils_error_state_t * error_state)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/error_handling.c: In function 'rcutils_get_error_string':
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/error_handling.c:240:38: warning: initializer-string for array of 'char' is too long
240 | return (rcutils_error_string_t) {"error not set"}; // NOLINT(readability/braces)
| ^~~~~~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/error_handling.c:240:38: note: (near initialization for '(anonymous).str')
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h: At top level:
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h:109:1: warning: '__rcutils_convert_uint64_t_into_c_str' defined but not used [-Wunused-function]
109 | __rcutils_convert_uint64_t_into_c_str(uint64_t number, char * buffer, size_t buffer_size)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h:91:1: warning: '__rcutils_reverse_str' defined but not used [-Wunused-function]
91 | __rcutils_reverse_str(char * string_in, size_t string_len)
| ^~~~~~~~~~~~~~~~~~~~~
In function 'rcutils_strndup',
inlined from 'rcutils_strdup' at /root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/strdup.c:35:10:
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/strdup.c:47:14: warning: 'memchr' specified bound 4294967295 exceeds maximum object size 2147483647 [-Wstringop-overread]
47 | char * p = memchr(str, '\0', max_length);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/atomic_64bits.c:53:10: warning: conflicting types for built-in function '__atomic_load_8'; expected 'long long unsigned int(const volatile void *, int)' [-Wbuiltin-declaration-mismatch]
53 | uint64_t __atomic_load_8(uint64_t *mem, int model) {
| ^~~~~~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/atomic_64bits.c:62:6: warning: conflicting types for built-in function '__atomic_store_8'; expected 'void(volatile void *, long long unsigned int, int)' [-Wbuiltin-declaration-mismatch]
62 | void __atomic_store_8(uint64_t *mem, uint64_t val, int model) {
| ^~~~~~~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/atomic_64bits.c:70:10: warning: conflicting types for built-in function '__atomic_exchange_8'; expected 'long long unsigned int(volatile void *, long long unsigned int, int)' [-Wbuiltin-declaration-mismatch]
70 | uint64_t __atomic_exchange_8(uint64_t *mem, uint64_t val, int model) {
| ^~~~~~~~~~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/atomic_64bits.c:80:10: warning: conflicting types for built-in function '__atomic_fetch_add_8'; expected 'long long unsigned int(volatile void *, long long unsigned int, int)' [-Wbuiltin-declaration-mismatch]
80 | uint64_t __atomic_fetch_add_8(uint64_t *mem, uint64_t val, int model) {
| ^~~~~~~~~~~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/time_unix.c:48:4: warning: #warning before C23 is a GCC extension
48 | # warning no monotonic clock function available
| ^~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/time_unix.c:48:4: warning: #warning no monotonic clock function available [-Wcpp]
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/time_unix.c: In function 'rcutils_system_time_now':
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/time_unix.c:65:7: error: implicit declaration of function 'clock_gettime' [-Wimplicit-function-declaration]
65 | if (clock_gettime(CLOCK_REALTIME, ×pec_now) < 0) {
| ^~~~~~~~~~~~~
gmake[2]: *** [CMakeFiles/rcutils.dir/build.make:432: CMakeFiles/rcutils.dir/src/time_unix.c.obj] Error 1
gmake[2]: *** Waiting for unfinished jobs....
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/logging.c: In function 'rcutils_get_env_var_zero_or_one':
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/logging.c:154:35: warning: unused parameter 'zero_semantic' [-Wunused-parameter]
154 | const char * name, const char * zero_semantic,
| ~~~~~~~~~~~~~^~~~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/logging.c:155:16: warning: unused parameter 'one_semantic' [-Wunused-parameter]
155 | const char * one_semantic)
| ~~~~~~~~~~~~~^~~~~~~~~~~~
gmake[1]: *** [CMakeFiles/Makefile2:192: CMakeFiles/rcutils.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
---
Failed <<< rcutils [4.10s, exited with code 2]
- Doesn't compile:
https://github.com/hippo5329/platform-raspberrypi.git
Shortened log
Linking .pio/build/pico/firmware.elf
/root/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: /root/.platformio/packages/framework-arduinopico/lib/rp2040/libpico.a(atomic.c.o): in function `__atomic_load_8':
/home/earle/Arduino/hardware/pico/rp2040/pico-sdk/src/rp2_common/pico_atomic/atomic.c:121: multiple definition of `__atomic_load_8'; .pio/libdeps/pico/micro_ros_platformio/libmicroros/libmicroros.a(librcutils__atomic_64bits.c.obj):atomic_64bits.c:(.text.__atomic_load_8+0x0): first defined here
/root/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: /root/.platformio/packages/framework-arduinopico/lib/rp2040/libpico.a(atomic.c.o): in function `__atomic_store_8':
/home/earle/Arduino/hardware/pico/rp2040/pico-sdk/src/rp2_common/pico_atomic/atomic.c:132: multiple definition of `__atomic_store_8'; .pio/libdeps/pico/micro_ros_platformio/libmicroros/libmicroros.a(librcutils__atomic_64bits.c.obj):atomic_64bits.c:(.text.__atomic_store_8+0x0): first defined here
/root/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: /root/.platformio/packages/framework-arduinopico/lib/rp2040/libpico.a(atomic.c.o): in function `__atomic_exchange_8':
/home/earle/Arduino/hardware/pico/rp2040/pico-sdk/src/rp2_common/pico_atomic/atomic.c:163: multiple definition of `__atomic_exchange_8'; .pio/libdeps/pico/micro_ros_platformio/libmicroros/libmicroros.a(librcutils__atomic_64bits.c.obj):atomic_64bits.c:(.text.__atomic_exchange_8+0x0): first defined here
/root/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: /root/.platformio/packages/framework-arduinopico/lib/rp2040/libpico.a(atomic.c.o): in function `__atomic_fetch_add_8':
/home/earle/Arduino/hardware/pico/rp2040/pico-sdk/src/rp2_common/pico_atomic/atomic.c:189: multiple definition of `__atomic_fetch_add_8'; .pio/libdeps/pico/micro_ros_platformio/libmicroros/libmicroros.a(librcutils__atomic_64bits.c.obj):atomic_64bits.c:(.text.__atomic_fetch_add_8+0x0): first defined here
/root/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: .pio/libdeps/pico/micro_ros_platformio/libmicroros/libmicroros.a(librcutils__atomic_64bits.c.obj): in function `__atomic_load_8':
atomic_64bits.c:(.text.__atomic_load_8+0x2a): undefined reference to `__atomic_test_and_set'
/root/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: .pio/libdeps/pico/micro_ros_platformio/libmicroros/libmicroros.a(librcutils__atomic_64bits.c.obj): in function `__atomic_store_8':
atomic_64bits.c:(.text.__atomic_store_8+0x2e): undefined reference to `__atomic_test_and_set'
/root/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: .pio/libdeps/pico/micro_ros_platformio/libmicroros/libmicroros.a(librcutils__atomic_64bits.c.obj): in function `__atomic_exchange_8':
atomic_64bits.c:(.text.__atomic_exchange_8+0x2e): undefined reference to `__atomic_test_and_set'
collect2: error: ld returned 1 exit status
*** [.pio/build/pico/firmware.elf] Error 1
rp2040 and rp2350 fail in the exact same fashion.
Additional information
Unfortunately I cannot use the older commit version, as it is lacking features I need :(
Metadata
Metadata
Assignees
Labels
No labels