diff --git a/bsp/gd32450z-eval/.config b/bsp/gd32450z-eval/.config index a8b61c6b69..c828d3b3d9 100644 --- a/bsp/gd32450z-eval/.config +++ b/bsp/gd32450z-eval/.config @@ -7,6 +7,8 @@ # RT-Thread Kernel # CONFIG_RT_NAME_MAX=8 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_SMP is not set CONFIG_RT_ALIGN_SIZE=4 # CONFIG_RT_THREAD_PRIORITY_8 is not set CONFIG_RT_THREAD_PRIORITY_32=y @@ -15,6 +17,7 @@ CONFIG_RT_THREAD_PRIORITY_MAX=32 CONFIG_RT_TICK_PER_SECOND=100 CONFIG_RT_USING_OVERFLOW_CHECK=y CONFIG_RT_USING_HOOK=y +CONFIG_RT_USING_IDLE_HOOK=y CONFIG_RT_IDEL_HOOK_LIST_SIZE=4 CONFIG_IDLE_THREAD_STACK_SIZE=256 # CONFIG_RT_USING_TIMER_SOFT is not set @@ -61,7 +64,8 @@ CONFIG_RT_USING_DEVICE=y CONFIG_RT_USING_CONSOLE=y CONFIG_RT_CONSOLEBUF_SIZE=128 CONFIG_RT_CONSOLE_DEVICE_NAME="uart0" -# CONFIG_RT_USING_MODULE is not set +CONFIG_RT_VER_NUM=0x40001 +# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set # # RT-Thread Components @@ -69,6 +73,7 @@ CONFIG_RT_CONSOLE_DEVICE_NAME="uart0" CONFIG_RT_USING_COMPONENTS_INIT=y CONFIG_RT_USING_USER_MAIN=y CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048 +CONFIG_RT_MAIN_THREAD_PRIORITY=10 # # C++ features @@ -102,6 +107,7 @@ CONFIG_DFS_USING_WORKDIR=y CONFIG_DFS_FILESYSTEMS_MAX=4 CONFIG_DFS_FILESYSTEM_TYPES_MAX=4 CONFIG_DFS_FD_MAX=16 +# CONFIG_RT_USING_DFS_MNTTABLE is not set CONFIG_RT_USING_DFS_ELMFAT=y # @@ -131,22 +137,34 @@ CONFIG_RT_USING_DFS_DEVFS=y # CONFIG_RT_USING_DEVICE_IPC=y CONFIG_RT_PIPE_BUFSZ=512 +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_SERIAL_USING_DMA=y +CONFIG_RT_SERIAL_RB_BUFSZ=64 # CONFIG_RT_USING_CAN is not set # CONFIG_RT_USING_HWTIMER is not set # CONFIG_RT_USING_CPUTIME is not set # CONFIG_RT_USING_I2C is not set CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_ADC is not set # CONFIG_RT_USING_PWM is not set # CONFIG_RT_USING_MTD_NOR is not set # CONFIG_RT_USING_MTD_NAND is not set +# CONFIG_RT_USING_MTD is not set +# CONFIG_RT_USING_PM is not set # CONFIG_RT_USING_RTC is not set # CONFIG_RT_USING_SDIO is not set # CONFIG_RT_USING_SPI is not set # CONFIG_RT_USING_WDT is not set -# CONFIG_RT_USING_WIFI is not set # CONFIG_RT_USING_AUDIO is not set +# CONFIG_RT_USING_SENSOR is not set + +# +# Using WiFi +# +# CONFIG_RT_USING_WIFI is not set # # Using USB @@ -163,6 +181,7 @@ CONFIG_RT_USING_POSIX=y # CONFIG_RT_USING_POSIX_MMAP is not set # CONFIG_RT_USING_POSIX_TERMIOS is not set # CONFIG_RT_USING_POSIX_AIO is not set +# CONFIG_RT_USING_MODULE is not set # # Network @@ -178,7 +197,14 @@ CONFIG_RT_USING_SAL=y # CONFIG_SAL_USING_LWIP=y CONFIG_SAL_USING_POSIX=y -CONFIG_SAL_PROTO_FAMILIES_NUM=4 + +# +# Network interface device +# +CONFIG_RT_USING_NETDEV=y +CONFIG_NETDEV_USING_IFCONFIG=y +CONFIG_NETDEV_USING_PING=y +CONFIG_NETDEV_USING_NETSTAT=y # # light weight TCP/IP stack @@ -186,7 +212,7 @@ CONFIG_SAL_PROTO_FAMILIES_NUM=4 CONFIG_RT_USING_LWIP=y # CONFIG_RT_USING_LWIP141 is not set CONFIG_RT_USING_LWIP202=y -# CONFIG_RT_USING_LWIP_IPV6 is not set +# CONFIG_RT_USING_LWIP210 is not set CONFIG_RT_LWIP_IGMP=y CONFIG_RT_LWIP_ICMP=y # CONFIG_RT_LWIP_SNMP is not set @@ -203,7 +229,7 @@ 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 is not set +CONFIG_RT_LWIP_RAW=y # CONFIG_RT_LWIP_PPP is not set CONFIG_RT_MEMP_NUM_NETCONN=8 CONFIG_RT_LWIP_PBUF_NUM=16 @@ -223,17 +249,27 @@ 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_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 # # Modbus master and slave stack # # CONFIG_RT_USING_MODBUS is not set + +# +# AT commands +# +# CONFIG_RT_USING_AT is not set # CONFIG_LWIP_USING_DHCPD is not set # @@ -246,6 +282,8 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # # CONFIG_RT_USING_LOGTRACE is not set # CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set # # RT-Thread online packages @@ -256,14 +294,15 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # # CONFIG_PKG_USING_PAHOMQTT is not set # CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_WEBNET is not set # CONFIG_PKG_USING_MONGOOSE is not set # CONFIG_PKG_USING_WEBTERMINAL is not set # CONFIG_PKG_USING_CJSON is not set # CONFIG_PKG_USING_JSMN is not set +# CONFIG_PKG_USING_LIBMODBUS is not set # CONFIG_PKG_USING_LJSON is not set # CONFIG_PKG_USING_EZXML is not set # CONFIG_PKG_USING_NANOPB is not set -# CONFIG_PKG_USING_GAGENT_CLOUD is not set # # Wi-Fi @@ -278,11 +317,23 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # Wiced WiFi # # CONFIG_PKG_USING_WLAN_WICED is not set +# CONFIG_PKG_USING_RW007 is not set # CONFIG_PKG_USING_COAP is not set # CONFIG_PKG_USING_NOPOLL is not set # CONFIG_PKG_USING_NETUTILS is not set -# CONFIG_PKG_USING_ONENET is not set # CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_WIZNET is not set + +# +# IoT Cloud +# +# CONFIG_PKG_USING_ONENET is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set +# CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOTKIT is not set +# CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_OTA_DOWNLOADER is not set # # security packages @@ -303,6 +354,7 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # # CONFIG_PKG_USING_OPENMV is not set # CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set # # tools packages @@ -311,6 +363,10 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # CONFIG_PKG_USING_EASYFLASH is not set # CONFIG_PKG_USING_EASYLOGGER is not set # CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_RDB is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_ULOG_EASYFLASH is not set +# CONFIG_PKG_USING_ADBD is not set # # system packages @@ -324,17 +380,37 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # CONFIG_PKG_USING_SQLITE is not set # CONFIG_PKG_USING_RTI is not set # CONFIG_PKG_USING_LITTLEVGL2RTT is not set +# CONFIG_PKG_USING_CMSIS is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_THREAD_POOL is not set # # peripheral libraries and drivers # -# CONFIG_PKG_USING_STM32F4_HAL is not set -# CONFIG_PKG_USING_STM32F4_DRIVERS is not set +# CONFIG_PKG_USING_SENSORS_DRIVERS is not set # CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_AHT10 is not set +# CONFIG_PKG_USING_AP3216C is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_U8G2 is not set +# CONFIG_PKG_USING_BUTTON is not set +# CONFIG_PKG_USING_MPU6XXX is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_WM_LIBRARIES is not set +# CONFIG_PKG_USING_KENDRYTE_SDK is not set +# CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_AT24CXX is not set # # miscellaneous packages # +# CONFIG_PKG_USING_LIBCSV is not set # CONFIG_PKG_USING_OPTPARSE is not set # CONFIG_PKG_USING_FASTLZ is not set # CONFIG_PKG_USING_MINILZO is not set @@ -343,16 +419,19 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # CONFIG_PKG_USING_CANFESTIVAL is not set # CONFIG_PKG_USING_ZLIB is not set # CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set # -# sample package -# -# CONFIG_PKG_USING_SAMPLES is not set - -# -# example package: hello +# samples: kernel and components samples # +# CONFIG_PKG_USING_KERNEL_SAMPLES is not set +# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set +# CONFIG_PKG_USING_NETWORK_SAMPLES is not set +# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set # CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_NNOM is not set CONFIG_BSP_USING_SDRAM=y CONFIG_BSP_USING_UART0=y # CONFIG_BSP_USING_UART1 is not set diff --git a/bsp/gd32450z-eval/project.ewp b/bsp/gd32450z-eval/project.ewp index c85930d62d..32a3ff457d 100644 --- a/bsp/gd32450z-eval/project.ewp +++ b/bsp/gd32450z-eval/project.ewp @@ -1,2391 +1,2436 @@ - - 2 - - Debug - - ARM - - 1 - - General - 3 - - 22 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 31 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 9 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 16 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Release - - ARM - - 0 - - General - 3 - - 22 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 31 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 9 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 0 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 16 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 0 - - - - - - - BILINK - 0 - - - - - Applications - - $PROJ_DIR$\applications\main.c - - - - Drivers - - $PROJ_DIR$\drivers\board.c - - - $PROJ_DIR$\drivers\drv_usart.c - - - $PROJ_DIR$\drivers\drv_exmc_sdram.c - - - $PROJ_DIR$\drivers\drv_enet.c - - - $PROJ_DIR$\drivers\synopsys_emac.c - - - - GD32_Lib - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_adc.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_can.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_crc.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_ctc.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_dac.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_dbg.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_dci.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_dma.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_enet.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_exmc.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_fmc.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_fwdgt.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_i2c.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_ipa.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_iref.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_pmu.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_rtc.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_sdio.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_spi.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_timer.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_tli.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_trng.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c - - - $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_wwdgt.c - - - $PROJ_DIR$\Libraries\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c - - - $PROJ_DIR$\Libraries\CMSIS\GD\GD32F4xx\Source\IAR\startup_gd32f4xx.s - - - - Kernel - - $PROJ_DIR$\..\..\src\clock.c - - - $PROJ_DIR$\..\..\src\components.c - - - $PROJ_DIR$\..\..\src\device.c - - - $PROJ_DIR$\..\..\src\idle.c - - - $PROJ_DIR$\..\..\src\ipc.c - - - $PROJ_DIR$\..\..\src\irq.c - - - $PROJ_DIR$\..\..\src\kservice.c - - - $PROJ_DIR$\..\..\src\mem.c - - - $PROJ_DIR$\..\..\src\mempool.c - - - $PROJ_DIR$\..\..\src\object.c - - - $PROJ_DIR$\..\..\src\scheduler.c - - - $PROJ_DIR$\..\..\src\signal.c - - - $PROJ_DIR$\..\..\src\thread.c - - - $PROJ_DIR$\..\..\src\timer.c - - - - CORTEX-M4 - - $PROJ_DIR$\..\..\libcpu\arm\cortex-m4\cpuport.c - - - $PROJ_DIR$\..\..\libcpu\arm\cortex-m4\context_iar.S - - - $PROJ_DIR$\..\..\libcpu\arm\common\backtrace.c - - - $PROJ_DIR$\..\..\libcpu\arm\common\div0.c - - - $PROJ_DIR$\..\..\libcpu\arm\common\showmem.c - - - - Filesystem - - $PROJ_DIR$\..\..\components\dfs\src\dfs.c - - - $PROJ_DIR$\..\..\components\dfs\src\dfs_file.c - - - $PROJ_DIR$\..\..\components\dfs\src\dfs_fs.c - - - $PROJ_DIR$\..\..\components\dfs\src\dfs_posix.c - - - $PROJ_DIR$\..\..\components\dfs\src\poll.c - - - $PROJ_DIR$\..\..\components\dfs\src\select.c - - - $PROJ_DIR$\..\..\components\dfs\filesystems\devfs\devfs.c - - - $PROJ_DIR$\..\..\components\dfs\filesystems\elmfat\dfs_elm.c - - - $PROJ_DIR$\..\..\components\dfs\filesystems\elmfat\ff.c - - - $PROJ_DIR$\..\..\components\dfs\filesystems\net\dfs_net.c - - - $PROJ_DIR$\..\..\components\dfs\filesystems\net\net_netdb.c - - - $PROJ_DIR$\..\..\components\dfs\filesystems\net\net_sockets.c - - - - DeviceDrivers - - $PROJ_DIR$\..\..\components\drivers\misc\pin.c - - - $PROJ_DIR$\..\..\components\drivers\serial\serial.c - - - $PROJ_DIR$\..\..\components\drivers\src\completion.c - - - $PROJ_DIR$\..\..\components\drivers\src\dataqueue.c - - - $PROJ_DIR$\..\..\components\drivers\src\pipe.c - - - $PROJ_DIR$\..\..\components\drivers\src\ringbuffer.c - - - $PROJ_DIR$\..\..\components\drivers\src\waitqueue.c - - - $PROJ_DIR$\..\..\components\drivers\src\workqueue.c - - - - finsh - - $PROJ_DIR$\..\..\components\finsh\shell.c - - - $PROJ_DIR$\..\..\components\finsh\symbol.c - - - $PROJ_DIR$\..\..\components\finsh\cmd.c - - - $PROJ_DIR$\..\..\components\finsh\msh.c - - - $PROJ_DIR$\..\..\components\finsh\msh_cmd.c - - - $PROJ_DIR$\..\..\components\finsh\msh_file.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_compiler.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_error.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_heap.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_init.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_node.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_ops.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_parser.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_var.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_vm.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_token.c - - - - dlib - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\environ.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\libc.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\rmtx.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\stdio.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_close.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_lseek.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_mem.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_open.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_read.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_remove.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_write.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\time.c - - - - lwIP - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\arch\sys_arch.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\api_lib.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\api_msg.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\err.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\netbuf.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\netdb.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\netifapi.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\sockets.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\tcpip.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\def.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\dns.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\inet_chksum.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\init.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ip.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\memp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\netif.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\pbuf.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\raw.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\stats.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\sys.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\tcp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\tcp_in.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\tcp_out.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\timeouts.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\udp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\netif\ethernet.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\netif\ethernetif.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\netif\lowpan6.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\autoip.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\dhcp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\etharp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\icmp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\igmp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_addr.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_frag.c - - - + + 2 + + Debug + + ARM + + 1 + + General + 3 + + 22 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 22 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 31 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 9 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 16 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + Kernel + + $PROJ_DIR$\..\..\src\clock.c + + + $PROJ_DIR$\..\..\src\components.c + + + $PROJ_DIR$\..\..\src\cpu.c + + + $PROJ_DIR$\..\..\src\device.c + + + $PROJ_DIR$\..\..\src\idle.c + + + $PROJ_DIR$\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\src\irq.c + + + $PROJ_DIR$\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\src\mem.c + + + $PROJ_DIR$\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\src\object.c + + + $PROJ_DIR$\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\src\signal.c + + + $PROJ_DIR$\..\..\src\thread.c + + + $PROJ_DIR$\..\..\src\timer.c + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + Drivers + + $PROJ_DIR$\drivers\board.c + + + $PROJ_DIR$\drivers\drv_usart.c + + + $PROJ_DIR$\drivers\drv_exmc_sdram.c + + + $PROJ_DIR$\drivers\drv_enet.c + + + $PROJ_DIR$\drivers\synopsys_emac.c + + + + GD32_Lib + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_adc.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_can.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_crc.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_ctc.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_dac.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_dbg.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_dci.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_dma.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_enet.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_exmc.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_fmc.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_fwdgt.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_i2c.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_ipa.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_iref.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_pmu.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_rtc.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_sdio.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_spi.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_timer.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_tli.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_trng.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c + + + $PROJ_DIR$\Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_wwdgt.c + + + $PROJ_DIR$\Libraries\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c + + + $PROJ_DIR$\Libraries\CMSIS\GD\GD32F4xx\Source\IAR\startup_gd32f4xx.s + + + + cpu + + $PROJ_DIR$\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\libcpu\arm\common\showmem.c + + + $PROJ_DIR$\..\..\libcpu\arm\cortex-m4\cpuport.c + + + $PROJ_DIR$\..\..\libcpu\arm\cortex-m4\context_iar.S + + + + Filesystem + + $PROJ_DIR$\..\..\components\dfs\src\dfs.c + + + $PROJ_DIR$\..\..\components\dfs\src\dfs_file.c + + + $PROJ_DIR$\..\..\components\dfs\src\dfs_fs.c + + + $PROJ_DIR$\..\..\components\dfs\src\dfs_posix.c + + + $PROJ_DIR$\..\..\components\dfs\src\poll.c + + + $PROJ_DIR$\..\..\components\dfs\src\select.c + + + $PROJ_DIR$\..\..\components\dfs\filesystems\devfs\devfs.c + + + $PROJ_DIR$\..\..\components\dfs\filesystems\elmfat\dfs_elm.c + + + $PROJ_DIR$\..\..\components\dfs\filesystems\elmfat\ff.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\components\drivers\src\completion.c + + + $PROJ_DIR$\..\..\components\drivers\src\dataqueue.c + + + $PROJ_DIR$\..\..\components\drivers\src\pipe.c + + + $PROJ_DIR$\..\..\components\drivers\src\ringblk_buf.c + + + $PROJ_DIR$\..\..\components\drivers\src\ringbuffer.c + + + $PROJ_DIR$\..\..\components\drivers\src\waitqueue.c + + + $PROJ_DIR$\..\..\components\drivers\src\workqueue.c + + + + finsh + + $PROJ_DIR$\..\..\components\finsh\shell.c + + + $PROJ_DIR$\..\..\components\finsh\symbol.c + + + $PROJ_DIR$\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\components\finsh\msh_cmd.c + + + $PROJ_DIR$\..\..\components\finsh\msh_file.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_compiler.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_error.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_heap.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_init.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_node.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_ops.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_parser.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_var.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_vm.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_token.c + + + + libc + + $PROJ_DIR$\..\..\components\libc\compilers\common\gmtime_r.c + + + + dlib + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\libc.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\rmtx.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\stdio.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\time.c + + + + lwIP + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\arch\sys_arch.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\api_lib.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\api_msg.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\err.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\netbuf.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\netdb.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\netifapi.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\sockets.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\tcpip.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\def.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\dns.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\inet_chksum.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\init.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ip.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\memp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\netif.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\pbuf.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\raw.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\stats.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\sys.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\tcp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\tcp_in.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\tcp_out.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\timeouts.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\udp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\netif\ethernet.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\netif\ethernetif.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\netif\lowpan6.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\autoip.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\dhcp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\etharp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\icmp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\igmp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_addr.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_frag.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\apps\ping\ping.c + + + + netdev + + $PROJ_DIR$\..\..\components\net\netdev\src\netdev.c + + + $PROJ_DIR$\..\..\components\net\netdev\src\netdev_ipaddr.c + + + + SAL + + $PROJ_DIR$\..\..\components\net\sal_socket\src\sal_socket.c + + + $PROJ_DIR$\..\..\components\net\sal_socket\socket\net_netdb.c + + + $PROJ_DIR$\..\..\components\net\sal_socket\impl\af_inet_lwip.c + + + $PROJ_DIR$\..\..\components\net\sal_socket\socket\net_sockets.c + + + $PROJ_DIR$\..\..\components\net\sal_socket\dfs_net\dfs_net.c + + + diff --git a/bsp/gd32450z-eval/project.eww b/bsp/gd32450z-eval/project.eww index faa93f37cd..c2cb02eb1e 100644 --- a/bsp/gd32450z-eval/project.eww +++ b/bsp/gd32450z-eval/project.eww @@ -1,10 +1,10 @@ - - - - - $WS_DIR$\project.ewp - - - - - + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/gd32450z-eval/project.uvproj b/bsp/gd32450z-eval/project.uvproj index 7913c0ca08..e89f08ba18 100644 --- a/bsp/gd32450z-eval/project.uvproj +++ b/bsp/gd32450z-eval/project.uvproj @@ -1,42 +1,38 @@ - 1.1 -
### uVision Project, (C) Keil Software
- rt-thread_gd32f4xx 0x4 ARM-ADS - 5060750::V5.06 update 6 (build 750)::ARMCC 0 GD32F450ZK GigaDevice IRAM(0x20000000-0x2002FFFF) IRAM2(0x10000000-0x1000FFFF) IROM(0x08000000-0x082FFFFF) CLOCK(16000000) CPUTYPE("Cortex-M4") FPU2 - + "Startup\GD\GD32F4xx\startup_gd32f4xx.s" ("GD32F4xx Startup Code") UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000) 0 gd32f4xx0.h - - - - - - - - - + + + + + + + + + SFD\GD\GD32F4xx\GD32F4xx.SFR 0 0 - - - + + + GD\GD32F4xx\ GD\GD32F4xx\ @@ -60,8 +56,8 @@ 0 0 - - + + 0 0 0 @@ -70,8 +66,8 @@ 0 0 - - + + 0 0 0 @@ -80,15 +76,15 @@ 0 0 - - + + 0 0 0 0 0 - + 0 @@ -102,8 +98,8 @@ 0 0 3 - - + + 1 @@ -112,7 +108,7 @@ DCM.DLL -pCM3 SARMCM3.DLL - + TCM.DLL -pCM3 @@ -151,18 +147,18 @@ 0 3 - - - - - + + + + + - - - - - + + + + + BIN\CMSIS_AGDI.dll @@ -178,10 +174,10 @@ 1 BIN\UL2CM3.DLL "" () - - - - + + + + 0 @@ -214,7 +210,7 @@ 0 0 "Cortex-M4" - + 0 0 0 @@ -346,7 +342,7 @@ 0x10000 - + 1 @@ -373,10 +369,10 @@ 0 0 - + GD32F4XX, RT_USING_ARM_LIBC, USE_STDPERIPH_DRIVER - - applications;.;drivers;Libraries\CMSIS\GD\GD32F4xx\Include;Libraries\CMSIS;Libraries\GD32F4xx_standard_peripheral\Include;..\..\include;..\..\libcpu\arm\cortex-m4;..\..\libcpu\arm\common;..\..\components\dfs\include;..\..\components\dfs\filesystems\devfs;..\..\components\dfs\filesystems\elmfat;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\finsh;..\..\components\libc\compilers\armlibc;..\..\components\net\lwip-2.0.2\src;..\..\components\net\lwip-2.0.2\src\include;..\..\components\net\lwip-2.0.2\src\include\ipv4;..\..\components\net\lwip-2.0.2\src\arch\include;..\..\components\net\lwip-2.0.2\src\include\netif;..\..\components\net\sal_socket\include;..\..\components\net\sal_socket\include\socket;..\..\components\net\sal_socket\impl;..\..\components\net\sal_socket\include\dfs_net;..\..\components\net\sal_socket\include\dfs_net\sys_select;..\..\components\net\sal_socket\include\socket\sys_socket + + .;..\..\include;applications;.;drivers;Libraries\CMSIS\GD\GD32F4xx\Include;Libraries\CMSIS;Libraries\GD32F4xx_standard_peripheral\Include;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m4;..\..\components\dfs\include;..\..\components\dfs\filesystems\devfs;..\..\components\dfs\filesystems\elmfat;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\finsh;..\..\components\libc\compilers\armlibc;..\..\components\libc\compilers\common;..\..\components\net\lwip-2.0.2\src;..\..\components\net\lwip-2.0.2\src\include;..\..\components\net\lwip-2.0.2\src\include\ipv4;..\..\components\net\lwip-2.0.2\src\arch\include;..\..\components\net\lwip-2.0.2\src\include\netif;..\..\components\net\netdev\include;..\..\components\net\sal_socket\include;..\..\components\net\sal_socket\include\socket;..\..\components\net\sal_socket\impl;..\..\components\net\sal_socket\include\dfs_net;..\..\components\net\sal_socket\include\dfs_net\sys_select;..\..\components\net\sal_socket\include\socket\sys_socket @@ -391,10 +387,10 @@ 0 0 - - - - + + + + @@ -406,17 +402,125 @@ 0 0x08000000 0x20000000 - - - - - --keep *.o(.rti_fn.*) --keep *.o(FSymTab) --keep *.o(VSymTab) - - + + + + + + + + + Kernel + + + clock.c + 1 + ..\..\src\clock.c + + + + + components.c + 1 + ..\..\src\components.c + + + + + cpu.c + 1 + ..\..\src\cpu.c + + + + + device.c + 1 + ..\..\src\device.c + + + + + idle.c + 1 + ..\..\src\idle.c + + + + + ipc.c + 1 + ..\..\src\ipc.c + + + + + irq.c + 1 + ..\..\src\irq.c + + + + + kservice.c + 1 + ..\..\src\kservice.c + + + + + mem.c + 1 + ..\..\src\mem.c + + + + + mempool.c + 1 + ..\..\src\mempool.c + + + + + object.c + 1 + ..\..\src\object.c + + + + + scheduler.c + 1 + ..\..\src\scheduler.c + + + + + signal.c + 1 + ..\..\src\signal.c + + + + + thread.c + 1 + ..\..\src\thread.c + + + + + timer.c + 1 + ..\..\src\timer.c + + + Applications @@ -435,21 +539,29 @@ 1 drivers\board.c + + drv_usart.c 1 drivers\drv_usart.c + + drv_exmc_sdram.c 1 drivers\drv_exmc_sdram.c + + drv_enet.c 1 drivers\drv_enet.c + + synopsys_emac.c 1 @@ -465,151 +577,211 @@ 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_adc.c + + gd32f4xx_can.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_can.c + + gd32f4xx_crc.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_crc.c + + gd32f4xx_ctc.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_ctc.c + + gd32f4xx_dac.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_dac.c + + gd32f4xx_dbg.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_dbg.c + + gd32f4xx_dci.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_dci.c + + gd32f4xx_dma.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_dma.c + + gd32f4xx_enet.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_enet.c + + gd32f4xx_exmc.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_exmc.c + + gd32f4xx_exti.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c + + gd32f4xx_fmc.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_fmc.c + + gd32f4xx_fwdgt.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_fwdgt.c + + gd32f4xx_gpio.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c + + gd32f4xx_i2c.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_i2c.c + + gd32f4xx_ipa.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_ipa.c + + gd32f4xx_iref.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_iref.c + + gd32f4xx_misc.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c + + gd32f4xx_pmu.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_pmu.c + + gd32f4xx_rcu.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c + + gd32f4xx_rtc.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_rtc.c + + gd32f4xx_sdio.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_sdio.c + + gd32f4xx_spi.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_spi.c + + gd32f4xx_syscfg.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c + + gd32f4xx_timer.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_timer.c + + gd32f4xx_tli.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_tli.c + + gd32f4xx_trng.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_trng.c + + gd32f4xx_usart.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c + + gd32f4xx_wwdgt.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_wwdgt.c + + system_gd32f4xx.c 1 Libraries\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c + + startup_gd32f4xx.s 2 @@ -618,108 +790,41 @@ - Kernel + cpu - clock.c + backtrace.c 1 - ..\..\src\clock.c - - - components.c - 1 - ..\..\src\components.c - - - device.c - 1 - ..\..\src\device.c - - - idle.c - 1 - ..\..\src\idle.c - - - ipc.c - 1 - ..\..\src\ipc.c - - - irq.c - 1 - ..\..\src\irq.c - - - kservice.c - 1 - ..\..\src\kservice.c - - - mem.c - 1 - ..\..\src\mem.c - - - mempool.c - 1 - ..\..\src\mempool.c - - - object.c - 1 - ..\..\src\object.c - - - scheduler.c - 1 - ..\..\src\scheduler.c - - - signal.c - 1 - ..\..\src\signal.c - - - thread.c - 1 - ..\..\src\thread.c - - - timer.c - 1 - ..\..\src\timer.c + ..\..\libcpu\arm\common\backtrace.c + + + + + div0.c + 1 + ..\..\libcpu\arm\common\div0.c + + + + + showmem.c + 1 + ..\..\libcpu\arm\common\showmem.c - - - CORTEX-M4 cpuport.c 1 ..\..\libcpu\arm\cortex-m4\cpuport.c + + context_rvds.S 2 ..\..\libcpu\arm\cortex-m4\context_rvds.S - - backtrace.c - 1 - ..\..\libcpu\arm\common\backtrace.c - - - div0.c - 1 - ..\..\libcpu\arm\common\div0.c - - - showmem.c - 1 - ..\..\libcpu\arm\common\showmem.c - @@ -730,41 +835,57 @@ 1 ..\..\components\dfs\src\dfs.c + + dfs_file.c 1 ..\..\components\dfs\src\dfs_file.c + + dfs_fs.c 1 ..\..\components\dfs\src\dfs_fs.c + + dfs_posix.c 1 ..\..\components\dfs\src\dfs_posix.c + + poll.c 1 ..\..\components\dfs\src\poll.c + + select.c 1 ..\..\components\dfs\src\select.c + + devfs.c 1 ..\..\components\dfs\filesystems\devfs\devfs.c + + dfs_elm.c 1 ..\..\components\dfs\filesystems\elmfat\dfs_elm.c + + ff.c 1 @@ -780,36 +901,57 @@ 1 ..\..\components\drivers\misc\pin.c + + serial.c 1 ..\..\components\drivers\serial\serial.c + + completion.c 1 ..\..\components\drivers\src\completion.c + + dataqueue.c 1 ..\..\components\drivers\src\dataqueue.c + + pipe.c 1 ..\..\components\drivers\src\pipe.c + + + + ringblk_buf.c + 1 + ..\..\components\drivers\src\ringblk_buf.c + + + ringbuffer.c 1 ..\..\components\drivers\src\ringbuffer.c + + waitqueue.c 1 ..\..\components\drivers\src\waitqueue.c + + workqueue.c 1 @@ -825,76 +967,106 @@ 1 ..\..\components\finsh\shell.c + + symbol.c 1 ..\..\components\finsh\symbol.c + + cmd.c 1 ..\..\components\finsh\cmd.c + + msh.c 1 ..\..\components\finsh\msh.c + + msh_cmd.c 1 ..\..\components\finsh\msh_cmd.c + + msh_file.c 1 ..\..\components\finsh\msh_file.c + + finsh_compiler.c 1 ..\..\components\finsh\finsh_compiler.c + + finsh_error.c 1 ..\..\components\finsh\finsh_error.c + + finsh_heap.c 1 ..\..\components\finsh\finsh_heap.c + + finsh_init.c 1 ..\..\components\finsh\finsh_init.c + + finsh_node.c 1 ..\..\components\finsh\finsh_node.c + + finsh_ops.c 1 ..\..\components\finsh\finsh_ops.c + + finsh_parser.c 1 ..\..\components\finsh\finsh_parser.c + + finsh_var.c 1 ..\..\components\finsh\finsh_var.c + + finsh_vm.c 1 ..\..\components\finsh\finsh_vm.c + + finsh_token.c 1 @@ -910,27 +1082,42 @@ 1 ..\..\components\libc\compilers\armlibc\libc.c + + mem_std.c 1 ..\..\components\libc\compilers\armlibc\mem_std.c + + stdio.c 1 ..\..\components\libc\compilers\armlibc\stdio.c + + stubs.c 1 ..\..\components\libc\compilers\armlibc\stubs.c + + time.c 1 ..\..\components\libc\compilers\armlibc\time.c + + + gmtime_r.c + 1 + ..\..\components\libc\compilers\common\gmtime_r.c + + lwIP @@ -940,211 +1127,308 @@ 1 ..\..\components\net\lwip-2.0.2\src\arch\sys_arch.c + + api_lib.c 1 ..\..\components\net\lwip-2.0.2\src\api\api_lib.c + + api_msg.c 1 ..\..\components\net\lwip-2.0.2\src\api\api_msg.c + + err.c 1 ..\..\components\net\lwip-2.0.2\src\api\err.c + + netbuf.c 1 ..\..\components\net\lwip-2.0.2\src\api\netbuf.c + + netdb.c 1 ..\..\components\net\lwip-2.0.2\src\api\netdb.c + + netifapi.c 1 ..\..\components\net\lwip-2.0.2\src\api\netifapi.c + + sockets.c 1 ..\..\components\net\lwip-2.0.2\src\api\sockets.c + + tcpip.c 1 ..\..\components\net\lwip-2.0.2\src\api\tcpip.c + + def.c 1 ..\..\components\net\lwip-2.0.2\src\core\def.c + + dns.c 1 ..\..\components\net\lwip-2.0.2\src\core\dns.c + + inet_chksum.c 1 ..\..\components\net\lwip-2.0.2\src\core\inet_chksum.c + + init.c 1 ..\..\components\net\lwip-2.0.2\src\core\init.c + + ip.c 1 ..\..\components\net\lwip-2.0.2\src\core\ip.c + + memp.c 1 ..\..\components\net\lwip-2.0.2\src\core\memp.c + + netif.c 1 ..\..\components\net\lwip-2.0.2\src\core\netif.c + + pbuf.c 1 ..\..\components\net\lwip-2.0.2\src\core\pbuf.c + + raw.c 1 ..\..\components\net\lwip-2.0.2\src\core\raw.c + + stats.c 1 ..\..\components\net\lwip-2.0.2\src\core\stats.c + + sys.c 1 ..\..\components\net\lwip-2.0.2\src\core\sys.c + + tcp.c 1 ..\..\components\net\lwip-2.0.2\src\core\tcp.c + + tcp_in.c 1 ..\..\components\net\lwip-2.0.2\src\core\tcp_in.c + + tcp_out.c 1 ..\..\components\net\lwip-2.0.2\src\core\tcp_out.c + + timeouts.c 1 ..\..\components\net\lwip-2.0.2\src\core\timeouts.c + + udp.c 1 ..\..\components\net\lwip-2.0.2\src\core\udp.c + + ethernet.c 1 ..\..\components\net\lwip-2.0.2\src\netif\ethernet.c + + ethernetif.c 1 ..\..\components\net\lwip-2.0.2\src\netif\ethernetif.c + + lowpan6.c 1 ..\..\components\net\lwip-2.0.2\src\netif\lowpan6.c + + autoip.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\autoip.c + + dhcp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\dhcp.c + + etharp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\etharp.c + + icmp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\icmp.c + + igmp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\igmp.c + + ip4.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4.c + + ip4_addr.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_addr.c + + ip4_frag.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_frag.c + + + ping.c + 1 + ..\..\components\net\lwip-2.0.2\src\apps\ping\ping.c + + + + + netdev + + + netdev.c + 1 + ..\..\components\net\netdev\src\netdev.c + + + + + netdev_ipaddr.c + 1 + ..\..\components\net\netdev\src\netdev_ipaddr.c + + SAL - - sal_ipaddr.c - 1 - ..\..\components\net\sal_socket\src\sal_ipaddr.c - sal_socket.c 1 ..\..\components\net\sal_socket\src\sal_socket.c + + net_netdb.c 1 ..\..\components\net\sal_socket\socket\net_netdb.c + + af_inet_lwip.c 1 ..\..\components\net\sal_socket\impl\af_inet_lwip.c + + net_sockets.c 1 ..\..\components\net\sal_socket\socket\net_sockets.c + + dfs_net.c 1 @@ -1155,5 +1439,4 @@ -
diff --git a/bsp/gd32450z-eval/project.uvprojx b/bsp/gd32450z-eval/project.uvprojx index 9937bd77c5..9f5e651cf8 100644 --- a/bsp/gd32450z-eval/project.uvprojx +++ b/bsp/gd32450z-eval/project.uvprojx @@ -1,16 +1,12 @@ - 2.1 -
### uVision Project, (C) Keil Software
- rt-thread_gd32f4xx 0x4 ARM-ADS - 5060750::V5.06 update 6 (build 750)::ARMCC 0 @@ -19,28 +15,28 @@ GigaDevice.GD32F4xx_DFP.1.0.1 http://gd32mcu.21ic.com/data/documents/yingyongruanjian/GD32F4 IRAM(0x20000000,0x030000) IRAM2(0x10000000,0x010000) IROM(0x08000000,0x0300000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE - - + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0GD32F4xx_3MB -FS08000000 -FL0300000 -FP0($$Device:GD32F450ZK$Flash\GD32F4xx_3MB.FLM)) 0 $$Device:GD32F450ZK$Device\Include\gd32f4xx.h - - - - - - - - - + + + + + + + + + $$Device:GD32F450ZK$SVD\GD32F4xx.svd 0 0 - - - - - + + + + + 0 0 @@ -62,8 +58,8 @@ 0 0 - - + + 0 0 0 @@ -72,8 +68,8 @@ 0 0 - - + + 0 0 0 @@ -83,14 +79,14 @@ 1 0 fromelf --bin !L --output rtthread.bin - + 0 0 0 0 0 - + 0 @@ -104,8 +100,8 @@ 0 0 3 - - + + 1 @@ -138,11 +134,11 @@ 1 BIN\UL2CM3.DLL - - - - - + + + + + 0 @@ -175,7 +171,7 @@ 0 0 "Cortex-M4" - + 0 0 0 @@ -307,7 +303,7 @@ 0x10000 - + 1 @@ -334,10 +330,10 @@ 0 0 - + GD32F4XX, RT_USING_ARM_LIBC, USE_STDPERIPH_DRIVER - - applications;.;drivers;Libraries\CMSIS\GD\GD32F4xx\Include;Libraries\CMSIS;Libraries\GD32F4xx_standard_peripheral\Include;..\..\include;..\..\libcpu\arm\cortex-m4;..\..\libcpu\arm\common;..\..\components\dfs\include;..\..\components\dfs\filesystems\devfs;..\..\components\dfs\filesystems\elmfat;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\finsh;..\..\components\libc\compilers\armlibc;..\..\components\net\lwip-2.0.2\src;..\..\components\net\lwip-2.0.2\src\include;..\..\components\net\lwip-2.0.2\src\include\ipv4;..\..\components\net\lwip-2.0.2\src\arch\include;..\..\components\net\lwip-2.0.2\src\include\netif;..\..\components\net\sal_socket\include;..\..\components\net\sal_socket\include\socket;..\..\components\net\sal_socket\impl;..\..\components\net\sal_socket\include\dfs_net;..\..\components\net\sal_socket\include\dfs_net\sys_select;..\..\components\net\sal_socket\include\socket\sys_socket + + .;..\..\include;applications;.;drivers;Libraries\CMSIS\GD\GD32F4xx\Include;Libraries\CMSIS;Libraries\GD32F4xx_standard_peripheral\Include;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m4;..\..\components\dfs\include;..\..\components\dfs\filesystems\devfs;..\..\components\dfs\filesystems\elmfat;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\finsh;..\..\components\libc\compilers\armlibc;..\..\components\libc\compilers\common;..\..\components\net\lwip-2.0.2\src;..\..\components\net\lwip-2.0.2\src\include;..\..\components\net\lwip-2.0.2\src\include\ipv4;..\..\components\net\lwip-2.0.2\src\arch\include;..\..\components\net\lwip-2.0.2\src\include\netif;..\..\components\net\netdev\include;..\..\components\net\sal_socket\include;..\..\components\net\sal_socket\include\socket;..\..\components\net\sal_socket\impl;..\..\components\net\sal_socket\include\dfs_net;..\..\components\net\sal_socket\include\dfs_net\sys_select;..\..\components\net\sal_socket\include\socket\sys_socket @@ -352,10 +348,10 @@ 0 0 - - - - + + + + @@ -367,17 +363,125 @@ 0 0x08000000 0x20000000 - + .\gd32_rom.ld - - - --keep *.o(.rti_fn.*) --keep *.o(FSymTab) --keep *.o(VSymTab) - - + + + + + + + Kernel + + + clock.c + 1 + ..\..\src\clock.c + + + + + components.c + 1 + ..\..\src\components.c + + + + + cpu.c + 1 + ..\..\src\cpu.c + + + + + device.c + 1 + ..\..\src\device.c + + + + + idle.c + 1 + ..\..\src\idle.c + + + + + ipc.c + 1 + ..\..\src\ipc.c + + + + + irq.c + 1 + ..\..\src\irq.c + + + + + kservice.c + 1 + ..\..\src\kservice.c + + + + + mem.c + 1 + ..\..\src\mem.c + + + + + mempool.c + 1 + ..\..\src\mempool.c + + + + + object.c + 1 + ..\..\src\object.c + + + + + scheduler.c + 1 + ..\..\src\scheduler.c + + + + + signal.c + 1 + ..\..\src\signal.c + + + + + thread.c + 1 + ..\..\src\thread.c + + + + + timer.c + 1 + ..\..\src\timer.c + + + Applications @@ -396,21 +500,29 @@ 1 drivers\board.c + + drv_usart.c 1 drivers\drv_usart.c + + drv_exmc_sdram.c 1 drivers\drv_exmc_sdram.c + + drv_enet.c 1 drivers\drv_enet.c + + synopsys_emac.c 1 @@ -426,151 +538,211 @@ 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_adc.c + + gd32f4xx_can.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_can.c + + gd32f4xx_crc.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_crc.c + + gd32f4xx_ctc.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_ctc.c + + gd32f4xx_dac.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_dac.c + + gd32f4xx_dbg.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_dbg.c + + gd32f4xx_dci.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_dci.c + + gd32f4xx_dma.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_dma.c + + gd32f4xx_enet.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_enet.c + + gd32f4xx_exmc.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_exmc.c + + gd32f4xx_exti.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_exti.c + + gd32f4xx_fmc.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_fmc.c + + gd32f4xx_fwdgt.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_fwdgt.c + + gd32f4xx_gpio.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_gpio.c + + gd32f4xx_i2c.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_i2c.c + + gd32f4xx_ipa.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_ipa.c + + gd32f4xx_iref.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_iref.c + + gd32f4xx_misc.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_misc.c + + gd32f4xx_pmu.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_pmu.c + + gd32f4xx_rcu.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_rcu.c + + gd32f4xx_rtc.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_rtc.c + + gd32f4xx_sdio.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_sdio.c + + gd32f4xx_spi.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_spi.c + + gd32f4xx_syscfg.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_syscfg.c + + gd32f4xx_timer.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_timer.c + + gd32f4xx_tli.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_tli.c + + gd32f4xx_trng.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_trng.c + + gd32f4xx_usart.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_usart.c + + gd32f4xx_wwdgt.c 1 Libraries\GD32F4xx_standard_peripheral\Source\gd32f4xx_wwdgt.c + + system_gd32f4xx.c 1 Libraries\CMSIS\GD\GD32F4xx\Source\system_gd32f4xx.c + + startup_gd32f4xx.s 2 @@ -579,108 +751,41 @@ - Kernel + cpu - clock.c + backtrace.c 1 - ..\..\src\clock.c - - - components.c - 1 - ..\..\src\components.c - - - device.c - 1 - ..\..\src\device.c - - - idle.c - 1 - ..\..\src\idle.c - - - ipc.c - 1 - ..\..\src\ipc.c - - - irq.c - 1 - ..\..\src\irq.c - - - kservice.c - 1 - ..\..\src\kservice.c - - - mem.c - 1 - ..\..\src\mem.c - - - mempool.c - 1 - ..\..\src\mempool.c - - - object.c - 1 - ..\..\src\object.c - - - scheduler.c - 1 - ..\..\src\scheduler.c - - - signal.c - 1 - ..\..\src\signal.c - - - thread.c - 1 - ..\..\src\thread.c - - - timer.c - 1 - ..\..\src\timer.c + ..\..\libcpu\arm\common\backtrace.c + + + + + div0.c + 1 + ..\..\libcpu\arm\common\div0.c + + + + + showmem.c + 1 + ..\..\libcpu\arm\common\showmem.c - - - CORTEX-M4 cpuport.c 1 ..\..\libcpu\arm\cortex-m4\cpuport.c + + context_rvds.S 2 ..\..\libcpu\arm\cortex-m4\context_rvds.S - - backtrace.c - 1 - ..\..\libcpu\arm\common\backtrace.c - - - div0.c - 1 - ..\..\libcpu\arm\common\div0.c - - - showmem.c - 1 - ..\..\libcpu\arm\common\showmem.c - @@ -691,41 +796,57 @@ 1 ..\..\components\dfs\src\dfs.c + + dfs_file.c 1 ..\..\components\dfs\src\dfs_file.c + + dfs_fs.c 1 ..\..\components\dfs\src\dfs_fs.c + + dfs_posix.c 1 ..\..\components\dfs\src\dfs_posix.c + + poll.c 1 ..\..\components\dfs\src\poll.c + + select.c 1 ..\..\components\dfs\src\select.c + + devfs.c 1 ..\..\components\dfs\filesystems\devfs\devfs.c + + dfs_elm.c 1 ..\..\components\dfs\filesystems\elmfat\dfs_elm.c + + ff.c 1 @@ -741,36 +862,57 @@ 1 ..\..\components\drivers\misc\pin.c + + serial.c 1 ..\..\components\drivers\serial\serial.c + + completion.c 1 ..\..\components\drivers\src\completion.c + + dataqueue.c 1 ..\..\components\drivers\src\dataqueue.c + + pipe.c 1 ..\..\components\drivers\src\pipe.c + + + + ringblk_buf.c + 1 + ..\..\components\drivers\src\ringblk_buf.c + + + ringbuffer.c 1 ..\..\components\drivers\src\ringbuffer.c + + waitqueue.c 1 ..\..\components\drivers\src\waitqueue.c + + workqueue.c 1 @@ -786,76 +928,106 @@ 1 ..\..\components\finsh\shell.c + + symbol.c 1 ..\..\components\finsh\symbol.c + + cmd.c 1 ..\..\components\finsh\cmd.c + + msh.c 1 ..\..\components\finsh\msh.c + + msh_cmd.c 1 ..\..\components\finsh\msh_cmd.c + + msh_file.c 1 ..\..\components\finsh\msh_file.c + + finsh_compiler.c 1 ..\..\components\finsh\finsh_compiler.c + + finsh_error.c 1 ..\..\components\finsh\finsh_error.c + + finsh_heap.c 1 ..\..\components\finsh\finsh_heap.c + + finsh_init.c 1 ..\..\components\finsh\finsh_init.c + + finsh_node.c 1 ..\..\components\finsh\finsh_node.c + + finsh_ops.c 1 ..\..\components\finsh\finsh_ops.c + + finsh_parser.c 1 ..\..\components\finsh\finsh_parser.c + + finsh_var.c 1 ..\..\components\finsh\finsh_var.c + + finsh_vm.c 1 ..\..\components\finsh\finsh_vm.c + + finsh_token.c 1 @@ -871,27 +1043,42 @@ 1 ..\..\components\libc\compilers\armlibc\libc.c + + mem_std.c 1 ..\..\components\libc\compilers\armlibc\mem_std.c + + stdio.c 1 ..\..\components\libc\compilers\armlibc\stdio.c + + stubs.c 1 ..\..\components\libc\compilers\armlibc\stubs.c + + time.c 1 ..\..\components\libc\compilers\armlibc\time.c + + + gmtime_r.c + 1 + ..\..\components\libc\compilers\common\gmtime_r.c + + lwIP @@ -901,211 +1088,308 @@ 1 ..\..\components\net\lwip-2.0.2\src\arch\sys_arch.c + + api_lib.c 1 ..\..\components\net\lwip-2.0.2\src\api\api_lib.c + + api_msg.c 1 ..\..\components\net\lwip-2.0.2\src\api\api_msg.c + + err.c 1 ..\..\components\net\lwip-2.0.2\src\api\err.c + + netbuf.c 1 ..\..\components\net\lwip-2.0.2\src\api\netbuf.c + + netdb.c 1 ..\..\components\net\lwip-2.0.2\src\api\netdb.c + + netifapi.c 1 ..\..\components\net\lwip-2.0.2\src\api\netifapi.c + + sockets.c 1 ..\..\components\net\lwip-2.0.2\src\api\sockets.c + + tcpip.c 1 ..\..\components\net\lwip-2.0.2\src\api\tcpip.c + + def.c 1 ..\..\components\net\lwip-2.0.2\src\core\def.c + + dns.c 1 ..\..\components\net\lwip-2.0.2\src\core\dns.c + + inet_chksum.c 1 ..\..\components\net\lwip-2.0.2\src\core\inet_chksum.c + + init.c 1 ..\..\components\net\lwip-2.0.2\src\core\init.c + + ip.c 1 ..\..\components\net\lwip-2.0.2\src\core\ip.c + + memp.c 1 ..\..\components\net\lwip-2.0.2\src\core\memp.c + + netif.c 1 ..\..\components\net\lwip-2.0.2\src\core\netif.c + + pbuf.c 1 ..\..\components\net\lwip-2.0.2\src\core\pbuf.c + + raw.c 1 ..\..\components\net\lwip-2.0.2\src\core\raw.c + + stats.c 1 ..\..\components\net\lwip-2.0.2\src\core\stats.c + + sys.c 1 ..\..\components\net\lwip-2.0.2\src\core\sys.c + + tcp.c 1 ..\..\components\net\lwip-2.0.2\src\core\tcp.c + + tcp_in.c 1 ..\..\components\net\lwip-2.0.2\src\core\tcp_in.c + + tcp_out.c 1 ..\..\components\net\lwip-2.0.2\src\core\tcp_out.c + + timeouts.c 1 ..\..\components\net\lwip-2.0.2\src\core\timeouts.c + + udp.c 1 ..\..\components\net\lwip-2.0.2\src\core\udp.c + + ethernet.c 1 ..\..\components\net\lwip-2.0.2\src\netif\ethernet.c + + ethernetif.c 1 ..\..\components\net\lwip-2.0.2\src\netif\ethernetif.c + + lowpan6.c 1 ..\..\components\net\lwip-2.0.2\src\netif\lowpan6.c + + autoip.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\autoip.c + + dhcp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\dhcp.c + + etharp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\etharp.c + + icmp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\icmp.c + + igmp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\igmp.c + + ip4.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4.c + + ip4_addr.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_addr.c + + ip4_frag.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_frag.c + + + ping.c + 1 + ..\..\components\net\lwip-2.0.2\src\apps\ping\ping.c + + + + + netdev + + + netdev.c + 1 + ..\..\components\net\netdev\src\netdev.c + + + + + netdev_ipaddr.c + 1 + ..\..\components\net\netdev\src\netdev_ipaddr.c + + SAL - - sal_ipaddr.c - 1 - ..\..\components\net\sal_socket\src\sal_ipaddr.c - sal_socket.c 1 ..\..\components\net\sal_socket\src\sal_socket.c + + net_netdb.c 1 ..\..\components\net\sal_socket\socket\net_netdb.c + + af_inet_lwip.c 1 ..\..\components\net\sal_socket\impl\af_inet_lwip.c + + net_sockets.c 1 ..\..\components\net\sal_socket\socket\net_sockets.c + + dfs_net.c 1 @@ -1113,24 +1397,19 @@ - - ::CMSIS - - - + - + - + - + -
diff --git a/bsp/gd32450z-eval/rtconfig.h b/bsp/gd32450z-eval/rtconfig.h index 42601f4ca9..504c03fc75 100644 --- a/bsp/gd32450z-eval/rtconfig.h +++ b/bsp/gd32450z-eval/rtconfig.h @@ -13,6 +13,7 @@ #define RT_TICK_PER_SECOND 100 #define RT_USING_OVERFLOW_CHECK #define RT_USING_HOOK +#define RT_USING_IDLE_HOOK #define RT_IDEL_HOOK_LIST_SIZE 4 #define IDLE_THREAD_STACK_SIZE 256 #define RT_DEBUG @@ -38,12 +39,14 @@ #define RT_USING_CONSOLE #define RT_CONSOLEBUF_SIZE 128 #define RT_CONSOLE_DEVICE_NAME "uart0" +#define RT_VER_NUM 0x40001 /* RT-Thread Components */ #define RT_USING_COMPONENTS_INIT #define RT_USING_USER_MAIN #define RT_MAIN_THREAD_STACK_SIZE 2048 +#define RT_MAIN_THREAD_PRIORITY 10 /* C++ features */ @@ -88,10 +91,17 @@ #define RT_USING_DEVICE_IPC #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_SERIAL_USING_DMA +#define RT_SERIAL_RB_BUFSZ 64 #define RT_USING_PIN +/* Using WiFi */ + + /* Using USB */ @@ -110,7 +120,13 @@ #define SAL_USING_LWIP #define SAL_USING_POSIX -#define SAL_PROTO_FAMILIES_NUM 4 + +/* Network interface device */ + +#define RT_USING_NETDEV +#define NETDEV_USING_IFCONFIG +#define NETDEV_USING_PING +#define NETDEV_USING_NETSTAT /* light weight TCP/IP stack */ @@ -130,6 +146,7 @@ #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 @@ -145,15 +162,20 @@ #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_NETIF_LOOPBACK 0 +#define RT_LWIP_USING_PING /* Modbus master and slave stack */ +/* AT commands */ + + /* VBUS(Virtual Software BUS) */ @@ -173,6 +195,9 @@ /* Wiced WiFi */ +/* IoT Cloud */ + + /* security packages */ @@ -194,10 +219,7 @@ /* miscellaneous packages */ -/* sample package */ - - -/* example package: hello */ +/* samples: kernel and components samples */ #define BSP_USING_SDRAM #define BSP_USING_UART0 diff --git a/bsp/imx6sx/cortex-a9/.config b/bsp/imx6sx/cortex-a9/.config index a43422d533..3387906840 100644 --- a/bsp/imx6sx/cortex-a9/.config +++ b/bsp/imx6sx/cortex-a9/.config @@ -7,6 +7,8 @@ # RT-Thread Kernel # CONFIG_RT_NAME_MAX=8 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_SMP is not set CONFIG_RT_ALIGN_SIZE=4 # CONFIG_RT_THREAD_PRIORITY_8 is not set CONFIG_RT_THREAD_PRIORITY_32=y @@ -15,6 +17,7 @@ CONFIG_RT_THREAD_PRIORITY_MAX=32 CONFIG_RT_TICK_PER_SECOND=100 CONFIG_RT_USING_OVERFLOW_CHECK=y CONFIG_RT_USING_HOOK=y +CONFIG_RT_USING_IDLE_HOOK=y CONFIG_RT_IDEL_HOOK_LIST_SIZE=4 CONFIG_IDLE_THREAD_STACK_SIZE=256 # CONFIG_RT_USING_TIMER_SOFT is not set @@ -61,6 +64,8 @@ CONFIG_RT_USING_DEVICE=y CONFIG_RT_USING_CONSOLE=y CONFIG_RT_CONSOLEBUF_SIZE=128 CONFIG_RT_CONSOLE_DEVICE_NAME="uart1" +CONFIG_RT_VER_NUM=0x40001 +# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set # # RT-Thread Components @@ -116,22 +121,34 @@ CONFIG_RT_USING_DFS_DEVFS=y # CONFIG_RT_USING_DEVICE_IPC=y CONFIG_RT_PIPE_BUFSZ=512 +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_SERIAL_USING_DMA=y +CONFIG_RT_SERIAL_RB_BUFSZ=64 # CONFIG_RT_USING_CAN is not set # CONFIG_RT_USING_HWTIMER is not set # CONFIG_RT_USING_CPUTIME is not set # CONFIG_RT_USING_I2C is not set CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_ADC is not set # CONFIG_RT_USING_PWM is not set # CONFIG_RT_USING_MTD_NOR is not set # CONFIG_RT_USING_MTD_NAND is not set +# CONFIG_RT_USING_MTD is not set +# CONFIG_RT_USING_PM is not set # CONFIG_RT_USING_RTC is not set # CONFIG_RT_USING_SDIO is not set # CONFIG_RT_USING_SPI is not set # CONFIG_RT_USING_WDT is not set -# CONFIG_RT_USING_WIFI is not set # CONFIG_RT_USING_AUDIO is not set +# CONFIG_RT_USING_SENSOR is not set + +# +# Using WiFi +# +# CONFIG_RT_USING_WIFI is not set # # Using USB @@ -165,7 +182,14 @@ CONFIG_RT_USING_SAL=y CONFIG_SAL_USING_LWIP=y # CONFIG_SAL_USING_POSIX is not set CONFIG_SAL_SOCKETS_NUM=16 -CONFIG_SAL_PROTO_FAMILIES_NUM=4 + +# +# Network interface device +# +CONFIG_RT_USING_NETDEV=y +CONFIG_NETDEV_USING_IFCONFIG=y +CONFIG_NETDEV_USING_PING=y +CONFIG_NETDEV_USING_NETSTAT=y # # light weight TCP/IP stack @@ -173,7 +197,7 @@ CONFIG_SAL_PROTO_FAMILIES_NUM=4 CONFIG_RT_USING_LWIP=y # CONFIG_RT_USING_LWIP141 is not set CONFIG_RT_USING_LWIP202=y -# CONFIG_RT_USING_LWIP_IPV6 is not set +# CONFIG_RT_USING_LWIP210 is not set CONFIG_RT_LWIP_IGMP=y CONFIG_RT_LWIP_ICMP=y # CONFIG_RT_LWIP_SNMP is not set @@ -190,7 +214,7 @@ 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 is not set +CONFIG_RT_LWIP_RAW=y # CONFIG_RT_LWIP_PPP is not set CONFIG_RT_MEMP_NUM_NETCONN=8 CONFIG_RT_LWIP_PBUF_NUM=16 @@ -210,6 +234,7 @@ 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 @@ -217,6 +242,8 @@ CONFIG_LWIP_SO_RCVBUF=1 # 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 # @@ -240,6 +267,8 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # # CONFIG_RT_USING_LOGTRACE is not set # CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set # # RT-Thread online packages @@ -250,10 +279,12 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # # CONFIG_PKG_USING_PAHOMQTT is not set # CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_WEBNET is not set # CONFIG_PKG_USING_MONGOOSE is not set # CONFIG_PKG_USING_WEBTERMINAL is not set # CONFIG_PKG_USING_CJSON is not set # CONFIG_PKG_USING_JSMN is not set +# CONFIG_PKG_USING_LIBMODBUS is not set # CONFIG_PKG_USING_LJSON is not set # CONFIG_PKG_USING_EZXML is not set # CONFIG_PKG_USING_NANOPB is not set @@ -271,10 +302,12 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # Wiced WiFi # # CONFIG_PKG_USING_WLAN_WICED is not set +# CONFIG_PKG_USING_RW007 is not set # CONFIG_PKG_USING_COAP is not set # CONFIG_PKG_USING_NOPOLL is not set # CONFIG_PKG_USING_NETUTILS is not set # CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_WIZNET is not set # # IoT Cloud @@ -282,6 +315,10 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # CONFIG_PKG_USING_ONENET is not set # CONFIG_PKG_USING_GAGENT_CLOUD is not set # CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOTKIT is not set +# CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_OTA_DOWNLOADER is not set # # security packages @@ -302,6 +339,7 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # # CONFIG_PKG_USING_OPENMV is not set # CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set # # tools packages @@ -310,6 +348,10 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # CONFIG_PKG_USING_EASYFLASH is not set # CONFIG_PKG_USING_EASYLOGGER is not set # CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_RDB is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_ULOG_EASYFLASH is not set +# CONFIG_PKG_USING_ADBD is not set # # system packages @@ -323,13 +365,32 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # CONFIG_PKG_USING_SQLITE is not set # CONFIG_PKG_USING_RTI is not set # CONFIG_PKG_USING_LITTLEVGL2RTT is not set +# CONFIG_PKG_USING_CMSIS is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_THREAD_POOL is not set # # peripheral libraries and drivers # -# CONFIG_PKG_USING_STM32F4_HAL is not set -# CONFIG_PKG_USING_STM32F4_DRIVERS is not set +# CONFIG_PKG_USING_SENSORS_DRIVERS is not set # CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_AHT10 is not set +# CONFIG_PKG_USING_AP3216C is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_U8G2 is not set +# CONFIG_PKG_USING_BUTTON is not set +# CONFIG_PKG_USING_MPU6XXX is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_WM_LIBRARIES is not set +# CONFIG_PKG_USING_KENDRYTE_SDK is not set +# CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_AT24CXX is not set # # miscellaneous packages @@ -343,14 +404,17 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # CONFIG_PKG_USING_CANFESTIVAL is not set # CONFIG_PKG_USING_ZLIB is not set # CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set # -# sample package -# -# CONFIG_PKG_USING_SAMPLES is not set - -# -# example package: hello +# samples: kernel and components samples # +# CONFIG_PKG_USING_KERNEL_SAMPLES is not set +# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set +# CONFIG_PKG_USING_NETWORK_SAMPLES is not set +# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set # CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_NNOM is not set CONFIG_RT_USING_UART1=y diff --git a/bsp/imx6sx/cortex-a9/rtconfig.h b/bsp/imx6sx/cortex-a9/rtconfig.h index f11ddac2a1..154eabfc4a 100644 --- a/bsp/imx6sx/cortex-a9/rtconfig.h +++ b/bsp/imx6sx/cortex-a9/rtconfig.h @@ -13,6 +13,7 @@ #define RT_TICK_PER_SECOND 100 #define RT_USING_OVERFLOW_CHECK #define RT_USING_HOOK +#define RT_USING_IDLE_HOOK #define RT_IDEL_HOOK_LIST_SIZE 4 #define IDLE_THREAD_STACK_SIZE 256 #define RT_DEBUG @@ -38,6 +39,7 @@ #define RT_USING_CONSOLE #define RT_CONSOLEBUF_SIZE 128 #define RT_CONSOLE_DEVICE_NAME "uart1" +#define RT_VER_NUM 0x40001 /* RT-Thread Components */ @@ -77,10 +79,17 @@ #define RT_USING_DEVICE_IPC #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_SERIAL_USING_DMA +#define RT_SERIAL_RB_BUFSZ 64 #define RT_USING_PIN +/* Using WiFi */ + + /* Using USB */ @@ -99,7 +108,13 @@ #define SAL_USING_LWIP #define SAL_SOCKETS_NUM 16 -#define SAL_PROTO_FAMILIES_NUM 4 + +/* Network interface device */ + +#define RT_USING_NETDEV +#define NETDEV_USING_IFCONFIG +#define NETDEV_USING_PING +#define NETDEV_USING_NETSTAT /* light weight TCP/IP stack */ @@ -119,6 +134,7 @@ #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 @@ -134,11 +150,13 @@ #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_NETIF_LOOPBACK 0 +#define RT_LWIP_USING_PING /* Modbus master and slave stack */ @@ -189,10 +207,7 @@ /* miscellaneous packages */ -/* sample package */ - - -/* example package: hello */ +/* samples: kernel and components samples */ #define RT_USING_UART1 diff --git a/bsp/lpc54608-LPCXpresso/.config b/bsp/lpc54608-LPCXpresso/.config index f793185bda..e1d4547ff0 100644 --- a/bsp/lpc54608-LPCXpresso/.config +++ b/bsp/lpc54608-LPCXpresso/.config @@ -7,6 +7,8 @@ # RT-Thread Kernel # CONFIG_RT_NAME_MAX=8 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_SMP is not set CONFIG_RT_ALIGN_SIZE=4 # CONFIG_RT_THREAD_PRIORITY_8 is not set CONFIG_RT_THREAD_PRIORITY_32=y @@ -15,6 +17,7 @@ CONFIG_RT_THREAD_PRIORITY_MAX=32 CONFIG_RT_TICK_PER_SECOND=1000 CONFIG_RT_USING_OVERFLOW_CHECK=y CONFIG_RT_USING_HOOK=y +CONFIG_RT_USING_IDLE_HOOK=y CONFIG_RT_IDEL_HOOK_LIST_SIZE=4 CONFIG_IDLE_THREAD_STACK_SIZE=256 CONFIG_RT_USING_TIMER_SOFT=y @@ -64,10 +67,11 @@ CONFIG_RT_USING_DEVICE=y CONFIG_RT_USING_CONSOLE=y CONFIG_RT_CONSOLEBUF_SIZE=128 CONFIG_RT_CONSOLE_DEVICE_NAME="uart0" -CONFIG_RT_USING_MODULE=y +CONFIG_RT_VER_NUM=0x40001 CONFIG_ARCH_ARM=y CONFIG_ARCH_ARM_CORTEX_M=y CONFIG_ARCH_ARM_CORTEX_M4=y +# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set # # RT-Thread Components @@ -107,6 +111,7 @@ CONFIG_DFS_USING_WORKDIR=y CONFIG_DFS_FILESYSTEMS_MAX=2 CONFIG_DFS_FILESYSTEM_TYPES_MAX=2 CONFIG_DFS_FD_MAX=16 +# CONFIG_RT_USING_DFS_MNTTABLE is not set CONFIG_RT_USING_DFS_ELMFAT=y # @@ -136,28 +141,37 @@ CONFIG_RT_USING_DFS_DEVFS=y # CONFIG_RT_USING_DEVICE_IPC=y CONFIG_RT_PIPE_BUFSZ=512 +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_SERIAL_USING_DMA=y +CONFIG_RT_SERIAL_RB_BUFSZ=64 # CONFIG_RT_USING_CAN is not set # CONFIG_RT_USING_HWTIMER is not set # CONFIG_RT_USING_CPUTIME is not set CONFIG_RT_USING_I2C=y CONFIG_RT_USING_I2C_BITOPS=y CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_ADC is not set # CONFIG_RT_USING_PWM is not set # CONFIG_RT_USING_MTD_NOR is not set CONFIG_RT_USING_MTD_NAND=y # CONFIG_RT_MTD_NAND_DEBUG is not set +# CONFIG_RT_USING_MTD is not set +# CONFIG_RT_USING_PM is not set CONFIG_RT_USING_RTC=y +# CONFIG_RT_USING_ALARM is not set # CONFIG_RT_USING_SOFT_RTC is not set -# CONFIG_RTC_SYNC_USING_NTP is not set CONFIG_RT_USING_SDIO=y CONFIG_RT_SDIO_STACK_SIZE=512 CONFIG_RT_SDIO_THREAD_PRIORITY=15 CONFIG_RT_MMCSD_STACK_SIZE=1024 CONFIG_RT_MMCSD_THREAD_PREORITY=22 CONFIG_RT_MMCSD_MAX_PARTITION=16 +# CONFIG_RT_SDIO_DEBUG is not set CONFIG_RT_USING_SPI=y +# CONFIG_RT_USING_QSPI is not set # CONFIG_RT_USING_SPI_MSD is not set # CONFIG_RT_USING_SFUD is not set # CONFIG_RT_USING_W25QXX is not set @@ -165,8 +179,13 @@ CONFIG_RT_USING_SPI=y # CONFIG_RT_USING_ENC28J60 is not set # CONFIG_RT_USING_SPI_WIFI is not set # CONFIG_RT_USING_WDT is not set -# CONFIG_RT_USING_WIFI is not set # CONFIG_RT_USING_AUDIO is not set +# CONFIG_RT_USING_SENSOR is not set + +# +# Using WiFi +# +# CONFIG_RT_USING_WIFI is not set # # Using USB @@ -183,8 +202,7 @@ CONFIG_RT_USING_POSIX=y # CONFIG_RT_USING_POSIX_MMAP is not set # CONFIG_RT_USING_POSIX_TERMIOS is not set # CONFIG_RT_USING_POSIX_AIO is not set -# CONFIG_RT_USING_LIBDL is not set -# CONFIG_RT_USING_LWP is not set +# CONFIG_RT_USING_MODULE is not set # # Network @@ -200,7 +218,14 @@ CONFIG_RT_USING_SAL=y # CONFIG_SAL_USING_LWIP=y CONFIG_SAL_USING_POSIX=y -CONFIG_SAL_PROTO_FAMILIES_NUM=4 + +# +# Network interface device +# +CONFIG_RT_USING_NETDEV=y +CONFIG_NETDEV_USING_IFCONFIG=y +CONFIG_NETDEV_USING_PING=y +CONFIG_NETDEV_USING_NETSTAT=y # # light weight TCP/IP stack @@ -208,7 +233,7 @@ CONFIG_SAL_PROTO_FAMILIES_NUM=4 CONFIG_RT_USING_LWIP=y # CONFIG_RT_USING_LWIP141 is not set CONFIG_RT_USING_LWIP202=y -# CONFIG_RT_USING_LWIP_IPV6 is not set +# CONFIG_RT_USING_LWIP210 is not set # CONFIG_RT_LWIP_IGMP is not set CONFIG_RT_LWIP_ICMP=y # CONFIG_RT_LWIP_SNMP is not set @@ -225,7 +250,7 @@ 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 is not set +CONFIG_RT_LWIP_RAW=y # CONFIG_RT_LWIP_PPP is not set CONFIG_RT_MEMP_NUM_NETCONN=8 CONFIG_RT_LWIP_PBUF_NUM=16 @@ -245,17 +270,27 @@ 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_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 # # Modbus master and slave stack # # CONFIG_RT_USING_MODBUS is not set + +# +# AT commands +# +# CONFIG_RT_USING_AT is not set # CONFIG_LWIP_USING_DHCPD is not set # @@ -268,12 +303,9 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # # CONFIG_RT_USING_LOGTRACE is not set # CONFIG_RT_USING_RYM is not set - -# -# ARM CMSIS -# -# CONFIG_RT_USING_CMSIS_OS is not set -# CONFIG_RT_USING_RTT_CMSIS is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set +# CONFIG_RT_USING_LWP is not set # # RT-Thread online packages @@ -284,14 +316,15 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # # CONFIG_PKG_USING_PAHOMQTT is not set # CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_WEBNET is not set # CONFIG_PKG_USING_MONGOOSE is not set # CONFIG_PKG_USING_WEBTERMINAL is not set # CONFIG_PKG_USING_CJSON is not set # CONFIG_PKG_USING_JSMN is not set +# CONFIG_PKG_USING_LIBMODBUS is not set # CONFIG_PKG_USING_LJSON is not set # CONFIG_PKG_USING_EZXML is not set # CONFIG_PKG_USING_NANOPB is not set -# CONFIG_PKG_USING_GAGENT_CLOUD is not set # # Wi-Fi @@ -306,11 +339,23 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # Wiced WiFi # # CONFIG_PKG_USING_WLAN_WICED is not set +# CONFIG_PKG_USING_RW007 is not set # CONFIG_PKG_USING_COAP is not set # CONFIG_PKG_USING_NOPOLL is not set # CONFIG_PKG_USING_NETUTILS is not set -# CONFIG_PKG_USING_ONENET is not set # CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_WIZNET is not set + +# +# IoT Cloud +# +# CONFIG_PKG_USING_ONENET is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set +# CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOTKIT is not set +# CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_OTA_DOWNLOADER is not set # # security packages @@ -331,6 +376,7 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # # CONFIG_PKG_USING_OPENMV is not set # CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set # # tools packages @@ -339,6 +385,10 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # CONFIG_PKG_USING_EASYFLASH is not set # CONFIG_PKG_USING_EASYLOGGER is not set # CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_RDB is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_ULOG_EASYFLASH is not set +# CONFIG_PKG_USING_ADBD is not set # # system packages @@ -353,17 +403,37 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # CONFIG_PKG_USING_SQLITE is not set # CONFIG_PKG_USING_RTI is not set # CONFIG_PKG_USING_LITTLEVGL2RTT is not set +# CONFIG_PKG_USING_CMSIS is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_THREAD_POOL is not set # # peripheral libraries and drivers # -# CONFIG_PKG_USING_STM32F4_HAL is not set -# CONFIG_PKG_USING_STM32F4_DRIVERS is not set +# CONFIG_PKG_USING_SENSORS_DRIVERS is not set # CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_AHT10 is not set +# CONFIG_PKG_USING_AP3216C is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_U8G2 is not set +# CONFIG_PKG_USING_BUTTON is not set +# CONFIG_PKG_USING_MPU6XXX is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_WM_LIBRARIES is not set +# CONFIG_PKG_USING_KENDRYTE_SDK is not set +# CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_AT24CXX is not set # # miscellaneous packages # +# CONFIG_PKG_USING_LIBCSV is not set # CONFIG_PKG_USING_OPTPARSE is not set # CONFIG_PKG_USING_FASTLZ is not set # CONFIG_PKG_USING_MINILZO is not set @@ -372,16 +442,19 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # CONFIG_PKG_USING_CANFESTIVAL is not set # CONFIG_PKG_USING_ZLIB is not set # CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set # -# sample package -# -# CONFIG_PKG_USING_SAMPLES is not set - -# -# example package: hello +# samples: kernel and components samples # +# CONFIG_PKG_USING_KERNEL_SAMPLES is not set +# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set +# CONFIG_PKG_USING_NETWORK_SAMPLES is not set +# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set # CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_NNOM is not set CONFIG_SOC_LPC54608=y CONFIG_RT_USING_UART0=y CONFIG_BSP_DRV_SDCARD=y diff --git a/bsp/lpc54608-LPCXpresso/project.uvoptx b/bsp/lpc54608-LPCXpresso/project.uvoptx index ea669a615e..806afb63da 100644 --- a/bsp/lpc54608-LPCXpresso/project.uvoptx +++ b/bsp/lpc54608-LPCXpresso/project.uvoptx @@ -181,7 +181,7 @@ - Libraries + Kernel 0 0 0 @@ -193,8 +193,8 @@ 0 0 0 - SDK_2.2_LPCXpresso54608/sdmmc_2.1.2/src/fsl_sd.c - fsl_sd.c + ..\..\src\clock.c + clock.c 0 0 @@ -205,8 +205,8 @@ 0 0 0 - SDK_2.2_LPCXpresso54608/sdmmc_2.1.2/src/fsl_sdmmc.c - fsl_sdmmc.c + ..\..\src\components.c + components.c 0 0 @@ -217,8 +217,8 @@ 0 0 0 - SDK_2.2_LPCXpresso54608/sdmmc_2.1.2/src/fsl_host.c - fsl_host.c + ..\..\src\cpu.c + cpu.c 0 0 @@ -229,8 +229,8 @@ 0 0 0 - SDK_2.2_LPCXpresso54608/sdmmc_2.1.2/src/fsl_sd_event.c - fsl_sd_event.c + ..\..\src\device.c + device.c 0 0 @@ -241,8 +241,8 @@ 0 0 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_adc.c - fsl_adc.c + ..\..\src\idle.c + idle.c 0 0 @@ -253,8 +253,8 @@ 0 0 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_clock.c - fsl_clock.c + ..\..\src\ipc.c + ipc.c 0 0 @@ -265,8 +265,8 @@ 0 0 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_common.c - fsl_common.c + ..\..\src\irq.c + irq.c 0 0 @@ -277,8 +277,8 @@ 0 0 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_crc.c - fsl_crc.c + ..\..\src\kservice.c + kservice.c 0 0 @@ -289,8 +289,8 @@ 0 0 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_ctimer.c - fsl_ctimer.c + ..\..\src\mem.c + mem.c 0 0 @@ -301,8 +301,8 @@ 0 0 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_dma.c - fsl_dma.c + ..\..\src\memheap.c + memheap.c 0 0 @@ -313,8 +313,8 @@ 0 0 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_dmic.c - fsl_dmic.c + ..\..\src\mempool.c + mempool.c 0 0 @@ -325,8 +325,8 @@ 0 0 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_dmic_dma.c - fsl_dmic_dma.c + ..\..\src\object.c + object.c 0 0 @@ -337,8 +337,8 @@ 0 0 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_eeprom.c - fsl_eeprom.c + ..\..\src\scheduler.c + scheduler.c 0 0 @@ -349,8 +349,8 @@ 0 0 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_emc.c - fsl_emc.c + ..\..\src\signal.c + signal.c 0 0 @@ -361,8 +361,8 @@ 0 0 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_enet.c - fsl_enet.c + ..\..\src\thread.c + thread.c 0 0 @@ -373,388 +373,52 @@ 0 0 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_flashiap.c - fsl_flashiap.c - 0 - 0 - - - 1 - 17 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_flexcomm.c - fsl_flexcomm.c - 0 - 0 - - - 1 - 18 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_fmc.c - fsl_fmc.c - 0 - 0 - - - 1 - 19 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_fmeas.c - fsl_fmeas.c - 0 - 0 - - - 1 - 20 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_gint.c - fsl_gint.c - 0 - 0 - - - 1 - 21 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_gpio.c - fsl_gpio.c - 0 - 0 - - - 1 - 22 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_i2c.c - fsl_i2c.c - 0 - 0 - - - 1 - 23 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_i2c_dma.c - fsl_i2c_dma.c - 0 - 0 - - - 1 - 24 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_i2s.c - fsl_i2s.c - 0 - 0 - - - 1 - 25 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_i2s_dma.c - fsl_i2s_dma.c - 0 - 0 - - - 1 - 26 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_inputmux.c - fsl_inputmux.c - 0 - 0 - - - 1 - 27 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_lcdc.c - fsl_lcdc.c - 0 - 0 - - - 1 - 28 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_mcan.c - fsl_mcan.c - 0 - 0 - - - 1 - 29 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_mrt.c - fsl_mrt.c - 0 - 0 - - - 1 - 30 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_pint.c - fsl_pint.c - 0 - 0 - - - 1 - 31 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_power.c - fsl_power.c - 0 - 0 - - - 1 - 32 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_reset.c - fsl_reset.c - 0 - 0 - - - 1 - 33 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_rit.c - fsl_rit.c - 0 - 0 - - - 1 - 34 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_rtc.c - fsl_rtc.c - 0 - 0 - - - 1 - 35 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_sctimer.c - fsl_sctimer.c - 0 - 0 - - - 1 - 36 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_sdif.c - fsl_sdif.c - 0 - 0 - - - 1 - 37 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_spi.c - fsl_spi.c - 0 - 0 - - - 1 - 38 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_spi_dma.c - fsl_spi_dma.c - 0 - 0 - - - 1 - 39 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_spifi.c - fsl_spifi.c - 0 - 0 - - - 1 - 40 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_spifi_dma.c - fsl_spifi_dma.c - 0 - 0 - - - 1 - 41 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_usart.c - fsl_usart.c - 0 - 0 - - - 1 - 42 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_usart_dma.c - fsl_usart_dma.c - 0 - 0 - - - 1 - 43 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_utick.c - fsl_utick.c - 0 - 0 - - - 1 - 44 - 1 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/drivers/fsl_wwdt.c - fsl_wwdt.c + ..\..\src\timer.c + timer.c 0 0 - CMSIS + Applications 0 0 0 0 2 - 45 - 2 - 0 - 0 - 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/arm/startup_LPC54608.s - startup_LPC54608.s - 0 - 0 - - - 2 - 46 + 17 1 0 0 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/system_LPC54608.c - system_LPC54608.c + applications\application.c + application.c 0 0 2 - 47 - 4 + 18 + 1 0 0 0 - SDK_2.2_LPCXpresso54608/devices/LPC54608/arm/keil_lib_power.lib - keil_lib_power.lib + applications\mnt.c + mnt.c + 0 + 0 + + + 2 + 19 + 1 + 0 + 0 + 0 + applications\startup.c + startup.c 0 0 @@ -768,144 +432,144 @@ 0 3 - 48 + 20 1 0 0 0 - drivers/board.c + drivers\board.c board.c 0 0 3 - 49 + 21 1 0 0 0 - drivers/clock_config.c + drivers\clock_config.c clock_config.c 0 0 3 - 50 + 22 1 0 0 0 - drivers/drt_mpu.c + drivers\drt_mpu.c drt_mpu.c 0 0 3 - 51 + 23 1 0 0 0 - drivers/drv_emac.c + drivers\drv_emac.c drv_emac.c 0 0 3 - 52 + 24 1 0 0 0 - drivers/drv_ft5406.c + drivers\drv_ft5406.c drv_ft5406.c 0 0 3 - 53 + 25 1 0 0 0 - drivers/drv_i2c.c + drivers\drv_i2c.c drv_i2c.c 0 0 3 - 54 + 26 1 0 0 0 - drivers/drv_lcd.c + drivers\drv_lcd.c drv_lcd.c 0 0 3 - 55 + 27 1 0 0 0 - drivers/drv_sd.c + drivers\drv_sd.c drv_sd.c 0 0 3 - 56 + 28 1 0 0 0 - drivers/drv_sdram.c + drivers\drv_sdram.c drv_sdram.c 0 0 3 - 57 + 29 1 0 0 0 - drivers/drv_sram.c + drivers\drv_sram.c drv_sram.c 0 0 3 - 58 + 30 1 0 0 0 - drivers/drv_uart.c + drivers\drv_uart.c drv_uart.c 0 0 3 - 59 + 31 1 0 0 0 - drivers/fsl_phy.c + drivers\fsl_phy.c fsl_phy.c 0 0 @@ -913,55 +577,391 @@ - Applications - 1 + CMSIS + 0 0 0 0 4 - 60 - 1 + 32 + 2 0 0 0 - applications/application.c - application.c + SDK_2.2_LPCXpresso54608\devices\LPC54608\arm\startup_LPC54608.s + startup_LPC54608.s 0 0 4 - 61 + 33 1 0 0 0 - applications/mnt.c - mnt.c + SDK_2.2_LPCXpresso54608\devices\LPC54608\system_LPC54608.c + system_LPC54608.c 0 0 4 - 62 - 1 + 34 + 4 0 0 0 - applications/startup.c - startup.c + SDK_2.2_LPCXpresso54608\devices\LPC54608\arm\keil_lib_power.lib + keil_lib_power.lib 0 0 - Kernel - 1 + Libraries + 0 0 0 0 + + 5 + 35 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_adc.c + fsl_adc.c + 0 + 0 + + + 5 + 36 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_clock.c + fsl_clock.c + 0 + 0 + + + 5 + 37 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_common.c + fsl_common.c + 0 + 0 + + + 5 + 38 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_crc.c + fsl_crc.c + 0 + 0 + + + 5 + 39 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_ctimer.c + fsl_ctimer.c + 0 + 0 + + + 5 + 40 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_dma.c + fsl_dma.c + 0 + 0 + + + 5 + 41 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_dmic.c + fsl_dmic.c + 0 + 0 + + + 5 + 42 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_dmic_dma.c + fsl_dmic_dma.c + 0 + 0 + + + 5 + 43 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_eeprom.c + fsl_eeprom.c + 0 + 0 + + + 5 + 44 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_emc.c + fsl_emc.c + 0 + 0 + + + 5 + 45 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_enet.c + fsl_enet.c + 0 + 0 + + + 5 + 46 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_flashiap.c + fsl_flashiap.c + 0 + 0 + + + 5 + 47 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_flexcomm.c + fsl_flexcomm.c + 0 + 0 + + + 5 + 48 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_fmc.c + fsl_fmc.c + 0 + 0 + + + 5 + 49 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_fmeas.c + fsl_fmeas.c + 0 + 0 + + + 5 + 50 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_gint.c + fsl_gint.c + 0 + 0 + + + 5 + 51 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_gpio.c + fsl_gpio.c + 0 + 0 + + + 5 + 52 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_i2c.c + fsl_i2c.c + 0 + 0 + + + 5 + 53 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_i2c_dma.c + fsl_i2c_dma.c + 0 + 0 + + + 5 + 54 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_i2s.c + fsl_i2s.c + 0 + 0 + + + 5 + 55 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_i2s_dma.c + fsl_i2s_dma.c + 0 + 0 + + + 5 + 56 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_inputmux.c + fsl_inputmux.c + 0 + 0 + + + 5 + 57 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_lcdc.c + fsl_lcdc.c + 0 + 0 + + + 5 + 58 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_mcan.c + fsl_mcan.c + 0 + 0 + + + 5 + 59 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_mrt.c + fsl_mrt.c + 0 + 0 + + + 5 + 60 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_pint.c + fsl_pint.c + 0 + 0 + + + 5 + 61 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_power.c + fsl_power.c + 0 + 0 + + + 5 + 62 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_reset.c + fsl_reset.c + 0 + 0 + 5 63 @@ -969,8 +969,8 @@ 0 0 0 - ../../src/clock.c - clock.c + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_rit.c + fsl_rit.c 0 0 @@ -981,8 +981,8 @@ 0 0 0 - ../../src/components.c - components.c + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_rtc.c + fsl_rtc.c 0 0 @@ -993,8 +993,8 @@ 0 0 0 - ../../src/device.c - device.c + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_sctimer.c + fsl_sctimer.c 0 0 @@ -1005,8 +1005,8 @@ 0 0 0 - ../../src/idle.c - idle.c + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_sdif.c + fsl_sdif.c 0 0 @@ -1017,8 +1017,8 @@ 0 0 0 - ../../src/ipc.c - ipc.c + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_spi.c + fsl_spi.c 0 0 @@ -1029,8 +1029,8 @@ 0 0 0 - ../../src/irq.c - irq.c + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_spi_dma.c + fsl_spi_dma.c 0 0 @@ -1041,8 +1041,8 @@ 0 0 0 - ../../src/kservice.c - kservice.c + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_spifi.c + fsl_spifi.c 0 0 @@ -1053,8 +1053,8 @@ 0 0 0 - ../../src/mem.c - mem.c + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_spifi_dma.c + fsl_spifi_dma.c 0 0 @@ -1065,8 +1065,8 @@ 0 0 0 - ../../src/memheap.c - memheap.c + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_usart.c + fsl_usart.c 0 0 @@ -1077,8 +1077,20 @@ 0 0 0 - ../../src/mempool.c - mempool.c + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_usart_dma.c + fsl_usart_dma.c + 0 + 0 + + + 5 + 73 + 1 + 0 + 0 + 0 + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_utick.c + fsl_utick.c 0 0 @@ -1089,8 +1101,8 @@ 0 0 0 - ../../src/object.c - object.c + SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers\fsl_wwdt.c + fsl_wwdt.c 0 0 @@ -1101,8 +1113,8 @@ 0 0 0 - ../../src/scheduler.c - scheduler.c + SDK_2.2_LPCXpresso54608\sdmmc_2.1.2\src\fsl_sd.c + fsl_sd.c 0 0 @@ -1113,8 +1125,8 @@ 0 0 0 - ../../src/signal.c - signal.c + SDK_2.2_LPCXpresso54608\sdmmc_2.1.2\src\fsl_sdmmc.c + fsl_sdmmc.c 0 0 @@ -1125,8 +1137,8 @@ 0 0 0 - ../../src/thread.c - thread.c + SDK_2.2_LPCXpresso54608\sdmmc_2.1.2\src\fsl_host.c + fsl_host.c 0 0 @@ -1137,15 +1149,15 @@ 0 0 0 - ../../src/timer.c - timer.c + SDK_2.2_LPCXpresso54608\sdmmc_2.1.2\src\fsl_sd_event.c + fsl_sd_event.c 0 0 - CORTEX-M4 + cpu 0 0 0 @@ -1157,20 +1169,20 @@ 0 0 0 - ../../libcpu/arm/cortex-m4/cpuport.c - cpuport.c + ..\..\libcpu\arm\common\backtrace.c + backtrace.c 0 0 6 80 - 2 + 1 0 0 0 - ../../libcpu/arm/cortex-m4/context_rvds.S - context_rvds.S + ..\..\libcpu\arm\common\div0.c + div0.c 0 0 @@ -1181,8 +1193,8 @@ 0 0 0 - ../../libcpu/arm/common/backtrace.c - backtrace.c + ..\..\libcpu\arm\common\showmem.c + showmem.c 0 0 @@ -1193,20 +1205,20 @@ 0 0 0 - ../../libcpu/arm/common/div0.c - div0.c + ..\..\libcpu\arm\cortex-m4\cpuport.c + cpuport.c 0 0 6 83 - 1 + 2 0 0 0 - ../../libcpu/arm/common/showmem.c - showmem.c + ..\..\libcpu\arm\cortex-m4\context_rvds.S + context_rvds.S 0 0 @@ -1225,7 +1237,7 @@ 0 0 0 - ../../components/cplusplus/Mutex.cpp + ..\..\components\cplusplus\Mutex.cpp Mutex.cpp 0 0 @@ -1237,7 +1249,7 @@ 0 0 0 - ../../components/cplusplus/Semaphore.cpp + ..\..\components\cplusplus\Semaphore.cpp Semaphore.cpp 0 0 @@ -1249,7 +1261,7 @@ 0 0 0 - ../../components/cplusplus/Thread.cpp + ..\..\components\cplusplus\Thread.cpp Thread.cpp 0 0 @@ -1261,7 +1273,7 @@ 0 0 0 - ../../components/cplusplus/crt.cpp + ..\..\components\cplusplus\crt.cpp crt.cpp 0 0 @@ -1273,1163 +1285,1163 @@ 0 0 0 - ../../components/cplusplus/crt_init.c + ..\..\components\cplusplus\crt_init.c crt_init.c 0 0 - - DeviceDrivers - 0 - 0 - 0 - 0 - - 8 - 89 - 1 - 0 - 0 - 0 - ../../components/drivers/misc/pin.c - pin.c - 0 - 0 - - - 8 - 90 - 1 - 0 - 0 - 0 - ../../components/drivers/i2c/i2c_core.c - i2c_core.c - 0 - 0 - - - 8 - 91 - 1 - 0 - 0 - 0 - ../../components/drivers/i2c/i2c_dev.c - i2c_dev.c - 0 - 0 - - - 8 - 92 - 1 - 0 - 0 - 0 - ../../components/drivers/i2c/i2c-bit-ops.c - i2c-bit-ops.c - 0 - 0 - - - 8 - 93 - 1 - 0 - 0 - 0 - ../../components/drivers/sdio/block_dev.c - block_dev.c - 0 - 0 - - - 8 - 94 - 1 - 0 - 0 - 0 - ../../components/drivers/sdio/mmcsd_core.c - mmcsd_core.c - 0 - 0 - - - 8 - 95 - 1 - 0 - 0 - 0 - ../../components/drivers/sdio/sd.c - sd.c - 0 - 0 - - - 8 - 96 - 1 - 0 - 0 - 0 - ../../components/drivers/sdio/sdio.c - sdio.c - 0 - 0 - - - 8 - 97 - 1 - 0 - 0 - 0 - ../../components/drivers/sdio/mmc.c - mmc.c - 0 - 0 - - - 8 - 98 - 1 - 0 - 0 - 0 - ../../components/drivers/serial/serial.c - serial.c - 0 - 0 - - - 8 - 99 - 1 - 0 - 0 - 0 - ../../components/drivers/rtc/rtc.c - rtc.c - 0 - 0 - - - 8 - 100 - 1 - 0 - 0 - 0 - ../../components/drivers/mtd/mtd_nand.c - mtd_nand.c - 0 - 0 - - - 8 - 101 - 1 - 0 - 0 - 0 - ../../components/drivers/spi/spi_core.c - spi_core.c - 0 - 0 - - - 8 - 102 - 1 - 0 - 0 - 0 - ../../components/drivers/spi/spi_dev.c - spi_dev.c - 0 - 0 - - - 8 - 103 - 1 - 0 - 0 - 0 - ../../components/drivers/spi/enc28j60.c - enc28j60.c - 0 - 0 - - - 8 - 104 - 1 - 0 - 0 - 0 - ../../components/drivers/src/completion.c - completion.c - 0 - 0 - - - 8 - 105 - 1 - 0 - 0 - 0 - ../../components/drivers/src/dataqueue.c - dataqueue.c - 0 - 0 - - - 8 - 106 - 1 - 0 - 0 - 0 - ../../components/drivers/src/pipe.c - pipe.c - 0 - 0 - - - 8 - 107 - 1 - 0 - 0 - 0 - ../../components/drivers/src/ringbuffer.c - ringbuffer.c - 0 - 0 - - - 8 - 108 - 1 - 0 - 0 - 0 - ../../components/drivers/src/waitqueue.c - waitqueue.c - 0 - 0 - - - 8 - 109 - 1 - 0 - 0 - 0 - ../../components/drivers/src/workqueue.c - workqueue.c - 0 - 0 - - - - - pthreads - 0 - 0 - 0 - 0 - - 9 - 110 - 1 - 0 - 0 - 0 - ../../components/libc/pthreads/mqueue.c - mqueue.c - 0 - 0 - - - 9 - 111 - 1 - 0 - 0 - 0 - ../../components/libc/pthreads/pthread.c - pthread.c - 0 - 0 - - - 9 - 112 - 1 - 0 - 0 - 0 - ../../components/libc/pthreads/pthread_attr.c - pthread_attr.c - 0 - 0 - - - 9 - 113 - 1 - 0 - 0 - 0 - ../../components/libc/pthreads/pthread_barrier.c - pthread_barrier.c - 0 - 0 - - - 9 - 114 - 1 - 0 - 0 - 0 - ../../components/libc/pthreads/pthread_cond.c - pthread_cond.c - 0 - 0 - - - 9 - 115 - 1 - 0 - 0 - 0 - ../../components/libc/pthreads/pthread_mutex.c - pthread_mutex.c - 0 - 0 - - - 9 - 116 - 1 - 0 - 0 - 0 - ../../components/libc/pthreads/pthread_rwlock.c - pthread_rwlock.c - 0 - 0 - - - 9 - 117 - 1 - 0 - 0 - 0 - ../../components/libc/pthreads/pthread_spin.c - pthread_spin.c - 0 - 0 - - - 9 - 118 - 1 - 0 - 0 - 0 - ../../components/libc/pthreads/pthread_tls.c - pthread_tls.c - 0 - 0 - - - 9 - 119 - 1 - 0 - 0 - 0 - ../../components/libc/pthreads/sched.c - sched.c - 0 - 0 - - - 9 - 120 - 1 - 0 - 0 - 0 - ../../components/libc/pthreads/semaphore.c - semaphore.c - 0 - 0 - - - 9 - 121 - 1 - 0 - 0 - 0 - ../../components/libc/time/clock_time.c - clock_time.c - 0 - 0 - - - 9 - 122 - 1 - 0 - 0 - 0 - ../../components/libc/time/posix_sleep.c - posix_sleep.c - 0 - 0 - - - - - libc - 0 - 0 - 0 - 0 - - 10 - 123 - 1 - 0 - 0 - 0 - ../../components/libc/compilers/armlibc/libc.c - libc.c - 0 - 0 - - - 10 - 124 - 1 - 0 - 0 - 0 - ../../components/libc/compilers/armlibc/libc_syms.c - libc_syms.c - 0 - 0 - - - 10 - 125 - 1 - 0 - 0 - 0 - ../../components/libc/compilers/armlibc/mem_std.c - mem_std.c - 0 - 0 - - - 10 - 126 - 1 - 0 - 0 - 0 - ../../components/libc/compilers/armlibc/stdio.c - stdio.c - 0 - 0 - - - 10 - 127 - 1 - 0 - 0 - 0 - ../../components/libc/compilers/armlibc/stubs.c - stubs.c - 0 - 0 - - - 10 - 128 - 1 - 0 - 0 - 0 - ../../components/libc/compilers/armlibc/time.c - time.c - 0 - 0 - - - - - finsh - 0 - 0 - 0 - 0 - - 11 - 129 - 1 - 0 - 0 - 0 - ../../components/finsh/shell.c - shell.c - 0 - 0 - - - 11 - 130 - 1 - 0 - 0 - 0 - ../../components/finsh/symbol.c - symbol.c - 0 - 0 - - - 11 - 131 - 1 - 0 - 0 - 0 - ../../components/finsh/cmd.c - cmd.c - 0 - 0 - - - 11 - 132 - 1 - 0 - 0 - 0 - ../../components/finsh/msh.c - msh.c - 0 - 0 - - - 11 - 133 - 1 - 0 - 0 - 0 - ../../components/finsh/msh_cmd.c - msh_cmd.c - 0 - 0 - - - 11 - 134 - 1 - 0 - 0 - 0 - ../../components/finsh/msh_file.c - msh_file.c - 0 - 0 - - - 11 - 135 - 1 - 0 - 0 - 0 - ../../components/finsh/finsh_compiler.c - finsh_compiler.c - 0 - 0 - - - 11 - 136 - 1 - 0 - 0 - 0 - ../../components/finsh/finsh_error.c - finsh_error.c - 0 - 0 - - - 11 - 137 - 1 - 0 - 0 - 0 - ../../components/finsh/finsh_heap.c - finsh_heap.c - 0 - 0 - - - 11 - 138 - 1 - 0 - 0 - 0 - ../../components/finsh/finsh_init.c - finsh_init.c - 0 - 0 - - - 11 - 139 - 1 - 0 - 0 - 0 - ../../components/finsh/finsh_node.c - finsh_node.c - 0 - 0 - - - 11 - 140 - 1 - 0 - 0 - 0 - ../../components/finsh/finsh_ops.c - finsh_ops.c - 0 - 0 - - - 11 - 141 - 1 - 0 - 0 - 0 - ../../components/finsh/finsh_parser.c - finsh_parser.c - 0 - 0 - - - 11 - 142 - 1 - 0 - 0 - 0 - ../../components/finsh/finsh_var.c - finsh_var.c - 0 - 0 - - - 11 - 143 - 1 - 0 - 0 - 0 - ../../components/finsh/finsh_vm.c - finsh_vm.c - 0 - 0 - - - 11 - 144 - 1 - 0 - 0 - 0 - ../../components/finsh/finsh_token.c - finsh_token.c - 0 - 0 - - - - - lwIP - 0 - 0 - 0 - 0 - - 12 - 145 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/arch/sys_arch.c - sys_arch.c - 0 - 0 - - - 12 - 146 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/api/api_lib.c - api_lib.c - 0 - 0 - - - 12 - 147 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/api/api_msg.c - api_msg.c - 0 - 0 - - - 12 - 148 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/api/err.c - err.c - 0 - 0 - - - 12 - 149 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/api/netbuf.c - netbuf.c - 0 - 0 - - - 12 - 150 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/api/netdb.c - netdb.c - 0 - 0 - - - 12 - 151 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/api/netifapi.c - netifapi.c - 0 - 0 - - - 12 - 152 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/api/sockets.c - sockets.c - 0 - 0 - - - 12 - 153 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/api/tcpip.c - tcpip.c - 0 - 0 - - - 12 - 154 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/def.c - def.c - 0 - 0 - - - 12 - 155 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/dns.c - dns.c - 0 - 0 - - - 12 - 156 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/inet_chksum.c - inet_chksum.c - 0 - 0 - - - 12 - 157 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/init.c - init.c - 0 - 0 - - - 12 - 158 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/ip.c - ip.c - 0 - 0 - - - 12 - 159 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/memp.c - memp.c - 0 - 0 - - - 12 - 160 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/netif.c - netif.c - 0 - 0 - - - 12 - 161 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/pbuf.c - pbuf.c - 0 - 0 - - - 12 - 162 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/raw.c - raw.c - 0 - 0 - - - 12 - 163 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/stats.c - stats.c - 0 - 0 - - - 12 - 164 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/sys.c - sys.c - 0 - 0 - - - 12 - 165 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/tcp.c - tcp.c - 0 - 0 - - - 12 - 166 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/tcp_in.c - tcp_in.c - 0 - 0 - - - 12 - 167 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/tcp_out.c - tcp_out.c - 0 - 0 - - - 12 - 168 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/timeouts.c - timeouts.c - 0 - 0 - - - 12 - 169 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/udp.c - udp.c - 0 - 0 - - - 12 - 170 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/netif/ethernet.c - ethernet.c - 0 - 0 - - - 12 - 171 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/netif/ethernetif.c - ethernetif.c - 0 - 0 - - - 12 - 172 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/netif/lowpan6.c - lowpan6.c - 0 - 0 - - - 12 - 173 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/ipv4/autoip.c - autoip.c - 0 - 0 - - - 12 - 174 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/ipv4/dhcp.c - dhcp.c - 0 - 0 - - - 12 - 175 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/ipv4/etharp.c - etharp.c - 0 - 0 - - - 12 - 176 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/ipv4/icmp.c - icmp.c - 0 - 0 - - - 12 - 177 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/ipv4/igmp.c - igmp.c - 0 - 0 - - - 12 - 178 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/ipv4/ip4.c - ip4.c - 0 - 0 - - - 12 - 179 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/ipv4/ip4_addr.c - ip4_addr.c - 0 - 0 - - - 12 - 180 - 1 - 0 - 0 - 0 - ../../components/net/lwip-2.0.2/src/core/ipv4/ip4_frag.c - ip4_frag.c - 0 - 0 - - - Filesystem 0 0 0 0 + + 8 + 89 + 1 + 0 + 0 + 0 + ..\..\components\dfs\src\dfs.c + dfs.c + 0 + 0 + + + 8 + 90 + 1 + 0 + 0 + 0 + ..\..\components\dfs\src\dfs_file.c + dfs_file.c + 0 + 0 + + + 8 + 91 + 1 + 0 + 0 + 0 + ..\..\components\dfs\src\dfs_fs.c + dfs_fs.c + 0 + 0 + + + 8 + 92 + 1 + 0 + 0 + 0 + ..\..\components\dfs\src\dfs_posix.c + dfs_posix.c + 0 + 0 + + + 8 + 93 + 1 + 0 + 0 + 0 + ..\..\components\dfs\src\poll.c + poll.c + 0 + 0 + + + 8 + 94 + 1 + 0 + 0 + 0 + ..\..\components\dfs\src\select.c + select.c + 0 + 0 + + + 8 + 95 + 1 + 0 + 0 + 0 + ..\..\components\dfs\filesystems\devfs\devfs.c + devfs.c + 0 + 0 + + + 8 + 96 + 1 + 0 + 0 + 0 + ..\..\components\dfs\filesystems\elmfat\dfs_elm.c + dfs_elm.c + 0 + 0 + + + 8 + 97 + 1 + 0 + 0 + 0 + ..\..\components\dfs\filesystems\elmfat\ff.c + ff.c + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 9 + 98 + 1 + 0 + 0 + 0 + ..\..\components\drivers\i2c\i2c_core.c + i2c_core.c + 0 + 0 + + + 9 + 99 + 1 + 0 + 0 + 0 + ..\..\components\drivers\i2c\i2c_dev.c + i2c_dev.c + 0 + 0 + + + 9 + 100 + 1 + 0 + 0 + 0 + ..\..\components\drivers\i2c\i2c-bit-ops.c + i2c-bit-ops.c + 0 + 0 + + + 9 + 101 + 1 + 0 + 0 + 0 + ..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 9 + 102 + 1 + 0 + 0 + 0 + ..\..\components\drivers\mtd\mtd_nand.c + mtd_nand.c + 0 + 0 + + + 9 + 103 + 1 + 0 + 0 + 0 + ..\..\components\drivers\rtc\rtc.c + rtc.c + 0 + 0 + + + 9 + 104 + 1 + 0 + 0 + 0 + ..\..\components\drivers\sdio\block_dev.c + block_dev.c + 0 + 0 + + + 9 + 105 + 1 + 0 + 0 + 0 + ..\..\components\drivers\sdio\mmcsd_core.c + mmcsd_core.c + 0 + 0 + + + 9 + 106 + 1 + 0 + 0 + 0 + ..\..\components\drivers\sdio\sd.c + sd.c + 0 + 0 + + + 9 + 107 + 1 + 0 + 0 + 0 + ..\..\components\drivers\sdio\sdio.c + sdio.c + 0 + 0 + + + 9 + 108 + 1 + 0 + 0 + 0 + ..\..\components\drivers\sdio\mmc.c + mmc.c + 0 + 0 + + + 9 + 109 + 1 + 0 + 0 + 0 + ..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + 9 + 110 + 1 + 0 + 0 + 0 + ..\..\components\drivers\spi\spi_core.c + spi_core.c + 0 + 0 + + + 9 + 111 + 1 + 0 + 0 + 0 + ..\..\components\drivers\spi\spi_dev.c + spi_dev.c + 0 + 0 + + + 9 + 112 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\completion.c + completion.c + 0 + 0 + + + 9 + 113 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\dataqueue.c + dataqueue.c + 0 + 0 + + + 9 + 114 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\pipe.c + pipe.c + 0 + 0 + + + 9 + 115 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 9 + 116 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 9 + 117 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\waitqueue.c + waitqueue.c + 0 + 0 + + + 9 + 118 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\workqueue.c + workqueue.c + 0 + 0 + + + + + finsh + 0 + 0 + 0 + 0 + + 10 + 119 + 1 + 0 + 0 + 0 + ..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 10 + 120 + 1 + 0 + 0 + 0 + ..\..\components\finsh\symbol.c + symbol.c + 0 + 0 + + + 10 + 121 + 1 + 0 + 0 + 0 + ..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + 10 + 122 + 1 + 0 + 0 + 0 + ..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 10 + 123 + 1 + 0 + 0 + 0 + ..\..\components\finsh\msh_cmd.c + msh_cmd.c + 0 + 0 + + + 10 + 124 + 1 + 0 + 0 + 0 + ..\..\components\finsh\msh_file.c + msh_file.c + 0 + 0 + + + 10 + 125 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_compiler.c + finsh_compiler.c + 0 + 0 + + + 10 + 126 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_error.c + finsh_error.c + 0 + 0 + + + 10 + 127 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_heap.c + finsh_heap.c + 0 + 0 + + + 10 + 128 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_init.c + finsh_init.c + 0 + 0 + + + 10 + 129 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_node.c + finsh_node.c + 0 + 0 + + + 10 + 130 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_ops.c + finsh_ops.c + 0 + 0 + + + 10 + 131 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_parser.c + finsh_parser.c + 0 + 0 + + + 10 + 132 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_var.c + finsh_var.c + 0 + 0 + + + 10 + 133 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_vm.c + finsh_vm.c + 0 + 0 + + + 10 + 134 + 1 + 0 + 0 + 0 + ..\..\components\finsh\finsh_token.c + finsh_token.c + 0 + 0 + + + + + libc + 0 + 0 + 0 + 0 + + 11 + 135 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\libc.c + libc.c + 0 + 0 + + + 11 + 136 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\mem_std.c + mem_std.c + 0 + 0 + + + 11 + 137 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\stdio.c + stdio.c + 0 + 0 + + + 11 + 138 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\stubs.c + stubs.c + 0 + 0 + + + 11 + 139 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\time.c + time.c + 0 + 0 + + + 11 + 140 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\common\gmtime_r.c + gmtime_r.c + 0 + 0 + + + + + pthreads + 0 + 0 + 0 + 0 + + 12 + 141 + 1 + 0 + 0 + 0 + ..\..\components\libc\pthreads\mqueue.c + mqueue.c + 0 + 0 + + + 12 + 142 + 1 + 0 + 0 + 0 + ..\..\components\libc\pthreads\pthread.c + pthread.c + 0 + 0 + + + 12 + 143 + 1 + 0 + 0 + 0 + ..\..\components\libc\pthreads\pthread_attr.c + pthread_attr.c + 0 + 0 + + + 12 + 144 + 1 + 0 + 0 + 0 + ..\..\components\libc\pthreads\pthread_barrier.c + pthread_barrier.c + 0 + 0 + + + 12 + 145 + 1 + 0 + 0 + 0 + ..\..\components\libc\pthreads\pthread_cond.c + pthread_cond.c + 0 + 0 + + + 12 + 146 + 1 + 0 + 0 + 0 + ..\..\components\libc\pthreads\pthread_mutex.c + pthread_mutex.c + 0 + 0 + + + 12 + 147 + 1 + 0 + 0 + 0 + ..\..\components\libc\pthreads\pthread_rwlock.c + pthread_rwlock.c + 0 + 0 + + + 12 + 148 + 1 + 0 + 0 + 0 + ..\..\components\libc\pthreads\pthread_spin.c + pthread_spin.c + 0 + 0 + + + 12 + 149 + 1 + 0 + 0 + 0 + ..\..\components\libc\pthreads\pthread_tls.c + pthread_tls.c + 0 + 0 + + + 12 + 150 + 1 + 0 + 0 + 0 + ..\..\components\libc\pthreads\sched.c + sched.c + 0 + 0 + + + 12 + 151 + 1 + 0 + 0 + 0 + ..\..\components\libc\pthreads\semaphore.c + semaphore.c + 0 + 0 + + + 12 + 152 + 1 + 0 + 0 + 0 + ..\..\components\libc\time\clock_time.c + clock_time.c + 0 + 0 + + + 12 + 153 + 1 + 0 + 0 + 0 + ..\..\components\libc\time\posix_sleep.c + posix_sleep.c + 0 + 0 + + + + + lwIP + 0 + 0 + 0 + 0 + + 13 + 154 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\arch\sys_arch.c + sys_arch.c + 0 + 0 + + + 13 + 155 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\api_lib.c + api_lib.c + 0 + 0 + + + 13 + 156 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\api_msg.c + api_msg.c + 0 + 0 + + + 13 + 157 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\err.c + err.c + 0 + 0 + + + 13 + 158 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\netbuf.c + netbuf.c + 0 + 0 + + + 13 + 159 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\netdb.c + netdb.c + 0 + 0 + + + 13 + 160 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\netifapi.c + netifapi.c + 0 + 0 + + + 13 + 161 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\sockets.c + sockets.c + 0 + 0 + + + 13 + 162 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\tcpip.c + tcpip.c + 0 + 0 + + + 13 + 163 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\def.c + def.c + 0 + 0 + + + 13 + 164 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\dns.c + dns.c + 0 + 0 + + + 13 + 165 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\inet_chksum.c + inet_chksum.c + 0 + 0 + + + 13 + 166 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\init.c + init.c + 0 + 0 + + + 13 + 167 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ip.c + ip.c + 0 + 0 + + + 13 + 168 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\memp.c + memp.c + 0 + 0 + + + 13 + 169 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\netif.c + netif.c + 0 + 0 + + + 13 + 170 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\pbuf.c + pbuf.c + 0 + 0 + + + 13 + 171 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\raw.c + raw.c + 0 + 0 + + + 13 + 172 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\stats.c + stats.c + 0 + 0 + + + 13 + 173 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\sys.c + sys.c + 0 + 0 + + + 13 + 174 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\tcp.c + tcp.c + 0 + 0 + + + 13 + 175 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\tcp_in.c + tcp_in.c + 0 + 0 + + + 13 + 176 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\tcp_out.c + tcp_out.c + 0 + 0 + + + 13 + 177 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\timeouts.c + timeouts.c + 0 + 0 + + + 13 + 178 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\udp.c + udp.c + 0 + 0 + + + 13 + 179 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\netif\ethernet.c + ethernet.c + 0 + 0 + + + 13 + 180 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\netif\ethernetif.c + ethernetif.c + 0 + 0 + 13 181 @@ -2437,8 +2449,8 @@ 0 0 0 - ../../components/dfs/src/dfs.c - dfs.c + ..\..\components\net\lwip-2.0.2\src\netif\lowpan6.c + lowpan6.c 0 0 @@ -2449,8 +2461,8 @@ 0 0 0 - ../../components/dfs/src/dfs_file.c - dfs_file.c + ..\..\components\net\lwip-2.0.2\src\core\ipv4\autoip.c + autoip.c 0 0 @@ -2461,8 +2473,8 @@ 0 0 0 - ../../components/dfs/src/dfs_fs.c - dfs_fs.c + ..\..\components\net\lwip-2.0.2\src\core\ipv4\dhcp.c + dhcp.c 0 0 @@ -2473,8 +2485,8 @@ 0 0 0 - ../../components/dfs/src/dfs_posix.c - dfs_posix.c + ..\..\components\net\lwip-2.0.2\src\core\ipv4\etharp.c + etharp.c 0 0 @@ -2485,8 +2497,8 @@ 0 0 0 - ../../components/dfs/filesystems/elmfat/dfs_elm.c - dfs_elm.c + ..\..\components\net\lwip-2.0.2\src\core\ipv4\icmp.c + icmp.c 0 0 @@ -2497,8 +2509,156 @@ 0 0 0 - ../../components/dfs/filesystems/elmfat/ff.c - ff.c + ..\..\components\net\lwip-2.0.2\src\core\ipv4\igmp.c + igmp.c + 0 + 0 + + + 13 + 187 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4.c + ip4.c + 0 + 0 + + + 13 + 188 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_addr.c + ip4_addr.c + 0 + 0 + + + 13 + 189 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_frag.c + ip4_frag.c + 0 + 0 + + + 13 + 190 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\apps\ping\ping.c + ping.c + 0 + 0 + + + + + netdev + 0 + 0 + 0 + 0 + + 14 + 191 + 1 + 0 + 0 + 0 + ..\..\components\net\netdev\src\netdev.c + netdev.c + 0 + 0 + + + 14 + 192 + 1 + 0 + 0 + 0 + ..\..\components\net\netdev\src\netdev_ipaddr.c + netdev_ipaddr.c + 0 + 0 + + + + + SAL + 0 + 0 + 0 + 0 + + 15 + 193 + 1 + 0 + 0 + 0 + ..\..\components\net\sal_socket\src\sal_socket.c + sal_socket.c + 0 + 0 + + + 15 + 194 + 1 + 0 + 0 + 0 + ..\..\components\net\sal_socket\socket\net_netdb.c + net_netdb.c + 0 + 0 + + + 15 + 195 + 1 + 0 + 0 + 0 + ..\..\components\net\sal_socket\impl\af_inet_lwip.c + af_inet_lwip.c + 0 + 0 + + + 15 + 196 + 1 + 0 + 0 + 0 + ..\..\components\net\sal_socket\socket\net_sockets.c + net_sockets.c + 0 + 0 + + + 15 + 197 + 1 + 0 + 0 + 0 + ..\..\components\net\sal_socket\dfs_net\dfs_net.c + dfs_net.c 0 0 diff --git a/bsp/lpc54608-LPCXpresso/project.uvprojx b/bsp/lpc54608-LPCXpresso/project.uvprojx index f94c0c5065..36f9ace991 100644 --- a/bsp/lpc54608-LPCXpresso/project.uvprojx +++ b/bsp/lpc54608-LPCXpresso/project.uvprojx @@ -336,7 +336,7 @@ --library_interface=armcc --library_type=standardlib --diag_suppress=66,1296,186 CPU_LPC54608J512ET180=1, CPU_LPC54608, CORE_M4, SDK_DEBUGCONSOLE=0, RT_USING_ARM_LIBC - applications;.;drivers;SDK_2.2_LPCXpresso54608\CMSIS\Include;SDK_2.2_LPCXpresso54608\devices\LPC54608;SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers;SDK_2.2_LPCXpresso54608\devices\LPC54608\utilities;SDK_2.2_LPCXpresso54608\sdmmc_2.1.2\inc;SDK_2.2_LPCXpresso54608\sdmmc_2.1.2\src;..\..\include;..\..\libcpu\arm\cortex-m4;..\..\libcpu\arm\common;..\..\components\cplusplus;..\..\components\dfs\include;..\..\components\dfs\filesystems\devfs;..\..\components\dfs\filesystems\elmfat;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\spi;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\finsh;..\..\components\libc\compilers\armlibc;..\..\components\libc\pthreads;..\..\components\libc\time;..\..\components\net\lwip-2.0.2\src;..\..\components\net\lwip-2.0.2\src\include;..\..\components\net\lwip-2.0.2\src\include\ipv4;..\..\components\net\lwip-2.0.2\src\arch\include;..\..\components\net\lwip-2.0.2\src\include\netif;..\..\components\net\sal_socket\include;..\..\components\net\sal_socket\include\socket;..\..\components\net\sal_socket\impl;..\..\components\net\sal_socket\include\dfs_net;..\..\components\net\sal_socket\include\dfs_net\sys_select;..\..\components\net\sal_socket\include\socket\sys_socket + .;..\..\include;applications;.;drivers;SDK_2.2_LPCXpresso54608\CMSIS\Include;SDK_2.2_LPCXpresso54608\devices\LPC54608;SDK_2.2_LPCXpresso54608\devices\LPC54608\drivers;SDK_2.2_LPCXpresso54608\devices\LPC54608\utilities;SDK_2.2_LPCXpresso54608\sdmmc_2.1.2\inc;SDK_2.2_LPCXpresso54608\sdmmc_2.1.2\src;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m4;..\..\components\cplusplus;..\..\components\dfs\include;..\..\components\dfs\filesystems\devfs;..\..\components\dfs\filesystems\elmfat;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\spi;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\finsh;..\..\components\libc\compilers\armlibc;..\..\components\libc\compilers\common;..\..\components\libc\pthreads;..\..\components\libc\time;..\..\components\net\lwip-2.0.2\src;..\..\components\net\lwip-2.0.2\src\include;..\..\components\net\lwip-2.0.2\src\include\ipv4;..\..\components\net\lwip-2.0.2\src\arch\include;..\..\components\net\lwip-2.0.2\src\include\netif;..\..\components\net\netdev\include;..\..\components\net\sal_socket\include;..\..\components\net\sal_socket\include\socket;..\..\components\net\sal_socket\impl;..\..\components\net\sal_socket\include\dfs_net;..\..\components\net\sal_socket\include\dfs_net\sys_select;..\..\components\net\sal_socket\include\socket\sys_socket @@ -370,13 +370,98 @@ .\LPC54608J512_flash.scf - --keep *.o(.rti_fn.*) --keep *.o(FSymTab) --keep *.o(VSymTab) + + + Kernel + + + clock.c + 1 + ..\..\src\clock.c + + + components.c + 1 + ..\..\src\components.c + + + cpu.c + 1 + ..\..\src\cpu.c + + + device.c + 1 + ..\..\src\device.c + + + idle.c + 1 + ..\..\src\idle.c + + + ipc.c + 1 + ..\..\src\ipc.c + + + irq.c + 1 + ..\..\src\irq.c + + + kservice.c + 1 + ..\..\src\kservice.c + + + mem.c + 1 + ..\..\src\mem.c + + + memheap.c + 1 + ..\..\src\memheap.c + + + mempool.c + 1 + ..\..\src\mempool.c + + + object.c + 1 + ..\..\src\object.c + + + scheduler.c + 1 + ..\..\src\scheduler.c + + + signal.c + 1 + ..\..\src\signal.c + + + thread.c + 1 + ..\..\src\thread.c + + + timer.c + 1 + ..\..\src\timer.c + + + Applications @@ -708,98 +793,8 @@ - Kernel + cpu - - clock.c - 1 - ..\..\src\clock.c - - - components.c - 1 - ..\..\src\components.c - - - device.c - 1 - ..\..\src\device.c - - - idle.c - 1 - ..\..\src\idle.c - - - ipc.c - 1 - ..\..\src\ipc.c - - - irq.c - 1 - ..\..\src\irq.c - - - kservice.c - 1 - ..\..\src\kservice.c - - - mem.c - 1 - ..\..\src\mem.c - - - memheap.c - 1 - ..\..\src\memheap.c - - - mempool.c - 1 - ..\..\src\mempool.c - - - object.c - 1 - ..\..\src\object.c - - - scheduler.c - 1 - ..\..\src\scheduler.c - - - signal.c - 1 - ..\..\src\signal.c - - - thread.c - 1 - ..\..\src\thread.c - - - timer.c - 1 - ..\..\src\timer.c - - - - - CORTEX-M4 - - - cpuport.c - 1 - ..\..\libcpu\arm\cortex-m4\cpuport.c - - - context_rvds.S - 2 - ..\..\libcpu\arm\cortex-m4\context_rvds.S - backtrace.c 1 @@ -815,6 +810,16 @@ 1 ..\..\libcpu\arm\common\showmem.c + + cpuport.c + 1 + ..\..\libcpu\arm\cortex-m4\cpuport.c + + + context_rvds.S + 2 + ..\..\libcpu\arm\cortex-m4\context_rvds.S + @@ -1054,6 +1059,11 @@ 1 ..\..\components\drivers\src\pipe.c + + ringblk_buf.c + 1 + ..\..\components\drivers\src\ringblk_buf.c + ringbuffer.c 1 @@ -1184,6 +1194,11 @@ 1 ..\..\components\libc\compilers\armlibc\time.c + + gmtime_r.c + 1 + ..\..\components\libc\compilers\common\gmtime_r.c + @@ -1439,16 +1454,31 @@ 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_frag.c + + ping.c + 1 + ..\..\components\net\lwip-2.0.2\src\apps\ping\ping.c + + + + + netdev + + + netdev.c + 1 + ..\..\components\net\netdev\src\netdev.c + + + netdev_ipaddr.c + 1 + ..\..\components\net\netdev\src\netdev_ipaddr.c + SAL - - sal_ipaddr.c - 1 - ..\..\components\net\sal_socket\src\sal_ipaddr.c - sal_socket.c 1 diff --git a/bsp/lpc54608-LPCXpresso/rtconfig.h b/bsp/lpc54608-LPCXpresso/rtconfig.h index 987439e331..c18699793a 100644 --- a/bsp/lpc54608-LPCXpresso/rtconfig.h +++ b/bsp/lpc54608-LPCXpresso/rtconfig.h @@ -13,6 +13,7 @@ #define RT_TICK_PER_SECOND 1000 #define RT_USING_OVERFLOW_CHECK #define RT_USING_HOOK +#define RT_USING_IDLE_HOOK #define RT_IDEL_HOOK_LIST_SIZE 4 #define IDLE_THREAD_STACK_SIZE 256 #define RT_USING_TIMER_SOFT @@ -42,7 +43,7 @@ #define RT_USING_CONSOLE #define RT_CONSOLEBUF_SIZE 128 #define RT_CONSOLE_DEVICE_NAME "uart0" -// #define RT_USING_MODULE +#define RT_VER_NUM 0x40001 #define ARCH_ARM #define ARCH_ARM_CORTEX_M #define ARCH_ARM_CORTEX_M4 @@ -95,8 +96,12 @@ #define RT_USING_DEVICE_IPC #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_SERIAL_USING_DMA +#define RT_SERIAL_RB_BUFSZ 64 #define RT_USING_I2C #define RT_USING_I2C_BITOPS #define RT_USING_PIN @@ -110,6 +115,9 @@ #define RT_MMCSD_MAX_PARTITION 16 #define RT_USING_SPI +/* Using WiFi */ + + /* Using USB */ @@ -129,7 +137,13 @@ #define SAL_USING_LWIP #define SAL_USING_POSIX -#define SAL_PROTO_FAMILIES_NUM 4 + +/* Network interface device */ + +#define RT_USING_NETDEV +#define NETDEV_USING_IFCONFIG +#define NETDEV_USING_PING +#define NETDEV_USING_NETSTAT /* light weight TCP/IP stack */ @@ -148,6 +162,7 @@ #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 @@ -163,24 +178,26 @@ #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_NETIF_LOOPBACK 0 +#define RT_LWIP_USING_PING /* Modbus master and slave stack */ +/* AT commands */ + + /* VBUS(Virtual Software BUS) */ /* Utilities */ -/* ARM CMSIS */ - - /* RT-Thread online packages */ /* IoT - internet of things */ @@ -194,6 +211,9 @@ /* Wiced WiFi */ +/* IoT Cloud */ + + /* security packages */ @@ -215,10 +235,7 @@ /* miscellaneous packages */ -/* sample package */ - - -/* example package: hello */ +/* samples: kernel and components samples */ #define SOC_LPC54608 #define RT_USING_UART0 diff --git a/bsp/qemu-vexpress-a9/.config b/bsp/qemu-vexpress-a9/.config index 6fde000858..89af9574b7 100644 --- a/bsp/qemu-vexpress-a9/.config +++ b/bsp/qemu-vexpress-a9/.config @@ -7,6 +7,7 @@ # RT-Thread Kernel # CONFIG_RT_NAME_MAX=8 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set CONFIG_RT_USING_SMP=y CONFIG_RT_CPUS_NR=2 CONFIG_RT_ALIGN_SIZE=4 @@ -143,6 +144,9 @@ CONFIG_RT_USING_DFS_RAMFS=y # CONFIG_RT_USING_DEVICE_IPC=y CONFIG_RT_PIPE_BUFSZ=512 +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_SERIAL_USING_DMA=y CONFIG_RT_SERIAL_RB_BUFSZ=64 @@ -160,6 +164,7 @@ CONFIG_RT_MTD_NAND_DEBUG=y # CONFIG_RT_USING_MTD is not set # CONFIG_RT_USING_PM is not set CONFIG_RT_USING_RTC=y +# CONFIG_RT_USING_ALARM is not set CONFIG_RT_USING_SOFT_RTC=y CONFIG_RT_USING_SDIO=y CONFIG_RT_SDIO_STACK_SIZE=512 @@ -220,7 +225,14 @@ CONFIG_RT_USING_SAL=y # CONFIG_SAL_USING_LWIP=y CONFIG_SAL_USING_POSIX=y -CONFIG_SAL_PROTO_FAMILIES_NUM=4 + +# +# Network interface device +# +CONFIG_RT_USING_NETDEV=y +CONFIG_NETDEV_USING_IFCONFIG=y +CONFIG_NETDEV_USING_PING=y +CONFIG_NETDEV_USING_NETSTAT=y # # light weight TCP/IP stack @@ -229,7 +241,6 @@ CONFIG_RT_USING_LWIP=y # CONFIG_RT_USING_LWIP141 is not set CONFIG_RT_USING_LWIP202=y # CONFIG_RT_USING_LWIP210 is not set -CONFIG_RT_USING_LWIP_IPV6=y # CONFIG_RT_LWIP_IGMP is not set CONFIG_RT_LWIP_ICMP=y # CONFIG_RT_LWIP_SNMP is not set @@ -246,7 +257,7 @@ 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 is not set +CONFIG_RT_LWIP_RAW=y # CONFIG_RT_LWIP_PPP is not set CONFIG_RT_MEMP_NUM_NETCONN=8 CONFIG_RT_LWIP_PBUF_NUM=16 @@ -266,6 +277,7 @@ CONFIG_RT_LWIP_ETHTHREAD_STACKSIZE=1024 CONFIG_RT_LWIP_ETHTHREAD_MBOX_SIZE=8 CONFIG_RT_LWIP_REASSEMBLY_FRAG=y 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 @@ -273,6 +285,8 @@ CONFIG_LWIP_SO_RCVBUF=1 # 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 # @@ -377,6 +391,7 @@ CONFIG_RT_USING_LWP=y # # CONFIG_PKG_USING_OPENMV is not set # CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set # # tools packages @@ -406,22 +421,12 @@ CONFIG_RT_USING_LWP=y # CONFIG_PKG_USING_CMSIS is not set # CONFIG_PKG_USING_DFS_YAFFS is not set # CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_THREAD_POOL is not set # # peripheral libraries and drivers # - -# -# sensors drivers -# -# CONFIG_PKG_USING_LSM6DSL is not set -# CONFIG_PKG_USING_LPS22HB is not set -# CONFIG_PKG_USING_HTS221 is not set -# CONFIG_PKG_USING_LSM303AGR is not set -# CONFIG_PKG_USING_BME280 is not set -# CONFIG_PKG_USING_BMA400 is not set -# CONFIG_PKG_USING_BMI160_BMX160 is not set -# CONFIG_PKG_USING_SPL0601 is not set +# CONFIG_PKG_USING_SENSORS_DRIVERS is not set # CONFIG_PKG_USING_REALTEK_AMEBA is not set # CONFIG_PKG_USING_SHT2X is not set # CONFIG_PKG_USING_AHT10 is not set @@ -433,7 +438,12 @@ CONFIG_RT_USING_LWP=y # CONFIG_PKG_USING_MPU6XXX is not set # CONFIG_PKG_USING_PCF8574 is not set # CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_WM_LIBRARIES is not set # CONFIG_PKG_USING_KENDRYTE_SDK is not set +# CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_AT24CXX is not set # # miscellaneous packages @@ -459,6 +469,7 @@ CONFIG_RT_USING_LWP=y # CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set # CONFIG_PKG_USING_HELLO is not set # CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_NNOM is not set CONFIG_SOC_VEXPRESS_A9=y CONFIG_RT_USING_UART0=y CONFIG_RT_USING_UART1=y diff --git a/bsp/qemu-vexpress-a9/rtconfig.h b/bsp/qemu-vexpress-a9/rtconfig.h index 831d54c52f..a94dd3d4b7 100644 --- a/bsp/qemu-vexpress-a9/rtconfig.h +++ b/bsp/qemu-vexpress-a9/rtconfig.h @@ -10,9 +10,7 @@ #define RT_USING_SMP #define RT_CPUS_NR 2 #define RT_ALIGN_SIZE 4 -/* RT_THREAD_PRIORITY_8 is not set */ #define RT_THREAD_PRIORITY_32 -/* RT_THREAD_PRIORITY_256 is not set */ #define RT_THREAD_PRIORITY_MAX 32 #define RT_TICK_PER_SECOND 100 #define RT_USING_OVERFLOW_CHECK @@ -39,10 +37,7 @@ #define RT_USING_MEMPOOL #define RT_USING_MEMHEAP -/* RT_USING_NOHEAP is not set */ #define RT_USING_SMALL_MEM -/* RT_USING_SLAB is not set */ -/* RT_USING_MEMHEAP_AS_HEAP is not set */ #define RT_USING_MEMTRACE #define RT_USING_HEAP @@ -58,7 +53,6 @@ #define ARCH_ARM #define ARCH_ARM_CORTEX_A #define ARCH_ARM_CORTEX_A9 -/* ARCH_CPU_STACK_GROWS_UPWARD is not set */ /* RT-Thread Components */ @@ -79,14 +73,11 @@ #define FINSH_HISTORY_LINES 5 #define FINSH_USING_SYMTAB #define FINSH_USING_DESCRIPTION -/* FINSH_ECHO_DISABLE_DEFAULT is not set */ #define FINSH_THREAD_PRIORITY 20 #define FINSH_THREAD_STACK_SIZE 4096 #define FINSH_CMD_SIZE 80 -/* FINSH_USING_AUTH is not set */ #define FINSH_USING_MSH #define FINSH_USING_MSH_DEFAULT -/* FINSH_USING_MSH_ONLY is not set */ #define FINSH_ARG_MAX 10 /* Device virtual file system */ @@ -96,50 +87,38 @@ #define DFS_FILESYSTEMS_MAX 2 #define DFS_FILESYSTEM_TYPES_MAX 8 #define DFS_FD_MAX 16 -/* RT_USING_DFS_MNTTABLE is not set */ #define RT_USING_DFS_ELMFAT /* elm-chan's FatFs, Generic FAT Filesystem Module */ #define RT_DFS_ELM_CODE_PAGE 437 #define RT_DFS_ELM_WORD_ACCESS -/* RT_DFS_ELM_USE_LFN_0 is not set */ -/* RT_DFS_ELM_USE_LFN_1 is not set */ -/* RT_DFS_ELM_USE_LFN_2 is not set */ #define RT_DFS_ELM_USE_LFN_3 #define RT_DFS_ELM_USE_LFN 3 #define RT_DFS_ELM_MAX_LFN 255 #define RT_DFS_ELM_DRIVES 2 #define RT_DFS_ELM_MAX_SECTOR_SIZE 4096 -/* RT_DFS_ELM_USE_ERASE is not set */ #define RT_DFS_ELM_REENTRANT #define RT_USING_DFS_DEVFS #define RT_USING_DFS_ROMFS #define RT_USING_DFS_RAMFS -/* RT_USING_DFS_UFFS is not set */ -/* RT_USING_DFS_JFFS2 is not set */ -/* RT_USING_DFS_NFS is not set */ /* Device Drivers */ #define RT_USING_DEVICE_IPC #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_SERIAL_USING_DMA #define RT_SERIAL_RB_BUFSZ 64 -/* RT_USING_CAN is not set */ -/* RT_USING_HWTIMER is not set */ -/* RT_USING_CPUTIME is not set */ #define RT_USING_I2C #define RT_USING_I2C_BITOPS #define RT_USING_PIN -/* RT_USING_ADC is not set */ -/* RT_USING_PWM is not set */ #define RT_USING_MTD_NOR #define RT_USING_MTD_NAND #define RT_MTD_NAND_DEBUG -/* RT_USING_MTD is not set */ -/* RT_USING_PM is not set */ #define RT_USING_RTC #define RT_USING_SOFT_RTC #define RT_USING_SDIO @@ -148,31 +127,18 @@ #define RT_MMCSD_STACK_SIZE 1024 #define RT_MMCSD_THREAD_PREORITY 22 #define RT_MMCSD_MAX_PARTITION 16 -/* RT_SDIO_DEBUG is not set */ #define RT_USING_SPI -/* RT_USING_QSPI is not set */ #define RT_USING_SPI_MSD #define RT_USING_SFUD #define RT_SFUD_USING_SFDP #define RT_SFUD_USING_FLASH_INFO_TABLE -/* RT_SFUD_USING_QSPI is not set */ -/* RT_DEBUG_SFUD is not set */ -/* RT_USING_W25QXX is not set */ -/* RT_USING_GD is not set */ -/* RT_USING_ENC28J60 is not set */ -/* RT_USING_SPI_WIFI is not set */ #define RT_USING_WDT -/* RT_USING_AUDIO is not set */ -/* RT_USING_SENSOR is not set */ /* Using WiFi */ -/* RT_USING_WIFI is not set */ /* Using USB */ -/* RT_USING_USB_HOST is not set */ -/* RT_USING_USB_DEVICE is not set */ /* POSIX layer and C standard library */ @@ -182,7 +148,6 @@ #define RT_USING_POSIX_MMAP #define RT_USING_POSIX_TERMIOS #define RT_USING_POSIX_AIO -/* RT_USING_MODULE is not set */ /* Network */ @@ -194,18 +159,19 @@ #define SAL_USING_LWIP #define SAL_USING_POSIX -#define SAL_PROTO_FAMILIES_NUM 4 + +/* Network interface device */ + +#define RT_USING_NETDEV +#define NETDEV_USING_IFCONFIG +#define NETDEV_USING_PING +#define NETDEV_USING_NETSTAT /* light weight TCP/IP stack */ #define RT_USING_LWIP -/* RT_USING_LWIP141 is not set */ #define RT_USING_LWIP202 -/* RT_USING_LWIP210 is not set */ -#define RT_USING_LWIP_IPV6 -/* RT_LWIP_IGMP is not set */ #define RT_LWIP_ICMP -/* RT_LWIP_SNMP is not set */ #define RT_LWIP_DNS #define RT_LWIP_DHCP #define IP_SOF_BROADCAST 1 @@ -218,8 +184,7 @@ #define RT_LWIP_MSKADDR "255.255.255.0" #define RT_LWIP_UDP #define RT_LWIP_TCP -/* RT_LWIP_RAW is not set */ -/* RT_LWIP_PPP is not set */ +#define RT_LWIP_RAW #define RT_MEMP_NUM_NETCONN 8 #define RT_LWIP_PBUF_NUM 16 #define RT_LWIP_RAW_PCB_NUM 4 @@ -231,175 +196,71 @@ #define RT_LWIP_TCPTHREAD_PRIORITY 10 #define RT_LWIP_TCPTHREAD_MBOX_SIZE 8 #define RT_LWIP_TCPTHREAD_STACKSIZE 1024 -/* LWIP_NO_RX_THREAD is not set */ -/* LWIP_NO_TX_THREAD is not set */ #define RT_LWIP_ETHTHREAD_PRIORITY 12 #define RT_LWIP_ETHTHREAD_STACKSIZE 1024 #define RT_LWIP_ETHTHREAD_MBOX_SIZE 8 #define RT_LWIP_REASSEMBLY_FRAG #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 -/* RT_LWIP_NETIF_LOOPBACK is not set */ #define LWIP_NETIF_LOOPBACK 0 -/* RT_LWIP_STATS is not set */ -/* RT_LWIP_DEBUG is not set */ +#define RT_LWIP_USING_PING /* Modbus master and slave stack */ -/* RT_USING_MODBUS is not set */ /* AT commands */ -/* RT_USING_AT is not set */ -/* LWIP_USING_DHCPD is not set */ /* VBUS(Virtual Software BUS) */ -/* RT_USING_VBUS is not set */ /* Utilities */ #define RT_USING_LOGTRACE #define LOG_TRACE_MAX_SESSION 16 -/* LOG_TRACE_USING_LEVEL_NOTRACE is not set */ -/* LOG_TRACE_USING_LEVEL_ERROR is not set */ -/* LOG_TRACE_USING_LEVEL_WARNING is not set */ #define LOG_TRACE_USING_LEVEL_INFO -/* LOG_TRACE_USING_LEVEL_VERBOSE is not set */ -/* LOG_TRACE_USING_LEVEL_DEBUG is not set */ -/* LOG_TRACE_USING_MEMLOG is not set */ -/* RT_USING_RYM is not set */ -/* RT_USING_ULOG is not set */ -/* RT_USING_UTEST is not set */ #define RT_USING_LWP /* RT-Thread online packages */ /* IoT - internet of things */ -/* PKG_USING_PAHOMQTT is not set */ -/* PKG_USING_WEBCLIENT is not set */ -/* PKG_USING_WEBNET is not set */ -/* PKG_USING_MONGOOSE is not set */ -/* PKG_USING_WEBTERMINAL is not set */ -/* PKG_USING_CJSON is not set */ -/* PKG_USING_JSMN is not set */ -/* PKG_USING_LIBMODBUS is not set */ -/* PKG_USING_LJSON is not set */ -/* PKG_USING_EZXML is not set */ -/* PKG_USING_NANOPB is not set */ /* Wi-Fi */ /* Marvell WiFi */ -/* PKG_USING_WLANMARVELL is not set */ /* Wiced WiFi */ -/* PKG_USING_WLAN_WICED is not set */ -/* PKG_USING_RW007 is not set */ -/* PKG_USING_COAP is not set */ -/* PKG_USING_NOPOLL is not set */ -/* PKG_USING_NETUTILS is not set */ -/* PKG_USING_AT_DEVICE is not set */ -/* PKG_USING_WIZNET is not set */ /* IoT Cloud */ -/* PKG_USING_ONENET is not set */ -/* PKG_USING_GAGENT_CLOUD is not set */ -/* PKG_USING_ALI_IOTKIT is not set */ -/* PKG_USING_AZURE is not set */ -/* PKG_USING_TENCENT_IOTKIT is not set */ -/* PKG_USING_NIMBLE is not set */ -/* PKG_USING_OTA_DOWNLOADER is not set */ /* security packages */ -/* PKG_USING_MBEDTLS is not set */ -/* PKG_USING_libsodium is not set */ -/* PKG_USING_TINYCRYPT is not set */ /* language packages */ -/* PKG_USING_LUA is not set */ -/* PKG_USING_JERRYSCRIPT is not set */ -/* PKG_USING_MICROPYTHON is not set */ /* multimedia packages */ -/* PKG_USING_OPENMV is not set */ -/* PKG_USING_MUPDF is not set */ /* tools packages */ -/* PKG_USING_CMBACKTRACE is not set */ -/* PKG_USING_EASYFLASH is not set */ -/* PKG_USING_EASYLOGGER is not set */ -/* PKG_USING_SYSTEMVIEW is not set */ -/* PKG_USING_RDB is not set */ -/* PKG_USING_QRCODE is not set */ -/* PKG_USING_ULOG_EASYFLASH is not set */ -/* PKG_USING_ADBD is not set */ /* system packages */ -/* PKG_USING_GUIENGINE is not set */ -/* PKG_USING_PERSIMMON is not set */ -/* PKG_USING_CAIRO is not set */ -/* PKG_USING_PIXMAN is not set */ -/* PKG_USING_LWEXT4 is not set */ -/* PKG_USING_PARTITION is not set */ -/* PKG_USING_FAL is not set */ -/* PKG_USING_SQLITE is not set */ -/* PKG_USING_RTI is not set */ -/* PKG_USING_LITTLEVGL2RTT is not set */ -/* PKG_USING_CMSIS is not set */ -/* PKG_USING_DFS_YAFFS is not set */ -/* PKG_USING_LITTLEFS is not set */ /* peripheral libraries and drivers */ -/* sensors drivers */ - -/* PKG_USING_LSM6DSL is not set */ -/* PKG_USING_LPS22HB is not set */ -/* PKG_USING_HTS221 is not set */ -/* PKG_USING_LSM303AGR is not set */ -/* PKG_USING_BME280 is not set */ -/* PKG_USING_BMA400 is not set */ -/* PKG_USING_BMI160_BMX160 is not set */ -/* PKG_USING_SPL0601 is not set */ -/* PKG_USING_REALTEK_AMEBA is not set */ -/* PKG_USING_SHT2X is not set */ -/* PKG_USING_AHT10 is not set */ -/* PKG_USING_AP3216C is not set */ -/* PKG_USING_STM32_SDIO is not set */ -/* PKG_USING_ICM20608 is not set */ -/* PKG_USING_U8G2 is not set */ -/* PKG_USING_BUTTON is not set */ -/* PKG_USING_MPU6XXX is not set */ -/* PKG_USING_PCF8574 is not set */ -/* PKG_USING_SX12XX is not set */ -/* PKG_USING_KENDRYTE_SDK is not set */ /* miscellaneous packages */ -/* PKG_USING_LIBCSV is not set */ -/* PKG_USING_OPTPARSE is not set */ -/* PKG_USING_FASTLZ is not set */ -/* PKG_USING_MINILZO is not set */ -/* PKG_USING_QUICKLZ is not set */ -/* PKG_USING_MULTIBUTTON is not set */ -/* PKG_USING_CANFESTIVAL is not set */ -/* PKG_USING_ZLIB is not set */ -/* PKG_USING_DSTR is not set */ -/* PKG_USING_TINYFRAME is not set */ -/* PKG_USING_KENDRYTE_DEMO is not set */ /* samples: kernel and components samples */ @@ -407,6 +268,5 @@ #define RT_USING_UART0 #define RT_USING_UART1 #define BSP_DRV_EMAC -/* BSP_DRV_AUDIO is not set */ #endif diff --git a/bsp/stm32f429-apollo/.config b/bsp/stm32f429-apollo/.config index 459d9c92a3..7c7660c733 100644 --- a/bsp/stm32f429-apollo/.config +++ b/bsp/stm32f429-apollo/.config @@ -8,6 +8,8 @@ CONFIG_BOARD_STM32F429_APPOLO=y # RT-Thread Kernel # CONFIG_RT_NAME_MAX=8 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +# CONFIG_RT_USING_SMP is not set CONFIG_RT_ALIGN_SIZE=4 # CONFIG_RT_THREAD_PRIORITY_8 is not set CONFIG_RT_THREAD_PRIORITY_32=y @@ -16,6 +18,7 @@ CONFIG_RT_THREAD_PRIORITY_MAX=32 CONFIG_RT_TICK_PER_SECOND=1000 CONFIG_RT_USING_OVERFLOW_CHECK=y CONFIG_RT_USING_HOOK=y +CONFIG_RT_USING_IDLE_HOOK=y CONFIG_RT_IDEL_HOOK_LIST_SIZE=4 CONFIG_IDLE_THREAD_STACK_SIZE=1024 # CONFIG_RT_USING_TIMER_SOFT is not set @@ -63,10 +66,11 @@ CONFIG_RT_USING_DEVICE=y CONFIG_RT_USING_CONSOLE=y CONFIG_RT_CONSOLEBUF_SIZE=128 CONFIG_RT_CONSOLE_DEVICE_NAME="uart1" -# CONFIG_RT_USING_MODULE is not set +CONFIG_RT_VER_NUM=0x40001 CONFIG_ARCH_ARM=y CONFIG_ARCH_ARM_CORTEX_M=y CONFIG_ARCH_ARM_CORTEX_M4=y +# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set # # RT-Thread Components @@ -103,6 +107,7 @@ CONFIG_DFS_USING_WORKDIR=y CONFIG_DFS_FILESYSTEMS_MAX=4 CONFIG_DFS_FILESYSTEM_TYPES_MAX=4 CONFIG_DFS_FD_MAX=8 +# CONFIG_RT_USING_DFS_MNTTABLE is not set CONFIG_RT_USING_DFS_ELMFAT=y # @@ -132,35 +137,49 @@ CONFIG_RT_USING_DFS_ROMFS=y # CONFIG_RT_USING_DEVICE_IPC=y CONFIG_RT_PIPE_BUFSZ=512 +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_SERIAL_USING_DMA=y +CONFIG_RT_SERIAL_RB_BUFSZ=64 # CONFIG_RT_USING_CAN is not set # CONFIG_RT_USING_HWTIMER is not set # CONFIG_RT_USING_CPUTIME is not set CONFIG_RT_USING_I2C=y CONFIG_RT_USING_I2C_BITOPS=y # CONFIG_RT_USING_PIN is not set +# CONFIG_RT_USING_ADC is not set # CONFIG_RT_USING_PWM is not set # CONFIG_RT_USING_MTD_NOR is not set CONFIG_RT_USING_MTD_NAND=y # CONFIG_RT_MTD_NAND_DEBUG is not set +# CONFIG_RT_USING_MTD is not set +# CONFIG_RT_USING_PM is not set CONFIG_RT_USING_RTC=y +# CONFIG_RT_USING_ALARM is not set # CONFIG_RT_USING_SOFT_RTC is not set -# CONFIG_RTC_SYNC_USING_NTP is not set # CONFIG_RT_USING_SDIO is not set CONFIG_RT_USING_SPI=y +# CONFIG_RT_USING_QSPI is not set # CONFIG_RT_USING_SPI_MSD is not set CONFIG_RT_USING_SFUD=y CONFIG_RT_SFUD_USING_SFDP=y # CONFIG_RT_SFUD_USING_FLASH_INFO_TABLE is not set +# CONFIG_RT_SFUD_USING_QSPI is not set # CONFIG_RT_DEBUG_SFUD is not set # CONFIG_RT_USING_W25QXX is not set # CONFIG_RT_USING_GD is not set # CONFIG_RT_USING_ENC28J60 is not set # CONFIG_RT_USING_SPI_WIFI is not set # CONFIG_RT_USING_WDT is not set -# CONFIG_RT_USING_WIFI is not set # CONFIG_RT_USING_AUDIO is not set +# CONFIG_RT_USING_SENSOR is not set + +# +# Using WiFi +# +# CONFIG_RT_USING_WIFI is not set # # Using USB @@ -177,7 +196,7 @@ CONFIG_RT_USING_POSIX=y # CONFIG_RT_USING_POSIX_MMAP is not set # CONFIG_RT_USING_POSIX_TERMIOS is not set # CONFIG_RT_USING_POSIX_AIO is not set -# CONFIG_RT_USING_LWP is not set +# CONFIG_RT_USING_MODULE is not set # # Network @@ -193,7 +212,14 @@ CONFIG_RT_USING_SAL=y # CONFIG_SAL_USING_LWIP=y CONFIG_SAL_USING_POSIX=y -CONFIG_SAL_PROTO_FAMILIES_NUM=4 + +# +# Network interface device +# +CONFIG_RT_USING_NETDEV=y +CONFIG_NETDEV_USING_IFCONFIG=y +CONFIG_NETDEV_USING_PING=y +CONFIG_NETDEV_USING_NETSTAT=y # # light weight TCP/IP stack @@ -201,7 +227,7 @@ CONFIG_SAL_PROTO_FAMILIES_NUM=4 CONFIG_RT_USING_LWIP=y # CONFIG_RT_USING_LWIP141 is not set CONFIG_RT_USING_LWIP202=y -# CONFIG_RT_USING_LWIP_IPV6 is not set +# CONFIG_RT_USING_LWIP210 is not set # CONFIG_RT_LWIP_IGMP is not set CONFIG_RT_LWIP_ICMP=y # CONFIG_RT_LWIP_SNMP is not set @@ -218,7 +244,7 @@ CONFIG_RT_LWIP_GWADDR="192.168.10.1" CONFIG_RT_LWIP_MSKADDR="255.255.255.0" CONFIG_RT_LWIP_UDP=y CONFIG_RT_LWIP_TCP=y -# CONFIG_RT_LWIP_RAW is not set +CONFIG_RT_LWIP_RAW=y # CONFIG_RT_LWIP_PPP is not set CONFIG_RT_MEMP_NUM_NETCONN=8 CONFIG_RT_LWIP_PBUF_NUM=16 @@ -238,17 +264,27 @@ 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_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 # # Modbus master and slave stack # # CONFIG_RT_USING_MODBUS is not set + +# +# AT commands +# +# CONFIG_RT_USING_AT is not set # CONFIG_LWIP_USING_DHCPD is not set # @@ -261,12 +297,9 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # # CONFIG_RT_USING_LOGTRACE is not set # CONFIG_RT_USING_RYM is not set - -# -# ARM CMSIS -# -# CONFIG_RT_USING_CMSIS_OS is not set -# CONFIG_RT_USING_RTT_CMSIS is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set +# CONFIG_RT_USING_LWP is not set # # RT-Thread online packages @@ -277,14 +310,15 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # # CONFIG_PKG_USING_PAHOMQTT is not set # CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_WEBNET is not set # CONFIG_PKG_USING_MONGOOSE is not set # CONFIG_PKG_USING_WEBTERMINAL is not set # CONFIG_PKG_USING_CJSON is not set # CONFIG_PKG_USING_JSMN is not set +# CONFIG_PKG_USING_LIBMODBUS is not set # CONFIG_PKG_USING_LJSON is not set # CONFIG_PKG_USING_EZXML is not set # CONFIG_PKG_USING_NANOPB is not set -# CONFIG_PKG_USING_GAGENT_CLOUD is not set # # Wi-Fi @@ -299,11 +333,23 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # Wiced WiFi # # CONFIG_PKG_USING_WLAN_WICED is not set +# CONFIG_PKG_USING_RW007 is not set # CONFIG_PKG_USING_COAP is not set # CONFIG_PKG_USING_NOPOLL is not set # CONFIG_PKG_USING_NETUTILS is not set -# CONFIG_PKG_USING_ONENET is not set # CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_WIZNET is not set + +# +# IoT Cloud +# +# CONFIG_PKG_USING_ONENET is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set +# CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOTKIT is not set +# CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_OTA_DOWNLOADER is not set # # security packages @@ -324,6 +370,7 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # # CONFIG_PKG_USING_OPENMV is not set # CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set # # tools packages @@ -332,6 +379,10 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # CONFIG_PKG_USING_EASYFLASH is not set # CONFIG_PKG_USING_EASYLOGGER is not set # CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_RDB is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_ULOG_EASYFLASH is not set +# CONFIG_PKG_USING_ADBD is not set # # system packages @@ -346,17 +397,37 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # CONFIG_PKG_USING_SQLITE is not set # CONFIG_PKG_USING_RTI is not set # CONFIG_PKG_USING_LITTLEVGL2RTT is not set +# CONFIG_PKG_USING_CMSIS is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_THREAD_POOL is not set # # peripheral libraries and drivers # -# CONFIG_PKG_USING_STM32F4_HAL is not set -# CONFIG_PKG_USING_STM32F4_DRIVERS is not set +# CONFIG_PKG_USING_SENSORS_DRIVERS is not set # CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_AHT10 is not set +# CONFIG_PKG_USING_AP3216C is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_U8G2 is not set +# CONFIG_PKG_USING_BUTTON is not set +# CONFIG_PKG_USING_MPU6XXX is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_WM_LIBRARIES is not set +# CONFIG_PKG_USING_KENDRYTE_SDK is not set +# CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_AT24CXX is not set # # miscellaneous packages # +# CONFIG_PKG_USING_LIBCSV is not set # CONFIG_PKG_USING_OPTPARSE is not set # CONFIG_PKG_USING_FASTLZ is not set # CONFIG_PKG_USING_MINILZO is not set @@ -365,19 +436,23 @@ CONFIG_LWIP_NETIF_LOOPBACK=0 # CONFIG_PKG_USING_CANFESTIVAL is not set # CONFIG_PKG_USING_ZLIB is not set # CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set # -# sample package -# -# CONFIG_PKG_USING_SAMPLES is not set - -# -# example package: hello +# samples: kernel and components samples # +# CONFIG_PKG_USING_KERNEL_SAMPLES is not set +# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set +# CONFIG_PKG_USING_NETWORK_SAMPLES is not set +# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set # CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_NNOM is not set CONFIG_RT_USING_EXT_SDRAM=y CONFIG_RT_USING_UART1=y CONFIG_RT_USING_UART2=y CONFIG_RT_USING_UART3=y CONFIG_RT_USING_SPI5=y +# CONFIG_RT_USING_SAI_AUDIO is not set CONFIG_RT_RTC_NAME="rtc" diff --git a/bsp/stm32f429-apollo/project.ewp b/bsp/stm32f429-apollo/project.ewp index 9b4e576da8..3f578b6c56 100644 --- a/bsp/stm32f429-apollo/project.ewp +++ b/bsp/stm32f429-apollo/project.ewp @@ -1,2726 +1,2538 @@ - - 3 - - Debug - - ARM - + 2 + + Debug + + ARM + + 1 + + General + 3 + + 21 + 1 1 - - General - 3 - - 29 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 34 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 20 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Release - - ARM - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 28 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 8 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 14 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 21 + 1 0 - - General - 3 - - 29 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 34 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 0 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 20 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 0 - - - - - - - BILINK - 0 - - - - - Applications - - $PROJ_DIR$\applications\application.c - - - $PROJ_DIR$\applications\startup.c - - - - CORTEX-M4 - - $PROJ_DIR$\..\..\libcpu\arm\common\backtrace.c - - - $PROJ_DIR$\..\..\libcpu\arm\cortex-m4\context_iar.S - - - $PROJ_DIR$\..\..\libcpu\arm\cortex-m4\cpuport.c - - - $PROJ_DIR$\..\..\libcpu\arm\common\div0.c - - - $PROJ_DIR$\..\..\libcpu\arm\common\showmem.c - - - - DeviceDrivers - - $PROJ_DIR$\..\..\components\drivers\src\completion.c - - - $PROJ_DIR$\..\..\components\drivers\src\dataqueue.c - - - $PROJ_DIR$\..\..\components\drivers\i2c\i2c-bit-ops.c - - - $PROJ_DIR$\..\..\components\drivers\i2c\i2c_core.c - - - $PROJ_DIR$\..\..\components\drivers\i2c\i2c_dev.c - - - $PROJ_DIR$\..\..\components\drivers\mtd\mtd_nand.c - - - $PROJ_DIR$\..\..\components\drivers\src\pipe.c - - - $PROJ_DIR$\..\..\components\drivers\src\ringbuffer.c - - - $PROJ_DIR$\..\..\components\drivers\rtc\rtc.c - - - $PROJ_DIR$\..\..\components\drivers\serial\serial.c - - - $PROJ_DIR$\..\..\components\drivers\spi\sfud\src\sfud.c - - - $PROJ_DIR$\..\..\components\drivers\spi\sfud\src\sfud_sfdp.c - - - $PROJ_DIR$\..\..\components\drivers\spi\spi_core.c - - - $PROJ_DIR$\..\..\components\drivers\spi\spi_dev.c - - - $PROJ_DIR$\..\..\components\drivers\spi\spi_flash_sfud.c - - - $PROJ_DIR$\..\..\components\drivers\src\waitqueue.c - - - $PROJ_DIR$\..\..\components\drivers\src\workqueue.c - - - - dlib - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\environ.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\libc.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\rmtx.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\stdio.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_close.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_lseek.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_mem.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_open.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_read.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_remove.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_write.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\time.c - - - - Drivers - - $PROJ_DIR$\drivers\board.c - - - $PROJ_DIR$\drivers\drv_eth.c - - - $PROJ_DIR$\drivers\drv_i2c.c - - - $PROJ_DIR$\drivers\drv_mpu.c - - - $PROJ_DIR$\drivers\drv_nand.c - - - $PROJ_DIR$\drivers\drv_pcf8574.c - - - $PROJ_DIR$\drivers\drv_rtc.c - - - $PROJ_DIR$\drivers\drv_sdio_sd.c - - - $PROJ_DIR$\drivers\drv_sdram.c - - - $PROJ_DIR$\drivers\drv_spi.c - - - $PROJ_DIR$\drivers\drv_spi_flash.c - - - $PROJ_DIR$\drivers\stm32f4xx_it.c - - - $PROJ_DIR$\drivers\usart.c - - - - Filesystem - - $PROJ_DIR$\..\..\components\dfs\filesystems\devfs\devfs.c - - - $PROJ_DIR$\..\..\components\dfs\src\dfs.c - - - $PROJ_DIR$\..\..\components\dfs\filesystems\elmfat\dfs_elm.c - - - $PROJ_DIR$\..\..\components\dfs\src\dfs_file.c - - - $PROJ_DIR$\..\..\components\dfs\src\dfs_fs.c - - - $PROJ_DIR$\..\..\components\dfs\src\dfs_posix.c - - - $PROJ_DIR$\..\..\components\dfs\filesystems\romfs\dfs_romfs.c - - - $PROJ_DIR$\..\..\components\dfs\filesystems\elmfat\ff.c - - - $PROJ_DIR$\..\..\components\dfs\src\poll.c - - - $PROJ_DIR$\..\..\components\dfs\filesystems\romfs\romfs.c - - - $PROJ_DIR$\..\..\components\dfs\src\select.c - - - - finsh - - $PROJ_DIR$\..\..\components\finsh\cmd.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_compiler.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_error.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_heap.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_init.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_node.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_ops.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_parser.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_token.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_var.c - - - $PROJ_DIR$\..\..\components\finsh\finsh_vm.c - - - $PROJ_DIR$\..\..\components\finsh\shell.c - - - $PROJ_DIR$\..\..\components\finsh\symbol.c - - - - Kernel - - $PROJ_DIR$\..\..\src\clock.c - - - $PROJ_DIR$\..\..\src\components.c - - - $PROJ_DIR$\..\..\src\device.c - - - $PROJ_DIR$\..\..\src\idle.c - - - $PROJ_DIR$\..\..\src\ipc.c - - - $PROJ_DIR$\..\..\src\irq.c - - - $PROJ_DIR$\..\..\src\kservice.c - - - $PROJ_DIR$\..\..\src\mem.c - - - $PROJ_DIR$\..\..\src\memheap.c - - - $PROJ_DIR$\..\..\src\mempool.c - - - $PROJ_DIR$\..\..\src\object.c - - - $PROJ_DIR$\..\..\src\scheduler.c - - - $PROJ_DIR$\..\..\src\signal.c - - - $PROJ_DIR$\..\..\src\thread.c - - - $PROJ_DIR$\..\..\src\timer.c - - - - lwIP - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\api_lib.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\api_msg.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\autoip.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\def.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\dhcp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\dns.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\err.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\etharp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\netif\ethernet.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\netif\ethernetif.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\icmp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\igmp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\inet_chksum.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\init.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ip.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_addr.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_frag.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\netif\lowpan6.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\memp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\netbuf.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\netdb.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\netif.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\netifapi.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\pbuf.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\raw.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\sockets.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\stats.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\sys.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\arch\sys_arch.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\tcp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\tcp_in.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\tcp_out.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\tcpip.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\timeouts.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\udp.c - - - - SAL - - $PROJ_DIR$\..\..\components\net\sal_socket\impl\af_inet_lwip.c - - - $PROJ_DIR$\..\..\components\net\sal_socket\dfs_net\dfs_net.c - - - $PROJ_DIR$\..\..\components\net\sal_socket\socket\net_netdb.c - - - $PROJ_DIR$\..\..\components\net\sal_socket\socket\net_sockets.c - - - $PROJ_DIR$\..\..\components\net\sal_socket\src\sal_ipaddr.c - - - $PROJ_DIR$\..\..\components\net\sal_socket\src\sal_socket.c - - - - STM32_HAL - - $PROJ_DIR$\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\iar\startup_stm32f429xx.s - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc_ex.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_can.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cec.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cryp.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cryp_ex.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dac.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dac_ex.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dcmi.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dcmi_ex.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dfsdm.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma2d.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dsi.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_eth.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_fmpi2c.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_fmpi2c_ex.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_hash.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_hash_ex.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_hcd.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c_ex.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2s.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2s_ex.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_irda.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_iwdg.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_lptim.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc_ex.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_nand.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_nor.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pccard.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pcd.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pcd_ex.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_qspi.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rng.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rtc.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rtc_ex.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai_ex.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sd.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sdram.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_smartcard.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spdifrx.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sram.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_usart.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_wwdg.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fmc.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fsmc.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_sdmmc.c - - - $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usb.c - - - $PROJ_DIR$\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 28 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 8 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 14 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + Kernel + + $PROJ_DIR$\..\..\src\clock.c + + + $PROJ_DIR$\..\..\src\components.c + + + $PROJ_DIR$\..\..\src\cpu.c + + + $PROJ_DIR$\..\..\src\device.c + + + $PROJ_DIR$\..\..\src\idle.c + + + $PROJ_DIR$\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\src\irq.c + + + $PROJ_DIR$\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\src\mem.c + + + $PROJ_DIR$\..\..\src\memheap.c + + + $PROJ_DIR$\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\src\object.c + + + $PROJ_DIR$\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\src\signal.c + + + $PROJ_DIR$\..\..\src\thread.c + + + $PROJ_DIR$\..\..\src\timer.c + + + + Applications + + $PROJ_DIR$\applications\application.c + + + $PROJ_DIR$\applications\startup.c + + + + Drivers + + $PROJ_DIR$\drivers\board.c + + + $PROJ_DIR$\drivers\stm32f4xx_it.c + + + $PROJ_DIR$\drivers\usart.c + + + $PROJ_DIR$\drivers\drv_sdram.c + + + $PROJ_DIR$\drivers\drv_rtc.c + + + $PROJ_DIR$\drivers\drv_mpu.c + + + $PROJ_DIR$\drivers\drv_sdio_sd.c + + + $PROJ_DIR$\drivers\drv_nand.c + + + $PROJ_DIR$\drivers\drv_eth.c + + + $PROJ_DIR$\drivers\drv_pcf8574.c + + + $PROJ_DIR$\drivers\drv_i2c.c + + + $PROJ_DIR$\drivers\drv_spi.c + + + $PROJ_DIR$\drivers\drv_spi_flash.c + + + + STM32_HAL + + $PROJ_DIR$\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc_ex.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_can.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cec.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cryp.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cryp_ex.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dac.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dac_ex.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dcmi.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dcmi_ex.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dfsdm.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma2d.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dsi.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_eth.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_fmpi2c.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_fmpi2c_ex.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_hash.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_hash_ex.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_hcd.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c_ex.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2s.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2s_ex.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_irda.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_iwdg.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_lptim.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc_ex.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_nand.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_nor.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pccard.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pcd.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pcd_ex.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_qspi.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rng.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rtc.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rtc_ex.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai_ex.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sd.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sdram.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_smartcard.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spdifrx.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sram.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_usart.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_wwdg.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fmc.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fsmc.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_sdmmc.c + + + $PROJ_DIR$\Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usb.c + + + $PROJ_DIR$\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\iar\startup_stm32f429xx.s + + + + cpu + + $PROJ_DIR$\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\libcpu\arm\common\showmem.c + + + $PROJ_DIR$\..\..\libcpu\arm\cortex-m4\cpuport.c + + + $PROJ_DIR$\..\..\libcpu\arm\cortex-m4\context_iar.S + + + + Filesystem + + $PROJ_DIR$\..\..\components\dfs\src\dfs.c + + + $PROJ_DIR$\..\..\components\dfs\src\dfs_file.c + + + $PROJ_DIR$\..\..\components\dfs\src\dfs_fs.c + + + $PROJ_DIR$\..\..\components\dfs\src\dfs_posix.c + + + $PROJ_DIR$\..\..\components\dfs\src\poll.c + + + $PROJ_DIR$\..\..\components\dfs\src\select.c + + + $PROJ_DIR$\..\..\components\dfs\filesystems\devfs\devfs.c + + + $PROJ_DIR$\..\..\components\dfs\filesystems\elmfat\dfs_elm.c + + + $PROJ_DIR$\..\..\components\dfs\filesystems\elmfat\ff.c + + + $PROJ_DIR$\..\..\components\dfs\filesystems\romfs\dfs_romfs.c + + + $PROJ_DIR$\..\..\components\dfs\filesystems\romfs\romfs.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\components\drivers\i2c\i2c_core.c + + + $PROJ_DIR$\..\..\components\drivers\i2c\i2c_dev.c + + + $PROJ_DIR$\..\..\components\drivers\i2c\i2c-bit-ops.c + + + $PROJ_DIR$\..\..\components\drivers\mtd\mtd_nand.c + + + $PROJ_DIR$\..\..\components\drivers\rtc\rtc.c + + + $PROJ_DIR$\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\components\drivers\spi\spi_core.c + + + $PROJ_DIR$\..\..\components\drivers\spi\spi_dev.c + + + $PROJ_DIR$\..\..\components\drivers\spi\spi_flash_sfud.c + + + $PROJ_DIR$\..\..\components\drivers\spi\sfud\src\sfud.c + + + $PROJ_DIR$\..\..\components\drivers\spi\sfud\src\sfud_sfdp.c + + + $PROJ_DIR$\..\..\components\drivers\src\completion.c + + + $PROJ_DIR$\..\..\components\drivers\src\dataqueue.c + + + $PROJ_DIR$\..\..\components\drivers\src\pipe.c + + + $PROJ_DIR$\..\..\components\drivers\src\ringblk_buf.c + + + $PROJ_DIR$\..\..\components\drivers\src\ringbuffer.c + + + $PROJ_DIR$\..\..\components\drivers\src\waitqueue.c + + + $PROJ_DIR$\..\..\components\drivers\src\workqueue.c + + + + finsh + + $PROJ_DIR$\..\..\components\finsh\shell.c + + + $PROJ_DIR$\..\..\components\finsh\symbol.c + + + $PROJ_DIR$\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_compiler.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_error.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_heap.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_init.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_node.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_ops.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_parser.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_var.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_vm.c + + + $PROJ_DIR$\..\..\components\finsh\finsh_token.c + + + + libc + + $PROJ_DIR$\..\..\components\libc\compilers\common\gmtime_r.c + + + + dlib + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\libc.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\rmtx.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\stdio.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\time.c + + + + lwIP + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\arch\sys_arch.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\api_lib.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\api_msg.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\err.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\netbuf.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\netdb.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\netifapi.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\sockets.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\tcpip.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\def.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\dns.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\inet_chksum.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\init.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ip.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\memp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\netif.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\pbuf.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\raw.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\stats.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\sys.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\tcp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\tcp_in.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\tcp_out.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\timeouts.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\udp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\netif\ethernet.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\netif\ethernetif.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\netif\lowpan6.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\autoip.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\dhcp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\etharp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\icmp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\igmp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_addr.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_frag.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\apps\ping\ping.c + + + + netdev + + $PROJ_DIR$\..\..\components\net\netdev\src\netdev.c + + + $PROJ_DIR$\..\..\components\net\netdev\src\netdev_ipaddr.c + + + + SAL + + $PROJ_DIR$\..\..\components\net\sal_socket\src\sal_socket.c + + + $PROJ_DIR$\..\..\components\net\sal_socket\socket\net_netdb.c + + + $PROJ_DIR$\..\..\components\net\sal_socket\impl\af_inet_lwip.c + + + $PROJ_DIR$\..\..\components\net\sal_socket\socket\net_sockets.c + + + $PROJ_DIR$\..\..\components\net\sal_socket\dfs_net\dfs_net.c + + diff --git a/bsp/stm32f429-apollo/project.eww b/bsp/stm32f429-apollo/project.eww index faa93f37cd..c2cb02eb1e 100644 --- a/bsp/stm32f429-apollo/project.eww +++ b/bsp/stm32f429-apollo/project.eww @@ -1,10 +1,10 @@ - - - - - $WS_DIR$\project.ewp - - - - - + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/stm32f429-apollo/project.uvproj b/bsp/stm32f429-apollo/project.uvproj index 9f73e8989d..29a2155ad7 100644 --- a/bsp/stm32f429-apollo/project.uvproj +++ b/bsp/stm32f429-apollo/project.uvproj @@ -1,37 +1,42 @@ + 1.1 +
### uVision Project, (C) Keil Software
+ rt-thread_stm32f4xx 0x4 ARM-ADS + 5060750::V5.06 update 6 (build 750)::ARMCC + 0 STM32F429ZG STMicroelectronics IRAM(0x20000000-0x2002FFFF) IRAM2(0x10000000-0x1000FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(25000000) CPUTYPE("Cortex-M4") FPU2 - + "Startup\ST\STM32F4xx\startup_stm32f429_439xx.s" ("STM32F429/439xx Startup Code") UL2CM3(-O207 -S0 -C0 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000) 7029 stm32f4xx.h - - - - - - + + + + + + -DSTM32F429_439xx - - + + SFD\ST\STM32F4xx\STM32F429x.SFR 0 0 - - - + + + ST\STM32F4xx\ ST\STM32F4xx\ @@ -55,8 +60,8 @@ 0 0 - - + + 0 0 0 @@ -65,21 +70,25 @@ 0 0 - - + + 0 0 + 0 + 0 1 0 fromelf --bin !L --output rtthread.bin - + 0 0 + 0 + 0 0 - + 0 @@ -93,8 +102,8 @@ 0 0 3 - - + + 1 @@ -138,23 +147,22 @@ 1 0 1 - 0 0 - 1 + 0 - - - - - + + + + + - - - - - + + + + + BIN\UL2CM3.DLL @@ -170,10 +178,10 @@ 1 BIN\UL2CM3.DLL "" () - - - - + + + + 0 @@ -206,7 +214,7 @@ 0 0 "Cortex-M4" - + 0 0 0 @@ -221,6 +229,7 @@ 0 0 0 + 0 3 3 0 @@ -337,7 +346,7 @@ 0x10000 - + 1 @@ -354,12 +363,20 @@ 0 0 1 + 0 0 + 1 + 1 + 1 + 1 + 0 + 0 + 0 - + USE_HAL_DRIVER, RT_USING_ARM_LIBC, STM32F429xx - - applications;.;drivers;Libraries\STM32F4xx_HAL_Driver\Inc;Libraries\CMSIS\Device\ST\STM32F4xx\Include;Libraries\CMSIS\Include;..\..\include;..\..\libcpu\arm\cortex-m4;..\..\libcpu\arm\common;..\..\components\dfs\include;..\..\components\dfs\filesystems\devfs;..\..\components\dfs\filesystems\elmfat;..\..\components\dfs\filesystems\romfs;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\spi;..\..\components\drivers\include;..\..\components\drivers\spi\sfud\inc;..\..\components\drivers\include;..\..\components\finsh;..\..\components\libc\compilers\armlibc;..\..\components\net\lwip-2.0.2\src;..\..\components\net\lwip-2.0.2\src\include;..\..\components\net\lwip-2.0.2\src\include\ipv4;..\..\components\net\lwip-2.0.2\src\arch\include;..\..\components\net\lwip-2.0.2\src\include\netif;..\..\components\net\sal_socket\include;..\..\components\net\sal_socket\include\socket;..\..\components\net\sal_socket\impl;..\..\components\net\sal_socket\include\dfs_net;..\..\components\net\sal_socket\include\dfs_net\sys_select;..\..\components\net\sal_socket\include\socket\sys_socket + + .;..\..\include;applications;.;drivers;Libraries\STM32F4xx_HAL_Driver\Inc;Libraries\CMSIS\Device\ST\STM32F4xx\Include;Libraries\CMSIS\Include;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m4;..\..\components\dfs\include;..\..\components\dfs\filesystems\devfs;..\..\components\dfs\filesystems\elmfat;..\..\components\dfs\filesystems\romfs;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\spi;..\..\components\drivers\include;..\..\components\drivers\spi\sfud\inc;..\..\components\drivers\include;..\..\components\finsh;..\..\components\libc\compilers\armlibc;..\..\components\libc\compilers\common;..\..\components\net\lwip-2.0.2\src;..\..\components\net\lwip-2.0.2\src\include;..\..\components\net\lwip-2.0.2\src\include\ipv4;..\..\components\net\lwip-2.0.2\src\arch\include;..\..\components\net\lwip-2.0.2\src\include\netif;..\..\components\net\netdev\include;..\..\components\net\sal_socket\include;..\..\components\net\sal_socket\include\socket;..\..\components\net\sal_socket\impl;..\..\components\net\sal_socket\include\dfs_net;..\..\components\net\sal_socket\include\dfs_net\sys_select;..\..\components\net\sal_socket\include\socket\sys_socket @@ -372,11 +389,12 @@ 0 0 0 + 0 - - - - + + + + @@ -388,17 +406,102 @@ 0 0x08000000 0x20000000 - + .\stm32f429_flash.sct - - - --keep *.o(.rti_fn.*) --keep *.o(FSymTab) --keep *.o(VSymTab) - - + + + + + + + Kernel + + + clock.c + 1 + ..\..\src\clock.c + + + components.c + 1 + ..\..\src\components.c + + + cpu.c + 1 + ..\..\src\cpu.c + + + device.c + 1 + ..\..\src\device.c + + + idle.c + 1 + ..\..\src\idle.c + + + ipc.c + 1 + ..\..\src\ipc.c + + + irq.c + 1 + ..\..\src\irq.c + + + kservice.c + 1 + ..\..\src\kservice.c + + + mem.c + 1 + ..\..\src\mem.c + + + memheap.c + 1 + ..\..\src\memheap.c + + + mempool.c + 1 + ..\..\src\mempool.c + + + object.c + 1 + ..\..\src\object.c + + + scheduler.c + 1 + ..\..\src\scheduler.c + + + signal.c + 1 + ..\..\src\signal.c + + + thread.c + 1 + ..\..\src\thread.c + + + timer.c + 1 + ..\..\src\timer.c + + + Applications @@ -407,8 +510,6 @@ 1 applications\application.c
-
- startup.c 1 @@ -424,85 +525,61 @@ 1 drivers\board.c - - stm32f4xx_it.c 1 drivers\stm32f4xx_it.c - - usart.c 1 drivers\usart.c - - drv_sdram.c 1 drivers\drv_sdram.c - - drv_rtc.c 1 drivers\drv_rtc.c - - drv_mpu.c 1 drivers\drv_mpu.c - - drv_sdio_sd.c 1 drivers\drv_sdio_sd.c - - drv_nand.c 1 drivers\drv_nand.c - - drv_eth.c 1 drivers\drv_eth.c - - drv_pcf8574.c 1 drivers\drv_pcf8574.c - - drv_i2c.c 1 drivers\drv_i2c.c - - drv_spi.c 1 drivers\drv_spi.c - - drv_spi_flash.c 1 @@ -518,477 +595,341 @@ 1 Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c - - stm32f4xx_hal.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c - - stm32f4xx_hal_adc.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc.c - - stm32f4xx_hal_adc_ex.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_adc_ex.c - - stm32f4xx_hal_can.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_can.c - - stm32f4xx_hal_cec.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cec.c - - stm32f4xx_hal_cortex.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c - - stm32f4xx_hal_crc.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_crc.c - - stm32f4xx_hal_cryp.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cryp.c - - stm32f4xx_hal_cryp_ex.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cryp_ex.c - - stm32f4xx_hal_dac.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dac.c - - stm32f4xx_hal_dac_ex.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dac_ex.c - - stm32f4xx_hal_dcmi.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dcmi.c - - stm32f4xx_hal_dcmi_ex.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dcmi_ex.c - - stm32f4xx_hal_dfsdm.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dfsdm.c - - stm32f4xx_hal_dma.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c - - stm32f4xx_hal_dma2d.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma2d.c - - stm32f4xx_hal_dma_ex.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c - - stm32f4xx_hal_dsi.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dsi.c - - stm32f4xx_hal_eth.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_eth.c - - stm32f4xx_hal_flash.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c - - stm32f4xx_hal_flash_ex.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c - - stm32f4xx_hal_flash_ramfunc.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c - - stm32f4xx_hal_fmpi2c.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_fmpi2c.c - - stm32f4xx_hal_fmpi2c_ex.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_fmpi2c_ex.c - - stm32f4xx_hal_gpio.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c - - stm32f4xx_hal_hash.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_hash.c - - stm32f4xx_hal_hash_ex.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_hash_ex.c - - stm32f4xx_hal_hcd.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_hcd.c - - stm32f4xx_hal_i2c.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c.c - - stm32f4xx_hal_i2c_ex.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2c_ex.c - - stm32f4xx_hal_i2s.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2s.c - - stm32f4xx_hal_i2s_ex.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_i2s_ex.c - - stm32f4xx_hal_irda.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_irda.c - - stm32f4xx_hal_iwdg.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_iwdg.c - - stm32f4xx_hal_lptim.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_lptim.c - - stm32f4xx_hal_ltdc.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc.c - - stm32f4xx_hal_ltdc_ex.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_ltdc_ex.c - - stm32f4xx_hal_nand.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_nand.c - - stm32f4xx_hal_nor.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_nor.c - - stm32f4xx_hal_pccard.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pccard.c - - stm32f4xx_hal_pcd.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pcd.c - - stm32f4xx_hal_pcd_ex.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pcd_ex.c - - stm32f4xx_hal_pwr.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c - - stm32f4xx_hal_pwr_ex.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c - - stm32f4xx_hal_qspi.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_qspi.c - - stm32f4xx_hal_rcc.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c - - stm32f4xx_hal_rcc_ex.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c - - stm32f4xx_hal_rng.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rng.c - - stm32f4xx_hal_rtc.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rtc.c - - stm32f4xx_hal_rtc_ex.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rtc_ex.c - - stm32f4xx_hal_sai.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai.c - - stm32f4xx_hal_sai_ex.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sai_ex.c - - stm32f4xx_hal_sd.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sd.c - - stm32f4xx_hal_sdram.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sdram.c - - stm32f4xx_hal_smartcard.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_smartcard.c - - stm32f4xx_hal_spdifrx.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spdifrx.c - - stm32f4xx_hal_spi.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_spi.c - - stm32f4xx_hal_sram.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_sram.c - - stm32f4xx_hal_tim.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c - - stm32f4xx_hal_tim_ex.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c - - stm32f4xx_hal_uart.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_uart.c - - stm32f4xx_hal_usart.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_usart.c - - stm32f4xx_hal_wwdg.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_wwdg.c - - stm32f4xx_ll_fmc.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fmc.c - - stm32f4xx_ll_fsmc.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_fsmc.c - - stm32f4xx_ll_sdmmc.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_sdmmc.c - - stm32f4xx_ll_usb.c 1 Libraries\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usb.c - - startup_stm32f429xx.s 2 @@ -997,149 +938,33 @@
- Kernel - - - clock.c - 1 - ..\..\src\clock.c - - - - - components.c - 1 - ..\..\src\components.c - - - - - device.c - 1 - ..\..\src\device.c - - - - - idle.c - 1 - ..\..\src\idle.c - - - - - ipc.c - 1 - ..\..\src\ipc.c - - - - - irq.c - 1 - ..\..\src\irq.c - - - - - kservice.c - 1 - ..\..\src\kservice.c - - - - - mem.c - 1 - ..\..\src\mem.c - - - - - memheap.c - 1 - ..\..\src\memheap.c - - - - - mempool.c - 1 - ..\..\src\mempool.c - - - - - object.c - 1 - ..\..\src\object.c - - - - - scheduler.c - 1 - ..\..\src\scheduler.c - - - - - signal.c - 1 - ..\..\src\signal.c - - - - - thread.c - 1 - ..\..\src\thread.c - - - - - timer.c - 1 - ..\..\src\timer.c - - - - - CORTEX-M4 - - - cpuport.c - 1 - ..\..\libcpu\arm\cortex-m4\cpuport.c - - - - - context_rvds.S - 2 - ..\..\libcpu\arm\cortex-m4\context_rvds.S - - + cpu backtrace.c 1 ..\..\libcpu\arm\common\backtrace.c - - div0.c 1 ..\..\libcpu\arm\common\div0.c - - showmem.c 1 ..\..\libcpu\arm\common\showmem.c + + cpuport.c + 1 + ..\..\libcpu\arm\cortex-m4\cpuport.c + + + context_rvds.S + 2 + ..\..\libcpu\arm\cortex-m4\context_rvds.S + @@ -1150,71 +975,51 @@ 1 ..\..\components\dfs\src\dfs.c - - dfs_file.c 1 ..\..\components\dfs\src\dfs_file.c - - dfs_fs.c 1 ..\..\components\dfs\src\dfs_fs.c - - dfs_posix.c 1 ..\..\components\dfs\src\dfs_posix.c - - poll.c 1 ..\..\components\dfs\src\poll.c - - select.c 1 ..\..\components\dfs\src\select.c - - devfs.c 1 ..\..\components\dfs\filesystems\devfs\devfs.c - - dfs_elm.c 1 ..\..\components\dfs\filesystems\elmfat\dfs_elm.c - - ff.c 1 ..\..\components\dfs\filesystems\elmfat\ff.c - - dfs_romfs.c 1 ..\..\components\dfs\filesystems\romfs\dfs_romfs.c - - romfs.c 1 @@ -1224,137 +1029,167 @@ DeviceDrivers + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 0 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + --c99 + + + + + + + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + i2c_core.c 1 ..\..\components\drivers\i2c\i2c_core.c - - i2c_dev.c 1 ..\..\components\drivers\i2c\i2c_dev.c - - i2c-bit-ops.c 1 ..\..\components\drivers\i2c\i2c-bit-ops.c - - mtd_nand.c 1 ..\..\components\drivers\mtd\mtd_nand.c - - rtc.c 1 ..\..\components\drivers\rtc\rtc.c - - serial.c 1 ..\..\components\drivers\serial\serial.c - - spi_core.c 1 ..\..\components\drivers\spi\spi_core.c - - spi_dev.c 1 ..\..\components\drivers\spi\spi_dev.c - - spi_flash_sfud.c 1 ..\..\components\drivers\spi\spi_flash_sfud.c - - sfud.c 1 ..\..\components\drivers\spi\sfud\src\sfud.c - - sfud_sfdp.c 1 ..\..\components\drivers\spi\sfud\src\sfud_sfdp.c - - completion.c 1 ..\..\components\drivers\src\completion.c - - dataqueue.c 1 ..\..\components\drivers\src\dataqueue.c - - pipe.c 1 ..\..\components\drivers\src\pipe.c - - + + ringblk_buf.c + 1 + ..\..\components\drivers\src\ringblk_buf.c + ringbuffer.c 1 ..\..\components\drivers\src\ringbuffer.c - - waitqueue.c 1 ..\..\components\drivers\src\waitqueue.c - - workqueue.c 1 ..\..\components\drivers\src\workqueue.c - - - - - --c99 - - - - - - - finsh @@ -1364,85 +1199,61 @@ 1 ..\..\components\finsh\shell.c - - symbol.c 1 ..\..\components\finsh\symbol.c - - cmd.c 1 ..\..\components\finsh\cmd.c - - finsh_compiler.c 1 ..\..\components\finsh\finsh_compiler.c - - finsh_error.c 1 ..\..\components\finsh\finsh_error.c - - finsh_heap.c 1 ..\..\components\finsh\finsh_heap.c - - finsh_init.c 1 ..\..\components\finsh\finsh_init.c - - finsh_node.c 1 ..\..\components\finsh\finsh_node.c - - finsh_ops.c 1 ..\..\components\finsh\finsh_ops.c - - finsh_parser.c 1 ..\..\components\finsh\finsh_parser.c - - finsh_var.c 1 ..\..\components\finsh\finsh_var.c - - finsh_vm.c 1 ..\..\components\finsh\finsh_vm.c - - finsh_token.c 1 @@ -1458,34 +1269,31 @@ 1 ..\..\components\libc\compilers\armlibc\libc.c - - mem_std.c 1 ..\..\components\libc\compilers\armlibc\mem_std.c - - stdio.c 1 ..\..\components\libc\compilers\armlibc\stdio.c - - stubs.c 1 ..\..\components\libc\compilers\armlibc\stubs.c - - time.c 1 ..\..\components\libc\compilers\armlibc\time.c + + gmtime_r.c + 1 + ..\..\components\libc\compilers\common\gmtime_r.c + @@ -1496,291 +1304,226 @@ 1 ..\..\components\net\lwip-2.0.2\src\arch\sys_arch.c - - api_lib.c 1 ..\..\components\net\lwip-2.0.2\src\api\api_lib.c - - api_msg.c 1 ..\..\components\net\lwip-2.0.2\src\api\api_msg.c - - err.c 1 ..\..\components\net\lwip-2.0.2\src\api\err.c - - netbuf.c 1 ..\..\components\net\lwip-2.0.2\src\api\netbuf.c - - netdb.c 1 ..\..\components\net\lwip-2.0.2\src\api\netdb.c - - netifapi.c 1 ..\..\components\net\lwip-2.0.2\src\api\netifapi.c - - sockets.c 1 ..\..\components\net\lwip-2.0.2\src\api\sockets.c - - tcpip.c 1 ..\..\components\net\lwip-2.0.2\src\api\tcpip.c - - def.c 1 ..\..\components\net\lwip-2.0.2\src\core\def.c - - dns.c 1 ..\..\components\net\lwip-2.0.2\src\core\dns.c - - inet_chksum.c 1 ..\..\components\net\lwip-2.0.2\src\core\inet_chksum.c - - init.c 1 ..\..\components\net\lwip-2.0.2\src\core\init.c - - ip.c 1 ..\..\components\net\lwip-2.0.2\src\core\ip.c - - memp.c 1 ..\..\components\net\lwip-2.0.2\src\core\memp.c - - netif.c 1 ..\..\components\net\lwip-2.0.2\src\core\netif.c - - pbuf.c 1 ..\..\components\net\lwip-2.0.2\src\core\pbuf.c - - raw.c 1 ..\..\components\net\lwip-2.0.2\src\core\raw.c - - stats.c 1 ..\..\components\net\lwip-2.0.2\src\core\stats.c - - sys.c 1 ..\..\components\net\lwip-2.0.2\src\core\sys.c - - tcp.c 1 ..\..\components\net\lwip-2.0.2\src\core\tcp.c - - tcp_in.c 1 ..\..\components\net\lwip-2.0.2\src\core\tcp_in.c - - tcp_out.c 1 ..\..\components\net\lwip-2.0.2\src\core\tcp_out.c - - timeouts.c 1 ..\..\components\net\lwip-2.0.2\src\core\timeouts.c - - udp.c 1 ..\..\components\net\lwip-2.0.2\src\core\udp.c - - ethernet.c 1 ..\..\components\net\lwip-2.0.2\src\netif\ethernet.c - - ethernetif.c 1 ..\..\components\net\lwip-2.0.2\src\netif\ethernetif.c - - lowpan6.c 1 ..\..\components\net\lwip-2.0.2\src\netif\lowpan6.c - - autoip.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\autoip.c - - dhcp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\dhcp.c - - etharp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\etharp.c - - icmp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\icmp.c - - igmp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\igmp.c - - ip4.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4.c - - ip4_addr.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_addr.c - - ip4_frag.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_frag.c + + ping.c + 1 + ..\..\components\net\lwip-2.0.2\src\apps\ping\ping.c + + + + + netdev + + + netdev.c + 1 + ..\..\components\net\netdev\src\netdev.c + + + netdev_ipaddr.c + 1 + ..\..\components\net\netdev\src\netdev_ipaddr.c + SAL - - - sal_ipaddr.c - 1 - ..\..\components\net\sal_socket\src\sal_ipaddr.c - - sal_socket.c 1 ..\..\components\net\sal_socket\src\sal_socket.c - - net_netdb.c 1 ..\..\components\net\sal_socket\socket\net_netdb.c - - af_inet_lwip.c 1 ..\..\components\net\sal_socket\impl\af_inet_lwip.c - - net_sockets.c 1 ..\..\components\net\sal_socket\socket\net_sockets.c - - dfs_net.c 1 @@ -1791,4 +1534,5 @@
+ diff --git a/bsp/stm32f429-apollo/project.uvprojx b/bsp/stm32f429-apollo/project.uvprojx index bf4393b318..11540e775b 100644 --- a/bsp/stm32f429-apollo/project.uvprojx +++ b/bsp/stm32f429-apollo/project.uvprojx @@ -10,7 +10,7 @@ rt_thread_stm32f429 0x4 ARM-ADS - 5060750::V5.06 update 6 (build 750)::ARMCC + 5060300::V5.06 update 3 (build 300)::ARMCC 0 @@ -337,7 +337,7 @@ USE_HAL_DRIVER, RT_USING_ARM_LIBC, STM32F429xx - applications;.;drivers;Libraries\STM32F4xx_HAL_Driver\Inc;Libraries\CMSIS\Device\ST\STM32F4xx\Include;Libraries\CMSIS\Include;..\..\include;..\..\libcpu\arm\cortex-m4;..\..\libcpu\arm\common;..\..\components\dfs\include;..\..\components\dfs\filesystems\devfs;..\..\components\dfs\filesystems\elmfat;..\..\components\dfs\filesystems\romfs;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\spi;..\..\components\drivers\include;..\..\components\drivers\spi\sfud\inc;..\..\components\drivers\include;..\..\components\finsh;..\..\components\libc\compilers\armlibc;..\..\components\libc\compilers\common;..\..\components\net\lwip-2.0.2\src;..\..\components\net\lwip-2.0.2\src\include;..\..\components\net\lwip-2.0.2\src\include\ipv4;..\..\components\net\lwip-2.0.2\src\arch\include;..\..\components\net\lwip-2.0.2\src\include\netif;..\..\components\net\sal_socket\include;..\..\components\net\sal_socket\include\socket;..\..\components\net\sal_socket\impl;..\..\components\net\sal_socket\include\dfs_net;..\..\components\net\sal_socket\include\dfs_net\sys_select;..\..\components\net\sal_socket\include\socket\sys_socket + .;..\..\include;applications;.;drivers;Libraries\STM32F4xx_HAL_Driver\Inc;Libraries\CMSIS\Device\ST\STM32F4xx\Include;Libraries\CMSIS\Include;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m4;..\..\components\dfs\include;..\..\components\dfs\filesystems\devfs;..\..\components\dfs\filesystems\elmfat;..\..\components\dfs\filesystems\romfs;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\spi;..\..\components\drivers\include;..\..\components\drivers\spi\sfud\inc;..\..\components\drivers\include;..\..\components\finsh;..\..\components\libc\compilers\armlibc;..\..\components\libc\compilers\common;..\..\components\net\lwip-2.0.2\src;..\..\components\net\lwip-2.0.2\src\include;..\..\components\net\lwip-2.0.2\src\include\ipv4;..\..\components\net\lwip-2.0.2\src\arch\include;..\..\components\net\lwip-2.0.2\src\include\netif;..\..\components\net\netdev\include;..\..\components\net\sal_socket\include;..\..\components\net\sal_socket\include\socket;..\..\components\net\sal_socket\impl;..\..\components\net\sal_socket\include\dfs_net;..\..\components\net\sal_socket\include\dfs_net\sys_select;..\..\components\net\sal_socket\include\socket\sys_socket @@ -371,13 +371,98 @@ .\stm32f429_flash.sct - --keep *.o(.rti_fn.*) --keep *.o(FSymTab) --keep *.o(VSymTab) + + + Kernel + + + clock.c + 1 + ..\..\src\clock.c + + + components.c + 1 + ..\..\src\components.c + + + cpu.c + 1 + ..\..\src\cpu.c + + + device.c + 1 + ..\..\src\device.c + + + idle.c + 1 + ..\..\src\idle.c + + + ipc.c + 1 + ..\..\src\ipc.c + + + irq.c + 1 + ..\..\src\irq.c + + + kservice.c + 1 + ..\..\src\kservice.c + + + mem.c + 1 + ..\..\src\mem.c + + + memheap.c + 1 + ..\..\src\memheap.c + + + mempool.c + 1 + ..\..\src\mempool.c + + + object.c + 1 + ..\..\src\object.c + + + scheduler.c + 1 + ..\..\src\scheduler.c + + + signal.c + 1 + ..\..\src\signal.c + + + thread.c + 1 + ..\..\src\thread.c + + + timer.c + 1 + ..\..\src\timer.c + + + Applications @@ -814,98 +899,8 @@ - Kernel + cpu - - clock.c - 1 - ..\..\src\clock.c - - - components.c - 1 - ..\..\src\components.c - - - device.c - 1 - ..\..\src\device.c - - - idle.c - 1 - ..\..\src\idle.c - - - ipc.c - 1 - ..\..\src\ipc.c - - - irq.c - 1 - ..\..\src\irq.c - - - kservice.c - 1 - ..\..\src\kservice.c - - - mem.c - 1 - ..\..\src\mem.c - - - memheap.c - 1 - ..\..\src\memheap.c - - - mempool.c - 1 - ..\..\src\mempool.c - - - object.c - 1 - ..\..\src\object.c - - - scheduler.c - 1 - ..\..\src\scheduler.c - - - signal.c - 1 - ..\..\src\signal.c - - - thread.c - 1 - ..\..\src\thread.c - - - timer.c - 1 - ..\..\src\timer.c - - - - - CORTEX-M4 - - - cpuport.c - 1 - ..\..\libcpu\arm\cortex-m4\cpuport.c - - - context_rvds.S - 2 - ..\..\libcpu\arm\cortex-m4\context_rvds.S - backtrace.c 1 @@ -921,6 +916,16 @@ 1 ..\..\libcpu\arm\common\showmem.c + + cpuport.c + 1 + ..\..\libcpu\arm\cortex-m4\cpuport.c + + + context_rvds.S + 2 + ..\..\libcpu\arm\cortex-m4\context_rvds.S + @@ -1031,7 +1036,7 @@ --c99 - + @@ -1435,16 +1440,31 @@ 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_frag.c + + ping.c + 1 + ..\..\components\net\lwip-2.0.2\src\apps\ping\ping.c + + + + + netdev + + + netdev.c + 1 + ..\..\components\net\netdev\src\netdev.c + + + netdev_ipaddr.c + 1 + ..\..\components\net\netdev\src\netdev_ipaddr.c + SAL - - sal_ipaddr.c - 1 - ..\..\components\net\sal_socket\src\sal_ipaddr.c - sal_socket.c 1 diff --git a/bsp/stm32f429-apollo/rtconfig.h b/bsp/stm32f429-apollo/rtconfig.h index 439bf623aa..93c5c890d9 100644 --- a/bsp/stm32f429-apollo/rtconfig.h +++ b/bsp/stm32f429-apollo/rtconfig.h @@ -15,6 +15,7 @@ #define RT_TICK_PER_SECOND 1000 #define RT_USING_OVERFLOW_CHECK #define RT_USING_HOOK +#define RT_USING_IDLE_HOOK #define RT_IDEL_HOOK_LIST_SIZE 4 #define IDLE_THREAD_STACK_SIZE 1024 #define RT_DEBUG @@ -41,6 +42,7 @@ #define RT_USING_CONSOLE #define RT_CONSOLEBUF_SIZE 128 #define RT_CONSOLE_DEVICE_NAME "uart1" +#define RT_VER_NUM 0x40001 #define ARCH_ARM #define ARCH_ARM_CORTEX_M #define ARCH_ARM_CORTEX_M4 @@ -90,8 +92,12 @@ #define RT_USING_DEVICE_IPC #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_SERIAL_USING_DMA +#define RT_SERIAL_RB_BUFSZ 64 #define RT_USING_I2C #define RT_USING_I2C_BITOPS #define RT_USING_MTD_NAND @@ -100,6 +106,9 @@ #define RT_USING_SFUD #define RT_SFUD_USING_SFDP +/* Using WiFi */ + + /* Using USB */ @@ -118,7 +127,13 @@ #define SAL_USING_LWIP #define SAL_USING_POSIX -#define SAL_PROTO_FAMILIES_NUM 4 + +/* Network interface device */ + +#define RT_USING_NETDEV +#define NETDEV_USING_IFCONFIG +#define NETDEV_USING_PING +#define NETDEV_USING_NETSTAT /* light weight TCP/IP stack */ @@ -137,6 +152,7 @@ #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 @@ -152,24 +168,26 @@ #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_NETIF_LOOPBACK 0 +#define RT_LWIP_USING_PING /* Modbus master and slave stack */ +/* AT commands */ + + /* VBUS(Virtual Software BUS) */ /* Utilities */ -/* ARM CMSIS */ - - /* RT-Thread online packages */ /* IoT - internet of things */ @@ -183,6 +201,9 @@ /* Wiced WiFi */ +/* IoT Cloud */ + + /* security packages */ @@ -204,10 +225,7 @@ /* miscellaneous packages */ -/* sample package */ - - -/* example package: hello */ +/* samples: kernel and components samples */ #define RT_USING_EXT_SDRAM #define RT_USING_UART1 diff --git a/bsp/w60x/.config b/bsp/w60x/.config index 72d15f057c..b20ea170b1 100644 --- a/bsp/w60x/.config +++ b/bsp/w60x/.config @@ -7,6 +7,7 @@ # RT-Thread Kernel # CONFIG_RT_NAME_MAX=8 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set # CONFIG_RT_USING_SMP is not set CONFIG_RT_ALIGN_SIZE=4 # CONFIG_RT_THREAD_PRIORITY_8 is not set @@ -122,6 +123,9 @@ CONFIG_RT_USING_DFS_DEVFS=y # CONFIG_RT_USING_DEVICE_IPC=y CONFIG_RT_PIPE_BUFSZ=512 +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_SERIAL_USING_DMA=y CONFIG_RT_SERIAL_RB_BUFSZ=64 @@ -194,7 +198,14 @@ CONFIG_RT_USING_SAL=y # CONFIG_SAL_USING_LWIP=y CONFIG_SAL_USING_POSIX=y -CONFIG_SAL_PROTO_FAMILIES_NUM=4 + +# +# Network interface device +# +CONFIG_RT_USING_NETDEV=y +CONFIG_NETDEV_USING_IFCONFIG=y +CONFIG_NETDEV_USING_PING=y +CONFIG_NETDEV_USING_NETSTAT=y # # light weight TCP/IP stack @@ -203,7 +214,6 @@ CONFIG_RT_USING_LWIP=y # CONFIG_RT_USING_LWIP141 is not set CONFIG_RT_USING_LWIP202=y # CONFIG_RT_USING_LWIP210 is not set -# CONFIG_RT_USING_LWIP_IPV6 is not set CONFIG_RT_LWIP_IGMP=y CONFIG_RT_LWIP_ICMP=y # CONFIG_RT_LWIP_SNMP is not set @@ -240,6 +250,7 @@ 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 @@ -248,6 +259,7 @@ CONFIG_LWIP_SO_RCVBUF=1 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 # @@ -399,6 +411,7 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y # CONFIG_PKG_USING_CMSIS is not set # CONFIG_PKG_USING_DFS_YAFFS is not set # CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_THREAD_POOL is not set # # peripheral libraries and drivers @@ -422,6 +435,9 @@ CONFIG_PKG_WM_LIBRARIES_PATH="/packages/peripherals/wm_libraries" CONFIG_PKG_USING_WM_LIBRARIES_LATEST_VERSION=y CONFIG_PKG_WM_LIBRARIES_VER="latest" # CONFIG_PKG_USING_KENDRYTE_SDK is not set +# CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_AT24CXX is not set # # miscellaneous packages diff --git a/bsp/w60x/project.ewp b/bsp/w60x/project.ewp index e786b1afe8..afd407652e 100644 --- a/bsp/w60x/project.ewp +++ b/bsp/w60x/project.ewp @@ -1,2646 +1,2659 @@ - - 3 - - Debug - - ARM - - 1 - - General - 3 - - 29 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 34 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 1 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - cmd /c "$PROJ_DIR$\makeimg.bat" - - - - ILINK - 0 - - 20 - 1 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 1 - - - - - - - BILINK - 0 - - - - - Release - - ARM - - 0 - - General - 3 - - 29 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ICCARM - 2 - - 34 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AARM - 2 - - 10 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OBJCOPY - 0 - - 1 - 1 - 0 - - - - - - - - - CUSTOM - 3 - - - - 0 - - - - BICOMP - 0 - - - - BUILDACTION - 1 - - - - - - - ILINK - 0 - - 20 - 1 - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IARCHIVE - 0 - - 0 - 1 - 0 - - - - - - - BILINK - 0 - - - - - Kernel - - $PROJ_DIR$\..\..\src\clock.c - - - $PROJ_DIR$\..\..\src\components.c - - - $PROJ_DIR$\..\..\src\cpu.c - - - $PROJ_DIR$\..\..\src\device.c - - - $PROJ_DIR$\..\..\src\idle.c - - - $PROJ_DIR$\..\..\src\ipc.c - - - $PROJ_DIR$\..\..\src\irq.c - - - $PROJ_DIR$\..\..\src\kservice.c - - - $PROJ_DIR$\..\..\src\mem.c - - - $PROJ_DIR$\..\..\src\mempool.c - - - $PROJ_DIR$\..\..\src\object.c - - - $PROJ_DIR$\..\..\src\scheduler.c - - - $PROJ_DIR$\..\..\src\signal.c - - - $PROJ_DIR$\..\..\src\thread.c - - - $PROJ_DIR$\..\..\src\timer.c - - - - Applications - - $PROJ_DIR$\applications\main.c - - - - Drivers - - $PROJ_DIR$\drivers\board.c - - - $PROJ_DIR$\drivers\drv_uart.c - - - $PROJ_DIR$\drivers\pin_map.c - - - $PROJ_DIR$\drivers\drv_wifi.c - - - $PROJ_DIR$\drivers\drv_pin.c - - - - Libraries - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\cpu\wm_cpu.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\gpio\wm_gpio.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\io\wm_io.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\gpio\wm_gpio_afsel.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\irq\wm_irq.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\efuse\wm_efuse.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\internalflash\wm_internal_fls.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\spi\wm_hostspi.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\flash\wm_fls.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\flash\wm_fls_gd25qxx.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\dma\wm_dma.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\timer\wm_timer.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\watchdog\wm_watchdog.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\i2c\wm_i2c.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\pwm\wm_pwm.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\adc\wm_adc.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\pmu\wm_pmu.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\rtc\wm_rtc.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\Params\wm_param.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\fwup\wm_fwup.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\wm_crypto_hard.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\digest\hmac.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\digest\md2.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\digest\md4.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\digest\sha224.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\digest\sha384.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\digest\sha512.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\keyformat\asn1.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\keyformat\base64.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\keyformat\x509.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\math\pstm_mul_comba.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\prng\prng.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\prng\yarrow.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\pubkey\dh.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\pubkey\ecc.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\pubkey\pkcs.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\pubkey\pubkey.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\pubkey\rsa.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\symmetric\aesGCM.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\symmetric\des3.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\symmetric\idea.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\symmetric\rc2.c - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\symmetric\seed.c - - - $PROJ_DIR$\packages\wm_libraries-latest\rtthread\rtthread_patch.c - - - $PROJ_DIR$\packages\wm_libraries-latest\rtthread\utils\utils.c - - - $PROJ_DIR$\packages\wm_libraries-latest\rtthread\startup\iar\startup_venus.S - - - $PROJ_DIR$\packages\wm_libraries-latest\Platform\Boot\iar\misc.c - - - - cpu - - $PROJ_DIR$\..\..\libcpu\arm\common\backtrace.c - - - $PROJ_DIR$\..\..\libcpu\arm\common\div0.c - - - $PROJ_DIR$\..\..\libcpu\arm\common\showmem.c - - - $PROJ_DIR$\..\..\libcpu\arm\cortex-m3\cpuport.c - - - $PROJ_DIR$\..\..\libcpu\arm\cortex-m3\context_iar.S - - - - Filesystem - - $PROJ_DIR$\..\..\components\dfs\src\dfs.c - - - $PROJ_DIR$\..\..\components\dfs\src\dfs_file.c - - - $PROJ_DIR$\..\..\components\dfs\src\dfs_fs.c - - - $PROJ_DIR$\..\..\components\dfs\src\dfs_posix.c - - - $PROJ_DIR$\..\..\components\dfs\src\poll.c - - - $PROJ_DIR$\..\..\components\dfs\src\select.c - - - $PROJ_DIR$\..\..\components\dfs\filesystems\devfs\devfs.c - - - - DeviceDrivers - - $PROJ_DIR$\..\..\components\drivers\misc\pin.c - - - $PROJ_DIR$\..\..\components\drivers\serial\serial.c - - - $PROJ_DIR$\..\..\components\drivers\src\completion.c - - - $PROJ_DIR$\..\..\components\drivers\src\dataqueue.c - - - $PROJ_DIR$\..\..\components\drivers\src\pipe.c - - - $PROJ_DIR$\..\..\components\drivers\src\ringblk_buf.c - - - $PROJ_DIR$\..\..\components\drivers\src\ringbuffer.c - - - $PROJ_DIR$\..\..\components\drivers\src\waitqueue.c - - - $PROJ_DIR$\..\..\components\drivers\src\workqueue.c - - - $PROJ_DIR$\..\..\components\drivers\wlan\wlan_cfg.c - - - $PROJ_DIR$\..\..\components\drivers\wlan\wlan_cmd.c - - - $PROJ_DIR$\..\..\components\drivers\wlan\wlan_dev.c - - - $PROJ_DIR$\..\..\components\drivers\wlan\wlan_lwip.c - - - $PROJ_DIR$\..\..\components\drivers\wlan\wlan_mgnt.c - - - $PROJ_DIR$\..\..\components\drivers\wlan\wlan_prot.c - - - $PROJ_DIR$\..\..\components\drivers\wlan\wlan_workqueue.c - - - - finsh - - $PROJ_DIR$\..\..\components\finsh\shell.c - - - $PROJ_DIR$\..\..\components\finsh\symbol.c - - - $PROJ_DIR$\..\..\components\finsh\cmd.c - - - $PROJ_DIR$\..\..\components\finsh\msh.c - - - $PROJ_DIR$\..\..\components\finsh\msh_cmd.c - - - $PROJ_DIR$\..\..\components\finsh\msh_file.c - - - - libc - - $PROJ_DIR$\..\..\components\libc\compilers\common\gmtime_r.c - - - - dlib - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\environ.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\libc.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\rmtx.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\stdio.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_close.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_lseek.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_mem.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_open.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_read.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_remove.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_write.c - - - $PROJ_DIR$\..\..\components\libc\compilers\dlib\time.c - - - - lwIP - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\arch\sys_arch.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\api_lib.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\api_msg.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\err.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\netbuf.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\netdb.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\netifapi.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\sockets.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\tcpip.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\def.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\dns.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\inet_chksum.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\init.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ip.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\memp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\netif.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\pbuf.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\raw.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\stats.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\sys.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\tcp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\tcp_in.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\tcp_out.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\timeouts.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\udp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\netif\ethernet.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\netif\ethernetif.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\netif\lowpan6.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\autoip.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\dhcp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\etharp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\icmp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\igmp.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_addr.c - - - $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_frag.c - - - $PROJ_DIR$\..\..\components\net\lwip_dhcpd\dhcp_server_raw.c - - - - SAL - - $PROJ_DIR$\..\..\components\net\sal_socket\src\sal_ipaddr.c - - - $PROJ_DIR$\..\..\components\net\sal_socket\src\sal_socket.c - - - $PROJ_DIR$\..\..\components\net\sal_socket\socket\net_netdb.c - - - $PROJ_DIR$\..\..\components\net\sal_socket\impl\af_inet_lwip.c - - - $PROJ_DIR$\..\..\components\net\sal_socket\socket\net_sockets.c - - - $PROJ_DIR$\..\..\components\net\sal_socket\dfs_net\dfs_net.c - - - - Utilities - - $PROJ_DIR$\..\..\components\utilities\ulog\ulog.c - - - $PROJ_DIR$\..\..\components\utilities\ulog\backend\console_be.c - - - + + 3 + + Debug + + ARM + + 1 + + General + 3 + + 29 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 1 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + cmd /c "$PROJ_DIR$\makeimg.bat" + + + + ILINK + 0 + + 20 + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 1 + + + + + + + BILINK + 0 + + + + + Release + + ARM + + 0 + + General + 3 + + 29 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ICCARM + 2 + + 34 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AARM + 2 + + 10 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OBJCOPY + 0 + + 1 + 1 + 0 + + + + + + + + + CUSTOM + 3 + + + + 0 + + + + BICOMP + 0 + + + + BUILDACTION + 1 + + + + + + + ILINK + 0 + + 20 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IARCHIVE + 0 + + 0 + 1 + 0 + + + + + + + BILINK + 0 + + + + + Kernel + + $PROJ_DIR$\..\..\src\clock.c + + + $PROJ_DIR$\..\..\src\components.c + + + $PROJ_DIR$\..\..\src\cpu.c + + + $PROJ_DIR$\..\..\src\device.c + + + $PROJ_DIR$\..\..\src\idle.c + + + $PROJ_DIR$\..\..\src\ipc.c + + + $PROJ_DIR$\..\..\src\irq.c + + + $PROJ_DIR$\..\..\src\kservice.c + + + $PROJ_DIR$\..\..\src\mem.c + + + $PROJ_DIR$\..\..\src\mempool.c + + + $PROJ_DIR$\..\..\src\object.c + + + $PROJ_DIR$\..\..\src\scheduler.c + + + $PROJ_DIR$\..\..\src\signal.c + + + $PROJ_DIR$\..\..\src\thread.c + + + $PROJ_DIR$\..\..\src\timer.c + + + + Applications + + $PROJ_DIR$\applications\main.c + + + + Drivers + + $PROJ_DIR$\drivers\board.c + + + $PROJ_DIR$\drivers\drv_uart.c + + + $PROJ_DIR$\drivers\pin_map.c + + + $PROJ_DIR$\drivers\drv_wifi.c + + + $PROJ_DIR$\drivers\drv_pin.c + + + + Libraries + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\cpu\wm_cpu.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\gpio\wm_gpio.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\io\wm_io.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\gpio\wm_gpio_afsel.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\irq\wm_irq.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\efuse\wm_efuse.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\internalflash\wm_internal_fls.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\spi\wm_hostspi.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\flash\wm_fls.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\flash\wm_fls_gd25qxx.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\dma\wm_dma.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\timer\wm_timer.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\watchdog\wm_watchdog.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\i2c\wm_i2c.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\pwm\wm_pwm.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\adc\wm_adc.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\pmu\wm_pmu.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Drivers\rtc\wm_rtc.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\Params\wm_param.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\fwup\wm_fwup.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\wm_crypto_hard.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\digest\hmac.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\digest\md2.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\digest\md4.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\digest\sha224.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\digest\sha384.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\digest\sha512.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\keyformat\asn1.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\keyformat\base64.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\keyformat\x509.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\math\pstm_mul_comba.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\prng\prng.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\prng\yarrow.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\pubkey\dh.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\pubkey\ecc.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\pubkey\pkcs.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\pubkey\pubkey.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\pubkey\rsa.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\symmetric\aesGCM.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\symmetric\des3.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\symmetric\idea.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\symmetric\rc2.c + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Common\crypto\symmetric\seed.c + + + $PROJ_DIR$\packages\wm_libraries-latest\rtthread\rtthread_patch.c + + + $PROJ_DIR$\packages\wm_libraries-latest\rtthread\utils\utils.c + + + $PROJ_DIR$\packages\wm_libraries-latest\rtthread\startup\iar\startup_venus.S + + + $PROJ_DIR$\packages\wm_libraries-latest\Platform\Boot\iar\misc.c + + + + cpu + + $PROJ_DIR$\..\..\libcpu\arm\common\backtrace.c + + + $PROJ_DIR$\..\..\libcpu\arm\common\div0.c + + + $PROJ_DIR$\..\..\libcpu\arm\common\showmem.c + + + $PROJ_DIR$\..\..\libcpu\arm\cortex-m3\cpuport.c + + + $PROJ_DIR$\..\..\libcpu\arm\cortex-m3\context_iar.S + + + + Filesystem + + $PROJ_DIR$\..\..\components\dfs\src\dfs.c + + + $PROJ_DIR$\..\..\components\dfs\src\dfs_file.c + + + $PROJ_DIR$\..\..\components\dfs\src\dfs_fs.c + + + $PROJ_DIR$\..\..\components\dfs\src\dfs_posix.c + + + $PROJ_DIR$\..\..\components\dfs\src\poll.c + + + $PROJ_DIR$\..\..\components\dfs\src\select.c + + + $PROJ_DIR$\..\..\components\dfs\filesystems\devfs\devfs.c + + + + DeviceDrivers + + $PROJ_DIR$\..\..\components\drivers\misc\pin.c + + + $PROJ_DIR$\..\..\components\drivers\serial\serial.c + + + $PROJ_DIR$\..\..\components\drivers\src\completion.c + + + $PROJ_DIR$\..\..\components\drivers\src\dataqueue.c + + + $PROJ_DIR$\..\..\components\drivers\src\pipe.c + + + $PROJ_DIR$\..\..\components\drivers\src\ringblk_buf.c + + + $PROJ_DIR$\..\..\components\drivers\src\ringbuffer.c + + + $PROJ_DIR$\..\..\components\drivers\src\waitqueue.c + + + $PROJ_DIR$\..\..\components\drivers\src\workqueue.c + + + $PROJ_DIR$\..\..\components\drivers\wlan\wlan_cfg.c + + + $PROJ_DIR$\..\..\components\drivers\wlan\wlan_cmd.c + + + $PROJ_DIR$\..\..\components\drivers\wlan\wlan_dev.c + + + $PROJ_DIR$\..\..\components\drivers\wlan\wlan_lwip.c + + + $PROJ_DIR$\..\..\components\drivers\wlan\wlan_mgnt.c + + + $PROJ_DIR$\..\..\components\drivers\wlan\wlan_prot.c + + + $PROJ_DIR$\..\..\components\drivers\wlan\wlan_workqueue.c + + + + finsh + + $PROJ_DIR$\..\..\components\finsh\shell.c + + + $PROJ_DIR$\..\..\components\finsh\symbol.c + + + $PROJ_DIR$\..\..\components\finsh\cmd.c + + + $PROJ_DIR$\..\..\components\finsh\msh.c + + + $PROJ_DIR$\..\..\components\finsh\msh_cmd.c + + + $PROJ_DIR$\..\..\components\finsh\msh_file.c + + + + libc + + $PROJ_DIR$\..\..\components\libc\compilers\common\gmtime_r.c + + + + dlib + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\environ.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\libc.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\rmtx.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\stdio.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_close.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_lseek.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_mem.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_open.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_read.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_remove.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\syscall_write.c + + + $PROJ_DIR$\..\..\components\libc\compilers\dlib\time.c + + + + lwIP + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\arch\sys_arch.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\api_lib.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\api_msg.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\err.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\netbuf.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\netdb.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\netifapi.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\sockets.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\api\tcpip.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\def.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\dns.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\inet_chksum.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\init.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ip.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\memp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\netif.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\pbuf.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\raw.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\stats.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\sys.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\tcp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\tcp_in.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\tcp_out.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\timeouts.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\udp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\netif\ethernet.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\netif\ethernetif.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\netif\lowpan6.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\autoip.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\dhcp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\etharp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\icmp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\igmp.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_addr.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_frag.c + + + $PROJ_DIR$\..\..\components\net\lwip-2.0.2\src\apps\ping\ping.c + + + $PROJ_DIR$\..\..\components\net\lwip_dhcpd\dhcp_server_raw.c + + + + netdev + + $PROJ_DIR$\..\..\components\net\netdev\src\netdev.c + + + $PROJ_DIR$\..\..\components\net\netdev\src\netdev_ipaddr.c + + + + SAL + + $PROJ_DIR$\..\..\components\net\sal_socket\src\sal_socket.c + + + $PROJ_DIR$\..\..\components\net\sal_socket\socket\net_netdb.c + + + $PROJ_DIR$\..\..\components\net\sal_socket\impl\af_inet_lwip.c + + + $PROJ_DIR$\..\..\components\net\sal_socket\socket\net_sockets.c + + + $PROJ_DIR$\..\..\components\net\sal_socket\dfs_net\dfs_net.c + + + + Utilities + + $PROJ_DIR$\..\..\components\utilities\ulog\ulog.c + + + $PROJ_DIR$\..\..\components\utilities\ulog\backend\console_be.c + + + diff --git a/bsp/w60x/project.eww b/bsp/w60x/project.eww index faa93f37cd..c2cb02eb1e 100644 --- a/bsp/w60x/project.eww +++ b/bsp/w60x/project.eww @@ -1,10 +1,10 @@ - - - - - $WS_DIR$\project.ewp - - - - - + + + + + $WS_DIR$\project.ewp + + + + + diff --git a/bsp/w60x/project.uvoptx b/bsp/w60x/project.uvoptx index 111f5da096..1c8df52d9b 100644 --- a/bsp/w60x/project.uvoptx +++ b/bsp/w60x/project.uvoptx @@ -174,4 +174,1992 @@ + + Kernel + 0 + 0 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 0 + ..\..\src\clock.c + clock.c + 0 + 0 + + + 1 + 2 + 1 + 0 + 0 + 0 + ..\..\src\components.c + components.c + 0 + 0 + + + 1 + 3 + 1 + 0 + 0 + 0 + ..\..\src\cpu.c + cpu.c + 0 + 0 + + + 1 + 4 + 1 + 0 + 0 + 0 + ..\..\src\device.c + device.c + 0 + 0 + + + 1 + 5 + 1 + 0 + 0 + 0 + ..\..\src\idle.c + idle.c + 0 + 0 + + + 1 + 6 + 1 + 0 + 0 + 0 + ..\..\src\ipc.c + ipc.c + 0 + 0 + + + 1 + 7 + 1 + 0 + 0 + 0 + ..\..\src\irq.c + irq.c + 0 + 0 + + + 1 + 8 + 1 + 0 + 0 + 0 + ..\..\src\kservice.c + kservice.c + 0 + 0 + + + 1 + 9 + 1 + 0 + 0 + 0 + ..\..\src\mem.c + mem.c + 0 + 0 + + + 1 + 10 + 1 + 0 + 0 + 0 + ..\..\src\mempool.c + mempool.c + 0 + 0 + + + 1 + 11 + 1 + 0 + 0 + 0 + ..\..\src\object.c + object.c + 0 + 0 + + + 1 + 12 + 1 + 0 + 0 + 0 + ..\..\src\scheduler.c + scheduler.c + 0 + 0 + + + 1 + 13 + 1 + 0 + 0 + 0 + ..\..\src\signal.c + signal.c + 0 + 0 + + + 1 + 14 + 1 + 0 + 0 + 0 + ..\..\src\thread.c + thread.c + 0 + 0 + + + 1 + 15 + 1 + 0 + 0 + 0 + ..\..\src\timer.c + timer.c + 0 + 0 + + + + + Applications + 0 + 0 + 0 + 0 + + 2 + 16 + 1 + 0 + 0 + 0 + applications\main.c + main.c + 0 + 0 + + + + + Drivers + 0 + 0 + 0 + 0 + + 3 + 17 + 1 + 0 + 0 + 0 + drivers\board.c + board.c + 0 + 0 + + + 3 + 18 + 1 + 0 + 0 + 0 + drivers\drv_uart.c + drv_uart.c + 0 + 0 + + + 3 + 19 + 1 + 0 + 0 + 0 + drivers\pin_map.c + pin_map.c + 0 + 0 + + + 3 + 20 + 1 + 0 + 0 + 0 + drivers\drv_wifi.c + drv_wifi.c + 0 + 0 + + + 3 + 21 + 1 + 0 + 0 + 0 + drivers\drv_pin.c + drv_pin.c + 0 + 0 + + + + + Libraries + 0 + 0 + 0 + 0 + + 4 + 22 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Drivers\cpu\wm_cpu.c + wm_cpu.c + 0 + 0 + + + 4 + 23 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Drivers\gpio\wm_gpio.c + wm_gpio.c + 0 + 0 + + + 4 + 24 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Drivers\io\wm_io.c + wm_io.c + 0 + 0 + + + 4 + 25 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Drivers\gpio\wm_gpio_afsel.c + wm_gpio_afsel.c + 0 + 0 + + + 4 + 26 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Drivers\irq\wm_irq.c + wm_irq.c + 0 + 0 + + + 4 + 27 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Drivers\efuse\wm_efuse.c + wm_efuse.c + 0 + 0 + + + 4 + 28 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Drivers\internalflash\wm_internal_fls.c + wm_internal_fls.c + 0 + 0 + + + 4 + 29 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Drivers\spi\wm_hostspi.c + wm_hostspi.c + 0 + 0 + + + 4 + 30 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Drivers\flash\wm_fls.c + wm_fls.c + 0 + 0 + + + 4 + 31 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Drivers\flash\wm_fls_gd25qxx.c + wm_fls_gd25qxx.c + 0 + 0 + + + 4 + 32 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Drivers\dma\wm_dma.c + wm_dma.c + 0 + 0 + + + 4 + 33 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Drivers\timer\wm_timer.c + wm_timer.c + 0 + 0 + + + 4 + 34 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Drivers\watchdog\wm_watchdog.c + wm_watchdog.c + 0 + 0 + + + 4 + 35 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Drivers\i2c\wm_i2c.c + wm_i2c.c + 0 + 0 + + + 4 + 36 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Drivers\pwm\wm_pwm.c + wm_pwm.c + 0 + 0 + + + 4 + 37 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Drivers\adc\wm_adc.c + wm_adc.c + 0 + 0 + + + 4 + 38 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Drivers\pmu\wm_pmu.c + wm_pmu.c + 0 + 0 + + + 4 + 39 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Drivers\rtc\wm_rtc.c + wm_rtc.c + 0 + 0 + + + 4 + 40 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\Params\wm_param.c + wm_param.c + 0 + 0 + + + 4 + 41 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\fwup\wm_fwup.c + wm_fwup.c + 0 + 0 + + + 4 + 42 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\wm_crypto_hard.c + wm_crypto_hard.c + 0 + 0 + + + 4 + 43 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\digest\hmac.c + hmac.c + 0 + 0 + + + 4 + 44 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\digest\md2.c + md2.c + 0 + 0 + + + 4 + 45 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\digest\md4.c + md4.c + 0 + 0 + + + 4 + 46 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\digest\sha224.c + sha224.c + 0 + 0 + + + 4 + 47 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\digest\sha384.c + sha384.c + 0 + 0 + + + 4 + 48 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\digest\sha512.c + sha512.c + 0 + 0 + + + 4 + 49 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\keyformat\asn1.c + asn1.c + 0 + 0 + + + 4 + 50 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\keyformat\base64.c + base64.c + 0 + 0 + + + 4 + 51 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\keyformat\x509.c + x509.c + 0 + 0 + + + 4 + 52 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\math\pstm_mul_comba.c + pstm_mul_comba.c + 0 + 0 + + + 4 + 53 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\prng\prng.c + prng.c + 0 + 0 + + + 4 + 54 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\prng\yarrow.c + yarrow.c + 0 + 0 + + + 4 + 55 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\pubkey\dh.c + dh.c + 0 + 0 + + + 4 + 56 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\pubkey\ecc.c + ecc.c + 0 + 0 + + + 4 + 57 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\pubkey\pkcs.c + pkcs.c + 0 + 0 + + + 4 + 58 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\pubkey\pubkey.c + pubkey.c + 0 + 0 + + + 4 + 59 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\pubkey\rsa.c + rsa.c + 0 + 0 + + + 4 + 60 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\symmetric\aesGCM.c + aesGCM.c + 0 + 0 + + + 4 + 61 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\symmetric\des3.c + des3.c + 0 + 0 + + + 4 + 62 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\symmetric\idea.c + idea.c + 0 + 0 + + + 4 + 63 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\symmetric\rc2.c + rc2.c + 0 + 0 + + + 4 + 64 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Common\crypto\symmetric\seed.c + seed.c + 0 + 0 + + + 4 + 65 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\rtthread\rtthread_patch.c + rtthread_patch.c + 0 + 0 + + + 4 + 66 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\rtthread\utils\utils.c + utils.c + 0 + 0 + + + 4 + 67 + 2 + 0 + 0 + 0 + packages\wm_libraries-latest\rtthread\startup\armcc\startup_venus.S + startup_venus.S + 0 + 0 + + + 4 + 68 + 1 + 0 + 0 + 0 + packages\wm_libraries-latest\Platform\Boot\armcc\misc.c + misc.c + 0 + 0 + + + 4 + 69 + 4 + 0 + 0 + 0 + packages\wm_libraries-latest\Lib\Wlan\libwlan_mdk.lib + libwlan_mdk.lib + 0 + 0 + + + 4 + 70 + 4 + 0 + 0 + 0 + packages\wm_libraries-latest\Lib\oneshot\libwmoneshot_mdk.lib + libwmoneshot_mdk.lib + 0 + 0 + + + + + cpu + 0 + 0 + 0 + 0 + + 5 + 71 + 1 + 0 + 0 + 0 + ..\..\libcpu\arm\common\backtrace.c + backtrace.c + 0 + 0 + + + 5 + 72 + 1 + 0 + 0 + 0 + ..\..\libcpu\arm\common\div0.c + div0.c + 0 + 0 + + + 5 + 73 + 1 + 0 + 0 + 0 + ..\..\libcpu\arm\common\showmem.c + showmem.c + 0 + 0 + + + 5 + 74 + 1 + 0 + 0 + 0 + ..\..\libcpu\arm\cortex-m3\cpuport.c + cpuport.c + 0 + 0 + + + 5 + 75 + 2 + 0 + 0 + 0 + ..\..\libcpu\arm\cortex-m3\context_rvds.S + context_rvds.S + 0 + 0 + + + + + Filesystem + 0 + 0 + 0 + 0 + + 6 + 76 + 1 + 0 + 0 + 0 + ..\..\components\dfs\src\dfs.c + dfs.c + 0 + 0 + + + 6 + 77 + 1 + 0 + 0 + 0 + ..\..\components\dfs\src\dfs_file.c + dfs_file.c + 0 + 0 + + + 6 + 78 + 1 + 0 + 0 + 0 + ..\..\components\dfs\src\dfs_fs.c + dfs_fs.c + 0 + 0 + + + 6 + 79 + 1 + 0 + 0 + 0 + ..\..\components\dfs\src\dfs_posix.c + dfs_posix.c + 0 + 0 + + + 6 + 80 + 1 + 0 + 0 + 0 + ..\..\components\dfs\src\poll.c + poll.c + 0 + 0 + + + 6 + 81 + 1 + 0 + 0 + 0 + ..\..\components\dfs\src\select.c + select.c + 0 + 0 + + + 6 + 82 + 1 + 0 + 0 + 0 + ..\..\components\dfs\filesystems\devfs\devfs.c + devfs.c + 0 + 0 + + + + + DeviceDrivers + 0 + 0 + 0 + 0 + + 7 + 83 + 1 + 0 + 0 + 0 + ..\..\components\drivers\misc\pin.c + pin.c + 0 + 0 + + + 7 + 84 + 1 + 0 + 0 + 0 + ..\..\components\drivers\serial\serial.c + serial.c + 0 + 0 + + + 7 + 85 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\completion.c + completion.c + 0 + 0 + + + 7 + 86 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\dataqueue.c + dataqueue.c + 0 + 0 + + + 7 + 87 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\pipe.c + pipe.c + 0 + 0 + + + 7 + 88 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\ringblk_buf.c + ringblk_buf.c + 0 + 0 + + + 7 + 89 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\ringbuffer.c + ringbuffer.c + 0 + 0 + + + 7 + 90 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\waitqueue.c + waitqueue.c + 0 + 0 + + + 7 + 91 + 1 + 0 + 0 + 0 + ..\..\components\drivers\src\workqueue.c + workqueue.c + 0 + 0 + + + 7 + 92 + 1 + 0 + 0 + 0 + ..\..\components\drivers\wlan\wlan_cfg.c + wlan_cfg.c + 0 + 0 + + + 7 + 93 + 1 + 0 + 0 + 0 + ..\..\components\drivers\wlan\wlan_cmd.c + wlan_cmd.c + 0 + 0 + + + 7 + 94 + 1 + 0 + 0 + 0 + ..\..\components\drivers\wlan\wlan_dev.c + wlan_dev.c + 0 + 0 + + + 7 + 95 + 1 + 0 + 0 + 0 + ..\..\components\drivers\wlan\wlan_lwip.c + wlan_lwip.c + 0 + 0 + + + 7 + 96 + 1 + 0 + 0 + 0 + ..\..\components\drivers\wlan\wlan_mgnt.c + wlan_mgnt.c + 0 + 0 + + + 7 + 97 + 1 + 0 + 0 + 0 + ..\..\components\drivers\wlan\wlan_prot.c + wlan_prot.c + 0 + 0 + + + 7 + 98 + 1 + 0 + 0 + 0 + ..\..\components\drivers\wlan\wlan_workqueue.c + wlan_workqueue.c + 0 + 0 + + + + + finsh + 0 + 0 + 0 + 0 + + 8 + 99 + 1 + 0 + 0 + 0 + ..\..\components\finsh\shell.c + shell.c + 0 + 0 + + + 8 + 100 + 1 + 0 + 0 + 0 + ..\..\components\finsh\symbol.c + symbol.c + 0 + 0 + + + 8 + 101 + 1 + 0 + 0 + 0 + ..\..\components\finsh\cmd.c + cmd.c + 0 + 0 + + + 8 + 102 + 1 + 0 + 0 + 0 + ..\..\components\finsh\msh.c + msh.c + 0 + 0 + + + 8 + 103 + 1 + 0 + 0 + 0 + ..\..\components\finsh\msh_cmd.c + msh_cmd.c + 0 + 0 + + + 8 + 104 + 1 + 0 + 0 + 0 + ..\..\components\finsh\msh_file.c + msh_file.c + 0 + 0 + + + + + libc + 0 + 0 + 0 + 0 + + 9 + 105 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\libc.c + libc.c + 0 + 0 + + + 9 + 106 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\mem_std.c + mem_std.c + 0 + 0 + + + 9 + 107 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\stdio.c + stdio.c + 0 + 0 + + + 9 + 108 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\stubs.c + stubs.c + 0 + 0 + + + 9 + 109 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\armlibc\time.c + time.c + 0 + 0 + + + 9 + 110 + 1 + 0 + 0 + 0 + ..\..\components\libc\compilers\common\gmtime_r.c + gmtime_r.c + 0 + 0 + + + + + lwIP + 0 + 0 + 0 + 0 + + 10 + 111 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\arch\sys_arch.c + sys_arch.c + 0 + 0 + + + 10 + 112 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\api_lib.c + api_lib.c + 0 + 0 + + + 10 + 113 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\api_msg.c + api_msg.c + 0 + 0 + + + 10 + 114 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\err.c + err.c + 0 + 0 + + + 10 + 115 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\netbuf.c + netbuf.c + 0 + 0 + + + 10 + 116 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\netdb.c + netdb.c + 0 + 0 + + + 10 + 117 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\netifapi.c + netifapi.c + 0 + 0 + + + 10 + 118 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\sockets.c + sockets.c + 0 + 0 + + + 10 + 119 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\api\tcpip.c + tcpip.c + 0 + 0 + + + 10 + 120 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\def.c + def.c + 0 + 0 + + + 10 + 121 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\dns.c + dns.c + 0 + 0 + + + 10 + 122 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\inet_chksum.c + inet_chksum.c + 0 + 0 + + + 10 + 123 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\init.c + init.c + 0 + 0 + + + 10 + 124 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ip.c + ip.c + 0 + 0 + + + 10 + 125 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\memp.c + memp.c + 0 + 0 + + + 10 + 126 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\netif.c + netif.c + 0 + 0 + + + 10 + 127 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\pbuf.c + pbuf.c + 0 + 0 + + + 10 + 128 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\raw.c + raw.c + 0 + 0 + + + 10 + 129 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\stats.c + stats.c + 0 + 0 + + + 10 + 130 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\sys.c + sys.c + 0 + 0 + + + 10 + 131 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\tcp.c + tcp.c + 0 + 0 + + + 10 + 132 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\tcp_in.c + tcp_in.c + 0 + 0 + + + 10 + 133 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\tcp_out.c + tcp_out.c + 0 + 0 + + + 10 + 134 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\timeouts.c + timeouts.c + 0 + 0 + + + 10 + 135 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\udp.c + udp.c + 0 + 0 + + + 10 + 136 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\netif\ethernet.c + ethernet.c + 0 + 0 + + + 10 + 137 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\netif\ethernetif.c + ethernetif.c + 0 + 0 + + + 10 + 138 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\netif\lowpan6.c + lowpan6.c + 0 + 0 + + + 10 + 139 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\autoip.c + autoip.c + 0 + 0 + + + 10 + 140 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\dhcp.c + dhcp.c + 0 + 0 + + + 10 + 141 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\etharp.c + etharp.c + 0 + 0 + + + 10 + 142 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\icmp.c + icmp.c + 0 + 0 + + + 10 + 143 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\igmp.c + igmp.c + 0 + 0 + + + 10 + 144 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4.c + ip4.c + 0 + 0 + + + 10 + 145 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_addr.c + ip4_addr.c + 0 + 0 + + + 10 + 146 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_frag.c + ip4_frag.c + 0 + 0 + + + 10 + 147 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip-2.0.2\src\apps\ping\ping.c + ping.c + 0 + 0 + + + 10 + 148 + 1 + 0 + 0 + 0 + ..\..\components\net\lwip_dhcpd\dhcp_server_raw.c + dhcp_server_raw.c + 0 + 0 + + + + + netdev + 0 + 0 + 0 + 0 + + 11 + 149 + 1 + 0 + 0 + 0 + ..\..\components\net\netdev\src\netdev.c + netdev.c + 0 + 0 + + + 11 + 150 + 1 + 0 + 0 + 0 + ..\..\components\net\netdev\src\netdev_ipaddr.c + netdev_ipaddr.c + 0 + 0 + + + + + SAL + 0 + 0 + 0 + 0 + + 12 + 151 + 1 + 0 + 0 + 0 + ..\..\components\net\sal_socket\src\sal_socket.c + sal_socket.c + 0 + 0 + + + 12 + 152 + 1 + 0 + 0 + 0 + ..\..\components\net\sal_socket\socket\net_netdb.c + net_netdb.c + 0 + 0 + + + 12 + 153 + 1 + 0 + 0 + 0 + ..\..\components\net\sal_socket\impl\af_inet_lwip.c + af_inet_lwip.c + 0 + 0 + + + 12 + 154 + 1 + 0 + 0 + 0 + ..\..\components\net\sal_socket\socket\net_sockets.c + net_sockets.c + 0 + 0 + + + 12 + 155 + 1 + 0 + 0 + 0 + ..\..\components\net\sal_socket\dfs_net\dfs_net.c + dfs_net.c + 0 + 0 + + + + + Utilities + 0 + 0 + 0 + 0 + + 13 + 156 + 1 + 0 + 0 + 0 + ..\..\components\utilities\ulog\ulog.c + ulog.c + 0 + 0 + + + 13 + 157 + 1 + 0 + 0 + 0 + ..\..\components\utilities\ulog\backend\console_be.c + console_be.c + 0 + 0 + + + diff --git a/bsp/w60x/project.uvprojx b/bsp/w60x/project.uvprojx index 25ef6aff5b..e37532fc91 100644 --- a/bsp/w60x/project.uvprojx +++ b/bsp/w60x/project.uvprojx @@ -1,7 +1,10 @@ + 2.1 +
### uVision Project, (C) Keil Software
+ rt-thread @@ -13,31 +16,31 @@ ARMCM3 ARM - ARM.CMSIS.5.4.0 + ARM.CMSIS.5.3.0 http://www.keil.com/pack/ IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M3") CLOCK(12000000) ESEL ELITTLE - - + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000) 0 $$Device:ARMCM3$Device\ARM\ARMCM3\Include\ARMCM3.h - - - - - - - - - + + + + + + + + + $$Device:ARMCM3$Device\ARM\SVD\ARMCM3.svd 0 0 - - - - - + + + + + 0 0 @@ -59,8 +62,8 @@ 0 0 - - + + 0 0 0 @@ -69,8 +72,8 @@ 0 0 - - + + 0 0 0 @@ -87,7 +90,7 @@ 0 0 - + 0 @@ -101,8 +104,8 @@ 0 0 3 - - + + 1 @@ -136,10 +139,10 @@ 0 Segger\JL2CM3.dll "" () - - - - + + + + 0 @@ -172,7 +175,7 @@ 0 0 "Cortex-M3" - + 0 0 0 @@ -181,7 +184,6 @@ 0 0 0 - 0 0 0 8 @@ -305,7 +307,7 @@ 0x0 - + 1 @@ -334,8 +336,8 @@ --c99 --gnu RT_USING_ARM_LIBC, WM_W600 - - .;..\..\include;applications;.;drivers;packages\wm_libraries-latest;packages\wm_libraries-latest\Include;packages\wm_libraries-latest\Include\Driver;packages\wm_libraries-latest\Platform\Drivers\spi;packages\wm_libraries-latest\Include\OS;packages\wm_libraries-latest\Include\Platform;packages\wm_libraries-latest\Include\OS;packages\wm_libraries-latest\Include\WiFi;packages\wm_libraries-latest\Platform\Inc;packages\wm_libraries-latest\Platform\Common\Params;packages\wm_libraries-latest\Platform\Common\crypto;packages\wm_libraries-latest\Platform\Common\crypto\digest;packages\wm_libraries-latest\Platform\Common\crypto\math;packages\wm_libraries-latest\Platform\Common\crypto\symmetric;packages\wm_libraries-latest\Platform\Boot\gcc;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m3;..\..\components\dfs\include;..\..\components\dfs\filesystems\devfs;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\wlan;..\..\components\finsh;..\..\components\libc\compilers\armlibc;..\..\components\libc\compilers\common;..\..\components\net\lwip-2.0.2\src;..\..\components\net\lwip-2.0.2\src\include;..\..\components\net\lwip-2.0.2\src\include\ipv4;..\..\components\net\lwip-2.0.2\src\arch\include;..\..\components\net\lwip-2.0.2\src\include\netif;..\..\components\net\lwip_dhcpd;..\..\components\net\sal_socket\include;..\..\components\net\sal_socket\include\socket;..\..\components\net\sal_socket\impl;..\..\components\net\sal_socket\include\dfs_net;..\..\components\net\sal_socket\include\dfs_net\sys_select;..\..\components\net\sal_socket\include\socket\sys_socket;..\..\components\utilities\ulog + + .;..\..\include;applications;drivers;packages\wm_libraries-latest;packages\wm_libraries-latest\Include;packages\wm_libraries-latest\Include\Driver;packages\wm_libraries-latest\Platform\Drivers\spi;packages\wm_libraries-latest\Include\OS;packages\wm_libraries-latest\Include\Platform;packages\wm_libraries-latest\Include\OS;packages\wm_libraries-latest\Include\WiFi;packages\wm_libraries-latest\Platform\Inc;packages\wm_libraries-latest\Platform\Common\Params;packages\wm_libraries-latest\Platform\Common\crypto;packages\wm_libraries-latest\Platform\Common\crypto\digest;packages\wm_libraries-latest\Platform\Common\crypto\math;packages\wm_libraries-latest\Platform\Common\crypto\symmetric;packages\wm_libraries-latest\Platform\Boot\gcc;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m3;..\..\components\dfs\include;..\..\components\dfs\filesystems\devfs;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\wlan;..\..\components\finsh;..\..\components\libc\compilers\armlibc;..\..\components\libc\compilers\common;..\..\components\net\lwip-2.0.2\src;..\..\components\net\lwip-2.0.2\src\include;..\..\components\net\lwip-2.0.2\src\include\ipv4;..\..\components\net\lwip-2.0.2\src\arch\include;..\..\components\net\lwip-2.0.2\src\include\netif;..\..\components\net\lwip_dhcpd;..\..\components\net\netdev\include;..\..\components\net\sal_socket\include;..\..\components\net\sal_socket\include\socket;..\..\components\net\sal_socket\impl;..\..\components\net\sal_socket\include\dfs_net;..\..\components\net\sal_socket\include\dfs_net\sys_select;..\..\components\net\sal_socket\include\socket\sys_socket;..\..\components\utilities\ulog @@ -350,10 +352,10 @@ 0 0 - - - - + + + + @@ -365,13 +367,13 @@ 0 0x08000000 0x20000000 - - - - - - - + + + + + + + @@ -384,99 +386,71 @@ 1 ..\..\src\clock.c
-
- components.c 1 ..\..\src\components.c - - cpu.c 1 ..\..\src\cpu.c - - device.c 1 ..\..\src\device.c - - idle.c 1 ..\..\src\idle.c - - ipc.c 1 ..\..\src\ipc.c - - irq.c 1 ..\..\src\irq.c - - kservice.c 1 ..\..\src\kservice.c - - mem.c 1 ..\..\src\mem.c - - mempool.c 1 ..\..\src\mempool.c - - object.c 1 ..\..\src\object.c - - scheduler.c 1 ..\..\src\scheduler.c - - signal.c 1 ..\..\src\signal.c - - thread.c 1 ..\..\src\thread.c - - timer.c 1 @@ -502,29 +476,21 @@ 1 drivers\board.c - - drv_uart.c 1 drivers\drv_uart.c - - pin_map.c 1 drivers\pin_map.c - - drv_wifi.c 1 drivers\drv_wifi.c - - drv_pin.c 1 @@ -540,337 +506,241 @@ 1 packages\wm_libraries-latest\Platform\Drivers\cpu\wm_cpu.c - - wm_gpio.c 1 packages\wm_libraries-latest\Platform\Drivers\gpio\wm_gpio.c - - wm_io.c 1 packages\wm_libraries-latest\Platform\Drivers\io\wm_io.c - - wm_gpio_afsel.c 1 packages\wm_libraries-latest\Platform\Drivers\gpio\wm_gpio_afsel.c - - wm_irq.c 1 packages\wm_libraries-latest\Platform\Drivers\irq\wm_irq.c - - wm_efuse.c 1 packages\wm_libraries-latest\Platform\Drivers\efuse\wm_efuse.c - - wm_internal_fls.c 1 packages\wm_libraries-latest\Platform\Drivers\internalflash\wm_internal_fls.c - - wm_hostspi.c 1 packages\wm_libraries-latest\Platform\Drivers\spi\wm_hostspi.c - - wm_fls.c 1 packages\wm_libraries-latest\Platform\Drivers\flash\wm_fls.c - - wm_fls_gd25qxx.c 1 packages\wm_libraries-latest\Platform\Drivers\flash\wm_fls_gd25qxx.c - - wm_dma.c 1 packages\wm_libraries-latest\Platform\Drivers\dma\wm_dma.c - - wm_timer.c 1 packages\wm_libraries-latest\Platform\Drivers\timer\wm_timer.c - - wm_watchdog.c 1 packages\wm_libraries-latest\Platform\Drivers\watchdog\wm_watchdog.c - - wm_i2c.c 1 packages\wm_libraries-latest\Platform\Drivers\i2c\wm_i2c.c - - wm_pwm.c 1 packages\wm_libraries-latest\Platform\Drivers\pwm\wm_pwm.c - - wm_adc.c 1 packages\wm_libraries-latest\Platform\Drivers\adc\wm_adc.c - - wm_pmu.c 1 packages\wm_libraries-latest\Platform\Drivers\pmu\wm_pmu.c - - wm_rtc.c 1 packages\wm_libraries-latest\Platform\Drivers\rtc\wm_rtc.c - - wm_param.c 1 packages\wm_libraries-latest\Platform\Common\Params\wm_param.c - - wm_fwup.c 1 packages\wm_libraries-latest\Platform\Common\fwup\wm_fwup.c - - wm_crypto_hard.c 1 packages\wm_libraries-latest\Platform\Common\crypto\wm_crypto_hard.c - - hmac.c 1 packages\wm_libraries-latest\Platform\Common\crypto\digest\hmac.c - - md2.c 1 packages\wm_libraries-latest\Platform\Common\crypto\digest\md2.c - - md4.c 1 packages\wm_libraries-latest\Platform\Common\crypto\digest\md4.c - - sha224.c 1 packages\wm_libraries-latest\Platform\Common\crypto\digest\sha224.c - - sha384.c 1 packages\wm_libraries-latest\Platform\Common\crypto\digest\sha384.c - - sha512.c 1 packages\wm_libraries-latest\Platform\Common\crypto\digest\sha512.c - - asn1.c 1 packages\wm_libraries-latest\Platform\Common\crypto\keyformat\asn1.c - - base64.c 1 packages\wm_libraries-latest\Platform\Common\crypto\keyformat\base64.c - - x509.c 1 packages\wm_libraries-latest\Platform\Common\crypto\keyformat\x509.c - - pstm_mul_comba.c 1 packages\wm_libraries-latest\Platform\Common\crypto\math\pstm_mul_comba.c - - prng.c 1 packages\wm_libraries-latest\Platform\Common\crypto\prng\prng.c - - yarrow.c 1 packages\wm_libraries-latest\Platform\Common\crypto\prng\yarrow.c - - dh.c 1 packages\wm_libraries-latest\Platform\Common\crypto\pubkey\dh.c - - ecc.c 1 packages\wm_libraries-latest\Platform\Common\crypto\pubkey\ecc.c - - pkcs.c 1 packages\wm_libraries-latest\Platform\Common\crypto\pubkey\pkcs.c - - pubkey.c 1 packages\wm_libraries-latest\Platform\Common\crypto\pubkey\pubkey.c - - rsa.c 1 packages\wm_libraries-latest\Platform\Common\crypto\pubkey\rsa.c - - aesGCM.c 1 packages\wm_libraries-latest\Platform\Common\crypto\symmetric\aesGCM.c - - des3.c 1 packages\wm_libraries-latest\Platform\Common\crypto\symmetric\des3.c - - idea.c 1 packages\wm_libraries-latest\Platform\Common\crypto\symmetric\idea.c - - rc2.c 1 packages\wm_libraries-latest\Platform\Common\crypto\symmetric\rc2.c - - seed.c 1 packages\wm_libraries-latest\Platform\Common\crypto\symmetric\seed.c - - rtthread_patch.c 1 packages\wm_libraries-latest\rtthread\rtthread_patch.c - - utils.c 1 packages\wm_libraries-latest\rtthread\utils\utils.c - - startup_venus.S 2 packages\wm_libraries-latest\rtthread\startup\armcc\startup_venus.S - - misc.c 1 packages\wm_libraries-latest\Platform\Boot\armcc\misc.c - - libwlan_mdk.lib 4 packages\wm_libraries-latest\Lib\Wlan\libwlan_mdk.lib - - libwmoneshot_mdk.lib 4 @@ -886,29 +756,21 @@ 1 ..\..\libcpu\arm\common\backtrace.c - - div0.c 1 ..\..\libcpu\arm\common\div0.c - - showmem.c 1 ..\..\libcpu\arm\common\showmem.c - - cpuport.c 1 ..\..\libcpu\arm\cortex-m3\cpuport.c - - context_rvds.S 2 @@ -924,43 +786,31 @@ 1 ..\..\components\dfs\src\dfs.c - - dfs_file.c 1 ..\..\components\dfs\src\dfs_file.c - - dfs_fs.c 1 ..\..\components\dfs\src\dfs_fs.c - - dfs_posix.c 1 ..\..\components\dfs\src\dfs_posix.c - - poll.c 1 ..\..\components\dfs\src\poll.c - - select.c 1 ..\..\components\dfs\src\select.c - - devfs.c 1 @@ -976,106 +826,76 @@ 1 ..\..\components\drivers\misc\pin.c - - serial.c 1 ..\..\components\drivers\serial\serial.c - - completion.c 1 ..\..\components\drivers\src\completion.c - - dataqueue.c 1 ..\..\components\drivers\src\dataqueue.c - - pipe.c 1 ..\..\components\drivers\src\pipe.c - - ringblk_buf.c 1 ..\..\components\drivers\src\ringblk_buf.c - - ringbuffer.c 1 ..\..\components\drivers\src\ringbuffer.c - - waitqueue.c 1 ..\..\components\drivers\src\waitqueue.c - - workqueue.c 1 ..\..\components\drivers\src\workqueue.c - - wlan_cfg.c 1 ..\..\components\drivers\wlan\wlan_cfg.c - - wlan_cmd.c 1 ..\..\components\drivers\wlan\wlan_cmd.c - - wlan_dev.c 1 ..\..\components\drivers\wlan\wlan_dev.c - - wlan_lwip.c 1 ..\..\components\drivers\wlan\wlan_lwip.c - - wlan_mgnt.c 1 ..\..\components\drivers\wlan\wlan_mgnt.c - - wlan_prot.c 1 ..\..\components\drivers\wlan\wlan_prot.c - - wlan_workqueue.c 1 @@ -1091,36 +911,26 @@ 1 ..\..\components\finsh\shell.c - - symbol.c 1 ..\..\components\finsh\symbol.c - - cmd.c 1 ..\..\components\finsh\cmd.c - - msh.c 1 ..\..\components\finsh\msh.c - - msh_cmd.c 1 ..\..\components\finsh\msh_cmd.c - - msh_file.c 1 @@ -1136,36 +946,26 @@ 1 ..\..\components\libc\compilers\armlibc\libc.c - - mem_std.c 1 ..\..\components\libc\compilers\armlibc\mem_std.c - - stdio.c 1 ..\..\components\libc\compilers\armlibc\stdio.c - - stubs.c 1 ..\..\components\libc\compilers\armlibc\stubs.c - - time.c 1 ..\..\components\libc\compilers\armlibc\time.c - - gmtime_r.c 1 @@ -1181,253 +981,186 @@ 1 ..\..\components\net\lwip-2.0.2\src\arch\sys_arch.c - - api_lib.c 1 ..\..\components\net\lwip-2.0.2\src\api\api_lib.c - - api_msg.c 1 ..\..\components\net\lwip-2.0.2\src\api\api_msg.c - - err.c 1 ..\..\components\net\lwip-2.0.2\src\api\err.c - - netbuf.c 1 ..\..\components\net\lwip-2.0.2\src\api\netbuf.c - - netdb.c 1 ..\..\components\net\lwip-2.0.2\src\api\netdb.c - - netifapi.c 1 ..\..\components\net\lwip-2.0.2\src\api\netifapi.c - - sockets.c 1 ..\..\components\net\lwip-2.0.2\src\api\sockets.c - - tcpip.c 1 ..\..\components\net\lwip-2.0.2\src\api\tcpip.c - - def.c 1 ..\..\components\net\lwip-2.0.2\src\core\def.c - - dns.c 1 ..\..\components\net\lwip-2.0.2\src\core\dns.c - - inet_chksum.c 1 ..\..\components\net\lwip-2.0.2\src\core\inet_chksum.c - - init.c 1 ..\..\components\net\lwip-2.0.2\src\core\init.c - - ip.c 1 ..\..\components\net\lwip-2.0.2\src\core\ip.c - - memp.c 1 ..\..\components\net\lwip-2.0.2\src\core\memp.c - - netif.c 1 ..\..\components\net\lwip-2.0.2\src\core\netif.c - - pbuf.c 1 ..\..\components\net\lwip-2.0.2\src\core\pbuf.c - - raw.c 1 ..\..\components\net\lwip-2.0.2\src\core\raw.c - - stats.c 1 ..\..\components\net\lwip-2.0.2\src\core\stats.c - - sys.c 1 ..\..\components\net\lwip-2.0.2\src\core\sys.c - - tcp.c 1 ..\..\components\net\lwip-2.0.2\src\core\tcp.c - - tcp_in.c 1 ..\..\components\net\lwip-2.0.2\src\core\tcp_in.c - - tcp_out.c 1 ..\..\components\net\lwip-2.0.2\src\core\tcp_out.c - - timeouts.c 1 ..\..\components\net\lwip-2.0.2\src\core\timeouts.c - - udp.c 1 ..\..\components\net\lwip-2.0.2\src\core\udp.c - - ethernet.c 1 ..\..\components\net\lwip-2.0.2\src\netif\ethernet.c - - ethernetif.c 1 ..\..\components\net\lwip-2.0.2\src\netif\ethernetif.c - - lowpan6.c 1 ..\..\components\net\lwip-2.0.2\src\netif\lowpan6.c - - autoip.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\autoip.c - - dhcp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\dhcp.c - - etharp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\etharp.c - - icmp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\icmp.c - - igmp.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\igmp.c - - ip4.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4.c - - ip4_addr.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_addr.c - - ip4_frag.c 1 ..\..\components\net\lwip-2.0.2\src\core\ipv4\ip4_frag.c - - + + ping.c + 1 + ..\..\components\net\lwip-2.0.2\src\apps\ping\ping.c + dhcp_server_raw.c 1 @@ -1436,43 +1169,43 @@
- SAL + netdev - sal_ipaddr.c + netdev.c 1 - ..\..\components\net\sal_socket\src\sal_ipaddr.c + ..\..\components\net\netdev\src\netdev.c + + + netdev_ipaddr.c + 1 + ..\..\components\net\netdev\src\netdev_ipaddr.c + + + SAL sal_socket.c 1 ..\..\components\net\sal_socket\src\sal_socket.c - - net_netdb.c 1 ..\..\components\net\sal_socket\socket\net_netdb.c - - af_inet_lwip.c 1 ..\..\components\net\sal_socket\impl\af_inet_lwip.c - - net_sockets.c 1 ..\..\components\net\sal_socket\socket\net_sockets.c - - dfs_net.c 1 @@ -1488,8 +1221,6 @@ 1 ..\..\components\utilities\ulog\ulog.c - - console_be.c 1 @@ -1500,9 +1231,11 @@
+ - - - + + + + diff --git a/bsp/w60x/rtconfig.h b/bsp/w60x/rtconfig.h index afd7821825..d88287407b 100644 --- a/bsp/w60x/rtconfig.h +++ b/bsp/w60x/rtconfig.h @@ -83,6 +83,9 @@ #define RT_USING_DEVICE_IPC #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_SERIAL_USING_DMA #define RT_SERIAL_RB_BUFSZ 64 @@ -123,7 +126,13 @@ #define SAL_USING_LWIP #define SAL_USING_POSIX -#define SAL_PROTO_FAMILIES_NUM 4 + +/* Network interface device */ + +#define RT_USING_NETDEV +#define NETDEV_USING_IFCONFIG +#define NETDEV_USING_PING +#define NETDEV_USING_NETSTAT /* light weight TCP/IP stack */ @@ -161,11 +170,13 @@ #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_NETIF_LOOPBACK 0 +#define RT_LWIP_USING_PING /* Modbus master and slave stack */ diff --git a/components/finsh/msh_cmd.c b/components/finsh/msh_cmd.c index 3c90542456..4a9c67fa75 100644 --- a/components/finsh/msh_cmd.c +++ b/components/finsh/msh_cmd.c @@ -291,97 +291,6 @@ int cmd_echo(int argc, char** argv) FINSH_FUNCTION_EXPORT_ALIAS(cmd_echo, __cmd_echo, echo string to file); #endif -#ifdef RT_USING_LWIP -int cmd_ifconfig(int argc, char **argv) -{ - extern void list_if(void); - extern void set_if(char *netif_name, char *ip_addr, char *gw_addr, char *nm_addr); - - - if (argc == 1) - { - list_if(); - } - else if (argc == 5) - { - rt_kprintf("config : %s\n", argv[1]); - rt_kprintf("IP addr: %s\n", argv[2]); - rt_kprintf("Gateway: %s\n", argv[3]); - rt_kprintf("netmask: %s\n", argv[4]); - set_if(argv[1], argv[2], argv[3], argv[4]); - } - else - { - rt_kprintf("bad parameter! e.g: ifconfig e0 192.168.1.30 192.168.1.1 255.255.255.0\n"); - } - - return 0; -} -FINSH_FUNCTION_EXPORT_ALIAS(cmd_ifconfig, __cmd_ifconfig, list the information of network interfaces); - -#ifdef RT_LWIP_DNS -#include -#include -#include -#include - -int cmd_dns(int argc, char **argv) -{ - extern void set_dns(char* dns_server); - - if (argc == 1) - { - int index; - -#if (LWIP_VERSION) < 0x02000000U - ip_addr_t ip_addr; - for(index=0; indexat_closesocket(socket) != 0) { - LOG_E("AT socket (%d) closesocket failed!", socket); free_socket(sock); return -1; } @@ -442,7 +441,6 @@ int at_shutdown(int socket, int how) { if (at_dev_ops->at_closesocket(socket) != 0) { - LOG_E("AT socket (%d) shutdown failed!", socket); free_socket(sock); return -1; } @@ -468,7 +466,13 @@ static int socketaddr_to_ipaddr_port(const struct sockaddr *sockaddr, ip_addr_t { const struct sockaddr_in* sin = (const struct sockaddr_in*) (const void *) sockaddr; +#if NETDEV_IPV4 && NETDEV_IPV6 (*addr).u_addr.ip4.addr = sin->sin_addr.s_addr; +#elif NETDEV_IPV4 + (*addr).addr = sin->sin_addr.s_addr; +#elif NETDEV_IPV6 + LOG_E("not support IPV6."); +#endif /* NETDEV_IPV4 && NETDEV_IPV6 */ *port = (uint16_t) HTONS_PORT(sin->sin_port); @@ -546,7 +550,7 @@ int at_connect(int socket, const struct sockaddr *name, socklen_t namelen) if (sock->state != AT_SOCKET_NONE) { - LOG_E("Socket %d connect state is %d.", sock->socket, sock->state); + LOG_E("Socket(%d) connect state is %d.", sock->socket, sock->state); result = -1; goto __exit; } @@ -557,7 +561,6 @@ int at_connect(int socket, const struct sockaddr *name, socklen_t namelen) if (at_dev_ops->at_connect(socket, ipstr, remote_port, sock->type, RT_TRUE) < 0) { - LOG_E("AT socket(%d) connect failed!", socket); result = -1; goto __exit; } @@ -623,7 +626,6 @@ int at_recvfrom(int socket, void *mem, size_t len, int flags, struct sockaddr *f if (at_dev_ops->at_connect(socket, ipstr, remote_port, sock->type, RT_TRUE) < 0) { - LOG_E("AT socket UDP connect failed!"); result = -1; goto __exit; } @@ -737,7 +739,7 @@ int at_recv(int s, void *mem, size_t len, int flags) int at_sendto(int socket, const void *data, size_t size, int flags, const struct sockaddr *to, socklen_t tolen) { - struct at_socket *sock = RT_NULL; + struct at_socket *sock; int len, result = 0; if (at_dev_ops == RT_NULL) @@ -789,7 +791,6 @@ int at_sendto(int socket, const void *data, size_t size, int flags, const struct if (at_dev_ops->at_connect(socket, ipstr, remote_port, sock->type, RT_TRUE) < 0) { - LOG_E("AT socket (%d) UDP connect failed!", socket); result = -1; goto __exit; } @@ -999,7 +1000,6 @@ struct hostent *at_gethostbyname(const char *name) { if (at_dev_ops->at_domain_resolve(name, ipstr) < 0) { - LOG_E("AT domain (%s) resolve error!", name); return RT_NULL; } } @@ -1008,8 +1008,14 @@ struct hostent *at_gethostbyname(const char *name) strncpy(ipstr, name, strlen(name)); } +#if NETDEV_IPV4 && NETDEV_IPV6 addr.u_addr.ip4.addr = ipstr_to_u32(ipstr); - +#elif NETDEV_IPV4 + addr.addr = ipstr_to_u32(ipstr); +#elif NETDEV_IPV6 + LOG_E("not support IPV6."); +#endif /* NETDEV_IPV4 && NETDEV_IPV6 */ + /* fill hostent structure */ s_hostent_addr = addr; s_phostent_addr[0] = &s_hostent_addr; @@ -1106,12 +1112,18 @@ int at_getaddrinfo(const char *nodename, const char *servname, { strncpy(ip_str, nodename, strlen(nodename)); } - + + #if NETDEV_IPV4 && NETDEV_IPV6 addr.type = IPADDR_TYPE_V4; if ((addr.u_addr.ip4.addr = ipstr_to_u32(ip_str)) == 0) { return EAI_FAIL; } + #elif NETDEV_IPV4 + addr.addr = ipstr_to_u32(ip_str); + #elif NETDEV_IPV6 + LOG_E("not support IPV6."); + #endif /* NETDEV_IPV4 && NETDEV_IPV6 */ } } else @@ -1143,10 +1155,16 @@ int at_getaddrinfo(const char *nodename, const char *servname, sa = (struct sockaddr_storage *) (void *) ((uint8_t *) ai + sizeof(struct addrinfo)); struct sockaddr_in *sa4 = (struct sockaddr_in *) sa; /* set up sockaddr */ +#if NETDEV_IPV4 && NETDEV_IPV6 sa4->sin_addr.s_addr = addr.u_addr.ip4.addr; +#elif NETDEV_IPV4 + sa4->sin_addr.s_addr = addr.addr; +#elif NETDEV_IPV6 + LOG_E("not support IPV6."); +#endif /* NETDEV_IPV4 && NETDEV_IPV6 */ sa4->sin_family = AF_INET; sa4->sin_len = sizeof(struct sockaddr_in); - sa4->sin_port = htons((u16_t )port_nr); + sa4->sin_port = htons((uint16_t)port_nr); ai->ai_family = AF_INET; /* set up addrinfo */ diff --git a/components/net/at/include/at.h b/components/net/at/include/at.h index 9a2630203f..10e4c8833b 100644 --- a/components/net/at/include/at.h +++ b/components/net/at/include/at.h @@ -64,7 +64,7 @@ enum at_status { AT_STATUS_UNINITIALIZED = 0, AT_STATUS_INITIALIZED, - AT_STATUS_BUSY, + AT_STATUS_CLI, }; typedef enum at_status at_status_t; diff --git a/components/net/at/src/at_cli.c b/components/net/at/src/at_cli.c index 60e3b4d868..80af613fa6 100644 --- a/components/net/at/src/at_cli.c +++ b/components/net/at/src/at_cli.c @@ -207,9 +207,16 @@ static void client_cli_parser(at_client_t client) static rt_err_t (*client_odev_rx_ind)(rt_device_t dev, rt_size_t size) = RT_NULL; rt_base_t int_lvl; rt_thread_t at_client; + at_status_t client_odev_status; if (client) { + /* backup client status */ + { + client_odev_status = client->status; + client->status = AT_STATUS_CLI; + } + /* backup client device RX indicate */ { int_lvl = rt_hw_interrupt_disable(); @@ -256,6 +263,9 @@ static void client_cli_parser(at_client_t client) } } + /* restore client status */ + client->status = client_odev_status; + /* restore client device RX indicate */ { int_lvl = rt_hw_interrupt_disable(); diff --git a/components/net/at/src/at_client.c b/components/net/at/src/at_client.c index 1f6ed66743..4020d80165 100644 --- a/components/net/at/src/at_client.c +++ b/components/net/at/src/at_client.c @@ -273,6 +273,7 @@ int at_resp_parse_line_args_by_kw(at_response_t resp, const char *keyword, const * @return 0 : success * -1 : response status error * -2 : wait timeout + * -7 : enter AT CLI mode */ int at_obj_exec_cmd(at_client_t client, at_response_t resp, const char *cmd_expr, ...) { @@ -289,6 +290,12 @@ int at_obj_exec_cmd(at_client_t client, at_response_t resp, const char *cmd_expr return -RT_ERROR; } + /* check AT CLI mode */ + if (client->status == AT_STATUS_CLI && resp) + { + return -RT_EBUSY; + } + rt_mutex_take(client->lock, RT_WAITING_FOREVER); client->resp_status = AT_RESP_OK; @@ -869,6 +876,12 @@ int at_client_init(const char *dev_name, rt_size_t recv_bufsz) client = &at_client_table[idx]; client->recv_bufsz = recv_bufsz; + result = at_client_para_init(client); + if (result != RT_EOK) + { + goto __exit; + } + /* find and open command device */ client->device = rt_device_find(dev_name); if (client->device) @@ -893,12 +906,6 @@ int at_client_init(const char *dev_name, rt_size_t recv_bufsz) goto __exit; } - result = at_client_para_init(client); - if (result != RT_EOK) - { - goto __exit; - } - __exit: if (result == RT_EOK) { diff --git a/components/net/lwip-1.4.1/READTEST.md b/components/net/lwip-1.4.1/READTEST.md new file mode 100644 index 0000000000..05f10dc780 --- /dev/null +++ b/components/net/lwip-1.4.1/READTEST.md @@ -0,0 +1,12 @@ +Porting network interface device for RT-Thread in lwIP. +The major jobs following RT-Thread Team. The RT-Thread network interface device need to synchronize some network status and address information in lwIP, so it need to make some changes in the lwIP netwrok status and address operations function. +The specific changes are as follows: + + - netif.c: add RT-Thread netdev header file , status synchronize(UP, LINK_UP), address synchronize(IP, netmask, gateway); + + - dns.c: add RT-Thread header file, dns servers synchronize; + + - sockets.c: custom 'select' function implementation in RT-Thread by the wait queue mode. + +by ChenYong 2019/3/26 10:00 AM +chenyong@rt-thread.com diff --git a/components/net/lwip-1.4.1/SConscript b/components/net/lwip-1.4.1/SConscript index 3ba2bcd4c8..8e3a4cb9d4 100644 --- a/components/net/lwip-1.4.1/SConscript +++ b/components/net/lwip-1.4.1/SConscript @@ -79,8 +79,8 @@ if GetDepend(['RT_LWIP_PPP']): path += [GetCurrentDir() + '/src/netif/ppp'] # For testing apps -if GetDepend(['RT_USING_NETUTILS']): - src += Glob('./apps/*.c') +if GetDepend(['RT_LWIP_USING_PING']): + src += Glob('src/apps/ping/ping.c') group = DefineGroup('LwIP', src, depend = ['RT_USING_LWIP', 'RT_USING_LWIP141'], CPPPATH = path) diff --git a/components/net/lwip-1.4.1/src/apps/ping/ping.c b/components/net/lwip-1.4.1/src/apps/ping/ping.c new file mode 100644 index 0000000000..1075e2ddfd --- /dev/null +++ b/components/net/lwip-1.4.1/src/apps/ping/ping.c @@ -0,0 +1,245 @@ +/* + * netutils: ping implementation + */ + +#include + +#ifdef RT_LWIP_ICMP /* don't build if not configured for use in rtconfig.h */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * PING_DEBUG: Enable debugging for PING. + */ +#ifndef PING_DEBUG +#define PING_DEBUG LWIP_DBG_ON +#endif + +/** ping receive timeout - in milliseconds */ +#define PING_RCV_TIMEO (2 * RT_TICK_PER_SECOND) +/** ping delay - in milliseconds */ +#define PING_DELAY (1 * RT_TICK_PER_SECOND) + +/** ping identifier - must fit on a u16_t */ +#ifndef PING_ID +#define PING_ID 0xAFAF +#endif + +/** ping additional data size to include in the packet */ +#ifndef PING_DATA_SIZE +#define PING_DATA_SIZE 32 +#endif + +/* ping variables */ +static u16_t ping_seq_num; +struct _ip_addr +{ + rt_uint8_t addr0, addr1, addr2, addr3; +}; + +/** Prepare a echo ICMP request */ +static void ping_prepare_echo( struct icmp_echo_hdr *iecho, u16_t len) +{ + size_t i; + size_t data_len = len - sizeof(struct icmp_echo_hdr); + + ICMPH_TYPE_SET(iecho, ICMP_ECHO); + ICMPH_CODE_SET(iecho, 0); + iecho->chksum = 0; + iecho->id = PING_ID; + iecho->seqno = htons(++ping_seq_num); + + /* fill the additional data buffer with some data */ + for (i = 0; i < data_len; i++) + { + ((char*) iecho)[sizeof(struct icmp_echo_hdr) + i] = (char) i; + } + +#ifdef RT_LWIP_USING_HW_CHECKSUM + iecho->chksum = 0; +#else + iecho->chksum = inet_chksum(iecho, len); +#endif + +} + +/* Ping using the socket ip */ +err_t lwip_ping_send(int s, ip_addr_t *addr, int size) +{ + int err; + struct icmp_echo_hdr *iecho; + struct sockaddr_in to; + int ping_size = sizeof(struct icmp_echo_hdr) + size; + LWIP_ASSERT("ping_size is too big", ping_size <= 0xffff); + + iecho = rt_malloc(ping_size); + if (iecho == RT_NULL) + { + return ERR_MEM; + } + + ping_prepare_echo(iecho, (u16_t) ping_size); + + to.sin_len = sizeof(to); + to.sin_family = AF_INET; +#if LWIP_IPV4 && LWIP_IPV6 + to.sin_addr.s_addr = addr->u_addr.ip4.addr; +#elif LWIP_IPV4 + to.sin_addr.s_addr = addr->addr; +#elif LWIP_IPV6 +#error Not supported IPv6. +#endif + + err = lwip_sendto(s, iecho, ping_size, 0, (struct sockaddr*) &to, sizeof(to)); + rt_free(iecho); + + return (err == ping_size ? ERR_OK : ERR_VAL); +} + +int lwip_ping_recv(int s, int *ttl) +{ + char buf[64]; + int fromlen = sizeof(struct sockaddr_in), len; + struct sockaddr_in from; + struct ip_hdr *iphdr; + struct icmp_echo_hdr *iecho; + + while ((len = lwip_recvfrom(s, buf, sizeof(buf), 0, (struct sockaddr*) &from, (socklen_t*) &fromlen)) > 0) + { + if (len >= (int)(sizeof(struct ip_hdr) + sizeof(struct icmp_echo_hdr))) + { + iphdr = (struct ip_hdr *) buf; + iecho = (struct icmp_echo_hdr *) (buf + (IPH_HL(iphdr) * 4)); + if ((iecho->id == PING_ID) && (iecho->seqno == htons(ping_seq_num))) + { + *ttl = iphdr->_ttl; + return len; + } + } + } + + return len; +} + +#ifndef RT_USING_SAL + +/* using the lwIP custom ping */ +rt_err_t ping(char* target_name, rt_uint32_t times, rt_size_t size) +{ +#if LWIP_VERSION_MAJOR >= 2U + struct timeval timeout = { PING_RCV_TIMEO / RT_TICK_PER_SECOND, PING_RCV_TIMEO % RT_TICK_PER_SECOND }; +#else + int timeout = PING_RCV_TIMEO * 1000UL / RT_TICK_PER_SECOND; +#endif + + int s, ttl, recv_len; + ip_addr_t target_addr; + rt_uint32_t send_times; + rt_tick_t recv_start_tick; + struct addrinfo hint, *res = NULL; + struct sockaddr_in *h = NULL; + struct in_addr ina; + + send_times = 0; + ping_seq_num = 0; + + if (size == 0) + { + size = PING_DATA_SIZE; + } + + memset(&hint, 0, sizeof(hint)); + /* convert URL to IP */ + if (lwip_getaddrinfo(target_name, NULL, &hint, &res) != 0) + { + rt_kprintf("ping: unknown host %s\n", target_name); + return -RT_ERROR; + } + memcpy(&h, &res->ai_addr, sizeof(struct sockaddr_in *)); + memcpy(&ina, &h->sin_addr, sizeof(ina)); + lwip_freeaddrinfo(res); + if (inet_aton(inet_ntoa(ina), &target_addr) == 0) + { + rt_kprintf("ping: unknown host %s\n", target_name); + return -RT_ERROR; + } + /* new a socket */ + if ((s = lwip_socket(AF_INET, SOCK_RAW, IP_PROTO_ICMP)) < 0) + { + rt_kprintf("ping: create socket failed\n"); + return -RT_ERROR; + } + + lwip_setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout)); + + while (1) + { + int elapsed_time; + + if (lwip_ping_send(s, &target_addr, size) == ERR_OK) + { + recv_start_tick = rt_tick_get(); + if ((recv_len = lwip_ping_recv(s, &ttl)) >= 0) + { + elapsed_time = (rt_tick_get() - recv_start_tick) * 1000UL / RT_TICK_PER_SECOND; + rt_kprintf("%d bytes from %s icmp_seq=%d ttl=%d time=%d ms\n", recv_len, inet_ntoa(ina), send_times, + ttl, elapsed_time); + } + else + { + rt_kprintf("From %s icmp_seq=%d timeout\n", inet_ntoa(ina), send_times); + } + } + else + { + rt_kprintf("Send %s - error\n", inet_ntoa(ina)); + } + + send_times++; + if (send_times >= times) + { + /* send ping times reached, stop */ + break; + } + + rt_thread_delay(PING_DELAY); /* take a delay */ + } + + lwip_close(s); + + return RT_EOK; +} +#ifdef RT_USING_FINSH +#include + +FINSH_FUNCTION_EXPORT(ping, ping network host); + +int cmd_ping(int argc, char **argv) +{ + if (argc == 1) + { + rt_kprintf("Please input: ping \n"); + } + else + { + ping(argv[1], 4, 0); + } + + return 0; +} +FINSH_FUNCTION_EXPORT_ALIAS(cmd_ping, __cmd_ping, ping network host); +#endif /* RT_USING_FINSH */ + +#endif /* RT_USING_SAL */ + +#endif /* RT_LWIP_ICMP */ + diff --git a/components/net/lwip-1.4.1/src/core/dns.c b/components/net/lwip-1.4.1/src/core/dns.c index d63361226f..20398ae609 100644 --- a/components/net/lwip-1.4.1/src/core/dns.c +++ b/components/net/lwip-1.4.1/src/core/dns.c @@ -83,6 +83,8 @@ #include +#include + /** DNS server IP address */ #ifndef DNS_SERVER_ADDRESS #define DNS_SERVER_ADDRESS(ipaddr) (ip4_addr_set_u32(ipaddr, ipaddr_addr("208.67.222.222"))) /* resolver1.opendns.com */ @@ -275,6 +277,14 @@ dns_setserver(u8_t numdns, ip_addr_t *dnsserver) if ((numdns < DNS_MAX_SERVERS) && (dns_pcb != NULL) && (dnsserver != NULL) && !ip_addr_isany(dnsserver)) { dns_servers[numdns] = (*dnsserver); + +#ifdef RT_USING_NETDEV + extern struct netdev *netdev_default; + extern void netdev_low_level_set_dns_server(struct netdev *netdev, uint8_t dns_num, const ip_addr_t *dns_server); + + /* set network interface device DNS server address */ + netdev_low_level_set_dns_server(netdev_default, numdns, dnsserver); +#endif /* RT_USING_NETDEV */ } } diff --git a/components/net/lwip-1.4.1/src/core/netif.c b/components/net/lwip-1.4.1/src/core/netif.c index 4a02e77f31..9c3e32b33f 100644 --- a/components/net/lwip-1.4.1/src/core/netif.c +++ b/components/net/lwip-1.4.1/src/core/netif.c @@ -60,6 +60,13 @@ #include "lwip/dhcp.h" #endif /* LWIP_DHCP */ +#include + +#ifdef RT_USING_NETDEV +#include "lwip/netdb.h" +#include +#endif /* RT_USING_NETDEV */ + #if LWIP_NETIF_STATUS_CALLBACK #define NETIF_STATUS_CALLBACK(n) do{ if (n->status_callback) { (n->status_callback)(n); }}while(0) #else @@ -374,6 +381,11 @@ netif_set_ipaddr(struct netif *netif, ip_addr_t *ipaddr) ip4_addr2_16(&netif->ip_addr), ip4_addr3_16(&netif->ip_addr), ip4_addr4_16(&netif->ip_addr))); + +#ifdef RT_USING_NETDEV + /* rt-thread sal network interface device set IP address operations */ + netdev_low_level_set_ipaddr(netdev_get_by_name(netif->name), (ip_addr_t *)ipaddr); +#endif /* RT_USING_NETDEV */ } /** @@ -394,6 +406,11 @@ netif_set_gw(struct netif *netif, ip_addr_t *gw) ip4_addr2_16(&netif->gw), ip4_addr3_16(&netif->gw), ip4_addr4_16(&netif->gw))); + +#ifdef RT_USING_NETDEV + /* rt_thread network interface device set gateway address */ + netdev_low_level_set_gw(netdev_get_by_name(netif->name), (ip_addr_t *)gw); +#endif /* RT_USING_NETDEV */ } /** @@ -418,6 +435,11 @@ netif_set_netmask(struct netif *netif, ip_addr_t *netmask) ip4_addr2_16(&netif->netmask), ip4_addr3_16(&netif->netmask), ip4_addr4_16(&netif->netmask))); + +#ifdef RT_USING_NETDEV + /* rt-thread network interface device set netmask address */ + netdev_low_level_set_netmask(netdev_get_by_name(netif->name), (ip_addr_t *)netmask); +#endif /* RT_USING_NETDEV */ } /** @@ -476,6 +498,11 @@ void netif_set_up(struct netif *netif) } #endif /* LWIP_IGMP */ } + +#ifdef RT_USING_NETDEV + /* rt-thread network interface device set up status */ + netdev_low_level_set_status(netdev_get_by_name(netif->name), RT_TRUE); +#endif /* RT_USING_NETDEV */ } } @@ -501,6 +528,11 @@ void netif_set_down(struct netif *netif) } #endif /* LWIP_ARP */ NETIF_STATUS_CALLBACK(netif); + +#ifdef RT_USING_NETDEV + /* rt-thread network interface device set down status */ + netdev_low_level_set_status(netdev_get_by_name(netif->name), RT_FALSE); +#endif /* RT_USING_NETDEV */ } } @@ -565,6 +597,11 @@ void netif_set_link_up(struct netif *netif ) #endif /* LWIP_IGMP */ } NETIF_LINK_CALLBACK(netif); + +#ifdef RT_USING_NETDEV + /* rt-thread network interface device set link up status */ + netdev_low_level_set_link_status(netdev_get_by_name(netif->name), RT_TRUE); +#endif /* RT_USING_NETDEV */ } } @@ -576,6 +613,11 @@ void netif_set_link_down(struct netif *netif ) if (netif->flags & NETIF_FLAG_LINK_UP) { netif->flags &= ~NETIF_FLAG_LINK_UP; NETIF_LINK_CALLBACK(netif); + +#ifdef RT_USING_NETDEV + /* rt-thread network interface device set link down status */ + netdev_low_level_set_link_status(netdev_get_by_name(netif->name), RT_FALSE); +#endif /* RT_USING_NETDEV */ } } diff --git a/components/net/lwip-1.4.1/src/netif/ethernetif.c b/components/net/lwip-1.4.1/src/netif/ethernetif.c index 31aeaf6dff..dfe304f91d 100644 --- a/components/net/lwip-1.4.1/src/netif/ethernetif.c +++ b/components/net/lwip-1.4.1/src/netif/ethernetif.c @@ -97,6 +97,244 @@ static char eth_rx_thread_stack[RT_LWIP_ETHTHREAD_STACKSIZE]; #endif #endif +#ifdef RT_USING_NETDEV + +#include "lwip/init.h" +#include "lwip/netdb.h" +#include + +static int lwip_netdev_set_up(struct netdev *netif) +{ + netif_set_up((struct netif *)netif->user_data); + return ERR_OK; +} + +static int lwip_netdev_set_down(struct netdev *netif) +{ + netif_set_down((struct netif *)netif->user_data); + return ERR_OK; +} + +static int lwip_netdev_set_addr_info(struct netdev *netif, ip_addr_t *ip_addr, ip_addr_t *netmask, ip_addr_t *gw) +{ + if (ip_addr && netmask && gw) + { + netif_set_addr((struct netif *)netif->user_data, ip_addr, netmask, gw); + } + else + { + if (ip_addr) + { + netif_set_ipaddr((struct netif *)netif->user_data, ip_addr); + } + + if (netmask) + { + netif_set_netmask((struct netif *)netif->user_data, netmask); + } + + if (gw) + { + netif_set_gw((struct netif *)netif->user_data, gw); + } + } + + return ERR_OK; +} + +#ifdef RT_LWIP_DNS +static int lwip_netdev_set_dns_server(struct netdev *netif, ip_addr_t *dns_server) +{ + extern void set_dns(char* dns_server); + set_dns(ipaddr_ntoa(dns_server)); + return ERR_OK; +} +#endif /* RT_LWIP_DNS */ + +#ifdef RT_LWIP_DHCP +static int lwip_netdev_set_dhcp(struct netdev *netif, rt_bool_t is_enabled) +{ + netdev_low_level_set_dhcp_status(netif, is_enabled); + return ERR_OK; +} +#endif /* RT_LWIP_DHCP */ + +#ifdef RT_LWIP_USING_PING +extern int lwip_ping_recv(int s, int *ttl); +extern err_t lwip_ping_send(int s, ip_addr_t *addr, int size); + +int lwip_netdev_ping(struct netdev *netif, const char *host, size_t data_len, + uint32_t timeout, struct netdev_ping_resp *ping_resp) +{ + int s, ttl, recv_len, result = 0; + int elapsed_time; + rt_tick_t recv_start_tick; +#if LWIP_VERSION_MAJOR >= 2U + struct timeval recv_timeout = { timeout / RT_TICK_PER_SECOND, timeout % RT_TICK_PER_SECOND }; +#else + int recv_timeout = timeout * 1000UL / RT_TICK_PER_SECOND; +#endif + ip_addr_t target_addr; + struct addrinfo hint, *res = RT_NULL; + struct sockaddr_in *h = RT_NULL; + struct in_addr ina; + + RT_ASSERT(netif); + RT_ASSERT(host); + RT_ASSERT(ping_resp); + + rt_memset(&hint, 0x00, sizeof(hint)); + /* convert URL to IP */ + if (lwip_getaddrinfo(host, RT_NULL, &hint, &res) != 0) + { + return -RT_ERROR; + } + rt_memcpy(&h, &res->ai_addr, sizeof(struct sockaddr_in *)); + rt_memcpy(&ina, &h->sin_addr, sizeof(ina)); + lwip_freeaddrinfo(res); + if (inet_aton(inet_ntoa(ina), &target_addr) == 0) + { + return -RT_ERROR; + } + rt_memcpy(&(ping_resp->ip_addr), &target_addr, sizeof(ip_addr_t)); + + /* new a socket */ + if ((s = lwip_socket(AF_INET, SOCK_RAW, IP_PROTO_ICMP)) < 0) + { + return -RT_ERROR; + } + + lwip_setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &recv_timeout, sizeof(recv_timeout)); + + if (lwip_ping_send(s, &target_addr, data_len) == ERR_OK) + { + recv_start_tick = rt_tick_get(); + if ((recv_len = lwip_ping_recv(s, &ttl)) >= 0) + { + elapsed_time = (rt_tick_get() - recv_start_tick) * 1000UL / RT_TICK_PER_SECOND; + ping_resp->data_len = recv_len; + ping_resp->ttl = ttl; + ping_resp->ticks = elapsed_time; + } + else + { + result = -RT_ETIMEOUT; + goto __exit; + } + } + else + { + result = -RT_ETIMEOUT; + goto __exit; + } + +__exit: + lwip_close(s); + + return result; +} +#endif /* RT_LWIP_USING_PING */ + +#if defined (RT_LWIP_TCP) || defined (RT_LWIP_UDP) +void lwip_netdev_netstat(struct netdev *netif) +{ + extern void list_tcps(void); + extern void list_udps(void); + +#ifdef RT_LWIP_TCP + list_tcps(); +#endif +#ifdef RT_LWIP_UDP + list_udps(); +#endif +} +#endif /* RT_LWIP_TCP || RT_LWIP_UDP */ + +const struct netdev_ops lwip_netdev_ops = +{ + lwip_netdev_set_up, + lwip_netdev_set_down, + + lwip_netdev_set_addr_info, +#ifdef RT_LWIP_DNS + lwip_netdev_set_dns_server, +#else + NULL, +#endif /* RT_LWIP_DNS */ + +#ifdef RT_LWIP_DHCP + lwip_netdev_set_dhcp, +#else + NULL, +#endif /* RT_LWIP_DHCP */ + +#ifdef RT_LWIP_USING_PING + lwip_netdev_ping, +#else + NULL, +#endif /* RT_LWIP_USING_PING */ + +#if defined (RT_LWIP_TCP) || defined (RT_LWIP_UDP) + lwip_netdev_netstat, +#endif /* RT_LWIP_TCP || RT_LWIP_UDP */ +}; + +static int netdev_add(struct netif *lwip_netif) +{ +#define LWIP_NETIF_NAME_LEN 2 + int result = 0; + struct netdev *netdev = RT_NULL; + char name[LWIP_NETIF_NAME_LEN + 1] = {0}; + + RT_ASSERT(lwip_netif); + + netdev = (struct netdev *)rt_calloc(1, sizeof(struct netdev)); + if (netdev == RT_NULL) + { + return -ERR_IF; + } + + netdev->flags = lwip_netif->flags; + netdev->mtu = lwip_netif->mtu; + netdev->ops = &lwip_netdev_ops; + netdev->hwaddr_len = lwip_netif->hwaddr_len; + rt_memcpy(netdev->hwaddr, lwip_netif->hwaddr, lwip_netif->hwaddr_len); + +#ifdef SAL_USING_LWIP + extern int sal_lwip_netdev_set_pf_info(struct netdev *netdev); + /* set the lwIP network interface device protocol family information */ + sal_lwip_netdev_set_pf_info(netdev); +#endif /* SAL_USING_LWIP */ + + rt_strncpy(name, lwip_netif->name, LWIP_NETIF_NAME_LEN); + result = netdev_register(netdev, name, (void *)lwip_netif); + +#ifdef RT_LWIP_DHCP + netdev_low_level_set_dhcp_status(netdev, RT_TRUE); +#endif + + return result; +} + +/* synchronize lwIP network interface device and network interface device flags */ +static int netdev_flags_sync(struct netif *lwip_netif) +{ + struct netdev *netdev = NULL; + + RT_ASSERT(lwip_netif); + + netdev = netdev_get_by_name(lwip_netif->name); + if (netdev == RT_NULL) + { + return -ERR_IF; + } + + netdev->flags |= lwip_netif->flags; + + return ERR_OK; +} +#endif /* RT_USING_NETDEV */ + static err_t ethernetif_linkoutput(struct netif *netif, struct pbuf *p) { #ifndef LWIP_NO_TX_THREAD @@ -137,6 +375,11 @@ static err_t eth_netif_device_init(struct netif *netif) { rt_device_t device; +#ifdef RT_USING_NETDEV + /* network interface device register */ + netdev_add(netif); +#endif /* RT_USING_NETDEV */ + /* get device object */ device = (rt_device_t) ethif; if (rt_device_init(device) != RT_EOK) @@ -239,6 +482,12 @@ rt_err_t eth_device_init_with_flag(struct eth_device *dev, const char *name, rt_ netifapi_netif_add(netif, &ipaddr, &netmask, &gw, dev, eth_netif_device_init, tcpip_input); } +#ifdef RT_USING_NETDEV + /* network interface device flags synchronize */ + netdev_flags_sync(netif); +#endif /* RT_USING_NETDEV */ + + return RT_EOK; } diff --git a/components/net/lwip-2.0.2/READTEST.md b/components/net/lwip-2.0.2/READTEST.md index b67f2afdf4..dbc2a2bf4d 100644 --- a/components/net/lwip-2.0.2/READTEST.md +++ b/components/net/lwip-2.0.2/READTEST.md @@ -1,8 +1,22 @@ +Porting network interface device for RT-Thread in lwIP. +The major jobs following RT-Thread Team. The RT-Thread network interface device need to synchronize some network status and address information in lwIP, so it need to make some changes in the lwIP netwrok status and address operations function. +The specific changes are as follows: + + - netif.c: add RT-Thread netdev header file , status synchronize(UP, LINK_UP), address synchronize(IP, netmask, gateway); + + - dns.c: add RT-Thread header file, dns servers synchronize; + + - sockets.c: custom 'select' function implementation in RT-Thread by the wait queue mode. + +by ChenYong 2019/3/26 10:00 AM +chenyong@rt-thread.com + + Porting lwip 2.0.2 running on RT-Thread. The major jobs following RT-Thread Team. The RT-Thread team already port the lwip 2.0.0, so I only do some move code and test jobs. I use the memory pools to test lwip 2.0.2, I use the iperf tool to test it about more than 20 hours, It is running normal. I don't test it working on memory heap. ... Good Luck. -by Hans.Huang 3/27/17 10:52 AM +by Hans.Huang 2017/3/27 10:52 AM huangxi_hans@163.com diff --git a/components/net/lwip-2.0.2/SConscript b/components/net/lwip-2.0.2/SConscript index d99556af90..df04b42324 100644 --- a/components/net/lwip-2.0.2/SConscript +++ b/components/net/lwip-2.0.2/SConscript @@ -81,11 +81,8 @@ if GetDepend(['RT_LWIP_PPP']): if GetDepend(['RT_USING_LWIP_IPV6']): src += ipv6_src -if GetDepend(['RT_USING_NETUTILS']): - if GetDepend(['RT_NETUTILS_USING_TFTP']): - src += Glob('src/apps/tftp/*.c') - if GetDepend(['RT_NETUTILS_USING_PING']): - src += Glob('src/apps/ping/*.c') +if GetDepend(['RT_LWIP_USING_PING']): + src += Glob('src/apps/ping/ping.c') group = DefineGroup('lwIP', src, depend = ['RT_USING_LWIP', 'RT_USING_LWIP202'], CPPPATH = path) diff --git a/components/net/lwip-2.0.2/src/apps/ping/ping.c b/components/net/lwip-2.0.2/src/apps/ping/ping.c index 4b934f0cac..1075e2ddfd 100644 --- a/components/net/lwip-2.0.2/src/apps/ping/ping.c +++ b/components/net/lwip-2.0.2/src/apps/ping/ping.c @@ -2,16 +2,20 @@ * netutils: ping implementation */ -#include "lwip/opt.h" +#include -#include "lwip/mem.h" -#include "lwip/icmp.h" -#include "lwip/netif.h" -#include "lwip/sys.h" -#include "lwip/sockets.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" -#include "lwip/ip.h" +#ifdef RT_LWIP_ICMP /* don't build if not configured for use in rtconfig.h */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include /** * PING_DEBUG: Enable debugging for PING. @@ -21,9 +25,9 @@ #endif /** ping receive timeout - in milliseconds */ -#define PING_RCV_TIMEO rt_tick_from_millisecond(2000) +#define PING_RCV_TIMEO (2 * RT_TICK_PER_SECOND) /** ping delay - in milliseconds */ -#define PING_DELAY rt_tick_from_millisecond(1000) +#define PING_DELAY (1 * RT_TICK_PER_SECOND) /** ping identifier - must fit on a u16_t */ #ifndef PING_ID @@ -55,21 +59,26 @@ static void ping_prepare_echo( struct icmp_echo_hdr *iecho, u16_t len) iecho->seqno = htons(++ping_seq_num); /* fill the additional data buffer with some data */ - for(i = 0; i < data_len; i++) + for (i = 0; i < data_len; i++) { - ((char*)iecho)[sizeof(struct icmp_echo_hdr) + i] = (char)i; + ((char*) iecho)[sizeof(struct icmp_echo_hdr) + i] = (char) i; } - iecho->chksum = inet_chksum(iecho, len); +#ifdef RT_LWIP_USING_HW_CHECKSUM + iecho->chksum = 0; +#else + iecho->chksum = inet_chksum(iecho, len); +#endif + } /* Ping using the socket ip */ -static err_t ping_send(int s, ip_addr_t *addr, int size) +err_t lwip_ping_send(int s, ip_addr_t *addr, int size) { int err; struct icmp_echo_hdr *iecho; struct sockaddr_in to; - size_t ping_size = sizeof(struct icmp_echo_hdr) + size; + int ping_size = sizeof(struct icmp_echo_hdr) + size; LWIP_ASSERT("ping_size is too big", ping_size <= 0xffff); iecho = rt_malloc(ping_size); @@ -78,19 +87,25 @@ static err_t ping_send(int s, ip_addr_t *addr, int size) return ERR_MEM; } - ping_prepare_echo(iecho, (u16_t)ping_size); + ping_prepare_echo(iecho, (u16_t) ping_size); to.sin_len = sizeof(to); to.sin_family = AF_INET; +#if LWIP_IPV4 && LWIP_IPV6 + to.sin_addr.s_addr = addr->u_addr.ip4.addr; +#elif LWIP_IPV4 to.sin_addr.s_addr = addr->addr; +#elif LWIP_IPV6 +#error Not supported IPv6. +#endif - err = lwip_sendto(s, iecho, ping_size, 0, (struct sockaddr*)&to, sizeof(to)); + err = lwip_sendto(s, iecho, ping_size, 0, (struct sockaddr*) &to, sizeof(to)); rt_free(iecho); return (err == ping_size ? ERR_OK : ERR_VAL); } -static int ping_recv(int s, int *ttl) +int lwip_ping_recv(int s, int *ttl) { char buf[64]; int fromlen = sizeof(struct sockaddr_in), len; @@ -98,12 +113,12 @@ static int ping_recv(int s, int *ttl) struct ip_hdr *iphdr; struct icmp_echo_hdr *iecho; - while((len = lwip_recvfrom(s, buf, sizeof(buf), 0, (struct sockaddr*)&from, (socklen_t*)&fromlen)) > 0) + while ((len = lwip_recvfrom(s, buf, sizeof(buf), 0, (struct sockaddr*) &from, (socklen_t*) &fromlen)) > 0) { - if (len >= (sizeof(struct ip_hdr)+sizeof(struct icmp_echo_hdr))) + if (len >= (int)(sizeof(struct ip_hdr) + sizeof(struct icmp_echo_hdr))) { - iphdr = (struct ip_hdr *)buf; - iecho = (struct icmp_echo_hdr *)(buf+(IPH_HL(iphdr) * 4)); + iphdr = (struct ip_hdr *) buf; + iecho = (struct icmp_echo_hdr *) (buf + (IPH_HL(iphdr) * 4)); if ((iecho->id == PING_ID) && (iecho->seqno == htons(ping_seq_num))) { *ttl = iphdr->_ttl; @@ -115,62 +130,86 @@ static int ping_recv(int s, int *ttl) return len; } -rt_err_t ping(char* target, rt_uint32_t times, rt_size_t size) +#ifndef RT_USING_SAL + +/* using the lwIP custom ping */ +rt_err_t ping(char* target_name, rt_uint32_t times, rt_size_t size) { - int s, ttl, recv_len; +#if LWIP_VERSION_MAJOR >= 2U struct timeval timeout = { PING_RCV_TIMEO / RT_TICK_PER_SECOND, PING_RCV_TIMEO % RT_TICK_PER_SECOND }; - ip_addr_t ping_target; +#else + int timeout = PING_RCV_TIMEO * 1000UL / RT_TICK_PER_SECOND; +#endif + + int s, ttl, recv_len; + ip_addr_t target_addr; rt_uint32_t send_times; rt_tick_t recv_start_tick; - struct _ip_addr - { - rt_uint8_t addr0, addr1, addr2, addr3; - } *addr; + struct addrinfo hint, *res = NULL; + struct sockaddr_in *h = NULL; + struct in_addr ina; send_times = 0; ping_seq_num = 0; - if(size == 0) - size = PING_DATA_SIZE; - - if (inet_aton(target, &ping_target) == 0) + if (size == 0) { - rt_kprintf("ping: unknown host %s\n", target); + size = PING_DATA_SIZE; + } + + memset(&hint, 0, sizeof(hint)); + /* convert URL to IP */ + if (lwip_getaddrinfo(target_name, NULL, &hint, &res) != 0) + { + rt_kprintf("ping: unknown host %s\n", target_name); return -RT_ERROR; } - addr = (struct _ip_addr*)&ping_target; - + memcpy(&h, &res->ai_addr, sizeof(struct sockaddr_in *)); + memcpy(&ina, &h->sin_addr, sizeof(ina)); + lwip_freeaddrinfo(res); + if (inet_aton(inet_ntoa(ina), &target_addr) == 0) + { + rt_kprintf("ping: unknown host %s\n", target_name); + return -RT_ERROR; + } + /* new a socket */ if ((s = lwip_socket(AF_INET, SOCK_RAW, IP_PROTO_ICMP)) < 0) { - rt_kprintf("ping: create socket failled\n"); + rt_kprintf("ping: create socket failed\n"); return -RT_ERROR; } - lwip_setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(struct timeval)); + lwip_setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout)); while (1) { - if (ping_send(s, &ping_target, size) == ERR_OK) + int elapsed_time; + + if (lwip_ping_send(s, &target_addr, size) == ERR_OK) { recv_start_tick = rt_tick_get(); - if ((recv_len = ping_recv(s, &ttl)) >= 0) + if ((recv_len = lwip_ping_recv(s, &ttl)) >= 0) { - rt_kprintf("%d bytes from %d.%d.%d.%d icmp_seq=%d ttl=%d time=%d ticks\n", recv_len, addr->addr0, - addr->addr1, addr->addr2, addr->addr3, send_times, ttl, rt_tick_get() - recv_start_tick); + elapsed_time = (rt_tick_get() - recv_start_tick) * 1000UL / RT_TICK_PER_SECOND; + rt_kprintf("%d bytes from %s icmp_seq=%d ttl=%d time=%d ms\n", recv_len, inet_ntoa(ina), send_times, + ttl, elapsed_time); } else { - rt_kprintf("From %d.%d.%d.%d icmp_seq=%d timeout\n", addr->addr0, addr->addr1, addr->addr2, - addr->addr3, send_times); + rt_kprintf("From %s icmp_seq=%d timeout\n", inet_ntoa(ina), send_times); } } else { - rt_kprintf("Send %d.%d.%d.%d - error\n", addr->addr0, addr->addr1, addr->addr2, addr->addr3); + rt_kprintf("Send %s - error\n", inet_ntoa(ina)); } - send_times ++; - if (send_times >= times) break; /* send ping times reached, stop */ + send_times++; + if (send_times >= times) + { + /* send ping times reached, stop */ + break; + } rt_thread_delay(PING_DELAY); /* take a delay */ } @@ -198,4 +237,9 @@ int cmd_ping(int argc, char **argv) return 0; } FINSH_FUNCTION_EXPORT_ALIAS(cmd_ping, __cmd_ping, ping network host); -#endif +#endif /* RT_USING_FINSH */ + +#endif /* RT_USING_SAL */ + +#endif /* RT_LWIP_ICMP */ + diff --git a/components/net/lwip-2.0.2/src/core/dns.c b/components/net/lwip-2.0.2/src/core/dns.c index 12c6f16fe3..5f8c3e52e3 100644 --- a/components/net/lwip-2.0.2/src/core/dns.c +++ b/components/net/lwip-2.0.2/src/core/dns.c @@ -95,6 +95,8 @@ #include +#include + /** Random generator function to create random TXIDs and source ports for queries */ #ifndef DNS_RAND_TXID #if ((LWIP_DNS_SECURE & LWIP_DNS_SECURE_RAND_XID) != 0) @@ -366,6 +368,14 @@ dns_setserver(u8_t numdns, const ip_addr_t *dnsserver) if (numdns < DNS_MAX_SERVERS) { if (dnsserver != NULL) { dns_servers[numdns] = (*dnsserver); + +#ifdef RT_USING_NETDEV + extern struct netdev *netdev_default; + extern void netdev_low_level_set_dns_server(struct netdev *netdev, uint8_t dns_num, const ip_addr_t *dns_server); + + /* set network interface device DNS server address */ + netdev_low_level_set_dns_server(netdev_default, numdns, dnsserver); +#endif /* RT_USING_NETDEV */ } else { dns_servers[numdns] = *IP_ADDR_ANY; } diff --git a/components/net/lwip-2.0.2/src/core/netif.c b/components/net/lwip-2.0.2/src/core/netif.c index 428b148421..01e83676da 100644 --- a/components/net/lwip-2.0.2/src/core/netif.c +++ b/components/net/lwip-2.0.2/src/core/netif.c @@ -89,6 +89,13 @@ #include "lwip/nd6.h" #endif +#include + +#ifdef RT_USING_NETDEV +#include "lwip/netdb.h" +#include +#endif /* RT_USING_NETDEV */ + #if LWIP_NETIF_STATUS_CALLBACK #define NETIF_STATUS_CALLBACK(n) do{ if (n->status_callback) { (n->status_callback)(n); }}while(0) #else @@ -534,6 +541,11 @@ netif_set_ipaddr(struct netif *netif, const ip4_addr_t *ipaddr) netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4); NETIF_STATUS_CALLBACK(netif); + +#ifdef RT_USING_NETDEV + /* rt-thread sal network interface device set IP address operations */ + netdev_low_level_set_ipaddr(netdev_get_by_name(netif->name), (ip_addr_t *)ipaddr); +#endif /* RT_USING_NETDEV */ } LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("netif: IP address of interface %c%c set to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", @@ -564,6 +576,11 @@ netif_set_gw(struct netif *netif, const ip4_addr_t *gw) ip4_addr2_16(netif_ip4_gw(netif)), ip4_addr3_16(netif_ip4_gw(netif)), ip4_addr4_16(netif_ip4_gw(netif)))); + +#ifdef RT_USING_NETDEV + /* rt_thread network interface device set gateway address */ + netdev_low_level_set_gw(netdev_get_by_name(netif->name), (ip_addr_t *)gw); +#endif /* RT_USING_NETDEV */ } /** @@ -590,6 +607,11 @@ netif_set_netmask(struct netif *netif, const ip4_addr_t *netmask) ip4_addr2_16(netif_ip4_netmask(netif)), ip4_addr3_16(netif_ip4_netmask(netif)), ip4_addr4_16(netif_ip4_netmask(netif)))); + +#ifdef RT_USING_NETDEV + /* rt-thread network interface device set netmask address */ + netdev_low_level_set_netmask(netdev_get_by_name(netif->name), (ip_addr_t *)netmask); +#endif /* RT_USING_NETDEV */ } #endif /* LWIP_IPV4 */ @@ -633,6 +655,11 @@ netif_set_up(struct netif *netif) if (netif->flags & NETIF_FLAG_LINK_UP) { netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4|NETIF_REPORT_TYPE_IPV6); } + +#ifdef RT_USING_NETDEV + /* rt-thread network interface device set up status */ + netdev_low_level_set_status(netdev_get_by_name(netif->name), RT_TRUE); +#endif /* RT_USING_NETDEV */ } } @@ -696,6 +723,11 @@ netif_set_down(struct netif *netif) #endif /* LWIP_IPV6 */ NETIF_STATUS_CALLBACK(netif); + +#ifdef RT_USING_NETDEV + /* rt-thread network interface device set down status */ + netdev_low_level_set_status(netdev_get_by_name(netif->name), RT_FALSE); +#endif /* RT_USING_NETDEV */ } } @@ -749,6 +781,11 @@ netif_set_link_up(struct netif *netif) netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4|NETIF_REPORT_TYPE_IPV6); } NETIF_LINK_CALLBACK(netif); + +#ifdef RT_USING_NETDEV + /* rt-thread network interface device set link up status */ + netdev_low_level_set_link_status(netdev_get_by_name(netif->name), RT_TRUE); +#endif /* RT_USING_NETDEV */ } } @@ -762,6 +799,11 @@ netif_set_link_down(struct netif *netif ) if (netif->flags & NETIF_FLAG_LINK_UP) { netif->flags &= ~NETIF_FLAG_LINK_UP; NETIF_LINK_CALLBACK(netif); + +#ifdef RT_USING_NETDEV + /* rt-thread network interface device set link down status */ + netdev_low_level_set_link_status(netdev_get_by_name(netif->name), RT_FALSE); +#endif /* RT_USING_NETDEV */ } } diff --git a/components/net/lwip-2.0.2/src/netif/ethernetif.c b/components/net/lwip-2.0.2/src/netif/ethernetif.c index 8d53f0f4ed..6e0eb1eed7 100644 --- a/components/net/lwip-2.0.2/src/netif/ethernetif.c +++ b/components/net/lwip-2.0.2/src/netif/ethernetif.c @@ -105,6 +105,244 @@ static char eth_rx_thread_stack[RT_LWIP_ETHTHREAD_STACKSIZE]; #endif #endif +#ifdef RT_USING_NETDEV + +#include "lwip/init.h" +#include "lwip/netdb.h" +#include + +static int lwip_netdev_set_up(struct netdev *netif) +{ + netif_set_up((struct netif *)netif->user_data); + return ERR_OK; +} + +static int lwip_netdev_set_down(struct netdev *netif) +{ + netif_set_down((struct netif *)netif->user_data); + return ERR_OK; +} + +static int lwip_netdev_set_addr_info(struct netdev *netif, ip_addr_t *ip_addr, ip_addr_t *netmask, ip_addr_t *gw) +{ + if (ip_addr && netmask && gw) + { + netif_set_addr((struct netif *)netif->user_data, ip_addr, netmask, gw); + } + else + { + if (ip_addr) + { + netif_set_ipaddr((struct netif *)netif->user_data, ip_addr); + } + + if (netmask) + { + netif_set_netmask((struct netif *)netif->user_data, netmask); + } + + if (gw) + { + netif_set_gw((struct netif *)netif->user_data, gw); + } + } + + return ERR_OK; +} + +#ifdef RT_LWIP_DNS +static int lwip_netdev_set_dns_server(struct netdev *netif, ip_addr_t *dns_server) +{ + extern void set_dns(char* dns_server); + set_dns(ipaddr_ntoa(dns_server)); + return ERR_OK; +} +#endif /* RT_LWIP_DNS */ + +#ifdef RT_LWIP_DHCP +static int lwip_netdev_set_dhcp(struct netdev *netif, rt_bool_t is_enabled) +{ + netdev_low_level_set_dhcp_status(netif, is_enabled); + return ERR_OK; +} +#endif /* RT_LWIP_DHCP */ + +#ifdef RT_LWIP_USING_PING +extern int lwip_ping_recv(int s, int *ttl); +extern err_t lwip_ping_send(int s, ip_addr_t *addr, int size); + +int lwip_netdev_ping(struct netdev *netif, const char *host, size_t data_len, + uint32_t timeout, struct netdev_ping_resp *ping_resp) +{ + int s, ttl, recv_len, result = 0; + int elapsed_time; + rt_tick_t recv_start_tick; +#if LWIP_VERSION_MAJOR >= 2U + struct timeval recv_timeout = { timeout / RT_TICK_PER_SECOND, timeout % RT_TICK_PER_SECOND }; +#else + int recv_timeout = timeout * 1000UL / RT_TICK_PER_SECOND; +#endif + ip_addr_t target_addr; + struct addrinfo hint, *res = RT_NULL; + struct sockaddr_in *h = RT_NULL; + struct in_addr ina; + + RT_ASSERT(netif); + RT_ASSERT(host); + RT_ASSERT(ping_resp); + + rt_memset(&hint, 0x00, sizeof(hint)); + /* convert URL to IP */ + if (lwip_getaddrinfo(host, RT_NULL, &hint, &res) != 0) + { + return -RT_ERROR; + } + rt_memcpy(&h, &res->ai_addr, sizeof(struct sockaddr_in *)); + rt_memcpy(&ina, &h->sin_addr, sizeof(ina)); + lwip_freeaddrinfo(res); + if (inet_aton(inet_ntoa(ina), &target_addr) == 0) + { + return -RT_ERROR; + } + rt_memcpy(&(ping_resp->ip_addr), &target_addr, sizeof(ip_addr_t)); + + /* new a socket */ + if ((s = lwip_socket(AF_INET, SOCK_RAW, IP_PROTO_ICMP)) < 0) + { + return -RT_ERROR; + } + + lwip_setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &recv_timeout, sizeof(recv_timeout)); + + if (lwip_ping_send(s, &target_addr, data_len) == ERR_OK) + { + recv_start_tick = rt_tick_get(); + if ((recv_len = lwip_ping_recv(s, &ttl)) >= 0) + { + elapsed_time = (rt_tick_get() - recv_start_tick) * 1000UL / RT_TICK_PER_SECOND; + ping_resp->data_len = recv_len; + ping_resp->ttl = ttl; + ping_resp->ticks = elapsed_time; + } + else + { + result = -RT_ETIMEOUT; + goto __exit; + } + } + else + { + result = -RT_ETIMEOUT; + goto __exit; + } + +__exit: + lwip_close(s); + + return result; +} +#endif /* RT_LWIP_USING_PING */ + +#if defined (RT_LWIP_TCP) || defined (RT_LWIP_UDP) +void lwip_netdev_netstat(struct netdev *netif) +{ + extern void list_tcps(void); + extern void list_udps(void); + +#ifdef RT_LWIP_TCP + list_tcps(); +#endif +#ifdef RT_LWIP_UDP + list_udps(); +#endif +} +#endif /* RT_LWIP_TCP || RT_LWIP_UDP */ + +const struct netdev_ops lwip_netdev_ops = +{ + lwip_netdev_set_up, + lwip_netdev_set_down, + + lwip_netdev_set_addr_info, +#ifdef RT_LWIP_DNS + lwip_netdev_set_dns_server, +#else + NULL, +#endif /* RT_LWIP_DNS */ + +#ifdef RT_LWIP_DHCP + lwip_netdev_set_dhcp, +#else + NULL, +#endif /* RT_LWIP_DHCP */ + +#ifdef RT_LWIP_USING_PING + lwip_netdev_ping, +#else + NULL, +#endif /* RT_LWIP_USING_PING */ + +#if defined (RT_LWIP_TCP) || defined (RT_LWIP_UDP) + lwip_netdev_netstat, +#endif /* RT_LWIP_TCP || RT_LWIP_UDP */ +}; + +static int netdev_add(struct netif *lwip_netif) +{ +#define LWIP_NETIF_NAME_LEN 2 + int result = 0; + struct netdev *netdev = RT_NULL; + char name[LWIP_NETIF_NAME_LEN + 1] = {0}; + + RT_ASSERT(lwip_netif); + + netdev = (struct netdev *)rt_calloc(1, sizeof(struct netdev)); + if (netdev == RT_NULL) + { + return -ERR_IF; + } + + netdev->flags = lwip_netif->flags; + netdev->mtu = lwip_netif->mtu; + netdev->ops = &lwip_netdev_ops; + netdev->hwaddr_len = lwip_netif->hwaddr_len; + rt_memcpy(netdev->hwaddr, lwip_netif->hwaddr, lwip_netif->hwaddr_len); + +#ifdef SAL_USING_LWIP + extern int sal_lwip_netdev_set_pf_info(struct netdev *netdev); + /* set the lwIP network interface device protocol family information */ + sal_lwip_netdev_set_pf_info(netdev); +#endif /* SAL_USING_LWIP */ + + rt_strncpy(name, lwip_netif->name, LWIP_NETIF_NAME_LEN); + result = netdev_register(netdev, name, (void *)lwip_netif); + +#ifdef RT_LWIP_DHCP + netdev_low_level_set_dhcp_status(netdev, RT_TRUE); +#endif + + return result; +} + +/* synchronize lwIP network interface device and network interface device flags */ +static int netdev_flags_sync(struct netif *lwip_netif) +{ + struct netdev *netdev = NULL; + + RT_ASSERT(lwip_netif); + + netdev = netdev_get_by_name(lwip_netif->name); + if (netdev == RT_NULL) + { + return -ERR_IF; + } + + netdev->flags |= lwip_netif->flags; + + return ERR_OK; +} +#endif /* RT_USING_NETDEV */ + static err_t ethernetif_linkoutput(struct netif *netif, struct pbuf *p) { #ifndef LWIP_NO_TX_THREAD @@ -140,6 +378,11 @@ static err_t eth_netif_device_init(struct netif *netif) { struct eth_device *ethif; +#ifdef RT_USING_NETDEV + /* network interface device register */ + netdev_add(netif); +#endif /* RT_USING_NETDEV */ + ethif = (struct eth_device*)netif->state; if (ethif != RT_NULL) { @@ -266,6 +509,11 @@ rt_err_t eth_device_init_with_flag(struct eth_device *dev, const char *name, rt_ netifapi_netif_add(netif, &ipaddr, &netmask, &gw, dev, eth_netif_device_init, tcpip_input); } +#ifdef RT_USING_NETDEV + /* network interface device flags synchronize */ + netdev_flags_sync(netif); +#endif /* RT_USING_NETDEV */ + return RT_EOK; } diff --git a/components/net/lwip-2.1.0/READTEST.md b/components/net/lwip-2.1.0/READTEST.md new file mode 100644 index 0000000000..6bdebeb112 --- /dev/null +++ b/components/net/lwip-2.1.0/READTEST.md @@ -0,0 +1,12 @@ +Porting network interface device for RT-Thread in lwIP. +The major jobs following RT-Thread Team. The RT-Thread network interface device need to synchronize some network status and address information in lwIP, so it need to make some changes in the lwIP netwrok status and address operations function. +The specific changes are as follows: + + - netif.c: add RT-Thread netdev header file , status synchronize(UP, LINK_UP), address synchronize(IP, netmask, gateway); + + - dns.c: add RT-Thread header file, dns servers synchronize; + + - sockets.c: custom 'select' function implementation in RT-Thread by the wait queue mode. + +by ChenYong 2019/3/26 10:00 AM +chenyong@rt-thread.com diff --git a/components/net/lwip-2.1.0/SConscript b/components/net/lwip-2.1.0/SConscript index 22c56be1b9..36baf9418b 100644 --- a/components/net/lwip-2.1.0/SConscript +++ b/components/net/lwip-2.1.0/SConscript @@ -257,11 +257,8 @@ if GetDepend(['RT_LWIP_PPP']): if GetDepend(['RT_USING_LWIP_IPV6']): src += lwipcore6_SRCS -if GetDepend(['RT_USING_NETUTILS']): - if GetDepend(['RT_NETUTILS_USING_TFTP']): - src += lwiptftp_SRCS - if GetDepend(['RT_NETUTILS_USING_PING']): - src += lwipping_SRCS +if GetDepend(['RT_LWIP_USING_PING']): + src += lwipping_SRCS group = DefineGroup('lwIP', src, depend = ['RT_USING_LWIP', 'RT_USING_LWIP210'], CPPPATH = path) diff --git a/components/net/lwip-2.1.0/src/apps/ping/ping.c b/components/net/lwip-2.1.0/src/apps/ping/ping.c index 4b934f0cac..1075e2ddfd 100644 --- a/components/net/lwip-2.1.0/src/apps/ping/ping.c +++ b/components/net/lwip-2.1.0/src/apps/ping/ping.c @@ -2,16 +2,20 @@ * netutils: ping implementation */ -#include "lwip/opt.h" +#include -#include "lwip/mem.h" -#include "lwip/icmp.h" -#include "lwip/netif.h" -#include "lwip/sys.h" -#include "lwip/sockets.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" -#include "lwip/ip.h" +#ifdef RT_LWIP_ICMP /* don't build if not configured for use in rtconfig.h */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include /** * PING_DEBUG: Enable debugging for PING. @@ -21,9 +25,9 @@ #endif /** ping receive timeout - in milliseconds */ -#define PING_RCV_TIMEO rt_tick_from_millisecond(2000) +#define PING_RCV_TIMEO (2 * RT_TICK_PER_SECOND) /** ping delay - in milliseconds */ -#define PING_DELAY rt_tick_from_millisecond(1000) +#define PING_DELAY (1 * RT_TICK_PER_SECOND) /** ping identifier - must fit on a u16_t */ #ifndef PING_ID @@ -55,21 +59,26 @@ static void ping_prepare_echo( struct icmp_echo_hdr *iecho, u16_t len) iecho->seqno = htons(++ping_seq_num); /* fill the additional data buffer with some data */ - for(i = 0; i < data_len; i++) + for (i = 0; i < data_len; i++) { - ((char*)iecho)[sizeof(struct icmp_echo_hdr) + i] = (char)i; + ((char*) iecho)[sizeof(struct icmp_echo_hdr) + i] = (char) i; } - iecho->chksum = inet_chksum(iecho, len); +#ifdef RT_LWIP_USING_HW_CHECKSUM + iecho->chksum = 0; +#else + iecho->chksum = inet_chksum(iecho, len); +#endif + } /* Ping using the socket ip */ -static err_t ping_send(int s, ip_addr_t *addr, int size) +err_t lwip_ping_send(int s, ip_addr_t *addr, int size) { int err; struct icmp_echo_hdr *iecho; struct sockaddr_in to; - size_t ping_size = sizeof(struct icmp_echo_hdr) + size; + int ping_size = sizeof(struct icmp_echo_hdr) + size; LWIP_ASSERT("ping_size is too big", ping_size <= 0xffff); iecho = rt_malloc(ping_size); @@ -78,19 +87,25 @@ static err_t ping_send(int s, ip_addr_t *addr, int size) return ERR_MEM; } - ping_prepare_echo(iecho, (u16_t)ping_size); + ping_prepare_echo(iecho, (u16_t) ping_size); to.sin_len = sizeof(to); to.sin_family = AF_INET; +#if LWIP_IPV4 && LWIP_IPV6 + to.sin_addr.s_addr = addr->u_addr.ip4.addr; +#elif LWIP_IPV4 to.sin_addr.s_addr = addr->addr; +#elif LWIP_IPV6 +#error Not supported IPv6. +#endif - err = lwip_sendto(s, iecho, ping_size, 0, (struct sockaddr*)&to, sizeof(to)); + err = lwip_sendto(s, iecho, ping_size, 0, (struct sockaddr*) &to, sizeof(to)); rt_free(iecho); return (err == ping_size ? ERR_OK : ERR_VAL); } -static int ping_recv(int s, int *ttl) +int lwip_ping_recv(int s, int *ttl) { char buf[64]; int fromlen = sizeof(struct sockaddr_in), len; @@ -98,12 +113,12 @@ static int ping_recv(int s, int *ttl) struct ip_hdr *iphdr; struct icmp_echo_hdr *iecho; - while((len = lwip_recvfrom(s, buf, sizeof(buf), 0, (struct sockaddr*)&from, (socklen_t*)&fromlen)) > 0) + while ((len = lwip_recvfrom(s, buf, sizeof(buf), 0, (struct sockaddr*) &from, (socklen_t*) &fromlen)) > 0) { - if (len >= (sizeof(struct ip_hdr)+sizeof(struct icmp_echo_hdr))) + if (len >= (int)(sizeof(struct ip_hdr) + sizeof(struct icmp_echo_hdr))) { - iphdr = (struct ip_hdr *)buf; - iecho = (struct icmp_echo_hdr *)(buf+(IPH_HL(iphdr) * 4)); + iphdr = (struct ip_hdr *) buf; + iecho = (struct icmp_echo_hdr *) (buf + (IPH_HL(iphdr) * 4)); if ((iecho->id == PING_ID) && (iecho->seqno == htons(ping_seq_num))) { *ttl = iphdr->_ttl; @@ -115,62 +130,86 @@ static int ping_recv(int s, int *ttl) return len; } -rt_err_t ping(char* target, rt_uint32_t times, rt_size_t size) +#ifndef RT_USING_SAL + +/* using the lwIP custom ping */ +rt_err_t ping(char* target_name, rt_uint32_t times, rt_size_t size) { - int s, ttl, recv_len; +#if LWIP_VERSION_MAJOR >= 2U struct timeval timeout = { PING_RCV_TIMEO / RT_TICK_PER_SECOND, PING_RCV_TIMEO % RT_TICK_PER_SECOND }; - ip_addr_t ping_target; +#else + int timeout = PING_RCV_TIMEO * 1000UL / RT_TICK_PER_SECOND; +#endif + + int s, ttl, recv_len; + ip_addr_t target_addr; rt_uint32_t send_times; rt_tick_t recv_start_tick; - struct _ip_addr - { - rt_uint8_t addr0, addr1, addr2, addr3; - } *addr; + struct addrinfo hint, *res = NULL; + struct sockaddr_in *h = NULL; + struct in_addr ina; send_times = 0; ping_seq_num = 0; - if(size == 0) - size = PING_DATA_SIZE; - - if (inet_aton(target, &ping_target) == 0) + if (size == 0) { - rt_kprintf("ping: unknown host %s\n", target); + size = PING_DATA_SIZE; + } + + memset(&hint, 0, sizeof(hint)); + /* convert URL to IP */ + if (lwip_getaddrinfo(target_name, NULL, &hint, &res) != 0) + { + rt_kprintf("ping: unknown host %s\n", target_name); return -RT_ERROR; } - addr = (struct _ip_addr*)&ping_target; - + memcpy(&h, &res->ai_addr, sizeof(struct sockaddr_in *)); + memcpy(&ina, &h->sin_addr, sizeof(ina)); + lwip_freeaddrinfo(res); + if (inet_aton(inet_ntoa(ina), &target_addr) == 0) + { + rt_kprintf("ping: unknown host %s\n", target_name); + return -RT_ERROR; + } + /* new a socket */ if ((s = lwip_socket(AF_INET, SOCK_RAW, IP_PROTO_ICMP)) < 0) { - rt_kprintf("ping: create socket failled\n"); + rt_kprintf("ping: create socket failed\n"); return -RT_ERROR; } - lwip_setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(struct timeval)); + lwip_setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout)); while (1) { - if (ping_send(s, &ping_target, size) == ERR_OK) + int elapsed_time; + + if (lwip_ping_send(s, &target_addr, size) == ERR_OK) { recv_start_tick = rt_tick_get(); - if ((recv_len = ping_recv(s, &ttl)) >= 0) + if ((recv_len = lwip_ping_recv(s, &ttl)) >= 0) { - rt_kprintf("%d bytes from %d.%d.%d.%d icmp_seq=%d ttl=%d time=%d ticks\n", recv_len, addr->addr0, - addr->addr1, addr->addr2, addr->addr3, send_times, ttl, rt_tick_get() - recv_start_tick); + elapsed_time = (rt_tick_get() - recv_start_tick) * 1000UL / RT_TICK_PER_SECOND; + rt_kprintf("%d bytes from %s icmp_seq=%d ttl=%d time=%d ms\n", recv_len, inet_ntoa(ina), send_times, + ttl, elapsed_time); } else { - rt_kprintf("From %d.%d.%d.%d icmp_seq=%d timeout\n", addr->addr0, addr->addr1, addr->addr2, - addr->addr3, send_times); + rt_kprintf("From %s icmp_seq=%d timeout\n", inet_ntoa(ina), send_times); } } else { - rt_kprintf("Send %d.%d.%d.%d - error\n", addr->addr0, addr->addr1, addr->addr2, addr->addr3); + rt_kprintf("Send %s - error\n", inet_ntoa(ina)); } - send_times ++; - if (send_times >= times) break; /* send ping times reached, stop */ + send_times++; + if (send_times >= times) + { + /* send ping times reached, stop */ + break; + } rt_thread_delay(PING_DELAY); /* take a delay */ } @@ -198,4 +237,9 @@ int cmd_ping(int argc, char **argv) return 0; } FINSH_FUNCTION_EXPORT_ALIAS(cmd_ping, __cmd_ping, ping network host); -#endif +#endif /* RT_USING_FINSH */ + +#endif /* RT_USING_SAL */ + +#endif /* RT_LWIP_ICMP */ + diff --git a/components/net/lwip-2.1.0/src/core/dns.c b/components/net/lwip-2.1.0/src/core/dns.c index 9d2f61ed86..831956f711 100644 --- a/components/net/lwip-2.1.0/src/core/dns.c +++ b/components/net/lwip-2.1.0/src/core/dns.c @@ -97,6 +97,8 @@ #include +#include + /** Random generator function to create random TXIDs and source ports for queries */ #ifndef DNS_RAND_TXID #if ((LWIP_DNS_SECURE & LWIP_DNS_SECURE_RAND_XID) != 0) @@ -363,6 +365,14 @@ dns_setserver(u8_t numdns, const ip_addr_t *dnsserver) if (numdns < DNS_MAX_SERVERS) { if (dnsserver != NULL) { dns_servers[numdns] = (*dnsserver); + +#ifdef RT_USING_NETDEV + extern struct netdev *netdev_default; + extern void netdev_low_level_set_dns_server(struct netdev *netdev, uint8_t dns_num, const ip_addr_t *dns_server); + + /* set network interface device DNS server address */ + netdev_low_level_set_dns_server(netdev_default, numdns, dnsserver); +#endif /* RT_USING_NETDEV */ } else { dns_servers[numdns] = *IP_ADDR_ANY; } diff --git a/components/net/lwip-2.1.0/src/core/netif.c b/components/net/lwip-2.1.0/src/core/netif.c index 15200a2740..5b31c627e9 100644 --- a/components/net/lwip-2.1.0/src/core/netif.c +++ b/components/net/lwip-2.1.0/src/core/netif.c @@ -90,6 +90,13 @@ #include "lwip/nd6.h" #endif +#include + +#ifdef RT_USING_NETDEV +#include "lwip/netdb.h" +#include +#endif /* RT_USING_NETDEV */ + #if LWIP_NETIF_STATUS_CALLBACK #define NETIF_STATUS_CALLBACK(n) do{ if (n->status_callback) { (n->status_callback)(n); }}while(0) #else @@ -481,6 +488,12 @@ netif_do_set_ipaddr(struct netif *netif, const ip4_addr_t *ipaddr, ip_addr_t *ol netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4); NETIF_STATUS_CALLBACK(netif); + +#ifdef RT_USING_NETDEV + /* rt-thread sal network interface device set IP address operations */ + netdev_low_level_set_ipaddr(netdev_get_by_name(netif->name), (ip_addr_t *)ipaddr); +#endif /* RT_USING_NETDEV */ + return 1; /* address changed */ } return 0; /* address unchanged */ @@ -541,6 +554,12 @@ netif_do_set_netmask(struct netif *netif, const ip4_addr_t *netmask, ip_addr_t * ip4_addr2_16(netif_ip4_netmask(netif)), ip4_addr3_16(netif_ip4_netmask(netif)), ip4_addr4_16(netif_ip4_netmask(netif)))); + +#ifdef RT_USING_NETDEV + /* rt-thread network interface device set netmask address */ + netdev_low_level_set_netmask(netdev_get_by_name(netif->name), (ip_addr_t *)netmask); +#endif /* RT_USING_NETDEV */ + return 1; /* netmask changed */ } return 0; /* netmask unchanged */ @@ -603,6 +622,12 @@ netif_do_set_gw(struct netif *netif, const ip4_addr_t *gw, ip_addr_t *old_gw) ip4_addr2_16(netif_ip4_gw(netif)), ip4_addr3_16(netif_ip4_gw(netif)), ip4_addr4_16(netif_ip4_gw(netif)))); + +#ifdef RT_USING_NETDEV + /* rt_thread network interface device set gateway address */ + netdev_low_level_set_gw(netdev_get_by_name(netif->name), (ip_addr_t *)gw); +#endif /* RT_USING_NETDEV */ + return 1; /* gateway changed */ } return 0; /* gateway unchanged */ @@ -866,6 +891,11 @@ netif_set_up(struct netif *netif) #if LWIP_IPV6 nd6_restart_netif(netif); #endif /* LWIP_IPV6 */ + +#ifdef RT_USING_NETDEV + /* rt-thread network interface device set up status */ + netdev_low_level_set_status(netdev_get_by_name(netif->name), RT_TRUE); +#endif /* RT_USING_NETDEV */ } } @@ -945,6 +975,11 @@ netif_set_down(struct netif *netif) #endif /* LWIP_IPV6 */ NETIF_STATUS_CALLBACK(netif); + +#ifdef RT_USING_NETDEV + /* rt-thread network interface device set down status */ + netdev_low_level_set_status(netdev_get_by_name(netif->name), RT_FALSE); +#endif /* RT_USING_NETDEV */ } } @@ -1015,6 +1050,11 @@ netif_set_link_up(struct netif *netif) netif_invoke_ext_callback(netif, LWIP_NSC_LINK_CHANGED, &args); } #endif + +#ifdef RT_USING_NETDEV + /* rt-thread network interface device set link up status */ + netdev_low_level_set_link_status(netdev_get_by_name(netif->name), RT_TRUE); +#endif /* RT_USING_NETDEV */ } } @@ -1039,6 +1079,11 @@ netif_set_link_down(struct netif *netif) netif_invoke_ext_callback(netif, LWIP_NSC_LINK_CHANGED, &args); } #endif + +#ifdef RT_USING_NETDEV + /* rt-thread network interface device set link down status */ + netdev_low_level_set_link_status(netdev_get_by_name(netif->name), RT_FALSE); +#endif /* RT_USING_NETDEV */ } } diff --git a/components/net/lwip-2.1.0/src/netif/ethernetif.c b/components/net/lwip-2.1.0/src/netif/ethernetif.c index f0defe5b25..655f2864be 100755 --- a/components/net/lwip-2.1.0/src/netif/ethernetif.c +++ b/components/net/lwip-2.1.0/src/netif/ethernetif.c @@ -106,6 +106,244 @@ static char eth_rx_thread_stack[RT_LWIP_ETHTHREAD_STACKSIZE]; #endif #endif +#ifdef RT_USING_NETDEV + +#include "lwip/init.h" +#include "lwip/netdb.h" +#include + +static int lwip_netdev_set_up(struct netdev *netif) +{ + netif_set_up((struct netif *)netif->user_data); + return ERR_OK; +} + +static int lwip_netdev_set_down(struct netdev *netif) +{ + netif_set_down((struct netif *)netif->user_data); + return ERR_OK; +} + +static int lwip_netdev_set_addr_info(struct netdev *netif, ip_addr_t *ip_addr, ip_addr_t *netmask, ip_addr_t *gw) +{ + if (ip_addr && netmask && gw) + { + netif_set_addr((struct netif *)netif->user_data, ip_addr, netmask, gw); + } + else + { + if (ip_addr) + { + netif_set_ipaddr((struct netif *)netif->user_data, ip_addr); + } + + if (netmask) + { + netif_set_netmask((struct netif *)netif->user_data, netmask); + } + + if (gw) + { + netif_set_gw((struct netif *)netif->user_data, gw); + } + } + + return ERR_OK; +} + +#ifdef RT_LWIP_DNS +static int lwip_netdev_set_dns_server(struct netdev *netif, ip_addr_t *dns_server) +{ + extern void set_dns(char* dns_server); + set_dns(ipaddr_ntoa(dns_server)); + return ERR_OK; +} +#endif /* RT_LWIP_DNS */ + +#ifdef RT_LWIP_DHCP +static int lwip_netdev_set_dhcp(struct netdev *netif, rt_bool_t is_enabled) +{ + netdev_low_level_set_dhcp_status(netif, is_enabled); + return ERR_OK; +} +#endif /* RT_LWIP_DHCP */ + +#ifdef RT_LWIP_USING_PING +extern int lwip_ping_recv(int s, int *ttl); +extern err_t lwip_ping_send(int s, ip_addr_t *addr, int size); + +int lwip_netdev_ping(struct netdev *netif, const char *host, size_t data_len, + uint32_t timeout, struct netdev_ping_resp *ping_resp) +{ + int s, ttl, recv_len, result = 0; + int elapsed_time; + rt_tick_t recv_start_tick; +#if LWIP_VERSION_MAJOR >= 2U + struct timeval recv_timeout = { timeout / RT_TICK_PER_SECOND, timeout % RT_TICK_PER_SECOND }; +#else + int recv_timeout = timeout * 1000UL / RT_TICK_PER_SECOND; +#endif + ip_addr_t target_addr; + struct addrinfo hint, *res = RT_NULL; + struct sockaddr_in *h = RT_NULL; + struct in_addr ina; + + RT_ASSERT(netif); + RT_ASSERT(host); + RT_ASSERT(ping_resp); + + rt_memset(&hint, 0x00, sizeof(hint)); + /* convert URL to IP */ + if (lwip_getaddrinfo(host, RT_NULL, &hint, &res) != 0) + { + return -RT_ERROR; + } + rt_memcpy(&h, &res->ai_addr, sizeof(struct sockaddr_in *)); + rt_memcpy(&ina, &h->sin_addr, sizeof(ina)); + lwip_freeaddrinfo(res); + if (inet_aton(inet_ntoa(ina), &target_addr) == 0) + { + return -RT_ERROR; + } + rt_memcpy(&(ping_resp->ip_addr), &target_addr, sizeof(ip_addr_t)); + + /* new a socket */ + if ((s = lwip_socket(AF_INET, SOCK_RAW, IP_PROTO_ICMP)) < 0) + { + return -RT_ERROR; + } + + lwip_setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &recv_timeout, sizeof(recv_timeout)); + + if (lwip_ping_send(s, &target_addr, data_len) == ERR_OK) + { + recv_start_tick = rt_tick_get(); + if ((recv_len = lwip_ping_recv(s, &ttl)) >= 0) + { + elapsed_time = (rt_tick_get() - recv_start_tick) * 1000UL / RT_TICK_PER_SECOND; + ping_resp->data_len = recv_len; + ping_resp->ttl = ttl; + ping_resp->ticks = elapsed_time; + } + else + { + result = -RT_ETIMEOUT; + goto __exit; + } + } + else + { + result = -RT_ETIMEOUT; + goto __exit; + } + +__exit: + lwip_close(s); + + return result; +} +#endif /* RT_LWIP_USING_PING */ + +#if defined (RT_LWIP_TCP) || defined (RT_LWIP_UDP) +void lwip_netdev_netstat(struct netdev *netif) +{ + extern void list_tcps(void); + extern void list_udps(void); + +#ifdef RT_LWIP_TCP + list_tcps(); +#endif +#ifdef RT_LWIP_UDP + list_udps(); +#endif +} +#endif /* RT_LWIP_TCP || RT_LWIP_UDP */ + +const struct netdev_ops lwip_netdev_ops = +{ + lwip_netdev_set_up, + lwip_netdev_set_down, + + lwip_netdev_set_addr_info, +#ifdef RT_LWIP_DNS + lwip_netdev_set_dns_server, +#else + NULL, +#endif /* RT_LWIP_DNS */ + +#ifdef RT_LWIP_DHCP + lwip_netdev_set_dhcp, +#else + NULL, +#endif /* RT_LWIP_DHCP */ + +#ifdef RT_LWIP_USING_PING + lwip_netdev_ping, +#else + NULL, +#endif /* RT_LWIP_USING_PING */ + +#if defined (RT_LWIP_TCP) || defined (RT_LWIP_UDP) + lwip_netdev_netstat, +#endif /* RT_LWIP_TCP || RT_LWIP_UDP */ +}; + +static int netdev_add(struct netif *lwip_netif) +{ +#define LWIP_NETIF_NAME_LEN 2 + int result = 0; + struct netdev *netdev = RT_NULL; + char name[LWIP_NETIF_NAME_LEN + 1] = {0}; + + RT_ASSERT(lwip_netif); + + netdev = (struct netdev *)rt_calloc(1, sizeof(struct netdev)); + if (netdev == RT_NULL) + { + return -ERR_IF; + } + + netdev->flags = lwip_netif->flags; + netdev->ops = &lwip_netdev_ops; + netdev->hwaddr_len = lwip_netif->hwaddr_len; + rt_memcpy(netdev->hwaddr, lwip_netif->hwaddr, lwip_netif->hwaddr_len); + +#ifdef SAL_USING_LWIP + extern int sal_lwip_netdev_set_pf_info(struct netdev *netdev); + /* set the lwIP network interface device protocol family information */ + sal_lwip_netdev_set_pf_info(netdev); +#endif /* SAL_USING_LWIP */ + + rt_strncpy(name, lwip_netif->name, LWIP_NETIF_NAME_LEN); + result = netdev_register(netdev, name, (void *)lwip_netif); + +#ifdef RT_LWIP_DHCP + netdev_low_level_set_dhcp_status(netdev, RT_TRUE); +#endif + + return result; +} + +/* synchronize lwIP network interface device and network interface device flags */ +static int netdev_flags_sync(struct netif *lwip_netif) +{ + struct netdev *netdev = NULL; + + RT_ASSERT(lwip_netif); + + netdev = netdev_get_by_name(lwip_netif->name); + if (netdev == RT_NULL) + { + return -ERR_IF; + } + + netdev->mtu = lwip_netif->mtu; + netdev->flags |= lwip_netif->flags; + + return ERR_OK; +} +#endif /* RT_USING_NETDEV */ + static err_t ethernetif_linkoutput(struct netif *netif, struct pbuf *p) { #ifndef LWIP_NO_TX_THREAD @@ -146,6 +384,11 @@ static err_t eth_netif_device_init(struct netif *netif) { rt_device_t device; +#ifdef RT_USING_NETDEV + /* network interface device register */ + netdev_add(netif); +#endif /* RT_USING_NETDEV */ + /* get device object */ device = (rt_device_t) ethif; if (rt_device_init(device) != RT_EOK) @@ -270,6 +513,11 @@ rt_err_t eth_device_init_with_flag(struct eth_device *dev, const char *name, rt_ netifapi_netif_add(netif, &ipaddr, &netmask, &gw, dev, eth_netif_device_init, tcpip_input); } +#ifdef RT_USING_NETDEV + /* network interface device flags synchronize */ + netdev_flags_sync(netif); +#endif /* RT_USING_NETDEV */ + return RT_EOK; } diff --git a/components/net/netdev/SConscript b/components/net/netdev/SConscript new file mode 100644 index 0000000000..fca31a268b --- /dev/null +++ b/components/net/netdev/SConscript @@ -0,0 +1,13 @@ +# RT-Thread building script for component + +from building import * + +cwd = GetCurrentDir() + +src = Glob('src/*.c') + +CPPPATH = [cwd + '/include'] + +group = DefineGroup('netdev', src, depend = ['RT_USING_NETDEV'], CPPPATH = CPPPATH) + +Return('group') diff --git a/components/net/sal_socket/include/socket/arpa/inet.h b/components/net/netdev/include/arpa/inet.h similarity index 76% rename from components/net/sal_socket/include/socket/arpa/inet.h rename to components/net/netdev/include/arpa/inet.h index f477df5c23..085e15dcbc 100644 --- a/components/net/sal_socket/include/socket/arpa/inet.h +++ b/components/net/netdev/include/arpa/inet.h @@ -8,9 +8,9 @@ * 2015-02-17 Bernard First version */ -#ifndef INET_H__ -#define INET_H__ +#ifndef __INET_H__ +#define __INET_H__ -#include +#include #endif diff --git a/components/net/netdev/include/netdev.h b/components/net/netdev/include/netdev.h new file mode 100644 index 0000000000..e194003653 --- /dev/null +++ b/components/net/netdev/include/netdev.h @@ -0,0 +1,179 @@ +/* + * Copyright (c) 2006-2019, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2019-03-18 ChenYong First version + */ + +#ifndef __NETDEV_H__ +#define __NETDEV_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* the maximum of all used hardware address lengths */ +#ifndef NETDEV_HWADDR_MAX_LEN +#define NETDEV_HWADDR_MAX_LEN 8U +#endif + +/* the maximum of dns server number supported */ +#ifndef NETDEV_DNS_SERVERS_NUM +#define NETDEV_DNS_SERVERS_NUM 2U +#endif + +/* whether the network interface device is 'up' (set by the network interface driver or application) */ +#define NETDEV_FLAG_UP 0x01U +/* if set, the network interface device has broadcast capability, only supported in the 'lwIP' stack */ +#define NETDEV_FLAG_BROADCAST 0x02U +/* if set, the network interface device has an active link (set by the network interface driver) */ +#define NETDEV_FLAG_LINK_UP 0x04U +/* if set, the network interface device is an ethernet device using ARP, only supported in the 'lwIP' stack */ +#define NETDEV_FLAG_ETHARP 0x08U +/* if set, the network interface device is an ethernet device, only supported in the 'lwIP' stack */ +#define NETDEV_FLAG_ETHERNET 0x10U +/* if set, the network interface device has IGMP capability, only supported in the 'lwIP' stack */ +#define NETDEV_FLAG_IGMP 0x20U +/* if set, the network interface device has MLD6 capability, only supported in the 'lwIP' stack */ +#define NETDEV_FLAG_MLD6 0x40U +/* if set, the network interface device connected to internet successfully (set by the network interface driver) */ +#define NETDEV_FLAG_INTERNET_UP 0x80U +/* if set, the network interface device has DHCP capability (set by the network interface device driver or application) */ +#define NETDEV_FLAG_DHCP 0x100U + +enum netdev_cb_type +{ + NETDEV_CB_ADDR_IP, /* IP address */ + NETDEV_CB_ADDR_NETMASK, /* subnet mask */ + NETDEV_CB_ADDR_GATEWAY, /* netmask */ + NETDEV_CB_ADDR_DNS_SERVER, /* dns server */ + NETDEV_CB_STATUS_UP, /* changed to 'up' */ + NETDEV_CB_STATUS_DOWN, /* changed to 'down' */ + NETDEV_CB_STATUS_LINK_UP, /* changed to 'link up' */ + NETDEV_CB_STATUS_LINK_DOWN, /* changed to 'link down' */ + NETDEV_CB_STATUS_INTERNET_UP, /* changed to 'internet up' */ + NETDEV_CB_STATUS_INTERNET_DOWN, /* changed to 'internet down' */ + NETDEV_CB_STATUS_DHCP_ENABLE, /* enable DHCP capability */ + NETDEV_CB_STATUS_DHCP_DISABLE, /* disable DHCP capability */ +}; + +struct netdev; + +/* function prototype for network interface device status or address change callback functions */ +typedef void (*netdev_callback_fn )(struct netdev *netdev, enum netdev_cb_type type); + +struct netdev_ops; + +/* network interface device object */ +struct netdev +{ + rt_slist_t list; + + char name[RT_NAME_MAX]; /* network interface device name */ + ip_addr_t ip_addr; /* IP address */ + ip_addr_t netmask; /* subnet mask */ + ip_addr_t gw; /* gateway */ + ip_addr_t dns_servers[NETDEV_DNS_SERVERS_NUM]; /* DNS server */ + uint8_t hwaddr_len; /* hardware address length */ + uint8_t hwaddr[NETDEV_HWADDR_MAX_LEN]; /* hardware address */ + + uint16_t flags; /* network interface device status flag */ + uint16_t mtu; /* maximum transfer unit (in bytes) */ + const struct netdev_ops *ops; /* network interface device operations */ + + netdev_callback_fn status_callback; /* network interface device flags change callback */ + netdev_callback_fn addr_callback; /* network interface device address information change callback */ + +#ifdef RT_USING_SAL + void *sal_user_data; /* user-specific data for SAL */ +#endif /* RT_USING_SAL */ + void *user_data; /* user-specific data */ +}; + +/* The list of network interface device */ +extern struct netdev *netdev_list; +/* The default network interface device */ +extern struct netdev *netdev_default; + +/* The network interface device ping response object */ +struct netdev_ping_resp +{ + ip_addr_t ip_addr; /* response IP address */ + uint16_t data_len; /* response data length */ + uint16_t ttl; /* time to live */ + uint32_t ticks; /* response time, unit tick */ + void *user_data; /* user-specific data */ +}; + +/* The network interface device operations */ +struct netdev_ops +{ + /* set network interface device hardware status operations */ + int (*set_up)(struct netdev *netdev); + int (*set_down)(struct netdev *netdev); + + /* set network interface device address information operations */ + int (*set_addr_info)(struct netdev *netdev, ip_addr_t *ip_addr, ip_addr_t *netmask, ip_addr_t *gw); + int (*set_dns_server)(struct netdev *netdev, ip_addr_t *dns_server); + int (*set_dhcp)(struct netdev *netdev, rt_bool_t is_enabled); + + /* set network interface device common network interface device operations */ + int (*ping)(struct netdev *netdev, const char *host, size_t data_len, uint32_t timeout, struct netdev_ping_resp *ping_resp); + void (*netstat)(struct netdev *netdev); + +}; + +/* The network interface device registered and unregistered*/ +int netdev_register(struct netdev *netdev, const char *name, void *user_data); +int netdev_unregister(struct netdev *netdev); + +/* Get network interface device object */ +struct netdev *netdev_get_first_link_up(void); +struct netdev *netdev_get_by_ipaddr(ip_addr_t *ip_addr); +struct netdev *netdev_get_by_name(const char *name); +#ifdef RT_USING_SAL +struct netdev *netdev_get_by_family(int family); +#endif /* RT_USING_SAL */ + +/* Set default network interface device in list */ +void netdev_set_default(struct netdev *netdev); + +/* Set network interface device status */ +int netdev_set_up(struct netdev *netdev); +int netdev_set_down(struct netdev *netdev); +int netdev_dhcp_enabled(struct netdev *netdev, rt_bool_t is_enabled); + +/* Get network interface device status */ +#define netdev_is_up(netdev) (((netdev)->flags & NETDEV_FLAG_UP) ? (uint8_t)1 : (uint8_t)0) +#define netdev_is_link_up(netdev) (((netdev)->flags & NETDEV_FLAG_LINK_UP) ? (uint8_t)1 : (uint8_t)0) +#define netdev_is_internet_up(netdev) (((netdev)->flags & NETDEV_FLAG_INTERNET_UP) ? (uint8_t)1 : (uint8_t)0) +#define netdev_is_dhcp_enabled(netdev) (((netdev)->flags & NETDEV_FLAG_DHCP) ? (uint8_t)1 : (uint8_t)0) + +/* Set network interface device address */ +int netdev_set_ipaddr(struct netdev *netdev, const ip_addr_t *ipaddr); +int netdev_set_netmask(struct netdev *netdev, const ip_addr_t *netmask); +int netdev_set_gw(struct netdev *netdev, const ip_addr_t *gw); +int netdev_set_dns_server(struct netdev *netdev, uint8_t dns_num, const ip_addr_t *dns_server); + +/* Set network interface device callback, it can be called when the status or address changed */ +void netdev_set_status_callback(struct netdev *netdev, netdev_callback_fn status_callback); + +/* Set network interface device status and address, this function can only be called in the network interface device driver */ +void netdev_low_level_set_ipaddr(struct netdev *netdev, const ip_addr_t *ipaddr); +void netdev_low_level_set_netmask(struct netdev *netdev, const ip_addr_t *netmask); +void netdev_low_level_set_gw(struct netdev *netdev, const ip_addr_t *gw); +void netdev_low_level_set_dns_server(struct netdev *netdev, uint8_t dns_num, const ip_addr_t *dns_server); +void netdev_low_level_set_status(struct netdev *netdev, rt_bool_t is_up); +void netdev_low_level_set_link_status(struct netdev *netdev, rt_bool_t is_up); +void netdev_low_level_set_dhcp_status(struct netdev *netdev, rt_bool_t is_enable); + +#ifdef __cplusplus +} +#endif + +#endif /* __NETDEV_H__ */ diff --git a/components/net/netdev/include/netdev_ipaddr.h b/components/net/netdev/include/netdev_ipaddr.h new file mode 100644 index 0000000000..c2e13cd118 --- /dev/null +++ b/components/net/netdev/include/netdev_ipaddr.h @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2018-05-18 ChenYong First version + */ + +#ifndef __NETDEV_IPADDR_H__ +#define __NETDEV_IPADDR_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Only supports the IPV4 protocol */ +#ifndef NETDEV_IPV4 +#define NETDEV_IPV4 1 +#endif + +#ifndef NETDEV_IPV6 +#define NETDEV_IPV6 0 +#endif + +#ifdef NETDEV_IPV4 +/** IPv4 only: set the IP address given as an u32_t */ +#define ip4_addr_set_u32(dest_ipaddr, src_u32) ((dest_ipaddr)->addr = (src_u32)) +/** IPv4 only: get the IP address as an u32_t */ +#define ip4_addr_get_u32(src_ipaddr) ((src_ipaddr)->addr) + +#define IP4ADDR_STRLEN_MAX 16 +#endif /* NETIF_IPV4 */ + +/* These macros should be calculated by the preprocessor and are used + with compile-time constants only (so that there is no little-endian + overhead at runtime). */ +#define PP_HTONS(x) ((((x) & 0x00ffUL) << 8) | (((x) & 0xff00UL) >> 8)) +#define PP_NTOHS(x) PP_HTONS(x) +#define PP_HTONL(x) ((((x) & 0x000000ffUL) << 24) | \ + (((x) & 0x0000ff00UL) << 8) | \ + (((x) & 0x00ff0000UL) >> 8) | \ + (((x) & 0xff000000UL) >> 24)) +#define PP_NTOHL(x) PP_HTONL(x) + +#define htons(x) (uint16_t)PP_HTONS(x) +#define ntohs(x) (uint16_t)PP_NTOHS(x) +#define htonl(x) (uint32_t)PP_HTONL(x) +#define ntohl(x) (uint32_t)PP_NTOHL(x) + +/* If your port already typedef's in_addr_t, define IN_ADDR_T_DEFINED + to prevent this code from redefining it. */ +#if !defined(in_addr_t) && !defined(IN_ADDR_T_DEFINED) +typedef uint32_t in_addr_t; +#endif + +#if NETDEV_IPV4 +struct in_addr +{ + in_addr_t s_addr; +}; + +typedef struct ip4_addr +{ + uint32_t addr; +} ip4_addr_t; + +typedef ip4_addr_t ip_addr_t; +#endif /* NETIF_IPV4 */ + +#if NETDEV_IPV6 +struct in6_addr +{ + union + { + uint32_t u32_addr[4]; + uint8_t u8_addr[16]; + } un; +#define s6_addr un.u8_addr +}; + +typedef struct ip6_addr +{ + uint32_t addr[4]; +} ip6_addr_t; + +typedef ip6_addr ip_addr_t +#endif /* NETIF_IPV6 */ + +#if NETDEV_IPV4 && NETDEV_IPV6 +/* IP address types for use in ip_addr_t.type member */ +enum netdev_ip_addr_type +{ + /** IPv4 */ + IPADDR_TYPE_V4 = 0U, + /** IPv6 */ + IPADDR_TYPE_V6 = 6U, + /** IPv4+IPv6 ("dual-stack") */ + IPADDR_TYPE_ANY = 46U +}; + +/* A union struct for both IP version's addresses */ +typedef struct _ip_addr +{ + union + { + ip6_addr_t ip6; + ip4_addr_t ip4; + } u_addr; + /** @ref netdev_ip_addr_type */ + uint8_t type; +} ip_addr_t; +#endif /* NETIF_IPV4 && NETIF_IPV6 */ + +/** 255.255.255.255 */ +#define IPADDR_NONE ((uint32_t)0xffffffffUL) +/** 127.0.0.1 */ +#define IPADDR_LOOPBACK ((uint32_t)0x7f000001UL) +/** 0.0.0.0 */ +#define IPADDR_ANY ((uint32_t)0x00000000UL) +/** 255.255.255.255 */ +#define IPADDR_BROADCAST ((uint32_t)0xffffffffUL) + +/** 255.255.255.255 */ +#define INADDR_NONE IPADDR_NONE +/** 127.0.0.1 */ +#define INADDR_LOOPBACK IPADDR_LOOPBACK +/** 0.0.0.0 */ +#define INADDR_ANY IPADDR_ANY +/** 255.255.255.255 */ +#define INADDR_BROADCAST IPADDR_BROADCAST + +#define IPADDR_BROADCAST_STRING "255.255.255.255" + +#ifdef NETDEV_IPV4 + +/** Copy IP address - faster than ip4_addr_set: no NULL check */ +#define ip4_addr_copy(dest, src) ((dest).addr = (src).addr) +#define ip4_addr_cmp(addr1, addr2) ((addr1)->addr == (addr2)->addr) +/** Set complete address to zero */ +#define ip4_addr_set_zero(ipaddr) ((ipaddr)->addr = 0) +#define ip4_addr_isany_val(ipaddr) ((ipaddr).addr == IPADDR_ANY) +#define ip4_addr_isany(ipaddr) ((ipaddr) == NULL || ip4_addr_isany_val(*(ipaddr))) + +#define ip_addr_copy(dest, src) ip4_addr_copy(dest, src) +#define ip_addr_cmp(addr1, addr2) ip4_addr_cmp(addr1, addr2) +#define ip_addr_set_zero(ipaddr) ip4_addr_set_zero(ipaddr) +#define ip_addr_isany(ipaddr) ip4_addr_isany(ipaddr) + +in_addr_t netdev_ipaddr_addr(const char *cp); +int netdev_ip4addr_aton(const char *cp, ip4_addr_t *addr); +char *netdev_ip4addr_ntoa(const ip4_addr_t *addr); +char *netdev_ip4addr_ntoa_r(const ip4_addr_t *addr, char *buf, int buflen); + +#define inet_addr(cp) netdev_ipaddr_addr(cp) +#define inet_aton(cp, addr) netdev_ip4addr_aton(cp,(ip4_addr_t*)addr) +#define inet_ntoa(addr) netdev_ip4addr_ntoa((const ip4_addr_t*)&(addr)) +#define inet_ntoa_r(addr, buf, buflen) netdev_ip4addr_ntoa_r((const ip4_addr_t*)&(addr), buf, buflen) + +#endif /* NETDEV_IPV4 */ + +#ifdef __cplusplus +} +#endif + +#endif /* __NETDEV_IPADDR_H__ */ diff --git a/components/net/netdev/src/netdev.c b/components/net/netdev/src/netdev.c new file mode 100644 index 0000000000..4dde5f2f9c --- /dev/null +++ b/components/net/netdev/src/netdev.c @@ -0,0 +1,1115 @@ +/* + * Copyright (c) 2006-2019, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2019-03-18 ChenYong First version + */ + +#include + +#include +#include + +#include +#include + +#ifdef RT_USING_SAL +#include +#include +#endif /* RT_USING_SAL */ + +#define DBG_TAG "netdev" +#define DBG_LVL DBG_INFO +#include + +/* The list of network interface device */ +struct netdev *netdev_list; +/* The default network interface device */ +struct netdev *netdev_default; + +/** + * This function will register network interface device and + * add it to network interface device list. + * + * @param netdev the network interface device object + * @param name the network interface device name + * @param user_data user-specific data + * + * @return 0: registered successfully + * -1: registered failed + */ +int netdev_register(struct netdev *netdev, const char *name, void *user_data) +{ + rt_base_t level; + uint16_t flags_mask; + int index; + + RT_ASSERT(netdev); + RT_ASSERT(name); + + /* clean network interface device */ + flags_mask = NETDEV_FLAG_UP | NETDEV_FLAG_LINK_UP | NETDEV_FLAG_INTERNET_UP | NETDEV_FLAG_DHCP; + netdev->flags &= ~flags_mask; + + ip_addr_set_zero(&(netdev->ip_addr)); + ip_addr_set_zero(&(netdev->netmask)); + ip_addr_set_zero(&(netdev->gw)); + for (index = 0; index < NETDEV_DNS_SERVERS_NUM; index++) + { + ip_addr_set_zero(&(netdev->dns_servers[index])); + } + netdev->status_callback = RT_NULL; + netdev->addr_callback = RT_NULL; + + /* fill network interface device */ + rt_strncpy(netdev->name, name, rt_strlen(name)); + netdev->user_data = user_data; + + /* initialize current network interface device single list */ + rt_slist_init(&(netdev->list)); + + level = rt_hw_interrupt_disable(); + + if (netdev_list == RT_NULL) + { + netdev_list = netdev; + netdev_default = netdev; + } + else + { + /* tail insertion */ + rt_slist_append(&(netdev_list->list), &(netdev->list)); + } + + rt_hw_interrupt_enable(level); + + return RT_EOK; +} + +/** + * This function will unregister network interface device and + * delete it from network interface device list. + * + * @param netdev the network interface device object + * + * @return 0: unregistered successfully + * -1: unregistered failed + */ +int netdev_unregister(struct netdev *netdev) +{ + rt_base_t level; + rt_slist_t *node = RT_NULL; + struct netdev *cur_netdev = RT_NULL; + + RT_ASSERT(netdev); + + if (netdev_list == RT_NULL) + { + return -RT_ERROR; + } + + level = rt_hw_interrupt_disable(); + + for (node = &(netdev_list->list); node; node = rt_slist_next(node)) + { + cur_netdev = rt_slist_entry(node, struct netdev, list); + if (cur_netdev && (rt_memcpy(cur_netdev, netdev, sizeof(struct netdev)) == 0)) + { + rt_slist_remove(&(netdev_list->list), &(cur_netdev->list)); + rt_hw_interrupt_enable(level); + + return RT_EOK; + } + } + + rt_hw_interrupt_enable(level); + + /* not find this network interface device in network interface device list */ + return -RT_ERROR; +} + +/** + * This function will get the first network interface device + * with the link_up status in network interface device list. + * + * @return != NULL: network interface device object + * NULL: get failed + */ +struct netdev *netdev_get_first_link_up(void) +{ + rt_base_t level; + rt_slist_t *node = RT_NULL; + struct netdev *netdev = RT_NULL; + + if (netdev_list == RT_NULL) + { + return RT_NULL; + } + + level = rt_hw_interrupt_disable(); + + for (node = &(netdev_list->list); node; node = rt_slist_next(node)) + { + netdev = rt_slist_entry(node, struct netdev, list); + if (netdev && netdev_is_up(netdev) && netdev_is_link_up(netdev)) + { + rt_hw_interrupt_enable(level); + return netdev; + } + } + + rt_hw_interrupt_enable(level); + + return RT_NULL; +} + +/** + * This function will get the first network interface device + * in network interface device list by IP address. + * + * @param addr the network interface device IP address + * + * @return != NULL: network interface device object + * NULL: get failed + */ +struct netdev *netdev_get_by_ipaddr(ip_addr_t *ip_addr) +{ + rt_base_t level; + rt_slist_t *node = RT_NULL; + struct netdev *netdev = RT_NULL; + + if (netdev_list == RT_NULL) + { + return RT_NULL; + } + + level = rt_hw_interrupt_disable(); + + for (node = &(netdev_list->list); node; node = rt_slist_next(node)) + { + netdev = rt_slist_entry(node, struct netdev, list); + if (netdev && ip_addr_cmp(&(netdev->ip_addr), ip_addr)) + { + rt_hw_interrupt_enable(level); + return netdev; + } + } + + rt_hw_interrupt_enable(level); + + return RT_NULL; +} + +/** + * This function will get network interface device + * in network interface device list by netdev name. + * + * @param name the network interface device name + * + * @return != NULL: network interface device object + * NULL: get failed + */ +struct netdev *netdev_get_by_name(const char *name) +{ + rt_base_t level; + rt_slist_t *node = RT_NULL; + struct netdev *netdev = RT_NULL; + + if (netdev_list == RT_NULL) + { + return RT_NULL; + } + + level = rt_hw_interrupt_disable(); + + for (node = &(netdev_list->list); node; node = rt_slist_next(node)) + { + netdev = rt_slist_entry(node, struct netdev, list); + if (netdev && (rt_strncmp(netdev->name, name, rt_strlen(netdev->name)) == 0)) + { + rt_hw_interrupt_enable(level); + return netdev; + } + } + + rt_hw_interrupt_enable(level); + + return RT_NULL; +} + +#ifdef RT_USING_SAL +/** + * This function will get the first network interface device + * in network interface device list by protocol family type. + * + * @param family the network interface device protocol family type + * + * @return != NULL: network interface device object + * NULL: get failed + */ +struct netdev *netdev_get_by_family(int family) +{ + rt_base_t level; + rt_slist_t *node = RT_NULL; + struct netdev *netdev = RT_NULL; + struct sal_proto_family *pf = RT_NULL; + + if (netdev_list == RT_NULL) + { + return RT_NULL; + } + + level = rt_hw_interrupt_disable(); + + for (node = &(netdev_list->list); node; node = rt_slist_next(node)) + { + netdev = rt_slist_entry(node, struct netdev, list); + pf = (struct sal_proto_family *) netdev->sal_user_data; + if (pf && pf->skt_ops && pf->family == family && + netdev_is_up(netdev) && netdev_is_link_up(netdev)) + { + rt_hw_interrupt_enable(level); + return netdev; + } + } + + for (node = &(netdev_list->list); node; node = rt_slist_next(node)) + { + netdev = rt_slist_entry(node, struct netdev, list); + pf = (struct sal_proto_family *) netdev->sal_user_data; + if (pf && pf->skt_ops && pf->sec_family == family && + netdev_is_up(netdev) && netdev_is_link_up(netdev)) + { + rt_hw_interrupt_enable(level); + return netdev; + } + } + + rt_hw_interrupt_enable(level); + + return RT_NULL; +} + +#endif /* RT_USING_SAL */ + +/** + * This function will set default network interface device. + * + * @param netdev the network interface device to change + */ +void netdev_set_default(struct netdev *netdev) +{ + if (netdev) + { + netdev_default = netdev; + LOG_D("Setting default network interface device name(%s) successfully.", netdev->name); + } +} + +/** + * This function will enable network interface device . + * + * @param netdev the network interface device to change + * + * @return 0: set status successfully + * -1: set status failed + */ +int netdev_set_up(struct netdev *netdev) +{ + RT_ASSERT(netdev); + + if (!netdev->ops || !netdev->ops->set_up) + { + LOG_E("The network interface device(%s) not support to set status.", netdev->name); + return -RT_ERROR; + } + + /* network interface device status flags check */ + if (netdev_is_up(netdev)) + { + return RT_EOK; + } + + /* execute enable network interface device operations by network interface device driver */ + return netdev->ops->set_up(netdev); +} +/** + * This function will disable network interface device. + * + * @param netdev the network interface device to change + * + * @return 0: set status successfully + * -1: set sttaus failed + */ +int netdev_set_down(struct netdev *netdev) +{ + RT_ASSERT(netdev); + + if (!netdev->ops || !netdev->ops->set_down) + { + LOG_E("The network interface device(%s) not support to set status.", netdev->name); + return -RT_ERROR; + } + + /* network interface device status flags check */ + if (!netdev_is_up(netdev)) + { + return RT_EOK; + } + + /* execute disable network interface device operations by network interface driver */ + return netdev->ops->set_down(netdev); +} + +/** + * This function will control network interface device DHCP capability enable or disable. + * + * @param netdev the network interface device device to change + * @param is_enable the new DHCP status + * + * @return 0: set DHCP status successfully + * -1: set DHCP status failed + */ +int netdev_dhcp_enabled(struct netdev *netdev, rt_bool_t is_enabled) +{ + RT_ASSERT(netdev); + + if (!netdev->ops || !netdev->ops->set_dhcp) + { + LOG_E("The network interface device(%s) not support to set DHCP status.", netdev->name); + return -RT_ERROR; + } + + /* network interface device DHCP flags check */ + if (netdev_is_dhcp_enabled(netdev) == is_enabled) + { + return RT_EOK; + } + + /* execute network interface device DHCP capability control operations */ + return netdev->ops->set_dhcp(netdev, is_enabled); +} + +/** + * This function will set network interface device IP address. + * + * @param netdev the network interface device to change + * @param ipaddr the new IP address + * + * @return 0: set IP address successfully + * -1: set IP address failed + */ +int netdev_set_ipaddr(struct netdev *netdev, const ip_addr_t *ip_addr) +{ + RT_ASSERT(netdev); + RT_ASSERT(ip_addr); + + if (!netdev->ops || !netdev->ops->set_addr_info) + { + LOG_E("The network interface device(%s) not support to set IP address.", netdev->name); + return -RT_ERROR; + } + + if (netdev_is_dhcp_enabled(netdev)) + { + LOG_E("The network interface device(%s) DHCP capability is enable, not support set IP address.", netdev->name); + return -RT_ERROR; + } + + /* execute network interface device set IP address operations */ + return netdev->ops->set_addr_info(netdev, (ip_addr_t *)ip_addr, RT_NULL, RT_NULL); +} + +/** + * This function will set network interface device netmask address. + * + * @param netdev the network interface device to change + * @param netmask the new netmask address + * + * @return 0: set netmask address successfully + * -1: set netmask address failed + */ +int netdev_set_netmask(struct netdev *netdev, const ip_addr_t *netmask) +{ + RT_ASSERT(netdev); + RT_ASSERT(netmask); + + if (!netdev->ops || !netdev->ops->set_addr_info) + { + LOG_E("The network interface device(%s) not support to set netmask address.", netdev->name); + return -RT_ERROR; + } + + if (netdev_is_dhcp_enabled(netdev)) + { + LOG_E("The network interface device(%s) DHCP capability is enable, not support set netmask address.", netdev->name); + return -RT_ERROR; + } + + /* execute network interface device set netmask address operations */ + return netdev->ops->set_addr_info(netdev, RT_NULL, (ip_addr_t *)netmask, RT_NULL); +} + +/** + * This function will set network interface device gateway address. + * + * @param netdev the network interface device to change + * @param gateway the new gateway address + * + * @return 0: set gateway address successfully + * -1: set gateway address failed + */ +int netdev_set_gw(struct netdev *netdev, const ip_addr_t *gw) +{ + RT_ASSERT(netdev); + RT_ASSERT(gw); + + if (!netdev->ops || !netdev->ops->set_addr_info) + { + LOG_E("The network interface device(%s) not support to set gateway address.", netdev->name); + return -RT_ERROR; + } + + if (netdev_is_dhcp_enabled(netdev)) + { + LOG_E("The network interface device(%s) DHCP capability is enable, not support set gateway address.", netdev->name); + return -RT_ERROR; + } + + /* execute network interface device set gateway address operations */ + return netdev->ops->set_addr_info(netdev, RT_NULL, RT_NULL, (ip_addr_t *)gw); +} + +/** + * This function will set network interface device DNS server address. + * + * @param netdev the network interface device to change + * @param dns_server the new DNS server address + * + * @return 0: set netmask address successfully + * -1: set netmask address failed + */ +int netdev_set_dns_server(struct netdev *netdev, uint8_t dns_num, const ip_addr_t *dns_server) +{ + RT_ASSERT(netdev); + RT_ASSERT(dns_server); + + if (dns_num >= NETDEV_DNS_SERVERS_NUM) + { + LOG_E("The number of DNS servers(%d) set exceeds the maximum number(%d).", dns_num + 1, NETDEV_DNS_SERVERS_NUM); + return -RT_ERROR; + } + + if (!netdev->ops || !netdev->ops->set_dns_server) + { + LOG_E("The network interface device(%s) not support to set DNS server address.", netdev->name); + return -RT_ERROR; + } + + /* execute network interface device set DNS server address operations */ + return netdev->ops->set_dns_server(netdev, (ip_addr_t *)dns_server); +} + +/** + * This function will set callback to be called when the network interface device status has been changed. + * + * @param netdev the network interface device to change + * @param status_callback the callback be called when the status has been changed. + */ +void netdev_set_status_callback(struct netdev *netdev, netdev_callback_fn status_callback) +{ + RT_ASSERT(netdev); + RT_ASSERT(status_callback); + + netdev->status_callback = status_callback; +} + +/** + * This function will set callback to be called when the network interface device address has been changed. + * + * @param netdev the network interface device to change + * @param addr_callback the callback be called when the address has been changed. + */ +void netdev_set_addr_callback(struct netdev *netdev, netdev_callback_fn addr_callback) +{ + RT_ASSERT(netdev); + RT_ASSERT(addr_callback); + + netdev->addr_callback = addr_callback; +} + + +/** + * This function will set network interface device IP address. + * @NOTE it can only be called in the network interface device driver. + * + * @param netdev the network interface device to change + * @param ipaddr the new IP address + */ +void netdev_low_level_set_ipaddr(struct netdev *netdev, const ip_addr_t *ip_addr) +{ + RT_ASSERT(ip_addr); + + if (netdev && ip_addr_cmp(&(netdev->ip_addr), ip_addr) == 0) + { + ip_addr_copy(netdev->ip_addr, *ip_addr); + +#ifdef RT_USING_SAL + /* set network interface device flags to internet up */ + if (netdev_is_up(netdev) && netdev_is_link_up(netdev)) + { + sal_check_netdev_internet_up(netdev); + } +#endif /* RT_USING_SAL */ + + /* execute IP address change callback function */ + if (netdev->addr_callback) + { + netdev->addr_callback(netdev, NETDEV_CB_ADDR_IP); + } + } +} + +/** + * This function will set network interface device netmask address. + * @NOTE it can only be called in the network interface device driver. + * + * @param netdev the network interface device to change + * @param netmask the new netmask address + */ +void netdev_low_level_set_netmask(struct netdev *netdev, const ip_addr_t *netmask) +{ + RT_ASSERT(netmask); + + if (netdev && ip_addr_cmp(&(netdev->netmask), netmask) == 0) + { + ip_addr_copy(netdev->netmask, *netmask); + +#ifdef RT_USING_SAL + /* set network interface device flags to internet up */ + if (netdev_is_up(netdev) && netdev_is_link_up(netdev) && + !ip_addr_isany(&(netdev->ip_addr))) + { + sal_check_netdev_internet_up(netdev); + } +#endif /* RT_USING_SAL */ + + /* execute netmask address change callback function */ + if (netdev->addr_callback) + { + netdev->addr_callback(netdev, NETDEV_CB_ADDR_NETMASK); + } + } +} + +/** + * This function will set network interface device gateway address. + * @NOTE it can only be called in the network interface device driver. + * + * @param netdev the network interface device to change + * @param gateway the new gateway address + */ +void netdev_low_level_set_gw(struct netdev *netdev, const ip_addr_t *gw) +{ + RT_ASSERT(gw); + + if (netdev && ip_addr_cmp(&(netdev->gw), gw) == 0) + { + ip_addr_copy(netdev->gw, *gw); + +#ifdef RT_USING_SAL + /* set network interface device flags to internet up */ + if (netdev_is_up(netdev) && netdev_is_link_up(netdev) && + !ip_addr_isany(&(netdev->ip_addr))) + { + sal_check_netdev_internet_up(netdev); + } +#endif /* RT_USING_SAL */ + + /* execute gateway address change callback function */ + if (netdev->addr_callback) + { + netdev->addr_callback(netdev, NETDEV_CB_ADDR_GATEWAY); + } + } +} + +/** + * This function will set network interface device DNS server address. + * @NOTE it can only be called in the network interface device driver. + * + * @param netdev the network interface device to change + * @param dns_server the new DNS server address + * + */ +void netdev_low_level_set_dns_server(struct netdev *netdev, uint8_t dns_num, const ip_addr_t *dns_server) +{ + int index; + + RT_ASSERT(dns_server); + + /* check DNS servers is exist */ + for (index = 0; index < NETDEV_DNS_SERVERS_NUM; index++) + { + if (ip_addr_cmp(&(netdev->dns_servers[index]), dns_server)) + { + return; + } + } + + if (netdev && dns_num < NETDEV_DNS_SERVERS_NUM) + { + ip_addr_copy(netdev->dns_servers[dns_num], *dns_server); + + /* execute DNS servers address change callback function */ + if (netdev->addr_callback) + { + netdev->addr_callback(netdev, NETDEV_CB_ADDR_DNS_SERVER); + } + } +} + +/** + * This function will set network interface device status. + * @NOTE it can only be called in the network interface device driver. + * + * @param netdev the network interface device to change + * @param is_up the new status + */ +void netdev_low_level_set_status(struct netdev *netdev, rt_bool_t is_up) +{ + if (netdev && netdev_is_up(netdev) != is_up) + { + if (is_up) + { + netdev->flags |= NETDEV_FLAG_UP; + } + else + { + netdev->flags &= ~NETDEV_FLAG_UP; + } + + /* execute network interface device status change callback function */ + if (netdev->status_callback) + { + netdev->status_callback(netdev, is_up ? NETDEV_CB_STATUS_UP : NETDEV_CB_STATUS_DOWN); + } + } +} + +/** + * This function will set network interface device active link status. + * @NOTE it can only be called in the network interface device driver. + * + * @param netdev the network interface device to change + * @param is_up the new link status + */ +void netdev_low_level_set_link_status(struct netdev *netdev, rt_bool_t is_up) +{ + if (netdev && netdev_is_link_up(netdev) != is_up) + { + if (is_up) + { + netdev->flags |= NETDEV_FLAG_LINK_UP; + +#ifdef RT_USING_SAL + /* set network interface device flags to internet up */ + if (netdev_is_up(netdev) && !ip_addr_isany(&(netdev->ip_addr))) + { + sal_check_netdev_internet_up(netdev); + } +#endif /* RT_USING_SAL */ + } + else + { + netdev->flags &= ~NETDEV_FLAG_LINK_UP; + + /* set network interface device flags to internet down */ + netdev->flags &= ~NETDEV_FLAG_INTERNET_UP; + } + + /* execute link status change callback function */ + if (netdev->status_callback) + { + netdev->status_callback(netdev, is_up ? NETDEV_CB_STATUS_LINK_UP : NETDEV_CB_STATUS_LINK_DOWN); + } + } +} + +/** + * This function will set network interface device DHCP status. + * @NOTE it can only be called in the network interface device driver. + * + * @param netdev the network interface device to change + * @param is_up the new DHCP status + */ +void netdev_low_level_set_dhcp_status(struct netdev *netdev, rt_bool_t is_enable) +{ + if (netdev && netdev_is_dhcp_enabled(netdev) != is_enable) + { + if (is_enable) + { + netdev->flags |= NETDEV_FLAG_DHCP; + } + else + { + netdev->flags &= ~NETDEV_FLAG_DHCP; + } + + /* execute DHCP status change callback function */ + if (netdev->status_callback) + { + netdev->status_callback(netdev, is_enable ? NETDEV_CB_STATUS_DHCP_ENABLE : NETDEV_CB_STATUS_DHCP_DISABLE); + } + } +} + +#ifdef FINSH_USING_MSH + +#include + +#ifdef NETDEV_USING_IFCONFIG +static void netdev_list_if(void) +{ +#define NETDEV_IFCONFIG_MAC_MAX_LEN 6 +#define NETDEV_IFCONFIG_IEMI_MAX_LEN 8 + + rt_ubase_t index; + rt_base_t level; + rt_slist_t *node = RT_NULL; + struct netdev *netdev = RT_NULL; + struct netdev *cur_netdev_list = netdev_list; + + if (cur_netdev_list == RT_NULL) + { + rt_kprintf("ifconfig: network interface device list error.\n"); + return; + } + + level = rt_hw_interrupt_disable(); + + for (node = &(cur_netdev_list->list); node; node = rt_slist_next(node)) + { + netdev = rt_list_entry(node, struct netdev, list); + + rt_kprintf("network interface device: %s%s\n", + netdev->name, + (netdev == netdev_default)?" (Default)":""); + rt_kprintf("MTU: %d\n", netdev->mtu); + + /* 6 - MAC address, 8 - IEMI */ + if (netdev->hwaddr_len == NETDEV_IFCONFIG_MAC_MAX_LEN) + { + rt_kprintf("MAC: "); + for (index = 0; index < netdev->hwaddr_len; index++) + { + rt_kprintf("%02x ", netdev->hwaddr[index]); + } + } + else if (netdev->hwaddr_len == NETDEV_IFCONFIG_IEMI_MAX_LEN) + { + rt_kprintf("IEMI: "); + for (index = 0; index < netdev->hwaddr_len; index++) + { + /* two numbers are displayed at one time*/ + if (netdev->hwaddr[index] < 10 && index != netdev->hwaddr_len - 1) + rt_kprintf("0"); + + rt_kprintf("%d", netdev->hwaddr[index]); + } + } + + rt_kprintf("\nFLAGS:"); + if (netdev->flags & NETDEV_FLAG_UP) rt_kprintf(" UP"); + else rt_kprintf(" DOWN"); + if (netdev->flags & NETDEV_FLAG_LINK_UP) rt_kprintf(" LINK_UP"); + else rt_kprintf(" LINK_DOWN"); + if (netdev->flags & NETDEV_FLAG_INTERNET_UP) rt_kprintf(" INTERNET_UP"); + else rt_kprintf(" INTERNET_DOWN"); + if (netdev->flags & NETDEV_FLAG_DHCP) rt_kprintf(" DHCP_ENABLE"); + else rt_kprintf(" DHCP_DISABLE"); + if (netdev->flags & NETDEV_FLAG_ETHARP) rt_kprintf(" ETHARP"); + if (netdev->flags & NETDEV_FLAG_BROADCAST) rt_kprintf(" BROADCAST"); + if (netdev->flags & NETDEV_FLAG_IGMP) rt_kprintf(" IGMP"); + rt_kprintf("\n"); + rt_kprintf("ip address: %s\n", inet_ntoa(netdev->ip_addr)); + rt_kprintf("gw address: %s\n", inet_ntoa(netdev->gw)); + rt_kprintf("net mask : %s\n", inet_ntoa(netdev->netmask)); + + for (index = 0; index < NETDEV_DNS_SERVERS_NUM; index++) + { + rt_kprintf("dns server #%d: %s\n", index, inet_ntoa(netdev->dns_servers[index])); + } + + if (rt_slist_next(node)) + { + rt_kprintf("\n"); + } + } + + rt_hw_interrupt_enable(level); +} + +static void netdev_set_if(char* netdev_name, char* ip_addr, char* gw_addr, char* nm_addr) +{ + struct netdev *netdev = RT_NULL; + ip_addr_t addr; + + netdev = netdev_get_by_name(netdev_name); + if (netdev == RT_NULL) + { + rt_kprintf("bad network interface device name(%s).\n", netdev_name); + return; + } + + /* set IP address */ + if ((ip_addr != RT_NULL) && inet_aton(ip_addr, &addr)) + { + netdev_set_ipaddr(netdev, &addr); + } + + /* set gateway address */ + if ((gw_addr != RT_NULL) && inet_aton(gw_addr, &addr)) + { + netdev_set_gw(netdev, &addr); + } + + /* set netmask address */ + if ((nm_addr != RT_NULL) && inet_aton(nm_addr, &addr)) + { + netdev_set_netmask(netdev, &addr); + } +} + +int netdev_ifconfig(int argc, char **argv) +{ + if (argc == 1) + { + netdev_list_if(); + } + else if (argc == 5) + { + rt_kprintf("config : %s\n", argv[1]); + rt_kprintf("IP addr: %s\n", argv[2]); + rt_kprintf("Gateway: %s\n", argv[3]); + rt_kprintf("netmask: %s\n", argv[4]); + netdev_set_if(argv[1], argv[2], argv[3], argv[4]); + } + else + { + rt_kprintf("bad parameter! e.g: ifconfig e0 192.168.1.30 192.168.1.1 255.255.255.0\n"); + } + + return 0; +} +FINSH_FUNCTION_EXPORT_ALIAS(netdev_ifconfig, __cmd_ifconfig, list the information of all network interfaces); +#endif /* NETDEV_USING_IFCONFIG */ + +#ifdef NETDEV_USING_PING +static int netdev_cmd_ping(char* target_name, rt_uint32_t times, rt_size_t size) +{ +#define NETDEV_PING_DATA_SIZE 32 +/** ping receive timeout - in milliseconds */ +#define NETDEV_PING_RECV_TIMEO (2 * RT_TICK_PER_SECOND) +/** ping delay - in milliseconds */ +#define NETDEV_PING_DELAY (1 * RT_TICK_PER_SECOND) +/* check netdev ping options */ +#define NETDEV_PING_IS_COMMONICABLE(netdev) \ + ((netdev) && (netdev)->ops && (netdev)->ops->ping && \ + netdev_is_up(netdev) && netdev_is_link_up(netdev)) \ + + struct netdev *netdev = RT_NULL; + struct netdev_ping_resp ping_resp; + int index, ret = 0; + + if (size == 0) + { + size = NETDEV_PING_DATA_SIZE; + } + + if (NETDEV_PING_IS_COMMONICABLE(netdev_default)) + { + /* using default network interface device for ping */ + netdev = netdev_default; + } + else + { + /* using first internet up status network interface device */ + netdev = netdev_get_first_link_up(); + if (netdev == RT_NULL || NETDEV_PING_IS_COMMONICABLE(netdev) == 0) + { + rt_kprintf("ping: network interface device get error.\n"); + return -RT_ERROR; + } + } + + for (index = 0; index < times; index++) + { + rt_memset(&ping_resp, 0x00, sizeof(struct netdev_ping_resp)); + ret = netdev->ops->ping(netdev, (const char *)target_name, size, NETDEV_PING_RECV_TIMEO, &ping_resp); + if (ret == -RT_ETIMEOUT) + { + rt_kprintf("ping: from %s icmp_seq=%d timeout\n", + (ip_addr_isany(&(ping_resp.ip_addr))) ? target_name : inet_ntoa(ping_resp.ip_addr), index); + } + else if (ret == -RT_ERROR) + { + rt_kprintf("ping: unknown %s %s\n", + (ip_addr_isany(&(ping_resp.ip_addr))) ? "host" : "address", + (ip_addr_isany(&(ping_resp.ip_addr))) ? target_name : inet_ntoa(ping_resp.ip_addr)); + } + else + { + if (ping_resp.ttl == 0) + { + rt_kprintf("%d bytes from %s icmp_seq=%d time=%d ms\n", + ping_resp.data_len, inet_ntoa(ping_resp.ip_addr), index, ping_resp.ticks); + } + else + { + rt_kprintf("%d bytes from %s icmp_seq=%d ttl=%d time=%d ms\n", + ping_resp.data_len, inet_ntoa(ping_resp.ip_addr), index, ping_resp.ttl, ping_resp.ticks); + } + } + + rt_thread_mdelay(NETDEV_PING_DELAY); + } + + return RT_EOK; +} + +int netdev_ping(int argc, char **argv) +{ + if (argc == 1) + { + rt_kprintf("Please input: ping \n"); + } + else + { + netdev_cmd_ping(argv[1], 4, 0); + } + + return 0; +} +FINSH_FUNCTION_EXPORT_ALIAS(netdev_ping, __cmd_ping, ping network host); +#endif /* NETDEV_USING_IFCONFIG */ + +static void netdev_list_dns(void) +{ + rt_base_t level; + int index = 0; + struct netdev *netdev = RT_NULL; + rt_slist_t *node = RT_NULL; + + level = rt_hw_interrupt_disable(); + + for (node = &(netdev_list->list); node; node = rt_slist_next(node)) + { + netdev = rt_list_entry(node, struct netdev, list); + + rt_kprintf("network interface device: %s%s\n", + netdev->name, + (netdev == netdev_default)?" (Default)":""); + + for(index = 0; index < NETDEV_DNS_SERVERS_NUM; index++) + { + rt_kprintf("dns server #%d: %s\n", index, inet_ntoa(netdev->dns_servers[index])); + } + + if (rt_slist_next(node)) + { + rt_kprintf("\n"); + } + } + + rt_hw_interrupt_enable(level); +} + +static void netdev_set_dns(char *netdev_name, char *dns_server) +{ + struct netdev *netdev = RT_NULL; + ip_addr_t dns_addr; + + netdev = netdev_get_by_name(netdev_name); + if (netdev == RT_NULL) + { + rt_kprintf("bad network interface device name(%s).\n", netdev_name); + return; + } + + inet_aton(dns_server, &dns_addr); + netdev_set_dns_server(netdev, 0, &dns_addr); + + rt_kprintf("set network interface device(%s) dns server #0: %s\n", netdev_name, dns_server); +} + +int netdev_dns(int argc, char **argv) +{ + if (argc == 1) + { + netdev_list_dns(); + } + else if (argc == 3) + { + netdev_set_dns(argv[1], argv[2]); + } + else + { + rt_kprintf("bad parameter! e.g: dns name 114.114.114.114\n"); + } + + return 0; +} +FINSH_FUNCTION_EXPORT_ALIAS(netdev_dns, __cmd_dns, list and set the information of dns); + +#ifdef NETDEV_USING_NETSTAT +static void netdev_cmd_netstat(void) +{ + rt_base_t level; + rt_slist_t *node = RT_NULL; + struct netdev *netdev = RT_NULL; + struct netdev *cur_netdev_list = netdev_list; + + if (cur_netdev_list == RT_NULL) + { + rt_kprintf("netstat: network interface device list error.\n"); + return; + } + + level = rt_hw_interrupt_disable(); + + for (node = &(cur_netdev_list->list); node; node = rt_slist_next(node)) + { + netdev = rt_list_entry(node, struct netdev, list); + + if (netdev && netdev->ops && netdev->ops->netstat) + { + break; + } + } + + rt_hw_interrupt_enable(level); + + netdev->ops->netstat(netdev); +} + +int netdev_netstat(int argc, char **argv) +{ + if (argc != 1) + { + rt_kprintf("Please input: netstat \n"); + } + else + { + netdev_cmd_netstat(); + } + + return 0; +} +FINSH_FUNCTION_EXPORT_ALIAS(netdev_netstat, __cmd_netstat, list the information of TCP / IP); +#endif /* NETDEV_USING_NETSTAT */ + +#endif /* FINSH_USING_MSH */ diff --git a/components/net/sal_socket/src/sal_ipaddr.c b/components/net/netdev/src/netdev_ipaddr.c similarity index 86% rename from components/net/sal_socket/src/sal_ipaddr.c rename to components/net/netdev/src/netdev_ipaddr.c index 6477a8ad64..988bd50eb7 100644 --- a/components/net/sal_socket/src/sal_ipaddr.c +++ b/components/net/netdev/src/netdev_ipaddr.c @@ -8,12 +8,12 @@ * 2018-05-18 ChenYong First version */ -#include #include +#include /* Here for now until needed in other places in lwIP */ #ifndef isprint -#define in_range(c, lo, up) ((u8_t)c >= lo && (u8_t)c <= up) +#define in_range(c, lo, up) ((uint8_t)c >= lo && (uint8_t)c <= up) #define isprint(c) in_range(c, 0x20, 0x7f) #define isdigit(c) in_range(c, '0', '9') #define isxdigit(c) (isdigit(c) || in_range(c, 'a', 'f') || in_range(c, 'A', 'F')) @@ -33,13 +33,13 @@ * @param addr pointer to which to save the ip address in network order * @return 1 if cp could be converted to addr, 0 on failure */ -int sal_ip4addr_aton(const char *cp, ip4_addr_t *addr) +int netdev_ip4addr_aton(const char *cp, ip4_addr_t *addr) { - u32_t val; - u8_t base; + uint32_t val; + uint8_t base; char c; - u32_t parts[4]; - u32_t *pp = parts; + uint32_t parts[4]; + uint32_t *pp = parts; c = *cp; for (;;) @@ -72,12 +72,12 @@ int sal_ip4addr_aton(const char *cp, ip4_addr_t *addr) { if (isdigit(c)) { - val = (val * base) + (u32_t) (c - '0'); + val = (val * base) + (uint32_t) (c - '0'); c = *++cp; } else if (base == 16 && isxdigit(c)) { - val = (val << 4) | (u32_t) (c + 10 - (islower(c) ? 'a' : 'A')); + val = (val << 4) | (uint32_t) (c + 10 - (islower(c) ? 'a' : 'A')); c = *++cp; } else @@ -180,28 +180,28 @@ int sal_ip4addr_aton(const char *cp, ip4_addr_t *addr) * @return either pointer to buf which now holds the ASCII * representation of addr or NULL if buf was too small */ -char *sal_ip4addr_ntoa_r(const ip4_addr_t *addr, char *buf, int buflen) +char *netdev_ip4addr_ntoa_r(const ip4_addr_t *addr, char *buf, int buflen) { - u32_t s_addr; + uint32_t s_addr; char inv[3]; char *rp; - u8_t *ap; - u8_t rem; - u8_t n; - u8_t i; + uint8_t *ap; + uint8_t rem; + uint8_t n; + uint8_t i; int len = 0; s_addr = ip4_addr_get_u32(addr); rp = buf; - ap = (u8_t *) &s_addr; + ap = (uint8_t *) &s_addr; for (n = 0; n < 4; n++) { i = 0; do { - rem = *ap % (u8_t) 10; - *ap /= (u8_t) 10; + rem = *ap % (uint8_t) 10; + *ap /= (uint8_t) 10; inv[i++] = (char) ('0' + rem); } while (*ap); while (i--) @@ -232,10 +232,10 @@ char *sal_ip4addr_ntoa_r(const ip4_addr_t *addr, char *buf, int buflen) * @return pointer to a global static (!) buffer that holds the ASCII * representation of addr */ -char *sal_ip4addr_ntoa(const ip4_addr_t *addr) +char *netdev_ip4addr_ntoa(const ip4_addr_t *addr) { static char str[IP4ADDR_STRLEN_MAX]; - return sal_ip4addr_ntoa_r(addr, str, IP4ADDR_STRLEN_MAX); + return netdev_ip4addr_ntoa_r(addr, str, IP4ADDR_STRLEN_MAX); } @@ -246,11 +246,11 @@ char *sal_ip4addr_ntoa(const ip4_addr_t *addr) * @param cp IP address in ascii representation (e.g. "127.0.0.1") * @return ip address in network order */ -in_addr_t sal_ipaddr_addr(const char *cp) +in_addr_t netdev_ipaddr_addr(const char *cp) { ip4_addr_t val; - if (sal_ip4addr_aton(cp, &val)) { + if (netdev_ip4addr_aton(cp, &val)) { return ip4_addr_get_u32(&val); } return (IPADDR_NONE); diff --git a/components/net/sal_socket/impl/af_inet.h b/components/net/sal_socket/impl/af_inet.h index 8b7bf9d2a6..caffbe1400 100644 --- a/components/net/sal_socket/impl/af_inet.h +++ b/components/net/sal_socket/impl/af_inet.h @@ -18,14 +18,18 @@ extern "C" { #endif #ifdef SAL_USING_LWIP -/* lwIP protocol family register */ -int lwip_inet_init(void); -#endif + +/* Set lwIP network interface device protocol family information */ +int sal_lwip_netdev_set_pf_info(struct netdev *netdev); + +#endif /* SAL_USING_LWIP */ #ifdef SAL_USING_AT -/* AT protocol family register */ -int at_inet_init(void); -#endif + +/* Set AT network interface device protocol family information */ +int sal_at_netdev_set_pf_info(struct netdev *netdev); + +#endif /* SAL_USING_AT */ #ifdef __cplusplus } diff --git a/components/net/sal_socket/impl/af_inet_at.c b/components/net/sal_socket/impl/af_inet_at.c index 90d1537967..135e4183c4 100644 --- a/components/net/sal_socket/impl/af_inet_at.c +++ b/components/net/sal_socket/impl/af_inet_at.c @@ -16,6 +16,8 @@ #include #include +#include + #ifdef SAL_USING_POSIX #include #endif @@ -78,24 +80,12 @@ static const struct sal_socket_ops at_socket_ops = NULL, NULL, NULL, - #ifdef SAL_USING_POSIX at_poll, #endif /* SAL_USING_POSIX */ }; -static int at_create(struct sal_socket *socket, int type, int protocol) -{ - RT_ASSERT(socket); - - //TODO Check type & protocol - - socket->ops = &at_socket_ops; - - return 0; -} - -static struct sal_proto_ops at_proto_ops = +static const struct sal_netdb_ops at_netdb_ops = { at_gethostbyname, NULL, @@ -107,16 +97,18 @@ static const struct sal_proto_family at_inet_family = { AF_AT, AF_INET, - at_create, - &at_proto_ops, + &at_socket_ops, + &at_netdb_ops, }; -int at_inet_init(void) -{ - sal_proto_family_register(&at_inet_family); +/* Set AT network interface device protocol family information */ +int sal_at_netdev_set_pf_info(struct netdev *netdev) +{ + RT_ASSERT(netdev); + + netdev->sal_user_data = (void *) &at_inet_family; return 0; } -INIT_COMPONENT_EXPORT(at_inet_init); #endif /* SAL_USING_AT */ diff --git a/components/net/sal_socket/impl/af_inet_lwip.c b/components/net/sal_socket/impl/af_inet_lwip.c index 0826b052ab..cb271a55e0 100644 --- a/components/net/sal_socket/impl/af_inet_lwip.c +++ b/components/net/sal_socket/impl/af_inet_lwip.c @@ -14,6 +14,7 @@ #include #include #include +#include #ifdef SAL_USING_POSIX #include @@ -22,6 +23,8 @@ #include #include +#include + #if LWIP_VERSION < 0x2000000 #define SELWAIT_T int #else @@ -281,18 +284,7 @@ static const struct sal_socket_ops lwip_socket_ops = #endif }; -static int inet_create(struct sal_socket *socket, int type, int protocol) -{ - RT_ASSERT(socket); - - //TODO Check type & protocol - - socket->ops = &lwip_socket_ops; - - return 0; -} - -static struct sal_proto_ops lwip_proto_ops = +static const struct sal_netdb_ops lwip_netdb_ops = { lwip_gethostbyname, lwip_gethostbyname_r, @@ -304,16 +296,17 @@ static const struct sal_proto_family lwip_inet_family = { AF_INET, AF_INET, - inet_create, - &lwip_proto_ops, + &lwip_socket_ops, + &lwip_netdb_ops, }; -int lwip_inet_init(void) +/* Set lwIP network interface device protocol family information */ +int sal_lwip_netdev_set_pf_info(struct netdev *netdev) { - sal_proto_family_register(&lwip_inet_family); - + RT_ASSERT(netdev); + + netdev->sal_user_data = (void *) &lwip_inet_family; return 0; } -INIT_COMPONENT_EXPORT(lwip_inet_init); #endif /* SAL_USING_LWIP */ diff --git a/components/net/sal_socket/impl/proto_mbedtls.c b/components/net/sal_socket/impl/proto_mbedtls.c index 8ed9f67ff1..3472bbeaf5 100644 --- a/components/net/sal_socket/impl/proto_mbedtls.c +++ b/components/net/sal_socket/impl/proto_mbedtls.c @@ -20,6 +20,8 @@ #include #include +#include + #ifdef SAL_USING_TLS #if !defined(MBEDTLS_CONFIG_FILE) @@ -76,6 +78,7 @@ int mbedtls_net_send_cb(void *ctx, const unsigned char *buf, size_t len) { struct sal_socket *sock; int socket, ret; + struct sal_proto_family *pf; RT_ASSERT(ctx); RT_ASSERT(buf); @@ -86,9 +89,11 @@ int mbedtls_net_send_cb(void *ctx, const unsigned char *buf, size_t len) { return -1; } + + pf = (struct sal_proto_family *)sock->netdev->sal_user_data; /* Register scoket sendto option to TLS send data callback */ - ret = sock->ops->sendto((int) sock->user_data, (void *)buf, len, 0, RT_NULL, RT_NULL); + ret = pf->skt_ops->sendto((int) sock->user_data, (void *)buf, len, 0, RT_NULL, RT_NULL); if (ret < 0) { #ifdef RT_USING_DFS @@ -109,6 +114,7 @@ int mbedtls_net_send_cb(void *ctx, const unsigned char *buf, size_t len) int mbedtls_net_recv_cb( void *ctx, unsigned char *buf, size_t len) { struct sal_socket *sock; + struct sal_proto_family *pf; int socket, ret; RT_ASSERT(ctx); @@ -121,8 +127,10 @@ int mbedtls_net_recv_cb( void *ctx, unsigned char *buf, size_t len) return -1; } + pf = (struct sal_proto_family *)sock->netdev->sal_user_data; + /* Register scoket recvfrom option to TLS recv data callback */ - ret = sock->ops->recvfrom((int) sock->user_data, (void *)buf, len, 0, RT_NULL, RT_NULL); + ret = pf->skt_ops->recvfrom((int) sock->user_data, (void *)buf, len, 0, RT_NULL, RT_NULL); if (ret < 0) { #ifdef RT_USING_DFS diff --git a/components/net/sal_socket/include/sal.h b/components/net/sal_socket/include/sal.h index 17d44eef77..6ffaa90356 100644 --- a/components/net/sal_socket/include/sal.h +++ b/components/net/sal_socket/include/sal.h @@ -43,6 +43,24 @@ typedef uint32_t socklen_t; #define SAL_SOCKET_OFFSET 0 #endif +struct sal_socket +{ + uint32_t magic; /* SAL socket magic word */ + + int socket; /* SAL socket descriptor */ + int domain; + int type; + int protocol; + + struct netdev *netdev; /* SAL network interface device */ + + void *user_data; /* user-specific data */ +#ifdef SAL_USING_TLS + void *user_data_tls; /* user-specific TLS data */ +#endif +}; + +/* network interface socket opreations */ struct sal_socket_ops { int (*socket) (int domain, int type, int protocol); @@ -64,7 +82,8 @@ struct sal_socket_ops #endif }; -struct sal_proto_ops +/* sal network database name resolving */ +struct sal_netdb_ops { struct hostent* (*gethostbyname) (const char *name); int (*gethostbyname_r)(const char *name, struct hostent *ret, char *buf, size_t buflen, struct hostent **result, int *h_errnop); @@ -72,42 +91,21 @@ struct sal_proto_ops void (*freeaddrinfo) (struct addrinfo *ai); }; -struct sal_socket -{ - uint32_t magic; /* SAL socket magic word */ - - int socket; /* SAL socket descriptor */ - int domain; - int type; - int protocol; - - const struct sal_socket_ops *ops; /* socket options */ - - void *user_data; /* user-specific data */ -#ifdef SAL_USING_TLS - void *user_data_tls; /* user-specific TLS data */ -#endif -}; - struct sal_proto_family { - int family; /* primary protocol families type */ - int sec_family; /* secondary protocol families type */ - int (*create)(struct sal_socket *sal_socket, int type, int protocol); /* register socket options */ - - struct sal_proto_ops *ops; /* protocol family options */ + int family; /* primary protocol families type */ + int sec_family; /* secondary protocol families type */ + const struct sal_socket_ops *skt_ops; /* socket opreations */ + const struct sal_netdb_ops *netdb_ops; /* network database opreations */ }; /* SAL(Socket Abstraction Layer) initialize */ int sal_init(void); - +/* Get SAL socket object by socket descriptor */ struct sal_socket *sal_get_socket(int sock); -/* SAL protocol family register and unregister operate */ -int sal_proto_family_register(const struct sal_proto_family *pf); -int sal_proto_family_unregister(int family); -rt_bool_t sal_proto_family_is_registered(int family); -struct sal_proto_family *sal_proto_family_find(int family); +/* check SAL socket netweork interface device internet status */ +int sal_check_netdev_internet_up(struct netdev *netdev); #ifdef __cplusplus } diff --git a/components/net/sal_socket/include/sal_ipaddr.h b/components/net/sal_socket/include/sal_ipaddr.h deleted file mode 100644 index c0562436f0..0000000000 --- a/components/net/sal_socket/include/sal_ipaddr.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (c) 2006-2018, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2018-05-18 ChenYong First version - */ -#ifndef SAL_IPADDR_H__ -#define SAL_IPADDR_H__ - -#include "sal_type.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** IPv4 only: set the IP address given as an u32_t */ -#define ip4_addr_set_u32(dest_ipaddr, src_u32) ((dest_ipaddr)->addr = (src_u32)) -/** IPv4 only: get the IP address as an u32_t */ -#define ip4_addr_get_u32(src_ipaddr) ((src_ipaddr)->addr) - -#define IP4ADDR_STRLEN_MAX 16 - -/* These macros should be calculated by the preprocessor and are used - with compile-time constants only (so that there is no little-endian - overhead at runtime). */ -#define PP_HTONS(x) ((((x) & 0x00ffUL) << 8) | (((x) & 0xff00UL) >> 8)) -#define PP_NTOHS(x) PP_HTONS(x) -#define PP_HTONL(x) ((((x) & 0x000000ffUL) << 24) | \ - (((x) & 0x0000ff00UL) << 8) | \ - (((x) & 0x00ff0000UL) >> 8) | \ - (((x) & 0xff000000UL) >> 24)) -#define PP_NTOHL(x) PP_HTONL(x) - -#define htons(x) (u16_t)PP_HTONS(x) -#define ntohs(x) (u16_t)PP_NTOHS(x) -#define htonl(x) (u32_t)PP_HTONL(x) -#define ntohl(x) (u32_t)PP_NTOHL(x) - -/* If your port already typedef's in_addr_t, define IN_ADDR_T_DEFINED - to prevent this code from redefining it. */ -#if !defined(in_addr_t) && !defined(IN_ADDR_T_DEFINED) -typedef u32_t in_addr_t; -#endif - -struct in_addr -{ - in_addr_t s_addr; -}; - -struct in6_addr -{ - union - { - u32_t u32_addr[4]; - u8_t u8_addr[16]; - } un; -#define s6_addr un.u8_addr -}; - -enum sal_ip_addr_type -{ - /** IPv4 */ - IPADDR_TYPE_V4 = 0U, - /** IPv6 */ - IPADDR_TYPE_V6 = 6U, - /** IPv4+IPv6 ("dual-stack") */ - IPADDR_TYPE_ANY = 46U -}; - -typedef struct ip4_addr -{ - u32_t addr; -} ip4_addr_t; - -typedef struct ip6_addr -{ - u32_t addr[4]; -} ip6_addr_t; - -typedef struct _ip_addr -{ - union - { - ip6_addr_t ip6; - ip4_addr_t ip4; - } u_addr; - /** @ref sal_ip_addr_type */ - u8_t type; -} ip_addr_t; - -/** 255.255.255.255 */ -#define IPADDR_NONE ((u32_t)0xffffffffUL) -/** 127.0.0.1 */ -#define IPADDR_LOOPBACK ((u32_t)0x7f000001UL) -/** 0.0.0.0 */ -#define IPADDR_ANY ((u32_t)0x00000000UL) -/** 255.255.255.255 */ -#define IPADDR_BROADCAST ((u32_t)0xffffffffUL) - -/** 255.255.255.255 */ -#define INADDR_NONE IPADDR_NONE -/** 127.0.0.1 */ -#define INADDR_LOOPBACK IPADDR_LOOPBACK -/** 0.0.0.0 */ -#define INADDR_ANY IPADDR_ANY -/** 255.255.255.255 */ -#define INADDR_BROADCAST IPADDR_BROADCAST - -#define IPADDR_BROADCAST_STRING "255.255.255.255" - -in_addr_t sal_ipaddr_addr(const char *cp); -int sal_ip4addr_aton(const char *cp, ip4_addr_t *addr); -char *sal_ip4addr_ntoa(const ip4_addr_t *addr); -char *sal_ip4addr_ntoa_r(const ip4_addr_t *addr, char *buf, int buflen); - -#define inet_addr(cp) sal_ipaddr_addr(cp) -#define inet_aton(cp,addr) sal_ip4addr_aton(cp,(ip4_addr_t*)addr) -#define inet_ntoa(addr) sal_ip4addr_ntoa((const ip4_addr_t*)&(addr)) -#define inet_ntoa_r(addr, buf, buflen) sal_ip4addr_ntoa_r((const ip4_addr_t*)&(addr), buf, buflen) - -#ifdef __cplusplus -} -#endif - -#endif /* SAL_IPADDR_H__ */ diff --git a/components/net/sal_socket/include/sal_netdb.h b/components/net/sal_socket/include/sal_netdb.h index 3f70832083..d5ce9b1d7e 100644 --- a/components/net/sal_socket/include/sal_netdb.h +++ b/components/net/sal_socket/include/sal_netdb.h @@ -10,7 +10,7 @@ #ifndef SAL_NETDB_H__ #define SAL_NETDB_H__ -#include +#include "sal_socket.h" #ifdef __cplusplus extern "C" { diff --git a/components/net/sal_socket/include/sal_socket.h b/components/net/sal_socket/include/sal_socket.h index 0a8597df6e..066258eac9 100644 --- a/components/net/sal_socket/include/sal_socket.h +++ b/components/net/sal_socket/include/sal_socket.h @@ -11,7 +11,7 @@ #ifndef SAL_SOCKET_H__ #define SAL_SOCKET_H__ -#include "sal_ipaddr.h" +#include #ifdef __cplusplus extern "C" { diff --git a/components/net/sal_socket/include/sal_type.h b/components/net/sal_socket/include/sal_type.h deleted file mode 100644 index 6e107ae126..0000000000 --- a/components/net/sal_socket/include/sal_type.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2006-2018, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2018-05-17 ChenYong First version - */ - -#ifndef SAL_TYPE_H__ -#define SAL_TYPE_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef int8_t err_t; -typedef uint8_t u8_t; -typedef int8_t s8_t; -typedef uint16_t u16_t; -typedef int16_t s16_t; -typedef uint32_t u32_t; -typedef int32_t s32_t; -typedef uintptr_t mem_ptr_t; - -#ifdef __cplusplus -} -#endif - -#endif /* SAL_TYPE_H__ */ diff --git a/components/net/sal_socket/src/sal_socket.c b/components/net/sal_socket/src/sal_socket.c index 8d699b63e7..82b6ca5ba8 100644 --- a/components/net/sal_socket/src/sal_socket.c +++ b/components/net/sal_socket/src/sal_socket.c @@ -11,6 +11,7 @@ #include #include +#include #include #include @@ -18,9 +19,17 @@ #include #endif #include +#include -#define DBG_TAG "SAL_SKT" -#define DBG_LVL DBG_INFO +#include + +/* check system workqueue stack size */ +#if RT_SYSTEM_WORKQUEUE_STACKSIZE < 1536 +#error "The system workqueue stack size must more than 1536 bytes" +#endif + +#define DBG_TAG "sal.skt" +#define DBG_LVL DBG_INFO #include #define SOCKET_TABLE_STEP_LEN 4 @@ -37,8 +46,6 @@ struct sal_socket_table static struct sal_proto_tls *proto_tls; #endif -/* The global array of available protocol families */ -static struct sal_proto_family proto_families[SAL_PROTO_FAMILIES_NUM]; /* The global socket table */ static struct sal_socket_table socket_table; static struct rt_mutex sal_core_lock; @@ -49,14 +56,39 @@ static rt_bool_t init_ok = RT_FALSE; #define SAL_SOCKOPS_PROTO_TLS_VALID(sock, name) (proto_tls && (proto_tls->ops->name) && IS_SOCKET_PROTO_TLS(sock)) #define SAL_SOCKOPT_PROTO_TLS_EXEC(sock, name, optval, optlen) \ -do \ -{ \ - if (SAL_SOCKOPS_PROTO_TLS_VALID(sock, name)) \ - { \ +do { \ + if (SAL_SOCKOPS_PROTO_TLS_VALID(sock, name)){ \ return proto_tls->ops->name((sock)->user_data_tls, (optval), (optlen)); \ } \ }while(0) \ +#define SAL_SOCKET_OBJ_GET(sock, socket) \ +do { \ + (sock) = sal_get_socket(socket); \ + if ((sock) == RT_NULL) { \ + return -1; \ + } \ +}while(0) \ + +#define SAL_NETDEV_IS_COMMONICABLE(netdev) \ +do { \ + if (!netdev_is_up(netdev) || !netdev_is_link_up(netdev)){ \ + return -1; \ + } \ +}while(0) \ + +#define SAL_NETDEV_SOCKETOPS_VALID(netdev, pf, ops) \ +do { \ + (pf) = (struct sal_proto_family *) netdev->sal_user_data; \ + if ((pf)->skt_ops->ops == RT_NULL){ \ + return -1; \ + } \ +}while(0) \ + +#define SAL_NETDEV_NETDBOPS_VALID(netdev, pf, ops) \ +((netdev) && netdev_is_up(netdev) && netdev_is_link_up(netdev) && \ + ((pf) = (struct sal_proto_family *) (netdev)->sal_user_data) != RT_NULL && \ + (pf)->netdb_ops->ops) \ /** * SAL (Socket Abstraction Layer) initialize. @@ -94,6 +126,162 @@ int sal_init(void) } INIT_COMPONENT_EXPORT(sal_init); +/* check SAL network interface device internet status */ +static void check_netdev_internet_up_work(struct rt_work *work, void *work_data) +{ +#define SAL_INTERNET_VERSION 0x00 +#define SAL_INTERNET_BUFF_LEN 12 +#define SAL_INTERNET_TIMEOUT (2 * RT_TICK_PER_SECOND) + +#define SAL_INTERNET_HOST "link.rt-thread.org" +#define SAL_INTERNET_PORT 8101 + +#define SAL_INTERNET_MONTH_LEN 4 +#define SAL_INTERNET_DATE_LEN 16 + + int index, sockfd = 0, result = 0; + struct sockaddr_in server_addr; + struct hostent *host; + struct timeval timeout; + struct netdev *netdev = (struct netdev *)work_data; + socklen_t addr_len = sizeof(struct sockaddr_in); + char send_data[SAL_INTERNET_BUFF_LEN], recv_data = 0; + struct rt_delayed_work *delay_work = (struct rt_delayed_work *)work; + + const char month[][SAL_INTERNET_MONTH_LEN] = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"}; + char date[SAL_INTERNET_DATE_LEN]; + int moth_num = 0; + + struct sal_proto_family *pf = (struct sal_proto_family *) netdev->sal_user_data; + const struct sal_socket_ops *skt_ops; + + if (work) + { + rt_timer_detach(&(delay_work->timer)); + rt_free(delay_work); + } + + /* get network interface socket operations */ + if (pf == RT_NULL || pf->skt_ops == RT_NULL) + { + result = -RT_ERROR; + goto __exit; + } + + host = (struct hostent *) pf->netdb_ops->gethostbyname(SAL_INTERNET_HOST); + if (host == RT_NULL) + { + result = -RT_ERROR; + goto __exit; + } + + skt_ops = pf->skt_ops; + if((sockfd = skt_ops->socket(AF_INET, SOCK_DGRAM, 0)) < 0) + { + result = -RT_ERROR; + goto __exit; + } + + server_addr.sin_family = AF_INET; + server_addr.sin_port = htons(SAL_INTERNET_PORT); + server_addr.sin_addr = *((struct in_addr *)host->h_addr); + rt_memset(&(server_addr.sin_zero), 0, sizeof(server_addr.sin_zero)); + + timeout.tv_sec = SAL_INTERNET_TIMEOUT; + timeout.tv_usec = 0; + + /* set receive and send timeout */ + skt_ops->setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, (void *) &timeout, sizeof(timeout)); + skt_ops->setsockopt(sockfd, SOL_SOCKET, SO_SNDTIMEO, (void *) &timeout, sizeof(timeout)); + + /* get build moth value*/ + rt_memset(date, 0x00, SAL_INTERNET_DATE_LEN); + rt_snprintf(date, SAL_INTERNET_DATE_LEN, "%s", __DATE__); + + for (index = 0; index < sizeof(month) / SAL_INTERNET_MONTH_LEN; index++) + { + if (rt_memcmp(date, month[index], SAL_INTERNET_MONTH_LEN - 1) == 0) + { + moth_num = index + 1; + break; + } + } + + /* not find build month */ + if (moth_num == 0 || moth_num > sizeof(month) / SAL_INTERNET_MONTH_LEN) + { + result = -RT_ERROR; + goto __exit; + } + + rt_memset(send_data, 0x00, SAL_INTERNET_BUFF_LEN); + send_data[0] = SAL_INTERNET_VERSION; + for (index = 0; index < netdev->hwaddr_len; index++) + { + send_data[index + 1] = netdev->hwaddr[index] + moth_num; + } + send_data[9] = RT_VERSION; + send_data[10] = RT_SUBVERSION; + send_data[11] = RT_REVISION; + + skt_ops->sendto(sockfd, send_data, SAL_INTERNET_BUFF_LEN, 0, + (struct sockaddr *)&server_addr, sizeof(struct sockaddr)); + + result = skt_ops->recvfrom(sockfd, &recv_data, sizeof(recv_data), 0, (struct sockaddr *)&server_addr, &addr_len); + if (result < 0) + { + goto __exit; + } + + if (recv_data == RT_FALSE) + { + result = -RT_ERROR; + goto __exit; + } + +__exit: + if (result > 0) + { + LOG_D("Set network interface device(%s) internet status up.", netdev->name); + netdev->flags |= NETDEV_FLAG_INTERNET_UP; + } + else + { + LOG_D("Set network interface device(%s) internet status down.", netdev->name); + netdev->flags &= ~NETDEV_FLAG_INTERNET_UP; + } + + if (sockfd >= 0) + { + skt_ops->closesocket(sockfd); + } +} + +/** + * This function will check SAL network interface device internet status. + * + * @param netdev the network interface device to check + */ +int sal_check_netdev_internet_up(struct netdev *netdev) +{ + /* workqueue for network connect */ + struct rt_delayed_work *net_work = RT_NULL; + + RT_ASSERT(netdev); + + net_work = (struct rt_delayed_work *)rt_calloc(1, sizeof(struct rt_delayed_work)); + if (net_work == RT_NULL) + { + LOG_W("No memory for network interface device(%s) delay work.", netdev->name); + return -1; + } + + rt_delayed_work_init(net_work, check_netdev_internet_up_work, (void *)netdev); + rt_work_submit(&(net_work->work), RT_TICK_PER_SECOND); + + return 0; +} + /** * This function will register TLS protocol to the global TLS protocol. * @@ -111,137 +299,6 @@ int sal_proto_tls_register(const struct sal_proto_tls *pt) } #endif -/** - * This function will register protocol family to the global array of protocol families. - * - * @param pf protocol family object - * - * @return 0: protocol family object register success - * -1: the global array of available protocol families is full - */ -int sal_proto_family_register(const struct sal_proto_family *pf) -{ - rt_base_t level; - int idx; - - /* disable interrupt */ - level = rt_hw_interrupt_disable(); - - /* check protocol family is already registered */ - for(idx = 0; idx < SAL_PROTO_FAMILIES_NUM; idx++) - { - if (proto_families[idx].family == pf->family && proto_families[idx].create) - { - /* enable interrupt */ - rt_hw_interrupt_enable(level); - LOG_E("%s protocol family is already registered!", pf->family); - return -1; - } - } - - /* find an empty protocol family entry */ - for(idx = 0; idx < SAL_PROTO_FAMILIES_NUM && proto_families[idx].create; idx++); - - /* can't find an empty protocol family entry */ - if (idx == SAL_PROTO_FAMILIES_NUM) - { - /* enable interrupt */ - rt_hw_interrupt_enable(level); - return -1; - } - - proto_families[idx].family = pf->family; - proto_families[idx].sec_family = pf->sec_family; - proto_families[idx].create = pf->create; - - proto_families[idx].ops = pf->ops; - proto_families[idx].ops->gethostbyname = pf->ops->gethostbyname; - proto_families[idx].ops->gethostbyname_r = pf->ops->gethostbyname_r; - proto_families[idx].ops->freeaddrinfo = pf->ops->freeaddrinfo; - proto_families[idx].ops->getaddrinfo = pf->ops->getaddrinfo; - - /* enable interrupt */ - rt_hw_interrupt_enable(level); - - return 0; -} - -/** - * This function removes a previously registered protocol family object. - * - * @param pf protocol family object - * - * @return >=0 : unregister protocol family index - * -1 : unregister failed - */ -int sal_proto_family_unregister(int family) -{ - int idx = 0; - - RT_ASSERT(family > 0 && family < AF_MAX); - - for(idx = 0; idx < SAL_PROTO_FAMILIES_NUM; idx++) - { - if (proto_families[idx].family == family && proto_families[idx].create) - { - rt_memset(&proto_families[idx], 0x00, sizeof(struct sal_proto_family)); - - return idx; - } - } - - return -1; -} - -/** - * This function will judge whether protocol family is registered - * - * @param family protocol family number - * - * @return 1: protocol family is registered - * 0: protocol family is not registered - */ -rt_bool_t sal_proto_family_is_registered(int family) -{ - int idx = 0; - - RT_ASSERT(family > 0 && family < AF_MAX); - - for (idx = 0; idx < SAL_PROTO_FAMILIES_NUM; idx++) - { - if (proto_families[idx].family == family && proto_families[idx].create) - { - return RT_TRUE; - } - } - - return RT_FALSE; -} - -/** - * This function will get protocol family object by family number. - * - * @param family protocol family number - * - * @return protocol family object - */ -struct sal_proto_family *sal_proto_family_find(int family) -{ - int idx = 0; - - RT_ASSERT(family > 0 && family < AF_MAX); - - for (idx = 0; idx < SAL_PROTO_FAMILIES_NUM; idx++) - { - if (proto_families[idx].family == family && proto_families[idx].create) - { - return &proto_families[idx]; - } - } - - return RT_NULL; -} - /** * This function will get sal socket object by sal socket descriptor. * @@ -294,36 +351,6 @@ static void sal_unlock(void) rt_mutex_release(&sal_core_lock); } -/** - * This function will get protocol family structure by family type - * - * @param family protocol family - * - * @return protocol family structure address - */ -static struct sal_proto_family *get_proto_family(int family) -{ - int idx; - - for (idx = 0; idx < SAL_PROTO_FAMILIES_NUM; idx++) - { - if (proto_families[idx].family == family && proto_families[idx].create) - { - return &proto_families[idx]; - } - } - /* compare the secondary protocol families when primary protocol families find failed */ - for (idx = 0; idx < SAL_PROTO_FAMILIES_NUM; idx++) - { - if (proto_families[idx].sec_family == family && proto_families[idx].create) - { - return &proto_families[idx]; - } - } - - return RT_NULL; -} - /** * This function will initialize sal socket object and set socket options * @@ -335,13 +362,16 @@ static struct sal_proto_family *get_proto_family(int family) * @return 0 : socket initialize success * -1 : input the wrong family * -2 : input the wrong socket type - * -3 : get protocol family object failed - * -4 : set socket options failed + * -3 : get network interface failed */ static int socket_init(int family, int type, int protocol, struct sal_socket **res) { + struct sal_socket *sock; struct sal_proto_family *pf; + struct netdev *netdv_def = netdev_default; + struct netdev *netdev = RT_NULL; + rt_bool_t falgs = RT_FALSE; if (family < 0 || family > AF_MAX) { @@ -358,16 +388,37 @@ static int socket_init(int family, int type, int protocol, struct sal_socket **r sock->type = type; sock->protocol = protocol; - /* get socket protocol family object */ - if ((pf = get_proto_family(family)) == RT_NULL) + /* get socket operations from network interface device */ + if (netdv_def) { + if (netdev_is_up(netdv_def) && netdev_is_link_up(netdv_def)) + { + /* check default network interface device protocol family */ + pf = (struct sal_proto_family *) netdv_def->sal_user_data; + if (pf != RT_NULL && pf->skt_ops && (pf->family == family || pf->sec_family == family)) + { + sock->netdev = netdv_def; + falgs = RT_TRUE; + } + } + } + else + { + LOG_E("not find default network interface device for socket create."); return -3; } - - /* registered the current socket options */ - if (pf->create(sock, type, protocol) != 0) + + if (falgs == RT_FALSE) { - return -4; + /* get network interface device by protocol family */ + netdev = netdev_get_by_family(family); + if (netdev == RT_NULL) + { + LOG_E("not find network interface device by protocol family(%d).", family); + return -3; + } + + sock->netdev = netdev; } return 0; @@ -380,10 +431,11 @@ static int socket_alloc(struct sal_socket_table *st, int f_socket) /* find an empty socket entry */ for (idx = f_socket; idx < (int) st->max_socket; idx++) { - if (st->sockets[idx] == RT_NULL) - break; - if (st->sockets[idx]->ops == RT_NULL) + if (st->sockets[idx] == RT_NULL || + st->sockets[idx]->netdev == RT_NULL) + { break; + } } /* allocate a larger sockte container */ @@ -422,7 +474,6 @@ static int socket_alloc(struct sal_socket_table *st, int f_socket) __result: return idx; - } static int socket_new(void) @@ -446,7 +497,7 @@ static int socket_new(void) sock = st->sockets[idx]; sock->socket = idx + SAL_SOCKET_OFFSET; sock->magic = SAL_SOCKET_MAGIC; - sock->ops = RT_NULL; + sock->netdev = RT_NULL; sock->user_data = RT_NULL; #ifdef SAL_USING_TLS sock->user_data_tls = RT_NULL; @@ -461,19 +512,17 @@ int sal_accept(int socket, struct sockaddr *addr, socklen_t *addrlen) { int new_socket; struct sal_socket *sock; + struct sal_proto_family *pf; - sock = sal_get_socket(socket); - if (!sock) - { - return -1; - } + /* get the socket object by socket descriptor */ + SAL_SOCKET_OBJ_GET(sock, socket); - if (sock->ops->accept == RT_NULL) - { - return -RT_ENOSYS; - } - - new_socket = sock->ops->accept((int) sock->user_data, addr, addrlen); + /* check the network interface is commonicable */ + SAL_NETDEV_IS_COMMONICABLE(sock->netdev); + /* check the network interface socket operations */ + SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, accept); + + new_socket = pf->skt_ops->accept((int) sock->user_data, addr, addrlen); if (new_socket != -1) { int retval; @@ -484,7 +533,7 @@ int sal_accept(int socket, struct sockaddr *addr, socklen_t *addrlen) new_sal_socket = socket_new(); if (new_sal_socket < 0) { - sock->ops->closesocket(new_socket); + pf->skt_ops->closesocket(new_socket); return -1; } new_sock = sal_get_socket(new_sal_socket); @@ -492,13 +541,13 @@ int sal_accept(int socket, struct sockaddr *addr, socklen_t *addrlen) retval = socket_init(sock->domain, sock->type, sock->protocol, &new_sock); if (retval < 0) { - sock->ops->closesocket(new_socket); + pf->skt_ops->closesocket(new_socket); rt_memset(new_sock, 0x00, sizeof(struct sal_socket)); LOG_E("New socket registered failed, return error %d.", retval); return -1; } - /* socket struct user_data used to store the acquired new socket */ + /* socket structure user_data used to store the acquired new socket */ new_sock->user_data = (void *) new_socket; return new_sal_socket; @@ -507,40 +556,88 @@ int sal_accept(int socket, struct sockaddr *addr, socklen_t *addrlen) return -1; } +static void sal_sockaddr_to_ipaddr(const struct sockaddr *name, ip_addr_t *local_ipaddr) +{ + const struct sockaddr_in *svr_addr = (const struct sockaddr_in *) name; + +#if NETDEV_IPV4 && NETDEV_IPV6 + (*local_ipaddr).u_addr.ip4.addr = svr_addr->sin_addr.s_addr; +#elif NETDEV_IPV4 + (*local_ipaddr).addr = svr_addr->sin_addr.s_addr; +#elif NETDEV_IPV6 + LOG_E("not support IPV6"); +#endif /* SAL_IPV4 && SAL_IPV6*/ +} + int sal_bind(int socket, const struct sockaddr *name, socklen_t namelen) { struct sal_socket *sock; + struct sal_proto_family *pf; + struct netdev *new_netdev; + ip_addr_t local_addr; - sock = sal_get_socket(socket); - if (!sock) + RT_ASSERT(name); + + /* get the socket object by socket descriptor */ + SAL_SOCKET_OBJ_GET(sock, socket); + + /* bind network interface by ip address */ + sal_sockaddr_to_ipaddr(name, &local_addr); + + /* check input ipaddr is default netdev ipaddr */ + if (local_addr.addr == INADDR_ANY) { + SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, bind); + return pf->skt_ops->bind((int) sock->user_data, name, namelen); + } + + new_netdev = netdev_get_by_ipaddr(&local_addr); + if (new_netdev == RT_NULL) + { + LOG_E("Not find network interface device ipaddr(%s).", inet_ntoa(local_addr)); return -1; } - if (sock->ops->bind == RT_NULL) + /* change network interface device parameter in sal socket object */ + if (sock->netdev != new_netdev) { - return -RT_ENOSYS; + struct sal_proto_family *old_pf, *new_pf; + int new_socket = 0; + + /* close old netdev socket */ + SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, old_pf, closesocket); + old_pf->skt_ops->closesocket(socket); + + /* open new netdev socket */ + SAL_NETDEV_SOCKETOPS_VALID(new_netdev, new_pf, socket); + new_socket = new_pf->skt_ops->socket(sock->domain, sock->type, sock->protocol); + if (new_socket < 0) + { + return -1; + } + sock->netdev = new_netdev; + sock->user_data = (void *) new_socket; } - return sock->ops->bind((int) sock->user_data, name, namelen); + /* check the network interface socket opreation */ + SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, bind); + return pf->skt_ops->bind((int) sock->user_data, name, namelen); } int sal_shutdown(int socket, int how) { struct sal_socket *sock; + struct sal_proto_family *pf; + int error = 0; - sock = sal_get_socket(socket); - if (!sock) - { - return -1; - } + /* get the socket object by socket descriptor */ + SAL_SOCKET_OBJ_GET(sock, socket); - if (sock->ops->shutdown == RT_NULL) - { - return -RT_ENOSYS; - } + /* shutdown operation not nead to check network interface status */ + /* check the network interface socket opreation */ + SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, shutdown); - if (sock->ops->shutdown((int) sock->user_data, how) == 0) + if (pf->skt_ops->shutdown((int) sock->user_data, how) == 0) { #ifdef SAL_USING_TLS if (SAL_SOCKOPS_PROTO_TLS_VALID(sock, closesocket)) @@ -551,82 +648,72 @@ int sal_shutdown(int socket, int how) } } #endif - rt_free(sock); - socket_table.sockets[socket] = RT_NULL; - return 0; + error = 0; + } + else + { + error = -1; } - return -1; + /* free socket */ + rt_free(sock); + socket_table.sockets[socket] = RT_NULL; + + return error; } int sal_getpeername(int socket, struct sockaddr *name, socklen_t *namelen) { struct sal_socket *sock; + struct sal_proto_family *pf; - sock = sal_get_socket(socket); - if (!sock) - { - return -1; - } + /* get the socket object by socket descriptor */ + SAL_SOCKET_OBJ_GET(sock, socket); - if (sock->ops->getpeername == RT_NULL) - { - return -RT_ENOSYS; - } + /* check the network interface socket opreation */ + SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, getpeername); - return sock->ops->getpeername((int) sock->user_data, name, namelen); + return pf->skt_ops->getpeername((int) sock->user_data, name, namelen); } int sal_getsockname(int socket, struct sockaddr *name, socklen_t *namelen) { struct sal_socket *sock; + struct sal_proto_family *pf; - sock = sal_get_socket(socket); - if (!sock) - { - return -1; - } + /* get socket object by socket descriptor */ + SAL_SOCKET_OBJ_GET(sock, socket); - if (sock->ops->getsockname == RT_NULL) - { - return -RT_ENOSYS; - } + /* check the network interface socket opreation */ + SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, getsockname); - return sock->ops->getsockname((int) sock->user_data, name, namelen); + return pf->skt_ops->getsockname((int) sock->user_data, name, namelen); } int sal_getsockopt(int socket, int level, int optname, void *optval, socklen_t *optlen) { struct sal_socket *sock; + struct sal_proto_family *pf; - sock = sal_get_socket(socket); - if (!sock) - { - return -1; - } + /* get the socket object by socket descriptor */ + SAL_SOCKET_OBJ_GET(sock, socket); - if (sock->ops->getsockopt == RT_NULL) - { - return -RT_ENOSYS; - } + /* check the network interface socket opreation */ + SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, getsockopt); - return sock->ops->getsockopt((int) sock->user_data, level, optname, optval, optlen); + return pf->skt_ops->getsockopt((int) sock->user_data, level, optname, optval, optlen); } int sal_setsockopt(int socket, int level, int optname, const void *optval, socklen_t optlen) { struct sal_socket *sock; + struct sal_proto_family *pf; - sock = sal_get_socket(socket); - if (!sock) - { - return -1; - } + /* get the socket object by socket descriptor */ + SAL_SOCKET_OBJ_GET(sock, socket); - if (sock->ops->setsockopt == RT_NULL) - { - return -RT_ENOSYS; - } + /* check the network interface socket opreation */ + SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, setsockopt); #ifdef SAL_USING_TLS if (level == SOL_TLS) @@ -657,30 +744,28 @@ int sal_setsockopt(int socket, int level, int optname, const void *optval, sockl } else { - return sock->ops->setsockopt((int) sock->user_data, level, optname, optval, optlen); + return pf->skt_ops->setsockopt((int) sock->user_data, level, optname, optval, optlen); } #else - return sock->ops->setsockopt((int) sock->user_data, level, optname, optval, optlen); + return pf->skt_ops->setsockopt((int) sock->user_data, level, optname, optval, optlen); #endif /* SAL_USING_TLS */ } int sal_connect(int socket, const struct sockaddr *name, socklen_t namelen) { struct sal_socket *sock; + struct sal_proto_family *pf; int ret; - sock = sal_get_socket(socket); - if (!sock) - { - return -1; - } + /* get the socket object by socket descriptor */ + SAL_SOCKET_OBJ_GET(sock, socket); - if (sock->ops->connect == RT_NULL) - { - return -RT_ENOSYS; - } + /* check the network interface is commonicable */ + SAL_NETDEV_IS_COMMONICABLE(sock->netdev); + /* check the network interface socket opreation */ + SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, connect); - ret = sock->ops->connect((int) sock->user_data, name, namelen); + ret = pf->skt_ops->connect((int) sock->user_data, name, namelen); #ifdef SAL_USING_TLS if (ret >= 0 && SAL_SOCKOPS_PROTO_TLS_VALID(sock, connect)) { @@ -699,36 +784,30 @@ int sal_connect(int socket, const struct sockaddr *name, socklen_t namelen) int sal_listen(int socket, int backlog) { struct sal_socket *sock; + struct sal_proto_family *pf; - sock = sal_get_socket(socket); - if (!sock) - { - return -1; - } + /* get the socket object by socket descriptor */ + SAL_SOCKET_OBJ_GET(sock, socket); - if (sock->ops->listen == RT_NULL) - { - return -RT_ENOSYS; - } + /* check the network interface socket opreation */ + SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, listen); - return sock->ops->listen((int) sock->user_data, backlog); + return pf->skt_ops->listen((int) sock->user_data, backlog); } int sal_recvfrom(int socket, void *mem, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen) { struct sal_socket *sock; + struct sal_proto_family *pf; - sock = sal_get_socket(socket); - if (!sock) - { - return -1; - } + /* get the socket object by socket descriptor */ + SAL_SOCKET_OBJ_GET(sock, socket); - if (sock->ops->recvfrom == RT_NULL) - { - return -RT_ENOSYS; - } + /* check the network interface is commonicable */ + SAL_NETDEV_IS_COMMONICABLE(sock->netdev); + /* check the network interface socket opreation */ + SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, recvfrom); #ifdef SAL_USING_TLS if (SAL_SOCKOPS_PROTO_TLS_VALID(sock, recv)) @@ -743,10 +822,10 @@ int sal_recvfrom(int socket, void *mem, size_t len, int flags, } else { - return sock->ops->recvfrom((int) sock->user_data, mem, len, flags, from, fromlen); + return pf->skt_ops->recvfrom((int) sock->user_data, mem, len, flags, from, fromlen); } #else - return sock->ops->recvfrom((int) sock->user_data, mem, len, flags, from, fromlen); + return pf->skt_ops->recvfrom((int) sock->user_data, mem, len, flags, from, fromlen); #endif } @@ -754,17 +833,15 @@ int sal_sendto(int socket, const void *dataptr, size_t size, int flags, const struct sockaddr *to, socklen_t tolen) { struct sal_socket *sock; + struct sal_proto_family *pf; - sock = sal_get_socket(socket); - if (!sock) - { - return -1; - } + /* get the socket object by socket descriptor */ + SAL_SOCKET_OBJ_GET(sock, socket); - if (sock->ops->sendto == RT_NULL) - { - return -RT_ENOSYS; - } + /* check the network interface is commonicable */ + SAL_NETDEV_IS_COMMONICABLE(sock->netdev); + /* check the network interface socket opreation */ + SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, sendto); #ifdef SAL_USING_TLS if (SAL_SOCKOPS_PROTO_TLS_VALID(sock, send)) @@ -779,10 +856,10 @@ int sal_sendto(int socket, const void *dataptr, size_t size, int flags, } else { - return sock->ops->sendto((int) sock->user_data, dataptr, size, flags, to, tolen); + return pf->skt_ops->sendto((int) sock->user_data, dataptr, size, flags, to, tolen); } #else - return sock->ops->sendto((int) sock->user_data, dataptr, size, flags, to, tolen); + return pf->skt_ops->sendto((int) sock->user_data, dataptr, size, flags, to, tolen); #endif } @@ -791,6 +868,7 @@ int sal_socket(int domain, int type, int protocol) int retval; int socket, proto_socket; struct sal_socket *sock; + struct sal_proto_family *pf; /* allocate a new socket and registered socket options */ socket = socket_new(); @@ -798,8 +876,15 @@ int sal_socket(int domain, int type, int protocol) { return -1; } - sock = sal_get_socket(socket); + /* get sal socket object by socket descriptor */ + sock = sal_get_socket(socket); + if (sock == RT_NULL) + { + return -1; + } + + /* Initialize sal socket object */ retval = socket_init(domain, type, protocol, &sock); if (retval < 0) { @@ -807,18 +892,16 @@ int sal_socket(int domain, int type, int protocol) return -1; } - if (sock->ops->socket == RT_NULL) - { - return -RT_ENOSYS; - } + /* valid the network interface socket opreation */ + SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, socket); - proto_socket = sock->ops->socket(domain, type, protocol); + proto_socket = pf->skt_ops->socket(domain, type, protocol); if (proto_socket >= 0) { #ifdef SAL_USING_TLS if (SAL_SOCKOPS_PROTO_TLS_VALID(sock, socket)) { - sock->user_data_tls = proto_tls->ops->socket(proto_socket); + sock->user_data_tls = proto_tls->ops->socket(socket); if (sock->user_data_tls == RT_NULL) { return -1; @@ -835,19 +918,17 @@ int sal_socket(int domain, int type, int protocol) int sal_closesocket(int socket) { struct sal_socket *sock; + struct sal_proto_family *pf; + int error = 0; - sock = sal_get_socket(socket); - if (!sock) - { - return -1; - } + /* get the socket object by socket descriptor */ + SAL_SOCKET_OBJ_GET(sock, socket); - if (sock->ops->closesocket == RT_NULL) - { - return -RT_ENOSYS; - } + /* clsoesocket operation not nead to vaild network interface status */ + /* valid the network interface socket opreation */ + SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, socket); - if (sock->ops->closesocket((int) sock->user_data) == 0) + if (pf->skt_ops->closesocket((int) sock->user_data) == 0) { #ifdef SAL_USING_TLS if (SAL_SOCKOPS_PROTO_TLS_VALID(sock, closesocket)) @@ -858,67 +939,69 @@ int sal_closesocket(int socket) } } #endif - rt_free(sock); - socket_table.sockets[socket] = RT_NULL; - return 0; + error = 0; + } + else + { + error = -1; } - return -1; + /* free socket */ + rt_free(sock); + socket_table.sockets[socket] = RT_NULL; + + return error; } int sal_ioctlsocket(int socket, long cmd, void *arg) { struct sal_socket *sock; + struct sal_proto_family *pf; - sock = sal_get_socket(socket); - if (!sock) - { - return -1; - } + /* get the socket object by socket descriptor */ + SAL_SOCKET_OBJ_GET(sock, socket); - if (sock->ops->ioctlsocket == RT_NULL) - { - return -RT_ENOSYS; - } + /* check the network interface socket opreation */ + SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, ioctlsocket); - return sock->ops->ioctlsocket((int) sock->user_data, cmd, arg); + return pf->skt_ops->ioctlsocket((int) sock->user_data, cmd, arg); } #ifdef SAL_USING_POSIX int sal_poll(struct dfs_fd *file, struct rt_pollreq *req) { struct sal_socket *sock; + struct sal_proto_family *pf; int socket = (int) file->data; - sock = sal_get_socket(socket); - if (!sock) - { - return -1; - } + /* get the socket object by socket descriptor */ + SAL_SOCKET_OBJ_GET(sock, socket); - if (sock->ops->poll == RT_NULL) - { - return -RT_ENOSYS; - } + /* check the network interface is commonicable */ + SAL_NETDEV_IS_COMMONICABLE(sock->netdev); + /* check the network interface socket opreation */ + SAL_NETDEV_SOCKETOPS_VALID(sock->netdev, pf, poll); - return sock->ops->poll(file, req); + return pf->skt_ops->poll(file, req); } #endif struct hostent *sal_gethostbyname(const char *name) { - int i; - struct hostent *hst; + struct netdev *netdev = netdev_default; + struct sal_proto_family *pf; - for (i = 0; i < SAL_PROTO_FAMILIES_NUM; ++i) + if (SAL_NETDEV_NETDBOPS_VALID(netdev, pf, gethostbyname)) { - if (proto_families[i].ops && proto_families[i].ops->gethostbyname) + return pf->netdb_ops->gethostbyname(name); + } + else + { + /* get the first network interface device with the link up status */ + netdev = netdev_get_first_link_up(); + if (SAL_NETDEV_NETDBOPS_VALID(netdev, pf, gethostbyname)) { - hst = proto_families[i].ops->gethostbyname(name); - if (hst != RT_NULL) - { - return hst; - } + return pf->netdb_ops->gethostbyname(name); } } @@ -928,17 +1011,20 @@ struct hostent *sal_gethostbyname(const char *name) int sal_gethostbyname_r(const char *name, struct hostent *ret, char *buf, size_t buflen, struct hostent **result, int *h_errnop) { - int i, res; + struct netdev *netdev = netdev_default; + struct sal_proto_family *pf; - for (i = 0; i < SAL_PROTO_FAMILIES_NUM; ++i) + if (SAL_NETDEV_NETDBOPS_VALID(netdev, pf, gethostbyname_r)) { - if (proto_families[i].ops && proto_families[i].ops->gethostbyname_r) + return pf->netdb_ops->gethostbyname_r(name, ret, buf, buflen, result, h_errnop); + } + else + { + /* get the first network interface device with the link up status */ + netdev = netdev_get_first_link_up(); + if (SAL_NETDEV_NETDBOPS_VALID(netdev, pf, gethostbyname_r)) { - res = proto_families[i].ops->gethostbyname_r(name, ret, buf, buflen, result, h_errnop); - if (res == 0) - { - return res; - } + return pf->netdb_ops->gethostbyname_r(name, ret, buf, buflen, result, h_errnop); } } @@ -950,17 +1036,20 @@ int sal_getaddrinfo(const char *nodename, const struct addrinfo *hints, struct addrinfo **res) { - int i, ret; + struct netdev *netdev = netdev_default; + struct sal_proto_family *pf; - for (i = 0; i < SAL_PROTO_FAMILIES_NUM; ++i) + if (SAL_NETDEV_NETDBOPS_VALID(netdev, pf, getaddrinfo)) { - if (proto_families[i].ops && proto_families[i].ops->getaddrinfo) + return pf->netdb_ops->getaddrinfo(nodename, servname, hints, res); + } + else + { + /* get the first network interface device with the link up status */ + netdev = netdev_get_first_link_up(); + if (SAL_NETDEV_NETDBOPS_VALID(netdev, pf, getaddrinfo)) { - ret = proto_families[i].ops->getaddrinfo(nodename, servname, hints, res); - if (ret == 0) - { - return ret; - } + return pf->netdb_ops->getaddrinfo(nodename, servname, hints, res); } } @@ -969,14 +1058,21 @@ int sal_getaddrinfo(const char *nodename, void sal_freeaddrinfo(struct addrinfo *ai) { - int i; + struct netdev *netdev = netdev_default; + struct sal_proto_family *pf; - for (i = 0; i < SAL_PROTO_FAMILIES_NUM; ++i) + if (SAL_NETDEV_NETDBOPS_VALID(netdev, pf, freeaddrinfo)) { - if (proto_families[i].ops && proto_families[i].ops->freeaddrinfo) + pf->netdb_ops->freeaddrinfo(ai); + } + else + { + /* get the first network interface device with the link up status */ + netdev = netdev_get_first_link_up(); + if (SAL_NETDEV_NETDBOPS_VALID(netdev, pf, freeaddrinfo)) { - proto_families[i].ops->freeaddrinfo(ai); - return; + pf->netdb_ops->freeaddrinfo(ai); } } } +