R Car X5H Ironhide Sample and Demo hardware configuration - renesas/zephyr GitHub Wiki
Followings are hardware connection and test samples for the R-Car X5H Ironhide board.
| Physical Interface | Location | Software Interface | Converter | Further Information |
|---|---|---|---|---|
| CN44_USB_PORT (USB 2.0 Micro-B) | CPU Board | SCIF1/HSCIF0 | FT2232H-56Q | Default Zephyr serial on SCIF1/ Linux serial on HSCIF0 |
The default UART port can be accessed by connecting a USB 2.0 Micro-B cable to the CN44_USB_PORT on the board.
Open a serial terminal, such as Tera Term or minicom, with the following settings:
- Speed: 115200
- Data: 8 bits
- Parity: None
- Stop bits: 1
For required tool and environment setup to develop Zephyr, please check: System Requirements
west build -p always -b rcar_ironhide_x5h/r8a78000/r52 <application_path>At this time, no direct flashing method is officially supported by this Zephyr port. However, it is possible to load the Zephyr binary via specific method.
-
- Hardware configuration: refer to default UART connection.
- Build command:
$ west build -b rcar_ironhide_x5h/r8a78000/r52 -p always samples/hello_world
- Flash command: refer to 2. Flash Command.
-
echo_bot (samples/drivers/uart/echo_bot):
- Hardware configuration: refer to default UART connection.
- Build command:
west build -p always -b rcar_ironhide_x5h/r8a78000/r52 samples/drivers/uart/echo_bot
- Flash command: refer to 2. Flash Command.
-
zTest uart_basic_api (tests/drivers/uart/uart_basic_api):
- Hardware configuration: refer to default UART connection.
- Build command:
west build -p always -b rcar_ironhide_x5h/r8a78000/r52 tests/drivers/uart/uart_basic_api
- Flash command: refer to 2. Flash Command.
-
Blinky (samples/basic/blinky): Simple LED blinky
- HW configuration: refer to default UART connection.
- Build command:
$ west build -p always -b rcar_ironhide_x5h/r8a78000/r52 samples/basic/blinky - Flash command: refer to 2. Flash Command.
-
Button (samples/basic/button): Simple button test
- HW configuration: refer to default UART connection.
- Build command:
$ west build -p always -b rcar_ironhide_x5h/r8a78000/r52 samples/basic/button - Flash command: refer to 2. Flash Command.
- zTest chan_blen_transfer (tests/drivers/dma/chan_blen_transfer):
- HW configuration: refer to default UART connection.
- Build command:
$ west build -p always -b rcar_ironhide_x5h/r8a78000/r52 tests/drivers/dma/chan_blen_transfer - Flash command: refer to 2. Flash Command.
- Renesas R-Car Ironhide X5H (rcar_ironhide_x5h_r8a78000_r52)
- Ethernet interface used: TSN Endpoint Station channel 4 (
tsnes4), forwarded through R-Switch3 (rswitch3) Port 5 over SGMII to an external TI DP83869 copper PHY.
TSNES4
-> R-Switch3 (rswitch3) Port 5 (port5, port@5)
-> XPCS channel 5 (pcs_ch5, SGMII)
-> Multi-Protocol PHY / SerDes (mp_phy)
-> TI DP83869 PHY (phy2, on mdio4, address 2)
| Signal | Pin | Function | Description |
|---|---|---|---|
| RSW3 ETHA4 MDC | PIN_ETH25G0_MDC | FUNC_ETH25G2_MDC | MDIO clock for the mdio4 PHY management bus |
| RSW3 ETHA4 MDIO | PIN_ETH25G0_MDIO | FUNC_ETH25G2_MDIO | MDIO data for the mdio4 PHY management bus |
The SGMII data lanes between the SoC (XPCS channel 5, via the internal SerDes
mp_phy) and the DP83869 PHY are routed internally on the board and do not require external jumper configuration.
Defined in rcar_ironhide_x5h_r8a78000_r52-pinctrl.dtsi:
rsw3_etha4_mdc_default: rsw3_etha4_mdc_default {
pin = <PIN_ETH25G0_MDC FUNC_ETH25G2_MDC>;
};
rsw3_etha4_mdio_default: rsw3_etha4_mdio_default {
pin = <PIN_ETH25G0_MDIO FUNC_ETH25G2_MDIO>;
};
| Parameter | Value |
|---|---|
| PHY Type | TI DP83869 (Copper Ethernet PHY) |
| PHY Address | 2 (on mdio4 bus) |
| Interface Mode | SGMII (DP83869_OP_MODE_SGMII_COPPER_ETHERNET) |
MAC Address (tsnes4) |
74:90:50:48:DF:57 (fixed, set via local-mac-address in board DTS) |
| Config Symbol | Default | Range | Description |
|---|---|---|---|
CONFIG_ETH_RENESAS_RCARSOC_TSNES |
y (auto) | — | Enable the Renesas TSN Endpoint Station (TSN-ES) Ethernet controller |
CONFIG_ETH_RENESAS_RCARSOC_TSNES_BUFFER_POOL_SIZE |
3145728 | 65536–4194304 | Total DMA buffer pool size (bytes) |
CONFIG_ETH_RENESAS_RCARSOC_TSNES_MAX_FRAME_SIZE |
1522 | 64–9000 | Maximum Ethernet frame size (bytes) |
CONFIG_ETH_RENESAS_RCARSOC_TSNES_RX_THREAD_PRIORITY |
2 | — | RX descriptor processing thread priority |
CONFIG_ETH_RENESAS_RCARSOC_TSNES_RX_THREAD_STACK |
2048 | 1024–8192 | RX descriptor processing thread stack size (bytes) |
CONFIG_ETH_RENESAS_RCARSOC_RSWITCH3 |
y (auto) | — | Enable the Renesas R-Switch 3 driver (switch fabric that TSN-ES attaches to) |
CONFIG_ETH_RENESAS_RSWITCH3_TIMEOUT |
100000 | — | Register access timeout (us) |
The Ethernet path nodes are defined in rcar_gen5_cr52.dtsi / r8a78000.dtsi and are disabled by default:
/* R-Switch 3 Port 5 (connects tsnes4 to phy2 via XPCS channel 5) */
port5: port@5 {
compatible = "renesas,rcarsoc-rswitch3-port";
reg = <5>;
xpcs = <&pcs_ch5>;
phy-handle = <&phy2>;
phy-mode = "sgmii";
status = "disabled";
};
/* TSN Endpoint Station channel 4 */
tsnes4: ethernet@c9c70000 {
compatible = "renesas,rcarsoc-eth-tsnes";
channel = <4>;
renesas,rswitch = <&rswitch3>;
renesas,rswitch-if = <9>;
renesas,rswitch-forward-ports = <BIT(5)>;
status = "disabled";
};
Enabled in rcar_ironhide_x5h_r8a78000_r52.dts (MDIO bus, PHY and MAC address):
&mdio4 {
pinctrl-0 = <&rsw3_etha4_mdc_default &rsw3_etha4_mdio_default>;
pinctrl-names = "default";
status = "disabled";
phy2: ethernet-phy@2 {
compatible = "ti,dp83869";
reg = <2>;
ti,op-mode = <DP83869_OP_MODE_SGMII_COPPER_ETHERNET>;
status = "disabled";
};
};
&tsnes4 {
pinctrl-0 = <&tsnes4_match_default
&tsnes4_pps_default
&tsnes4_capture_default>;
pinctrl-names = "default";
local-mac-address = [74 90 50 48 DF 57];
status = "disabled";
};
mdio4,phy2,tsnes4andport5are keptdisabledat board level and are enabled per-sample via a board devicetree overlay (see below), since not every application needs the Ethernet interface.
The zperf sample is an Ethernet network benchmark tool that measures upload and download throughput using TCP or UDP.
Requirements:
- iPerf (v2.0.10 and newer) installed on the host machine
- Wireshark installed on the host machine (optional)
Board-specific files added:
samples/net/zperf/boards/rcar_ironhide_x5h_r8a78000_r52.confsamples/net/zperf/boards/rcar_ironhide_x5h_r8a78000_r52.overlay
Build command:
west build -p always -b rcar_ironhide_x5h/r8a78000/r52 samples/net/zperfFlash command: refer to 2. Flash Command.
Board overlay (rcar_ironhide_x5h_r8a78000_r52.overlay):
&tsnes4 {
status = "okay";
};
&port5 {
status = "okay";
};
&mdio4 {
status = "okay";
};
&phy2 {
status = "okay";
};
Board config (rcar_ironhide_x5h_r8a78000_r52.conf):
CONFIG_NET_L2_ETHERNET=y
CONFIG_NET_STATISTICS=y
CONFIG_NET_CONFIG_MY_IPV4_ADDR="10.239.136.215"
CONFIG_NET_CONFIG_PEER_IPV4_ADDR="10.239.136.1"
CONFIG_NET_PKT_RX_COUNT=512
CONFIG_NET_PKT_TX_COUNT=512
CONFIG_NET_BUF_RX_COUNT=512
CONFIG_NET_BUF_TX_COUNT=512
CONFIG_NET_BUF_DATA_SIZE=1024
CONFIG_NET_TX_STACK_SIZE=8192
CONFIG_NET_RX_STACK_SIZE=8192
CONFIG_NET_TCP_WORKQ_STACK_SIZE=8192
CONFIG_NET_MGMT_EVENT_STACK_SIZE=8192
CONFIG_NET_SOCKETS_SERVICE=y
CONFIG_NET_SOCKETS_SERVICE_STACK_SIZE=8192
Note:
CONFIG_NET_CONFIG_MY_IPV4_ADDR/CONFIG_NET_CONFIG_PEER_IPV4_ADDRare set to static addresses for the bring-up test network; update them to match the IP addresses used on your own bench before running.
After boot, the board configures the R-Switch3 forwarding path and acquires an IPv4 address. The boot sequence observed:
*** Booting Zephyr OS build wip_rcarsoc_20260514-31-g24496102a7f7 ***
[00:00:00.159,000] <inf> net_config: Initializing network
[00:00:00.159,000] <inf> net_config: Waiting interface 1 (0x10260a30) to be up...
[00:00:04.162,000] <inf> eth_rswitch3: porrt_id: 5, link up: 1, speed: 32
[00:00:04.166,000] <inf> eth_rswitch3: rswitch3_etha_wait_link_verification successful
[00:00:04.172,000] <inf> eth_rswitch3: Configured forwarding between TSN-ES4 (port 9) and external ports mask 0x20
[00:00:04.172,000] <inf> net_config: Interface 1 (0x10260a30) coming up
[00:00:04.172,000] <inf> net_config: IPv4 address: 10.239.136.215
[00:00:04.273,000] <inf> net_config: IPv6 address: 2001:db8::1
[00:00:04.273,000] <inf> net_config: IPv6 address: 2001:db8::1
Tests were run against a Linux host (10.239.136.173) connected to the board (10.239.136.215), cross-checked with iperf running on the host side.
TCP Upload — zperf tcp upload <server_ip> <port> <duration_s> <packet_size>:
Zephyr side:

