z19820201 发表于 2015-3-16 10:39:28

本帖最后由 z19820201 于 2015-3-16 11:13 编辑

安 发表于 2015-3-14 11:08
如果死掉以后,重新初始化网络是否可以恢复?相关寄存器的状态是否可以发一下? ...
原因是发送描述符(TX_DESC)一直被DMA占用,如果手动把描述符改为CPU占用,则网络恢复正常。现在还没有找出DMA没有释放描述符的原因。

z19820201 发表于 2015-3-17 10:27:05

会不会是因为我的UDP数据是放在TIM1中断里发送的,所以造成了这个问题?

发表于 2015-3-17 15:22:58

楼主发生的数据是否发生了丢失呢?不建议在中断中进行数据传输。

z19820201 发表于 2015-3-17 16:01:52

数据丢失暂时没有发现。现在已经把UDP发送从中断中移出来了。新问题又出现了,运行一段时间后要报ERR_MEM_ALLOC或者ERR_MEM_FREE错误。

z19820201 发表于 2015-3-17 16:02:27

安 发表于 2015-3-17 15:22
楼主发生的数据是否发生了丢失呢?不建议在中断中进行数据传输。

数据丢失暂时没有发现。现在已经把UDP发送从中断中移出来了。新问题又出现了,运行一段时间后要报ERR_MEM_ALLOC或者ERR_MEM_FREE错误

发表于 2015-3-17 16:55:24

楼主能说一下是哪个寄存器的吗?我这里查不到这几个标志位.

z19820201 发表于 2015-3-18 08:36:22

安 发表于 2015-3-17 16:55
楼主能说一下是哪个寄存器的吗?我这里查不到这几个标志位.

不是寄存器,是Net_Config.c里面的net_sys_error函数。网上搜了下,说是keil的网络库只能在单任务中运行。今天准备再试下。

MouseCat 发表于 2015-3-18 08:42:05

不懂,帮顶了

发表于 2015-3-18 08:59:19

这里标注的说明,楼主看一下是否发生过类似的异常?

z19820201 发表于 2015-3-18 09:23:55

安 发表于 2015-3-18 08:59
这里标注的说明,楼主看一下是否发生过类似的异常?

库是封装了的嘛,以我的水平看不到,只知道程序运行到这个代码里面了。缓冲区我已经扩大到12000了,至于释放失败我就搞不清楚是什么情况了。昨天的代码已经把发送程序从中断里面移出去了,但是发送缓冲区请求还在中断里面,网上有资料说这个网络库只可以单任务使用,所以今天把udp_get_buf也移出去了,看看还有啥异常出现。
页: 1 [2] 3
查看完整版本: STM32407 以太网一段时间后不能通讯