micro-ROS / micro-ROS/micro_ros_setup

"ELF: not found error" running "micro_ros_setup build_firmware.sh" for nucleo_f767zi on Raspberry Pi

Đang mở
#623 3 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Ngôn ngữ chính
Shell
Star
509
Fork
183
Merge trung bình
22 giờ 26 phút
Pull request đã merge (30 ngày)
7

Mô tả

## Issue template

- Hardware description: Raspberry Pi 4B 4gb (with BCM2711 soc) running Ubuntu server 22.04 (LTS) 64-bit
- RTOS: Free RTOS
- Installation type: ping pong example on nucleo_f767zi on ROS2 Humble latest release
- Version or commit hash: (default) humble

#### Steps to reproduce the issue
I followed the tutorial steps specified on the following page [https://micro.ros.org/docs/tutorials/core/first_application_rtos/freertos/]

I adjusted the line "ros2 run micro_ros_setup create_firmware_ws.sh freertos olimex-stm32-e407"
into "ros2 run micro_ros_setup create_firmware_ws.sh freertos nucleo_f767zi"

After that I entered the command "ros2 run micro_ros_setup configure_firmware.sh ping_pong --transport serial" according to the tutorial.

Errors occur at the buildstep "ros2 run micro_ros_setup build_firmware.sh"

#### Expected behavior
I expected that the build would happen without any problems. I followed the exact same steps within a docker container on my PC with an amd chipset without any problems. At the moment I try it on the arm infrastructure it does not work. I tried it in a docker image and with a local installation of ROS2.
#### Actual behavior

The following output is created showing an "ELF: not found" error:

```
root@daniel:/home/daniel/microros_ws# ros2 run micro_ros_setup build_firmware.sh
Crosscompiled environment: cleaning path
Building firmware for freertos platform nucleo_f767zi
Selected app: ping_pong
rm -fR /home/daniel/microros_ws/firmware/freertos_apps/microros_nucleo_f767zi_extensions/build
rm -f /home/daniel/microros_ws/firmware/freertos_apps/microros_nucleo_f767zi_extensions/arm_toolchain.cmake; \
cat /home/daniel/microros_ws/firmware/freertos_apps/microros_nucleo_f767zi_extensions/arm_toolchain.cmake.in | \
sed "s/@CROSS_COMPILE@/\/home\/daniel\/microros_ws\/firmware\/freertos_apps\/microros_nucleo_f767zi_extensions\/..\/..\/toolchain\/bin\/arm-none-eabi-/g" | \
sed "s/@FREERTOS_TOPDIR@/\/home\/daniel\/microros_ws\/firmware\/freertos_apps\/microros_nucleo_f767zi_extensions\/..\/../g" | \
sed "s/@ARCH_CPU_FLAGS@/\"-mcpu=cortex-m7 -mthumb -mfpu=fpv5-sp-d16 -mfloat-abi=hard -DUSE_HAL_DRIVER -DSTM32F767xx -Og -Wall -fdata-sections -ffunction-sections\"/g" | \
sed "s/@ARCH_OPT_FLAGS@/\"\"/g" \
> /home/daniel/microros_ws/firmware/freertos_apps/microros_nucleo_f767zi_extensions/arm_toolchain.cmake
cd /home/daniel/microros_ws/firmware/freertos_apps/microros_nucleo_f767zi_extensions/../../mcu_ws; \
colcon build \
--packages-ignore-regex=.*_cpp \
--metas /home/daniel/microros_ws/firmware/freertos_apps/microros_nucleo_f767zi_extensions/../../mcu_ws/colcon.meta /home/daniel/microros_ws/firmware/freertos_apps/apps/ping_pong/app-colcon.meta \
--cmake-args \
"--no-warn-unused-cli" \
-DCMAKE_POSITION_INDEPENDENT_CODE=OFF \
-DTHIRDPARTY=ON \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTING=OFF \
-DCMAKE_BUILD_TYPE= \
-DCMAKE_TOOLCHAIN_FILE=/home/daniel/microros_ws/firmware/freertos_apps/microros_nucleo_f767zi_extensions/arm_toolchain.cmake \
-DCMAKE_VERBOSE_MAKEFILE=ON; \

Starting >>> rcutils
Starting >>> rosidl_cli
Starting >>> rosidl_typesupport_interface
Starting >>> microcdr
--- stderr: rcutils
CMake Error at /usr/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake:69 (message):
The C compiler

"/home/daniel/microros_ws/firmware/freertos_apps/microros_nucleo_f767zi_extensions/../../toolchain/bin/arm-none-eabi-gcc"

is not able to compile a simple test program.

It fails with the following output:

Change Dir: /home/daniel/microros_ws/firmware/mcu_ws/build/rcutils/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_947dd/fast && gmake[1]: Entering directory '/home/daniel/microros_ws/firmware/mcu_ws/build/rcutils/CMakeFiles/CMakeTmp'
/usr/bin/gmake -f CMakeFiles/cmTC_947dd.dir/build.make CMakeFiles/cmTC_947dd.dir/build
gmake[2]: Entering directory '/home/daniel/microros_ws/firmware/mcu_ws/build/rcutils/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_947dd.dir/testCCompiler.c.obj
/home/daniel/microros_ws/firmware/freertos_apps/microros_nucleo_f767zi_extensions/../../toolchain/bin/arm-none-eabi-gcc -std=c11 -mcpu=cortex-m7 -mthumb -mfpu=fpv5-sp-d16 -mfloat-abi=hard -DUSE_HAL_DRIVER -DSTM32F767xx -Og -Wall -fdata-sections -ffunction-sections -DCLOCK_MONOTONIC=0 -o CMakeFiles/cmTC_947dd.dir/testCCompiler.c.obj -c /home/daniel/microros_ws/firmware/mcu_ws/build/rcutils/CMakeFiles/CMakeTmp/testCCompiler.c
/home/daniel/microros_ws/firmware/freertos_apps/microros_nucleo_f767zi_extensions/../../toolchain/bin/arm-none-eabi-gcc: 1: ELF: not found
/home/daniel/microros_ws/firmware/freertos_apps/microros_nucleo_f767zi_extensions/../../toolchain/bin/arm-none-eabi-gcc: 4: Syntax error: "(" unexpected
gmake[2]: *** [CMakeFiles/cmTC_947dd.dir/build.make:78: CMakeFiles/cmTC_947dd.dir/testCCompiler.c.obj] Error 2
gmake[2]: Leaving directory '/home/daniel/microros_ws/firmware/mcu_ws/build/rcutils/CMakeFiles/CMakeTmp'
gmake[1]: *** [Makefile:127: cmTC_947dd/fast] Error 2
gmake[1]: Leaving directory '/home/daniel/microros_ws/firmware/mcu_ws/build/rcutils/CMakeFiles/CMakeTmp'

CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:3 (project)

---
Failed <<< rcutils [2.99s, exited with code 1]
Aborted <<< microcdr [2.80s]
Aborted <<< rosidl_cli [4.06s]
Aborted <<< rosidl_typesupport_interface [4.95s]

Summary: 0 packages finished [7.39s]
1 package failed: rcutils
3 packages aborted: microcdr rosidl_cli rosidl_typesupport_interface
2 packages had stderr output: microcdr rcutils
63 packages not processed
make: *** [Makefile:315: colcon_compile] Error 1
[ros2run]: Process exited with failure 2
```

#### Additional information
Any help will be greatly appreciated. Feel free to ask for additional information!

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Start with micro_ros_setup's build_firmware.sh entry point and the generated freertos_apps/microros_nucleo_f767zi_extensions/arm_toolchain.cmake. Reproduce the CMake compiler test for arm-none-eabi-gcc on the Raspberry Pi and inspect why the toolchain executable produces “ELF: not found”; done means the ping_pong firmware build completes for nucleo_f767zi.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
cmake, shell
Lĩnh vực
build-system, embedded-iot
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.