暂停lwIP Raw API的操作

问题描述 投票:1回答:1

我正在使用Zynq(Picozed开发板)开展一个项目。该应用程序是裸机运行,在RAW模式下使用lwIP TCP,基本上表现如下:

  1. 通过以太网接收一批数据,存储在RAM中。
  2. 处理批量数据。
  3. 通过以太网发回处理过的数据。

问题是,我需要测量处理部分的执行时间。但是,在RAW模式下运行lwIP会强制我每250/500 ms调用一次tcp_fasttmr()和tcp_slowtmr(),这使得精确测量非常困难。每当我没有调用tcp_tmr()函数一段时间时,我就开始重复通过UART接收错误消息(“无法在recv_handler中分配pbuf”)。似乎这是从一些与错误处理相关的ISR调用的,但我无法找到确切的位置。

我的问题是,如何暂停网络功能,所以我不需要定期调用tcp_tmr()?我尝试关闭连接并禁用接口(netif_set_down())并禁用定时器中断,但它似乎仍然没有影响我的问题。

embedded xilinx bare-metal lwip zynq
1个回答
0
投票

我对该开发板或微控制器一无所知,但你应该有一个ethernetif.c(lwIP端口)文件,该文件应包含以太网接收中断或类似处理。这应该用一个要处理的数据包调用lwIP函数netif->input

禁用接口不会停止此行为,它将停止更高级别的数据包处理。如果您只计算调试执行时间的长短,您可以尝试禁用以太网接收中断并停止调用tcp_tmr,直到您处理完数据包。

© www.soinside.com 2019 - 2024. All rights reserved.