micro-ROS / micro-ROS/micro_ros_setup

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

オープン
#623 コメント 3 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

主要言語
Shell
スター
509
フォーク
183
平均マージ
22時間 26分
マージ済み PR(30日)
7

説明

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!

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

micro_ros_setup のエントリーポイントである build_firmware.sh と、生成された freertos_apps/microros_nucleo_f767zi_extensions/arm_toolchain.cmake から始めます。Raspberry Pi 上で arm-none-eabi-gcc 用の CMake コンパイラーテストを再現し、toolchain の実行可能ファイルが「ELF: not found」を出力する理由を調査します。nucleo_f767zi 用の ping_pong ファームウェアのビルドが完了すれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
cmake, shell
領域
build-system, embedded-iot
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。