.. _nxp_s32_netc-samples: NXP S32 NETC Sample Application ############################### 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: :zephyr_file:`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: .. zephyr-app-commands:: :zephyr-app: samples/boards/nxp_s32/netc :board: s32z270dc2_rtu0_r52 :goals: build flash Once started, you should see the network interface details, for example: .. code-block:: console [00:00:00.051,000] phy_mii: PHY (7) ID 1CC916 [00:00:00.052,000] nxp_s32_eth_psi: SI0 MAC: 00:00:00:01:02:00 [00:00:00.058,000] shell_telnet: Telnet shell backend initialized [00:00:00.058,000] nxp_s32_netc_sample: Starting sample [00:00:00.058,000] nxp_s32_netc_sample: Waiting for iface 1 to come up [00:00:07.595,000] phy_mii: PHY (7) Link speed 1000 Mb, full duplex [00:00:07.595,000] nxp_s32_netc_sample: Configuring iface 1 (0x318008f0) [00:00:07.595,000] nxp_s32_netc_sample: IPv6 address: 2001:db8::1 [00:00:07.595,000] nxp_s32_netc_sample: IPv4 address: 192.0.2.1 To build and run the sample application for use-case 2: .. zephyr-app-commands:: :zephyr-app: samples/boards/nxp_s32/netc :board: s32z270dc2_rtu0_r52 :goals: build flash :gen-args: -DDTC_OVERLAY_FILE="./vsi-and-psi.overlay" Once started, you should see the network interfaces details, for example: .. code-block:: console [00:00:00.051,000] phy_mii: PHY (7) ID 1CC916 [00:00:00.052,000] nxp_s32_eth_psi: SI0 MAC: 00:00:00:01:02:00 [00:00:00.052,000] nxp_s32_eth_vsi: SI1 MAC: 00:00:00:01:02:11 [00:00:00.058,000] shell_telnet: Telnet shell backend initialized [00:00:00.058,000] nxp_s32_netc_sample: Starting sample [00:00:00.058,000] nxp_s32_netc_sample: Waiting for iface 1 to come up [00:00:07.595,000] phy_mii: PHY (7) Link speed 1000 Mb, full duplex [00:00:07.595,000] nxp_s32_netc_sample: Configuring iface 1 (0x3182f31c) [00:00:07.595,000] nxp_s32_netc_sample: IPv6 address: 2001:db8::1 [00:00:07.595,000] nxp_s32_netc_sample: IPv4 address: 192.0.2.1 [00:00:07.595,000] nxp_s32_netc_sample: Configuring iface 2 (0x3182f328) [00:00:07.595,000] nxp_s32_netc_sample: IPv6 address: 2001:db8::2 [00:00:07.595,000] 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: .. tabs:: .. group-tab:: Linux .. code-block:: console 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 .. group-tab:: Windows .. code-block:: console netsh interface ipv4 set address "Ethernet" static 192.0.2.3 255.255.255.0 netsh interface ipv6 add address "Ethernet" 2001:db8::3/128 netsh interface ipv6 add route ::/0 "Ethernet" :: .. 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: .. code-block:: console net ping -I 192.0.2.3 net ping -I 2001:db8::3 Where `` is the interface number starting from 1.