我正在使用Zynq(Picozed开发板)开展项目。该应用程序是裸机运行,在RAW模式下使用lwIP TCP,基本上表现如下:
问题是,我需要测量处理部分的执行时间。但是,在RAW模式下运行lwIP会强制我每250/500 ms调用一次tcp_fasttmr()和tcp_slowtmr(),这使得精确测量非常困难。每当我没有调用tcp_tmr()函数一段时间后,我就开始重复通过UART接收错误消息("无法在recv_handler和#34中分配pbuf)。似乎这是从一些与错误处理相关的ISR调用的,但我找不到确切的位置。
我的问题是,如何暂停网络功能,以便我不需要定期调用tcp_tmr()?我尝试关闭连接并禁用接口(netif_set_down())并禁用定时器中断,但它似乎仍然没有影响我的问题。
答案 0 :(得分:0)
我对该开发板或其上的微控制器一无所知,但您应该有一个ethernetif.c(lwIP端口)文件,该文件应包含以太网接收中断或类似处理。这应该使用要处理的数据包调用lwIP函数netif->input
。
禁用界面不会停止此行为,它将停止更高级别的数据包处理。如果您只计算调试执行时间的长短,您可以尝试禁用以太网接收中断并停止调用tcp_tmr
,直到您处理完数据包为止。