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.

[参考译文] 编译器/TM4C1294NCPDT:选择套接字层支持时、ENET_S2E 项目不会编译

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/564849/compiler-tm4c1294ncpdt-enet_s2e-project-will-not-compile-when-selecting-the-socket-layer-support

器件型号:TM4C1294NCPDT

工具/软件:TI C/C++编译器

我已从 TI TM4C129x 网站开发软件中获取 Enet_S2E 项目。 这已随 TivaWare 2.1.3.156示例目录文件夹 dk_tm4c129x\enet_S2E 一起安装。 Tivaware 发行版中的 LWIP 版本为1.4.1。 在对 includes 和一些文件的路径指定进行一些必要的更改后、工程会编译、运行、使 Finder.exe 程序在网络上"看到"它、并且可以在浏览器中访问 Web 界面。

现在、我需要使用顺序 BSD 样式的套接字 API。 我尝试使用以下开关启用它

#define LWIP_Socket                    0          //默认值为1 
//#define LWIP_COMPAT_Sockets            1.
//#define LWIP_POSIX_Sockets _IO_Names    1.

或这些定义的任何组合、项目都会生成许多错误。 是否有任何人都可以让该项目在完全启用套接字的情况下进行编译的解决方案。
我已经花费了大量的时间尝试返回这些错误、尝试确定原因、但只发现了一些宏#defines
构建似乎是冲突的。 整个 lwipopts.h 文件列印如下。 我也可以提供任何人
对项目文件感兴趣、以便您也可以生成和遇到错误(如果可以、您可能需要更改安装位置路径等)
获取"附加文件"操作以在此论坛页面上工作。

提前感谢您提供任何可能导致此工作的指导。

谢谢、
Russ
//
//
// lwipopts.h - lwIP 的配置文件
//
//版权所有(c) 2014-2015 Texas Instruments Incorporated。 保留所有权利。
//软件许可协议
//
//德州仪器(TI)提供此软件仅供
和//仅供 TI 的微控制器产品使用。 软件归
// TI 和/或其供应商所有,并受适用的版权
//法律保护。 您不能将此软件与"病毒"开源
//软件组合在一起以形成更大的程序。
//
//此软件按“原样”提供,且存在所有故障。
//对于

本软件,不作任何明示、暗示或法定的保证,包括但不限于对适销性和适用性的暗示保证//特定用途。 在任何
//情况下、TI 不对任何
原因造成的特殊、意外或必然//损害负责。
//
//这是 EK-TM4C1294XL 固件包版本2.1.0.12573的一部分。
////
*****************
//
//注:此文件源自 lwIP/src/include/lwip/opt.h
//头文件。
//
//有关其他详细信息,请参阅原始的"opt.h"文件和 lwIP
//文档。
////
*****************

#ifndef __LWIPOPTS_H__
#define __LWIPOPTS_H__

//*********
////
--- Stellaris / lwIP 端口选项---
////
*****************
#define HOST_TMR_INTERVAL 40 //默认值为0
//#define DHCP_EXPIRE_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 SYS_Lighting_PROT 1 //默认为0
#define NO_SYS 0 //默认为0
#if!NO_SYS
#define LWIP_COMPAT_mutex 1
#define RTOS_FreeRTOS 1
#endif /*!no_SYS */
//#define memcpy (dst、src、len) memcpy (dst、src、len)
//#define SMEMCPY (dst、src、len) memcpy (dst、src、len)

//*************
////
--- 内存选项--------------------------------------------------------
////
*****************
//#define MEM_libc_malloc 0
#define MEM_alignment 4
#define MEM_SIZE (64 * 1024)
//#define MEMP_OVERFLOAD_CHECK 0
//#define MEMP_sanity_check 0
//#define MEM_USE_Pools 0
//#define MEMP_USE_CUSTOM_Pools 0

