问题描述:
消息队列传输字节太大,网卡就不能用。 目前,设置消息队列传输8字节,网卡工作ok,但消息队列设置传输buf=32字节,网卡就不能用了。网卡不能用的意思,就是ping局域网不通。
osPoolDef(mpool, 32, Messg);
osMessageQDef(MsgBox, 32, sizeof(struct Messg *));
typedef struct
{
int pip;
int cmd;
int data[8]; //如果修改成32字节就,ETH就不能用。
}Messg;
void Message_Send(uint8_t pip,uint8_t cmd,uint8_t *msg)
{
Messg *mptr;
mptr = osPoolAlloc(mpool); // Allocate memory for the message
mptr->cmd=cmd;
mptr->pip=pip;
osMessagePut(MsgBox, (uint32_t)mptr, osWaitForever); // Send Message
}
mpool = osPoolCreate(osPool(mpool)); // create memory pool
MsgBox = osMessageCreate(osMessageQ(MsgBox), NULL); // create msg queue
最初步的分析是:发送消息队列线程和接收消息队列线程堆栈太小,和LWIP内存相关部分设置太小,然后分别设置他们的值,结果,还是一样 网卡一样的不能用。 郁闷中,请大虾们指点一下。
|