您的位置:首页 > 其它

RTthread erx 线程死掉了啊

2012-06-26 10:06 190 查看
这段时间在弄stm32 +rtthread0.4.0 (lwip) ,可以说是什么问题都遇到过啊 各种各样地,非常难受

下面这个问题 期待高手过来

我用stm32做了个简单的web服务器,结果在PC端用浏览器访问web服务器发现问题了,大概访问30多次 ,rtthread底层的erx线程就挂掉了。

在rt_mb_recv函数中rt_schedule();以后,似乎就再也回不来了。之后,客户端就再也ping不通stm32的服务端了

不知道rtthread0.3.0有没有这个问题 已经试过了0.3.0也有这个问题,现在就不知道linux下如何了

另外我在发数据send的时候也遇到过 这样的问题。

erx线程如下:

void eth_rx_thread_entry(void* parameter)

{

struct eth_device* device;

while (1)

{

if (rt_mb_recv(ð_rx_thread_mb, (rt_uint32_t*)&device, RT_WAITING_FOREVER) == RT_EOK)

{

struct pbuf *p;

/* receive all of buffer */

while (1)

{

p = device->eth_rx(&(device->parent));

if (p != RT_NULL)

{

/* notify to upper layer */

eth_input(p, device->netif);

rt_kprintf("r2\n");

}

else break;

}

}

}

}

rt_err_t rt_mb_recv (rt_mailbox_t mb, rt_uint32_t* value, rt_int32_t timeout)

{

。。。。。。。。。。。。。。。。。。。。

rt_schedule();

。。。。。。。。。。。。。。。。。。。。

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: