[求助] LM3S+lwip使用RAW的方式发送多字节出现问题

ST奚小溪   2010-12-30 17:37 楼主

void TCP_Client_Init()
{
  struct tcp_pcb *Clipcb;
  struct ip_addr ipaddr;
 
  IP4_ADDR(&ipaddr,192,168,1,16);
 
  Clipcb = tcp_new();                       // 建立通信的TCP控制块(Clipcb)
 
  tcp_bind(Clipcb,IP_ADDR_ANY,1026);       // 绑定本地IP地址和端口号
 
  tcp_connect(Clipcb,&ipaddr,1026,TcpCli_Connected);
}

使用该函数发送数据,当数据包长度>104时,程序就跳入了startup_ewarm.c里面的FaultISR(void)。。。。

数据包长度没有超过104时,发送没有任何问题。。

lwipopt.h的参数都是默认的。。

 

请高手指教。。

 

回复评论 (2)

回复 楼主 ST奚小溪 的帖子

楼主,你贴出来的这部分代码和你所出现的问题没有什么关系,产生Fault的原因很多的,检查一下startup.s里堆栈够不够(一般至少是0x400),还有其它一些地方缓冲区分配的问题。lwipopts.h默认只能说明你没有改动过它,但它并不是协议栈本身所必须的一部分,有可能你复制之前,别人改过了。

[ 本帖最后由 academic 于 2010-12-30 17:52 编辑 ]
点赞  2010-12-30 17:48
楼上说得没有错,我发现很多时候FaultISR错误都是内存越界或者不足引起的,如果是IAR的话修改startup——ewarm.c文件中的:static unsigned long pulStack[1024] @ ".noinit";


lwipopts.h可以到TI网站上下一个标准默认的
点赞  2010-12-31 16:05
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复