This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TM4C1294NCPDT:FreeRTOS 的 LWIP 套接字问题

Guru**** 2224720 points
Other Parts Discussed in Thread: EK-TM4C1294XL
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/749219/ccs-tm4c1294ncpdt-lwip-socket-problem-with-freertos

器件型号:TM4C1294NCPDT
Thread 中讨论的其他器件:EK-TM4C1294XL

工具/软件:Code Composer Studio

您好!

我正在尝试创建一个套接字、用于与具有 Tiva TM4C1294XL Launchpad 的服务器进行通信。 我已将 LWIP 与 FreeRTOS 一起用于 TCP 堆栈和线程。

一旦 LWIP TCP 堆栈初始化后、链路就会启动、PC 的'ping'命令会响应。

真正的问题是:

使用 lwip_socket() API 创建套接字后,没有 ping,也找不到创建的套接字。

代码片段...

int16_t sockfill;
/*创建套接字*/
sockkfd = lwip_socket (AF_iNet、SOCK_STREAM、0);
LWIP_assert ("sockfd >=0"、sockfd >=0);
返回的早餐;

在 tcp_callback()函数处理程序中使用完成套接字创建。 tcp_callback()在 lwip_init()函数之后完成。

这是 代码流

lwipTaskInit (空)

lwIPInit (g_ui32SysClock、pui8MAC、ip_address.addr、net_mask.addr、gateway.addr、 ipaddr_use_static);

//
//在 TCP/IP 线程的上下文中设置其余服务。
//
TCPIP_callback (SetupServices、0);

返回0

SetupServices (void *pvArg)

uint8_t pui8MAC[6];
uint32_t ui32Loop;

//
//设置设备定位服务。
//
LocatorInit();
lwIPLocalMACGet (pui8MAC);
LocatorMACAddrSet (pui8MAC);
LocatorAppTitleSet ("EK-TM4C1294XL Enet_S2E");

//
ConfigWebInit();

HubClientISockCreate();

 int HubClientSockCreate (空)

uint16_t sockfd;
/*创建套接字*/
sockkfd = lwip_socket (AF_iNet、SOCK_STREAM、0);
LWIP_assert ("sockfd >=0"、sockfd >=0);
返回的早餐;

注:我已禁用 DHCP 并使用静态 IP。  LWIP 选项集为

//
#define HOST_TMR_INTERVAL 40 //默认值为0
//#define DHCP_EXPIREE_TIMER_ms (10 * 1000)
#define LWIP_HTTPD_SSI 1.
#define LWIP_HTTPD_CGI 1.
#define LWIP_HTTPD_MAX_CGI_PARAMETERS 20 //默认为16
#define LWIP_HTTPD_DYNAL_HEADers 1.
//#define HTTPD_DEBUG LWIP_DBG_ON
#define EMAC_PHY_CONFIG (EMAC_PHY_TYPE_INTERNAL | EMAC_PHY_INT_MDIX_EN |\
EMAC_PHY_AN_100B_T_FULL_DUPLEX)
#define PHY_PHY_ADDR 0
#define NUM_TX_descriptors 24.
#define NUM_RX_descriptors 8.

#define LWIP_DHCP             0    

#define LWIP_AUTOIP 0 //默认值为0
#define LWIP_DHCP_AUTOIP_COOP ((LWIP_DHCP)&&(LWIP_AUTOIP)
//默认为0
#define LWIP_DHCP_AUTOIP_COOP_TESes 5 //默认值为9

#define LWIP_TCP 1.
//#define tcp_TTL (IP_DEFAULT_TTL)
#define tcp_WND 4096 //默认值为2048
//#define tcp_MAXTX 12.
//#define tcp_SYNMAXRTX 6.
//#define tcp_queue_OOSEQ 1.
#define tcp_MSS 1500 //默认为536
//#define tcp_calculate_EFF_send_MSS 1.
#define tcp_snd_BUF (4 * tcp_mss)

#define LWIP_EVENT_API 0
#define LWIP_callback_API 1.

//#define LWIP_NETIF_HOSTNAME 0
//#define LWIP_NETIF_API 0
//#define LWIP_NETIF_STATUS_CALLMACK 0
//#define LWIP_NETIF_LINK_CALLMACK 0
//#define LWIP_NETIF_HWADDRHINT 0

#define LWIP_TCPIP_CORE_LOCK_LOCING_0
#define LWIP_NETCONN 1 //默认值为1

#define LWIP_Socket 1 //默认值为1
#define LWIP_COMPAT_Sockets 0
#define LWIP_POSIX_Sockets _IO_Names 1.
#define LWIP_tcp_keepalive 0
#define LWIP_SO_RCVTIMEO 0
#define LWIP_SO_RCVBUF 0
#define SO_reuse 0

#define LWIP_SOCKET_OFFSET 5.
#define LWIP_SO_SNDTIMEO 0
#define LWIP_SO_SNDRCVTIMEO_NONSTANDARD 0
#define LWIP_SO_Linger 0
#define LWIP_tcp_close_timeout_MS_default 20000
#define SO_REUSE_RXTOALL 0
#define LWIP_FIONREAD_LINUXMODE 0
#define LWIP_IPv4 1.

请参阅随附的 lwipopts.h filee2e.ti.com/.../1258.lwipopts.h

请说明 lwip_socket 创建有什么问题?

此致

Rajesh Kumar V