forked from xuos/xiuos
Ubiquitous/RT_Thread/:add ethernet (lwip) function in xidatong,and test
This commit is contained in:
parent
2145cd73f6
commit
658feff666
|
@ -129,13 +129,16 @@ CONFIG_DFS_FD_MAX=16
|
||||||
CONFIG_RT_USING_DFS_DEVFS=y
|
CONFIG_RT_USING_DFS_DEVFS=y
|
||||||
# CONFIG_RT_USING_DFS_ROMFS is not set
|
# CONFIG_RT_USING_DFS_ROMFS is not set
|
||||||
# CONFIG_RT_USING_DFS_RAMFS is not set
|
# CONFIG_RT_USING_DFS_RAMFS is not set
|
||||||
|
# CONFIG_RT_USING_DFS_NFS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Device Drivers
|
# Device Drivers
|
||||||
#
|
#
|
||||||
CONFIG_RT_USING_DEVICE_IPC=y
|
CONFIG_RT_USING_DEVICE_IPC=y
|
||||||
CONFIG_RT_PIPE_BUFSZ=512
|
CONFIG_RT_PIPE_BUFSZ=512
|
||||||
# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set
|
CONFIG_RT_USING_SYSTEM_WORKQUEUE=y
|
||||||
|
CONFIG_RT_SYSTEM_WORKQUEUE_STACKSIZE=2048
|
||||||
|
CONFIG_RT_SYSTEM_WORKQUEUE_PRIORITY=23
|
||||||
CONFIG_RT_USING_SERIAL=y
|
CONFIG_RT_USING_SERIAL=y
|
||||||
CONFIG_RT_USING_SERIAL_V1=y
|
CONFIG_RT_USING_SERIAL_V1=y
|
||||||
# CONFIG_RT_USING_SERIAL_V2 is not set
|
# CONFIG_RT_USING_SERIAL_V2 is not set
|
||||||
|
@ -145,7 +148,7 @@ CONFIG_RT_SERIAL_RB_BUFSZ=64
|
||||||
# CONFIG_RT_USING_HWTIMER is not set
|
# CONFIG_RT_USING_HWTIMER is not set
|
||||||
CONFIG_RT_USING_CPUTIME=y
|
CONFIG_RT_USING_CPUTIME=y
|
||||||
# CONFIG_RT_USING_I2C is not set
|
# CONFIG_RT_USING_I2C is not set
|
||||||
# CONFIG_RT_USING_PHY is not set
|
CONFIG_RT_USING_PHY=y
|
||||||
CONFIG_RT_USING_PIN=y
|
CONFIG_RT_USING_PIN=y
|
||||||
# CONFIG_RT_USING_ADC is not set
|
# CONFIG_RT_USING_ADC is not set
|
||||||
# CONFIG_RT_USING_DAC is not set
|
# CONFIG_RT_USING_DAC is not set
|
||||||
|
@ -193,22 +196,92 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
|
||||||
#
|
#
|
||||||
# Socket abstraction layer
|
# Socket abstraction layer
|
||||||
#
|
#
|
||||||
# CONFIG_RT_USING_SAL is not set
|
CONFIG_RT_USING_SAL=y
|
||||||
|
CONFIG_SAL_INTERNET_CHECK=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# protocol stack implement
|
||||||
|
#
|
||||||
|
CONFIG_SAL_USING_LWIP=y
|
||||||
|
CONFIG_SAL_USING_POSIX=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# Network interface device
|
# Network interface device
|
||||||
#
|
#
|
||||||
# CONFIG_RT_USING_NETDEV is not set
|
CONFIG_RT_USING_NETDEV=y
|
||||||
|
CONFIG_NETDEV_USING_IFCONFIG=y
|
||||||
|
CONFIG_NETDEV_USING_PING=y
|
||||||
|
CONFIG_NETDEV_USING_NETSTAT=y
|
||||||
|
CONFIG_NETDEV_USING_AUTO_DEFAULT=y
|
||||||
|
# CONFIG_NETDEV_USING_IPV6 is not set
|
||||||
|
CONFIG_NETDEV_IPV4=1
|
||||||
|
CONFIG_NETDEV_IPV6=0
|
||||||
|
# CONFIG_NETDEV_IPV6_SCOPES is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# light weight TCP/IP stack
|
# light weight TCP/IP stack
|
||||||
#
|
#
|
||||||
# CONFIG_RT_USING_LWIP is not set
|
CONFIG_RT_USING_LWIP=y
|
||||||
|
# CONFIG_RT_USING_LWIP141 is not set
|
||||||
|
# CONFIG_RT_USING_LWIP202 is not set
|
||||||
|
# CONFIG_RT_USING_LWIP203 is not set
|
||||||
|
CONFIG_RT_USING_LWIP212=y
|
||||||
|
# CONFIG_RT_USING_LWIP_IPV6 is not set
|
||||||
|
CONFIG_RT_LWIP_MEM_ALIGNMENT=4
|
||||||
|
CONFIG_RT_LWIP_IGMP=y
|
||||||
|
CONFIG_RT_LWIP_ICMP=y
|
||||||
|
# CONFIG_RT_LWIP_SNMP is not set
|
||||||
|
CONFIG_RT_LWIP_DNS=y
|
||||||
|
CONFIG_RT_LWIP_DHCP=y
|
||||||
|
CONFIG_IP_SOF_BROADCAST=1
|
||||||
|
CONFIG_IP_SOF_BROADCAST_RECV=1
|
||||||
|
|
||||||
|
#
|
||||||
|
# Static IPv4 Address
|
||||||
|
#
|
||||||
|
CONFIG_RT_LWIP_IPADDR="192.168.1.30"
|
||||||
|
CONFIG_RT_LWIP_GWADDR="192.168.1.1"
|
||||||
|
CONFIG_RT_LWIP_MSKADDR="255.255.255.0"
|
||||||
|
CONFIG_RT_LWIP_UDP=y
|
||||||
|
CONFIG_RT_LWIP_TCP=y
|
||||||
|
CONFIG_RT_LWIP_RAW=y
|
||||||
|
# CONFIG_RT_LWIP_PPP is not set
|
||||||
|
CONFIG_RT_MEMP_NUM_NETCONN=8
|
||||||
|
CONFIG_RT_LWIP_PBUF_NUM=16
|
||||||
|
CONFIG_RT_LWIP_RAW_PCB_NUM=4
|
||||||
|
CONFIG_RT_LWIP_UDP_PCB_NUM=4
|
||||||
|
CONFIG_RT_LWIP_TCP_PCB_NUM=4
|
||||||
|
CONFIG_RT_LWIP_TCP_SEG_NUM=40
|
||||||
|
CONFIG_RT_LWIP_TCP_SND_BUF=8196
|
||||||
|
CONFIG_RT_LWIP_TCP_WND=8196
|
||||||
|
CONFIG_RT_LWIP_TCPTHREAD_PRIORITY=10
|
||||||
|
CONFIG_RT_LWIP_TCPTHREAD_MBOX_SIZE=8
|
||||||
|
CONFIG_RT_LWIP_TCPTHREAD_STACKSIZE=1024
|
||||||
|
# CONFIG_LWIP_NO_RX_THREAD is not set
|
||||||
|
# CONFIG_LWIP_NO_TX_THREAD is not set
|
||||||
|
CONFIG_RT_LWIP_ETHTHREAD_PRIORITY=12
|
||||||
|
CONFIG_RT_LWIP_ETHTHREAD_STACKSIZE=1024
|
||||||
|
CONFIG_RT_LWIP_ETHTHREAD_MBOX_SIZE=8
|
||||||
|
# CONFIG_RT_LWIP_REASSEMBLY_FRAG is not set
|
||||||
|
CONFIG_LWIP_NETIF_STATUS_CALLBACK=1
|
||||||
|
CONFIG_LWIP_NETIF_LINK_CALLBACK=1
|
||||||
|
CONFIG_SO_REUSE=1
|
||||||
|
CONFIG_LWIP_SO_RCVTIMEO=1
|
||||||
|
CONFIG_LWIP_SO_SNDTIMEO=1
|
||||||
|
CONFIG_LWIP_SO_RCVBUF=1
|
||||||
|
CONFIG_LWIP_SO_LINGER=0
|
||||||
|
# CONFIG_RT_LWIP_NETIF_LOOPBACK is not set
|
||||||
|
CONFIG_LWIP_NETIF_LOOPBACK=0
|
||||||
|
# CONFIG_RT_LWIP_STATS is not set
|
||||||
|
# CONFIG_RT_LWIP_USING_HW_CHECKSUM is not set
|
||||||
|
CONFIG_RT_LWIP_USING_PING=y
|
||||||
|
# CONFIG_RT_LWIP_DEBUG is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# AT commands
|
# AT commands
|
||||||
#
|
#
|
||||||
# CONFIG_RT_USING_AT is not set
|
# CONFIG_RT_USING_AT is not set
|
||||||
|
# CONFIG_LWIP_USING_DHCPD is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# VBUS(Virtual Software BUS)
|
# VBUS(Virtual Software BUS)
|
||||||
|
@ -256,6 +329,12 @@ CONFIG_BSP_USING_LPUART1=y
|
||||||
# Onboard Peripheral Drivers
|
# Onboard Peripheral Drivers
|
||||||
#
|
#
|
||||||
CONFIG_BSP_USING_SDRAM=y
|
CONFIG_BSP_USING_SDRAM=y
|
||||||
|
CONFIG_BSP_USING_ETH=y
|
||||||
|
CONFIG_BSP_USING_PHY=y
|
||||||
|
CONFIG_PHY_DEVICE_ADDRESS=0
|
||||||
|
CONFIG_PHY_USING_8720A=y
|
||||||
|
CONFIG_PHY_RESET_PORT=1
|
||||||
|
CONFIG_PHY_RESET_PIN=3
|
||||||
|
|
||||||
#
|
#
|
||||||
# MicroPython
|
# MicroPython
|
||||||
|
|
|
@ -759,6 +759,177 @@ void imxrt_semc_pins_init(void)
|
||||||
Pull Up / Down Config. Field: 100K Ohm Pull Down
|
Pull Up / Down Config. Field: 100K Ohm Pull Down
|
||||||
Hyst. Enable Field: Hysteresis Enabled */
|
Hyst. Enable Field: Hysteresis Enabled */
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef BSP_USING_ETH
|
||||||
|
void imxrt_enet_pins_init(void)
|
||||||
|
{
|
||||||
|
CLOCK_EnableClock(kCLOCK_Iomuxc); /* iomuxc clock (iomuxc_clk_enable): 0x03u */
|
||||||
|
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_AD_B0_03_GPIO1_IO03, /* GPIO_AD_B0_09 is configured as GPIO1_IO09 */
|
||||||
|
0U); /* Software Input On Field: Input Path is determined by functionality */
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_AD_B0_10_GPIO1_IO10, /* GPIO_AD_B0_10 is configured as GPIO1_IO10 */
|
||||||
|
0U); /* Software Input On Field: Input Path is determined by functionality */
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_AD_B0_09_GPIO1_IO09, /* GPIO_AD_B0_09 is configured as GPIO1_IO09 */
|
||||||
|
0U); /* Software Input On Field: Input Path is determined by functionality */
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_AD_B0_10_GPIO1_IO10, /* GPIO_AD_B0_10 is configured as GPIO1_IO10 */
|
||||||
|
0U);
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_B1_04_ENET_RX_DATA00, /* GPIO_B1_04 is configured as ENET_RX_DATA00 */
|
||||||
|
0U); /* Software Input On Field: Input Path is determined by functionality */
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_B1_05_ENET_RX_DATA01, /* GPIO_B1_05 is configured as ENET_RX_DATA01 */
|
||||||
|
0U); /* Software Input On Field: Input Path is determined by functionality */
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_B1_06_ENET_RX_EN, /* GPIO_B1_06 is configured as ENET_RX_EN */
|
||||||
|
0U); /* Software Input On Field: Input Path is determined by functionality */
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_B1_07_ENET_TX_DATA00, /* GPIO_B1_07 is configured as ENET_TX_DATA00 */
|
||||||
|
0U); /* Software Input On Field: Input Path is determined by functionality */
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_B1_08_ENET_TX_DATA01, /* GPIO_B1_08 is configured as ENET_TX_DATA01 */
|
||||||
|
0U); /* Software Input On Field: Input Path is determined by functionality */
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_B1_09_ENET_TX_EN, /* GPIO_B1_09 is configured as ENET_TX_EN */
|
||||||
|
0U); /* Software Input On Field: Input Path is determined by functionality */
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_B1_10_ENET_REF_CLK, /* GPIO_B1_10 is configured as ENET_REF_CLK */
|
||||||
|
1U); /* Software Input On Field: Force input path of pad GPIO_B1_10 */
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_B1_11_ENET_RX_ER, /* GPIO_B1_11 is configured as ENET_RX_ER */
|
||||||
|
0U); /* Software Input On Field: Input Path is determined by functionality */
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_EMC_40_ENET_MDC, /* GPIO_EMC_40 is configured as ENET_MDC */
|
||||||
|
0U); /* Software Input On Field: Input Path is determined by functionality */
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_EMC_41_ENET_MDIO, /* GPIO_EMC_41 is configured as ENET_MDIO */
|
||||||
|
0U); /* Software Input On Field: Input Path is determined by functionality */
|
||||||
|
IOMUXC_SetPinConfig(
|
||||||
|
IOMUXC_GPIO_AD_B0_09_GPIO1_IO09, /* GPIO_AD_B0_09 PAD functional properties : */
|
||||||
|
0xB0A9u); /* Slew Rate Field: Fast Slew Rate
|
||||||
|
Drive Strength Field: R0/5
|
||||||
|
Speed Field: medium(100MHz)
|
||||||
|
Open Drain Enable Field: Open Drain Disabled
|
||||||
|
Pull / Keep Enable Field: Pull/Keeper Enabled
|
||||||
|
Pull / Keep Select Field: Pull
|
||||||
|
Pull Up / Down Config. Field: 100K Ohm Pull Up
|
||||||
|
Hyst. Enable Field: Hysteresis Disabled */
|
||||||
|
IOMUXC_SetPinConfig(
|
||||||
|
IOMUXC_GPIO_AD_B0_10_GPIO1_IO10, /* GPIO_AD_B0_10 PAD functional properties : */
|
||||||
|
0xB0A9u); /* Slew Rate Field: Fast Slew Rate
|
||||||
|
Drive Strength Field: R0/5
|
||||||
|
Speed Field: medium(100MHz)
|
||||||
|
Open Drain Enable Field: Open Drain Disabled
|
||||||
|
Pull / Keep Enable Field: Pull/Keeper Enabled
|
||||||
|
Pull / Keep Select Field: Pull
|
||||||
|
Pull Up / Down Config. Field: 100K Ohm Pull Up
|
||||||
|
Hyst. Enable Field: Hysteresis Disabled */
|
||||||
|
IOMUXC_SetPinConfig(
|
||||||
|
IOMUXC_GPIO_B1_04_ENET_RX_DATA00, /* GPIO_B1_04 PAD functional properties : */
|
||||||
|
0xB0E9u); /* Slew Rate Field: Fast Slew Rate
|
||||||
|
Drive Strength Field: R0/5
|
||||||
|
Speed Field: max(200MHz)
|
||||||
|
Open Drain Enable Field: Open Drain Disabled
|
||||||
|
Pull / Keep Enable Field: Pull/Keeper Enabled
|
||||||
|
Pull / Keep Select Field: Pull
|
||||||
|
Pull Up / Down Config. Field: 100K Ohm Pull Up
|
||||||
|
Hyst. Enable Field: Hysteresis Disabled */
|
||||||
|
IOMUXC_SetPinConfig(
|
||||||
|
IOMUXC_GPIO_B1_05_ENET_RX_DATA01, /* GPIO_B1_05 PAD functional properties : */
|
||||||
|
0xB0E9u); /* Slew Rate Field: Fast Slew Rate
|
||||||
|
Drive Strength Field: R0/5
|
||||||
|
Speed Field: max(200MHz)
|
||||||
|
Open Drain Enable Field: Open Drain Disabled
|
||||||
|
Pull / Keep Enable Field: Pull/Keeper Enabled
|
||||||
|
Pull / Keep Select Field: Pull
|
||||||
|
Pull Up / Down Config. Field: 100K Ohm Pull Up
|
||||||
|
Hyst. Enable Field: Hysteresis Disabled */
|
||||||
|
IOMUXC_SetPinConfig(
|
||||||
|
IOMUXC_GPIO_B1_06_ENET_RX_EN, /* GPIO_B1_06 PAD functional properties : */
|
||||||
|
0xB0E9u); /* Slew Rate Field: Fast Slew Rate
|
||||||
|
Drive Strength Field: R0/5
|
||||||
|
Speed Field: max(200MHz)
|
||||||
|
Open Drain Enable Field: Open Drain Disabled
|
||||||
|
Pull / Keep Enable Field: Pull/Keeper Enabled
|
||||||
|
Pull / Keep Select Field: Pull
|
||||||
|
Pull Up / Down Config. Field: 100K Ohm Pull Up
|
||||||
|
Hyst. Enable Field: Hysteresis Disabled */
|
||||||
|
IOMUXC_SetPinConfig(
|
||||||
|
IOMUXC_GPIO_B1_07_ENET_TX_DATA00, /* GPIO_B1_07 PAD functional properties : */
|
||||||
|
0xB0E9u); /* Slew Rate Field: Fast Slew Rate
|
||||||
|
Drive Strength Field: R0/5
|
||||||
|
Speed Field: max(200MHz)
|
||||||
|
Open Drain Enable Field: Open Drain Disabled
|
||||||
|
Pull / Keep Enable Field: Pull/Keeper Enabled
|
||||||
|
Pull / Keep Select Field: Pull
|
||||||
|
Pull Up / Down Config. Field: 100K Ohm Pull Up
|
||||||
|
Hyst. Enable Field: Hysteresis Disabled */
|
||||||
|
IOMUXC_SetPinConfig(
|
||||||
|
IOMUXC_GPIO_B1_08_ENET_TX_DATA01, /* GPIO_B1_08 PAD functional properties : */
|
||||||
|
0xB0E9u); /* Slew Rate Field: Fast Slew Rate
|
||||||
|
Drive Strength Field: R0/5
|
||||||
|
Speed Field: max(200MHz)
|
||||||
|
Open Drain Enable Field: Open Drain Disabled
|
||||||
|
Pull / Keep Enable Field: Pull/Keeper Enabled
|
||||||
|
Pull / Keep Select Field: Pull
|
||||||
|
Pull Up / Down Config. Field: 100K Ohm Pull Up
|
||||||
|
Hyst. Enable Field: Hysteresis Disabled */
|
||||||
|
IOMUXC_SetPinConfig(
|
||||||
|
IOMUXC_GPIO_B1_09_ENET_TX_EN, /* GPIO_B1_09 PAD functional properties : */
|
||||||
|
0xB0E9u); /* Slew Rate Field: Fast Slew Rate
|
||||||
|
Drive Strength Field: R0/5
|
||||||
|
Speed Field: max(200MHz)
|
||||||
|
Open Drain Enable Field: Open Drain Disabled
|
||||||
|
Pull / Keep Enable Field: Pull/Keeper Enabled
|
||||||
|
Pull / Keep Select Field: Pull
|
||||||
|
Pull Up / Down Config. Field: 100K Ohm Pull Up
|
||||||
|
Hyst. Enable Field: Hysteresis Disabled */
|
||||||
|
IOMUXC_SetPinConfig(
|
||||||
|
IOMUXC_GPIO_B1_10_ENET_REF_CLK, /* GPIO_B1_10 PAD functional properties : */
|
||||||
|
0x31u); /* Slew Rate Field: Fast Slew Rate
|
||||||
|
Drive Strength Field: R0/6
|
||||||
|
Speed Field: low(50MHz)
|
||||||
|
Open Drain Enable Field: Open Drain Disabled
|
||||||
|
Pull / Keep Enable Field: Pull/Keeper Disabled
|
||||||
|
Pull / Keep Select Field: Keeper
|
||||||
|
Pull Up / Down Config. Field: 100K Ohm Pull Down
|
||||||
|
Hyst. Enable Field: Hysteresis Disabled */
|
||||||
|
IOMUXC_SetPinConfig(
|
||||||
|
IOMUXC_GPIO_B1_11_ENET_RX_ER, /* GPIO_B1_11 PAD functional properties : */
|
||||||
|
0xB0E9u); /* Slew Rate Field: Fast Slew Rate
|
||||||
|
Drive Strength Field: R0/5
|
||||||
|
Speed Field: max(200MHz)
|
||||||
|
Open Drain Enable Field: Open Drain Disabled
|
||||||
|
Pull / Keep Enable Field: Pull/Keeper Enabled
|
||||||
|
Pull / Keep Select Field: Pull
|
||||||
|
Pull Up / Down Config. Field: 100K Ohm Pull Up
|
||||||
|
Hyst. Enable Field: Hysteresis Disabled */
|
||||||
|
IOMUXC_SetPinConfig(
|
||||||
|
IOMUXC_GPIO_EMC_40_ENET_MDC, /* GPIO_EMC_40 PAD functional properties : */
|
||||||
|
0xB0E9u); /* Slew Rate Field: Fast Slew Rate
|
||||||
|
Drive Strength Field: R0/5
|
||||||
|
Speed Field: max(200MHz)
|
||||||
|
Open Drain Enable Field: Open Drain Disabled
|
||||||
|
Pull / Keep Enable Field: Pull/Keeper Enabled
|
||||||
|
Pull / Keep Select Field: Pull
|
||||||
|
Pull Up / Down Config. Field: 100K Ohm Pull Up
|
||||||
|
Hyst. Enable Field: Hysteresis Disabled */
|
||||||
|
IOMUXC_SetPinConfig(
|
||||||
|
IOMUXC_GPIO_EMC_41_ENET_MDIO, /* GPIO_EMC_41 PAD functional properties : */
|
||||||
|
0xB829u); /* Slew Rate Field: Fast Slew Rate
|
||||||
|
Drive Strength Field: R0/5
|
||||||
|
Speed Field: low(50MHz)
|
||||||
|
Open Drain Enable Field: Open Drain Enabled
|
||||||
|
Pull / Keep Enable Field: Pull/Keeper Enabled
|
||||||
|
Pull / Keep Select Field: Pull
|
||||||
|
Pull Up / Down Config. Field: 100K Ohm Pull Up
|
||||||
|
Hyst. Enable Field: Hysteresis Disabled */
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
void rt_hw_board_init()
|
void rt_hw_board_init()
|
||||||
{
|
{
|
||||||
|
@ -772,15 +943,18 @@ void rt_hw_board_init()
|
||||||
imxrt_uart_pins_init();
|
imxrt_uart_pins_init();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef BSP_USING_SDRAM
|
||||||
|
imxrt_semc_pins_init();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef BSP_USING_ETH
|
||||||
|
imxrt_enet_pins_init();
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef BSP_USING_DMA
|
#ifdef BSP_USING_DMA
|
||||||
imxrt_dma_init();
|
imxrt_dma_init();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef BSP_USING_SDRAM
|
|
||||||
imxrt_semc_pins_init();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef RT_USING_HEAP
|
#ifdef RT_USING_HEAP
|
||||||
rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END);
|
rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -0,0 +1,350 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2006-2020, RT-Thread Development Team
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*
|
||||||
|
* Change Logs:
|
||||||
|
* Date Author Notes
|
||||||
|
* 2020-10-14 wangqiang the first version
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <rtthread.h>
|
||||||
|
|
||||||
|
#ifdef PHY_USING_8720A
|
||||||
|
|
||||||
|
#include <rtdevice.h>
|
||||||
|
#include "drv_gpio.h"
|
||||||
|
#include "drv_mdio.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Definitions
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*! @brief Defines the PHY registers. */
|
||||||
|
#define PHY_BASICCONTROL_REG 0x00U /*!< The PHY basic control register. */
|
||||||
|
#define PHY_BASICSTATUS_REG 0x01U /*!< The PHY basic status register. */
|
||||||
|
#define PHY_ID1_REG 0x02U /*!< The PHY ID one register. */
|
||||||
|
#define PHY_ID2_REG 0x03U /*!< The PHY ID two register. */
|
||||||
|
#define PHY_AUTONEG_ADVERTISE_REG 0x04U /*!< The PHY auto-negotiate advertise register. */
|
||||||
|
#define PHY_CONTROL1_REG 0x1FU /*!< The PHY control one register. */
|
||||||
|
|
||||||
|
#define PHY_CONTROL_ID1 0x07U /*!< The PHY ID1*/
|
||||||
|
|
||||||
|
/*! @brief Defines the mask flag in basic control register. */
|
||||||
|
#define PHY_BCTL_DUPLEX_MASK 0x0100U /*!< The PHY duplex bit mask. */
|
||||||
|
#define PHY_BCTL_RESTART_AUTONEG_MASK 0x0200U /*!< The PHY restart auto negotiation mask. */
|
||||||
|
#define PHY_BCTL_AUTONEG_MASK 0x1000U /*!< The PHY auto negotiation bit mask. */
|
||||||
|
#define PHY_BCTL_SPEED_MASK 0x2000U /*!< The PHY speed bit mask. */
|
||||||
|
#define PHY_BCTL_LOOP_MASK 0x4000U /*!< The PHY loop bit mask. */
|
||||||
|
#define PHY_BCTL_RESET_MASK 0x8000U /*!< The PHY reset bit mask. */
|
||||||
|
#define PHY_BCTL_SPEED_100M_MASK 0x2000U /*!< The PHY 100M speed mask. */
|
||||||
|
|
||||||
|
/*!@brief Defines the mask flag of operation mode in control two register*/
|
||||||
|
#define PHY_CTL1_REMOTELOOP_MASK 0x0004U /*!< The PHY remote loopback mask. */
|
||||||
|
//#define PHY_CTL2_REFCLK_SELECT_MASK 0x0080U /*!< The PHY RMII reference clock select. */
|
||||||
|
#define PHY_CTL1_10HALFDUPLEX_MASK 0x0004U /*!< The PHY 10M half duplex mask. */
|
||||||
|
#define PHY_CTL1_100HALFDUPLEX_MASK 0x0008U /*!< The PHY 100M half duplex mask. */
|
||||||
|
#define PHY_CTL1_10FULLDUPLEX_MASK 0x0014U /*!< The PHY 10M full duplex mask. */
|
||||||
|
#define PHY_CTL1_100FULLDUPLEX_MASK 0x0018U /*!< The PHY 100M full duplex mask. */
|
||||||
|
#define PHY_CTL1_SPEEDUPLX_MASK 0x001CU /*!< The PHY speed and duplex mask. */
|
||||||
|
#define PHY_CTL1_ENERGYDETECT_MASK 0x10U /*!< The PHY signal present on rx differential pair. */
|
||||||
|
#define PHY_CTL1_LINKUP_MASK 0x100U /*!< The PHY link up. */
|
||||||
|
#define PHY_LINK_READY_MASK (PHY_CTL1_ENERGYDETECT_MASK | PHY_CTL1_LINKUP_MASK)
|
||||||
|
|
||||||
|
/*! @brief Defines the mask flag in basic status register. */
|
||||||
|
#define PHY_BSTATUS_LINKSTATUS_MASK 0x0004U /*!< The PHY link status mask. */
|
||||||
|
#define PHY_BSTATUS_AUTONEGABLE_MASK 0x0008U /*!< The PHY auto-negotiation ability mask. */
|
||||||
|
#define PHY_BSTATUS_AUTONEGCOMP_MASK 0x0020U /*!< The PHY auto-negotiation complete mask. */
|
||||||
|
|
||||||
|
/*! @brief Defines the mask flag in PHY auto-negotiation advertise register. */
|
||||||
|
#define PHY_100BaseT4_ABILITY_MASK 0x200U /*!< The PHY have the T4 ability. */
|
||||||
|
#define PHY_100BASETX_FULLDUPLEX_MASK 0x100U /*!< The PHY has the 100M full duplex ability.*/
|
||||||
|
#define PHY_100BASETX_HALFDUPLEX_MASK 0x080U /*!< The PHY has the 100M full duplex ability.*/
|
||||||
|
#define PHY_10BASETX_FULLDUPLEX_MASK 0x040U /*!< The PHY has the 10M full duplex ability.*/
|
||||||
|
#define PHY_10BASETX_HALFDUPLEX_MASK 0x020U /*!< The PHY has the 10M full duplex ability.*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*! @brief Defines the timeout macro. */
|
||||||
|
#define PHY_TIMEOUT_COUNT 0x3FFFFFFU
|
||||||
|
|
||||||
|
/* defined the Reset pin, PORT and PIN config by menuconfig */
|
||||||
|
#define RESET_PIN GET_PIN(PHY_RESET_PORT, PHY_RESET_PIN)
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Prototypes
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Variables
|
||||||
|
******************************************************************************/
|
||||||
|
static struct rt_phy_device phy_8720a;
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Code
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static inline rt_bool_t read_reg(rt_mdio_t *bus, rt_uint32_t addr, rt_uint32_t reg_id, rt_uint32_t *value)
|
||||||
|
{
|
||||||
|
if (4 != bus->ops->read(bus, addr, reg_id, value, 4))
|
||||||
|
{
|
||||||
|
return RT_FALSE;
|
||||||
|
}
|
||||||
|
return RT_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline rt_bool_t write_reg(rt_mdio_t *bus, rt_uint32_t addr, rt_uint32_t reg_id, rt_uint32_t value)
|
||||||
|
{
|
||||||
|
if (4 != bus->ops->write(bus, addr, reg_id, &value, 4))
|
||||||
|
{
|
||||||
|
return RT_FALSE;
|
||||||
|
}
|
||||||
|
return RT_TRUE;
|
||||||
|
}
|
||||||
|
extern void imxrt_enet_phy_reset_by_gpio();
|
||||||
|
static rt_phy_status rt_phy_init(void *object, rt_uint32_t phy_addr, rt_uint32_t src_clock_hz)
|
||||||
|
{
|
||||||
|
rt_bool_t ret;
|
||||||
|
rt_phy_status result;
|
||||||
|
rt_uint32_t counter = PHY_TIMEOUT_COUNT;
|
||||||
|
rt_uint32_t id_reg = 0;
|
||||||
|
rt_uint32_t time_delay;
|
||||||
|
rt_uint32_t bss_reg;
|
||||||
|
rt_pin_mode(RESET_PIN, PIN_MODE_OUTPUT);
|
||||||
|
rt_pin_write(RESET_PIN, PIN_LOW);
|
||||||
|
rt_thread_mdelay(100);
|
||||||
|
rt_pin_write(RESET_PIN, PIN_HIGH);
|
||||||
|
|
||||||
|
rt_mdio_t *mdio_bus = rt_hw_mdio_register(object, "phy_mdio");
|
||||||
|
if (RT_NULL == mdio_bus)
|
||||||
|
{
|
||||||
|
return PHY_STATUS_FAIL;
|
||||||
|
}
|
||||||
|
phy_8720a.bus = mdio_bus;
|
||||||
|
phy_8720a.addr = phy_addr;
|
||||||
|
ret = mdio_bus->ops->init(mdio_bus, src_clock_hz);
|
||||||
|
if ( !ret )
|
||||||
|
{
|
||||||
|
return PHY_STATUS_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Initialization after PHY stars to work. */
|
||||||
|
while ((id_reg != PHY_CONTROL_ID1) && (counter != 0))
|
||||||
|
{
|
||||||
|
phy_8720a.ops->read(PHY_ID1_REG, &id_reg);
|
||||||
|
counter--;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!counter)
|
||||||
|
{
|
||||||
|
return PHY_STATUS_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reset PHY. */
|
||||||
|
counter = PHY_TIMEOUT_COUNT;
|
||||||
|
result = phy_8720a.ops->write(PHY_BASICCONTROL_REG, PHY_BCTL_RESET_MASK);
|
||||||
|
if (PHY_STATUS_OK == result)
|
||||||
|
{
|
||||||
|
/* Set the negotiation. */
|
||||||
|
result = phy_8720a.ops->write(PHY_AUTONEG_ADVERTISE_REG,
|
||||||
|
(PHY_100BASETX_FULLDUPLEX_MASK | PHY_100BASETX_HALFDUPLEX_MASK |
|
||||||
|
PHY_10BASETX_FULLDUPLEX_MASK | PHY_10BASETX_HALFDUPLEX_MASK | 0x1U));
|
||||||
|
if (PHY_STATUS_OK == result)
|
||||||
|
{
|
||||||
|
result = phy_8720a.ops->write(PHY_BASICCONTROL_REG, (PHY_BCTL_AUTONEG_MASK | PHY_BCTL_RESTART_AUTONEG_MASK));
|
||||||
|
if (PHY_STATUS_OK == result)
|
||||||
|
{
|
||||||
|
/* Check auto negotiation complete. */
|
||||||
|
while (counter--)
|
||||||
|
{
|
||||||
|
result = phy_8720a.ops->read(PHY_BASICSTATUS_REG, &bss_reg);
|
||||||
|
if (PHY_STATUS_OK == result)
|
||||||
|
{
|
||||||
|
if ((bss_reg & PHY_BSTATUS_AUTONEGCOMP_MASK) != 0)
|
||||||
|
{
|
||||||
|
/* Wait a moment for Phy status stable. */
|
||||||
|
for (time_delay = 0; time_delay < PHY_TIMEOUT_COUNT; time_delay++)
|
||||||
|
{
|
||||||
|
__ASM("nop");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!counter)
|
||||||
|
{
|
||||||
|
return PHY_STATUS_FAIL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return PHY_STATUS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static rt_phy_status rt_phy_read(rt_uint32_t reg, rt_uint32_t *data)
|
||||||
|
{
|
||||||
|
rt_mdio_t *mdio_bus = phy_8720a.bus;
|
||||||
|
rt_uint32_t device_id = phy_8720a.addr;
|
||||||
|
|
||||||
|
if (read_reg(mdio_bus, device_id, reg, data))
|
||||||
|
{
|
||||||
|
return PHY_STATUS_OK;
|
||||||
|
}
|
||||||
|
return PHY_STATUS_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static rt_phy_status rt_phy_write(rt_uint32_t reg, rt_uint32_t data)
|
||||||
|
{
|
||||||
|
rt_mdio_t *mdio_bus = phy_8720a.bus;
|
||||||
|
rt_uint32_t device_id = phy_8720a.addr;
|
||||||
|
|
||||||
|
if (write_reg(mdio_bus, device_id, reg, data))
|
||||||
|
{
|
||||||
|
return PHY_STATUS_OK;
|
||||||
|
}
|
||||||
|
return PHY_STATUS_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static rt_phy_status rt_phy_loopback(rt_uint32_t mode, rt_uint32_t speed, rt_bool_t enable)
|
||||||
|
{
|
||||||
|
rt_uint32_t data = 0;
|
||||||
|
rt_phy_status result;
|
||||||
|
|
||||||
|
/* Set the loop mode. */
|
||||||
|
if (enable)
|
||||||
|
{
|
||||||
|
if (PHY_LOCAL_LOOP == mode)
|
||||||
|
{
|
||||||
|
if (PHY_SPEED_100M == speed)
|
||||||
|
{
|
||||||
|
data = PHY_BCTL_SPEED_100M_MASK | PHY_BCTL_DUPLEX_MASK | PHY_BCTL_LOOP_MASK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
data = PHY_BCTL_DUPLEX_MASK | PHY_BCTL_LOOP_MASK;
|
||||||
|
}
|
||||||
|
return phy_8720a.ops->write(PHY_BASICCONTROL_REG, data);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* First read the current status in control register. */
|
||||||
|
result = phy_8720a.ops->read(PHY_CONTROL1_REG, &data);
|
||||||
|
if (PHY_STATUS_OK == result)
|
||||||
|
{
|
||||||
|
return phy_8720a.ops->write(PHY_CONTROL1_REG, (data | PHY_CTL1_REMOTELOOP_MASK));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Disable the loop mode. */
|
||||||
|
if (PHY_LOCAL_LOOP == mode)
|
||||||
|
{
|
||||||
|
/* First read the current status in control register. */
|
||||||
|
result = phy_8720a.ops->read(PHY_BASICCONTROL_REG, &data);
|
||||||
|
if (PHY_STATUS_OK == result)
|
||||||
|
{
|
||||||
|
data &= ~PHY_BCTL_LOOP_MASK;
|
||||||
|
return phy_8720a.ops->write(PHY_BASICCONTROL_REG, (data | PHY_BCTL_RESTART_AUTONEG_MASK));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* First read the current status in control one register. */
|
||||||
|
result = phy_8720a.ops->read(PHY_CONTROL1_REG, &data);
|
||||||
|
if (PHY_STATUS_OK == result)
|
||||||
|
{
|
||||||
|
return phy_8720a.ops->write(PHY_CONTROL1_REG, (data & ~PHY_CTL1_REMOTELOOP_MASK));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static rt_phy_status get_link_status(rt_bool_t *status)
|
||||||
|
{
|
||||||
|
rt_phy_status result;
|
||||||
|
rt_uint32_t data;
|
||||||
|
|
||||||
|
/* Read the basic status register. */
|
||||||
|
result = phy_8720a.ops->read(PHY_BASICSTATUS_REG, &data);
|
||||||
|
if (PHY_STATUS_OK == result)
|
||||||
|
{
|
||||||
|
if (!(PHY_BSTATUS_LINKSTATUS_MASK & data))
|
||||||
|
{
|
||||||
|
/* link down. */
|
||||||
|
*status = RT_FALSE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* link up. */
|
||||||
|
*status = RT_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
static rt_phy_status get_link_speed_duplex(rt_uint32_t *speed, rt_uint32_t *duplex)
|
||||||
|
{
|
||||||
|
rt_phy_status result = PHY_STATUS_OK;
|
||||||
|
rt_uint32_t data, ctl_reg;
|
||||||
|
|
||||||
|
/* Read the control two register. */
|
||||||
|
result = phy_8720a.ops->read(PHY_CONTROL1_REG, &ctl_reg);
|
||||||
|
if (PHY_STATUS_OK == result)
|
||||||
|
{
|
||||||
|
data = ctl_reg & PHY_CTL1_SPEEDUPLX_MASK;
|
||||||
|
if ((PHY_CTL1_10FULLDUPLEX_MASK == data) || (PHY_CTL1_100FULLDUPLEX_MASK == data))
|
||||||
|
{
|
||||||
|
/* Full duplex. */
|
||||||
|
*duplex = PHY_FULL_DUPLEX;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Half duplex. */
|
||||||
|
*duplex = PHY_HALF_DUPLEX;
|
||||||
|
}
|
||||||
|
|
||||||
|
data = ctl_reg & PHY_CTL1_SPEEDUPLX_MASK;
|
||||||
|
if ((PHY_CTL1_100HALFDUPLEX_MASK == data) || (PHY_CTL1_100FULLDUPLEX_MASK == data))
|
||||||
|
{
|
||||||
|
/* 100M speed. */
|
||||||
|
*speed = PHY_SPEED_100M;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ /* 10M speed. */
|
||||||
|
*speed = PHY_SPEED_10M;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct rt_phy_ops phy_ops =
|
||||||
|
{
|
||||||
|
.init = rt_phy_init,
|
||||||
|
.read = rt_phy_read,
|
||||||
|
.write = rt_phy_write,
|
||||||
|
.loopback = rt_phy_loopback,
|
||||||
|
.get_link_status = get_link_status,
|
||||||
|
.get_link_speed_duplex = get_link_speed_duplex,
|
||||||
|
};
|
||||||
|
|
||||||
|
static int rt_phy_8720a_register( void )
|
||||||
|
{
|
||||||
|
phy_8720a.ops = &phy_ops;
|
||||||
|
rt_hw_phy_register(&phy_8720a, "rtt-phy");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
INIT_DEVICE_EXPORT(rt_phy_8720a_register);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
|
@ -91,11 +91,15 @@
|
||||||
|
|
||||||
#define RT_USING_DEVICE_IPC
|
#define RT_USING_DEVICE_IPC
|
||||||
#define RT_PIPE_BUFSZ 512
|
#define RT_PIPE_BUFSZ 512
|
||||||
|
#define RT_USING_SYSTEM_WORKQUEUE
|
||||||
|
#define RT_SYSTEM_WORKQUEUE_STACKSIZE 2048
|
||||||
|
#define RT_SYSTEM_WORKQUEUE_PRIORITY 23
|
||||||
#define RT_USING_SERIAL
|
#define RT_USING_SERIAL
|
||||||
#define RT_USING_SERIAL_V1
|
#define RT_USING_SERIAL_V1
|
||||||
#define RT_SERIAL_USING_DMA
|
#define RT_SERIAL_USING_DMA
|
||||||
#define RT_SERIAL_RB_BUFSZ 64
|
#define RT_SERIAL_RB_BUFSZ 64
|
||||||
#define RT_USING_CPUTIME
|
#define RT_USING_CPUTIME
|
||||||
|
#define RT_USING_PHY
|
||||||
#define RT_USING_PIN
|
#define RT_USING_PIN
|
||||||
|
|
||||||
/* Using USB */
|
/* Using USB */
|
||||||
|
@ -114,12 +118,67 @@
|
||||||
|
|
||||||
/* Socket abstraction layer */
|
/* Socket abstraction layer */
|
||||||
|
|
||||||
|
#define RT_USING_SAL
|
||||||
|
#define SAL_INTERNET_CHECK
|
||||||
|
|
||||||
|
/* protocol stack implement */
|
||||||
|
|
||||||
|
#define SAL_USING_LWIP
|
||||||
|
#define SAL_USING_POSIX
|
||||||
|
|
||||||
/* Network interface device */
|
/* Network interface device */
|
||||||
|
|
||||||
|
#define RT_USING_NETDEV
|
||||||
|
#define NETDEV_USING_IFCONFIG
|
||||||
|
#define NETDEV_USING_PING
|
||||||
|
#define NETDEV_USING_NETSTAT
|
||||||
|
#define NETDEV_USING_AUTO_DEFAULT
|
||||||
|
#define NETDEV_IPV4 1
|
||||||
|
#define NETDEV_IPV6 0
|
||||||
|
|
||||||
/* light weight TCP/IP stack */
|
/* light weight TCP/IP stack */
|
||||||
|
|
||||||
|
#define RT_USING_LWIP
|
||||||
|
#define RT_USING_LWIP212
|
||||||
|
#define RT_LWIP_MEM_ALIGNMENT 4
|
||||||
|
#define RT_LWIP_IGMP
|
||||||
|
#define RT_LWIP_ICMP
|
||||||
|
#define RT_LWIP_DNS
|
||||||
|
#define RT_LWIP_DHCP
|
||||||
|
#define IP_SOF_BROADCAST 1
|
||||||
|
#define IP_SOF_BROADCAST_RECV 1
|
||||||
|
|
||||||
|
/* Static IPv4 Address */
|
||||||
|
|
||||||
|
#define RT_LWIP_IPADDR "192.168.1.30"
|
||||||
|
#define RT_LWIP_GWADDR "192.168.1.1"
|
||||||
|
#define RT_LWIP_MSKADDR "255.255.255.0"
|
||||||
|
#define RT_LWIP_UDP
|
||||||
|
#define RT_LWIP_TCP
|
||||||
|
#define RT_LWIP_RAW
|
||||||
|
#define RT_MEMP_NUM_NETCONN 8
|
||||||
|
#define RT_LWIP_PBUF_NUM 16
|
||||||
|
#define RT_LWIP_RAW_PCB_NUM 4
|
||||||
|
#define RT_LWIP_UDP_PCB_NUM 4
|
||||||
|
#define RT_LWIP_TCP_PCB_NUM 4
|
||||||
|
#define RT_LWIP_TCP_SEG_NUM 40
|
||||||
|
#define RT_LWIP_TCP_SND_BUF 8196
|
||||||
|
#define RT_LWIP_TCP_WND 8196
|
||||||
|
#define RT_LWIP_TCPTHREAD_PRIORITY 10
|
||||||
|
#define RT_LWIP_TCPTHREAD_MBOX_SIZE 8
|
||||||
|
#define RT_LWIP_TCPTHREAD_STACKSIZE 1024
|
||||||
|
#define RT_LWIP_ETHTHREAD_PRIORITY 12
|
||||||
|
#define RT_LWIP_ETHTHREAD_STACKSIZE 1024
|
||||||
|
#define RT_LWIP_ETHTHREAD_MBOX_SIZE 8
|
||||||
|
#define LWIP_NETIF_STATUS_CALLBACK 1
|
||||||
|
#define LWIP_NETIF_LINK_CALLBACK 1
|
||||||
|
#define SO_REUSE 1
|
||||||
|
#define LWIP_SO_RCVTIMEO 1
|
||||||
|
#define LWIP_SO_SNDTIMEO 1
|
||||||
|
#define LWIP_SO_RCVBUF 1
|
||||||
|
#define LWIP_SO_LINGER 0
|
||||||
|
#define LWIP_NETIF_LOOPBACK 0
|
||||||
|
#define RT_LWIP_USING_PING
|
||||||
|
|
||||||
/* AT commands */
|
/* AT commands */
|
||||||
|
|
||||||
|
@ -147,6 +206,12 @@
|
||||||
/* Onboard Peripheral Drivers */
|
/* Onboard Peripheral Drivers */
|
||||||
|
|
||||||
#define BSP_USING_SDRAM
|
#define BSP_USING_SDRAM
|
||||||
|
#define BSP_USING_ETH
|
||||||
|
#define BSP_USING_PHY
|
||||||
|
#define PHY_DEVICE_ADDRESS 0
|
||||||
|
#define PHY_USING_8720A
|
||||||
|
#define PHY_RESET_PORT 1
|
||||||
|
#define PHY_RESET_PIN 3
|
||||||
|
|
||||||
/* MicroPython */
|
/* MicroPython */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue