-
Notifications
You must be signed in to change notification settings - Fork 6.8k
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 H3ULCB board #31307
Add Renesas H3ULCB board #31307
Changes from all commits
2567c07
d302f04
d59b43b
0e88dfc
0c03f3e
afb0d3e
1f397b1
18f77c1
4d10b00
43273b0
09cc760
feffc15
445f3ab
eebdedf
4d7c877
84fe293
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# Copyright (c) 2021 IoT.bzh | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
config BOARD_RCAR_H3ULCB_CR7 | ||
bool "Cortex-R7 for Renesas H3ULCB" | ||
depends on SOC_R8A77951 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# Copyright (c) 2021 IoT.bzh | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
if BOARD_RCAR_H3ULCB_CR7 | ||
config BOARD | ||
default "rcar_h3ulcb_cr7" | ||
endif # BOARD_RCAR_H3ULCB_CR7 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# SPDX-License-Identifier: Apache-2.0 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,169 @@ | ||
.. _rcar_h3ulcb_boards: | ||
|
||
Renesas R-Car H3ULCB | ||
#################### | ||
|
||
Overview | ||
******** | ||
- The H3 Starter Kit board is designed for evaluating the features and performance of the R-CAR H3 device from Renesas Electronics and it is also used for developing and evaluating application software for these R-CAR H3. | ||
|
||
- The H3 Starter Kit, based on the R-CAR H3 SIP, comes with LPDDR4 @4GB in 2-channel, each 64-bit wide+Hyperflash @64MB, CSI2 interfaces and several communication interfaces like USB, Ethernet, HDMI and can work standalone or can be adapted to other boards, via 440pin connector on bottom side. | ||
|
||
It is possible to order 2 different types of H3 Starter Kit Boards, one with Ethernet connection onboard and one with Ethernet connection on ComExpress. | ||
|
||
.. figure:: img/rcar_h3ulcb_starter_kit.jpg | ||
:width: 460px | ||
:align: center | ||
:height: 288px | ||
:alt: R-Car starter kit | ||
|
||
.. Note:: The H3ULCB board can be plugged on a Renesas Kingfisher Infotainment daughter board through COM Express connector in order to physically access more I/O. CAUTION : In this case, power supply is managed by the daughter board. | ||
|
||
More information about the board can be found at `Renesas R-Car Starter Kit website`_. | ||
|
||
Hardware | ||
******** | ||
|
||
Hardware capabilities for the H3ULCB for can be found on the `eLinux H3SK page`_ of the board. | ||
|
||
.. figure:: img/rcar_h3ulcb_features.jpg | ||
:width: 286px | ||
:align: center | ||
:height: 280px | ||
:alt: R-Car starter kit features | ||
|
||
.. Note:: Zephyr will be booted on the CR7 processor provided for RTOS purpose. | ||
|
||
More information about the SoC that equips the board can be found here : | ||
|
||
- `Renesas R-Car H3 chip`_ | ||
|
||
Supported Features | ||
================== | ||
|
||
Here is the current supported features when running Zephyr Project on the R-Car ULCB CR7: | ||
|
||
+-----------+------------------------------+ | ||
| Interface | Driver/components | | ||
+===========+==============================+ | ||
| CLOCK | clock_control | | ||
+-----------+------------------------------+ | ||
| GPIO | gpio | | ||
+-----------+------------------------------+ | ||
| GIC | GIC 400 interrupt controller | | ||
+-----------+------------------------------+ | ||
|
||
It's also currently possible to write on the ram console. | ||
|
||
More features will be supported soon. | ||
|
||
|
||
Connections and IOs | ||
=================== | ||
|
||
H3ULCB Board : | ||
------------------ | ||
|
||
Here are official IOs figures from eLinux for H3ULCB board : | ||
|
||
`H3SK top view`_ | ||
|
||
`H3SK bottom view`_ | ||
|
||
Kingfisher Infotainment daughter board : | ||
---------------------------------------- | ||
|
||
When connected to Kingfisher Infotainment board through COMExpress connector, the board is exposing much more IOs. | ||
|
||
Here are official IOs figures from eLinux for Kingfisher Infotainment board : | ||
|
||
`Kingfisher top view`_ | ||
|
||
`Kingfisher bottom view`_ | ||
|
||
Programming and Debugging | ||
************************* | ||
|
||
The Cortex®-R7 of rcar_h3ulcb board needs to be started by the Cortex®-A cores. Cortex®-A cores are responsible to load the Cortex®-R7 binary application into the RAM, and get the Cortex®-R7 out of reset. The Cortex®-A can currently perform these steps at bootloader level. | ||
|
||
Building | ||
======== | ||
|
||
Applications for the ``rcar_h3ulcb`` board configuration can be built in the usual way (see :ref:`build_an_application` for more details). | ||
|
||
.. zephyr-app-commands:: | ||
:zephyr-app: samples/hello_world | ||
:board: rcar_h3ulcb | ||
:goals: build | ||
|
||
Debugging | ||
========= | ||
You can debug an application using OpenOCD and GDB. The Solution proposed below is using a OpenOCD custom version that support R-Car ULCB boards Cortex®-R7. | ||
|
||
Get Renesas ready OpenOCD version | ||
--------------------------------- | ||
|
||
.. code-block:: bash | ||
|
||
git clone --branch renesas https://github.com/iotbzh/openocd.git | ||
cd openocd | ||
./bootstrap | ||
./configure | ||
make | ||
sudo make install | ||
|
||
Start OpenOCD | ||
------------- | ||
|
||
.. code-block:: bash | ||
|
||
cd openocd | ||
sudo openocd -f tcl/interface/ftdi/olimex-arm-usb-ocd-h.cfg -f tcl/board/renesas_h3ulcb.cfg | ||
|
||
In a new terminal session | ||
|
||
.. code-block:: bash | ||
|
||
telnet 127.0.0.1 4444 | ||
r8a77950.r7 arp_examine | ||
|
||
Start Debugging | ||
--------------- | ||
|
||
In a new terminal session | ||
|
||
.. code-block:: bash | ||
|
||
{ZEPHYR_SDK}/arm-zephyr-eabi/bin/arm-zephyr-eabi-gdb {APP_BUILD_DIR}/zephyr/zephyr.elf | ||
|
||
References | ||
********** | ||
|
||
- `Renesas R-Car Starter Kit website`_ | ||
- `Renesas R-Car H3 chip`_ | ||
- `eLinux H3SK page`_ | ||
- `eLinux Kingfisher page`_ | ||
|
||
.. _Renesas R-Car Starter Kit website: | ||
https://www.renesas.com/br/en/products/automotive-products/automotive-system-chips-socs/r-car-h3-m3-starter-kit | ||
|
||
.. _Renesas R-Car H3 chip: | ||
https://www.renesas.com/eu/en/products/automotive-products/automotive-system-chips-socs/r-car-h3-high-end-automotive-system-chip-soc-vehicle-infotainment-and-driving-safety-support | ||
|
||
.. _eLinux H3SK page: | ||
https://elinux.org/R-Car/Boards/H3SK | ||
|
||
.. _H3SK top view: | ||
https://elinux.org/images/1/1f/R-Car-H3-topview.jpg | ||
|
||
.. _H3SK bottom view: | ||
https://elinux.org/images/c/c2/R-Car-H3-bottomview.jpg | ||
|
||
.. _eLinux Kingfisher page: | ||
https://elinux.org/R-Car/Boards/Kingfisher | ||
|
||
.. _Kingfisher top view: | ||
https://elinux.org/images/0/08/Kfisher_top_specs.png | ||
|
||
.. _Kingfisher bottom view: | ||
https://elinux.org/images/0/06/Kfisher_bot_specs.png |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
/* | ||
* Copyright (c) 2021 IoT.bzh | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
* | ||
*/ | ||
|
||
/dts-v1/; | ||
#include <arm/renesas/gen3/r8a77951.dtsi> | ||
|
||
/ { | ||
model = "Renesas h3ulcb board"; | ||
compatible = "renesas,h3ulcb-cr7"; | ||
|
||
chosen { | ||
zephyr,sram = &sram0; | ||
}; | ||
|
||
leds { | ||
compatible = "gpio-leds"; | ||
user_led: led_5 { | ||
gpios = <&gpio6 12 GPIO_ACTIVE_HIGH>; | ||
label = "User LED"; | ||
}; | ||
}; | ||
|
||
gpio_keys { | ||
compatible = "gpio-keys"; | ||
user_button: sw3 { | ||
gpios = <&gpio6 11 GPIO_ACTIVE_LOW>; | ||
label = "User switch"; | ||
}; | ||
}; | ||
|
||
aliases { | ||
led0 = &user_led; | ||
sw0 = &user_button; | ||
}; | ||
}; | ||
|
||
&cmt0 { | ||
status = "okay"; | ||
clock-frequency = <32000>; | ||
}; | ||
|
||
&gpio6 { | ||
status = "okay"; | ||
}; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
identifier: rcar_h3ulcb_cr7 | ||
name: Cortex r7 for Renesas H3ULCB | ||
type: mcu | ||
arch: arm | ||
toolchain: | ||
- zephyr | ||
- gnuarmemb | ||
ram: 768 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. How about flash @julien-massot ? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There is no flash support at the moment. The cortex-r7 is a remote processor of the CA57/CA53, we only use ram area at the moment, the CA57/CA53 processors load the firmware and then start this CR7 processor. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
CONFIG_SOC_R8A77951=y | ||
CONFIG_SOC_SERIES_RCAR_GEN3=y | ||
CONFIG_BOARD_RCAR_H3ULCB_CR7=y | ||
CONFIG_CLOCK_CONTROL=y | ||
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=32000 | ||
CONFIG_RCAR_CMT_TIMER=y | ||
CONFIG_CONSOLE=y | ||
CONFIG_RAM_CONSOLE=y | ||
CONFIG_FLASH_SIZE=0 | ||
CONFIG_FLASH_BASE_ADDRESS=0 | ||
CONFIG_GPIO=y | ||
CONFIG_GPIO_RCAR=y | ||
bbolen marked this conversation as resolved.
Show resolved
Hide resolved
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# Renesas RCar Gen3 | ||
|
||
# Copyright (c) 2021 IoT.bzh | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
config CLOCK_CONTROL_RCAR_CPG_MSSR | ||
bool "RCar CPG MSSR driver" | ||
depends on SOC_SERIES_RCAR_GEN3 | ||
help | ||
Enable support for Renesas RCar CPG MSSR driver. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe you could consider upstreaming those patches or merging them into our OpenOCD fork, which includes support for Zephyr thread awareness. Otherwise users of this board won't get those extra features.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi, Zephyr awareness is included in my own fork, i'm still thinking about either cleaning and contributing to zephyr openocd, or upstream openocd, or finding another tool.