S32 Network Controller (NETC)

Browse source code on GitHub

Overview

The sample application shows how to configure NXP S32 Network Controller (NETC) for the different use-cases:

  1. Zephyr application controls the Physical Station Interface (PSI) and the Ethernet PHY through EMDIO.

  2. Zephyr application controls the PSI, Virtual SI 1, and the Ethernet PHY through EMDIO.

The sample enables the net-shell and mdio-shell (only available when Zephyr controls PSI) to allow users visualize the networking settings. Telnet shell and backend is also enabled.

The source code for this sample application can be found at: samples/boards/nxp_s32/netc.

Requirements

To run this sample is needed to set-up a host machine running GNU/Linux or Windows with a network adapter connected to the target board ETH0 port through an Ethernet cable.

Building and Running

To build and run the sample application for use-case 1:

# From the root of the zephyr repository
west build -b s32z2xxdc2/s32z270/rtu0 samples/boards/nxp/s32/netc
west flash

Once started, you should see the network interface details, for example:

[00:00:00.051,000] <inf> phy_mii: PHY (7) ID 1CC916

[00:00:00.052,000] <inf> nxp_s32_eth_psi: SI0 MAC: 00:00:00:01:02:00
[00:00:00.058,000] <inf> shell_telnet: Telnet shell backend initialized
[00:00:00.058,000] <inf> nxp_s32_netc_sample: Starting sample
[00:00:00.058,000] <inf> nxp_s32_netc_sample: Waiting for iface 1 to come up
[00:00:07.595,000] <inf> phy_mii: PHY (7) Link speed 1000 Mb, full duplex

[00:00:07.595,000] <inf> nxp_s32_netc_sample: Configuring iface 1 (0x318008f0)
[00:00:07.595,000] <inf> nxp_s32_netc_sample: IPv6 address: 2001:db8::1
[00:00:07.595,000] <inf> nxp_s32_netc_sample: IPv4 address: 192.0.2.1

To build and run the sample application for use-case 2:

# From the root of the zephyr repository
west build -b s32z2xxdc2/s32z270/rtu0 samples/boards/nxp/s32/netc -- -DDTC_OVERLAY_FILE="./vsi-and-psi.overlay"
west flash

Once started, you should see the network interfaces details, for example:

[00:00:00.051,000] <inf> phy_mii: PHY (7) ID 1CC916

[00:00:00.052,000] <inf> nxp_s32_eth_psi: SI0 MAC: 00:00:00:01:02:00
[00:00:00.052,000] <inf> nxp_s32_eth_vsi: SI1 MAC: 00:00:00:01:02:11
[00:00:00.058,000] <inf> shell_telnet: Telnet shell backend initialized
[00:00:00.058,000] <inf> nxp_s32_netc_sample: Starting sample
[00:00:00.058,000] <inf> nxp_s32_netc_sample: Waiting for iface 1 to come up
[00:00:07.595,000] <inf> phy_mii: PHY (7) Link speed 1000 Mb, full duplex

[00:00:07.595,000] <inf> nxp_s32_netc_sample: Configuring iface 1 (0x3182f31c)
[00:00:07.595,000] <inf> nxp_s32_netc_sample: IPv6 address: 2001:db8::1
[00:00:07.595,000] <inf> nxp_s32_netc_sample: IPv4 address: 192.0.2.1
[00:00:07.595,000] <inf> nxp_s32_netc_sample: Configuring iface 2 (0x3182f328)
[00:00:07.595,000] <inf> nxp_s32_netc_sample: IPv6 address: 2001:db8::2
[00:00:07.595,000] <inf> nxp_s32_netc_sample: IPv4 address: 192.0.2.2

Setting up Host

To be able to reach the board from the host, it’s needed to configure the host network interface IP’s and default routes. This guide assumes the host IPv4 and IPv6 addresses are 192.0.2.3 and 2001:db8::3, respectively. For example, using a network interface named enp1s0 in a GNU/Linux host or Ethernet in a Windows host, this can be done with the following commands:

ip -4 addr add 192.0.2.3/24 dev enp1s0
ip -6 addr add 2001:db8::3/128 dev enp1s0
route -A inet6 add default dev enp1s0

Note

The above commands must be run as priviledged user.

If everything is configured correctly, you will be able to successfully execute the following commands from the Zephyr shell:

net ping -I<iface> 192.0.2.3
net ping -I<iface> 2001:db8::3

Where <iface> is the interface number starting from 1.