//网卡接收数据(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字段(一个函数)来处理数据包 运行到这里就进入了硬中断里去了 程序就卡死了 该如何解决呢? |
单步运行,看看到哪里就出错了。
我估计应该是接收缓冲没有定义好,导致溢出了。
还有一种可能是化LWIP定时器没有初始化,导致出现死等待了。
请检查 sys_arch.c 文件内的 init_lwip_timer 函数。
评分
查看全部评分
评分
查看全部评分