本帖最后由 Simon21ic 于 2015-4-1 01:55 编辑
TCPIP中的ARP,IP,UDP也搞定了,socket方式,目前占用15K flash,估计如果完整的协议栈搞定后,flash占用在25KB+。同样芯片,用lwip的话,代码占用在40KB左右,而且是callback方式。
上一些代码吧:
vsfshell_printf(output_pt, "UDP test" VSFSHELL_LINEEND);
socket = vsfip_socket(AF_INET, IPPROTO_UDP);
if (NULL == socket)
{
vsfshell_printf(output_pt, "Fail to create socket." VSFSHELL_LINEEND);
goto handler_thread_end;
}
dest.sin_addr.size = 4;
dest.sin_addr.addr.s_addr = SYS_TO_BE_U32(0xC0A80169); // 192.168.1.105
dest.sin_port = 10000;
buffer = vsfip_buffer_get(64 + strlen(outmsg) + 1);
if (NULL == buffer)
{
vsfshell_printf(output_pt, "not enough resources." VSFSHELL_LINEEND);
goto handler_thread_end;
}
buffer->start += 64;
buffer->len -= 64;
bufptr = vsfip_buffer_ptr(buffer);
strcpy((char *)bufptr, outmsg);
local_pt.state = 0;
vsfsm_pt_entry(pt);
err = vsfip_udp_send(&local_pt, evt, socket, &dest, buffer);
if (err < 0)
{
vsfshell_printf(output_pt, "Fail to send UDP" VSFSHELL_LINEEND);
goto handler_thread_end;
}
if (err != 0) return err;
vsfip_buffer_release(buffer);
vsfshell_printf(output_pt, "UDP tested OK" VSFSHELL_LINEEND);
简单的UDP测试代码,建立socket,分配缓冲,设置远程的地址和端口,发送。。。。
|