完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void EtherneTaskStart(void)
{ // sem_tcp_ok = xSemaphoreCreateBinary(); esp_netif_config_t cfg = ESP_NETIF_DEFAULT_ETH(); esp_netif_t *eth_netif = esp_netif_new(&cfg); // Set default handlers to process TCP/IP stuffs ESP_ERROR_CHECK(esp_eth_set_default_handlers(eth_netif)); // Register user defined event handers ESP_ERROR_CHECK(esp_event_handler_register(ETH_EVENT, ESP_EVENT_ANY_ID, ð_event_handler, NULL)); ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_ETH_GOT_IP, &got_ip_event_handler, NULL)); eth_mac_config_t mac_config = ETH_MAC_DEFAULT_CONFIG(); eth_phy_config_t phy_config = ETH_PHY_DEFAULT_CONFIG(); phy_config.phy_addr = CONFIG_EXAMPLE_ETH_PHY_ADDR; phy_config.reset_gpio_num = CONFIG_EXAMPLE_ETH_PHY_RST_GPIO; #if CONFIG_EXAMPLE_USE_INTERNAL_ETHERNET mac_config.smi_mdc_gpio_num = CONFIG_EXAMPLE_ETH_MDC_GPIO; mac_config.smi_mdio_gpio_num = CONFIG_EXAMPLE_ETH_MDIO_GPIO; esp_eth_mac_t *mac = esp_eth_mac_new_esp32(&mac_config); #endif esp_eth_phy_t *phy = esp_eth_phy_new_lan8720(&phy_config); esp_eth_config_t config = ETH_DEFAULT_CONFIG(mac, phy); ESP_ERROR_CHECK(esp_eth_driver_install(&config, ð_handle)); /* attach Ethernet driver to TCP/IP stack */ ESP_ERROR_CHECK(esp_netif_attach(eth_netif, esp_eth_new_netif_glue(eth_handle))); /* start Ethernet driver state machine */ ESP_ERROR_CHECK(esp_eth_start(eth_handle)); } 错误现象: [0;31mE (224369341) emac_esp32: no mem for receive buffer[0m |
|
相关推荐
1个回答
|
|
关于您提到的运行两天后出现内存问题,这可能是由于以下几个原因:
1. 内存泄漏:在您的代码中可能存在一些未释放的内存,随着时间的推移,这些内存泄漏可能导致可用内存减少,最终导致内存问题。请检查您的代码,确保所有动态分配的内存在使用完毕后都已正确释放。 2. 静态变量:如果您的代码中有大量使用静态变量,这可能会导致内存消耗增加。请检查您的代码,尽量减少使用静态变量。 3. 任务栈溢出:如果您的EtherneTaskStart任务的栈大小设置得过小,可能会导致栈溢出。请检查您的任务栈大小设置,确保它足够大以满足任务的需求。 4. 动态内存分配:如果您的代码中频繁进行动态内存分配和释放,可能会导致内存碎片化。这可能会降低内存使用效率,从而导致内存问题。请尽量减少动态内存分配的次数,或者使用内存池来管理内存。 5. 其他原因:除了上述原因外,还有可能是其他代码或库的问题。请检查您的整个项目,确保没有其他潜在的内存问题。 为了解决这个问题,您可以尝试以下方法: 1. 使用内存分析工具(如ESP-IDF的heap_debug)来检测内存泄漏和内存碎片化问题。 2. 优化代码,减少内存消耗,例如减少静态变量的使用,合理设置任务栈大小等。 3. 如果可能,尝试使用更高效的数据结构和算法,以减少内存消耗。 4. 考虑使用内存池来管理内存,以减少动态内存分配和释放的次数。 5. 定期检查和优化代码,确保没有潜在的内存问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
1030 浏览 1 评论
562浏览 6评论
470浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
454浏览 5评论
454浏览 4评论
428浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 01:16 , Processed in 0.415924 second(s), Total 47, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号