From fd2c5a544fa1139c5123c35c83ca6b886bae2e6f Mon Sep 17 00:00:00 2001 From: Ulrich Mohr Date: Mon, 14 Oct 2024 14:06:49 +0200 Subject: [PATCH] xilinx eth lwip version xilinx_v2024.1 --- bsp_z7/lwip/xilinx_eth/CMakeLists.txt | 27 -- bsp_z7/lwip/xilinx_eth/include/arch/cc.h | 43 +-- bsp_z7/lwip/xilinx_eth/include/arch/cc_old.h | 25 -- bsp_z7/lwip/xilinx_eth/include/lwipopts.h | 336 ------------------ bsp_z7/lwip/xilinx_eth/include/lwippools.h | 5 - .../lwip/xilinx_eth/include/netif/xadapter.h | 3 - .../lwip/xilinx_eth/include/netif/xpqueue.h | 2 +- bsp_z7/lwip/xilinx_eth/include/onrre.h | 2 - bsp_z7/lwip/xilinx_eth/include/xethernet.h | 3 - bsp_z7/lwip/xilinx_eth/include/xlwipconfig.h | 27 +- bsp_z7/lwip/xilinx_eth/netif/CMakeLists.txt | 12 - bsp_z7/lwip/xilinx_eth/netif/topology.c | 37 -- bsp_z7/lwip/xilinx_eth/netif/xemacpsif.c | 13 - bsp_z7/lwip/xilinx_eth/netif/xemacpsif_dma.c | 33 +- bsp_z7/lwip/xilinx_eth/port/CMakeLists.txt | 5 - bsp_z7/lwip/xilinx_eth/xethernet.c | 123 ------- 16 files changed, 34 insertions(+), 662 deletions(-) delete mode 100644 bsp_z7/lwip/xilinx_eth/CMakeLists.txt delete mode 100644 bsp_z7/lwip/xilinx_eth/include/arch/cc_old.h delete mode 100644 bsp_z7/lwip/xilinx_eth/include/lwipopts.h delete mode 100644 bsp_z7/lwip/xilinx_eth/include/lwippools.h delete mode 100644 bsp_z7/lwip/xilinx_eth/include/onrre.h delete mode 100644 bsp_z7/lwip/xilinx_eth/include/xethernet.h delete mode 100644 bsp_z7/lwip/xilinx_eth/netif/CMakeLists.txt delete mode 100644 bsp_z7/lwip/xilinx_eth/netif/topology.c delete mode 100644 bsp_z7/lwip/xilinx_eth/port/CMakeLists.txt delete mode 100644 bsp_z7/lwip/xilinx_eth/xethernet.c diff --git a/bsp_z7/lwip/xilinx_eth/CMakeLists.txt b/bsp_z7/lwip/xilinx_eth/CMakeLists.txt deleted file mode 100644 index 724a8e2..0000000 --- a/bsp_z7/lwip/xilinx_eth/CMakeLists.txt +++ /dev/null @@ -1,27 +0,0 @@ -set (LWIP_INCLUDE_DIRS_XIL - "${LWIP_DIR}/src/include" - "${LWIP_DIR}/src/include/compat/posix" - "include" -) - -set(lwip_SRCS_XIL - ${lwipcore_SRCS} - ${lwipcore4_SRCS} - ${lwipcore6_SRCS} - ${lwipnetif_SRCS} - ${lwipapi_SRCS} - #${LWIP_DIR}/contrib/ports/freertos/sys_arch.c - #${LWIP_DIR}/src/netif/slipif.c - #${LWIP_DIR}/src/apps/tftp/tftp.c -) - - -add_library(lwip_xil EXCLUDE_FROM_ALL ${lwip_SRCS_XIL}) - -target_include_directories(lwip_xil PUBLIC ${LWIP_INCLUDE_DIRS_XIL}) - -target_sources(lwip_xil PRIVATE xethernet.c) - -add_subdirectory(netif) -add_subdirectory(port) - diff --git a/bsp_z7/lwip/xilinx_eth/include/arch/cc.h b/bsp_z7/lwip/xilinx_eth/include/arch/cc.h index 803c90b..01b7d16 100644 --- a/bsp_z7/lwip/xilinx_eth/include/arch/cc.h +++ b/bsp_z7/lwip/xilinx_eth/include/arch/cc.h @@ -47,37 +47,30 @@ #include #include "cpu.h" -#include "xil_printf.h" +/* As per new design of lwip-2.0.2, + * LWIP_NO_STDINT_H should be defined as 1 in cc.h */ +#define LWIP_NO_STDINT_H 1 +typedef unsigned char u8_t; +typedef signed char s8_t; +typedef unsigned short u16_t; +typedef signed short s16_t; +typedef unsigned int u32_t; +typedef signed int s32_t; +typedef unsigned long long u64_t; +typedef signed long long s64_t; -// errno is a macro. If we define LWIP_ERRNO_INCLUDE to errno.h the preprocessor will replace it, -// breaking the include. Instead we supply a helper include which in turn includes errno.h -#define LWIP_ERRNO_INCLUDE +#define S16_F "d" +#define U16_F "d" +#define S32_F "d" +#define U32_F "x" -// /* As per new design of lwip-2.0.2, -// * LWIP_NO_STDINT_H should be defined as 1 in cc.h */ -// #define LWIP_NO_STDINT_H 1 - -// typedef unsigned char u8_t; -// typedef signed char s8_t; -// typedef unsigned short u16_t; -// typedef signed short s16_t; -// typedef unsigned int u32_t; -// typedef signed int s32_t; -// typedef unsigned long long u64_t; -// typedef signed long long s64_t; - -// #define S16_F "d" -// #define U16_F "d" -// #define S32_F "d" -// #define U32_F "x" - -// #define X16_F "x" -// #define X32_F "x" +#define X16_F "x" +#define X32_F "x" #define LWIP_RAND rand -// typedef unsigned long mem_ptr_t; +typedef unsigned long mem_ptr_t; #define PACK_STRUCT_FIELD(x) x #define PACK_STRUCT_STRUCT __attribute__((packed)) diff --git a/bsp_z7/lwip/xilinx_eth/include/arch/cc_old.h b/bsp_z7/lwip/xilinx_eth/include/arch/cc_old.h deleted file mode 100644 index 4b17f04..0000000 --- a/bsp_z7/lwip/xilinx_eth/include/arch/cc_old.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include -#include - -#include "lwipopts.h" - -/** if you want to use the struct timeval provided - * by your system, set this to 0 and include in cc.h */ -#define LWIP_TIMEVAL_PRIVATE 0 -#include - -// errno is a macro. If we define LWIP_ERRNO_INCLUDE to errno.h the preprocessor will replace it, -// breaking the include. Instead we supply a helper include which in turn includes errno.h -#define LWIP_ERRNO_INCLUDE - -#define LWIP_RAND rand - -#define PACK_STRUCT_FIELD(x) x -#define PACK_STRUCT_STRUCT __attribute__((packed)) -#define PACK_STRUCT_BEGIN -#define PACK_STRUCT_END - -#define LWIP_PLATFORM_ASSERT(x) -#define LWIP_PLATFORM_DIAG(x) do { printf x; } while(0) diff --git a/bsp_z7/lwip/xilinx_eth/include/lwipopts.h b/bsp_z7/lwip/xilinx_eth/include/lwipopts.h deleted file mode 100644 index a3b8132..0000000 --- a/bsp_z7/lwip/xilinx_eth/include/lwipopts.h +++ /dev/null @@ -1,336 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef LWIP_LWIPOPTS_H -#define LWIP_LWIPOPTS_H - -#define LWIP_IPV4 1 -#define LWIP_IPV6 0 - -#define NO_SYS 0 -#define LWIP_SOCKET 1 -#define LWIP_NETCONN 1 -#define LWIP_NETIF_API 0 - -#define LWIP_IGMP 0 -#define LWIP_ICMP LWIP_IPV4 - -#define LWIP_SNMP 0 -//#define MIB2_STATS LWIP_SNMP -#ifdef LWIP_HAVE_MBEDTLS -#define LWIP_SNMP_V3 (LWIP_SNMP) -#endif - -#define LWIP_DNS 0 -#define LWIP_MDNS_RESPONDER 0 - -#define LWIP_NUM_NETIF_CLIENT_DATA (LWIP_MDNS_RESPONDER) - -#define LWIP_HAVE_LOOPIF 0 -#define LWIP_NETIF_LOOPBACK 0 -#define LWIP_LOOPBACK_MAX_PBUFS 0 - -#define TCP_LISTEN_BACKLOG 0 - -#define LWIP_COMPAT_SOCKETS 2 -//TODO put this into the OS -#define LWIP_POSIX_SOCKETS_IO_NAMES 0 -#define LWIP_SO_RCVTIMEO 0 -#define LWIP_SO_RCVBUF 0 -//TODO use this with LWIP_POSIX_SOCKETS_IO_NAMES -// TODO why is 100 not working... -#define LWIP_SOCKET_OFFSET 10 - -#define LWIP_SOCKET_SELECT 1 -#define LWIP_SOCKET_POLL 1 - -#define LWIP_TCPIP_CORE_LOCKING 0 - -#define LWIP_NETIF_LINK_CALLBACK 1 -#define LWIP_NETIF_STATUS_CALLBACK 1 -#define LWIP_NETIF_EXT_STATUS_CALLBACK 1 - -//#define LWIP_DEBUG - -#ifdef LWIP_DEBUG - -#define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL -#define PPP_DEBUG LWIP_DBG_OFF -#define MEM_DEBUG LWIP_DBG_OFF -#define MEMP_DEBUG LWIP_DBG_OFF -#define PBUF_DEBUG LWIP_DBG_ON -#define API_LIB_DEBUG LWIP_DBG_ON -#define API_MSG_DEBUG LWIP_DBG_ON -#define TCPIP_DEBUG LWIP_DBG_ON -#define NETIF_DEBUG LWIP_DBG_ON -#define SOCKETS_DEBUG LWIP_DBG_ON -#define DNS_DEBUG LWIP_DBG_ON -#define AUTOIP_DEBUG LWIP_DBG_ON -#define DHCP_DEBUG LWIP_DBG_ON -#define IP_DEBUG LWIP_DBG_ON -#define IP_REASS_DEBUG LWIP_DBG_ON -#define ICMP_DEBUG LWIP_DBG_ON -#define IGMP_DEBUG LWIP_DBG_ON -#define UDP_DEBUG LWIP_DBG_ON -#define TCP_DEBUG LWIP_DBG_OFF -#define TCP_INPUT_DEBUG LWIP_DBG_OFF -#define TCP_OUTPUT_DEBUG LWIP_DBG_OFF -#define TCP_RTO_DEBUG LWIP_DBG_OFF -#define TCP_CWND_DEBUG LWIP_DBG_OFF -#define TCP_WND_DEBUG LWIP_DBG_OFF -#define TCP_FR_DEBUG LWIP_DBG_OFF -#define TCP_QLEN_DEBUG LWIP_DBG_OFF -#define TCP_RST_DEBUG LWIP_DBG_OFF -#define TIMERS_DEBUG LWIP_DBG_OFF -#define LWIP_DEBUG_TIMERNAMES LWIP_DBG_OFF -#endif - -#define LWIP_DBG_TYPES_ON (LWIP_DBG_ON|LWIP_DBG_TRACE|LWIP_DBG_STATE|LWIP_DBG_FRESH|LWIP_DBG_HALT) - - -/* ---------- Memory options ---------- */ -/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which - lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2 - byte alignment -> define MEM_ALIGNMENT to 2. */ -/* MSVC port: intel processors don't need 4-byte alignment, - but are faster that way! */ - //TODO documentation - //Zynq needs 32 for DMA to work (something about cache I guess...) -#define MEM_ALIGNMENT 32U - -#define MEM_USE_POOLS 1 -#define MEMP_USE_CUSTOM_POOLS MEM_USE_POOLS - -/* MEM_SIZE: the size of the heap memory. If the application will send -a lot of data that needs to be copied, this should be set high. */ -#define MEM_SIZE 102400 - -/* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application - sends a lot of data out of ROM (or other static memory), this - should be set high. */ -#define MEMP_NUM_PBUF 16 -/* MEMP_NUM_RAW_PCB: the number of UDP protocol control blocks. One - per active RAW "connection". */ -#define MEMP_NUM_RAW_PCB 3 -/* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One - per active UDP "connection". */ -#define MEMP_NUM_UDP_PCB 8 -/* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP - connections. */ -#define MEMP_NUM_TCP_PCB 5 -/* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP - connections. */ -#define MEMP_NUM_TCP_PCB_LISTEN 8 -/* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP - segments. */ -#define MEMP_NUM_TCP_SEG 16 -/* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active - timeouts. */ -#define MEMP_NUM_SYS_TIMEOUT 17 - -/* The following four are used only with the sequential API and can be - set to 0 if the application only will use the raw API. */ -/* MEMP_NUM_NETBUF: the number of struct netbufs. */ -#define MEMP_NUM_NETBUF 2 -/* MEMP_NUM_NETCONN: the number of struct netconns. */ -#define MEMP_NUM_NETCONN 12 -/* MEMP_NUM_TCPIP_MSG_*: the number of struct tcpip_msg, which is used - for sequential API communication and incoming packets. Used in - src/api/tcpip.c. */ -#define MEMP_NUM_TCPIP_MSG_API 16 -#define MEMP_NUM_TCPIP_MSG_INPKT 16 - -#define TCPIP_THREAD_STACKSIZE 10240 - - -/* ---------- Pbuf options ---------- */ -/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */ -#define PBUF_POOL_SIZE 120 - -/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */ -/* Needs to be large enough to fit eth MTU to be able to use DMA for xemacps rx*/ -#define PBUF_POOL_BUFSIZE 1600 - -/** SYS_LIGHTWEIGHT_PROT - * define SYS_LIGHTWEIGHT_PROT in lwipopts.h if you want inter-task protection - * for certain critical regions during buffer allocation, deallocation and memory - * allocation and deallocation. - */ -#define SYS_LIGHTWEIGHT_PROT (NO_SYS==0) - - -/* ---------- TCP options ---------- */ -#define LWIP_TCP 0 -#define TCP_TTL 255 - -#define LWIP_ALTCP (LWIP_TCP) -#ifdef LWIP_HAVE_MBEDTLS -#define LWIP_ALTCP_TLS (LWIP_TCP) -#define LWIP_ALTCP_TLS_MBEDTLS (LWIP_TCP) -#endif - - -/* Controls if TCP should queue segments that arrive out of - order. Define to 0 if your device is low on memory. */ -#define TCP_QUEUE_OOSEQ 1 - -/* TCP Maximum segment size. */ -#define TCP_MSS 1024 - -/* TCP sender buffer space (bytes). */ -#define TCP_SND_BUF 2048 - -/* TCP sender buffer space (pbufs). This must be at least = 2 * - TCP_SND_BUF/TCP_MSS for things to work. */ -#define TCP_SND_QUEUELEN (4 * TCP_SND_BUF/TCP_MSS) - -/* TCP writable space (bytes). This must be less than or equal - to TCP_SND_BUF. It is the amount of space which must be - available in the tcp snd_buf for select to return writable */ -#define TCP_SNDLOWAT (TCP_SND_BUF/2) - -/* TCP receive window. */ -#define TCP_WND (20 * 1024) - -/* Maximum number of retransmissions of data segments. */ -#define TCP_MAXRTX 12 - -/* Maximum number of retransmissions of SYN segments. */ -#define TCP_SYNMAXRTX 4 - - -#define TCPIP_MBOX_SIZE 5 - -/* ---------- ARP options ---------- */ -#define LWIP_ARP 1 -#define ARP_TABLE_SIZE 10 -#define ARP_QUEUEING 1 -#define ARP_QUEUE_LEN 10 - - -/* ---------- IP options ---------- */ -/* Define IP_FORWARD to 1 if you wish to have the ability to forward - IP packets across network interfaces. If you are going to run lwIP - on a device with only one network interface, define this to 0. */ -#define IP_FORWARD 1 - -/* IP reassembly and segmentation.These are orthogonal even - * if they both deal with IP fragments */ -#define IP_REASSEMBLY 1 -#define IP_REASS_MAX_PBUFS (10 * ((1500 + PBUF_POOL_BUFSIZE - 1) / PBUF_POOL_BUFSIZE)) -#define MEMP_NUM_REASSDATA IP_REASS_MAX_PBUFS -#define IP_FRAG 1 -#define IPV6_FRAG_COPYHEADER 1 - -/* ---------- ICMP options ---------- */ -#define ICMP_TTL 255 - - -/* ---------- DHCP options ---------- */ -/* Define LWIP_DHCP to 1 if you want DHCP configuration of - interfaces. */ -#define LWIP_DHCP 0 - -/* 1 if you want to do an ARP check on the offered address - (recommended). */ -#define DHCP_DOES_ARP_CHECK (LWIP_DHCP) - - -/* ---------- AUTOIP options ------- */ -#define LWIP_AUTOIP (LWIP_DHCP) -#define LWIP_DHCP_AUTOIP_COOP (LWIP_DHCP && LWIP_AUTOIP) - - -/* ---------- UDP options ---------- */ -#define LWIP_UDP 1 -#define LWIP_UDPLITE 0 -#define UDP_TTL 255 -#define DEFAULT_UDP_RECVMBOX_SIZE 4 - -/* ---------- RAW options ---------- */ -#define LWIP_RAW 0 -#define DEFAULT_TCP_RECVMBOX_SIZE 2 - -/* ---------- Statistics options ---------- */ - -#define LWIP_STATS 0 -#define LWIP_STATS_DISPLAY 0 - -#if LWIP_STATS -#define LINK_STATS 1 -#define IP_STATS 1 -#define ICMP_STATS 1 -#define IGMP_STATS 1 -#define IPFRAG_STATS 1 -#define UDP_STATS 1 -#define TCP_STATS 1 -#define MEM_STATS 1 -#define MEMP_STATS 1 -#define PBUF_STATS 1 -#define SYS_STATS 1 -#endif /* LWIP_STATS */ - -/* ---------- NETBIOS options ---------- */ -#define LWIP_NETBIOS_RESPOND_NAME_QUERY 0 - -/* ---------- PPP options ---------- */ - -#define PPP_SUPPORT 0 /* Set > 0 for PPP */ - -#if PPP_SUPPORT - -#define NUM_PPP 1 /* Max PPP sessions. */ - - -/* Select modules to enable. Ideally these would be set in the makefile but - * we're limited by the command line length so you need to modify the settings - * in this file. - */ -#define PPPOE_SUPPORT 1 -#define PPPOS_SUPPORT 1 - -#define PAP_SUPPORT 1 /* Set > 0 for PAP. */ -#define CHAP_SUPPORT 1 /* Set > 0 for CHAP. */ -#define MSCHAP_SUPPORT 0 /* Set > 0 for MSCHAP */ -#define CBCP_SUPPORT 0 /* Set > 0 for CBCP (NOT FUNCTIONAL!) */ -#define CCP_SUPPORT 0 /* Set > 0 for CCP */ -#define VJ_SUPPORT 0 /* Set > 0 for VJ header compression. */ -#define MD5_SUPPORT 1 /* Set > 0 for MD5 (see also CHAP) */ - -#endif /* PPP_SUPPORT */ - - -// Disable slip task -#define SLIP_USE_RX_THREAD 0 - - - -#endif /* LWIP_LWIPOPTS_H */ diff --git a/bsp_z7/lwip/xilinx_eth/include/lwippools.h b/bsp_z7/lwip/xilinx_eth/include/lwippools.h deleted file mode 100644 index 7b5650e..0000000 --- a/bsp_z7/lwip/xilinx_eth/include/lwippools.h +++ /dev/null @@ -1,5 +0,0 @@ -LWIP_MALLOC_MEMPOOL_START -LWIP_MALLOC_MEMPOOL(50, 256) -LWIP_MALLOC_MEMPOOL(50, 512) -LWIP_MALLOC_MEMPOOL(50, 1550) -LWIP_MALLOC_MEMPOOL_END \ No newline at end of file diff --git a/bsp_z7/lwip/xilinx_eth/include/netif/xadapter.h b/bsp_z7/lwip/xilinx_eth/include/netif/xadapter.h index 10dd106..552a64f 100644 --- a/bsp_z7/lwip/xilinx_eth/include/netif/xadapter.h +++ b/bsp_z7/lwip/xilinx_eth/include/netif/xadapter.h @@ -40,9 +40,6 @@ extern "C" { #if !NO_SYS #include "lwip/sys.h" -//TODO this is not portable: -#include "FreeRTOS.h" -#include "timers.h" #endif #include "lwip/netif.h" diff --git a/bsp_z7/lwip/xilinx_eth/include/netif/xpqueue.h b/bsp_z7/lwip/xilinx_eth/include/netif/xpqueue.h index ba5c917..9258449 100644 --- a/bsp_z7/lwip/xilinx_eth/include/netif/xpqueue.h +++ b/bsp_z7/lwip/xilinx_eth/include/netif/xpqueue.h @@ -36,7 +36,7 @@ extern "C" { #endif -#include "lwip/debug.h" +#include "debug.h" #define PQ_QUEUE_SIZE 4096 diff --git a/bsp_z7/lwip/xilinx_eth/include/onrre.h b/bsp_z7/lwip/xilinx_eth/include/onrre.h deleted file mode 100644 index a77254c..0000000 --- a/bsp_z7/lwip/xilinx_eth/include/onrre.h +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -#include \ No newline at end of file diff --git a/bsp_z7/lwip/xilinx_eth/include/xethernet.h b/bsp_z7/lwip/xilinx_eth/include/xethernet.h deleted file mode 100644 index 3175008..0000000 --- a/bsp_z7/lwip/xilinx_eth/include/xethernet.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void xethernet_init(); \ No newline at end of file diff --git a/bsp_z7/lwip/xilinx_eth/include/xlwipconfig.h b/bsp_z7/lwip/xilinx_eth/include/xlwipconfig.h index e7691b1..cc40f3a 100644 --- a/bsp_z7/lwip/xilinx_eth/include/xlwipconfig.h +++ b/bsp_z7/lwip/xilinx_eth/include/xlwipconfig.h @@ -33,31 +33,8 @@ #ifndef __XLWIPCONFIG_H_ #define __XLWIPCONFIG_H_ -#define XLWIP_CONFIG_INCLUDE_GEM -#define XLWIP_CONFIG_N_TX_DESC 64 -#define XLWIP_CONFIG_N_RX_DESC 64 +/* this is a generated file: do not modify */ -//#define CONFIG_LINKSPEED100 -#define CONFIG_LINKSPEED_AUTODETECT - -//TODO defines -/* -#cmakedefine XLWIP_CONFIG_INCLUDE_AXIETH_ON_ZYNQ @XLWIP_CONFIG_INCLUDE_AXIETH_ON_ZYNQ@ -#cmakedefine XLWIP_CONFIG_INCLUDE_EMACLITE_ON_ZYNQ @XLWIP_CONFIG_INCLUDE_EMACLITE_ON_ZYNQ@ -#cmakedefine XLWIP_CONFIG_INCLUDE_EMACLITE @XLWIP_CONFIG_INCLUDE_EMACLITE@ -#cmakedefine XLWIP_CONFIG_INCLUDE_AXI_ETHERNET @XLWIP_CONFIG_INCLUDE_AXI_ETHERNET@ -#cmakedefine XLWIP_CONFIG_INCLUDE_AXI_ETHERNET_DMA @XLWIP_CONFIG_INCLUDE_AXI_ETHERNET_DMA@ -#cmakedefine XLWIP_CONFIG_INCLUDE_AXI_ETHERNET_FIFO @XLWIP_CONFIG_INCLUDE_AXI_ETHERNET_FIFO@ -#cmakedefine XLWIP_CONFIG_AXI_ETHERNET_ENABLE_1588 @XLWIP_CONFIG_AXI_ETHERNET_ENABLE_1588@ -#cmakedefine XLWIP_CONFIG_INCLUDE_AXI_ETHERNET_MCDMA @XLWIP_CONFIG_INCLUDE_AXI_ETHERNET_MCDMA@ -#cmakedefine XLWIP_CONFIG_INCLUDE_GEM @XLWIP_CONFIG_INCLUDE_GEM@ -#cmakedefine XLWIP_CONFIG_N_TX_DESC @XLWIP_CONFIG_N_TX_DESC@ -#cmakedefine XLWIP_CONFIG_N_RX_DESC @XLWIP_CONFIG_N_RX_DESC@ -#cmakedefine XLWIP_CONFIG_N_TX_COALESCE @XLWIP_CONFIG_N_TX_COALESCE@ -#cmakedefine XLWIP_CONFIG_N_RX_COALESCE @XLWIP_CONFIG_N_RX_COALESCE@ -#cmakedefine XLWIP_CONFIG_EMAC_NUMBER @XLWIP_CONFIG_EMAC_NUMBER@ -#cmakedefine XLWIP_CONFIG_PCS_PMA_1000BASEX_CORE_PRESENT @XLWIP_CONFIG_PCS_PMA_1000BASEX_CORE_PRESENT@ -#cmakedefine XLWIP_CONFIG_PCS_PMA_SGMII_CORE_PRESENT @XLWIP_CONFIG_PCS_PMA_SGMII_CORE_PRESENT@ -*/ +#define XLWIP_CONFIG_INCLUDE_EMACLITE 1 #endif diff --git a/bsp_z7/lwip/xilinx_eth/netif/CMakeLists.txt b/bsp_z7/lwip/xilinx_eth/netif/CMakeLists.txt deleted file mode 100644 index 1821e0c..0000000 --- a/bsp_z7/lwip/xilinx_eth/netif/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -target_sources(lwip_xil PRIVATE - xadapter.c - xpqueue.c - xemacpsif_dma.c - xemacpsif_physpeed.c - xemacpsif_hw.c - xemacpsif.c - topology.c -) - -target_include_directories(lwip_xil PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) - diff --git a/bsp_z7/lwip/xilinx_eth/netif/topology.c b/bsp_z7/lwip/xilinx_eth/netif/topology.c deleted file mode 100644 index ad8393c..0000000 --- a/bsp_z7/lwip/xilinx_eth/netif/topology.c +++ /dev/null @@ -1,37 +0,0 @@ -#include "netif/xtopology.h" - -// struct xtopology_t { -// UINTPTR emac_baseaddr; -// enum xemac_types emac_type; -// #ifndef SDT -// UINTPTR intc_baseaddr; -// unsigned intc_emac_intr; /* valid only for xemac_type_xps_emaclite */ -// UINTPTR scugic_baseaddr; /* valid only for Zynq */ -// unsigned scugic_emac_intr; /* valid only for GEM */ -// #endif -// }; - - -int xtopology_n_emacs = 2; -struct xtopology_t xtopology[] = { - { - 0xE000B000, - xemac_type_emacps, -#ifndef SDT - 0, - 0, - 0xF8F00100, - 0x36 -#endif - }, - { - 0xE000C000, - xemac_type_emacps, -#ifndef SDT - 0, - 0, - 0xF8F00100, - 0x4D -#endif - } -}; \ No newline at end of file diff --git a/bsp_z7/lwip/xilinx_eth/netif/xemacpsif.c b/bsp_z7/lwip/xilinx_eth/netif/xemacpsif.c index ea0030b..e9abf70 100644 --- a/bsp_z7/lwip/xilinx_eth/netif/xemacpsif.c +++ b/bsp_z7/lwip/xilinx_eth/netif/xemacpsif.c @@ -279,14 +279,6 @@ s32_t xemacpsif_input(struct netif *netif) /* points to packet payload, which starts with an Ethernet header */ ethhdr = p->payload; - // xil_printf("\n %p %i\n",p->payload, p->len); - // for (int j = 0; j < 6; j++) { - // for (int i = 0; i < 8; i++) { - // xil_printf(" %02x", *((uint8_t *)(p->payload) + i + j * 8 ) ); - // } - // xil_printf("\n"); - // } - #if LINK_STATS lwip_stats.link.recv++; #endif /* LINK_STATS */ @@ -313,11 +305,6 @@ s32_t xemacpsif_input(struct netif *netif) break; default: - //TODO debug - // for (int i = 0; i < 14; i++) { - // xil_printf(" %02x", *((uint8_t *)(p->payload) + i ) ); - // } - // xil_printf("invalid eth type\n"); pbuf_free(p); p = NULL; break; diff --git a/bsp_z7/lwip/xilinx_eth/netif/xemacpsif_dma.c b/bsp_z7/lwip/xilinx_eth/netif/xemacpsif_dma.c index 357a001..6bde0d1 100644 --- a/bsp_z7/lwip/xilinx_eth/netif/xemacpsif_dma.c +++ b/bsp_z7/lwip/xilinx_eth/netif/xemacpsif_dma.c @@ -538,7 +538,6 @@ void emacps_recv_handler(void *arg) } for (k = 0, curbdptr=rxbdset; k < bd_processed; k++) { - // outbyte('r'); bdindex = XEMACPS_BD_TO_INDEX(rxring, curbdptr); p = (struct pbuf *)rx_pbufs_storage[index + bdindex]; @@ -553,8 +552,6 @@ void emacps_recv_handler(void *arg) #endif pbuf_realloc(p, rx_bytes); - // xil_printf("reading bd index %i bdindex %i p %p payload %p len %i\n", index, bdindex, p, p->payload, p->len); - /* Invalidate RX frame before queuing to handle * L1 cache prefetch conditions on any architecture. */ @@ -579,12 +576,10 @@ void emacps_recv_handler(void *arg) setup_rx_bds(xemacpsif, rxring); } #if !NO_SYS - // BaseType_t xHigherPriorityTaskWoken; - // xSemaphoreGiveFromISR(xemac->sem_rx_data_available.sem, &xHigherPriorityTaskWoken); - // portYIELD_FROM_ISR(xHigherPriorityTaskWoken); //TODO delay this? sys_sem_signal(&xemac->sem_rx_data_available); xInsideISR--; #endif + return; } @@ -777,8 +772,6 @@ XStatus init_dma(struct xemac_s *xemac) #endif XEmacPs_BdSetAddressRx(rxbd, (UINTPTR)p->payload); - xil_printf("setting bd index %i bdindex %i p %p payload %p\n", index, bdindex, p, p->payload); - rx_pbufs_storage[index + bdindex] = (UINTPTR)p; } XEmacPs_SetQueuePtr(&(xemacpsif->emacps), xemacpsif->emacps.RxBdRing.BaseBdAddr, 0, XEMACPS_RECV); @@ -808,18 +801,18 @@ XStatus init_dma(struct xemac_s *xemac) XEmacPs_Out32((xemacpsif->emacps.Config.BaseAddress + XEMACPS_TXQBASE_OFFSET), (UINTPTR)bdtxterminate); } -// #if !NO_SYS -// #ifdef SDT -// xPortInstallInterruptHandler(xemacpsif->emacps.Config.IntrId, -// ( Xil_InterruptHandler ) XEmacPs_IntrHandler, -// (void *)&xemacpsif->emacps); -// #else -// xPortInstallInterruptHandler(xtopologyp->scugic_emac_intr, -// ( Xil_InterruptHandler ) XEmacPs_IntrHandler, -// (void *)&xemacpsif->emacps); +#if !NO_SYS +#ifdef SDT + xPortInstallInterruptHandler(xemacpsif->emacps.Config.IntrId, + ( Xil_InterruptHandler ) XEmacPs_IntrHandler, + (void *)&xemacpsif->emacps); +#else + xPortInstallInterruptHandler(xtopologyp->scugic_emac_intr, + ( Xil_InterruptHandler ) XEmacPs_IntrHandler, + (void *)&xemacpsif->emacps); -// #endif -// #else +#endif +#else #ifndef SDT /* * Connect the device driver handler that will be called when an @@ -830,7 +823,7 @@ XStatus init_dma(struct xemac_s *xemac) (Xil_ExceptionHandler)XEmacPs_IntrHandler, (void *)&xemacpsif->emacps); #endif -// #endif +#endif /* * Enable the interrupt for emacps. */ diff --git a/bsp_z7/lwip/xilinx_eth/port/CMakeLists.txt b/bsp_z7/lwip/xilinx_eth/port/CMakeLists.txt deleted file mode 100644 index 93b6114..0000000 --- a/bsp_z7/lwip/xilinx_eth/port/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -target_sources(lwip_xil PRIVATE - sys_arch.c - sys_arch_raw.c -) - diff --git a/bsp_z7/lwip/xilinx_eth/xethernet.c b/bsp_z7/lwip/xilinx_eth/xethernet.c deleted file mode 100644 index 1cae547..0000000 --- a/bsp_z7/lwip/xilinx_eth/xethernet.c +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (C) 2017 - 2022 Xilinx, Inc. - * Copyright (C) 2022 - 2023 Advanced Micro Devices, Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO - * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -#include "lwip/inet.h" -#include "lwip/tcpip.h" -#include "netif/xadapter.h" - -#define PLATFORM_EMAC_BASEADDR 0xE000B000 - -#define THREAD_STACKSIZE 1024 - -#define DEFAULT_IP_ADDRESS "192.168.1.10" -#define DEFAULT_IP_MASK "255.255.255.0" -#define DEFAULT_GW_ADDRESS "192.168.1.1" - -struct netif server_netif; - -// u32_t sys_now(void) { return xTaskGetTickCount() * portTICK_PERIOD_MS; } - -static void print_ip(char *msg, ip_addr_t *ip) { - xil_printf(msg); - xil_printf("%d.%d.%d.%d\n\r", ip4_addr1(ip), ip4_addr2(ip), ip4_addr3(ip), - ip4_addr4(ip)); -} - -static void print_ip_settings(ip_addr_t *ip, ip_addr_t *mask, ip_addr_t *gw) { - print_ip("Board IP: ", ip); - print_ip("Netmask : ", mask); - print_ip("Gateway : ", gw); -} - -// static void assign_default_ip(ip_addr_t *ip, ip_addr_t *mask, ip_addr_t *gw) -// { -// int err; - -// xil_printf("Configuring default IP %s \r\n", DEFAULT_IP_ADDRESS); - -// err = inet_aton(DEFAULT_IP_ADDRESS, ip); -// if (!err) -// xil_printf("Invalid default IP address: %d\r\n", err); - -// err = inet_aton(DEFAULT_IP_MASK, mask); -// if (!err) -// xil_printf("Invalid default IP MASK: %d\r\n", err); - -// err = inet_aton(DEFAULT_GW_ADDRESS, gw); -// if (!err) -// xil_printf("Invalid default gateway address: %d\r\n", err); -// } - -void init_thread(void *_) { - - /* the mac address of the board. this should be unique per board */ - u8_t mac_ethernet_address[] = {0x00, 0x0a, 0x35, 0x00, 0x01, 0x02}; - - /* Add network interface to the netif_list, and set it as default */ - ip_addr_t ip, mask, gw; - int err = inet_aton(DEFAULT_IP_ADDRESS, &ip); - if (!err) - xil_printf("Invalid default IP address: %d\r\n", err); - - err = inet_aton(DEFAULT_IP_MASK, &mask); - if (!err) - xil_printf("Invalid default IP MASK: %d\r\n", err); - - err = inet_aton(DEFAULT_GW_ADDRESS, &gw); - if (!err) - xil_printf("Invalid default gateway address: %d\r\n", err); - if (!xemac_add(&server_netif, &ip, &mask, &gw, mac_ethernet_address, - PLATFORM_EMAC_BASEADDR)) { - xil_printf("Error adding N/W interface\r\n"); - return; - } - - netif_set_default(&server_netif); - - /* specify that the network if is up */ - netif_set_up(&server_netif); - - /* start packet receive thread - required for lwIP operation */ - sys_thread_new("xemacif_input_thread", (void (*)(void *))xemacif_input_thread, - &server_netif, THREAD_STACKSIZE, DEFAULT_THREAD_PRIO); - - print_ip_settings(&(server_netif.ip_addr), &(server_netif.netmask), - &(server_netif.gw)); - xil_printf("\r\n"); - - // Some allocations do not allow task deletion - // vTaskDelete(NULL); - vTaskSuspend(NULL); -} - -void xethernet_init() { - // pushed into thread so it only starts after threads are started - sys_thread_new("initxeth_thread", init_thread, 0, THREAD_STACKSIZE, - DEFAULT_THREAD_PRIO); -} \ No newline at end of file