Embedded 暂停lwIP原始API的操作
我正在使用Zynq(Picozed devboard)进行一个项目。应用程序是裸机运行的,在原始模式下使用lwIP TCP,其行为基本如下:Embedded 暂停lwIP原始API的操作,embedded,xilinx,bare-metal,lwip,zynq,Embedded,Xilinx,Bare Metal,Lwip,Zynq,我正在使用Zynq(Picozed devboard)进行一个项目。应用程序是裸机运行的,在原始模式下使用lwIP TCP,其行为基本如下: 通过以太网接收一批数据,这些数据存储在RAM中 处理该批数据 通过以太网发回处理后的数据 问题是,我需要测量处理部分的执行时间。然而,在原始模式下运行lwIP迫使我每250/500毫秒调用一次tcp_fasttmr()和tcp_slowtmr(),这使得精确测量变得非常困难。每当我有一段时间没有调用tcp_tmr()函数时,我就会开始通过UART反复接收错
我的问题是,如何挂起网络功能,以便不需要定期调用tcp_tmr()?我试图关闭连接并禁用接口(netif_set_down())和禁用计时器中断,但这似乎对我的问题仍然没有任何影响。我不知道关于该devboard或其上的微控制器的任何信息,但您应该有一个ethernetif.c(lwIP端口)包含以太网接收中断或类似处理的文件。这应该是使用要处理的数据包调用lwIP函数
netif->input
禁用接口不会停止这种行为,它只会停止更高级别的数据包处理。如果您只是对调试的执行时间进行计时,您可以尝试禁用Ethernet接收中断并停止调用
tcp\u tmr
,直到您处理完数据包。我不知道关于该主板或其上的微控制器的任何信息,但您应该有一个ethernetif.c(lwIP端口)包含以太网接收中断或类似处理的文件。这应该是使用要处理的数据包调用lwIP函数netif->input
禁用接口不会停止这种行为,它只会停止更高级别的数据包处理。如果只对调试的执行时间进行计时,可以尝试禁用以太网接收中断并停止调用tcp\u tmr
,直到处理完数据包