Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add renesas RA6M5 (backport #390) #391

Merged
merged 2 commits into from
Sep 20, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 18 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This ROS 2 package is the entry point for building micro-ROS apps for different
- [Supported platforms](#supported-platforms)
- [Standalone build system tools](#standalone-build-system-tools)
- [Dependencies](#dependencies)
- [Quick Start](#quick-start)
- [Quick start](#quick-start)
- [Building](#building)
- [Creating micro-ROS firmware](#creating-micro-ros-firmware)
- [Configuring micro-ROS firmware](#configuring-micro-ros-firmware)
Expand All @@ -20,22 +20,23 @@ This ROS 2 package is the entry point for building micro-ROS apps for different

This package is the **official build system for micro-ROS**. It provides tools and utils to crosscompile micro-ROS with just the common ROS 2 tools for these platforms:

| RTOS | Platform | Version | Example |
| ---------------------------------------- | ---------------------------------------------------------------------------------------------------- | -------------------- | ---------------------------- |
| [Nuttx](https://nuttx.org/) | [Olimex STM32-E407](https://www.olimex.com/Products/ARM/ST/STM32-E407/open-source-hardware) | v7.29 | `nuttx olimex-stm32-e407` |
| [FreeRTOS](https://www.freertos.org/) | [Crazyflie 2.1](https://www.bitcraze.io/crazyflie-2-1/) | v10.2.1 - CF 2020.06 | `freertos crazyflie21` |
| [FreeRTOS](https://www.freertos.org/) | [Olimex STM32-E407](https://www.olimex.com/Products/ARM/ST/STM32-E407/open-source-hardware) | STM32CubeMX latest | `freertos olimex-stm32-e407` |
| [FreeRTOS](https://www.freertos.org/) | [ST Nucleo F446RE](https://www.st.com/en/evaluation-tools/nucleo-f446re.html) <sup>1</sup> | STM32CubeMX latest | `freertos nucleo_f446re` |
| [FreeRTOS](https://www.freertos.org/) | [ST Nucleo F446ZE](https://www.st.com/en/evaluation-tools/nucleo-f446ze.html) <sup>1</sup> | STM32CubeMX latest | `freertos nucleo_f446ze` |
| [FreeRTOS](https://www.freertos.org/) | [ST Nucleo F746ZG](https://www.st.com/en/evaluation-tools/nucleo-f746zg.html) <sup>1</sup> | STM32CubeMX latest | `freertos nucleo_f746zg` |
| [FreeRTOS](https://www.freertos.org/) | [ST Nucleo F767ZI](https://www.st.com/en/evaluation-tools/nucleo-f746zg.html) <sup>1</sup> | STM32CubeMX latest | `freertos nucleo_f767zi` |
| [FreeRTOS](https://www.freertos.org/) | [Espressif ESP32](https://www.espressif.com/en/products/socs/esp32/overview) | v8.2.0 | `freertos esp32` |
| [Zephyr](https://www.zephyrproject.org/) | [Olimex STM32-E407](https://www.olimex.com/Products/ARM/ST/STM32-E407/open-source-hardware) | v2.6.0 | `zephyr olimex-stm32-e407` |
| [Zephyr](https://www.zephyrproject.org/) | [ST B-L475E-IOT01A](https://docs.zephyrproject.org/latest/boards/arm/disco_l475_iot1/doc/index.html) | v2.6.0 | `zephyr discovery_l475_iot1` |
| [Zephyr](https://www.zephyrproject.org/) | [ST Nucleo H743ZI](https://www.st.com/en/evaluation-tools/nucleo-h743zi.html) <sup>1</sup> | v2.6.0 | `zephyr nucleo_h743zi` |
| [Zephyr](https://www.zephyrproject.org/) | [Zephyr emulator](https://docs.zephyrproject.org/2.3.0/boards/posix/native_posix/doc/index.html) | v2.6.0 | `zephyr host` |
| - | Static library (.a) and headers (.h) <sup>3</sup> | - | `generate_lib` |
| Linux | *Host <sup>2</sup>* | Ubuntu 18.04/20.04 | `host` |
| RTOS | Platform | Version | Example |
| ------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ---------------------------- |
| [Azure RTOS](https://azure.microsoft.com/es-es/services/rtos/) / [FreeRTOS](https://www.freertos.org/) / Bare metal | [Renesas RA6M5](https://www.renesas.com/us/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ra6m5-200mhz-arm-cortex-m33-trustzone-highest-integration-ethernet-and-can-fde) | Renesas e<sup>2</sup> studio | `renesas_ra ra6m5` |
| [Nuttx](https://nuttx.org/) | [Olimex STM32-E407](https://www.olimex.com/Products/ARM/ST/STM32-E407/open-source-hardware) | v7.29 | `nuttx olimex-stm32-e407` |
| [FreeRTOS](https://www.freertos.org/) | [Crazyflie 2.1](https://www.bitcraze.io/crazyflie-2-1/) | v10.2.1 - CF 2020.06 | `freertos crazyflie21` |
| [FreeRTOS](https://www.freertos.org/) | [Olimex STM32-E407](https://www.olimex.com/Products/ARM/ST/STM32-E407/open-source-hardware) | STM32CubeMX latest | `freertos olimex-stm32-e407` |
| [FreeRTOS](https://www.freertos.org/) | [ST Nucleo F446RE](https://www.st.com/en/evaluation-tools/nucleo-f446re.html) <sup>1</sup> | STM32CubeMX latest | `freertos nucleo_f446re` |
| [FreeRTOS](https://www.freertos.org/) | [ST Nucleo F446ZE](https://www.st.com/en/evaluation-tools/nucleo-f446ze.html) <sup>1</sup> | STM32CubeMX latest | `freertos nucleo_f446ze` |
| [FreeRTOS](https://www.freertos.org/) | [ST Nucleo F746ZG](https://www.st.com/en/evaluation-tools/nucleo-f746zg.html) <sup>1</sup> | STM32CubeMX latest | `freertos nucleo_f746zg` |
| [FreeRTOS](https://www.freertos.org/) | [ST Nucleo F767ZI](https://www.st.com/en/evaluation-tools/nucleo-f746zg.html) <sup>1</sup> | STM32CubeMX latest | `freertos nucleo_f767zi` |
| [FreeRTOS](https://www.freertos.org/) | [Espressif ESP32](https://www.espressif.com/en/products/socs/esp32/overview) | v8.2.0 | `freertos esp32` |
| [Zephyr](https://www.zephyrproject.org/) | [Olimex STM32-E407](https://www.olimex.com/Products/ARM/ST/STM32-E407/open-source-hardware) | v2.6.0 | `zephyr olimex-stm32-e407` |
| [Zephyr](https://www.zephyrproject.org/) | [ST B-L475E-IOT01A](https://docs.zephyrproject.org/latest/boards/arm/disco_l475_iot1/doc/index.html) | v2.6.0 | `zephyr discovery_l475_iot1` |
| [Zephyr](https://www.zephyrproject.org/) | [ST Nucleo H743ZI](https://www.st.com/en/evaluation-tools/nucleo-h743zi.html) <sup>1</sup> | v2.6.0 | `zephyr nucleo_h743zi` |
| [Zephyr](https://www.zephyrproject.org/) | [Zephyr emulator](https://docs.zephyrproject.org/2.3.0/boards/posix/native_posix/doc/index.html) | v2.6.0 | `zephyr host` |
| - | Static library (.a) and headers (.h) <sup>3</sup> | - | `generate_lib` |
| Linux | *Host <sup>2</sup>* | Ubuntu 18.04/20.04 | `host` |

*<sup>1</sup> Community supported, may have lack of official support*

Expand Down
2 changes: 2 additions & 0 deletions config/renesas_ra/dev_ros2_packages.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
keep:
None
1 change: 1 addition & 0 deletions config/renesas_ra/dev_uros_packages.repos
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
repositories:
24 changes: 24 additions & 0 deletions config/renesas_ra/list_apps.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
function print_available_apps {
echo "Available apps for Renesas RA and $PLATFORM:"

UROS_APPS=$FW_TARGETDIR/micro_ros_renesas_demos

pushd $UROS_APPS >/dev/null
for app in $(ls -d */ | cut -f1 -d'/'); do
echo "+-- $app"
done
popd >/dev/null
}

function check_available_app {

UROS_APPS=$FW_TARGETDIR/micro_ros_renesas_demos

pushd $UROS_APPS >/dev/null
if [ ! -d $1 ]; then
echo "App $1 for Renesas RA not available"
print_available_apps
exit 1
fi
popd >/dev/null
}
5 changes: 5 additions & 0 deletions config/renesas_ra/ra6m5/board.repos
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
repositories:
micro_ros_renesas_demos:
type: git
url: https://github.com/micro-ROS/micro_ros_renesas_demos
version: foxy
18 changes: 18 additions & 0 deletions config/renesas_ra/ra6m5/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
export UROS_APP=$(head -n1 $FW_TARGETDIR/APP | tail -n1)
export UROS_APP_FOLDER="$FW_TARGETDIR/micro_ros_renesas_demos/$UROS_APP"

if [ -d "$UROS_APP_FOLDER" ]; then
echo "Selected app: $UROS_APP"
else
echo "App not found: $UROS_APP"
print_available_apps
exit 1
fi

pushd $UROS_APP_FOLDER
git submodule init
git submodule update

print "Use Renesas e2studio to build and flash the project in $UROS_APP_FOLDER"

popd
1 change: 1 addition & 0 deletions config/renesas_ra/ra6m5/client_uros_packages.repos
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
repositories:
1 change: 1 addition & 0 deletions config/renesas_ra/ra6m5/configure.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
echo $CONFIG_NAME > $FW_TARGETDIR/APP
14 changes: 14 additions & 0 deletions config/renesas_ra/ra6m5/create.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
pushd $FW_TARGETDIR >/dev/null
# # Install toolchain
# mkdir toolchain

# # Install toolchain
# echo "Downloading ARM compiler, this may take a while"
# curl -fsSLOk https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
# tar --strip-components=1 -xvjf gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2 -C toolchain > /dev/null
# rm gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2

# Import repos
vcs import --input $PREFIX/config/$RTOS/$PLATFORM/board.repos

popd >/dev/null
6 changes: 6 additions & 0 deletions config/renesas_ra/ra6m5/flash.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export UROS_APP=$(head -n1 $FW_TARGETDIR/APP | tail -n1)
export UROS_APP_FOLDER="$FW_TARGETDIR/micro_ros_renesas_demos/$UROS_APP"

pushd $UROS_APP_FOLDER
print "Use Renesas e2studio to build and flash the project in $UROS_APP_FOLDER"
popd
2 changes: 1 addition & 1 deletion scripts/create_firmware_ws.sh
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ print_available_platforms () {
if [ $# -ge 1 ]; then
RTOS=$1
else
echo "Syntax: ros2 run micro_ros_setup create_firmware_ws.sh <RTOS name> [<platform>]"
echo "Syntax: ros2 run micro_ros_setup create_firmware_ws.sh <package> [<platform>]"
print_available_platforms
exit 1
fi
Expand Down