//*****************
////
--- 内部内存池大小--------------------------------------------------------
////
*****************
#define MEMP_NUM_PBUF 48 //默认16
//#define MEMP_NUM_RAW_PCB 4
//#define MEMP_NUM_UDP_PCB 4
#define MEMP_NUM_tcp_PCB 16 //默认5
//#define MEMP_NUM_tcp_PCV_Listen 8
//#define MEMP_NUM_tcp_SEG 16
//#define MEMP_NUM_REASSDATA 5
//#define MEMP_NUM_ARP_queue 30
//#define MEMP_NUM_IGMP_GROUP 8
#define MEMP_NUM_SYS_TIMEOUT 8
//#define MEMP_NUM_NETBUF 2
//#define MEMP_NUM_NETCONN 4
//#define MEMP_NUM_TCPIP_MSG_API 8
//#define MEMP_NUM_TCPIP_MSG_INPKT 8
#define PBUF_POOL_SIZE 48 //默认16

//*********
////
--- ARP 选项---
////
*****************
//#define LWIP_ARP 1
//#define ARP_TABLE _SIZE 10
//#define ARP_Queuing 1
//#define ETHARP_trust_IP_MAC 1

/*************
////
--- IP 选项--------
////
*****************
//#define IP_Forward 0
//#define IP_OPTIONS 允许 1
#define IP_re组装 0 //默认为1
#define IP_Frag 0 //默认为1
//#define IP_REASS_maxage 3
//#define IP_REASS_MAX_PBUFS 10
//#define IP_FRAG_USS_STATUS_BUF 1
//#define IP_FRAG_MAX_MTU 1500
//#define IP_DEFAULT_TTL 255

//*********
////
--- ICMP 选项---
////
*****************
//#define LWIP_ICMP 1
//#define ICMP_TTL (IP_DEFAULT_TTL)

//*********
////
--- 原始选项---
////
*****************
//#define LWIP_RAW 1
//#define RAW_TTL (IP_DEFAULT_TTL)

//*********
////
--- DHCP 选项--------------------------------------------------------
////
*****************
#define LWIP_DHCP 1 //默认值为0
//#define DHCP_do_ARP_CHECK ((LWIP_DHCP)&&(LWIP_ARP)

//*************
////
--- UPnP 选项---
////
*****************
//#define LWIP_UPnP 0

//*****************
////
--- PTPD 选项---
////
*****************
//#define LWIP_PTPD 0

//*****************
////
--- AutoIP 选项---
////
*****************
#define LWIP_AUTOIP 1 //默认为0
#define LWIP_DHCP_AUTOIP_COOP ((LWIP_DHCP)&&(LWIP_AUTOIP)
//默认为0
#define LWIP_DHCP_AUTOIP_COOP_TESes 5. //默认值为9

//*********
////
--- SNMP 选项--------
////
*****************
//#define LWIP_SNMP 0
//#define SNMP_ANOND_Requests 1
//#define SNMP_TRAP_Destinations 1
//#define SNMP_PRIVE_MIB 0
//#define SNMP_SAFE_Requests 1

/*************
////
--- IGMP 选项--------------------------------------------------------
////
*****************
//#define LWIP_IGMP 0

//*****************
////
--- DNS 选项--------------------------------------------------------
////
*****************
//#define LWIP_DNS 0
//#define DNS_TABLE 大小 4
//#define DNS_MAX_NAME_LENGTH 256
//#define DNS_MAX_SERVERS 2
//#define DNS_Does_name_check 1
//#define DNS_USS_STATUS_BUF 1
//#define DNS_MSG_SIZE 512

//*********
////
--- UDP 选项---
////
*****************
#define LWIP_UDP 1
//#define LWIP_UDPLITE 0
#define UDP_TTL (IP_DEFAULT_TTL)

//*********
////
--- TCP 选项---------
////
*****************
#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)
//默认为256,为6 *
//#define tcp_snd_QUEUELEN (4 *(tcp_snd_BUF/tcp_MSS)//#define
tcp_snmOWAT (tcp_snd_BUF/2)
//#define tcp_listen_backlog 0
//#define tcp_default_listen_backlog 0xFF

//*********
////
--- API 选项---
////
*****************
//#define LWIP_EVENT_API 0
//#define LWIP_callback_API 1

/*************
////
--- Pbuf 选项---
////
*****************
#define PBUF_LINK_HLEN 16. //默认为14
#define PBUF_POOL_BUFSIZE 512
// PBUF_POOL_BUFSIZE 默认值为
// LWIP_MEM_ALIGN_SIZE (tcp_MSS+40+PBUF_LINK_HLEN)
#define ETH_PAD_SIZE 0 //默认值为0

//*************
////
--- 网络接口选项---------
////
*****************
//#define LWIP_NETIF_HOSTNAME 0
//#define LWIP_NETIF_API 0
//#define LWIP_NETIF_STATUS_CALLACK 0
//#define LWIP_NETIF_LINK_REACLK 0
//#define LWIP_NETIF_HWADDRHINT 0

//*****************
////
--- LOOPIF 选项---
////
*****************
//#define LWIP_HASE_LOOPIF 0
//#define LWIP_LOOPIF_MULTITIPE 1

/*************
////
--- 线程选项--------------------------------------------------------
////
*****************
#define TCPIP_thread_name "TCPIP_thread"
#define TCPIP_thread_STACKSIZE 1024
#define TCPIP_thread_PRIO 3
#define TCPIP_MBOX_SIZE 32
//#define SLIPIF_thread_name "slipif_loop"
//#define SLIPIF_thread_STACKSIZE 0
//#define SLIPIF_thread_PRIO 1
//#define ppp_thread_name "pppMain"
//#define PPP_thread_STACKSIZE 0
//#define PPP_thread_PRIO 1
//#define DEFAULT_THREAD_NAME "lwIP"
//#define DEFAULT_THREAD_STACKSIZE 0
//#define DEFAULT_THREAD_PRIO 1
//#define DEFAULT_RAW_RECVMBOX_SIZE 0
//#define DEFAULT_UDP_RECVMBOX_SIZE 0
//#define DEFAULT_tcp_RECVMBOX_SIZE 0
//#define DEFAULT_ACCEPPTMBOX_SIZE 0

//*****************
////
--- 顺序图层选项---
////
*****************
//#define LWIP_TCPIP_CORE_LOCK_LOCING 0
#define LWIP_NETCONN 1 //默认值为1
//#define LWIP_Provide _errno 1
//*************
////
--- 套接字选项---
////
*****************
#define LWIP_SOCKET 0 //默认为1
//#define LWIP_COMPAT_Sockets 1
//#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_STATS 1
//#define LWIP_STATS_DISPLAY 0
//#define LINK_STATS 1
//#define ETHARP_STATS (LWIP_ARP)
//#define IP_STATS 1
//#define IPFRAG_STATS (IP_RELEGECTING|| IP_FRAG)
//#define ICMP_STATS 1
//#define IGMP_STATS (LWIP_IGMP)
//#define UDP_STATS (LWIP_UDP)
//#define tcp_stats (LWIP_TCP)
//#define MEM_STATS 1
//#define MEMP_STATS 1
//#define SYS_STATS 1

/*************
////
--- PPP 选项--------------------------------------------------------
////
*****************
//#define ppp_support 0
//#define PPPoE_support 0
//#define PPPOS_support ppp_support

#if ppp_support
//#define NUM_PPP 1
//#define PAP_SUPPT助 0
//#define CHAP_support 0
//#define MSCHAP_support 0
//#define CBCP_support 0
//#define CCP_support 0
//#define VJ_support 0
//#define MD5_support 0
//#define FSM_DEFTIMEOUT 6
//#define FSM_DEFMAXTERMREQS 2
//#define FSM_DEFMAXCONFREQS 10
//#define FSM_DEFMAXNAKLOOPS 5
//#define UPAP_DEFTIMEOUT 6
//#define UPAP_DEFREQTIME 30
//#define CHAP_DEFTIMEOUT 6
//#define CHAP_DEFTRANSMITS 10
//#define LCP_ECHOINTERVAL 0
//#define LCP_MAXCHOFAILS 3
//#define PPP_MAXIDLEFLAG 100

//#define PPP_MAXMTU 1500
//#define PPP_DEFMRU 296
#endif

//*********
////
--- 校验和选项----------------------------------------------------
////
*****************
#define CHECKSUM_GEN_IP 0
#define CHECKSUM_GEN_ICMP 0
#define CHECKSUM_GEN_UDP 0
#define CHECKSUM_GEN_TCP 0
#define CHECKSUM_CHECK_IP 0
#define CHECKSUM_CHECK_UDP 0
#define CHECKSUM_CHECK_TCP 0

//*****************
////
--- 调试选项---
////
*****************
#if 0
#define U8_F "c"
#define S8_F "c"
#define X8_F "x"
#define U16_F "u"
#define S16_F
"x"
#define U32_F "u"
#define S32_F "d"
#define X32_F "x"#define X16_F "x"#define UARTx_F "x"
#define U32_F "x"x"、#define UARTn_F
#define UARTx_F #define UARTn_F #define UARTn_F #define #define UARTn_


LWIP_DBG_LEVEL_OFF
#define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_OFF
//#define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_WARNING
//#define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_SEARGD/#define
LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_SEVERE

//#define LWIP_DBG_Types_on LWIP_DBG_ON
#define LWIP_DBG_Types_on (LWIP_DBG_ON|LWIP_DBG_TRACE| \
LWIP_DBG_State|LWIP_DBG_FRESH)

//#define ETHARP_DEBUG LWIP_DBG_ON //默认为 off
//#define NETIF_DEBUG LWIP_DBG_ON //默认为 off
//#define PBUF_DEBUG LWIP_DBG_OFF
//#define API_LIB_DEBUG LWIP_DBG_OFF
//#define API_MSG_DEBUG LWIP_DBG_OFF
//#define SOCKETS_DEBUG LWIP_DBG_OFF
//#define ICMP_DEBUG LWIP_DBG_OFF
//#define IGMP_DEBUG LWIP_DBG_OFF
//#define iNet_debug LWIP_DBG_OFF
//#define IP_DEBUG LWIP_DBG_ON //默认为 off
//#define IP_REASS_DEBUG LWIP_DBG_OFF
//#define RAW_DEBUG LWIP_DBG_OFF
//#define MEM_DEBUG LWIP_DBG_OFF
//#define MEMP_DEBUG LWIP_DBG_OFF
//#define SYS_DEBUG LWIP_DBG_OFF
//#define tcp_debug LWIP_DBG_OFF
//#define tcp_input_debug LWIP_DBG_OFF
//#define tcp_FR_DEBUG LWIP_DBG_OFF
//#define tcp_RTO 调试 LWIP_DBG_OFF
//#define tcp_CWND_DEBUG LWIP_DBG_OFF
//#define tcp_WND_DEBUG LWIP_DBG_OFF
//#define tcp_output_debug LWIP_DBG_OFF
//#define tcp_RST_DEBUG LWIP_DBG_OFF
//#define tcp_QLEN_DEBUG LWIP_DBG_OFF
//#define UDP_DEBUG LWIP_DBG_ON //默认为 off
//#define TCPIP_DEBUG LWIP_DBG_OFF
//#define PPP_DEBUG LWIP_DBG_OFF
//#define SLIT_DEBUG LWIP_DBG_OFF
//#define DHCP_DEBUG LWIP_DBG_ON //默认为 off
//#define AUTOIP_DEBUG LWIP_DBG_OFF
//#define SNMP_MSG_DEBUG LWIP_DBG_OFF
//#define SNMP_MIB_DEBUG LWIP_DBG_OFF
//#define DNS_DEBUG LWIP_DBG_OFF

#endif /*__LWIPOPTS_H__*/

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Russ

    我已要求相关应用工程师对您的帖子作出响应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Russs、您好!

    [引用 user="Russ Heibel)]现在,我需要使用顺序 BSD 样式的套接字 API。 当我尝试使用以下开关启用它时

    TivaWare 中的 lwIP 端口不支持 BSD 套接字 API。 它仅支持 lwIP 原始 API。

    供参考:原始 API 比 BSD 套接字 API 更高效。 如果您还没有、请参阅 不同应用层的 lwIP 文档 、了解 lwIP 原始 API 和 BSD 样式套接字 API 之间的区别。

    谢谢、

    SAI

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哦... 不幸的是、不是一个预期的或非常好的分辨率... 如果 lwIP 端口不支持 BSD 样式(甚至不支持 netconn)套接字 API、则不确定为什么 Enet_s2E 项目构建在 FreeRTOS 之上;这似乎使该项目的环境和客户扩展复杂化...
    感谢您的回答。
    Russ
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Russ Heibel"]如果 lwIP 端口不支持 BSD 样式(甚至是 netconn)套接字 API,则不知道为什么 Enet_s2E 项目构建在 FreeRTOS 之上;这似乎使该项目的环境和客户扩展复杂化...

    也许是因为典型的 BSD 机器和 Cortex M 微控制器之间存在细微差异,尤其是在性能和可用代码空间方面?