|
|
1
0
这似乎是一个内存问题,但由于它是暂时的,它可能是一个超时的东西。 |
|
|
2
0
我有一份新工作,不再处理这个问题。 在我陈述我的新工作之前,我可以证明这不是LwIP上的内存问题(我定义了不合理的大型PBUF和内存工具),它们从未达到极限。 问题出在以太网的DMA驱动程序中。当到达DMA驱动程序的内存链末端时,链元素从未释放,因此我遇到了RBU(接收缓冲区欠载)问题,RBU标志从未再次重置,DMA ETH驱动程序挂起在这个RBU中断中(即使有足够的LwIP缓冲区从DMA链写入)。因此,我向DMA驱动程序添加了一个大锤修复程序,并禁用了RBU中断(我在多种情况下轮询RBU标志,并在需要时清除它,然后再次开始从ETH读取)。
RBU中断和清除不起作用,因为我们使用的CAN堆栈在FreeRTOS上工作不太好,在繁忙系统上使用的CAN堆栈占用了超过90%的CPU时间,这导致了ETH驱动程序和LWIP中的奇怪行为。 |