diff --git a/APP_Framework/Applications/connection_app/socket_demo/lwip_tcp_socket_demo.c b/APP_Framework/Applications/connection_app/socket_demo/lwip_tcp_socket_demo.c index 3eccb8dc0..95372addc 100755 --- a/APP_Framework/Applications/connection_app/socket_demo/lwip_tcp_socket_demo.c +++ b/APP_Framework/Applications/connection_app/socket_demo/lwip_tcp_socket_demo.c @@ -126,7 +126,6 @@ void tcp_socket_recv_run(int argc, char *argv[]) sscanf(argv[1], "%d.%d.%d.%d", &tcp_socket_ip[0], &tcp_socket_ip[1], &tcp_socket_ip[2], &tcp_socket_ip[3]); } - ETH_BSP_Config(); lwip_config_tcp(lwip_ipaddr, lwip_netmask, lwip_gwaddr); sys_thread_new("tcp_recv_demo", tcp_recv_demo, NULL, LWIP_TASK_STACK_SIZE, LWIP_DEMO_TASK_PRIO); } @@ -190,7 +189,6 @@ void tcp_socket_send_run(int argc, char *argv[]) sscanf(argv[1], "%d.%d.%d.%d", &tcp_socket_ip[0], &tcp_socket_ip[1], &tcp_socket_ip[2], &tcp_socket_ip[3]); } - ETH_BSP_Config(); lwip_config_tcp(lwip_ipaddr, lwip_netmask, tcp_socket_ip); sys_thread_new("tcp socket", tcp_send_demo, NULL, LWIP_TASK_STACK_SIZE, LWIP_DEMO_TASK_PRIO); } diff --git a/APP_Framework/Applications/connection_app/socket_demo/lwip_udp_socket_demo.c b/APP_Framework/Applications/connection_app/socket_demo/lwip_udp_socket_demo.c index 36d49cf4f..3b37aa5a6 100755 --- a/APP_Framework/Applications/connection_app/socket_demo/lwip_udp_socket_demo.c +++ b/APP_Framework/Applications/connection_app/socket_demo/lwip_udp_socket_demo.c @@ -121,7 +121,6 @@ void udp_socket_recv_run(int argc, char *argv[]) sscanf(argv[1], "%d.%d.%d.%d", &udp_socket_ip[0], &udp_socket_ip[1], &udp_socket_ip[2], &udp_socket_ip[3]); } - ETH_BSP_Config(); lwip_config_tcp(lwip_ipaddr, lwip_netmask, lwip_gwaddr); sys_thread_new("udp_recv_demo", udp_recv_demo, NULL, LWIP_TASK_STACK_SIZE, LWIP_DEMO_TASK_PRIO); } @@ -190,7 +189,6 @@ void udp_socket_send_run(int argc, char *argv[]) sscanf(argv[1], "%d.%d.%d.%d", &udp_socket_ip[0], &udp_socket_ip[1], &udp_socket_ip[2], &udp_socket_ip[3]); } - ETH_BSP_Config(); lwip_config_tcp(lwip_ipaddr, lwip_netmask, lwip_gwaddr); sys_thread_new("udp_send_demo", udp_send_demo, NULL, LWIP_TASK_STACK_SIZE, LWIP_DEMO_TASK_PRIO); } diff --git a/APP_Framework/Applications/control_app/Makefile b/APP_Framework/Applications/control_app/Makefile index e321906d1..568e8b92f 100755 --- a/APP_Framework/Applications/control_app/Makefile +++ b/APP_Framework/Applications/control_app/Makefile @@ -3,7 +3,7 @@ SRC_DIR := ifeq ($(CONFIG_RESOURCES_LWIP),y) ifeq ($(CONFIG_USING_CONTROL_PLC_OPCUA), y) - SRC_DIR += opcua_demo + SRC_DIR += opcua_demo plc_demo endif endif diff --git a/APP_Framework/Applications/control_app/opcua_demo/opcua_demo.c b/APP_Framework/Applications/control_app/opcua_demo/opcua_demo.c index f9c2741b5..9890b96cc 100755 --- a/APP_Framework/Applications/control_app/opcua_demo/opcua_demo.c +++ b/APP_Framework/Applications/control_app/opcua_demo/opcua_demo.c @@ -30,9 +30,9 @@ ******************************************************************************/ #define TCP_LOCAL_PORT 4840 -#define UA_URL_SIZE 100 -#define UA_STACK_SIZE 4096 -#define UA_TASK_PRIO 25 +#define UA_URL_SIZE 100 +#define UA_STACK_SIZE 4096 +#define UA_TASK_PRIO 15 /******************************************************************************* * Prototypes @@ -67,33 +67,28 @@ static void test_ua_connect(void *arg) UA_ClientConfig *config = UA_Client_getConfig(client); UA_ClientConfig_setDefault(config); - snprintf(ua_uri, UA_URL_SIZE, "opc.tcp://%d.%d.%d.%d:4840", + snprintf(ua_uri, sizeof(ua_uri), "opc.tcp://%d.%d.%d.%d:4840", test_ua_ip[0], test_ua_ip[1], test_ua_ip[2], test_ua_ip[3]); - retval = UA_Client_connect(client, ua_uri); + ua_pr_info("ua uri: %d %s\n", strlen(ua_uri), ua_uri); + + retval = UA_Client_connect(client,ua_uri); if (retval != UA_STATUSCODE_GOOD) { - ua_print("ua: [%s] ret %x\n", __func__, retval); + ua_pr_info("ua: [%s] connected failed %x\n", __func__, retval); + UA_Client_delete(client); + return; } - ua_print("ua: [%s] start Ua Test!\n", __func__); + ua_pr_info("ua: [%s] connected ok!\n", __func__); UA_Client_disconnect(client); UA_Client_delete(client); } -void test_ua_connect_thr(void *arg) +void test_sh_ua_connect(void *arg) { - ETH_BSP_Config(); lwip_config_tcp(lwip_ipaddr, lwip_netmask, test_ua_ip); - test_ua_connect(NULL); -} - -void test_sh_ua_connect(void) -{ - int result = 0; - pthread_t th_id; - pthread_attr_t attr; - sys_thread_new("ua test", test_ua_connect_thr, NULL, UA_STACK_SIZE, UA_TASK_PRIO); + sys_thread_new("ua test", test_ua_connect, NULL, UA_STACK_SIZE, UA_TASK_PRIO); } SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(0), @@ -148,7 +143,6 @@ void *test_sh_ua_brower_objects(int argc, char *argv[]) } } - ETH_BSP_Config(); lwip_config_tcp(lwip_ipaddr, lwip_netmask, test_ua_ip); sys_thread_new("ua object", test_ua_browser_objects, NULL, UA_STACK_SIZE, UA_TASK_PRIO); return NULL; @@ -202,9 +196,8 @@ void *test_sh_ua_get_info(int argc, char *argv[]) } } - ETH_BSP_Config(); lwip_config_tcp(lwip_ipaddr, lwip_netmask, test_ua_ip); - sys_thread_new("ua object", test_ua_browser_objects, NULL, UA_STACK_SIZE, UA_TASK_PRIO); + sys_thread_new("ua info", test_ua_get_info, NULL, UA_STACK_SIZE, UA_TASK_PRIO); return NULL; } diff --git a/APP_Framework/Applications/control_app/plc_demo/Makefile b/APP_Framework/Applications/control_app/plc_demo/Makefile new file mode 100755 index 000000000..36aa97af0 --- /dev/null +++ b/APP_Framework/Applications/control_app/plc_demo/Makefile @@ -0,0 +1,3 @@ +SRC_FILES := plc_demo.c + +include $(KERNEL_ROOT)/compiler.mk diff --git a/APP_Framework/Applications/control_app/plc_demo/plc_demo.c b/APP_Framework/Applications/control_app/plc_demo/plc_demo.c new file mode 100755 index 000000000..3f0b241b8 --- /dev/null +++ b/APP_Framework/Applications/control_app/plc_demo/plc_demo.c @@ -0,0 +1,111 @@ +/* + * 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. + */ + +/** + * @file ua_demo.c + * @brief Demo for OpcUa function + * @version 1.0 + * @author AIIT XUOS Lab + * @date 2021.11.11 + */ + +#include "open62541.h" +#include "plc.h" +#include "ua_api.h" +#include "sys_arch.h" +#include "plc_bus.h" +#include "plc_dev.h" + +/******************************************************************************* + * Definitions + ******************************************************************************/ + +#define PLC_BUS_NAME "plc bus" +#define PLC_DRV_NAME "plc driver" +#define PLC_BUF_LEN 1000 + +#define PLC_STACK_SIZE 4096 +#define PLC_TASK_PRIO 15 + +#define plc_print KPrintf + +/******************************************************************************* + * Prototypes + ******************************************************************************/ + +/******************************************************************************* + * Variables + ******************************************************************************/ + +struct PlcBus plc_demo_bus; +struct PlcDriver plc_demo_drv; +struct PlcDevice plc_demo_dev; + +char plc_demo_ip[] = {192, 168, 250, 5}; + +/******************************************************************************* + * Code + ******************************************************************************/ + + +void PlcTestInit(void) +{ + lwip_config_tcp(lwip_ipaddr, lwip_netmask, plc_demo_ip); + + PlcBusInit(&plc_demo_bus, PLC_BUS_NAME); + PlcDriverInit(&plc_demo_drv, PLC_DRV_NAME); + + // register plc device + plc_demo_dev.state = DEV_INIT; + PlcDevRegister(&plc_demo_dev, NULL, "plc test device"); +} + +void PlcTestRead(void *arg) +{ + int ret = 0; + struct PlcOps *ops = NULL; + char buf[PLC_BUF_LEN]; + + plc_demo_dev.priv_data = (ua_dev_t *)malloc(sizeof(ua_dev_t)); + ua_dev_t *ua_ptr = plc_demo_dev.priv_data; + memset(ua_ptr, 0, sizeof(ua_dev_t)); + strcpy(ua_ptr->ua_remote_ip, OPC_SERVER); + + PlcTestInit(); + plc_demo_dev.net = PLC_IND_ENET_OPCUA; + ops = plc_demo_dev.ops; + ret = ops->open(&plc_demo_dev); + if(EOK != ret) + { + plc_print("plc: [%s] open failed %#x\n", __func__, ret); + free(plc_demo_dev.priv_data); + return; + } + ret = ops->read(&plc_demo_dev, buf, PLC_BUF_LEN); + if(EOK != ret) + { + plc_print("plc: [%s] read failed\n", __func__); + free(plc_demo_dev.priv_data); + return; + } + free(plc_demo_dev.priv_data); + ops->close(&plc_demo_dev); +} + +void PlcTestTask(int argc, char *argv[]) +{ + sys_thread_new("plc read", PlcTestRead, NULL, PLC_STACK_SIZE, PLC_TASK_PRIO); +} + +SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(3), + plc, PlcTestTask, test PLC); + diff --git a/APP_Framework/Framework/control/plc/interoperability/opcua/ua_api.c b/APP_Framework/Framework/control/plc/interoperability/opcua/ua_api.c index c4950862f..f14a69934 100755 --- a/APP_Framework/Framework/control/plc/interoperability/opcua/ua_api.c +++ b/APP_Framework/Framework/control/plc/interoperability/opcua/ua_api.c @@ -15,25 +15,29 @@ #include "ua_api.h" -#define UA_DEV_IP_LEN 128 -#define UA_NODE_LEN 50 - -typedef struct _ua_dev_t -{ - char ua_remote_ip[UA_DEV_IP_LEN]; - char ua_node[UA_NODE_LEN]; - UA_Client *client; -}ua_dev_t; - - int ua_open(void *dev) { ua_dev_t *pdev = (ua_dev_t *)dev; pdev->client = UA_Client_new(); + + ua_pr_info("ua: [%s] start ...\n", __func__); + + if (pdev->client == NULL) + { + ua_print("ua: [%s] tcp client null\n", __func__); + return EEMPTY; + } + + UA_ClientConfig *config = UA_Client_getConfig(pdev->client); + UA_ClientConfig_setDefault(config); + + ua_pr_info("ua: [%s] %d %s\n", __func__, strlen(pdev->ua_remote_ip), pdev->ua_remote_ip); + UA_StatusCode retval = UA_Client_connect(pdev->client, pdev->ua_remote_ip); if(retval != UA_STATUSCODE_GOOD) { - UA_Client_delete(pdev->client); +// UA_Client_delete(pdev->client); + ua_pr_info("ua: [%s] deleted ret %x!\n", __func__, retval); return (int)retval; } return EOK; diff --git a/APP_Framework/Framework/control/plc/interoperability/opcua/ua_api.h b/APP_Framework/Framework/control/plc/interoperability/opcua/ua_api.h index 38135fef1..f3d1103ee 100755 --- a/APP_Framework/Framework/control/plc/interoperability/opcua/ua_api.h +++ b/APP_Framework/Framework/control/plc/interoperability/opcua/ua_api.h @@ -14,10 +14,20 @@ #include "open62541.h" +#define UA_DEV_IP_LEN 128 +#define UA_NODE_LEN 50 + +typedef struct _ua_dev_t +{ + char ua_remote_ip[UA_DEV_IP_LEN]; + char ua_node[UA_NODE_LEN]; + UA_Client *client; +}ua_dev_t; + #define OPC_SERVER "opc.tcp://192.168.250.5:4840" -#define ua_print //printf -#define ua_trace() //printf("ua: [%s] line %d checked!\n", __func__, __LINE__) +#define ua_print //KPrintf +#define ua_trace() //KPrintf("ua: [%s] line %d checked!\n", __func__, __LINE__) #define ua_pr_info KPrintf #define ua_debug diff --git a/APP_Framework/Framework/control/plc/interoperability/opcua/ua_client.c b/APP_Framework/Framework/control/plc/interoperability/opcua/ua_client.c index eb8e439ea..bda66dd07 100755 --- a/APP_Framework/Framework/control/plc/interoperability/opcua/ua_client.c +++ b/APP_Framework/Framework/control/plc/interoperability/opcua/ua_client.c @@ -149,19 +149,19 @@ void ua_read_attr(UA_Client *client) { /* Read attribute */ UA_Int32 value = 0; - ua_print("\nReading the value of node (1, \"the.answer\"):\n"); + ua_pr_info("\nReading the value of node (1, \"the.answer\"):\n"); UA_Variant *val = UA_Variant_new(); UA_StatusCode retval = UA_Client_readValueAttribute(client, UA_NODEID_STRING(1, "the.answer"), val); if(retval == UA_STATUSCODE_GOOD && UA_Variant_isScalar(val) && val->type == &UA_TYPES[UA_TYPES_INT32]) { value = *(UA_Int32*)val->data; - ua_print("the value is: %i\n", value); + ua_pr_info("the value is: %i\n", value); } UA_Variant_delete(val); /* Write node attribute */ value++; - ua_print("\nWriting a value of node (1, \"the.answer\"):\n"); + ua_pr_info("\nWriting a value of node (1, \"the.answer\"):\n"); UA_WriteRequest wReq; UA_WriteRequest_init(&wReq); wReq.nodesToWrite = UA_WriteValue_new(); @@ -174,7 +174,7 @@ void ua_read_attr(UA_Client *client) wReq.nodesToWrite[0].value.value.data = &value; UA_WriteResponse wResp = UA_Client_Service_write(client, wReq); if(wResp.responseHeader.serviceResult == UA_STATUSCODE_GOOD) - ua_print("the new value is: %i\n", value); + ua_pr_info("the new value is: %i\n", value); UA_WriteRequest_clear(&wReq); UA_WriteResponse_clear(&wResp); @@ -297,7 +297,7 @@ int ua_get_server_info(UA_Client *client) #ifdef UA_ENABLE_SUBSCRIPTIONS /* Take another look at the.answer */ - UA_Client_run_iterate(client, 100); + UA_Client_run_iterate(client, 10000); /* Delete the subscription */ if(UA_Client_Subscriptions_deleteSingle(client, subId) == UA_STATUSCODE_GOOD) ua_print("Subscription removed\n"); diff --git a/APP_Framework/Framework/control/plc/shared/plc.c b/APP_Framework/Framework/control/plc/shared/plc.c index e03d5a24b..e1af3da34 100755 --- a/APP_Framework/Framework/control/plc/shared/plc.c +++ b/APP_Framework/Framework/control/plc/shared/plc.c @@ -25,13 +25,6 @@ #include "plc_bus.h" #include "plc_dev.h" -#define PLC_BUS_NAME "plc bus" -#define PLC_DRV_NAME "plc driver" - -struct PlcDevice plc_device; -struct PlcBus plc_bus; -struct PlcDriver plc_drv; - static DoubleLinklistType plcdev_list; @@ -52,7 +45,7 @@ static int PlcDeviceOpen(void *dev) if(plc_dev->net == PLC_IND_ENET_OPCUA) { - return ua_open(dev); + return ua_open(plc_dev->priv_data); } return EOK; @@ -66,21 +59,21 @@ static void PlcDeviceClose(void *dev) if(plc_dev->net == PLC_IND_ENET_OPCUA) { - ua_close(dev); + ua_close(plc_dev->priv_data); } } static int PlcDeviceWrite(void *dev, const void *buf, size_t len) { NULL_PARAM_CHECK(dev); - NULL_PARAM_CHECK(write_param); + NULL_PARAM_CHECK(buf); int ret; struct PlcDevice *plc_dev = (struct PlcDevice *)dev; if(plc_dev->net == PLC_IND_ENET_OPCUA) { - ret = ua_write(dev, buf, len); + ret = ua_write(plc_dev->priv_data, buf, len); } return ret; @@ -89,20 +82,20 @@ static int PlcDeviceWrite(void *dev, const void *buf, size_t len) static int PlcDeviceRead(void *dev, void *buf, size_t len) { NULL_PARAM_CHECK(dev); - NULL_PARAM_CHECK(read_param); + NULL_PARAM_CHECK(buf); int ret; struct PlcDevice *plc_dev = (struct PlcDevice *)dev; if(plc_dev->net == PLC_IND_ENET_OPCUA) { - ret = ua_read(dev, buf, len); + ret = ua_read(plc_dev->priv_data, buf, len); } return ret; } -static const struct PlcOps plc_done = +static struct PlcOps plc_done = { .open = PlcDeviceOpen, .close = PlcDeviceClose, @@ -145,6 +138,7 @@ int PlcDevRegister(struct PlcDevice *plc_device, void *plc_param, const char *de if (DEV_INSTALL != plc_device->state) { strncpy(plc_device->name, device_name, strlen(device_name)); + plc_device->ops = &plc_done; DoubleLinkListInsertNodeAfter(&plcdev_list, &(plc_device->link)); plc_device->state = DEV_INSTALL; } else { @@ -189,17 +183,3 @@ int PlcDeviceAttachToBus(const char *dev_name, const char *bus_name) return EOK; } -void PlcTestInit(void) -{ - PlcBusInit(&plc_bus, PLC_BUS_NAME); - PlcDriverInit(&plc_drv, PLC_DRV_NAME); -} - -void test_plc_bus(int argc, char *argv[]) -{ - PlcTestInit(); -} - -SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(3), - plc, test_plc_bus, test PLC); - diff --git a/APP_Framework/Framework/control/plc/shared/plc.h b/APP_Framework/Framework/control/plc/shared/plc.h index 0c412b836..4cd097d1d 100755 --- a/APP_Framework/Framework/control/plc/shared/plc.h +++ b/APP_Framework/Framework/control/plc/shared/plc.h @@ -58,6 +58,11 @@ union PlcCfg { struct PlcDevice; +#undef open +#undef close +#undef read +#undef write + // operation API struct PlcOps { int (*open)(void *dev); // open and connect PLC device @@ -123,9 +128,13 @@ struct PlcDevice { struct PlcInfo info;/* Plc info, such as vendor name and model name */ union PlcCfg cfg; - struct PlcOps ops; /* filesystem-like APIs for data transferring */ + struct PlcOps *ops; /* filesystem-like APIs for data transferring */ struct PlcInterface interface; /* protocols used for transferring data from program to plc */ + + void *priv_data; DoubleLinklistType link;/* link list node */ }; +int PlcDevRegister(struct PlcDevice *plc_device, void *plc_param, const char *device_name); + #endif diff --git a/APP_Framework/Framework/control/plc/shared/plc_dev.c b/APP_Framework/Framework/control/plc/shared/plc_dev.c index 36dbb1969..1aea23da7 100755 --- a/APP_Framework/Framework/control/plc/shared/plc_dev.c +++ b/APP_Framework/Framework/control/plc/shared/plc_dev.c @@ -231,7 +231,6 @@ int PlcHardwareDevConfigureCs(struct HardwareDev *dev, uint8 plc_chip_select, ui msg->plc_chip_select = plc_chip_select; msg->plc_cs_release = plc_cs_release; - ret = plc_dev->plc_dev_done->dev_write(plc_dev, msg); x_free(msg); diff --git a/Ubiquitous/XiUOS/path_kernel.mk b/Ubiquitous/XiUOS/path_kernel.mk index 7f198a49a..f96e70009 100755 --- a/Ubiquitous/XiUOS/path_kernel.mk +++ b/Ubiquitous/XiUOS/path_kernel.mk @@ -259,6 +259,7 @@ endif ifeq ($(CONFIG_SUPPORT_CONTROL_FRAMEWORK), y) KERNELPATHS += -I$(KERNEL_ROOT)/../../APP_Framework/Framework/control # KERNELPATHS += -I$(KERNEL_ROOT)/../../APP_Framework/Framework/control/plc/interoperability/opcua # +KERNELPATHS += -I$(KERNEL_ROOT)/../../APP_Framework/Framework/control/plc/shared # KERNELPATHS += -I$(KERNEL_ROOT)/../../APP_Framework/lib/cJSON endif diff --git a/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/lwipopts.h b/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/lwipopts.h index 2b058129c..2dbb0bb6d 100644 --- a/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/lwipopts.h +++ b/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/lwipopts.h @@ -216,7 +216,7 @@ The STM32F4x7 allows computing and verifying the IP, UDP, TCP and ICMP checksums #define DEFAULT_THREAD_STACKSIZE 1024 #define TCPIP_THREAD_NAME "tcp" -#define TCPIP_THREAD_STACKSIZE 8192 +#define TCPIP_THREAD_STACKSIZE 4096 #define TCPIP_MBOX_SIZE 10 #define TCPIP_THREAD_PRIO 15 diff --git a/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/sys_arch.c b/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/sys_arch.c index 9075d6ea9..5f707d7e2 100644 --- a/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/sys_arch.c +++ b/Ubiquitous/XiUOS/resources/ethernet/LwIP/arch/sys_arch.c @@ -454,8 +454,7 @@ void lwip_config_input(struct netif *net) { sys_thread_t th_id = 0; - th_id = sys_thread_new("eth_input", lwip_input_thread, net, LWIP_TASK_STACK_SIZE, - LWIP_DEMO_TASK_PRIO); + th_id = sys_thread_new("eth_input", lwip_input_thread, net, LWIP_TASK_STACK_SIZE, 15); if (th_id >= 0) { lw_print("%s %d successfully!\n", __func__, th_id); @@ -479,6 +478,8 @@ void lwip_config_net(char *ip, char *mask, char *gw) #endif /* FSL_FEATURE_SOC_LPC_ENET_COUNT */ }; + ETH_BSP_Config(); + if(chk_lwip_bit(LWIP_INIT_FLAG)) { lw_print("lw: [%s] already ...\n", __func__); @@ -541,6 +542,8 @@ void lwip_config_tcp(char *ip, char *mask, char *gw) #endif /* FSL_FEATURE_SOC_LPC_ENET_COUNT */ }; + ETH_BSP_Config(); + if(chk_lwip_bit(LWIP_INIT_FLAG)) { lw_print("lw: [%s] already ...\n", __func__); diff --git a/Ubiquitous/XiUOS/resources/ethernet/LwIP/include/lwip/opt.h b/Ubiquitous/XiUOS/resources/ethernet/LwIP/include/lwip/opt.h index 0d427d229..a304c67c2 100644 --- a/Ubiquitous/XiUOS/resources/ethernet/LwIP/include/lwip/opt.h +++ b/Ubiquitous/XiUOS/resources/ethernet/LwIP/include/lwip/opt.h @@ -1763,7 +1763,7 @@ * sys_thread_new() when the thread is created. */ #if !defined TCPIP_THREAD_PRIO || defined __DOXYGEN__ -#define TCPIP_THREAD_PRIO 25 +#define TCPIP_THREAD_PRIO 15 #endif /** diff --git a/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_config_demo.c b/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_config_demo.c index b8fd680e5..026cf5f3c 100755 --- a/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_config_demo.c +++ b/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_config_demo.c @@ -60,7 +60,6 @@ static void *lwip_config_test(void *param) { - ETH_BSP_Config(); lwip_config_net(lwip_ipaddr, lwip_netmask, lwip_gwaddr); } diff --git a/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_dhcp_demo.c b/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_dhcp_demo.c index 956747d93..98960a067 100755 --- a/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_dhcp_demo.c +++ b/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_dhcp_demo.c @@ -138,8 +138,6 @@ void lwip_dhcp_test(void) static int flag = 0; char ip_addr[4] = {0, 0, 0, 0}; - ETH_BSP_Config(); - lwip_config_net(ip_addr, ip_addr, ip_addr); set_lwip_bit(LWIP_PRINT_FLAG); diff --git a/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_ping_demo.c b/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_ping_demo.c index f84053730..0850f06e1 100755 --- a/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_ping_demo.c +++ b/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_ping_demo.c @@ -94,7 +94,6 @@ void lwip_ping_thread(int argc, char *argv[]) lw_print("lw: [%s] argc %d\n", __func__, argc); IP4_ADDR(&ping_addr, lwip_gwaddr[0], lwip_gwaddr[1], lwip_gwaddr[2], lwip_gwaddr[3]); - ETH_BSP_Config(); lwip_config_net(lwip_ipaddr, lwip_netmask, lwip_gwaddr); ping_init(&ping_addr); } diff --git a/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_tcp_demo.c b/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_tcp_demo.c index afc1aa67a..baa6d4348 100755 --- a/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_tcp_demo.c +++ b/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_tcp_demo.c @@ -102,7 +102,6 @@ void lwip_tcp_send_run(int argc, char *argv[]) sscanf(argv[2], "%d.%d.%d.%d", &tcp_target[0], &tcp_target[1], &tcp_target[2], &tcp_target[3]); } - ETH_BSP_Config(); lwip_config_tcp(lwip_ipaddr, lwip_netmask, lwip_gwaddr); sys_thread_new("tcp send", lwip_tcp_send_thread, NULL, LWIP_TASK_STACK_SIZE, LWIP_DEMO_TASK_PRIO); } @@ -112,7 +111,6 @@ SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | void lwip_tcp_recv_run(void) { - ETH_BSP_Config(); lwip_config_net(lwip_ipaddr, lwip_netmask, lwip_gwaddr); tcpecho_raw_init(); } diff --git a/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_udp_demo.c b/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_udp_demo.c index 5eb214771..bfb4eb24d 100755 --- a/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_udp_demo.c +++ b/Ubiquitous/XiUOS/resources/ethernet/cmd_lwip/lwip_udp_demo.c @@ -114,7 +114,6 @@ void *lwip_udp_send_run(int argc, char *argv[]) } lw_print("lw: [%s] gw %d.%d.%d.%d\n", __func__, udp_target[0], udp_target[1], udp_target[2], udp_target[3]); - ETH_BSP_Config(); lwip_config_tcp(lwip_ipaddr, lwip_netmask, lwip_gwaddr); sys_thread_new("udp socket send", lwip_udp_send, NULL, LWIP_TASK_STACK_SIZE, LWIP_DEMO_TASK_PRIO); } @@ -177,8 +176,6 @@ void udpecho_raw_init(void) void lwip_udp_server(void) { - lw_print("lwip_udp_server\r\n"); - ETH_BSP_Config(); lwip_config_net(lwip_ipaddr, lwip_netmask, lwip_gwaddr); udpecho_raw_init(); }