找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 953|回复: 5
打印 上一主题 下一主题
收起左侧

STM32单片机移植LWIP问题

[复制链接]
跳转到指定楼层
楼主
ID:378659 发表于 2023-7-30 14:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码功能是创建客户端,静态ip,在407跑通了,但是直接复制移植到429的板子就运行报错,请问可能是啥原因,lwip初始化成功,tcp客户端也初始化成功,之后就运行调试串口打印出这个
Assertion "arp_table.q == NULL" failed at  line 369 in ..\LWIP\lwip-1.4.1\src\netif\etharp.c[ i]



那几行代码是
/* 1) empty entry available? */
  if (empty < ARP_TABLE_SIZE) {
    i = empty;
    LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting empty entry %"U16_F"\n", (u16_t)i));
  } else {
    /* 2) found recyclable stable entry? */
    if (old_stable < ARP_TABLE_SIZE) {
      /* recycle oldest stable*/
      i = old_stable;
      LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting oldest stable entry %"U16_F"\n", (u16_t)i));
      /* no queued packets should exist on stable entries */
      LWIP_ASSERT("arp_table[ i].q == NULL", arp_table[ i].q == NULL);                       //这里就是369行
    /* 3) found recyclable pending entry without queued packets? */
    }


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:320306 发表于 2023-7-31 09:21 | 只看该作者
有可能频率不对,建议看下是不是晶振的大小这些有区别!
回复

使用道具 举报

板凳
ID:1087948 发表于 2023-7-31 12:52 | 只看该作者
这个错误可能是由于lwIP库中的一个断言失败导致的。断言是在代码中用来检查某个条件是否为真的语句,如果条件为假,则会触发断言失败并报错。

在您的情况下,报错信息指出断言失败发生在etharp.c文件的369行,具体是在以下代码段:

c
/* no queued packets should exist on stable entries */
LWIP_ASSERT("arp_table.q == NULL", arp_table.q == NULL);
根据代码注释可以看出,此处的断言用于确保稳定的ARP表项不应该有排队的数据包。如果断言失败,意味着ARP表项中存在排队的数据包,这可能会导致后续的错误。

要解决这个问题,您需要检查和确认以下几点:

确保在调用此断言之前,没有任何数据包被添加到了ARP表项中。
检查您的代码逻辑,确保在使用ARP表项之前,已经正确初始化并设置了相关参数。
检查您的网络配置,确保网络环境和硬件配置正确,并且与407和429板子之间的差异没有导致问题。
如果问题仍然存在,建议您查阅lwIP库的文档或寻求lwIP社区的支持,以获取更详细的帮助和指导。
回复

使用道具 举报

地板
ID:190832 发表于 2023-7-31 15:14 | 只看该作者
换FreeRTOS-TCPIP吧
回复

使用道具 举报

5#
ID:378659 发表于 2023-8-1 10:21 | 只看该作者
zsyzdx 发表于 2023-7-31 09:21
有可能频率不对,建议看下是不是晶振的大小这些有区别!

不太可能是晶振问题吧,硬件环境都一样
回复

使用道具 举报

6#
ID:378659 发表于 2023-8-1 10:26 | 只看该作者
liyonghua111 发表于 2023-7-31 12:52
这个错误可能是由于lwIP库中的一个断言失败导致的。断言是在代码中用来检查某个条件是否为真的语句,如果条 ...

应该没有任何数据包在ARP表上,我试过把远端ip设置为0.0.0.0初始化就能过也不会有上述报错了,但是一旦ping一下本地ip就会有上述报错,网络配置一定没问题,因为lan8720初始化过了,tcp客户端创建成功,唯一的差异是407和429的板子晶振速度不一样,但是延时函数给lwip提供的1ms一定是对地,lwip社区好像百度查不到
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表