Merge branch 'fix/update-eth-init-calls' into 'master'

fix(ethernet_init): Update Ethernet Init Calls

See merge request espressif/esp-idf!41916
This commit is contained in:
Ondrej Kosta
2025-09-23 22:02:11 +08:00
34 changed files with 181 additions and 146 deletions

View File

@@ -296,13 +296,13 @@ The Ethernet driver is implemented in an Object-Oriented style. Any operation on
eth_mac_config_t mac_config = ETH_MAC_DEFAULT_CONFIG(); // apply default common MAC configuration
eth_esp32_emac_config_t esp32_emac_config = ETH_ESP32_EMAC_DEFAULT_CONFIG(); // apply default vendor-specific MAC configuration
esp32_emac_config.smi_gpio.mdc_num = CONFIG_EXAMPLE_ETH_MDC_GPIO; // alter the GPIO used for MDC signal
esp32_emac_config.smi_gpio.mdio_num = CONFIG_EXAMPLE_ETH_MDIO_GPIO; // alter the GPIO used for MDIO signal
esp32_emac_config.smi_gpio.mdc_num = CONFIG_ETHERNET_MDC_GPIO; // alter the GPIO used for MDC signal
esp32_emac_config.smi_gpio.mdio_num = CONFIG_ETHERNET_MDIO_GPIO; // alter the GPIO used for MDIO signal
esp_eth_mac_t *mac = esp_eth_mac_new_esp32(&esp32_emac_config, &mac_config); // create MAC instance
eth_phy_config_t phy_config = ETH_PHY_DEFAULT_CONFIG(); // apply default PHY configuration
phy_config.phy_addr = CONFIG_EXAMPLE_ETH_PHY_ADDR; // alter the PHY address according to your board design
phy_config.reset_gpio_num = CONFIG_EXAMPLE_ETH_PHY_RST_GPIO; // alter the GPIO used for PHY reset
phy_config.phy_addr = CONFIG_ETHERNET_PHY_ADDR; // alter the PHY address according to your board design
phy_config.reset_gpio_num = CONFIG_ETHERNET_PHY_RST_GPIO; // alter the GPIO used for PHY reset
esp_eth_phy_t *phy = esp_eth_phy_new_generic(&phy_config); // create generic PHY instance
// ESP-IDF officially supports several different specific Ethernet PHY chip driver
// esp_eth_phy_t *phy = esp_eth_phy_new_ip101(&phy_config);
@@ -341,30 +341,30 @@ SPI-Ethernet Module
eth_mac_config_t mac_config = ETH_MAC_DEFAULT_CONFIG(); // apply default common MAC configuration
eth_phy_config_t phy_config = ETH_PHY_DEFAULT_CONFIG(); // apply default PHY configuration
phy_config.phy_addr = CONFIG_EXAMPLE_ETH_PHY_ADDR; // alter the PHY address according to your board design
phy_config.reset_gpio_num = CONFIG_EXAMPLE_ETH_PHY_RST_GPIO; // alter the GPIO used for PHY reset
phy_config.phy_addr = CONFIG_ETHERNET_PHY_ADDR; // alter the PHY address according to your board design
phy_config.reset_gpio_num = CONFIG_ETHERNET_PHY_RST_GPIO; // alter the GPIO used for PHY reset
// Install GPIO interrupt service (as the SPI-Ethernet module is interrupt-driven)
gpio_install_isr_service(0);
// SPI bus configuration
spi_device_handle_t spi_handle = NULL;
spi_bus_config_t buscfg = {
.miso_io_num = CONFIG_EXAMPLE_ETH_SPI_MISO_GPIO,
.mosi_io_num = CONFIG_EXAMPLE_ETH_SPI_MOSI_GPIO,
.sclk_io_num = CONFIG_EXAMPLE_ETH_SPI_SCLK_GPIO,
.miso_io_num = CONFIG_ETHERNET_SPI_MISO_GPIO,
.mosi_io_num = CONFIG_ETHERNET_SPI_MOSI_GPIO,
.sclk_io_num = CONFIG_ETHERNET_SPI_SCLK_GPIO,
.quadwp_io_num = -1,
.quadhd_io_num = -1,
};
ESP_ERROR_CHECK(spi_bus_initialize(CONFIG_EXAMPLE_ETH_SPI_HOST, &buscfg, 1));
ESP_ERROR_CHECK(spi_bus_initialize(CONFIG_ETHERNET_SPI_HOST, &buscfg, 1));
// Configure SPI device
spi_device_interface_config_t spi_devcfg = {
.mode = 0,
.clock_speed_hz = CONFIG_EXAMPLE_ETH_SPI_CLOCK_MHZ * 1000 * 1000,
.spics_io_num = CONFIG_EXAMPLE_ETH_SPI_CS_GPIO,
.clock_speed_hz = CONFIG_ETHERNET_SPI_CLOCK_MHZ * 1000 * 1000,
.spics_io_num = CONFIG_ETHERNET_SPI_CS_GPIO,
.queue_size = 20
};
/* dm9051 ethernet driver is based on spi driver */
eth_dm9051_config_t dm9051_config = ETH_DM9051_DEFAULT_CONFIG(CONFIG_EXAMPLE_ETH_SPI_HOST, &spi_devcfg);
dm9051_config.int_gpio_num = CONFIG_EXAMPLE_ETH_SPI_INT_GPIO;
eth_dm9051_config_t dm9051_config = ETH_DM9051_DEFAULT_CONFIG(CONFIG_ETHERNET_SPI_HOST, &spi_devcfg);
dm9051_config.int_gpio_num = CONFIG_ETHERNET_SPI_INT_GPIO;
esp_eth_mac_t *mac = esp_eth_mac_new_dm9051(&dm9051_config, &mac_config);
esp_eth_phy_t *phy = esp_eth_phy_new_dm9051(&phy_config);