Host side (iperf -s -l 1K -B 10.239.136.173 -p 5001):

TCP Download — zperf tcp download <port> <server_ip>:
Zephyr side:

Host side (iperf -l 1K -c 10.239.136.215 -p 5001):

UDP Download — zperf udp download <port> <server_ip>:
Zephyr side:

Host side (iperf -u -l 1K -c 10.239.136.215 -p 5001 -b 100M):

UDP Upload — zperf udp upload <server_ip> <port> <duration_s> <packet_size> <rate>:
Zephyr side:

Host side (iperf -u -s -l 1K -B 10.239.136.173 -p 5001):

TX path (board → host) sustains ~44 Mbps with 0% packet loss.
The dhcpv4_client sample starts a DHCPv4 client, gets an IPv4 address from the DHCPv4 server, and prints address, lease time, netmask and router information to the serial console.
Requirements:
- DHCPv4 Server: Install a server like
dnsmasqor ISCdhcpd/ keaon the host machine - Wireshark installed on the host machine (optional)
Board-specific files added:
samples/net/dhcpv4_client/boards/rcar_ironhide_x5h_r8a78000_r52.confsamples/net/dhcpv4_client/boards/rcar_ironhide_x5h_r8a78000_r52.overlay
Build command:
west build -p always -b rcar_ironhide_x5h/r8a78000/r52 samples/net/dhcpv4_clientFlash command: refer to 2. Flash Command.
Board overlay (rcar_ironhide_x5h_r8a78000_r52.overlay): same as the zperf overlay above — enables tsnes4, port5, mdio4 and phy2.
Board config (rcar_ironhide_x5h_r8a78000_r52.conf):
CONFIG_NET_L2_ETHERNET=y

