暗血妖城 发表于 2015-1-9 22:37:46

给位大神 小弟移植LWIP时候遇到了进入硬件中断的问题,望...

//网卡接收数据(lwip直接调用)//netif:网卡结构体指针
//返回值:ERR_OK,发送正常
//       ERR_MEM,发送失败
err_t ethernetif_input(struct netif *netif)
{
        err_t err;
        struct pbuf *p;
        p=low_level_input(netif);   //调用low_level_input函数接收数据
        if(p==NULL) return ERR_MEM;
        delay_ms(2);
        err=netif->input(p, netif); //调用netif结构体中的input字段(一个函数)来处理数据包
        if(err!=ERR_OK)
        {
                LWIP_DEBUGF(NETIF_DEBUG,("ethernetif_input: IP input error\n"));
                pbuf_free(p);
                p = NULL;
        }
        return err;
}

err=netif->input(p, netif); //调用netif结构体中的input字段(一个函数)来处理数据包运行到这里就进入了硬中断里去了 程序就卡死了 该如何解决呢?

暗血妖城 发表于 2015-1-9 22:40:05

拜托 拜托 还有大神吗?在线坐等

暗血妖城 发表于 2015-1-10 10:00:43

网友都说是因为指针指飞了,才出现进入硬件中断里去的 那么该如何调试呢

暗血妖城 发表于 2015-1-10 12:55:43

有大神可以说上两句吗

无薪税绵 发表于 2018-3-28 15:34:51

建议进入netif->input(p, netif); 函数里面,
单步运行,看看到哪里就出错了。

我估计应该是接收缓冲没有定义好,导致溢出了。

还有一种可能是化LWIP定时器没有初始化,导致出现死等待了。
请检查 sys_arch.c 文件内的 init_lwip_timer 函数。

anobodykey 发表于 2018-3-28 15:59:22

参考下库自带的lwip文件,对比一下
页: [1]
查看完整版本: 给位大神 小弟移植LWIP时候遇到了进入硬件中断的问题,望...