From 7c0b7367d1a9792c9f61312de261b7a9abf6ad58 Mon Sep 17 00:00:00 2001 From: wlyu Date: Fri, 31 Dec 2021 14:37:57 +0800 Subject: [PATCH] optimize LWIP demo and OPCua demo --- .../plc/interoperability/opcua/ua_api.h | 25 ++ .../ethernet/enet_ethernetif_kinetis.c | 3 - .../third_party_driver/ethernet/fsl_enet.c | 4 - .../resources/ethernet/LwIP/arch/ethernetif.h | 86 ------- .../resources/ethernet/LwIP/arch/lwipopts.h | 21 +- .../resources/ethernet/LwIP/arch/sys_arch.c | 222 ++++++++++++++---- .../resources/ethernet/LwIP/arch/sys_arch.h | 42 ++-- .../ethernet/LwIP/include/lwip/arch.h | 2 +- 8 files changed, 250 insertions(+), 155 deletions(-) create mode 100755 APP_Framework/Framework/control/plc/interoperability/opcua/ua_api.h delete mode 100644 Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/ethernetif.h diff --git a/APP_Framework/Framework/control/plc/interoperability/opcua/ua_api.h b/APP_Framework/Framework/control/plc/interoperability/opcua/ua_api.h new file mode 100755 index 000000000..19790b2a6 --- /dev/null +++ b/APP_Framework/Framework/control/plc/interoperability/opcua/ua_api.h @@ -0,0 +1,25 @@ +/* +* Copyright (c) 2021 AIIT XUOS Lab +* XiUOS is licensed under Mulan PSL v2. +* You can use this software according to the terms and conditions of the Mulan PSL v2. +* You may obtain a copy of Mulan PSL v2 at: +* http://license.coscl.org.cn/MulanPSL2 +* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +* See the Mulan PSL v2 for more details. +*/ +#ifndef __UA_API_H__ +#define __UA_API_H__ + +#include "open62541.h" + +#define OPC_SERVER "opc.tcp://192.168.250.5:4840" +#define ua_print printf + +int ua_server_connect(void); +int ua_get_server_info(UA_Client *client); +void ua_read_time(UA_Client *client); +int16 ua_test(void); + +#endif diff --git a/Ubiquitous/XiUOS/board/ok1052-c/third_party_driver/ethernet/enet_ethernetif_kinetis.c b/Ubiquitous/XiUOS/board/ok1052-c/third_party_driver/ethernet/enet_ethernetif_kinetis.c index 19ebff49b..9dd9dc122 100755 --- a/Ubiquitous/XiUOS/board/ok1052-c/third_party_driver/ethernet/enet_ethernetif_kinetis.c +++ b/Ubiquitous/XiUOS/board/ok1052-c/third_party_driver/ethernet/enet_ethernetif_kinetis.c @@ -469,8 +469,6 @@ static err_t enet_send_frame(struct ethernetif *ethernetif, unsigned char *data, { #ifdef FSL_RTOS_XIUOS // KSemaphoreObtain(ethernetif->enetSemaphore, portMAX_DELAY); - lw_trace(); - #else xEventGroupWaitBits(ethernetif->enetTransmitAccessEvent, ethernetif->txFlag, pdTRUE, (BaseType_t) false, portMAX_DELAY); @@ -478,7 +476,6 @@ static err_t enet_send_frame(struct ethernetif *ethernetif, unsigned char *data, } } while (result == kStatus_ENET_TxFrameBusy); - lw_trace(); return ERR_OK; } diff --git a/Ubiquitous/XiUOS/board/ok1052-c/third_party_driver/ethernet/fsl_enet.c b/Ubiquitous/XiUOS/board/ok1052-c/third_party_driver/ethernet/fsl_enet.c index 809f9344b..1f6b8650c 100755 --- a/Ubiquitous/XiUOS/board/ok1052-c/third_party_driver/ethernet/fsl_enet.c +++ b/Ubiquitous/XiUOS/board/ok1052-c/third_party_driver/ethernet/fsl_enet.c @@ -1563,7 +1563,6 @@ status_t ENET_SendFrame(ENET_Type *base, enet_handle_t *handle, const uint8_t *d curBuffDescrip = handle->txBdCurrent[0]; if (curBuffDescrip->control & ENET_BUFFDESCRIPTOR_TX_READY_MASK) { - lw_trace(); return kStatus_ENET_TxFrameBusy; } #ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE @@ -1616,7 +1615,6 @@ status_t ENET_SendFrame(ENET_Type *base, enet_handle_t *handle, const uint8_t *d /* Active the transmit buffer descriptor. */ ENET_ActiveSend(base, 0); -// lw_trace(); return kStatus_Success; } else @@ -1624,8 +1622,6 @@ status_t ENET_SendFrame(ENET_Type *base, enet_handle_t *handle, const uint8_t *d /* One frame requires more than one transmit buffers. */ do { - lw_trace(); - #ifdef ENET_ENHANCEDBUFFERDESCRIPTOR_MODE /* For enable the timestamp. */ if (isPtpEventMessage) diff --git a/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/ethernetif.h b/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/ethernetif.h deleted file mode 100644 index 4dd0b2384..000000000 --- a/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/ethernetif.h +++ /dev/null @@ -1,86 +0,0 @@ -/** - ****************************************************************************** - * File Name : ethernetif.h - * Description : This file provides initialization code for LWIP - * middleWare. - ****************************************************************************** - * This notice applies to any and all portions of this file - * that are not between comment pairs USER CODE BEGIN and - * USER CODE END. Other portions of this file, whether - * inserted by the user or by software development tools - * are owned by their respective copyright owners. - * - * Copyright (c) 2018 STMicroelectronics International N.V. - * 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. Redistribution 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. Neither the name of STMicroelectronics nor the names of other - * contributors to this software may be used to endorse or promote products - * derived from this software without specific written permission. - * 4. This software, including modifications and/or derivative works of this - * software, must execute solely and exclusively on microcontroller or - * microprocessor devices manufactured by or for STMicroelectronics. - * 5. Redistribution and use of this software other than as permitted under - * this license is void and will automatically terminate your rights under - * this license. - * - * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY - * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT - * SHALL STMICROELECTRONICS OR CONTRIBUTORS 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. - * - ****************************************************************************** - */ - - -#ifndef __ETHERNETIF_H__ -#define __ETHERNETIF_H__ - -#include "lwip/err.h" -#include "lwip/netif.h" - -/* Within 'USER CODE' section, code will be kept by default at each generation */ -/* USER CODE BEGIN 0 */ -#define NETIF_MTU ( 1500 ) - -#define NETIF_IN_TASK_STACK_SIZE ( 1024 ) -#define NETIF_IN_TASK_PRIORITY ( 3 ) - -#define NETIF_OUT_TASK_STACK_SIZE ( 1024 ) -#define NETIF_OUT_TASK_PRIORITY ( 3 ) - -/* USER CODE END 0 */ - - -/* Exported functions ------------------------------------------------------- */ -err_t ethernetif_init(struct netif *netif); - -void ethernetif_input( void *argument ); -void ethernetif_output( void *argument ); -void ethernetif_update_config(struct netif *netif); -void ethernetif_notify_conn_changed(struct netif *netif); - -u32_t sys_jiffies(void); -u32_t sys_now(void); - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ -#endif - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/lwipopts.h b/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/lwipopts.h index c6169a97e..a0165e145 100644 --- a/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/lwipopts.h +++ b/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/lwipopts.h @@ -212,13 +212,13 @@ The STM32F4x7 allows computing and verifying the IP, UDP, TCP and ICMP checksums #define DEFAULT_TCP_RECVMBOX_SIZE 10 #define DEFAULT_ACCEPTMBOX_SIZE 10 -#define DEFAULT_THREAD_PRIO 25 +#define DEFAULT_THREAD_PRIO 20 #define DEFAULT_THREAD_STACKSIZE 1024 #define TCPIP_THREAD_NAME "tcp" -#define TCPIP_THREAD_STACKSIZE 4096 -#define TCPIP_MBOX_SIZE 8 -#define TCPIP_THREAD_PRIO 25 +#define TCPIP_THREAD_STACKSIZE 8192 +#define TCPIP_MBOX_SIZE 10 +#define TCPIP_THREAD_PRIO 15 //#define IPERF_SERVER_THREAD_NAME "iperf_server" //#define IPERF_SERVER_THREAD_STACKSIZE 1024 @@ -236,13 +236,24 @@ The STM32F4x7 allows computing and verifying the IP, UDP, TCP and ICMP checksums #define LWIP_IPV4 1 #define LWIP_RAW 1 +#define LWIP_DNS 1 + +#if LWIP_DNS +#define LWIP_RAND rand +#endif + +#ifndef nfds_t +typedef unsigned int nfds_t; +#endif #define FSL_FEATURE_PHYKSZ8081_USE_RMII50M_MODE #define MEMP_LIB_MALLOC 1 #define MEMP_MEM_MALLOC 1 -#define lw_print KPrintf +#define lw_print //KPrintf +#define lw_trace() //KPrintf("lw: [%s][%d] passed!\n", __func__, __LINE__) +#define lw_error() //KPrintf("lw: [%s][%d] failed!\n", __func__, __LINE__) #endif /* __LWIPOPTS_H__ */ diff --git a/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/sys_arch.c b/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/sys_arch.c index 00e96ac16..a8b923600 100644 --- a/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/sys_arch.c +++ b/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/sys_arch.c @@ -57,15 +57,16 @@ #include "lwip/init.h" #include "lwip/netif.h" #include "lwip/sio.h" -#include "ethernetif.h" - -#if !NO_SYS -#include "sys_arch.h" -#endif #include #include #include #include "lwip/dhcp.h" +#include "tcpip_priv.h" + +#if !NO_SYS +#include "sys_arch.h" +#endif + #include #include #include @@ -74,11 +75,21 @@ #include #include #include -#include + +#include "board.h" +#include "ethernet.h" +#include "enet_ethernetif.h" +#include + +/* MAC address configuration. */ +#define configMAC_ADDR { 0x02, 0x12, 0x13, 0x10, 0x15, 0x11} + +char lwip_ipaddr[] = {192, 168, 250, 253}; +char lwip_netmask[] = {255, 255, 255, 0}; +char lwip_gwaddr[] = {192, 168, 250, 252}; int errno; - x_ticks_t lwip_sys_now; struct sys_timeouts { @@ -87,8 +98,8 @@ struct sys_timeouts { struct timeoutlist { - struct sys_timeouts timeouts; - int32 pid; + struct sys_timeouts timeouts; + int32 pid; }; #define SYS_THREAD_MAX 4 @@ -114,40 +125,40 @@ sys_now(void) void sys_init(void) { - int i; - for(i = 0; i < SYS_THREAD_MAX; i++) - { - s_timeoutlist[i].pid = 0; - s_timeoutlist[i].timeouts.next = NULL; - } - s_nextthread = 0; + int i; + for(i = 0; i < SYS_THREAD_MAX; i++) + { + s_timeoutlist[i].pid = 0; + s_timeoutlist[i].timeouts.next = NULL; + } + s_nextthread = 0; } struct sys_timeouts *sys_arch_timeouts(void) { - int i; - int32 pid; - struct timeoutlist *tl; - pid = (int32)GetKTaskDescriptor()->id.id; - for(i = 0; i < s_nextthread; i++) - { - tl = &(s_timeoutlist[i]); - if(tl->pid == pid) - { - return &(tl->timeouts); - } - } - return NULL; + int i; + int32 pid; + struct timeoutlist *tl; + pid = (int32)GetKTaskDescriptor()->id.id; + for(i = 0; i < s_nextthread; i++) + { + tl = &(s_timeoutlist[i]); + if(tl->pid == pid) + { + return &(tl->timeouts); + } + } + return NULL; } sys_prot_t sys_arch_protect(void) { - return CriticalAreaLock(); + return CriticalAreaLock(); } void sys_arch_unprotect(sys_prot_t pval) { - CriticalAreaUnLock(pval); + CriticalAreaUnLock(pval); } #if !NO_SYS @@ -158,10 +169,10 @@ sys_sem_new(sys_sem_t *sem, u8_t count) *sem = KSemaphoreCreate((uint16)count); #if SYS_STATS - ++lwip_stats.sys.sem.used; - if (lwip_stats.sys.sem.max < lwip_stats.sys.sem.used) { - lwip_stats.sys.sem.max = lwip_stats.sys.sem.used; - } + ++lwip_stats.sys.sem.used; + if (lwip_stats.sys.sem.max < lwip_stats.sys.sem.used) { + lwip_stats.sys.sem.max = lwip_stats.sys.sem.used; + } #endif /* SYS_STATS */ if(*sem >= 0) @@ -287,11 +298,15 @@ err_t sys_mbox_new(sys_mbox_t *mbox, int size) ++lwip_stats.sys.mbox.used; if (lwip_stats.sys.mbox.max < lwip_stats.sys.mbox.used) { lwip_stats.sys.mbox.max = lwip_stats.sys.mbox.used; - } + } #endif /* SYS_STATS */ - if(*mbox < 0) + if(*mbox < 0) + { + lw_print("lw: [%s] alloc %d mbox %p failed\n", __func__, size, mbox); return ERR_MEM; + } + lw_print("lw: [%s] alloc %d mbox %p ok!\n", __func__, size, mbox); return ERR_OK; } @@ -370,9 +385,6 @@ struct netif gnetif; ip4_addr_t ipaddr; ip4_addr_t netmask; ip4_addr_t gw; -uint8_t IP_ADDRESS[4]; -uint8_t NETMASK_ADDRESS[4]; -uint8_t GATEWAY_ADDRESS[4]; void TcpIpInit(void) { @@ -397,7 +409,7 @@ void TcpIpInit(void) /* USER CODE END 0 */ /* Initilialize the LwIP stack without RTOS */ /* add the network interface (IPv4/IPv6) without RTOS */ - netif_add(&gnetif, &ipaddr, &netmask, &gw, NULL, ðernetif_init, &tcpip_input); + netif_add(&gnetif, &ipaddr, &netmask, &gw, NULL, ðernetif0_init, &tcpip_input); /* Registers the default network interface */ netif_set_default(&gnetif); @@ -440,3 +452,131 @@ void TcpIpInit(void) ((gnetif.ip_addr.addr)&0xff000000)>>24); } +// lwip input thread to get network packet +void lwip_input_thread(void *param) +{ + struct netif *net = param; + + while (1) + { + /* Poll the driver, get any outstanding frames */ + ethernetif_input(net); + sys_check_timeouts(); /* Handle all system timeouts for all core protocols */ +// DelayKTask(1); + } +} + +void lwip_config_input(struct netif *net) +{ + pthread_t th_id = 0; + + th_id = sys_thread_new("eth_input", lwip_input_thread, net, 4096, 15); + + if (th_id >= 0) { + lw_print("%s %d successfully!\n", __func__, th_id); + } else { + lw_print("%s failed!\n", __func__); + } +} + +static int lwip_init_flag = 0; + +void lwip_config_net(char *ip, char *mask, char *gw) +{ +#if defined(FSL_FEATURE_SOC_LPC_ENET_COUNT) && (FSL_FEATURE_SOC_LPC_ENET_COUNT > 0) + mem_range_t non_dma_memory[] = NON_DMA_MEMORY_ARRAY; +#endif /* FSL_FEATURE_SOC_LPC_ENET_COUNT */ + ip4_addr_t net_ipaddr, net_netmask, net_gw; + ethernetif_config_t cfg = { + .phyAddress = BOARD_ENET0_PHY_ADDRESS, + .clockName = kCLOCK_CoreSysClk, + .macAddress = configMAC_ADDR, +#if defined(FSL_FEATURE_SOC_LPC_ENET_COUNT) && (FSL_FEATURE_SOC_LPC_ENET_COUNT > 0) + .non_dma_memory = non_dma_memory, +#endif /* FSL_FEATURE_SOC_LPC_ENET_COUNT */ + }; + + if(lwip_init_flag) + { + lw_print("lw: [%s] already ...\n", __func__); + return; + } + lwip_init_flag = 1; + + lw_print("lw: [%s] start ...\n", __func__); + + IP4_ADDR(&net_ipaddr, ip[0], ip[1], ip[2], ip[3]); + IP4_ADDR(&net_netmask, mask[0], mask[1], mask[2], mask[3]); + IP4_ADDR(&net_gw, gw[0], gw[1], gw[2], gw[3]); + + lwip_init(); + + netif_add(&gnetif, &net_ipaddr, &net_netmask, &net_gw, &cfg, ethernetif0_init, + ethernet_input); + netif_set_default(&gnetif); + netif_set_up(&gnetif); + + lw_print("\r\n************************************************\r\n"); + lw_print(" Network Configuration\r\n"); + lw_print("************************************************\r\n"); + lw_print(" IPv4 Address : %u.%u.%u.%u\r\n", ((u8_t *)&net_ipaddr)[0], ((u8_t *)&net_ipaddr)[1], + ((u8_t *)&net_ipaddr)[2], ((u8_t *)&net_ipaddr)[3]); + lw_print(" IPv4 Subnet mask : %u.%u.%u.%u\r\n", ((u8_t *)&net_netmask)[0], ((u8_t *)&net_netmask)[1], + ((u8_t *)&net_netmask)[2], ((u8_t *)&net_netmask)[3]); + lw_print(" IPv4 Gateway : %u.%u.%u.%u\r\n", ((u8_t *)&net_gw)[0], ((u8_t *)&net_gw)[1], + ((u8_t *)&net_gw)[2], ((u8_t *)&net_gw)[3]); + lw_print("************************************************\r\n"); + + lwip_config_input(&gnetif); +} + +void lwip_config_tcp(char *ip, char *mask, char *gw) +{ +#if defined(FSL_FEATURE_SOC_LPC_ENET_COUNT) && (FSL_FEATURE_SOC_LPC_ENET_COUNT > 0) + mem_range_t non_dma_memory[] = NON_DMA_MEMORY_ARRAY; +#endif /* FSL_FEATURE_SOC_LPC_ENET_COUNT */ + ip4_addr_t net_ipaddr, net_netmask, net_gw; + ethernetif_config_t cfg = { + .phyAddress = BOARD_ENET0_PHY_ADDRESS, + .clockName = kCLOCK_CoreSysClk, + .macAddress = configMAC_ADDR, +#if defined(FSL_FEATURE_SOC_LPC_ENET_COUNT) && (FSL_FEATURE_SOC_LPC_ENET_COUNT > 0) + .non_dma_memory = non_dma_memory, +#endif /* FSL_FEATURE_SOC_LPC_ENET_COUNT */ + }; + + if(lwip_init_flag) + { + lw_print("lw: [%s] already ...\n", __func__); + return; + } + lwip_init_flag = 1; + + tcpip_init(NULL, NULL); + + lw_print("lw: [%s] start ...\n", __func__); + + IP4_ADDR(&net_ipaddr, ip[0], ip[1], ip[2], ip[3]); + IP4_ADDR(&net_netmask, mask[0], mask[1], mask[2], mask[3]); + IP4_ADDR(&net_gw, gw[0], gw[1], gw[2], gw[3]); + + netif_add(&gnetif, &net_ipaddr, &net_netmask, &net_gw, &cfg, ethernetif0_init, + tcpip_input); + + netif_set_default(&gnetif); + netif_set_up(&gnetif); + + lw_print("\r\n************************************************\r\n"); + lw_print(" Network Configuration\r\n"); + lw_print("************************************************\r\n"); + lw_print(" IPv4 Address : %u.%u.%u.%u\r\n", ((u8_t *)&net_ipaddr)[0], ((u8_t *)&net_ipaddr)[1], + ((u8_t *)&net_ipaddr)[2], ((u8_t *)&net_ipaddr)[3]); + lw_print(" IPv4 Subnet mask : %u.%u.%u.%u\r\n", ((u8_t *)&net_netmask)[0], ((u8_t *)&net_netmask)[1], + ((u8_t *)&net_netmask)[2], ((u8_t *)&net_netmask)[3]); + lw_print(" IPv4 Gateway : %u.%u.%u.%u\r\n", ((u8_t *)&net_gw)[0], ((u8_t *)&net_gw)[1], + ((u8_t *)&net_gw)[2], ((u8_t *)&net_gw)[3]); + lw_print("************************************************\r\n"); + + lwip_config_input(&gnetif); +} + diff --git a/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/sys_arch.h b/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/sys_arch.h index fc55cd632..fd007e691 100644 --- a/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/sys_arch.h +++ b/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/sys_arch.h @@ -1,8 +1,8 @@ /* * Copyright (c) 2017 Simon Goldschmidt - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, + * 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, @@ -49,8 +49,13 @@ * @date 2021-05-29 */ +#ifndef __SYS_ARCH__ +#define __SYS_ATCH__ + #include #include +#include + #include "tcpip.h" #include @@ -58,19 +63,19 @@ /* USER CODE BEGIN 0 */ // #define SET_AS_SERVER 1 /* define this terminal is udp server or not*/ -#define LOCAL_PORT_SERVER 5001 -#define TARGET_PORT_CLIENT LOCAL_PORT_SERVER +#define LOCAL_PORT_SERVER 4840 +#define TARGET_PORT_CLIENT LOCAL_PORT_SERVER /*Static IP ADDRESS: IP_ADDR0.IP_ADDR1.IP_ADDR2.IP_ADDR3 */ -#define IP_ADDR0_SERVER 192 -#define IP_ADDR1_SERVER 168 -#define IP_ADDR2_SERVER 0 -#define IP_ADDR3_SERVER 166 +#define IP_ADDR0_SERVER 192 +#define IP_ADDR1_SERVER 168 +#define IP_ADDR2_SERVER 250 +#define IP_ADDR3_SERVER 252 -#define IP_ADDR0_ClIENT 192 -#define IP_ADDR1_ClIENT 168 -#define IP_ADDR2_ClIENT 250 -#define IP_ADDR3_ClIENT 253 +#define IP_ADDR0_ClIENT 192 +#define IP_ADDR1_ClIENT 168 +#define IP_ADDR2_ClIENT 250 +#define IP_ADDR3_ClIENT 253 /*NETMASK*/ #define NETMASK_ADDR0 255 @@ -82,7 +87,7 @@ #define GW_ADDR0 192 #define GW_ADDR1 168 #define GW_ADDR2 250 -#define GW_ADDR3 252 +#define GW_ADDR3 5 /* USER CODE END 0 */ #define SYS_MBOX_NULL 0 @@ -98,5 +103,12 @@ typedef x_base sys_prot_t; #define MS_PER_SYSTICK_F407 1000/TICK_PER_SECOND -void TcpIpInit(void); +extern char lwip_ipaddr[]; +extern char lwip_netmask[]; +extern char lwip_gwaddr[]; +void TcpIpInit(void); +void lwip_config_net(char *ip, char *mask, char *gw); +void lwip_config_tcp(char *ip, char *mask, char *gw); + +#endif diff --git a/Ubiquitous/XiUOS/resources/ethernet/LwIP/include/lwip/arch.h b/Ubiquitous/XiUOS/resources/ethernet/LwIP/include/lwip/arch.h index af4fe1dc7..808bdff51 100644 --- a/Ubiquitous/XiUOS/resources/ethernet/LwIP/include/lwip/arch.h +++ b/Ubiquitous/XiUOS/resources/ethernet/LwIP/include/lwip/arch.h @@ -90,7 +90,7 @@ * systems, this should be defined to something less resource-consuming. */ #ifndef LWIP_PLATFORM_ASSERT -#define LWIP_PLATFORM_ASSERT(x) do {printf("Assertion \"%s\" failed at line %d in %s\n", \ +#define LWIP_PLATFORM_ASSERT(x) do {KPrintf("Assertion \"%s\" failed at line %d in %s\n", \ x, __LINE__, __FILE__); fflush(NULL); abort();} while(0) #include #include