本帖最后由 z19820201 于 2015-3-16 11:13 编辑
安 发表于 2015-3-14 11:08
如果死掉以后,重新初始化网络是否可以恢复?相关寄存器的状态是否可以发一下? ...
原因是发送描述符(TX_DESC)一直被DMA占用,如果手动把描述符改为CPU占用,则网络恢复正常。现在还没有找出DMA没有释放描述符的原因。
会不会是因为我的UDP数据是放在TIM1中断里发送的,所以造成了这个问题?
楼主发生的数据是否发生了丢失呢?不建议在中断中进行数据传输。
数据丢失暂时没有发现。现在已经把UDP发送从中断中移出来了。新问题又出现了,运行一段时间后要报ERR_MEM_ALLOC或者ERR_MEM_FREE错误。
安 发表于 2015-3-17 15:22
楼主发生的数据是否发生了丢失呢?不建议在中断中进行数据传输。
数据丢失暂时没有发现。现在已经把UDP发送从中断中移出来了。新问题又出现了,运行一段时间后要报ERR_MEM_ALLOC或者ERR_MEM_FREE错误
楼主能说一下是哪个寄存器的吗?我这里查不到这几个标志位.
安 发表于 2015-3-17 16:55
楼主能说一下是哪个寄存器的吗?我这里查不到这几个标志位.
不是寄存器,是Net_Config.c里面的net_sys_error函数。网上搜了下,说是keil的网络库只能在单任务中运行。今天准备再试下。
不懂,帮顶了
这里标注的说明,楼主看一下是否发生过类似的异常?
安 发表于 2015-3-18 08:59
这里标注的说明,楼主看一下是否发生过类似的异常?
库是封装了的嘛,以我的水平看不到,只知道程序运行到这个代码里面了。缓冲区我已经扩大到12000了,至于释放失败我就搞不清楚是什么情况了。昨天的代码已经把发送程序从中断里面移出去了,但是发送缓冲区请求还在中断里面,网上有资料说这个网络库只可以单任务使用,所以今天把udp_get_buf也移出去了,看看还有啥异常出现。