你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 LWIP 编译 指针问题请教

[复制链接]
憨客鱼 提问时间:2020-10-11 15:58 /
用STM32F407 做无操作系统的LWIP 移植,遇到一个问题
一直连接不上网
最开始
        rval=ETH_Init(&ETH_InitStructure,LAN8720_PHY_ADDRESS);                //ÅäÖÃETH
        if(rval==ETH_SUCCESS)//ÅäÖóɹ¦
        {
                ETH_DMAITConfig(ETH_DMA_IT_NIS|ETH_DMA_IT_R,ENABLE);          //ʹÄÜÒÔÌ«Íø½ÓÊÕÖжϠ      
        }

配置不成功
然后我做了修改
//        ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Enable;                           //¿ªÆôÍøÂç×ÔÊÊÓ¦¹¦ÄÜ
  ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Disable;//hank       


配置成功,但是DHCH老是不成功
然后看打印的信息
netif->output()dhcp_discover: deleting()ing
dhcp_discover: SELECTING
dhcp_discover(): set request timeout 16000 msecs
tcp_slowtmr: no active pcbs

发现是
  prev = NULL;
  pcb = tcp_active_pcbs;
  if (pcb == NULL) {
    LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: no active pcbs\n"));
  }
  while (pcb != NULL) {
           LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: processing active pcb\n"));
    LWIP_ASSERT("tcp_slowtmr: active pcb->state != CLOSED\n", pcb->state != CLOSED);
    LWIP_ASSERT("tcp_slowtmr: active pcb->state != LISTEN\n", pcb->state != LISTEN);
    LWIP_ASSERT("tcp_slowtmr: active pcb->state != TIME-WAIT\n", pcb->state != TIME_WAIT);
    if (pcb->last_timer == tcp_timer_ctr) {
      /* skip this pcb, we have already processed it */
      pcb = pcb->next;
      continue;
    }
这里问题,然后调试,发现很奇怪
编程软件之后 tcp_active_pcbs 就为0 了  所以程序就出错了
但是 这是个结构体 struct tcp_pcb *tcp_active_pcbs;
指针怎么会是0呢
而且程序编译后,tcp_active_pcbs 就为0  但是把  tcp_active_pcbs  放到WATCH窗口里又能看到数据
我用原子的例子程序编译也是同样的结果
我查看MAP 文件  这些代码是在 TCP.C 文件里
MAP 里有给TCP.C 分配位置
0x200000c9   COMPRESSED   0x00000003   PAD
    0x200000cc   COMPRESSED   0x00000004   Data   RW         1542    .data               raw.o
    0x200000d0   COMPRESSED   0x00000024   Data   RW         1564    .data               tcp.o
    0x200000f4   COMPRESSED   0x00000020   Data   RW         1590    .data               tcp_in.o
    0x20000114   COMPRESSED   0x0000000c   Data   RW         1628    .data               timers.o
    0x20000120   COMPRESSED   0x00000008   Data   RW         1645    .data               udp.o
    0x20000128   COMPRESSED   0x00000012   Data   RW         1727    .data               ip.o

不知道哪位大侠知道是什么原因么







收藏 评论1 发布时间:2020-10-11 15:58

举报

1个回答
憨客鱼 回答时间:2020-10-13 18:29:25
顶一下

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版