micro_ros_setup: Zephyr failed build RMW with new board STM32F401 Nucleo-64 - nucleo_f401re

Hello,

I wanted to build micro-ROS for a new board. Similar to #74 the build process failed during setting up the rmw_implementation.

here is the error code:

--- stderr: rmw_microxrcedds                                                                                 
CMake Warning at CMakeLists.txt:153 (find_package):
  By not providing "Findrosidl_typesupport_microxrcedds_cpp.cmake" in
  CMAKE_MODULE_PATH this project has asked CMake to find a package
  configuration file provided by "rosidl_typesupport_microxrcedds_cpp", but
  CMake did not find one.

  Could not find a package configuration file provided by
  "rosidl_typesupport_microxrcedds_cpp" with any of the following names:

    rosidl_typesupport_microxrcedds_cppConfig.cmake
    rosidl_typesupport_microxrcedds_cpp-config.cmake

  Add the installation prefix of "rosidl_typesupport_microxrcedds_cpp" to
  CMAKE_PREFIX_PATH or set "rosidl_typesupport_microxrcedds_cpp_DIR" to a
  directory containing one of the above files.  If
  "rosidl_typesupport_microxrcedds_cpp" provides a separate development
  package or SDK, be sure it has been installed.


---
Finished <<< rmw_microxrcedds [0.69s]
Starting >>> rmw_implementation
Finished <<< rcl_logging_noop [0.54s]                                                            
Starting >>> libyaml_vendor
--- stderr: rmw_implementation                                                                     
CMake Error at /opt/ros/dashing/share/rosidl_typesupport_fastrtps_cpp/cmake/rosidl_typesupport_fastrtps_cpp-extras.cmake:6 (find_package):
  Could not find a configuration file for package "fastcdr" that is
  compatible with requested version "".

  The following configuration files were considered but not accepted:

    /opt/ros/dashing/share/fastcdr/cmake/fastcdr-config.cmake, version: 1.0.10 (64bit)
    /usr/local/lib/cmake/fastcdr/fastcdr-config.cmake, version: 1.0.13 (64bit)

Call Stack (most recent call first):
  /opt/ros/dashing/share/rosidl_typesupport_fastrtps_cpp/cmake/rosidl_typesupport_fastrtps_cppConfig.cmake:38 (include)
  /opt/ros/dashing/share/rmw_fastrtps_cpp/cmake/ament_cmake_export_dependencies-extras.cmake:21 (find_package)
  /opt/ros/dashing/share/rmw_fastrtps_cpp/cmake/rmw_fastrtps_cppConfig.cmake:38 (include)
  /home/flo/microros_ws/firmware/mcu_ws/install/share/rmw_implementation_cmake/cmake/get_default_rmw_implementation.cmake:62 (find_package)
  CMakeLists.txt:25 (get_default_rmw_implementation)


---
Failed   <<< rmw_implementation	[ Exited with code 1 ]
Aborted  <<< libyaml_vendor                                     
                                  
Summary: 15 packages finished [5.03s]
  1 package failed: rmw_implementation
  1 package aborted: libyaml_vendor
  2 packages had stderr output: rmw_implementation rmw_microxrcedds
  32 packages not processed
Makefile:57: recipe for target 'colcon_compile' failed
make[3]: *** [colcon_compile] Error 1
make[3]: Leaving directory '/home/flo/microros_ws/firmware/zephyr_apps/microros_extensions'
CMakeFiles/microroslib_project.dir/build.make:134: recipe for target 'microros_extensions/src/microroslib_project-stamp/microroslib_project-build' failed
make[2]: *** [microros_extensions/src/microroslib_project-stamp/microroslib_project-build] Error 2
make[2]: Leaving directory '/home/flo/microros_ws/firmware/zephyrproject/build'
CMakeFiles/Makefile2:2087: recipe for target 'CMakeFiles/microroslib_project.dir/all' failed
make[1]: *** [CMakeFiles/microroslib_project.dir/all] Error 2
make[1]: Leaving directory '/home/flo/microros_ws/firmware/zephyrproject/build'
Makefile:106: recipe for target 'all' failed
make: *** [all] Error 2

Can somebody give me a hint about how to add the necessary config/dtb/??? for the rmw to use the serial with this board? I tried to re-engineer your different scripts and examples but I’m still not sure where I must add this board… This is more the fault of the complex build complex by zephyr, but I hope you can give me a few hints about it… 😄

It would be nice to increase the documentation about setting up an own board.

Side fact: I needed to get a newer cmake version via pip3 in order to start building this. The scripts worked sort of straight forward after adding nucleo_f401re as new board descriptor here and there. But a nice documentation about this would help a lot! I might even be willing to help writing it.

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 33 (33 by maintainers)

Most upvoted comments

Hey @pablogs9, I just tested it and it worked with the updated branch! 🏆 Disabling PRINTK=n worked now as well with your disable banner config!

I’ll close this issue now and add the PR about flashing the nucle_f401re board with west flash like the other ST board. Thank you for your effort! 😃

Hi again @gramss, please check my new commit here: https://github.com/micro-ROS/zephyr_apps/tree/feature/add_nucleo_f401re_support

I have changed the serial transport to a polling approach. Well, I have test it in the ST Disco (same bridged UART over USB approach than your board) and it works. Please test it a tell me your results.