乐鑫技术交流
直播中

juju宇哥

8年用户 1411经验值
擅长:479809
私信 关注
[问答]

IDF4.4.6中esp_eth_mac_new_esp32函数能用什么替代?

我在编译 MicroPython 的时候,在 networl_lan.c 文件中遇到了一个错误,没有找到 esp_eth_mac_new_esp32 函数,编译器提示可以用 esp_eth_mac_new_w5500 此类函数代替,但是感觉还是有问题。
MicroPython 官方给出的是必须是 IDF4.1 以上的版本才可以,但我这个版本应该是比较新的了,依然找不到这个函数。
因为后面还有其他代码,所有不可能用 esp_eth_mac_new_w5500  替代,请问应该如何解决?
Code: Select all
    eth_mac_config_t mac_config = ETH_MAC_DEFAULT_CONFIG();    mac_config.smi_mdc_gpio_num = self->mdc_pin;    mac_config.smi_mdio_gpio_num = self->mdio_pin;    esp_eth_mac_t *mac = esp_eth_mac_new_esp32(&mac_config);        eth_phy_config_t phy_config = ETH_PHY_DEFAULT_CONFIG();    phy_config.phy_addr = self->phy_addr;    phy_config.reset_gpio_num = self->phy_power_pin;    self->phy = NULL;    switch (args[ARG_phy_type].u_int) {        case PHY_LAN8720:            self->phy = esp_eth_phy_new_lan8720(&phy_config);            break;        case PHY_IP101:            self->phy = esp_eth_phy_new_ip101(&phy_config);            break;        case PHY_RTL8201:            self->phy = esp_eth_phy_new_rtl8201(&phy_config);            break;        case PHY_DP83848:            self->phy = esp_eth_phy_new_dp83848(&phy_config);            break;        case PHY_W5500:            self->phy = esp_eth_phy_new_w5500(&phy_config);            break;        case PHY_DM9051:            self->phy = esp_eth_phy_new_dm9051(&phy_config);            break;        case PHY_KSZ8851SNL:            self->phy = esp_eth_phy_new_ksz8851snl(&phy_config);            break;        case PHY_KSZ8041:            #if ESP_IDF_VERSION_MINOR >= 3      // KSZ8041 is new in ESP-IDF v4.3            self->phy = esp_eth_phy_new_ksz8041(&phy_config);            break;            #endif        default:            mp_raise_ValueError(MP_ERROR_TEXT("unknown phy"));    }
以上这段是 MicroPython 给出的代码
                                                                                                                                                        

回帖(1)

叹久

2024-6-5 16:06:33
在这种情况下,我们可以尝试以下步骤来解决问题:

1. 确认ESP-IDF版本:首先,请确保您正在使用的ESP-IDF版本确实高于4.1。您可以通过在命令行中输入`git tag`来查看当前ESP-IDF的版本。

2. 更新ESP-IDF:如果您的ESP-IDF版本低于4.1,请更新到最新版本。您可以通过以下命令来更新ESP-IDF:
   ```
   cd $HOME/esp/esp-idf
   git pull
   git checkout v4.4
   git submodule update --init --recursive
   ```

3. 检查esp_eth_mac_new_esp32函数:在更新ESP-IDF后,检查`esp_eth_mac_new_esp32`函数是否存在。您可以在ESP-IDF的源代码中搜索该函数,或者在ESP-IDF的文档中查找相关信息。

4. 替代方案:如果`esp_eth_mac_new_esp32`函数确实不存在,您可以尝试使用其他替代方案。根据您提供的信息,编译器提示可以使用`esp_eth_mac_new_w5500`作为替代。虽然这可能不是最佳解决方案,但在某些情况下,它可能会解决问题。您可以尝试使用这个替代方案,并查看是否能够成功编译。

5. 寻求帮助:如果以上步骤都无法解决问题,您可以在MicroPython社区或者ESP-IDF社区寻求帮助。在这些社区中,您可以找到其他开发者可能已经遇到过类似问题,并获得了解决方案。

6. 考虑其他方案:如果问题仍然无法解决,您可能需要考虑其他方案,例如使用不同的网络库或者修改您的代码以适应当前的ESP-IDF版本。

总之,首先确保您的ESP-IDF版本是最新的,然后尝试使用替代方案或者寻求社区的帮助。希望这些建议能帮助您解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分