Overview
Ethernet Connection Manager (ECM) is a ModusToolbox™ middleware library that helps application developers establish and manage wired Ethernet connectivity on Infineon platforms that support Ethernet. It provides a thread-safe set of APIs to configure the Ethernet interface, connect to and disconnect from the network, retrieve address information, and monitor link state through an event-notification mechanism. The library uses the Ethernet configuration generated by the ModusToolbox™ Device Configurator.
ECM is part of the ModusToolbox™ framework for connectivity applications based on FreeRTOS, lwIP, and Mbed TLS, and is built on top of the abstraction-rtos library, which provides the RTOS abstraction API for FreeRTOS. Applications typically consume ECM indirectly through the ethernet-core-freertos-lwip-mbedtls core library, which pulls in ECM together with secure-sockets, FreeRTOS, lwIP, and Mbed TLS.
Supported Platforms
This library and its features are supported on the following Infineon device families:
- PSOC™ Edge E84
- XMC7200 (with an external Ethernet PHY; for example, KIT_XMC72_EVK)
- XMC7100 (with an external Ethernet PHY; for example, KIT_XMC71_EVK_LITE_V1)
- TRAVEO™ T2G CYT3DL (with an external Ethernet PHY; for example, KIT_T2G_C-2D-4M_LITE)
- TRAVEO™ T2G CYT4DN (with an external Ethernet PHY; for example, KIT_T2G_C-2D-6M_LITE)
- TRAVEO™ T2G CYT6BJ (with an external Ethernet PHY; for example, KIT_T2G_B-H-16M_LITE)
Features
- Configure and bring up the Ethernet interface, and connect to or disconnect from the network
- Static IP or DHCP-based IP address assignment, with APIs to retrieve IPv4/IPv6, gateway, netmask, and MAC addresses
- Up to four source and destination MAC address filters
- Enable or disable reception of broadcast frames, and enable or disable promiscuous mode
- Connection monitoring with link up/down and IP-change event notifications through a registered callback
- Thread-safe APIs for use in FreeRTOS-based applications
When to Use
Use ECM when your application needs wired Ethernet connectivity on an Infineon MCU that provides an Ethernet MAC (for example, an XMC7200- or XMC7100-based design driving an external Ethernet PHY). It is the right choice when you need to:
- Bring a wired network interface up and down under application control
- Obtain an IP address over DHCP or configure a static IP
- React to cable connect/disconnect and IP-change events at runtime
- Apply MAC-level address filtering, broadcast control, or promiscuous mode
If your application uses the socket layer, ECM is normally pulled in transitively by ethernet-core-freertos-lwip-mbedtls rather than added directly.
Prerequisites
Hardware Requirements
- An Infineon MCU with an Ethernet MAC and a supported external Ethernet PHY. Validated designs use:
- XMC7200 (KIT_XMC72_EVK) with an RGMII interface and a DP83867IR PHY
- XMC7100 (KIT_XMC71_EVK_LITE_V1) with an RMII interface and a DP83825I PHY
- TRAVEO™ T2G CYT3DL (KIT_T2G_C-2D-4M_LITE) with an RMII interface and a DP83848VV or LAN8720A PHY
- TRAVEO™ T2G CYT4DN (KIT_T2G_C-2D-6M_LITE) with an RGMII interface and an RTL8211FI PHY
- TRAVEO™ T2G CYT6BJ (KIT_T2G_B-H-16M_LITE) with an RMII interface and a LAN8670 PHY
- An Ethernet cable and access to a network (with a DHCP server, unless a static IP is configured)
Note: Ethernet is not a deep-sleep-enabled IP; the system must remain in Active power mode for the interface to operate.
Software Requirements
This version of the library was validated for compatibility with the following software and tools:
| Software and tools | Version |
| ModusToolbox™ software environment | 3.8 |
| ModusToolbox™ Device Configurator | 5.50 |
| GCC compiler | 14.2.1 |
| IAR compiler | 9.50.2 |
| Arm® compiler 6 | 6.22 |
| LLVM compiler | 19.1.5 |
Read Documentation First
Choose Starting Template
Create an Empty application (always prefer starting from the Empty App template) for your target kit using the ModusToolbox™ Project Creator, then add the required libraries as described below.
Add Required Libraries
Add the required libraries using the ModusToolbox™ Library Manager (available in the ModusToolbox™ for VS Code extension and the Eclipse IDE), or by creating the corresponding .mtb files in the application's deps folder and running make getlibs.
To add these by hand, create the following .mtb files in the deps folder and run make getlibs:
Note: ethernet-connection-manager is pulled in as a dependency of ethernet-core-freertos-lwip-mbedtls, so most applications do not add it directly.
Configure Makefile (if applicable)
Add the following flags to the DEFINES variable in the application Makefile as needed:
DEFINES+=CYBSP_ETHERNET_CAPABLE
CYBSP_ETHERNET_CAPABLE - Enables the Ethernet functionality (required).
CY_DISABLE_XMC7000_DATA_CACHE - Disables the data cache on XMC7000 devices.
ENABLE_ECM_LOGS - Enables ECM debug log messages (disabled by default). When enabled, call cy_log_init() from the cy-log module (part of the connectivity-utilities library) to route the logs. See the Connectivity Utilities Reference Manual for cy-log details.
Example enabling all three flags:
DEFINES+=CYBSP_ETHERNET_CAPABLE
DEFINES+=CY_DISABLE_XMC7000_DATA_CACHE
DEFINES+=ENABLE_ECM_LOGS
Configure in the Tool (if applicable)
ECM uses the Ethernet configuration generated by the ModusToolbox™ Device Configurator. Open the design.modus file and apply the settings below.
Common (all platforms) - keep the system in Active power mode:
- Switch to the "System" tab.
- Select Resource -> Power.
- In the "RTOS" section, set "System Idle Power Mode" to "Active".
- Save the configuration to generate the necessary code.
XMC7200 (KIT_XMC72_EVK) - configure the PHY:
- Switch to the "Peripherals" tab.
- Select Communication -> "Ethernet 1".
- In the "Ethernet - Parameters" pane, set the interface type "PHY Interconnect" to "RGMII".
- Set the PHY driver "PHY device" to "DP83867IR".
- Enable or disable "Autonegotiation" (default: enabled).
- Configure "PHY speed" (10/100/1000 Mbits/sec) and "PHY Duplex mode" (default: Full Duplex).
- Configure "Mac Address".
- Enable "Promiscuous mode" (default: disabled).
- Enable "Accept Broadcast Frames" (default: enabled).
- Configure "Mac Reference Clock" (default: External clk).
- Configure "Nvic Mux Interrupt number" (enabled when the device has separate NVIC interrupt lines; default: 3).
- Configure a static IP or use DHCP (default: DHCP).
- Save the configuration to generate the necessary code.
XMC7100 (KIT_XMC71_EVK_LITE_V1) - configure the PHY:
- Switch to the "Peripherals" tab.
- Select Communication -> "Ethernet 0".
- In the "Ethernet - Parameters" pane, set the interface type "PHY Interconnect" to "RMII".
- Set the PHY driver "PHY device" to "DP83825I".
- Enable or disable "Autonegotiation" (default: enabled).
- Configure "PHY speed" (10/100 Mbits/sec) and "PHY Duplex mode" (default: Full Duplex).
- Configure "Mac Address".
- Enable "Promiscuous mode" (default: disabled).
- Enable "Accept Broadcast Frames" (default: enabled).
- Configure "Mac Reference Clock" (default: External clk).
- Configure "Nvic Mux Interrupt number" (enabled when the device has separate NVIC interrupt lines; default: 3).
- Configure a static IP or use DHCP (default: DHCP).
- Save the configuration to generate the necessary code.
TRAVEO™ T2G CYT3DL (KIT_T2G_C-2D-4M_LITE) - configure the PHY and MAC reference clock:
- Switch to the "Peripherals" tab.
- Select Communication -> "Ethernet 0".
- In the "Ethernet - Parameters" pane, set the interface type "PHY Interconnect" to "RMII".
- Set the PHY driver "PHY device" to "DP83848VV" or "LAN8720A".
- Enable or disable "Autonegotiation" (default: enabled).
- Configure "PHY speed" (10/100 Mbits/sec) and "PHY Duplex mode" (default: Full Duplex).
- Configure "Mac Address".
- Enable or disable "Promiscuous mode" (default: disabled).
- Enable or disable "Accept Broadcast Frames" (default: enabled).
- Configure "Mac Reference Clock" (default: External clk) to match the kit's clock source and ensure a 50-MHz reference clock at all link speeds.
- Configure "Nvic Mux Interrupt number" (enabled when the device has separate NVIC interrupt lines; default: 3).
- Configure a static IP or use DHCP (default: DHCP).
- Save the configuration to generate the necessary code.
Connect either a DP83848VV or a LAN8720A PHY module externally to Ethernet 0 (eth0) on the kit. Both modules use RMII and provide a stable 50-MHz reference clock at both 10 and 100 Mbits/sec.
TRAVEO™ T2G CYT4DN (KIT_T2G_C-2D-6M_LITE) - configure the PHY and MAC reference clock:
- Switch to the "Peripherals" tab.
- Select Communication -> "Ethernet 0".
- In the "Ethernet - Parameters" pane, set the interface type "PHY Interconnect" to "RGMII".
- Set the PHY driver "PHY device" to "RTL8211FI".
- Enable or disable "Autonegotiation" (default: enabled).
- Configure "PHY speed" (10/100/1000 Mbits/sec) and "PHY Duplex mode" (default: Full Duplex).
- Configure "Mac Address".
- Enable or disable "Promiscuous mode" (default: disabled).
- Enable or disable "Accept Broadcast Frames" (default: enabled).
- Configure "Mac Reference Clock" (default: External clk) to match the kit's clock source and ensure a 125-MHz reference clock at all link speeds.
- Configure "Nvic Mux Interrupt number" (enabled when the device has separate NVIC interrupt lines; default: 3).
- Configure a static IP or use DHCP (default: DHCP).
- Save the configuration to generate the necessary code.
ECM selects the CYT4DN transmit-clock dividers automatically: 50 at 10 Mbits/sec, 5 at 100 Mbits/sec, and 1 at 1000 Mbits/sec, producing 2.5, 25, and 125 MHz, respectively, from the 125-MHz reference clock.
TRAVEO™ T2G CYT6BJ (KIT_T2G_B-H-16M_LITE) - configure the PHY and MAC reference clock:
- Switch to the "Peripherals" tab.
- Select Communication -> "Ethernet 0".
- In the "Ethernet - Parameters" pane, set the interface type "PHY Interconnect" to "RMII".
- Set the PHY driver "PHY device" to "LAN8670".
- Configure "PHY Address" to "1" for KIT_T2G_B-H-16M_LITE.
- Disable "Autonegotiation" (default: disabled for LAN8670).
- Configure "PHY speed" to 10 Mbits/sec. "PHY Duplex mode" is fixed to Half Duplex for LAN8670.
- Configure "Mac Address".
- Enable or disable "Promiscuous mode" (default: disabled).
- Enable or disable "Accept Broadcast Frames" (default: enabled).
- Configure "Mac Reference Clock" (default: External clk) to match the kit's clock source and ensure a 50-MHz reference clock for RMII.
- Configure "Nvic Mux Interrupt number" (enabled when the device has separate NVIC interrupt lines; default: 3).
- Configure a static IP or use DHCP (default: DHCP).
- Configure "Multidrop Enable (LAN8670)" and the mode in the "PLCA (LAN8670)" section to match the network topology.
- Save the configuration to generate the necessary code.
LAN8670 uses 10BASE-T1S at 10 Mbits/sec in Half Duplex. PLCA requires one coordinator (ID 0), unique follower IDs, a coordinator "Node Count:" greater than the highest node ID, and the same transmit opportunity timer value on all nodes.
Note: "PHY speed" and "PHY Duplex Mode" are visible only when "Autonegotiation" is disabled.
Note: At 100 Mbits/sec, intermittent connection issues have been observed on certain (enterprise) networks, as well as issues when receiving data larger than a 4 KB buffer. The recommended configuration is 1000 Mbits/sec or Autonegotiation.
For PHY pin connections, refer to the "Quick Start" section of the Ethernet PHY Driver README.
Add Headers
Include the ECM header in your application source:
cy_ecm.h transitively includes cy_ecm_error.h (ECM result codes). PHY callback functions are provided by the ethernet-phy-driver library.
Quick Start
This quick start demonstrates bringing up the Ethernet interface, obtaining an IP address, and monitoring the link. It assumes an Empty application with the libraries added and the Device Configurator settings applied as described in the Prerequisites section.
Step 1: Add the ethernet-core-freertos-lwip-mbedtls and ethernet-phy-driver libraries (see the Add Required Libraries section).
Step 2: Apply the Device Configurator settings for your kit (see the Configure in the Tool section) and add DEFINES+=CYBSP_ETHERNET_CAPABLE to the Makefile.
Step 3: Provide the PHY operation callbacks from the ethernet-phy-driver library to ECM through cy_ecm_ethif_init().
Step 4: Add the code below to your main.c (see the Sample Code section for complete examples) to initialize ECM, connect, and retrieve the IP address.
Expected Outcome: The interface links up, a valid IPv4 address is obtained over DHCP, and ECM reports connection and IP-change events. See the Expected Outcome section.
Sample Code
The following examples are complete and mirror the snippets published in the Reference Manual. The PHY callbacks come from the ethernet-phy-driver library.
Initialize the Ethernet Interface
This example initializes the Ethernet driver and network stack and creates an ECM handle using cy_ecm_ethif_init().
#include "cy_ecm.h"
#include "cy_eth_phy_driver.h"
{
.phy_configure = cy_eth_phy_configure,
.phy_enable_ext_reg = cy_eth_phy_enable_ext_reg,
.phy_discover = cy_eth_phy_discover,
.phy_get_auto_neg_status = cy_eth_phy_get_auto_neg_status,
.phy_get_link_partner_cap = cy_eth_phy_get_link_partner_cap,
.phy_get_linkspeed = cy_eth_phy_get_linkspeed,
.phy_get_linkstatus = cy_eth_phy_get_linkstatus,
.phy_reset = cy_eth_phy_reset
};
void ecm_ethernet_init(void)
{
cy_rslt_t result = CY_RSLT_SUCCESS;
if (result != CY_RSLT_SUCCESS)
{
}
if (result != CY_RSLT_SUCCESS)
{
}
}
@ CY_ECM_INTERFACE_ETH1
Interface for Ethernet port 1.
Definition cy_ecm.h:49
cy_rslt_t cy_ecm_ethif_init(cy_ecm_interface_t eth_idx, cy_ecm_phy_callbacks_t *phy_callbacks, cy_ecm_t *ecm_handle)
Initializes the Ethernet physical driver, enables Ethernet port, and brings up the network stack.
cy_rslt_t cy_ecm_init(void)
Does general allocation and initialization of resources needed for the library.
void * cy_ecm_t
Ethernet Connection Manager handle.
Definition cy_ecm.h:126
Structure used to pass the callback function implementation for PHY related operations.
Definition cy_ecm.h:233
cy_ecm_phy_init phy_init
Function pointer for Ethernet PHY Init.
Definition cy_ecm.h:234
Configure Ethernet Features
This example enables promiscuous mode, controls broadcast reception, and adds a source-address filter using cy_ecm_set_promiscuous_mode(), cy_ecm_broadcast_disable(), and cy_ecm_set_filter_address().
void ecm_ethernet_features_enable(void)
{
cy_rslt_t result = CY_RSLT_SUCCESS;
bool is_promiscuous_mode = true;
uint8_t filter_address_count;
if (result != CY_RSLT_SUCCESS)
{
}
if (result != CY_RSLT_SUCCESS)
{
}
if (result != CY_RSLT_SUCCESS)
{
}
if (result != CY_RSLT_SUCCESS)
{
}
filter_address_count = 1;
if (result != CY_RSLT_SUCCESS)
{
}
}
@ CY_ECM_FILTER_TYPE_SOURCE
filter on the source address
Definition cy_ecm.h:101
cy_rslt_t cy_ecm_set_promiscuous_mode(cy_ecm_t ecm_handle, bool is_promiscuous_mode)
Enable or Disable the promiscuous mode.
cy_rslt_t cy_ecm_set_filter_address(cy_ecm_t ecm_handle, cy_ecm_filter_address_t *filter_address, uint8_t filter_address_count)
Filter the receiving packets with the configured source or destination filter address.
cy_rslt_t cy_ecm_broadcast_disable(cy_ecm_t ecm_handle, bool is_broadcast_disable)
Enable or Disable the incoming broadcast packets.
#define CY_ECM_MAC_ADDR_LEN
MAC address length
Definition cy_ecm.h:30
Structure containing the configuration parameters to configure Ethernet PHY and MAC to filter the add...
Definition cy_ecm.h:223
uint8_t filter_addr[CY_ECM_MAC_ADDR_LEN]
Address to be filtered.
Definition cy_ecm.h:225
uint8_t ignoreBytes
For example, ignoreBytes = 0x01 implies that the first byte received should not be compared.
Definition cy_ecm.h:226
cy_ecm_filter_type_t filter_type
Type of address to be filtered.
Definition cy_ecm.h:224
Connect and Retrieve IP Address
This example connects to the Ethernet interface, brings up the network, and reads the IP, gateway, and netmask addresses using cy_ecm_connect(), cy_ecm_get_ip_address(), cy_ecm_get_gateway_address(), and cy_ecm_get_netmask_address().
void ecm_connect_and_get_ip(void)
{
cy_rslt_t result = CY_RSLT_SUCCESS;
if (result != CY_RSLT_SUCCESS)
{
}
if (result != CY_RSLT_SUCCESS)
{
}
if (result != CY_RSLT_SUCCESS)
{
}
if (result != CY_RSLT_SUCCESS)
{
}
if (result != CY_RSLT_SUCCESS)
{
}
if (result != CY_RSLT_SUCCESS)
{
}
}
cy_rslt_t cy_ecm_get_ip_address(cy_ecm_t ecm_handle, cy_ecm_ip_address_t *ip_addr)
Retrieves the IPv4 address of the given interface.
cy_rslt_t cy_ecm_connect(cy_ecm_t ecm_handle, cy_ecm_ip_setting_t *static_ip_addr, cy_ecm_ip_address_t *ip_addr)
Brings up the interface and configure to corresponding Ethernet port.
cy_rslt_t cy_ecm_get_netmask_address(cy_ecm_t ecm_handle, cy_ecm_ip_address_t *net_mask_addr)
Retrieves the subnet mask address of the given interface.
cy_rslt_t cy_ecm_get_gateway_address(cy_ecm_t ecm_handle, cy_ecm_ip_address_t *gateway_addr)
Retrieves the gateway IP address of the given interface.
Structure used to set or receive the IP address information to or from the underlying network stack.
Definition cy_ecm.h:200
Ping the Gateway
This example sends an ICMP ping to the gateway using cy_ecm_ping().
void ecm_ping_gateway(void)
{
cy_rslt_t result = CY_RSLT_SUCCESS;
uint32_t elapsed_time_ms;
if (result != CY_RSLT_SUCCESS)
{
}
result =
cy_ecm_ping(ecm_handle, &gateway_addr, 3000, &elapsed_time_ms);
(void)elapsed_time_ms;
if (result != CY_RSLT_SUCCESS)
{
}
}
cy_rslt_t cy_ecm_ping(cy_ecm_t ecm_handle, cy_ecm_ip_address_t *ip_addr, uint32_t timeout_ms, uint32_t *elapsed_ms)
Sends a ping request to the given IP address.
Disconnect and Deinitialize
This example brings the network down and releases resources using cy_ecm_disconnect() and cy_ecm_ethif_deinit().
void ecm_disconnect_and_deinit(void)
{
cy_rslt_t result = CY_RSLT_SUCCESS;
if (result != CY_RSLT_SUCCESS)
{
}
if (result != CY_RSLT_SUCCESS)
{
}
if (result != CY_RSLT_SUCCESS)
{
}
}
cy_rslt_t cy_ecm_disconnect(cy_ecm_t ecm_handle)
Brings down the interface.
cy_rslt_t cy_ecm_deinit(void)
Releases the resources allocated in the cy_ecm_init function.
cy_rslt_t cy_ecm_ethif_deinit(cy_ecm_t *ecm_handle)
Deinitializes the Ethernet physical driver.
Reconnect / Recovery Example
Register an event callback to monitor link state, and re-establish the connection when the cable is disconnected. CY_ECM_EVENT_IP_CHANGED is also reported after a reconnect or a DHCP renewal.
{
(void)event_data;
switch (event)
{
break;
break;
break;
}
}
void ecm_reconnect_loop(void)
{
cy_rslt_t result = CY_RSLT_SUCCESS;
bool link_up = false;
if (result != CY_RSLT_SUCCESS)
{
}
if (result != CY_RSLT_SUCCESS)
{
}
if (result != CY_RSLT_SUCCESS)
{
}
for (;;)
{
if ((result == CY_RSLT_SUCCESS) && (link_up == false))
{
}
cy_rtos_delay_milliseconds(1000);
}
}
cy_ecm_event_t
Enumeration of ECM events.
Definition cy_ecm.h:108
@ CY_ECM_EVENT_IP_CHANGED
IP address change event; notified after connection, re-connection, and IP address change due to DHCP ...
Definition cy_ecm.h:111
@ CY_ECM_EVENT_CONNECTED
Ethernet connection established event; notified on Ethernet link up
Definition cy_ecm.h:109
@ CY_ECM_EVENT_DISCONNECTED
Ethernet disconnection event; notified on Ethernet link down
Definition cy_ecm.h:110
cy_rslt_t cy_ecm_get_link_status(cy_ecm_t ecm_handle, bool *status)
Provides the status of the link.
cy_rslt_t cy_ecm_register_event_callback(cy_ecm_t ecm_handle, cy_ecm_event_callback_t event_callback)
Registers an event callback to monitor the connection and IP address change events.
Union used to receive the IP address of the connected interface through the callback registered using...
Definition cy_ecm.h:255
Expected Outcome
When the Quick Start example runs successfully, you should observe:
Visual/Hardware Behavior:
- The Ethernet link LED on the RJ45 connector turns on when a cable is connected and a link is established.
- On cable removal, ECM reports a disconnect; on reinsertion, it reconnects and reports a new IP address.
Terminal Output (with ENABLE_ECM_LOGS enabled; addresses depend on your network):
ECM initialized
Ethernet PHY initialized
Ethernet link up
IP Address 192.168.1.100 assigned
Ping successful, elapsed time: 2 ms
Performance Metrics:
- The recommended link speed is 1000 Mbits/sec (or Autonegotiation) for reliable throughput; see the note in the Configure in the Tool section.
Troubleshooting
- ECM API calls hang: Disable tickless idle mode by defining
configUSE_TICKLESS_IDLE to 0 in FreeRTOSConfig.h. Ethernet is not deep-sleep capable, so the system must stay in Active power mode.
- Intermittent connectivity or failures with large (>4 KB) transfers at 100 Mbits/sec: Set the PHY speed to 1000 Mbits/sec or use Autonegotiation.
- IAR 9.40 build errors when the application includes
iar_dlmalloc.h in Debug mode: Add --advance-heap to LDFLAGS in the application Makefile.
- No IP address obtained: Verify the cable and network, confirm a DHCP server is available (or configure a static IP), and confirm "System Idle Power Mode" is set to "Active".
- No debug output: Add
DEFINES+=ENABLE_ECM_LOGS and call cy_log_init() from the cy-log module.
Related Code Examples
Configuration Reference
ECM is configured through two mechanisms:
- ModusToolbox™ Device Configurator - Interface type (RGMII/RMII), PHY device, autonegotiation, PHY speed and duplex, MAC address, promiscuous mode, broadcast acceptance, MAC reference clock, NVIC interrupt number, and static IP/DHCP. See the Configure in the Tool section.
- Makefile
DEFINES - Build-time flags:
| Define | Purpose |
CYBSP_ETHERNET_CAPABLE | Enables Ethernet functionality (required) |
CY_DISABLE_XMC7000_DATA_CACHE | Disables the data cache on XMC7000 devices |
ENABLE_ECM_LOGS | Enables ECM debug log messages |
Runtime configuration APIs include cy_ecm_set_promiscuous_mode(), cy_ecm_broadcast_disable(), and cy_ecm_set_filter_address(). For the complete API reference, see the Ethernet Connection Manager Reference Manual.
Release Notes and Changelog
- RELEASE.md - Detailed release notes and known issues for all versions
- version.xml - Current library version
Current release: v2.3.0. Supported platforms for this release are listed in RELEASE.md.
License
This library is provided under Infineon software license terms. When integrated through ethernet-core-freertos-lwip-mbedtls, it brings in additional components — including secure-sockets, FreeRTOS, lwIP, Mbed TLS, connectivity-utilities, and abstraction-rtos — together with the ethernet-phy-driver library, each governed by its own license terms. You are responsible for reviewing and accepting all applicable third-party license terms.
Copyright
© Infineon Technologies AG or an affiliate of Infineon Technologies AG, 2026.