Note: The warning
DHCP server provided more DNS servers than can be savedis non-critical and does not affect DHCPv4 functionality.
A Wireshark capture on the host, filtered on eth.addr == 74:90:50:48:DF:57 (the tsnes4 MAC address), confirms the DHCP Discover/Request frames on the wire, sourced from RenesasE_48:df:57 (74:90:50:48:df:57).

This sample is used to test the R-Car Gen5 I2S driver by capturing audio from a codec into a RAM buffer and then playing the same buffer back through the codec.
- Connect Upper part of CN39 (3.5-mm stereo TRS jack) to headphone.
- Connect Lower part of CN39 (3.5-mm stereo TRS jack) to self-powered microphone (DC biased microphone), or to audio LINE-OUT port of your PC in case this microphone is not available.
west build -p always -b rcar_ironhide_x5h/r8a78000/r52 samples/drivers/i2s/i2s_record_playback_rcarFlash command: refer to 2. Flash Command.
The sample is console driven:
- Type r to record CONFIG_RECORD_TIME seconds of audio (I2S RX).
- Type p to play back the most recently recorded audio (I2S TX).
- Type e to exit the sample.
This sample demonstrates how to use an I2S driver in a simple processing of an audio stream. It configures and starts from memory buffer (sample sine wave) or from DMIC to record i2s data and send to codec with DMA.
- Connect Upper part of CN39 (3.5-mm stereo TRS jack) to headphone.
west build -p always -b rcar_ironhide_x5h/r8a78000/r52 samples/drivers/i2s/i2s_codecFlash command: refer to 2. Flash Command.
You should hear the sine wave played back in a continuous loop through the connected headphones.