View File

@@ -297,13 +297,13 @@ ESP-IDF 在宏 :c:macro:`ETH_MAC_DEFAULT_CONFIG` 和 :c:macro:`ETH_PHY_DEFAULT_C
eth_mac_config_t mac_config = ETH_MAC_DEFAULT_CONFIG(); // 应用默认的通用 MAC 配置
eth_esp32_emac_config_t esp32_emac_config = ETH_ESP32_EMAC_DEFAULT_CONFIG(); // 应用默认的供应商特定 MAC 配置
esp32_emac_config.smi_gpio.mdc_num = CONFIG_EXAMPLE_ETH_MDC_GPIO; // 更改用于 MDC 信号的 GPIO
esp32_emac_config.smi_gpio.mdio_num = CONFIG_EXAMPLE_ETH_MDIO_GPIO; // 更改用于 MDIO 信号的 GPIO
esp32_emac_config.smi_gpio.mdc_num = CONFIG_ETHERNET_MDC_GPIO; // 更改用于 MDC 信号的 GPIO
esp32_emac_config.smi_gpio.mdio_num = CONFIG_ETHERNET_MDIO_GPIO; // 更改用于 MDIO 信号的 GPIO
esp_eth_mac_t *mac = esp_eth_mac_new_esp32(&esp32_emac_config, &mac_config); // 创建 MAC 实例
eth_phy_config_t phy_config = ETH_PHY_DEFAULT_CONFIG(); // 应用默认的 PHY 配置
phy_config.phy_addr = CONFIG_EXAMPLE_ETH_PHY_ADDR; // 根据开发板设计更改 PHY 地址
phy_config.reset_gpio_num = CONFIG_EXAMPLE_ETH_PHY_RST_GPIO; // 更改用于 PHY 复位的 GPIO
phy_config.phy_addr = CONFIG_ETHERNET_PHY_ADDR; // 根据开发板设计更改 PHY 地址
phy_config.reset_gpio_num = CONFIG_ETHERNET_PHY_RST_GPIO; // 更改用于 PHY 复位的 GPIO
esp_eth_phy_t *phy = esp_eth_phy_new_generic(&phy_config); // 创建通用 PHY 实例
// ESP-IDF 为数种特定以太网 PHY 芯片驱动提供官方支持
// esp_eth_phy_t *phy = esp_eth_phy_new_ip101(&phy_config);
@@ -342,30 +342,30 @@ SPI-Ethernet 模块
eth_mac_config_t mac_config = ETH_MAC_DEFAULT_CONFIG(); // 应用默认的通用 MAC 配置
eth_phy_config_t phy_config = ETH_PHY_DEFAULT_CONFIG(); // 应用默认的 PHY 配置
phy_config.phy_addr = CONFIG_EXAMPLE_ETH_PHY_ADDR; // 根据开发板设计更改 PHY 地址
phy_config.reset_gpio_num = CONFIG_EXAMPLE_ETH_PHY_RST_GPIO; // 更改用于 PHY 复位的 GPIO
phy_config.phy_addr = CONFIG_ETHERNET_PHY_ADDR; // 根据开发板设计更改 PHY 地址
phy_config.reset_gpio_num = CONFIG_ETHERNET_PHY_RST_GPIO; // 更改用于 PHY 复位的 GPIO
// 安装 GPIO 中断服务(因为 SPI-Ethernet 模块为中断驱动)
gpio_install_isr_service(0);
// 配置 SPI 总线
spi_device_handle_t spi_handle = NULL;
spi_bus_config_t buscfg = {
.miso_io_num = CONFIG_EXAMPLE_ETH_SPI_MISO_GPIO,
.mosi_io_num = CONFIG_EXAMPLE_ETH_SPI_MOSI_GPIO,
.sclk_io_num = CONFIG_EXAMPLE_ETH_SPI_SCLK_GPIO,
.miso_io_num = CONFIG_ETHERNET_SPI_MISO_GPIO,
.mosi_io_num = CONFIG_ETHERNET_SPI_MOSI_GPIO,
.sclk_io_num = CONFIG_ETHERNET_SPI_SCLK_GPIO,
.quadwp_io_num = -1,
.quadhd_io_num = -1,
};
ESP_ERROR_CHECK(spi_bus_initialize(CONFIG_EXAMPLE_ETH_SPI_HOST, &buscfg, 1));
ESP_ERROR_CHECK(spi_bus_initialize(CONFIG_ETHERNET_SPI_HOST, &buscfg, 1));
// 配置 SPI 从机设备
spi_device_interface_config_t spi_devcfg = {
.mode = 0,
.clock_speed_hz = CONFIG_EXAMPLE_ETH_SPI_CLOCK_MHZ * 1000 * 1000,
.spics_io_num = CONFIG_EXAMPLE_ETH_SPI_CS_GPIO,
.clock_speed_hz = CONFIG_ETHERNET_SPI_CLOCK_MHZ * 1000 * 1000,
.spics_io_num = CONFIG_ETHERNET_SPI_CS_GPIO,
.queue_size = 20
};
/* dm9051 ethernet driver is based on spi driver */
eth_dm9051_config_t dm9051_config = ETH_DM9051_DEFAULT_CONFIG(CONFIG_EXAMPLE_ETH_SPI_HOST, &spi_devcfg);
dm9051_config.int_gpio_num = CONFIG_EXAMPLE_ETH_SPI_INT_GPIO;
eth_dm9051_config_t dm9051_config = ETH_DM9051_DEFAULT_CONFIG(CONFIG_ETHERNET_SPI_HOST, &spi_devcfg);
dm9051_config.int_gpio_num = CONFIG_ETHERNET_SPI_INT_GPIO;
esp_eth_mac_t *mac = esp_eth_mac_new_dm9051(&dm9051_config, &mac_config);
esp_eth_phy_t *phy = esp_eth_phy_new_dm9051(&phy_config);

View File

@@ -11,8 +11,8 @@ from pytest_embedded_idf.utils import idf_parametrize
@pytest.mark.parametrize(
'config',
[
pytest.param('default_ip101', marks=[pytest.mark.ethernet_router]),
pytest.param('default_generic', marks=[pytest.mark.ethernet_router]),
pytest.param('default_ip101', marks=[pytest.mark.eth_ip101]),
pytest.param('default_generic', marks=[pytest.mark.eth_ip101]),
pytest.param('default_dm9051', marks=[pytest.mark.eth_dm9051]),
],
indirect=True,

View File

@@ -47,7 +47,7 @@ void init_ethernet_and_netif(void)
{
ESP_ERROR_CHECK(esp_event_loop_create_default());
ESP_ERROR_CHECK(example_eth_init(&s_eth_handles, &s_eth_port_cnt));
ESP_ERROR_CHECK(ethernet_init_all(&s_eth_handles, &s_eth_port_cnt));
ESP_ERROR_CHECK(esp_netif_init());
esp_netif_inherent_config_t esp_netif_config = ESP_NETIF_INHERENT_DEFAULT_ETH();

View File

@@ -1,7 +1,7 @@
dependencies:
cmd_system:
path: ${IDF_PATH}/examples/system/console/advanced/components/cmd_system
ethernet_init:
path: ${IDF_PATH}/examples/ethernet/basic/components/ethernet_init
espressif/ethernet_init:
version: "*"
espressif/iperf-cmd:
version: "~0.1.1"

View File

@@ -115,7 +115,7 @@ def test_esp_eth_iperf(
)
@pytest.mark.ethernet_router
@pytest.mark.eth_ip101
@pytest.mark.parametrize(
'config',
[
@@ -150,7 +150,6 @@ def test_esp_eth_iperf_ip101_esp32p4(
@pytest.mark.eth_lan8720
@pytest.mark.temp_skip_ci(targets=['esp32'], reason='IDF-14059')
@pytest.mark.parametrize(
'config',
[
@@ -185,7 +184,6 @@ def test_esp_eth_iperf_rtl8201(
@pytest.mark.eth_dp83848
@pytest.mark.temp_skip_ci(targets=['esp32'], reason='IDF-14059')
@pytest.mark.parametrize(
'config',
[

View File

@@ -31,12 +31,14 @@ CONFIG_ESP_TASK_WDT_EN=n
# Enable lwIP IRAM optimization
CONFIG_LWIP_IRAM_OPTIMIZATION=y
CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION=y
# Enable Ethernet IRAM optimization
CONFIG_ETH_IRAM_OPTIMIZATION=y
CONFIG_EXAMPLE_USE_SPI_ETHERNET=y
CONFIG_EXAMPLE_USE_INTERNAL_ETHERNET=n
CONFIG_EXAMPLE_SPI_ETHERNETS_NUM=1
CONFIG_EXAMPLE_USE_DM9051=y
CONFIG_EXAMPLE_ETH_SPI_CLOCK_MHZ=20
# Config Ethernet Init
CONFIG_ETHERNET_SPI_SUPPORT=y
CONFIG_ETHERNET_INTERNAL_SUPPORT=n
CONFIG_ETHERNET_SPI_NUMBER=1
CONFIG_ETHERNET_SPI_DEV0_DM9051=y
CONFIG_ETHERNET_SPI_CLOCK_MHZ=20

View File

@@ -31,17 +31,22 @@ CONFIG_ESP_TASK_WDT_EN=n
# Enable lwIP IRAM optimization
CONFIG_LWIP_IRAM_OPTIMIZATION=y
CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION=y
# Enable Ethernet IRAM optimization
CONFIG_ETH_IRAM_OPTIMIZATION=y
CONFIG_EXAMPLE_USE_INTERNAL_ETHERNET=y
CONFIG_EXAMPLE_ETH_PHY_DP83848=y
CONFIG_EXAMPLE_ETH_MDC_GPIO=23
CONFIG_EXAMPLE_ETH_MDIO_GPIO=18
CONFIG_EXAMPLE_ETH_PHY_RST_GPIO=5
CONFIG_EXAMPLE_ETH_PHY_ADDR=1
CONFIG_ETH_ENABLED=y
CONFIG_ETH_USE_ESP32_EMAC=y
# IDF-14059
# Config Ethernet Init
CONFIG_ETHERNET_INTERNAL_SUPPORT=y
CONFIG_ETHERNET_PHY_DP83848=y
CONFIG_ETHERNET_PHY_INTERFACE_RMII=y
CONFIG_ETHERNET_RMII_CLK_OUTPUT=y
CONFIG_ETHERNET_RMII_CLK_EXT_LOOPBACK_EN=n
CONFIG_ETHERNET_RMII_CLK_GPIO=17
CONFIG_ETHERNET_MDC_GPIO=23
CONFIG_ETHERNET_MDIO_GPIO=18
CONFIG_ETHERNET_PHY_RST_GPIO=5
CONFIG_ETHERNET_PHY_ADDR=1

View File

@@ -31,16 +31,20 @@ CONFIG_ESP_TASK_WDT_EN=n
# Enable lwIP IRAM optimization
CONFIG_LWIP_IRAM_OPTIMIZATION=y
CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION=y
# Enable Ethernet IRAM optimization
CONFIG_ETH_IRAM_OPTIMIZATION=y
CONFIG_EXAMPLE_USE_INTERNAL_ETHERNET=y
CONFIG_EXAMPLE_ETH_PHY_IP101=y
CONFIG_EXAMPLE_ETH_MDC_GPIO=23
CONFIG_EXAMPLE_ETH_MDIO_GPIO=18
CONFIG_EXAMPLE_ETH_PHY_RST_GPIO=5
CONFIG_EXAMPLE_ETH_PHY_ADDR=1
CONFIG_ETH_ENABLED=y
CONFIG_ETH_USE_ESP32_EMAC=y
# Config Ethernet Init
CONFIG_ETHERNET_INTERNAL_SUPPORT=y
CONFIG_ETHERNET_PHY_IP101=y
CONFIG_ETHERNET_PHY_INTERFACE_RMII=y
CONFIG_ETHERNET_RMII_CLK_INPUT=y
CONFIG_ETHERNET_MDC_GPIO=23
CONFIG_ETHERNET_MDIO_GPIO=18
CONFIG_ETHERNET_PHY_RST_GPIO=5
CONFIG_ETHERNET_PHY_ADDR=1

View File

@@ -33,16 +33,19 @@ CONFIG_ESP_TASK_WDT_EN=n
# Enable lwIP IRAM optimization
CONFIG_LWIP_IRAM_OPTIMIZATION=y
CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION=y
# Enable Ethernet IRAM optimization
CONFIG_ETH_IRAM_OPTIMIZATION=y
CONFIG_EXAMPLE_USE_INTERNAL_ETHERNET=y
CONFIG_EXAMPLE_ETH_PHY_IP101=y
CONFIG_EXAMPLE_ETH_MDC_GPIO=31
CONFIG_EXAMPLE_ETH_MDIO_GPIO=52
CONFIG_EXAMPLE_ETH_PHY_RST_GPIO=51
CONFIG_EXAMPLE_ETH_PHY_ADDR=1
CONFIG_ETH_ENABLED=y
CONFIG_ETH_USE_ESP32_EMAC=y
# Config Ethernet Init
CONFIG_ETHERNET_INTERNAL_SUPPORT=y
CONFIG_ETHERNET_PHY_IP101=y
CONFIG_ETHERNET_PHY_INTERFACE_RMII=y
CONFIG_ETHERNET_MDC_GPIO=31
CONFIG_ETHERNET_MDIO_GPIO=52
CONFIG_ETHERNET_PHY_RST_GPIO=51
CONFIG_ETHERNET_PHY_ADDR=1

View File

@@ -31,16 +31,21 @@ CONFIG_ESP_TASK_WDT_EN=n
# Enable lwIP IRAM optimization
CONFIG_LWIP_IRAM_OPTIMIZATION=y
CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION=y
# Enable Ethernet IRAM optimization
CONFIG_ETH_IRAM_OPTIMIZATION=y
CONFIG_EXAMPLE_USE_INTERNAL_ETHERNET=y
CONFIG_EXAMPLE_ETH_PHY_KSZ80XX=y
CONFIG_EXAMPLE_ETH_MDC_GPIO=23
CONFIG_EXAMPLE_ETH_MDIO_GPIO=18
CONFIG_EXAMPLE_ETH_PHY_RST_GPIO=5
CONFIG_EXAMPLE_ETH_PHY_ADDR=1
CONFIG_ETH_ENABLED=y
CONFIG_ETH_USE_ESP32_EMAC=y
# Config Ethernet Init
CONFIG_ETHERNET_INTERNAL_SUPPORT=y
CONFIG_ETHERNET_PHY_KSZ80XX=y
CONFIG_ETHERNET_PHY_INTERFACE_RMII=y
CONFIG_ETHERNET_RMII_CLK_INPUT=y
CONFIG_ETHERNET_RMII_CLK_GPIO=0
CONFIG_ETHERNET_MDC_GPIO=23
CONFIG_ETHERNET_MDIO_GPIO=18
CONFIG_ETHERNET_PHY_RST_GPIO=5
CONFIG_ETHERNET_PHY_ADDR=1

View File

@@ -31,12 +31,14 @@ CONFIG_ESP_TASK_WDT_EN=n
# Enable lwIP IRAM optimization
CONFIG_LWIP_IRAM_OPTIMIZATION=y
CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION=y
# Enable Ethernet IRAM optimization
CONFIG_ETH_IRAM_OPTIMIZATION=y
CONFIG_EXAMPLE_USE_SPI_ETHERNET=y
CONFIG_EXAMPLE_USE_INTERNAL_ETHERNET=n
CONFIG_EXAMPLE_SPI_ETHERNETS_NUM=1
CONFIG_EXAMPLE_USE_KSZ8851SNL=y
CONFIG_EXAMPLE_ETH_SPI_CLOCK_MHZ=20
# Config Ethernet Init
CONFIG_ETHERNET_SPI_SUPPORT=y
CONFIG_ETHERNET_INTERNAL_SUPPORT=n
CONFIG_ETHERNET_SPI_NUMBER=1
CONFIG_ETHERNET_SPI_DEV0_KSZ8851SNL=y
CONFIG_ETHERNET_SPI_CLOCK_MHZ=20

View File

@@ -31,17 +31,22 @@ CONFIG_ESP_TASK_WDT_EN=n
# Enable lwIP IRAM optimization
CONFIG_LWIP_IRAM_OPTIMIZATION=y
CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION=y
# Enable Ethernet IRAM optimization
CONFIG_ETH_IRAM_OPTIMIZATION=y
CONFIG_EXAMPLE_USE_INTERNAL_ETHERNET=y
CONFIG_EXAMPLE_ETH_PHY_LAN87XX=y
CONFIG_EXAMPLE_ETH_MDC_GPIO=23
CONFIG_EXAMPLE_ETH_MDIO_GPIO=18
CONFIG_EXAMPLE_ETH_PHY_RST_GPIO=5
CONFIG_EXAMPLE_ETH_PHY_ADDR=0
CONFIG_ETH_ENABLED=y
CONFIG_ETH_USE_ESP32_EMAC=y
# IDF-14059
# Config Ethernet Init
CONFIG_ETHERNET_INTERNAL_SUPPORT=y
CONFIG_ETHERNET_PHY_LAN87XX=y
CONFIG_ETHERNET_PHY_INTERFACE_RMII=y
CONFIG_ETHERNET_RMII_CLK_OUTPUT=y
CONFIG_ETHERNET_RMII_CLK_EXT_LOOPBACK_EN=n
CONFIG_ETHERNET_RMII_CLK_GPIO=17
CONFIG_ETHERNET_MDC_GPIO=23
CONFIG_ETHERNET_MDIO_GPIO=18
CONFIG_ETHERNET_PHY_RST_GPIO=5
CONFIG_ETHERNET_PHY_ADDR=0

View File

@@ -31,14 +31,18 @@ CONFIG_ESP_TASK_WDT_EN=n
# Enable lwIP IRAM optimization
CONFIG_LWIP_IRAM_OPTIMIZATION=y
CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION=y
# Enable Ethernet IRAM optimization
CONFIG_ETH_IRAM_OPTIMIZATION=y
CONFIG_EXAMPLE_ETH_MDC_GPIO=16
CONFIG_EXAMPLE_ETH_MDIO_GPIO=17
CONFIG_EXAMPLE_ETH_PHY_RST_GPIO=-1
CONFIG_EXAMPLE_ETH_PHY_ADDR=0
CONFIG_EXAMPLE_USE_INTERNAL_ETHERNET=y
CONFIG_EXAMPLE_ETH_PHY_RTL8201=y
# Config Ethernet Init
CONFIG_ETHERNET_PHY_RTL8201=y
CONFIG_ETHERNET_INTERNAL_SUPPORT=y
CONFIG_ETHERNET_RMII_CLK_INPUT=y
# CONFIG_ETHERNET_RMII_CLK_OUTPUT is not set
CONFIG_ETHERNET_RMII_CLK_GPIO=0
CONFIG_ETHERNET_MDC_GPIO=16
CONFIG_ETHERNET_MDIO_GPIO=17
CONFIG_ETHERNET_PHY_RST_GPIO=-1
CONFIG_ETHERNET_PHY_ADDR=0

View File

@@ -31,12 +31,14 @@ CONFIG_ESP_TASK_WDT_EN=n
# Enable lwIP IRAM optimization
CONFIG_LWIP_IRAM_OPTIMIZATION=y
CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION=y
# Enable Ethernet IRAM optimization
CONFIG_ETH_IRAM_OPTIMIZATION=y
CONFIG_EXAMPLE_USE_SPI_ETHERNET=y
CONFIG_EXAMPLE_USE_INTERNAL_ETHERNET=n
CONFIG_EXAMPLE_SPI_ETHERNETS_NUM=1
CONFIG_EXAMPLE_USE_W5500=y
CONFIG_EXAMPLE_ETH_SPI_CLOCK_MHZ=20
# Config Ethernet Init
CONFIG_ETHERNET_SPI_SUPPORT=y
CONFIG_ETHERNET_INTERNAL_SUPPORT=n
CONFIG_ETHERNET_SPI_NUMBER=1
CONFIG_ETHERNET_SPI_DEV0_W5500=y
CONFIG_ETHERNET_SPI_CLOCK_MHZ=20

View File

@@ -36,9 +36,9 @@ CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION=n
# Disable Ethernet IRAM optimization
CONFIG_ETH_IRAM_OPTIMIZATION=n
# Choose w5500
CONFIG_EXAMPLE_USE_SPI_ETHERNET=y
CONFIG_EXAMPLE_USE_INTERNAL_ETHERNET=n
CONFIG_EXAMPLE_SPI_ETHERNETS_NUM=1
CONFIG_EXAMPLE_USE_W5500=y
CONFIG_EXAMPLE_ETH_SPI_CLOCK_MHZ=20
# Config Ethernet Init and Choose w5500
CONFIG_ETHERNET_SPI_SUPPORT=y
CONFIG_ETHERNET_INTERNAL_SUPPORT=n
CONFIG_ETHERNET_SPI_NUMBER=1
CONFIG_ETHERNET_SPI_DEV0_W5500=y
CONFIG_ETHERNET_SPI_CLOCK_MHZ=20

View File

@@ -31,6 +31,7 @@ CONFIG_ESP_TASK_WDT_EN=n
# Enable lwIP IRAM optimization
CONFIG_LWIP_IRAM_OPTIMIZATION=y
CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION=y
# Enable Ethernet IRAM optimization
CONFIG_ETH_IRAM_OPTIMIZATION=y

View File

@@ -1,6 +1,6 @@
dependencies:
ethernet_init:
path: ${IDF_PATH}/examples/ethernet/basic/components/ethernet_init
espressif/ethernet_init:
version: "*"
esp_eth_time:
path: ${IDF_PATH}/examples/ethernet/ptp/components/esp_eth_time
ptpd:

View File

@@ -28,7 +28,7 @@ void init_ethernet_and_netif(void)
ESP_ERROR_CHECK(esp_event_loop_create_default());
ESP_ERROR_CHECK(example_eth_init(&eth_handles, &eth_port_cnt));
ESP_ERROR_CHECK(ethernet_init_all(&eth_handles, &eth_port_cnt));
ESP_ERROR_CHECK(esp_netif_init());

View File

@@ -2,8 +2,8 @@ CONFIG_IDF_TARGET="esp32p4"
CONFIG_ESP_NETIF_L2_TAP=y
CONFIG_EXAMPLE_USE_INTERNAL_ETHERNET=y
CONFIG_EXAMPLE_ETH_PHY_IP101=y
CONFIG_ETHERNET_INTERNAL_SUPPORT=y
CONFIG_ETHERNET_PHY_IP101=y
CONFIG_NETUTILS_PTPD=y
CONFIG_NETUTILS_PTPD_CLIENT=y

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/
@@ -101,10 +101,14 @@ static void example_wifi_init(void)
void app_main(void)
{
// Create default event loop that running in background
ESP_ERROR_CHECK(esp_event_loop_create_default());
// Initialize Ethernet driver
uint8_t eth_port_cnt = 0;
esp_eth_handle_t *eth_handles;
ESP_ERROR_CHECK(example_eth_init(&eth_handles, &eth_port_cnt));
ESP_ERROR_CHECK(ethernet_init_all(&eth_handles, &eth_port_cnt));
// The same MAC address will be used for all Ethernet ports since the bridge acts as one device
uint8_t common_mac_addr[ETH_ADDR_LEN];
@@ -117,8 +121,6 @@ void app_main(void)
// Initialize TCP/IP network interface
ESP_ERROR_CHECK(esp_netif_init());
// Create default event loop that running in background
ESP_ERROR_CHECK(esp_event_loop_create_default());
// Create instances of esp-netif for Ethernet ports
esp_netif_t **eth_netifs = calloc(eth_port_cnt, sizeof(esp_netif_t *));

View File

@@ -1,3 +1,3 @@
dependencies:
ethernet_init:
path: ${IDF_PATH}/examples/ethernet/basic/components/ethernet_init
espressif/ethernet_init:
version: "*"

View File

@@ -2,5 +2,6 @@
# Note that it enables SPI Ethernet, so it uses eth-eth bridge (to support targets that don't have Wi-Fi)
CONFIG_ESP_NETIF_TCPIP_LWIP=y
CONFIG_ESP_NETIF_BRIDGE_EN=y
CONFIG_EXAMPLE_USE_SPI_ETHERNET=y
CONFIG_ETHERNET_SPI_SUPPORT=y
CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=1
# CONFIG_ETHERNET_INTERNAL_SUPPORT is not set

View File

@@ -8,20 +8,21 @@ CONFIG_ESP_NETIF_BRIDGE_EN=y
CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=1
# Configure network interface
# CONFIG_EXAMPLE_USE_INTERNAL_ETHERNET is not set
CONFIG_EXAMPLE_USE_SPI_ETHERNET=y
CONFIG_EXAMPLE_SPI_ETHERNETS_NUM=2
# CONFIG_EXAMPLE_USE_DM9051 is not set
# CONFIG_EXAMPLE_USE_KSZ8851SNL is not set
CONFIG_EXAMPLE_USE_W5500=y
CONFIG_EXAMPLE_ETH_SPI_HOST=1
CONFIG_EXAMPLE_ETH_SPI_SCLK_GPIO=14
CONFIG_EXAMPLE_ETH_SPI_MOSI_GPIO=13
CONFIG_EXAMPLE_ETH_SPI_MISO_GPIO=12
CONFIG_EXAMPLE_ETH_SPI_CLOCK_MHZ=20
CONFIG_EXAMPLE_ETH_SPI_CS0_GPIO=15
CONFIG_EXAMPLE_ETH_SPI_CS1_GPIO=32
CONFIG_EXAMPLE_ETH_SPI_INT0_GPIO=4
CONFIG_EXAMPLE_ETH_SPI_INT1_GPIO=33
CONFIG_EXAMPLE_ETH_SPI_PHY_RST0_GPIO=-1
CONFIG_EXAMPLE_ETH_SPI_PHY_RST1_GPIO=-1
# CONFIG_ETHERNET_INTERNAL_SUPPORT is not set
CONFIG_ETHERNET_SPI_SUPPORT=y
CONFIG_ETHERNET_SPI_NUMBER=2
# CONFIG_ETHERNET_SPI_DEV0_DM9051 is not set
# CONFIG_ETHERNET_SPI_DEV0_KSZ8851SNL is not set
CONFIG_ETHERNET_SPI_DEV0_W5500=y
CONFIG_ETHERNET_SPI_DEV1_W5500=y
CONFIG_ETHERNET_SPI_HOST=1
CONFIG_ETHERNET_SPI_SCLK_GPIO=14
CONFIG_ETHERNET_SPI_MOSI_GPIO=13
CONFIG_ETHERNET_SPI_MISO_GPIO=12
CONFIG_ETHERNET_SPI_CLOCK_MHZ=20
CONFIG_ETHERNET_SPI_CS0_GPIO=15
CONFIG_ETHERNET_SPI_CS1_GPIO=32
CONFIG_ETHERNET_SPI_INT0_GPIO=4
CONFIG_ETHERNET_SPI_INT1_GPIO=33
CONFIG_ETHERNET_SPI_PHY_RST0_GPIO=-1
CONFIG_ETHERNET_SPI_PHY_RST1_GPIO=-1

View File

@@ -5,5 +5,5 @@ CONFIG_ESP_NETIF_TCPIP_LWIP=y
CONFIG_ESP_NETIF_BRIDGE_EN=y
CONFIG_EXAMPLE_BR_DHCPS=y
CONFIG_EXAMPLE_BR_WIFI=y
CONFIG_EXAMPLE_USE_SPI_ETHERNET=y
CONFIG_ETHERNET_SPI_SUPPORT=y
CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=1

View File

@@ -156,7 +156,7 @@ static void initialize_ethernet(void)
{
uint8_t eth_port_cnt = 0;
esp_eth_handle_t *eth_handles;
ESP_ERROR_CHECK(example_eth_init(&eth_handles, &eth_port_cnt));
ESP_ERROR_CHECK(ethernet_init_all(&eth_handles, &eth_port_cnt));
if (eth_port_cnt > 1) {
ESP_LOGW(TAG, "multiple Ethernet devices detected, the first initialized is to be used!");
}

View File

@@ -1,3 +1,3 @@
dependencies:
ethernet_init:
path: ${IDF_PATH}/examples/ethernet/basic/components/ethernet_init
espressif/ethernet_init:
version: "*"

View File

@@ -1,4 +1,4 @@
dependencies:
pcap: "^1.0.0"
ethernet_init:
path: ${IDF_PATH}/examples/ethernet/basic/components/ethernet_init
espressif/ethernet_init:
version: "*"

View File

@@ -127,7 +127,7 @@ static void initialize_eth(void)
// Initialize Ethernet driver
uint8_t eth_port_cnt = 0;
esp_eth_handle_t *eth_handles;
ESP_ERROR_CHECK(example_eth_init(&eth_handles, &eth_port_cnt));
ESP_ERROR_CHECK(ethernet_init_all(&eth_handles, &eth_port_cnt));
if (eth_port_cnt > 0) {
// Register user defined event handlers

View File

@@ -21,5 +21,5 @@ CONFIG_FATFS_LFN_HEAP=y
CONFIG_FATFS_MAX_LFN=31
# Network Interfaces
CONFIG_EXAMPLE_USE_INTERNAL_ETHERNET=n
CONFIG_EXAMPLE_USE_SPI_ETHERNET=n
CONFIG_ETHERNET_INTERNAL_SUPPORT=n
CONFIG_ETHERNET_SPI_SUPPORT=n

View File

@@ -271,7 +271,7 @@ esp_err_t wired_bridge_init(wired_rx_cb_t rx_cb, wired_free_cb_t free_cb)
{
uint8_t eth_port_cnt = 0;
esp_eth_handle_t *eth_handles;
ESP_ERROR_CHECK(example_eth_init(&eth_handles, &eth_port_cnt));
ESP_ERROR_CHECK(ethernet_init_all(&eth_handles, &eth_port_cnt));
// Check for multiple Ethernet interfaces
if (1 < eth_port_cnt) {
@@ -324,7 +324,7 @@ esp_err_t wired_netif_init(void)
{
uint8_t eth_port_cnt = 0;
esp_eth_handle_t *eth_handles;
ESP_ERROR_CHECK(example_eth_init(&eth_handles, &eth_port_cnt));
ESP_ERROR_CHECK(ethernet_init_all(&eth_handles, &eth_port_cnt));
// Check or multiple ethernet interface
if (1 < eth_port_cnt) {

View File

@@ -7,5 +7,5 @@ dependencies:
- if: "target in [esp32s2, esp32s3]"
dns_server:
path: ${IDF_PATH}/examples/protocols/http_server/captive_portal/components/dns_server
ethernet_init:
path: ${IDF_PATH}/examples/ethernet/basic/components/ethernet_init
espressif/ethernet_init:
version: "*"

View File

@@ -1,3 +1,3 @@
dependencies:
ethernet_init:
path: ${IDF_PATH}/examples/ethernet/basic/components/ethernet_init
espressif/ethernet_init:
version: "*"

View File

@@ -132,7 +132,7 @@ void app_main(void)
// Initialize Ethernet driver
uint8_t eth_port_cnt = 0;
esp_eth_handle_t *eth_handle;
ESP_ERROR_CHECK(example_eth_init(&eth_handle, &eth_port_cnt));
ESP_ERROR_CHECK(ethernet_init_all(&eth_handle, &eth_port_cnt));
// Check or multiple ethernet interface
if (1 < eth_port_cnt) {