1
0
Эх сурвалжийг харах

Merge branch 'master' of github.com:RT-Thread/rt-thread into dev_li

liqiwen 3 жил өмнө
parent
commit
9f100ce980
60 өөрчлөгдсөн 1165 нэмэгдсэн , 1038 устгасан
  1. 15 59
      bsp/bluetrum/ab32vg1-ab-prougen/.config
  2. 3 47
      bsp/bluetrum/ab32vg1-ab-prougen/rtconfig.h
  3. 0 1
      bsp/gd32303e-eval/rtconfig.h
  4. 15 59
      bsp/gd32vf103v-eval/.config
  5. 0 2
      bsp/gd32vf103v-eval/SConscript
  6. 2 5
      bsp/gd32vf103v-eval/libraries/SConscript
  7. 4 5
      bsp/gd32vf103v-eval/libraries/n22/env_Eclipse/handlers.c
  8. 1 1
      bsp/gd32vf103v-eval/libraries/n22/env_Eclipse/start.S
  9. 3 47
      bsp/gd32vf103v-eval/rtconfig.h
  10. 1 1
      bsp/lm3s8962/applications/startup.c
  11. 15 58
      bsp/lpc1114/.config
  12. 3 44
      bsp/lpc1114/rtconfig.h
  13. 3 0
      bsp/stm32/stm32f469-st-disco/SConstruct
  14. 9 1
      bsp/stm32/stm32f469-st-disco/board/Kconfig
  15. 1 4
      bsp/stm32/stm32f469-st-disco/board/SConscript
  16. 12 0
      bsp/stm32/stm32f469-st-disco/board/ports/SConscript
  17. 9 0
      bsp/stm32/stm32f469-st-disco/board/ports/lvgl/SConscript
  18. 17 0
      bsp/stm32/stm32f469-st-disco/board/ports/lvgl/lv_conf.h
  19. 100 0
      bsp/stm32/stm32f469-st-disco/board/ports/lvgl/lv_demo.c
  20. 214 0
      bsp/stm32/stm32f469-st-disco/board/ports/lvgl/lv_port_disp.c
  21. 23 0
      bsp/stm32/stm32f469-st-disco/board/ports/lvgl/lv_port_disp.h
  22. 46 0
      bsp/stm32/stm32f469-st-disco/board/ports/lvgl/lv_port_indev.c
  23. 28 0
      bsp/stm32/stm32f469-st-disco/board/ports/lvgl/lv_port_indev.h
  24. 12 0
      bsp/stm32/stm32f469-st-disco/board/ports/touch/drv_touch.c
  25. 2 0
      bsp/stm32/stm32f469-st-disco/board/ports/touch/drv_touch_ft.c
  26. 10 0
      components/dfs/filesystems/elmfat/.ignore_format.yml
  27. 19 0
      components/dfs/filesystems/elmfat/00history.txt
  28. 1 1
      components/dfs/filesystems/elmfat/00readme.txt
  29. 29 29
      components/dfs/filesystems/elmfat/diskio.h
  30. 199 255
      components/dfs/filesystems/elmfat/ff.c
  31. 36 40
      components/dfs/filesystems/elmfat/ff.h
  32. 43 29
      components/dfs/filesystems/elmfat/ffconf.h
  33. 0 15
      components/dfs/include/dfs_poll.h
  34. 0 15
      components/dfs/include/dfs_select.h
  35. 4 4
      components/dfs/src/dfs.c
  36. 1 1
      components/drivers/include/ipc/workqueue.h
  37. 1 1
      components/drivers/src/workqueue.c
  38. 13 6
      components/finsh/shell.c
  39. 1 1
      components/finsh/shell.h
  40. 35 32
      components/libc/Kconfig
  41. 0 3
      components/libc/compilers/armlibc/SConscript
  42. 3 8
      components/libc/compilers/armlibc/libc.c
  43. 4 0
      components/libc/compilers/armlibc/libc.h
  44. 5 4
      components/libc/compilers/armlibc/stdio.c
  45. 56 65
      components/libc/compilers/armlibc/syscalls.c
  46. 1 1
      components/libc/compilers/common/SConscript
  47. 2 3
      components/libc/compilers/dlib/SConscript
  48. 3 9
      components/libc/compilers/dlib/libc.c
  49. 2 0
      components/libc/compilers/dlib/libc.h
  50. 6 6
      components/libc/compilers/dlib/stdio.c
  51. 4 7
      components/libc/compilers/dlib/syscall_close.c
  52. 2 5
      components/libc/compilers/dlib/syscall_lseek.c
  53. 5 7
      components/libc/compilers/dlib/syscall_open.c
  54. 5 13
      components/libc/compilers/dlib/syscall_read.c
  55. 5 7
      components/libc/compilers/dlib/syscall_remove.c
  56. 12 18
      components/libc/compilers/dlib/syscall_write.c
  57. 2 13
      components/libc/compilers/gcc/newlib/libc.c
  58. 3 4
      components/libc/compilers/gcc/newlib/libc.h
  59. 47 6
      components/libc/compilers/gcc/newlib/stdio.c
  60. 68 96
      components/libc/compilers/gcc/newlib/syscalls.c

+ 15 - 59
bsp/bluetrum/ab32vg1-ab-prougen/.config

@@ -1,9 +1,13 @@
-# Generated by Kconfiglib (https://github.com/ulfalizer/Kconfiglib)
+#
+# Automatically generated file; DO NOT EDIT.
+# RT-Thread Project Configuration
+#
 
 #
 # RT-Thread Kernel
 #
 CONFIG_RT_NAME_MAX=8
+# CONFIG_RT_USING_BIG_ENDIAN is not set
 # CONFIG_RT_USING_ARCH_DATA_TYPE is not set
 # CONFIG_RT_USING_SMP is not set
 CONFIG_RT_ALIGN_SIZE=8
@@ -26,8 +30,7 @@ CONFIG_RT_TIMER_THREAD_STACK_SIZE=256
 #
 # CONFIG_RT_KSERVICE_USING_STDLIB is not set
 # CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set
-# end of kservice optimization
-
+# CONFIG_RT_USING_ASM_MEMCPY is not set
 CONFIG_RT_DEBUG=y
 # CONFIG_RT_DEBUG_COLOR is not set
 # CONFIG_RT_DEBUG_INIT_CONFIG is not set
@@ -50,7 +53,6 @@ CONFIG_RT_USING_EVENT=y
 CONFIG_RT_USING_MAILBOX=y
 CONFIG_RT_USING_MESSAGEQUEUE=y
 # CONFIG_RT_USING_SIGNALS is not set
-# end of Inter-Thread communication
 
 #
 # Memory Management
@@ -64,7 +66,6 @@ CONFIG_RT_USING_SMALL_MEM=y
 # CONFIG_RT_USING_USERHEAP is not set
 # CONFIG_RT_USING_MEMTRACE is not set
 CONFIG_RT_USING_HEAP=y
-# end of Memory Management
 
 #
 # Kernel Device Object
@@ -76,10 +77,9 @@ CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=128
 CONFIG_RT_CONSOLE_DEVICE_NAME="uart0"
 # CONFIG_RT_PRINTF_LONGLONG is not set
-# end of Kernel Device Object
-
 CONFIG_RT_VER_NUM=0x40004
-# end of RT-Thread Kernel
+# CONFIG_RT_USING_CPU_FFS is not set
+# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set
 
 #
 # RT-Thread Components
@@ -93,7 +93,6 @@ CONFIG_RT_MAIN_THREAD_PRIORITY=10
 # C++ features
 #
 # CONFIG_RT_USING_CPLUSPLUS is not set
-# end of C++ features
 
 #
 # Command shell
@@ -113,13 +112,11 @@ CONFIG_FINSH_USING_DESCRIPTION=y
 # CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set
 # CONFIG_FINSH_USING_AUTH is not set
 CONFIG_FINSH_ARG_MAX=10
-# end of Command shell
 
 #
 # Device virtual file system
 #
 # CONFIG_RT_USING_DFS is not set
-# end of Device virtual file system
 
 #
 # Device Drivers
@@ -159,20 +156,17 @@ CONFIG_RT_USING_PIN=y
 #
 # Using USB
 #
+# CONFIG_RT_USING_USB is not set
 # CONFIG_RT_USING_USB_HOST is not set
 # CONFIG_RT_USING_USB_DEVICE is not set
-# end of Using USB
-# end of Device Drivers
 
 #
 # POSIX layer and C standard library
 #
-CONFIG_RT_USING_LIBC=y
+# CONFIG_RT_USING_LIBC is not set
 # CONFIG_RT_USING_PTHREADS is not set
 CONFIG_RT_LIBC_USING_TIME=y
-# CONFIG_RT_USING_MODULE is not set
 CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
-# end of POSIX layer and C standard library
 
 #
 # Network
@@ -182,32 +176,26 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # Socket abstraction layer
 #
 # CONFIG_RT_USING_SAL is not set
-# end of Socket abstraction layer
 
 #
 # Network interface device
 #
 # CONFIG_RT_USING_NETDEV is not set
-# end of Network interface device
 
 #
 # light weight TCP/IP stack
 #
 # CONFIG_RT_USING_LWIP is not set
-# end of light weight TCP/IP stack
 
 #
 # AT commands
 #
 # CONFIG_RT_USING_AT is not set
-# end of AT commands
-# end of Network
 
 #
 # VBUS(Virtual Software BUS)
 #
 # CONFIG_RT_USING_VBUS is not set
-# end of VBUS(Virtual Software BUS)
 
 #
 # Utilities
@@ -217,14 +205,11 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_RT_USING_UTEST is not set
 # CONFIG_RT_USING_VAR_EXPORT is not set
 # CONFIG_RT_USING_RT_LINK is not set
-# end of Utilities
-# end of RT-Thread Components
 
 #
 # RT-Thread Utestcases
 #
 # CONFIG_RT_USING_UTESTCASES is not set
-# end of RT-Thread Utestcases
 
 #
 # RT-Thread online packages
@@ -259,17 +244,12 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # Marvell WiFi
 #
 # CONFIG_PKG_USING_WLANMARVELL is not set
-# end of Marvell WiFi
 
 #
 # Wiced WiFi
 #
 # CONFIG_PKG_USING_WLAN_WICED is not set
-# end of Wiced WiFi
-
 # CONFIG_PKG_USING_RW007 is not set
-# end of Wi-Fi
-
 # CONFIG_PKG_USING_COAP is not set
 # CONFIG_PKG_USING_NOPOLL is not set
 # CONFIG_PKG_USING_NETUTILS is not set
@@ -291,8 +271,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_JIOT-C-SDK is not set
 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
 # CONFIG_PKG_USING_JOYLINK is not set
-# end of IoT Cloud
-
 # CONFIG_PKG_USING_NIMBLE is not set
 # CONFIG_PKG_USING_OTA_DOWNLOADER is not set
 # CONFIG_PKG_USING_IPMSG is not set
@@ -326,7 +304,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set
 # CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set
 # CONFIG_PKG_USING_HM is not set
-# end of IoT - internet of things
 
 #
 # security packages
@@ -336,7 +313,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_TINYCRYPT is not set
 # CONFIG_PKG_USING_TFM is not set
 # CONFIG_PKG_USING_YD_CRYPTO is not set
-# end of security packages
 
 #
 # language packages
@@ -345,22 +321,19 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_JERRYSCRIPT is not set
 # CONFIG_PKG_USING_MICROPYTHON is not set
 # CONFIG_PKG_USING_PIKASCRIPT is not set
-# end of language packages
 
 #
 # multimedia packages
 #
-# CONFIG_PKG_USING_OPENMV is not set
-# CONFIG_PKG_USING_MUPDF is not set
-# CONFIG_PKG_USING_STEMWIN is not set
 
 #
-# lvgl: powerful and easy-to-use embedded GUI library
+# LVGL: powerful and easy-to-use embedded GUI library
 #
 # CONFIG_PKG_USING_LITTLEVGL2RTT is not set
 # CONFIG_PKG_USING_LVGL is not set
-# end of lvgl: powerful and easy-to-use embedded GUI library
-
+# CONFIG_PKG_USING_OPENMV is not set
+# CONFIG_PKG_USING_MUPDF is not set
+# CONFIG_PKG_USING_STEMWIN is not set
 # CONFIG_PKG_USING_WAVPLAYER is not set
 # CONFIG_PKG_USING_TJPGD is not set
 # CONFIG_PKG_USING_PDFGEN is not set
@@ -377,8 +350,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 #
 # CONFIG_PKG_USING_U8G2_OFFICIAL is not set
 # CONFIG_PKG_USING_U8G2 is not set
-# end of u8g2: a monochrome graphic library
-# end of multimedia packages
 
 #
 # tools packages
@@ -421,7 +392,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_MEM_SANDBOX is not set
 # CONFIG_PKG_USING_SOLAR_TERMS is not set
 # CONFIG_PKG_USING_GAN_ZHI is not set
-# end of tools packages
 
 #
 # system packages
@@ -434,7 +404,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
 # CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
 # CONFIG_PKG_USING_QFPLIB_M3 is not set
-# end of acceleration: Assembly language or algorithmic acceleration packages
 
 #
 # Micrium: Micrium software products porting for RT-Thread
@@ -445,8 +414,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_UC_CLK is not set
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
-# end of Micrium: Micrium software products porting for RT-Thread
-
 # CONFIG_PKG_USING_GUIENGINE is not set
 # CONFIG_PKG_USING_CAIRO is not set
 # CONFIG_PKG_USING_PIXMAN is not set
@@ -480,7 +447,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_WCWIDTH is not set
 # CONFIG_PKG_USING_MCUBOOT is not set
 # CONFIG_PKG_USING_TINYUSB is not set
-# end of system packages
 
 #
 # peripheral libraries and drivers
@@ -560,7 +526,7 @@ CONFIG_PKG_BLUETRUM_SDK_VER="latest"
 # CONFIG_PKG_USING_MISAKA_RGB_BLING is not set
 # CONFIG_PKG_USING_BL_MCU_SDK is not set
 # CONFIG_PKG_USING_SOFT_SERIAL is not set
-# end of peripheral libraries and drivers
+# CONFIG_PKG_USING_MB85RS16 is not set
 
 #
 # AI packages
@@ -574,7 +540,6 @@ CONFIG_PKG_BLUETRUM_SDK_VER="latest"
 # CONFIG_PKG_USING_ULAPACK is not set
 # CONFIG_PKG_USING_QUEST is not set
 # CONFIG_PKG_USING_NAXOS is not set
-# end of AI packages
 
 #
 # miscellaneous packages
@@ -587,7 +552,6 @@ CONFIG_PKG_BLUETRUM_SDK_VER="latest"
 # CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
 # CONFIG_PKG_USING_NETWORK_SAMPLES is not set
 # CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
-# end of samples: kernel and components samples
 
 #
 # entertainment: terminal games and other interesting software packages
@@ -601,8 +565,6 @@ CONFIG_PKG_BLUETRUM_SDK_VER="latest"
 # CONFIG_PKG_USING_SNAKE is not set
 # CONFIG_PKG_USING_TETRIS is not set
 # CONFIG_PKG_USING_DONUT is not set
-# end of entertainment: terminal games and other interesting software packages
-
 # CONFIG_PKG_USING_LIBCSV is not set
 # CONFIG_PKG_USING_OPTPARSE is not set
 # CONFIG_PKG_USING_FASTLZ is not set
@@ -632,8 +594,6 @@ CONFIG_PKG_BLUETRUM_SDK_VER="latest"
 # CONFIG_PKG_USING_MCURSES is not set
 # CONFIG_PKG_USING_COWSAY is not set
 # CONFIG_PKG_USING_TERMBOX is not set
-# end of miscellaneous packages
-# end of RT-Thread online packages
 
 #
 # Hardware Drivers Config
@@ -645,7 +605,6 @@ CONFIG_SOC_AB32VG1=y
 #
 # CONFIG_BSP_USING_AUDIO is not set
 # CONFIG_BSP_USING_SDCARD is not set
-# end of Onboard Peripheral Drivers
 
 #
 # On-chip Peripheral Drivers
@@ -663,11 +622,8 @@ CONFIG_BSP_UART0_FIFO_SIZE=10
 # CONFIG_BSP_USING_ONCHIP_RTC is not set
 # CONFIG_BSP_USING_ADC is not set
 # CONFIG_BSP_USING_IRRX is not set
-# end of On-chip Peripheral Drivers
 
 #
 # Board extended module Drivers
 #
-# end of Hardware Drivers Config
-
 CONFIG_BOARD_BLUETRUM_EVB=y

+ 3 - 47
bsp/bluetrum/ab32vg1-ab-prougen/rtconfig.h

@@ -1,7 +1,8 @@
 #ifndef RT_CONFIG_H__
 #define RT_CONFIG_H__
 
-/* Generated by Kconfiglib (https://github.com/ulfalizer/Kconfiglib) */
+/* Automatically generated file; DO NOT EDIT. */
+/* RT-Thread Project Configuration */
 
 /* RT-Thread Kernel */
 
@@ -21,7 +22,6 @@
 
 /* kservice optimization */
 
-/* end of kservice optimization */
 #define RT_DEBUG
 
 /* Inter-Thread communication */
@@ -31,7 +31,6 @@
 #define RT_USING_EVENT
 #define RT_USING_MAILBOX
 #define RT_USING_MESSAGEQUEUE
-/* end of Inter-Thread communication */
 
 /* Memory Management */
 
@@ -39,7 +38,6 @@
 #define RT_USING_MEMHEAP
 #define RT_USING_SMALL_MEM
 #define RT_USING_HEAP
-/* end of Memory Management */
 
 /* Kernel Device Object */
 
@@ -48,9 +46,7 @@
 #define RT_USING_CONSOLE
 #define RT_CONSOLEBUF_SIZE 128
 #define RT_CONSOLE_DEVICE_NAME "uart0"
-/* end of Kernel Device Object */
 #define RT_VER_NUM 0x40004
-/* end of RT-Thread Kernel */
 
 /* RT-Thread Components */
 
@@ -61,7 +57,6 @@
 
 /* C++ features */
 
-/* end of C++ features */
 
 /* Command shell */
 
@@ -78,11 +73,9 @@
 #define MSH_USING_BUILT_IN_COMMANDS
 #define FINSH_USING_DESCRIPTION
 #define FINSH_ARG_MAX 10
-/* end of Command shell */
 
 /* Device virtual file system */
 
-/* end of Device virtual file system */
 
 /* Device Drivers */
 
@@ -95,47 +88,34 @@
 
 /* Using USB */
 
-/* end of Using USB */
-/* end of Device Drivers */
 
 /* POSIX layer and C standard library */
 
-#define RT_USING_LIBC
 #define RT_LIBC_USING_TIME
 #define RT_LIBC_DEFAULT_TIMEZONE 8
-/* end of POSIX layer and C standard library */
 
 /* Network */
 
 /* Socket abstraction layer */
 
-/* end of Socket abstraction layer */
 
 /* Network interface device */
 
-/* end of Network interface device */
 
 /* light weight TCP/IP stack */
 
-/* end of light weight TCP/IP stack */
 
 /* AT commands */
 
-/* end of AT commands */
-/* end of Network */
 
 /* VBUS(Virtual Software BUS) */
 
-/* end of VBUS(Virtual Software BUS) */
 
 /* Utilities */
 
-/* end of Utilities */
-/* end of RT-Thread Components */
 
 /* RT-Thread Utestcases */
 
-/* end of RT-Thread Utestcases */
 
 /* RT-Thread online packages */
 
@@ -146,74 +126,53 @@
 
 /* Marvell WiFi */
 
-/* end of Marvell WiFi */
 
 /* Wiced WiFi */
 
-/* end of Wiced WiFi */
-/* end of Wi-Fi */
 
 /* IoT Cloud */
 
-/* end of IoT Cloud */
-/* end of IoT - internet of things */
 
 /* security packages */
 
-/* end of security packages */
 
 /* language packages */
 
-/* end of language packages */
 
 /* multimedia packages */
 
+/* LVGL: powerful and easy-to-use embedded GUI library */
 
-/* lvgl: powerful and easy-to-use embedded GUI library */
-
-/* end of lvgl: powerful and easy-to-use embedded GUI library */
 
 /* u8g2: a monochrome graphic library */
 
-/* end of u8g2: a monochrome graphic library */
-/* end of multimedia packages */
 
 /* tools packages */
 
-/* end of tools packages */
 
 /* system packages */
 
 /* acceleration: Assembly language or algorithmic acceleration packages */
 
-/* end of acceleration: Assembly language or algorithmic acceleration packages */
 
 /* Micrium: Micrium software products porting for RT-Thread */
 
-/* end of Micrium: Micrium software products porting for RT-Thread */
-/* end of system packages */
 
 /* peripheral libraries and drivers */
 
 #define PKG_USING_BLUETRUM_SDK
 #define PKG_USING_BLUETRUM_SDK_LATEST_VERSION
-/* end of peripheral libraries and drivers */
 
 /* AI packages */
 
-/* end of AI packages */
 
 /* miscellaneous packages */
 
 /* samples: kernel and components samples */
 
-/* end of samples: kernel and components samples */
 
 /* entertainment: terminal games and other interesting software packages */
 
-/* end of entertainment: terminal games and other interesting software packages */
-/* end of miscellaneous packages */
-/* end of RT-Thread online packages */
 
 /* Hardware Drivers Config */
 
@@ -221,18 +180,15 @@
 
 /* Onboard Peripheral Drivers */
 
-/* end of Onboard Peripheral Drivers */
 
 /* On-chip Peripheral Drivers */
 
 #define BSP_USING_UART
 #define BSP_USING_UART0
 #define BSP_UART0_FIFO_SIZE 10
-/* end of On-chip Peripheral Drivers */
 
 /* Board extended module Drivers */
 
-/* end of Hardware Drivers Config */
 #define BOARD_BLUETRUM_EVB
 
 #endif

+ 0 - 1
bsp/gd32303e-eval/rtconfig.h

@@ -125,7 +125,6 @@
 /* POSIX layer and C standard library */
 
 #define RT_USING_LIBC
-#define RT_USING_POSIX
 #define RT_LIBC_USING_TIME
 #define RT_LIBC_DEFAULT_TIMEZONE 8
 /* end of POSIX layer and C standard library */

+ 15 - 59
bsp/gd32vf103v-eval/.config

@@ -1,9 +1,13 @@
-# Generated by Kconfiglib (https://github.com/ulfalizer/Kconfiglib)
+#
+# Automatically generated file; DO NOT EDIT.
+# RT-Thread Configuration
+#
 
 #
 # RT-Thread Kernel
 #
 CONFIG_RT_NAME_MAX=8
+# CONFIG_RT_USING_BIG_ENDIAN is not set
 # CONFIG_RT_USING_ARCH_DATA_TYPE is not set
 # CONFIG_RT_USING_SMP is not set
 CONFIG_RT_ALIGN_SIZE=4
@@ -26,8 +30,7 @@ CONFIG_RT_TIMER_THREAD_STACK_SIZE=512
 #
 # CONFIG_RT_KSERVICE_USING_STDLIB is not set
 # CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set
-# end of kservice optimization
-
+# CONFIG_RT_USING_ASM_MEMCPY is not set
 CONFIG_RT_DEBUG=y
 # CONFIG_RT_DEBUG_COLOR is not set
 # CONFIG_RT_DEBUG_INIT_CONFIG is not set
@@ -50,7 +53,6 @@ CONFIG_RT_USING_EVENT=y
 CONFIG_RT_USING_MAILBOX=y
 CONFIG_RT_USING_MESSAGEQUEUE=y
 # CONFIG_RT_USING_SIGNALS is not set
-# end of Inter-Thread communication
 
 #
 # Memory Management
@@ -63,7 +65,6 @@ CONFIG_RT_USING_SMALL_MEM=y
 # CONFIG_RT_USING_USERHEAP is not set
 # CONFIG_RT_USING_MEMTRACE is not set
 CONFIG_RT_USING_HEAP=y
-# end of Memory Management
 
 #
 # Kernel Device Object
@@ -75,10 +76,9 @@ CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=128
 CONFIG_RT_CONSOLE_DEVICE_NAME="uart0"
 # CONFIG_RT_PRINTF_LONGLONG is not set
-# end of Kernel Device Object
-
 CONFIG_RT_VER_NUM=0x40004
-# end of RT-Thread Kernel
+# CONFIG_RT_USING_CPU_FFS is not set
+# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set
 
 #
 # RT-Thread Components
@@ -92,7 +92,6 @@ CONFIG_RT_MAIN_THREAD_PRIORITY=10
 # C++ features
 #
 # CONFIG_RT_USING_CPLUSPLUS is not set
-# end of C++ features
 
 #
 # Command shell
@@ -112,13 +111,11 @@ CONFIG_FINSH_USING_DESCRIPTION=y
 # CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set
 # CONFIG_FINSH_USING_AUTH is not set
 CONFIG_FINSH_ARG_MAX=10
-# end of Command shell
 
 #
 # Device virtual file system
 #
 # CONFIG_RT_USING_DFS is not set
-# end of Device virtual file system
 
 #
 # Device Drivers
@@ -158,20 +155,17 @@ CONFIG_RT_USING_PIN=y
 #
 # Using USB
 #
+# CONFIG_RT_USING_USB is not set
 # CONFIG_RT_USING_USB_HOST is not set
 # CONFIG_RT_USING_USB_DEVICE is not set
-# end of Using USB
-# end of Device Drivers
 
 #
 # POSIX layer and C standard library
 #
-CONFIG_RT_USING_LIBC=y
+# CONFIG_RT_USING_LIBC is not set
 # CONFIG_RT_USING_PTHREADS is not set
 CONFIG_RT_LIBC_USING_TIME=y
-# CONFIG_RT_USING_MODULE is not set
 CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
-# end of POSIX layer and C standard library
 
 #
 # Network
@@ -181,32 +175,26 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # Socket abstraction layer
 #
 # CONFIG_RT_USING_SAL is not set
-# end of Socket abstraction layer
 
 #
 # Network interface device
 #
 # CONFIG_RT_USING_NETDEV is not set
-# end of Network interface device
 
 #
 # light weight TCP/IP stack
 #
 # CONFIG_RT_USING_LWIP is not set
-# end of light weight TCP/IP stack
 
 #
 # AT commands
 #
 # CONFIG_RT_USING_AT is not set
-# end of AT commands
-# end of Network
 
 #
 # VBUS(Virtual Software BUS)
 #
 # CONFIG_RT_USING_VBUS is not set
-# end of VBUS(Virtual Software BUS)
 
 #
 # Utilities
@@ -216,14 +204,11 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_RT_USING_UTEST is not set
 # CONFIG_RT_USING_VAR_EXPORT is not set
 # CONFIG_RT_USING_RT_LINK is not set
-# end of Utilities
-# end of RT-Thread Components
 
 #
 # RT-Thread Utestcases
 #
 # CONFIG_RT_USING_UTESTCASES is not set
-# end of RT-Thread Utestcases
 
 #
 # RT-Thread online packages
@@ -258,17 +243,12 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # Marvell WiFi
 #
 # CONFIG_PKG_USING_WLANMARVELL is not set
-# end of Marvell WiFi
 
 #
 # Wiced WiFi
 #
 # CONFIG_PKG_USING_WLAN_WICED is not set
-# end of Wiced WiFi
-
 # CONFIG_PKG_USING_RW007 is not set
-# end of Wi-Fi
-
 # CONFIG_PKG_USING_COAP is not set
 # CONFIG_PKG_USING_NOPOLL is not set
 # CONFIG_PKG_USING_NETUTILS is not set
@@ -290,8 +270,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_JIOT-C-SDK is not set
 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
 # CONFIG_PKG_USING_JOYLINK is not set
-# end of IoT Cloud
-
 # CONFIG_PKG_USING_NIMBLE is not set
 # CONFIG_PKG_USING_OTA_DOWNLOADER is not set
 # CONFIG_PKG_USING_IPMSG is not set
@@ -325,7 +303,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set
 # CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set
 # CONFIG_PKG_USING_HM is not set
-# end of IoT - internet of things
 
 #
 # security packages
@@ -335,7 +312,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_TINYCRYPT is not set
 # CONFIG_PKG_USING_TFM is not set
 # CONFIG_PKG_USING_YD_CRYPTO is not set
-# end of security packages
 
 #
 # language packages
@@ -344,22 +320,19 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_JERRYSCRIPT is not set
 # CONFIG_PKG_USING_MICROPYTHON is not set
 # CONFIG_PKG_USING_PIKASCRIPT is not set
-# end of language packages
 
 #
 # multimedia packages
 #
-# CONFIG_PKG_USING_OPENMV is not set
-# CONFIG_PKG_USING_MUPDF is not set
-# CONFIG_PKG_USING_STEMWIN is not set
 
 #
-# lvgl: powerful and easy-to-use embedded GUI library
+# LVGL: powerful and easy-to-use embedded GUI library
 #
 # CONFIG_PKG_USING_LITTLEVGL2RTT is not set
 # CONFIG_PKG_USING_LVGL is not set
-# end of lvgl: powerful and easy-to-use embedded GUI library
-
+# CONFIG_PKG_USING_OPENMV is not set
+# CONFIG_PKG_USING_MUPDF is not set
+# CONFIG_PKG_USING_STEMWIN is not set
 # CONFIG_PKG_USING_WAVPLAYER is not set
 # CONFIG_PKG_USING_TJPGD is not set
 # CONFIG_PKG_USING_PDFGEN is not set
@@ -376,8 +349,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 #
 # CONFIG_PKG_USING_U8G2_OFFICIAL is not set
 # CONFIG_PKG_USING_U8G2 is not set
-# end of u8g2: a monochrome graphic library
-# end of multimedia packages
 
 #
 # tools packages
@@ -420,7 +391,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_MEM_SANDBOX is not set
 # CONFIG_PKG_USING_SOLAR_TERMS is not set
 # CONFIG_PKG_USING_GAN_ZHI is not set
-# end of tools packages
 
 #
 # system packages
@@ -433,7 +403,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
 # CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
 # CONFIG_PKG_USING_QFPLIB_M3 is not set
-# end of acceleration: Assembly language or algorithmic acceleration packages
 
 #
 # Micrium: Micrium software products porting for RT-Thread
@@ -444,8 +413,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_UC_CLK is not set
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
-# end of Micrium: Micrium software products porting for RT-Thread
-
 # CONFIG_PKG_USING_GUIENGINE is not set
 # CONFIG_PKG_USING_CAIRO is not set
 # CONFIG_PKG_USING_PIXMAN is not set
@@ -479,7 +446,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_WCWIDTH is not set
 # CONFIG_PKG_USING_MCUBOOT is not set
 # CONFIG_PKG_USING_TINYUSB is not set
-# end of system packages
 
 #
 # peripheral libraries and drivers
@@ -555,7 +521,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_MISAKA_RGB_BLING is not set
 # CONFIG_PKG_USING_BL_MCU_SDK is not set
 # CONFIG_PKG_USING_SOFT_SERIAL is not set
-# end of peripheral libraries and drivers
+# CONFIG_PKG_USING_MB85RS16 is not set
 
 #
 # AI packages
@@ -569,7 +535,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_ULAPACK is not set
 # CONFIG_PKG_USING_QUEST is not set
 # CONFIG_PKG_USING_NAXOS is not set
-# end of AI packages
 
 #
 # miscellaneous packages
@@ -582,7 +547,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
 # CONFIG_PKG_USING_NETWORK_SAMPLES is not set
 # CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
-# end of samples: kernel and components samples
 
 #
 # entertainment: terminal games and other interesting software packages
@@ -596,8 +560,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_SNAKE is not set
 # CONFIG_PKG_USING_TETRIS is not set
 # CONFIG_PKG_USING_DONUT is not set
-# end of entertainment: terminal games and other interesting software packages
-
 # CONFIG_PKG_USING_LIBCSV is not set
 # CONFIG_PKG_USING_OPTPARSE is not set
 # CONFIG_PKG_USING_FASTLZ is not set
@@ -627,8 +589,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_MCURSES is not set
 # CONFIG_PKG_USING_COWSAY is not set
 # CONFIG_PKG_USING_TERMBOX is not set
-# end of miscellaneous packages
-# end of RT-Thread online packages
 
 #
 # Hardware Drivers Config
@@ -639,7 +599,6 @@ CONFIG_SOC_GD32VF103V=y
 # Onboard Peripheral Drivers
 #
 CONFIG_BSP_USING_USART=y
-# end of Onboard Peripheral Drivers
 
 #
 # On-chip Peripheral Drivers
@@ -647,11 +606,8 @@ CONFIG_BSP_USING_USART=y
 CONFIG_BSP_USING_GPIO=y
 CONFIG_BSP_USING_UART=y
 CONFIG_BSP_USING_UART0=y
-# end of On-chip Peripheral Drivers
 
 #
 # Board extended module Drivers
 #
-# end of Hardware Drivers Config
-
 CONFIG_SOC_GD32VF103=y

+ 0 - 2
bsp/gd32vf103v-eval/SConscript

@@ -13,6 +13,4 @@ for d in list:
     if os.path.isfile(os.path.join(path, 'SConscript')):
         objs = objs + SConscript(os.path.join(d, 'SConscript'))
 
-group = DefineGroup('', src, depend = [''], CPPPATH = [])
-#objs += group
 Return('objs')

+ 2 - 5
bsp/gd32vf103v-eval/libraries/SConscript

@@ -15,11 +15,8 @@ src += ['GD32VF103_standard_peripheral/system_gd32vf103.c',
 
 CPPPATH = [ cwd + '/GD32VF103_standard_peripheral/Include',
             cwd + '/GD32VF103_standard_peripheral',
-            cwd + '/n22/drivers',
-            cwd + '/n22/stubs']
+            cwd + '/n22/drivers']
 
-CPPDEFINES = []
-
-group = DefineGroup('Libraries', src, depend = [''], CPPPATH = CPPPATH, CPPDEFINES=CPPDEFINES)
+group = DefineGroup('Libraries', src, depend = [''], CPPPATH = CPPPATH)
 
 Return('group')

+ 4 - 5
bsp/gd32vf103v-eval/libraries/n22/env_Eclipse/handlers.c

@@ -1,12 +1,12 @@
 //See LICENSE for license details.
 #include <stdint.h>
 #include <stdio.h>
-#include <unistd.h>
 #include "riscv_encoding.h"
 #include "n22_func.h"
+#include <rtthread.h>
+
 __attribute__((weak))  uintptr_t handle_nmi() {
-    write(1, "nmi\n", 5);
-    _exit(1);
+    rt_kprintf("nmi\n");
     return 0;
 }
 
@@ -14,8 +14,7 @@ __attribute__((weak))  uintptr_t handle_trap(uintptr_t mcause, uintptr_t sp) {
     if (mcause == 0xFFF) {
         handle_nmi();
     }
-    write(1, "trap\n", 5);
-    _exit(mcause);
+    rt_kprintf("trap\n");
     return 0;
 }
 

+ 1 - 1
bsp/gd32vf103v-eval/libraries/n22/env_Eclipse/start.S

@@ -241,7 +241,7 @@ _start0800:
 	li a0, 0
 	li a1, 0
 	call entry
-	tail exit
+	/* tail exit */
 
 1:
 	j 1b

+ 3 - 47
bsp/gd32vf103v-eval/rtconfig.h

@@ -1,7 +1,8 @@
 #ifndef RT_CONFIG_H__
 #define RT_CONFIG_H__
 
-/* Generated by Kconfiglib (https://github.com/ulfalizer/Kconfiglib) */
+/* Automatically generated file; DO NOT EDIT. */
+/* RT-Thread Configuration */
 
 /* RT-Thread Kernel */
 
@@ -21,7 +22,6 @@
 
 /* kservice optimization */
 
-/* end of kservice optimization */
 #define RT_DEBUG
 
 /* Inter-Thread communication */
@@ -31,14 +31,12 @@
 #define RT_USING_EVENT
 #define RT_USING_MAILBOX
 #define RT_USING_MESSAGEQUEUE
-/* end of Inter-Thread communication */
 
 /* Memory Management */
 
 #define RT_USING_MEMPOOL
 #define RT_USING_SMALL_MEM
 #define RT_USING_HEAP
-/* end of Memory Management */
 
 /* Kernel Device Object */
 
@@ -46,9 +44,7 @@
 #define RT_USING_CONSOLE
 #define RT_CONSOLEBUF_SIZE 128
 #define RT_CONSOLE_DEVICE_NAME "uart0"
-/* end of Kernel Device Object */
 #define RT_VER_NUM 0x40004
-/* end of RT-Thread Kernel */
 
 /* RT-Thread Components */
 
@@ -59,7 +55,6 @@
 
 /* C++ features */
 
-/* end of C++ features */
 
 /* Command shell */
 
@@ -76,11 +71,9 @@
 #define MSH_USING_BUILT_IN_COMMANDS
 #define FINSH_USING_DESCRIPTION
 #define FINSH_ARG_MAX 10
-/* end of Command shell */
 
 /* Device virtual file system */
 
-/* end of Device virtual file system */
 
 /* Device Drivers */
 
@@ -93,47 +86,34 @@
 
 /* Using USB */
 
-/* end of Using USB */
-/* end of Device Drivers */
 
 /* POSIX layer and C standard library */
 
-#define RT_USING_LIBC
 #define RT_LIBC_USING_TIME
 #define RT_LIBC_DEFAULT_TIMEZONE 8
-/* end of POSIX layer and C standard library */
 
 /* Network */
 
 /* Socket abstraction layer */
 
-/* end of Socket abstraction layer */
 
 /* Network interface device */
 
-/* end of Network interface device */
 
 /* light weight TCP/IP stack */
 
-/* end of light weight TCP/IP stack */
 
 /* AT commands */
 
-/* end of AT commands */
-/* end of Network */
 
 /* VBUS(Virtual Software BUS) */
 
-/* end of VBUS(Virtual Software BUS) */
 
 /* Utilities */
 
-/* end of Utilities */
-/* end of RT-Thread Components */
 
 /* RT-Thread Utestcases */
 
-/* end of RT-Thread Utestcases */
 
 /* RT-Thread online packages */
 
@@ -144,72 +124,51 @@
 
 /* Marvell WiFi */
 
-/* end of Marvell WiFi */
 
 /* Wiced WiFi */
 
-/* end of Wiced WiFi */
-/* end of Wi-Fi */
 
 /* IoT Cloud */
 
-/* end of IoT Cloud */
-/* end of IoT - internet of things */
 
 /* security packages */
 
-/* end of security packages */
 
 /* language packages */
 
-/* end of language packages */
 
 /* multimedia packages */
 
+/* LVGL: powerful and easy-to-use embedded GUI library */
 
-/* lvgl: powerful and easy-to-use embedded GUI library */
-
-/* end of lvgl: powerful and easy-to-use embedded GUI library */
 
 /* u8g2: a monochrome graphic library */
 
-/* end of u8g2: a monochrome graphic library */
-/* end of multimedia packages */
 
 /* tools packages */
 
-/* end of tools packages */
 
 /* system packages */
 
 /* acceleration: Assembly language or algorithmic acceleration packages */
 
-/* end of acceleration: Assembly language or algorithmic acceleration packages */
 
 /* Micrium: Micrium software products porting for RT-Thread */
 
-/* end of Micrium: Micrium software products porting for RT-Thread */
-/* end of system packages */
 
 /* peripheral libraries and drivers */
 
-/* end of peripheral libraries and drivers */
 
 /* AI packages */
 
-/* end of AI packages */
 
 /* miscellaneous packages */
 
 /* samples: kernel and components samples */
 
-/* end of samples: kernel and components samples */
 
 /* entertainment: terminal games and other interesting software packages */
 
-/* end of entertainment: terminal games and other interesting software packages */
-/* end of miscellaneous packages */
-/* end of RT-Thread online packages */
 
 /* Hardware Drivers Config */
 
@@ -218,18 +177,15 @@
 /* Onboard Peripheral Drivers */
 
 #define BSP_USING_USART
-/* end of Onboard Peripheral Drivers */
 
 /* On-chip Peripheral Drivers */
 
 #define BSP_USING_GPIO
 #define BSP_USING_UART
 #define BSP_USING_UART0
-/* end of On-chip Peripheral Drivers */
 
 /* Board extended module Drivers */
 
-/* end of Hardware Drivers Config */
 #define SOC_GD32VF103
 
 #endif

+ 1 - 1
bsp/lm3s8962/applications/startup.c

@@ -119,7 +119,7 @@ void rtthread_startup(void)
 #ifdef RT_USING_FINSH
     /* init finsh */
     finsh_system_init();
-#if !defined(RT_USING_LIBC) && defined(RT_USING_DEVICE)
+#if !defined(RT_USING_POSIX) && defined(RT_USING_DEVICE)
     finsh_set_device("uart1");
 #endif
 #endif

+ 15 - 58
bsp/lpc1114/.config

@@ -1,9 +1,13 @@
-# Generated by Kconfiglib (https://github.com/ulfalizer/Kconfiglib)
+#
+# Automatically generated file; DO NOT EDIT.
+# RT-Thread Configuration
+#
 
 #
 # RT-Thread Kernel
 #
 CONFIG_RT_NAME_MAX=8
+# CONFIG_RT_USING_BIG_ENDIAN is not set
 # CONFIG_RT_USING_ARCH_DATA_TYPE is not set
 # CONFIG_RT_USING_SMP is not set
 CONFIG_RT_ALIGN_SIZE=4
@@ -23,8 +27,7 @@ CONFIG_IDLE_THREAD_STACK_SIZE=256
 #
 # CONFIG_RT_KSERVICE_USING_STDLIB is not set
 # CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set
-# end of kservice optimization
-
+# CONFIG_RT_USING_ASM_MEMCPY is not set
 # CONFIG_RT_DEBUG is not set
 
 #
@@ -36,7 +39,6 @@ CONFIG_RT_USING_EVENT=y
 CONFIG_RT_USING_MAILBOX=y
 CONFIG_RT_USING_MESSAGEQUEUE=y
 # CONFIG_RT_USING_SIGNALS is not set
-# end of Inter-Thread communication
 
 #
 # Memory Management
@@ -49,7 +51,6 @@ CONFIG_RT_USING_SMALL_MEM=y
 # CONFIG_RT_USING_USERHEAP is not set
 # CONFIG_RT_USING_MEMTRACE is not set
 CONFIG_RT_USING_HEAP=y
-# end of Memory Management
 
 #
 # Kernel Device Object
@@ -61,14 +62,12 @@ CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=128
 CONFIG_RT_CONSOLE_DEVICE_NAME="uart"
 # CONFIG_RT_PRINTF_LONGLONG is not set
-# end of Kernel Device Object
-
 CONFIG_RT_VER_NUM=0x40004
-# end of RT-Thread Kernel
-
 CONFIG_ARCH_ARM=y
+# CONFIG_RT_USING_CPU_FFS is not set
 CONFIG_ARCH_ARM_CORTEX_M=y
 CONFIG_ARCH_ARM_CORTEX_M0=y
+# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set
 
 #
 # RT-Thread Components
@@ -82,7 +81,6 @@ CONFIG_RT_MAIN_THREAD_PRIORITY=10
 # C++ features
 #
 # CONFIG_RT_USING_CPLUSPLUS is not set
-# end of C++ features
 
 #
 # Command shell
@@ -102,13 +100,11 @@ CONFIG_FINSH_USING_DESCRIPTION=y
 # CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set
 # CONFIG_FINSH_USING_AUTH is not set
 CONFIG_FINSH_ARG_MAX=10
-# end of Command shell
 
 #
 # Device virtual file system
 #
 # CONFIG_RT_USING_DFS is not set
-# end of Device virtual file system
 
 #
 # Device Drivers
@@ -148,20 +144,17 @@ CONFIG_RT_USING_PIN=y
 #
 # Using USB
 #
+# CONFIG_RT_USING_USB is not set
 # CONFIG_RT_USING_USB_HOST is not set
 # CONFIG_RT_USING_USB_DEVICE is not set
-# end of Using USB
-# end of Device Drivers
 
 #
 # POSIX layer and C standard library
 #
-CONFIG_RT_USING_LIBC=y
+# CONFIG_RT_USING_LIBC is not set
 # CONFIG_RT_USING_PTHREADS is not set
 CONFIG_RT_LIBC_USING_TIME=y
-# CONFIG_RT_USING_MODULE is not set
 CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
-# end of POSIX layer and C standard library
 
 #
 # Network
@@ -171,32 +164,26 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # Socket abstraction layer
 #
 # CONFIG_RT_USING_SAL is not set
-# end of Socket abstraction layer
 
 #
 # Network interface device
 #
 # CONFIG_RT_USING_NETDEV is not set
-# end of Network interface device
 
 #
 # light weight TCP/IP stack
 #
 # CONFIG_RT_USING_LWIP is not set
-# end of light weight TCP/IP stack
 
 #
 # AT commands
 #
 # CONFIG_RT_USING_AT is not set
-# end of AT commands
-# end of Network
 
 #
 # VBUS(Virtual Software BUS)
 #
 # CONFIG_RT_USING_VBUS is not set
-# end of VBUS(Virtual Software BUS)
 
 #
 # Utilities
@@ -206,16 +193,12 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_RT_USING_UTEST is not set
 # CONFIG_RT_USING_VAR_EXPORT is not set
 # CONFIG_RT_USING_RT_LINK is not set
-# end of Utilities
-
 # CONFIG_RT_USING_LWP is not set
-# end of RT-Thread Components
 
 #
 # RT-Thread Utestcases
 #
 # CONFIG_RT_USING_UTESTCASES is not set
-# end of RT-Thread Utestcases
 
 #
 # RT-Thread online packages
@@ -250,17 +233,12 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # Marvell WiFi
 #
 # CONFIG_PKG_USING_WLANMARVELL is not set
-# end of Marvell WiFi
 
 #
 # Wiced WiFi
 #
 # CONFIG_PKG_USING_WLAN_WICED is not set
-# end of Wiced WiFi
-
 # CONFIG_PKG_USING_RW007 is not set
-# end of Wi-Fi
-
 # CONFIG_PKG_USING_COAP is not set
 # CONFIG_PKG_USING_NOPOLL is not set
 # CONFIG_PKG_USING_NETUTILS is not set
@@ -282,8 +260,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_JIOT-C-SDK is not set
 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
 # CONFIG_PKG_USING_JOYLINK is not set
-# end of IoT Cloud
-
 # CONFIG_PKG_USING_NIMBLE is not set
 # CONFIG_PKG_USING_OTA_DOWNLOADER is not set
 # CONFIG_PKG_USING_IPMSG is not set
@@ -317,7 +293,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set
 # CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set
 # CONFIG_PKG_USING_HM is not set
-# end of IoT - internet of things
 
 #
 # security packages
@@ -327,7 +302,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_TINYCRYPT is not set
 # CONFIG_PKG_USING_TFM is not set
 # CONFIG_PKG_USING_YD_CRYPTO is not set
-# end of security packages
 
 #
 # language packages
@@ -336,22 +310,19 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_JERRYSCRIPT is not set
 # CONFIG_PKG_USING_MICROPYTHON is not set
 # CONFIG_PKG_USING_PIKASCRIPT is not set
-# end of language packages
 
 #
 # multimedia packages
 #
-# CONFIG_PKG_USING_OPENMV is not set
-# CONFIG_PKG_USING_MUPDF is not set
-# CONFIG_PKG_USING_STEMWIN is not set
 
 #
-# lvgl: powerful and easy-to-use embedded GUI library
+# LVGL: powerful and easy-to-use embedded GUI library
 #
 # CONFIG_PKG_USING_LITTLEVGL2RTT is not set
 # CONFIG_PKG_USING_LVGL is not set
-# end of lvgl: powerful and easy-to-use embedded GUI library
-
+# CONFIG_PKG_USING_OPENMV is not set
+# CONFIG_PKG_USING_MUPDF is not set
+# CONFIG_PKG_USING_STEMWIN is not set
 # CONFIG_PKG_USING_WAVPLAYER is not set
 # CONFIG_PKG_USING_TJPGD is not set
 # CONFIG_PKG_USING_PDFGEN is not set
@@ -368,8 +339,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 #
 # CONFIG_PKG_USING_U8G2_OFFICIAL is not set
 # CONFIG_PKG_USING_U8G2 is not set
-# end of u8g2: a monochrome graphic library
-# end of multimedia packages
 
 #
 # tools packages
@@ -412,7 +381,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_MEM_SANDBOX is not set
 # CONFIG_PKG_USING_SOLAR_TERMS is not set
 # CONFIG_PKG_USING_GAN_ZHI is not set
-# end of tools packages
 
 #
 # system packages
@@ -425,7 +393,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
 # CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
 # CONFIG_PKG_USING_QFPLIB_M3 is not set
-# end of acceleration: Assembly language or algorithmic acceleration packages
 
 #
 # Micrium: Micrium software products porting for RT-Thread
@@ -436,8 +403,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_UC_CLK is not set
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
-# end of Micrium: Micrium software products porting for RT-Thread
-
 # CONFIG_PKG_USING_GUIENGINE is not set
 # CONFIG_PKG_USING_CAIRO is not set
 # CONFIG_PKG_USING_PIXMAN is not set
@@ -471,7 +436,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_WCWIDTH is not set
 # CONFIG_PKG_USING_MCUBOOT is not set
 # CONFIG_PKG_USING_TINYUSB is not set
-# end of system packages
 
 #
 # peripheral libraries and drivers
@@ -547,7 +511,7 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_MISAKA_RGB_BLING is not set
 # CONFIG_PKG_USING_BL_MCU_SDK is not set
 # CONFIG_PKG_USING_SOFT_SERIAL is not set
-# end of peripheral libraries and drivers
+# CONFIG_PKG_USING_MB85RS16 is not set
 
 #
 # AI packages
@@ -561,7 +525,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_ULAPACK is not set
 # CONFIG_PKG_USING_QUEST is not set
 # CONFIG_PKG_USING_NAXOS is not set
-# end of AI packages
 
 #
 # miscellaneous packages
@@ -574,7 +537,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
 # CONFIG_PKG_USING_NETWORK_SAMPLES is not set
 # CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
-# end of samples: kernel and components samples
 
 #
 # entertainment: terminal games and other interesting software packages
@@ -588,8 +550,6 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_SNAKE is not set
 # CONFIG_PKG_USING_TETRIS is not set
 # CONFIG_PKG_USING_DONUT is not set
-# end of entertainment: terminal games and other interesting software packages
-
 # CONFIG_PKG_USING_LIBCSV is not set
 # CONFIG_PKG_USING_OPTPARSE is not set
 # CONFIG_PKG_USING_FASTLZ is not set
@@ -619,7 +579,4 @@ CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_PKG_USING_MCURSES is not set
 # CONFIG_PKG_USING_COWSAY is not set
 # CONFIG_PKG_USING_TERMBOX is not set
-# end of miscellaneous packages
-# end of RT-Thread online packages
-
 CONFIG_SOC_LPC1114=y

+ 3 - 44
bsp/lpc1114/rtconfig.h

@@ -1,7 +1,8 @@
 #ifndef RT_CONFIG_H__
 #define RT_CONFIG_H__
 
-/* Generated by Kconfiglib (https://github.com/ulfalizer/Kconfiglib) */
+/* Automatically generated file; DO NOT EDIT. */
+/* RT-Thread Configuration */
 
 /* RT-Thread Kernel */
 
@@ -14,7 +15,6 @@
 
 /* kservice optimization */
 
-/* end of kservice optimization */
 
 /* Inter-Thread communication */
 
@@ -23,14 +23,12 @@
 #define RT_USING_EVENT
 #define RT_USING_MAILBOX
 #define RT_USING_MESSAGEQUEUE
-/* end of Inter-Thread communication */
 
 /* Memory Management */
 
 #define RT_USING_MEMPOOL
 #define RT_USING_SMALL_MEM
 #define RT_USING_HEAP
-/* end of Memory Management */
 
 /* Kernel Device Object */
 
@@ -38,9 +36,7 @@
 #define RT_USING_CONSOLE
 #define RT_CONSOLEBUF_SIZE 128
 #define RT_CONSOLE_DEVICE_NAME "uart"
-/* end of Kernel Device Object */
 #define RT_VER_NUM 0x40004
-/* end of RT-Thread Kernel */
 #define ARCH_ARM
 #define ARCH_ARM_CORTEX_M
 #define ARCH_ARM_CORTEX_M0
@@ -54,7 +50,6 @@
 
 /* C++ features */
 
-/* end of C++ features */
 
 /* Command shell */
 
@@ -71,11 +66,9 @@
 #define MSH_USING_BUILT_IN_COMMANDS
 #define FINSH_USING_DESCRIPTION
 #define FINSH_ARG_MAX 10
-/* end of Command shell */
 
 /* Device virtual file system */
 
-/* end of Device virtual file system */
 
 /* Device Drivers */
 
@@ -88,47 +81,34 @@
 
 /* Using USB */
 
-/* end of Using USB */
-/* end of Device Drivers */
 
 /* POSIX layer and C standard library */
 
-#define RT_USING_LIBC
 #define RT_LIBC_USING_TIME
 #define RT_LIBC_DEFAULT_TIMEZONE 8
-/* end of POSIX layer and C standard library */
 
 /* Network */
 
 /* Socket abstraction layer */
 
-/* end of Socket abstraction layer */
 
 /* Network interface device */
 
-/* end of Network interface device */
 
 /* light weight TCP/IP stack */
 
-/* end of light weight TCP/IP stack */
 
 /* AT commands */
 
-/* end of AT commands */
-/* end of Network */
 
 /* VBUS(Virtual Software BUS) */
 
-/* end of VBUS(Virtual Software BUS) */
 
 /* Utilities */
 
-/* end of Utilities */
-/* end of RT-Thread Components */
 
 /* RT-Thread Utestcases */
 
-/* end of RT-Thread Utestcases */
 
 /* RT-Thread online packages */
 
@@ -139,72 +119,51 @@
 
 /* Marvell WiFi */
 
-/* end of Marvell WiFi */
 
 /* Wiced WiFi */
 
-/* end of Wiced WiFi */
-/* end of Wi-Fi */
 
 /* IoT Cloud */
 
-/* end of IoT Cloud */
-/* end of IoT - internet of things */
 
 /* security packages */
 
-/* end of security packages */
 
 /* language packages */
 
-/* end of language packages */
 
 /* multimedia packages */
 
+/* LVGL: powerful and easy-to-use embedded GUI library */
 
-/* lvgl: powerful and easy-to-use embedded GUI library */
-
-/* end of lvgl: powerful and easy-to-use embedded GUI library */
 
 /* u8g2: a monochrome graphic library */
 
-/* end of u8g2: a monochrome graphic library */
-/* end of multimedia packages */
 
 /* tools packages */
 
-/* end of tools packages */
 
 /* system packages */
 
 /* acceleration: Assembly language or algorithmic acceleration packages */
 
-/* end of acceleration: Assembly language or algorithmic acceleration packages */
 
 /* Micrium: Micrium software products porting for RT-Thread */
 
-/* end of Micrium: Micrium software products porting for RT-Thread */
-/* end of system packages */
 
 /* peripheral libraries and drivers */
 
-/* end of peripheral libraries and drivers */
 
 /* AI packages */
 
-/* end of AI packages */
 
 /* miscellaneous packages */
 
 /* samples: kernel and components samples */
 
-/* end of samples: kernel and components samples */
 
 /* entertainment: terminal games and other interesting software packages */
 
-/* end of entertainment: terminal games and other interesting software packages */
-/* end of miscellaneous packages */
-/* end of RT-Thread online packages */
 #define SOC_LPC1114
 
 #endif

+ 3 - 0
bsp/stm32/stm32f469-st-disco/SConstruct

@@ -56,5 +56,8 @@ objs.extend(SConscript(os.path.join(libraries_path_prefix, stm32_library, 'SCons
 # include drivers
 objs.extend(SConscript(os.path.join(libraries_path_prefix, 'HAL_Drivers', 'SConscript')))
 
+# include ports
+objs.extend(SConscript(os.path.join(os.getcwd(), 'board', 'ports', 'SConscript')))
+
 # make a building
 DoBuilding(TARGET, objs)

+ 9 - 1
bsp/stm32/stm32f469-st-disco/board/Kconfig

@@ -8,6 +8,14 @@ config SOC_STM32F469NI
     default y
 
 menu "Onboard Peripheral Drivers"
+
+    config BSP_USING_LVGL
+        bool "Enable LVGL"
+        select BSP_USING_LCD_OTM8009A
+        select BSP_USING_TOUCH
+        select PKG_USING_LVGL
+        default n
+
     config BSP_USING_SDRAM
         bool "Enable SDRAM"
         select BSP_USING_FMC
@@ -23,7 +31,7 @@ menu "Onboard Peripheral Drivers"
         select BSP_USING_LTDC
         select BSP_USING_LCD_MIPI
         default n
-        
+
     config BSP_USING_QSPI_FLASH
         bool "Enable QSPI FLASH (N25Q128A qspi1)"
         select BSP_USING_QSPI

+ 1 - 4
bsp/stm32/stm32f469-st-disco/board/SConscript

@@ -20,10 +20,7 @@ if GetDepend(['PKG_USING_FAL']):
     
 if GetDepend(['BSP_USING_LCD_OTM8009A']):
     src += ['ports/drv_otm8009a.c']
-    
-if GetDepend(['BSP_USING_TOUCH']):
-    src += Glob('ports/touch/*.c')
-    
+
 if GetDepend(['BSP_USING_SDCARD']):
     src += ['ports/drv_sdcard.c']
 

+ 12 - 0
bsp/stm32/stm32f469-st-disco/board/ports/SConscript

@@ -0,0 +1,12 @@
+import os
+from building import *
+
+objs = []
+cwd  = GetCurrentDir()
+
+list = os.listdir(cwd)
+for item in list:
+    if os.path.isfile(os.path.join(cwd, item, 'SConscript')):
+        objs = objs + SConscript(os.path.join(item, 'SConscript'))
+
+Return('objs')

+ 9 - 0
bsp/stm32/stm32f469-st-disco/board/ports/lvgl/SConscript

@@ -0,0 +1,9 @@
+from building import *
+
+cwd = GetCurrentDir()
+
+src = Glob('*.c')
+CPPPATH = [cwd]
+
+group = DefineGroup('LVGL-port', src, depend = ['BSP_USING_LVGL'], CPPPATH = CPPPATH)
+Return('group')

+ 17 - 0
bsp/stm32/stm32f469-st-disco/board/ports/lvgl/lv_conf.h

@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author        Notes
+ * 2021-10-18     Meco Man      First version
+ */
+
+#ifndef LV_CONF_H
+#define LV_CONF_H
+
+#define LV_USE_PERF_MONITOR 1
+#define LV_COLOR_DEPTH  32
+
+#endif

+ 100 - 0
bsp/stm32/stm32f469-st-disco/board/ports/lvgl/lv_demo.c

@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author        Notes
+ * 2021-10-17     Meco Man      First version
+ */
+#include <rtthread.h>
+#include <lvgl.h>
+#define DBG_TAG    "LVGL"
+#define DBG_LVL    DBG_INFO
+#include <rtdbg.h>
+#include <lcd_port.h>
+#include <lv_port_indev.h>
+
+#ifndef LV_THREAD_STACK_SIZE
+#define LV_THREAD_STACK_SIZE 4096
+#endif
+
+#ifndef LV_THREAD_PRIO
+#define LV_THREAD_PRIO (RT_THREAD_PRIORITY_MAX*2/3)
+#endif
+
+static void event_handler(lv_event_t * e)
+{
+    lv_event_code_t code = lv_event_get_code(e);
+    lv_obj_t * obj = lv_event_get_target(e);
+
+    if(code == LV_EVENT_VALUE_CHANGED) {
+        lv_calendar_date_t date;
+        if(lv_calendar_get_pressed_date(obj, &date)) {
+            LV_LOG_USER("Clicked date: %02d.%02d.%d", date.day, date.month, date.year);
+        }
+    }
+}
+
+void lv_example_calendar_1(void)
+{
+    lv_obj_t  * calendar = lv_calendar_create(lv_scr_act());
+    lv_obj_set_size(calendar, LCD_WIDTH, LCD_HEIGHT);
+    lv_obj_align(calendar, LV_ALIGN_CENTER, 0, 60);
+    lv_obj_add_event_cb(calendar, event_handler, LV_EVENT_ALL, NULL);
+
+    lv_calendar_set_today_date(calendar, 2021, 02, 23);
+    lv_calendar_set_showed_date(calendar, 2021, 02);
+
+    /*Highlight a few days*/
+    static lv_calendar_date_t highlighted_days[3];       /*Only its pointer will be saved so should be static*/
+    highlighted_days[0].year = 2021;
+    highlighted_days[0].month = 02;
+    highlighted_days[0].day = 6;
+
+    highlighted_days[1].year = 2021;
+    highlighted_days[1].month = 02;
+    highlighted_days[1].day = 11;
+
+    highlighted_days[2].year = 2022;
+    highlighted_days[2].month = 02;
+    highlighted_days[2].day = 22;
+
+    lv_calendar_set_highlighted_dates(calendar, highlighted_days, 3);
+
+#if LV_USE_CALENDAR_HEADER_DROPDOWN
+    lv_calendar_header_dropdown_create(lv_scr_act());
+#elif LV_USE_CALENDAR_HEADER_ARROW
+    lv_calendar_header_arrow_create(lv_scr_act(), calendar, 25);
+#endif
+}
+
+static void lvgl_thread(void *parameter)
+{
+    /*assign buttons to coordinates*/
+    const lv_point_t points_array[] =  {{200,35},{0,0},{70,35},{0,0}};
+    lv_indev_set_button_points(button_indev, points_array);
+
+    lv_example_calendar_1();
+
+    while(1)
+    {
+        lv_task_handler();
+        rt_thread_mdelay(10);
+    }
+}
+
+static int lvgl_demo_init(void)
+{
+    rt_thread_t tid;
+
+    tid = rt_thread_create("LVGL", lvgl_thread, RT_NULL, LV_THREAD_STACK_SIZE, LV_THREAD_PRIO, 0);
+    if(tid == RT_NULL)
+    {
+        LOG_E("Fail to create 'LVGL' thread");
+    }
+    rt_thread_startup(tid);
+
+    return 0;
+}
+INIT_APP_EXPORT(lvgl_demo_init);

+ 214 - 0
bsp/stm32/stm32f469-st-disco/board/ports/lvgl/lv_port_disp.c

@@ -0,0 +1,214 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2021-10-18     Meco Man     The first version
+ */
+#include <lvgl.h>
+#include <lcd_port.h>
+
+/*A static or global variable to store the buffers*/
+static lv_disp_draw_buf_t disp_buf;
+
+rt_device_t lcd_device = 0;
+static struct rt_device_graphic_info info;
+
+static lv_disp_drv_t disp_drv;  /*Descriptor of a display driver*/
+
+typedef struct
+{
+    uint8_t blue;
+    uint8_t green;
+    uint8_t red;
+} lv_color24_t;
+
+static void color_to16_maybe(lv_color16_t *dst, lv_color_t *src)
+{
+#if (LV_COLOR_DEPTH == 16)
+    dst->full = src->full;
+#else
+    dst->ch.blue = src->ch.blue;
+    dst->ch.green = src->ch.green;
+    dst->ch.red = src->ch.red;
+#endif
+}
+
+static void color_to24(lv_color24_t *dst, lv_color_t *src)
+{
+    dst->blue = src->ch.blue;
+    dst->green = src->ch.green;
+    dst->red = src->ch.red;
+}
+
+/*Flush the content of the internal buffer the specific area on the display
+ *You can use DMA or any hardware acceleration to do this operation in the background but
+ *'lv_disp_flush_ready()' has to be called when finished.*/
+static void lcd_fb_flush(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p)
+{
+    int x1, x2, y1, y2;
+
+    x1 = area->x1;
+    x2 = area->x2;
+    y1 = area->y1;
+    y2 = area->y2;
+
+    /*Return if the area is out the screen*/
+    if (x2 < 0)
+        return;
+    if (y2 < 0)
+        return;
+    if (x1 > info.width - 1)
+        return;
+    if (y1 > info.height - 1)
+        return;
+
+    /*Truncate the area to the screen*/
+    int32_t act_x1 = x1 < 0 ? 0 : x1;
+    int32_t act_y1 = y1 < 0 ? 0 : y1;
+    int32_t act_x2 = x2 > info.width - 1 ? info.width - 1 : x2;
+    int32_t act_y2 = y2 > info.height - 1 ? info.height - 1 : y2;
+
+    uint32_t x;
+    uint32_t y;
+    long int location = 0;
+
+    /* 8 bit per pixel */
+    if (info.bits_per_pixel == 8)
+    {
+        uint8_t *fbp8 = (uint8_t *)info.framebuffer;
+        //TODO color convert maybe
+        for (y = act_y1; y <= act_y2; y++)
+        {
+            for (x = act_x1; x <= act_x2; x++)
+            {
+                location = (x) + (y)*info.width;
+                fbp8[location] = color_p->full;
+                color_p++;
+            }
+
+            color_p += x2 - act_x2;
+        }
+    }
+
+    /* 16 bit per pixel */
+    else if (info.bits_per_pixel == 16)
+    {
+        lv_color16_t *fbp16 = (lv_color16_t *)info.framebuffer;
+
+        for (y = act_y1; y <= act_y2; y++)
+        {
+            for (x = act_x1; x <= act_x2; x++)
+            {
+                location = (x) + (y)*info.width;
+                color_to16_maybe(&fbp16[location], color_p);
+                color_p++;
+            }
+
+            color_p += x2 - act_x2;
+        }
+    }
+
+    /* 24 bit per pixel */
+    else if (info.bits_per_pixel == 24)
+    {
+        lv_color24_t *fbp24 = (lv_color24_t *)info.framebuffer;
+
+        for (y = act_y1; y <= act_y2; y++)
+        {
+            for (x = act_x1; x <= act_x2; x++)
+            {
+                location = (x) + (y)*info.width;
+                color_to24(&fbp24[location], color_p);
+                color_p++;
+            }
+
+            color_p += x2 - act_x2;
+        }
+    }
+
+    /* 32 bit per pixel */
+    else if (info.bits_per_pixel == 32)
+    {
+        uint32_t *fbp32 = (uint32_t *)info.framebuffer;
+        //TODO
+        for (y = act_y1; y <= act_y2; y++)
+        {
+            for (x = act_x1; x <= act_x2; x++)
+            {
+                location = (x) + (y)*info.width;
+                fbp32[location] = color_p->full;
+                color_p++;
+            }
+
+            color_p += x2 - act_x2;
+        }
+    }
+
+    struct rt_device_rect_info rect_info;
+
+    rect_info.x = x1;
+    rect_info.y = y1;
+    rect_info.width = x2 - x1 + 1;
+    rect_info.height = y2 - y1 + 1;
+    rt_device_control(lcd_device, RTGRAPHIC_CTRL_RECT_UPDATE, &rect_info);
+
+    lv_disp_flush_ready(disp_drv);
+}
+
+void lv_port_disp_init(void)
+{
+    rt_err_t result;
+    lv_color_t *fbuf;
+
+    lcd_device = rt_device_find("lcd");
+    if (lcd_device == 0)
+    {
+        rt_kprintf("error!\n");
+        return;
+    }
+    result = rt_device_open(lcd_device, 0);
+    if (result != RT_EOK)
+    {
+        rt_kprintf("error!\n");
+        return;
+    }
+    /* get framebuffer address */
+    result = rt_device_control(lcd_device, RTGRAPHIC_CTRL_GET_INFO, &info);
+    if (result != RT_EOK)
+    {
+        rt_kprintf("error!\n");
+        /* get device information failed */
+        return;
+    }
+
+    RT_ASSERT(info.bits_per_pixel == 8 || info.bits_per_pixel == 16 ||
+              info.bits_per_pixel == 24 || info.bits_per_pixel == 32);
+
+    fbuf = rt_malloc(info.width * info.height / 10);
+    if (!fbuf)
+    {
+        rt_kprintf("Error: alloc disp buf fail\n");
+        return;
+    }
+
+    /*Initialize `disp_buf` with the buffer(s). With only one buffer use NULL instead buf_2 */
+    lv_disp_draw_buf_init(&disp_buf, fbuf, RT_NULL, info.width * 10);
+
+    lv_disp_drv_init(&disp_drv); /*Basic initialization*/
+
+    /*Set the resolution of the display*/
+    disp_drv.hor_res = info.width;
+    disp_drv.ver_res = info.height;
+
+    /*Set a display buffer*/
+    disp_drv.draw_buf = &disp_buf;
+
+    /*Used to copy the buffer's content to the display*/
+    disp_drv.flush_cb = lcd_fb_flush;
+
+    /*Finally register the driver*/
+    lv_disp_drv_register(&disp_drv);
+}

+ 23 - 0
bsp/stm32/stm32f469-st-disco/board/ports/lvgl/lv_port_disp.h

@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2021-10-18     Meco Man     The first version
+ */
+#ifndef LV_PORT_DISP_H
+#define LV_PORT_DISP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void lv_port_disp_init(void);
+
+#ifdef __cplusplus
+} /*extern "C"*/
+#endif
+
+#endif

+ 46 - 0
bsp/stm32/stm32f469-st-disco/board/ports/lvgl/lv_port_indev.c

@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2021-10-18     Meco Man     The first version
+ */
+#include <lvgl.h>
+#include <stdbool.h>
+#include <rtdevice.h>
+
+#include <lcd_port.h>
+
+static lv_indev_state_t last_state = LV_INDEV_STATE_REL;
+static rt_int16_t last_x = 0;
+static rt_int16_t last_y = 0;
+
+static void input_read(lv_indev_drv_t *indev_drv, lv_indev_data_t *data)
+{
+    data->point.x = last_x;
+    data->point.y = last_y;
+    data->state = last_state;
+}
+
+void lv_port_indev_input(rt_int16_t x, rt_int16_t y, lv_indev_state_t state)
+{
+    last_state = state;
+    last_x = x;
+    last_y = LCD_HEIGHT - y;
+}
+
+lv_indev_t * button_indev;
+
+void lv_port_indev_init(void)
+{
+    static lv_indev_drv_t indev_drv;
+
+    lv_indev_drv_init(&indev_drv);      /*Basic initialization*/
+    indev_drv.type = LV_INDEV_TYPE_POINTER;
+    indev_drv.read_cb = input_read;
+
+    /*Register the driver in LVGL and save the created input device object*/
+    button_indev = lv_indev_drv_register(&indev_drv);
+}

+ 28 - 0
bsp/stm32/stm32f469-st-disco/board/ports/lvgl/lv_port_indev.h

@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2021-10-18     Meco Man     The first version
+ */
+#ifndef LV_PORT_INDEV_H
+#define LV_PORT_INDEV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <lv_hal_indev.h>
+
+extern lv_indev_t * button_indev;
+
+void lv_port_indev_init(void);
+void lv_port_indev_input(rt_int16_t x, rt_int16_t y, lv_indev_state_t state);
+
+#ifdef __cplusplus
+} /*extern "C"*/
+#endif
+
+#endif

+ 12 - 0
bsp/stm32/stm32f469-st-disco/board/ports/touch/drv_touch.c

@@ -16,6 +16,10 @@
 #include <rtgui/rtgui_server.h>
 #elif defined(PKG_USING_LITTLEVGL2RTT)
 #include <littlevgl2rtt.h>
+#elif defined(PKG_USING_LVGL)
+#include <lvgl.h>
+#include <lv_port_indev.h>
+static rt_bool_t touch_down = RT_FALSE;
 #endif
 #define BSP_TOUCH_SAMPLE_HZ    (50)
 
@@ -50,6 +54,9 @@ static void post_down_event(rt_uint16_t x, rt_uint16_t y, rt_tick_t ts)
     rtgui_server_post_event(&emouse.parent, sizeof(emouse));
 #elif defined(PKG_USING_LITTLEVGL2RTT)
     littlevgl2rtt_send_input_event(x, y, LITTLEVGL2RTT_INPUT_DOWN);
+#elif defined(PKG_USING_LVGL)
+    touch_down = RT_TRUE;
+    lv_port_indev_input(x, y, (touch_down == RT_TRUE) ? LV_INDEV_STATE_PR : LV_INDEV_STATE_REL);
 #endif
 }
 
@@ -70,6 +77,8 @@ static void post_motion_event(rt_uint16_t x, rt_uint16_t y, rt_tick_t ts)
     rtgui_server_post_event(&emouse.parent, sizeof(emouse));
 #elif defined(PKG_USING_LITTLEVGL2RTT)
     littlevgl2rtt_send_input_event(x, y, LITTLEVGL2RTT_INPUT_MOVE);
+#elif defined(PKG_USING_LVGL)
+    lv_port_indev_input(x, y, (touch_down == RT_TRUE) ? LV_INDEV_STATE_PR : LV_INDEV_STATE_REL);
 #endif
 }
 
@@ -90,6 +99,9 @@ static void post_up_event(rt_uint16_t x, rt_uint16_t y, rt_tick_t ts)
     rtgui_server_post_event(&emouse.parent, sizeof(emouse));
 #elif defined(PKG_USING_LITTLEVGL2RTT)
     littlevgl2rtt_send_input_event(x, y, LITTLEVGL2RTT_INPUT_MOVE);
+#elif defined(PKG_USING_LVGL)
+    touch_down = RT_FALSE;
+    lv_port_indev_input(x, y, (touch_down == RT_TRUE) ? LV_INDEV_STATE_PR : LV_INDEV_STATE_REL);
 #endif
 }
 

+ 2 - 0
bsp/stm32/stm32f469-st-disco/board/ports/touch/drv_touch_ft.c

@@ -13,6 +13,8 @@
 #include <rthw.h>
 #include <rtdevice.h>
 #include "drv_touch.h"
+
+#include <stdint.h>
 #include <string.h>
 
 #ifdef BSP_USING_TOUCH

+ 10 - 0
components/dfs/filesystems/elmfat/.ignore_format.yml

@@ -0,0 +1,10 @@
+# files format check exclude path, please follow the instructions below to modify;
+# If you need to exclude an entire folder, add the folder path in dir_path;
+# If you need to exclude a file, add the path to the file in file_path.
+
+file_path:
+- diskio.h
+- ff.c
+- ff.h
+- ffconf.h
+- ffunicode.c

+ 19 - 0
components/dfs/filesystems/elmfat/00history.txt

@@ -338,3 +338,22 @@ R0.14 (October 14, 2019)
   Fixed f_readdir() function returns file names with wrong case conversion. (appeared at R0.12)
   Fixed f_mkfs() function can fail to create exFAT volume in the second partition. (appeared at R0.12)
 
+
+R0.14a (December 5, 2020)
+  Limited number of recursive calls in f_findnext().
+  Fixed old floppy disks formatted with MS-DOS 2.x and 3.x cannot be mounted.
+  Fixed some compiler warnings.
+
+
+
+R0.14b (April 17, 2021)
+  Made FatFs uses standard library <string.h> for copy, compare and search instead of built-in string functions.
+  Added support for long long integer and floating point to f_printf(). (FF_STRF_LLI and FF_STRF_FP)
+  Made path name parser ignore the terminating separator to allow "dir/".
+  Improved the compatibility in Unix style path name feature.
+  Fixed the file gets dead-locked when f_open() failed with some conditions. (appeared at R0.12a)
+  Fixed f_mkfs() can create wrong exFAT volume due to a timing dependent error. (appeared at R0.12)
+  Fixed code page 855 cannot be set by f_setcp().
+  Fixed some compiler warnings.
+
+

+ 1 - 1
components/dfs/filesystems/elmfat/00readme.txt

@@ -1,4 +1,4 @@
-FatFs Module Source Files R0.14
+FatFs Module Source Files R0.14b
 
 
 FILES

+ 29 - 29
components/dfs/filesystems/elmfat/diskio.h

@@ -10,15 +10,15 @@ extern "C" {
 #endif
 
 /* Status of Disk Functions */
-typedef BYTE    DSTATUS;
+typedef BYTE	DSTATUS;
 
 /* Results of Disk Functions */
 typedef enum {
-    RES_OK = 0,     /* 0: Successful */
-    RES_ERROR,      /* 1: R/W Error */
-    RES_WRPRT,      /* 2: Write Protected */
-    RES_NOTRDY,     /* 3: Not Ready */
-    RES_PARERR      /* 4: Invalid Parameter */
+	RES_OK = 0,		/* 0: Successful */
+	RES_ERROR,		/* 1: R/W Error */
+	RES_WRPRT,		/* 2: Write Protected */
+	RES_NOTRDY,		/* 3: Not Ready */
+	RES_PARERR		/* 4: Invalid Parameter */
 } DRESULT;
 
 
@@ -35,40 +35,40 @@ DRESULT disk_ioctl (BYTE pdrv, BYTE cmd, void* buff);
 
 /* Disk Status Bits (DSTATUS) */
 
-#define STA_NOINIT      0x01    /* Drive not initialized */
-#define STA_NODISK      0x02    /* No medium in the drive */
-#define STA_PROTECT     0x04    /* Write protected */
+#define STA_NOINIT		0x01	/* Drive not initialized */
+#define STA_NODISK		0x02	/* No medium in the drive */
+#define STA_PROTECT		0x04	/* Write protected */
 
 
 /* Command code for disk_ioctrl fucntion */
 
 /* Generic command (Used by FatFs) */
-#define CTRL_SYNC           0   /* Complete pending write process (needed at FF_FS_READONLY == 0) */
-#define GET_SECTOR_COUNT    1   /* Get media size (needed at FF_USE_MKFS == 1) */
-#define GET_SECTOR_SIZE     2   /* Get sector size (needed at FF_MAX_SS != FF_MIN_SS) */
-#define GET_BLOCK_SIZE      3   /* Get erase block size (needed at FF_USE_MKFS == 1) */
-#define CTRL_TRIM           4   /* Inform device that the data on the block of sectors is no longer used (needed at FF_USE_TRIM == 1) */
+#define CTRL_SYNC			0	/* Complete pending write process (needed at FF_FS_READONLY == 0) */
+#define GET_SECTOR_COUNT	1	/* Get media size (needed at FF_USE_MKFS == 1) */
+#define GET_SECTOR_SIZE		2	/* Get sector size (needed at FF_MAX_SS != FF_MIN_SS) */
+#define GET_BLOCK_SIZE		3	/* Get erase block size (needed at FF_USE_MKFS == 1) */
+#define CTRL_TRIM			4	/* Inform device that the data on the block of sectors is no longer used (needed at FF_USE_TRIM == 1) */
 
 /* Generic command (Not used by FatFs) */
-#define CTRL_POWER          5   /* Get/Set power status */
-#define CTRL_LOCK           6   /* Lock/Unlock media removal */
-#define CTRL_EJECT          7   /* Eject media */
-#define CTRL_FORMAT         8   /* Create physical format on the media */
+#define CTRL_POWER			5	/* Get/Set power status */
+#define CTRL_LOCK			6	/* Lock/Unlock media removal */
+#define CTRL_EJECT			7	/* Eject media */
+#define CTRL_FORMAT			8	/* Create physical format on the media */
 
 /* MMC/SDC specific ioctl command */
-#define MMC_GET_TYPE        10  /* Get card type */
-#define MMC_GET_CSD         11  /* Get CSD */
-#define MMC_GET_CID         12  /* Get CID */
-#define MMC_GET_OCR         13  /* Get OCR */
-#define MMC_GET_SDSTAT      14  /* Get SD status */
-#define ISDIO_READ          55  /* Read data form SD iSDIO register */
-#define ISDIO_WRITE         56  /* Write data to SD iSDIO register */
-#define ISDIO_MRITE         57  /* Masked write data to SD iSDIO register */
+#define MMC_GET_TYPE		10	/* Get card type */
+#define MMC_GET_CSD			11	/* Get CSD */
+#define MMC_GET_CID			12	/* Get CID */
+#define MMC_GET_OCR			13	/* Get OCR */
+#define MMC_GET_SDSTAT		14	/* Get SD status */
+#define ISDIO_READ			55	/* Read data form SD iSDIO register */
+#define ISDIO_WRITE			56	/* Write data to SD iSDIO register */
+#define ISDIO_MRITE			57	/* Masked write data to SD iSDIO register */
 
 /* ATA/CF specific ioctl command */
-#define ATA_GET_REV         20  /* Get F/W revision */
-#define ATA_GET_MODEL       21  /* Get model name */
-#define ATA_GET_SN          22  /* Get serial number */
+#define ATA_GET_REV			20	/* Get F/W revision */
+#define ATA_GET_MODEL		21	/* Get model name */
+#define ATA_GET_SN			22	/* Get serial number */
 
 #ifdef __cplusplus
 }

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 199 - 255
components/dfs/filesystems/elmfat/ff.c


+ 36 - 40
components/dfs/filesystems/elmfat/ff.h

@@ -1,8 +1,8 @@
 /*----------------------------------------------------------------------------/
-/  FatFs - Generic FAT Filesystem module  R0.14                               /
+/  FatFs - Generic FAT Filesystem module  R0.14b                              /
 /-----------------------------------------------------------------------------/
 /
-/ Copyright (C) 2019, ChaN, all right reserved.
+/ Copyright (C) 2021, ChaN, all right reserved.
 /
 / FatFs module is an open source software. Redistribution and use of FatFs in
 / source and binary forms, with or without modification, are permitted provided
@@ -20,7 +20,7 @@
 
 
 #ifndef FF_DEFINED
-#define FF_DEFINED	86606	/* Revision ID */
+#define FF_DEFINED	86631	/* Revision ID */
 
 #ifdef __cplusplus
 extern "C" {
@@ -36,10 +36,14 @@ extern "C" {
 
 /* Integer types used for FatFs API */
 
-#if defined(_WIN32)	/* Main development platform */
+#if defined(_WIN32)		/* Windows VC++ (for development only) */
 #define FF_INTDEF 2
 #include <windows.h>
 typedef unsigned __int64 QWORD;
+#include <float.h>
+#define isnan(v) _isnan(v)
+#define isinf(v) (!_finite(v))
+
 #elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__cplusplus)	/* C99 or later */
 #define FF_INTDEF 2
 #include <stdint.h>
@@ -49,6 +53,7 @@ typedef uint16_t		WORD;	/* 16-bit unsigned integer */
 typedef uint32_t		DWORD;	/* 32-bit unsigned integer */
 typedef uint64_t		QWORD;	/* 64-bit unsigned integer */
 typedef WORD			WCHAR;	/* UTF-16 character type */
+
 #else  	/* Earlier than C99 */
 #define FF_INTDEF 1
 typedef unsigned int	UINT;	/* int must be 16-bit or 32-bit */
@@ -59,28 +64,29 @@ typedef WORD			WCHAR;	/* UTF-16 character type */
 #endif
 
 
-/* Definitions of volume management */
+/* Type of file size and LBA variables */
 
-#if FF_MULTI_PARTITION		/* Multiple partition configuration */
-typedef struct {
-	BYTE pd;	/* Physical drive number */
-	BYTE pt;	/* Partition: 0:Auto detect, 1-4:Forced partition) */
-} PARTITION;
-extern PARTITION VolToPart[];	/* Volume - Partition mapping table */
+#if FF_FS_EXFAT
+#if FF_INTDEF != 2
+#error exFAT feature wants C99 or later
 #endif
-
-#if FF_STR_VOLUME_ID
-#ifndef FF_VOLUME_STRS
-extern const char* VolumeStr[FF_VOLUMES];	/* User defied volume ID */
+typedef QWORD FSIZE_t;
+#if FF_LBA64
+typedef QWORD LBA_t;
+#else
+typedef DWORD LBA_t;
 #endif
+#else
+#if FF_LBA64
+#error exFAT needs to be enabled when enable 64-bit LBA
+#endif
+typedef DWORD FSIZE_t;
+typedef DWORD LBA_t;
 #endif
 
 
 
-/* Type of path name strings on FatFs API */
-
-#ifndef _INC_TCHAR
-#define _INC_TCHAR
+/* Type of path name strings on FatFs API (TCHAR) */
 
 #if FF_USE_LFN && FF_LFN_UNICODE == 1 	/* Unicode in UTF-16 encoding */
 typedef WCHAR TCHAR;
@@ -102,28 +108,22 @@ typedef char TCHAR;
 #define _TEXT(x) x
 #endif
 
-#endif
 
 
+/* Definitions of volume management */
 
-/* Type of file size and LBA variables */
-
-#if FF_FS_EXFAT
-#if FF_INTDEF != 2
-#error exFAT feature wants C99 or later
-#endif
-typedef QWORD FSIZE_t;
-#if FF_LBA64
-typedef QWORD LBA_t;
-#else
-typedef DWORD LBA_t;
+#if FF_MULTI_PARTITION		/* Multiple partition configuration */
+typedef struct {
+	BYTE pd;	/* Physical drive number */
+	BYTE pt;	/* Partition: 0:Auto detect, 1-4:Forced partition) */
+} PARTITION;
+extern PARTITION VolToPart[];	/* Volume - Partition mapping table */
 #endif
-#else
-#if FF_LBA64
-#error exFAT needs to be enabled when enable 64-bit LBA
+
+#if FF_STR_VOLUME_ID
+#ifndef FF_VOLUME_STRS
+extern const char* VolumeStr[FF_VOLUMES];	/* User defied volume ID */
 #endif
-typedef DWORD FSIZE_t;
-typedef DWORD LBA_t;
 #endif
 
 
@@ -347,10 +347,6 @@ TCHAR* f_gets (TCHAR* buff, int len, FIL* fp);						/* Get a string from the fil
 #define f_rmdir(path) f_unlink(path)
 #define f_unmount(path) f_mount(0, path, 0)
 
-#ifndef EOF
-#define EOF (-1)
-#endif
-
 
 
 

+ 43 - 29
components/dfs/filesystems/elmfat/ffconf.h

@@ -2,7 +2,7 @@
 /  FatFs Functional Configurations
 /---------------------------------------------------------------------------*/
 
-#define FFCONF_DEF	86606	/* Revision ID */
+#define FFCONF_DEF	86631	/* Revision ID */
 
 /*---------------------------------------------------------------------------/
 / Function Configurations
@@ -25,14 +25,6 @@
 /   3: f_lseek() function is removed in addition to 2. */
 
 
-#define FF_USE_STRFUNC	0
-/* This option switches string functions, f_gets(), f_putc(), f_puts() and f_printf().
-/
-/  0: Disable string functions.
-/  1: Enable without LF-CRLF conversion.
-/  2: Enable with LF-CRLF conversion. */
-
-
 #define FF_USE_FIND		0
 /* This option switches filtered directory read functions, f_findfirst() and
 /  f_findnext(). (0:Disable, 1:Enable 2:Enable with matching altname[] too) */
@@ -64,6 +56,30 @@
 /* This option switches f_forward() function. (0:Disable or 1:Enable) */
 
 
+#define FF_USE_STRFUNC	0
+#define FF_PRINT_LLI	0
+#define FF_PRINT_FLOAT	0
+#define FF_STRF_ENCODE	3
+/* FF_USE_STRFUNC switches string functions, f_gets(), f_putc(), f_puts() and
+/  f_printf().
+/
+/   0: Disable. FF_PRINT_LLI, FF_PRINT_FLOAT and FF_STRF_ENCODE have no effect.
+/   1: Enable without LF-CRLF conversion.
+/   2: Enable with LF-CRLF conversion.
+/
+/  FF_PRINT_LLI = 1 makes f_printf() support long long argument and FF_PRINT_FLOAT = 1/2
+   makes f_printf() support floating point argument. These features want C99 or later.
+/  When FF_LFN_UNICODE >= 1 with LFN enabled, string functions convert the character
+/  encoding in it. FF_STRF_ENCODE selects assumption of character encoding ON THE FILE
+/  to be read/written via those functions.
+/
+/   0: ANSI/OEM in current CP
+/   1: Unicode in UTF-16LE
+/   2: Unicode in UTF-16BE
+/   3: Unicode in UTF-8
+*/
+
+
 /*---------------------------------------------------------------------------/
 / Locale and Namespace Configurations
 /---------------------------------------------------------------------------*/
@@ -105,8 +121,8 @@
 #define FF_USE_LFN 	RT_DFS_ELM_USE_LFN
 #define FF_MAX_LFN 	RT_DFS_ELM_MAX_LFN
 #else
-#define	FF_USE_LFN	0		/* 0 to 3 */
-#define	FF_MAX_LFN	255		/* Maximum LFN length to handle (12 to 255) */
+#define FF_USE_LFN	0		/* 0 to 3 */
+#define FF_MAX_LFN	255		/* Maximum LFN length to handle (12 to 255) */
 #endif
 /* The FF_USE_LFN switches the support for LFN (long file name).
 /
@@ -140,6 +156,16 @@
 #else
 #define	FF_LFN_UNICODE	0	/* 0:ANSI/OEM or 1:Unicode */
 #endif
+/* This option switches the character encoding on the API when LFN is enabled.
+/
+/   0: ANSI/OEM in current CP (TCHAR = char)
+/   1: Unicode in UTF-16 (TCHAR = WCHAR)
+/   2: Unicode in UTF-8 (TCHAR = char)
+/   3: Unicode in UTF-32 (TCHAR = DWORD)
+/
+/  Also behavior of string I/O functions will be affected by this option.
+/  When LFN is not enabled, this option has no effect. */
+
 
 #define FF_LFN_BUF		255
 #define FF_SFN_BUF		12
@@ -149,19 +175,6 @@
 /  on character encoding. When LFN is not enabled, these options have no effect. */
 
 
-#define FF_STRF_ENCODE	3
-/* When FF_LFN_UNICODE >= 1 with LFN enabled, string I/O functions, f_gets(),
-/  f_putc(), f_puts and f_printf() convert the character encoding in it.
-/  This option selects assumption of character encoding ON THE FILE to be
-/  read/written via those functions.
-/
-/   0: ANSI/OEM in current CP
-/   1: Unicode in UTF-16LE
-/   2: Unicode in UTF-16BE
-/   3: Unicode in UTF-8
-*/
-
-
 #define FF_FS_RPATH		0
 /* This option configures support for relative path.
 /
@@ -206,7 +219,7 @@
 /  funciton will be available. */
 
 
-#define	FF_MIN_SS		512
+#define FF_MIN_SS		512
 #ifdef RT_DFS_ELM_MAX_SECTOR_SIZE
 #define FF_MAX_SS     RT_DFS_ELM_MAX_SECTOR_SIZE
 #else
@@ -214,7 +227,7 @@
 #endif
 /* This set of options configures the range of sector size to be supported. (512,
 /  1024, 2048 or 4096) Always set both 512 for most systems, generic memory card and
-/  harddisk. But a larger value may be required for on-board flash memory and some
+/  harddisk, but a larger value may be required for on-board flash memory and some
 /  type of optical media. When FF_MAX_SS is larger than FF_MIN_SS, FatFs is configured
 /  for variable sector size mode and disk_ioctl() function needs to implement
 /  GET_SECTOR_SIZE command. */
@@ -225,8 +238,8 @@
 /  To enable the 64-bit LBA, also exFAT needs to be enabled. (FF_FS_EXFAT == 1) */
 
 
-#define FF_MIN_GPT		0x100000000
-/* Minimum number of sectors to switch GPT format to create partition in f_mkfs and
+#define FF_MIN_GPT		0x10000000
+/* Minimum number of sectors to switch GPT as partitioning format in f_mkfs and
 /  f_fdisk function. 0x100000000 max. This option has no effect when FF_LBA64 == 0. */
 
 
@@ -260,7 +273,7 @@
 #define FF_FS_NORTC		0
 #define FF_NORTC_MON	1
 #define FF_NORTC_MDAY	1
-#define FF_NORTC_YEAR	2019
+#define FF_NORTC_YEAR	2020
 /* The option FF_FS_NORTC switches timestamp functiton. If the system does not have
 /  any RTC function or valid timestamp is not needed, set FF_FS_NORTC = 1 to disable
 /  the timestamp function. Every object modified by FatFs will have a fixed timestamp
@@ -294,6 +307,7 @@
 /      can be opened simultaneously under file lock control. Note that the file
 /      lock control is independent of re-entrancy. */
 
+
 /* #include <somertos.h>	// O/S definitions */
 #include <rtdef.h>
 #ifdef RT_DFS_ELM_REENTRANT

+ 0 - 15
components/dfs/include/dfs_poll.h

@@ -1,15 +0,0 @@
-/*
- * Copyright (c) 2006-2021, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date           Author       Notes
- */
-
-#ifndef DFS_POLL_H__
-#define DFS_POLL_H__
-
-#include <poll.h>
-
-#endif /* DFS_POLL_H__ */

+ 0 - 15
components/dfs/include/dfs_select.h

@@ -1,15 +0,0 @@
-/*
- * Copyright (c) 2006-2021, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date           Author       Notes
- */
-
-#ifndef DFS_SELECT_H__
-#define DFS_SELECT_H__
-
-#include <sys/select.h>
-
-#endif

+ 4 - 4
components/dfs/src/dfs.c

@@ -18,9 +18,9 @@
 #include <lwp.h>
 #endif
 
-#ifdef RT_USING_LIBC
+#ifdef RT_USING_POSIX
 #include <libc.h>
-#endif
+#endif /* RT_USING_POSIX */
 
 /* Global variables */
 const struct dfs_filesystem_ops *filesystem_operation_table[DFS_FILESYSTEM_TYPES_MAX];
@@ -216,10 +216,10 @@ struct dfs_fd *fd_get(int fd)
     struct dfs_fd *d;
     struct dfs_fdtable *fdt;
 
-#ifdef RT_USING_LIBC
+#ifdef RT_USING_POSIX
     if ((0 <= fd) && (fd <= 2))
         fd = libc_stdio_get_console();
-#endif
+#endif /* RT_USING_POSIX */
 
     fdt = dfs_fdtable_get();
     fd = fd - DFS_FD_OFFSET;

+ 1 - 1
components/drivers/include/ipc/workqueue.h

@@ -61,7 +61,7 @@ rt_err_t rt_workqueue_submit_work(struct rt_workqueue *queue, struct rt_work *wo
 rt_err_t rt_workqueue_cancel_work(struct rt_workqueue *queue, struct rt_work *work);
 rt_err_t rt_workqueue_cancel_work_sync(struct rt_workqueue *queue, struct rt_work *work);
 rt_err_t rt_workqueue_cancel_all_work(struct rt_workqueue *queue);
-rt_err_t rt_workqueue_critical_work(struct rt_workqueue *queue, struct rt_work *work);
+rt_err_t rt_workqueue_urgent_work(struct rt_workqueue *queue, struct rt_work *work);
 
 #ifdef RT_USING_SYSTEM_WORKQUEUE
 rt_err_t rt_work_submit(struct rt_work *work, rt_tick_t time);

+ 1 - 1
components/drivers/src/workqueue.c

@@ -309,7 +309,7 @@ rt_err_t rt_workqueue_submit_work(struct rt_workqueue *queue, struct rt_work *wo
  *
  * @return RT_EOK   Success.
  */
-rt_err_t rt_workqueue_critical_work(struct rt_workqueue *queue, struct rt_work *work)
+rt_err_t rt_workqueue_urgent_work(struct rt_workqueue *queue, struct rt_work *work)
 {
     rt_base_t level;
     RT_ASSERT(queue != RT_NULL);

+ 13 - 6
components/finsh/shell.c

@@ -145,10 +145,17 @@ void finsh_set_prompt_mode(rt_uint32_t prompt_mode)
 int finsh_getchar(void)
 {
 #ifdef RT_USING_DEVICE
-#ifdef RT_USING_LIBC
-    return getchar();
-#else
     char ch = 0;
+#ifdef RT_USING_POSIX
+    if(read(STDIN_FILENO, &ch, 1) > 0)
+    {
+        return ch;
+    }
+    else
+    {
+        return -1; /* EOF */
+    }
+#else
     rt_device_t device;
 
     RT_ASSERT(shell != RT_NULL);
@@ -163,14 +170,14 @@ int finsh_getchar(void)
         rt_sem_take(&shell->rx_sem, RT_WAITING_FOREVER);
 
     return ch;
-#endif /* RT_USING_LIBC */
+#endif /* RT_USING_POSIX */
 #else
     extern char rt_hw_console_getchar(void);
     return rt_hw_console_getchar();
 #endif /* RT_USING_DEVICE */
 }
 
-#if !defined(RT_USING_LIBC) && defined(RT_USING_DEVICE)
+#if !defined(RT_USING_POSIX) && defined(RT_USING_DEVICE)
 static rt_err_t finsh_rx_ind(rt_device_t dev, rt_size_t size)
 {
     RT_ASSERT(shell != RT_NULL);
@@ -436,7 +443,7 @@ void finsh_thread_entry(void *parameter)
     shell->echo_mode = 0;
 #endif
 
-#if !defined(RT_USING_LIBC) && defined(RT_USING_DEVICE)
+#if !defined(RT_USING_POSIX) && defined(RT_USING_DEVICE)
     /* set console device as shell device */
     if (shell->device == RT_NULL)
     {

+ 1 - 1
components/finsh/shell.h

@@ -78,7 +78,7 @@ struct finsh_shell
     rt_uint16_t line_position;
     rt_uint16_t line_curpos;
 
-#if !defined(RT_USING_LIBC) && defined(RT_USING_DEVICE)
+#if !defined(RT_USING_POSIX) && defined(RT_USING_DEVICE)
     rt_device_t device;
 #endif
 

+ 35 - 32
components/libc/Kconfig

@@ -2,18 +2,49 @@ menu "POSIX layer and C standard library"
 
 config RT_USING_LIBC
     bool "Enable libc APIs from toolchain"
-    select RT_USING_DFS
-    select RT_USING_POSIX
     default y
 
+if RT_USING_LIBC
+    config RT_LIBC_USING_TIME
+        default y
+
+    config RT_LIBC_USING_FILEIO
+        bool "Enable libc with file operation, eg.fopen/fwrite/fread/getchar"
+        select RT_USING_DFS
+        select RT_USING_POSIX
+        default n
+
+    config RT_USING_MODULE
+        bool "Enable dynamic module with dlopen/dlsym/dlclose feature"
+        default n
+
+    if RT_USING_MODULE
+        config RT_USING_CUSTOM_DLMODULE
+            bool "Enable load dynamic module by custom"
+            default n
+    endif
+endif
+
+if RT_USING_LIBC != y
+    config RT_LIBC_USING_TIME
+    bool "Enable time functions without compiler's libc"
+    default y
+endif
+
+config RT_LIBC_DEFAULT_TIMEZONE
+    depends on (RT_LIBC_USING_TIME || RT_USING_LIBC)
+    int "Set the default time zone (UTC+)"
+    range -12 12
+    default 8
+
 config RT_USING_PTHREADS
     bool "Enable pthreads APIs"
     default n
 
 if RT_USING_PTHREADS
     config PTHREAD_NUM_MAX
-    int "Maximum number of pthreads"
-    default 8
+        int "Maximum number of pthreads"
+        default 8
 endif
 
 if RT_USING_DFS
@@ -42,32 +73,4 @@ if RT_USING_DFS
 
 endif
 
-if RT_USING_LIBC
-    config RT_LIBC_USING_TIME
-        default y
-
-    config RT_USING_MODULE
-        bool "Enable dynamic module with dlopen/dlsym/dlclose feature"
-        default n
-
-    if RT_USING_MODULE
-        config RT_USING_CUSTOM_DLMODULE
-            bool "Enable load dynamic module by custom"
-            default n
-    endif
-
-endif
-
-if RT_USING_LIBC != y
-    config RT_LIBC_USING_TIME
-    bool "Enable time functions without compiler's libc"
-    default y
-endif
-
-config RT_LIBC_DEFAULT_TIMEZONE
-    depends on (RT_LIBC_USING_TIME || RT_USING_LIBC)
-    int "Set the default time zone (UTC+)"
-    range -12 12
-    default 8
-
 endmenu

+ 0 - 3
components/libc/compilers/armlibc/SConscript

@@ -8,9 +8,6 @@ group = []
 CPPPATH = [cwd]
 CPPDEFINES = ['RT_USING_ARM_LIBC']
 
-if GetDepend('RT_USING_DFS') == False:
-    SrcRemove(src, ['stdio.c'])
-
 if GetDepend('RT_USING_MODULE') == False:
     SrcRemove(src, ['libc_syms.c'])
 

+ 3 - 8
components/libc/compilers/armlibc/libc.c

@@ -7,29 +7,24 @@
  * Date           Author       Notes
  * 2017/10/15     bernard      the first version
  */
-#include <fcntl.h>
 #include <rtthread.h>
+#include <fcntl.h>
 #include "libc.h"
-
 #ifdef RT_USING_PTHREADS
 #include <pthread.h>
 #endif
 
 int libc_system_init(void)
 {
-#if defined(RT_USING_DFS) & defined(RT_USING_DFS_DEVFS)
+#ifdef RT_USING_POSIX
     rt_device_t dev_console;
 
     dev_console = rt_console_get_device();
     if (dev_console)
     {
-    #if defined(RT_USING_POSIX)
         libc_stdio_set_console(dev_console->parent.name, O_RDWR);
-    #else
-        libc_stdio_set_console(dev_console->parent.name, O_WRONLY);
-    #endif
     }
-#endif
+#endif /* RT_USING_POSIX */
 
 #if defined RT_USING_PTHREADS && !defined RT_USING_COMPONENTS_INIT
     pthread_system_init();

+ 4 - 0
components/libc/compilers/armlibc/libc.h

@@ -10,13 +10,17 @@
 #ifndef __RTT_LIBC_H__
 #define __RTT_LIBC_H__
 
+#include <rtconfig.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 int libc_system_init(void);
+#ifdef RT_USING_POSIX
 int libc_stdio_get_console(void);
 int libc_stdio_set_console(const char* device_name, int mode);
+#endif /* RT_USING_POSIX */
 
 #ifdef __cplusplus
 }

+ 5 - 4
components/libc/compilers/armlibc/stdio.c

@@ -7,16 +7,17 @@
  * Date           Author       Notes
  * 2017/10/15     bernard      implement stdio for armcc.
  */
+#include <rtthread.h>
 
+#ifdef RT_USING_POSIX
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
-#include <rtthread.h>
 #include "libc.h"
 
-#if defined(RT_USING_DFS) && defined(RT_USING_DFS_DEVFS)
-#include <dfs_posix.h>
+#include <fcntl.h>
+#include <unistd.h>
 
 #define STDIO_DEVICE_NAME_MAX   32
 
@@ -48,4 +49,4 @@ int libc_stdio_get_console(void)
     return std_fd;
 }
 
-#endif
+#endif /* RT_USING_POSIX */

+ 56 - 65
components/libc/compilers/armlibc/syscalls.c

@@ -14,16 +14,15 @@
  * 2020-02-13     Meco Man     re-implement exit() and abort()
  * 2020-02-14     Meco Man     implement _sys_tmpnam()
  */
-
 #include <string.h>
 #include <rt_sys.h>
 
 #include <rtthread.h>
 #include "libc.h"
 
-#ifdef RT_USING_DFS
-#include <dfs_posix.h>
-#endif
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/stat.h>
 
 #define DBG_TAG    "armlibc.syscalls"
 #define DBG_LVL    DBG_INFO
@@ -55,7 +54,7 @@ const char __stderr_name[] = "STDERR";
  */
 FILEHANDLE _sys_open(const char *name, int openmode)
 {
-#ifdef RT_USING_DFS
+#ifdef RT_LIBC_USING_FILEIO
     int fd;
     int mode = O_RDONLY;
 #endif
@@ -68,8 +67,8 @@ FILEHANDLE _sys_open(const char *name, int openmode)
     if (strcmp(name, __stderr_name) == 0)
         return (STDERR);
 
-#ifndef RT_USING_DFS
-    return -1;
+#ifndef RT_LIBC_USING_FILEIO
+    return 0; /* error */
 #else
     /* Correct openmode from fopen to open */
     if (openmode & OPEN_PLUS)
@@ -99,21 +98,22 @@ FILEHANDLE _sys_open(const char *name, int openmode)
 
     fd = open(name, mode, 0);
     if (fd < 0)
-        return -1;
+        return 0; /* error */
     else
         return fd;
-#endif
+#endif /* RT_LIBC_USING_FILEIO */
 }
 
 int _sys_close(FILEHANDLE fh)
 {
-#ifndef RT_USING_DFS
-    return 0;
-#else
-    if (fh <= STDERR) return 0;
+#ifdef RT_LIBC_USING_FILEIO
+    if (fh <= STDERR)
+        return 0; /* error */
 
     return close(fh);
-#endif
+#else
+    return 0;
+#endif /* RT_LIBC_USING_FILEIO */
 }
 
 /*
@@ -143,13 +143,11 @@ int _sys_close(FILEHANDLE fh)
  */
 int _sys_read(FILEHANDLE fh, unsigned char *buf, unsigned len, int mode)
 {
-#ifdef RT_USING_DFS
+#ifdef RT_LIBC_USING_FILEIO
     int size;
-#endif
 
     if (fh == STDIN)
     {
-#ifdef RT_USING_POSIX
         if (libc_stdio_get_console() < 0)
         {
             LOG_W("Do not invoke standard output before initializing libc");
@@ -157,25 +155,20 @@ int _sys_read(FILEHANDLE fh, unsigned char *buf, unsigned len, int mode)
         }
         size = read(STDIN_FILENO, buf, len);
         return len - size;
-#else
-        /* no stdin */
-        return -1;
-#endif
     }
     else if ((fh == STDOUT) || (fh == STDERR))
     {
-        return -1;
+        return 0; /* error */
     }
 
-#ifndef RT_USING_DFS
-    return 0;
-#else
     size = read(fh, buf, len);
     if (size >= 0)
         return len - size;
     else
-        return -1;
-#endif
+        return 0; /* error */
+#else
+    return 0; /* error */
+#endif /* RT_LIBC_USING_FILEIO */
 }
 
 /*
@@ -185,16 +178,13 @@ int _sys_read(FILEHANDLE fh, unsigned char *buf, unsigned len, int mode)
  */
 int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode)
 {
-#ifdef RT_USING_DFS
+#ifdef RT_LIBC_USING_FILEIO
     int size;
-#endif
+#endif /* RT_LIBC_USING_FILEIO */
 
     if ((fh == STDOUT) || (fh == STDERR))
     {
-#if !defined(RT_USING_CONSOLE) || !defined(RT_USING_DEVICE)
-        return 0;
-#else
-#ifdef RT_USING_POSIX
+#ifdef RT_LIBC_USING_FILEIO
         if (libc_stdio_get_console() < 0)
         {
             LOG_W("Do not invoke standard input before initializing libc");
@@ -202,31 +192,29 @@ int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode)
         }
         size = write(STDOUT_FILENO, buf, len);
         return len - size;
-#else
+#elif defined(RT_USING_CONSOLE)
         if (rt_console_get_device())
         {
             rt_device_write(rt_console_get_device(), -1, buf, len);
-            return 0;
         }
 
-        return -1;
-#endif
-#endif
+        return 0; /* error */
+#endif /* RT_LIBC_USING_FILEIO */
     }
     else if (fh == STDIN)
     {
-        return -1;
+        return 0; /* error */
     }
 
-#ifndef RT_USING_DFS
-    return 0;
-#else
+#ifdef RT_LIBC_USING_FILEIO
     size = write(fh, buf, len);
     if (size >= 0)
         return len - size;
     else
-        return -1;
-#endif
+        return 0; /* error */
+#else
+    return 0;
+#endif /* RT_LIBC_USING_FILEIO */
 }
 
 /*
@@ -235,16 +223,15 @@ int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode)
  */
 int _sys_seek(FILEHANDLE fh, long pos)
 {
+#ifdef RT_LIBC_USING_FILEIO
     if (fh < STDERR)
-        return -1;
-
-#ifndef RT_USING_DFS
-    return -1;
-#else
+        return 0; /* error */
 
     /* position is relative to the start of file fh */
     return lseek(fh, pos, 0);
-#endif
+#else
+    return 0; /* error */
+#endif /* RT_LIBC_USING_FILEIO */
 }
 
 /**
@@ -270,7 +257,7 @@ void _ttywrch(int ch)
 
     c = (char)ch;
     rt_kprintf(&c);
-#endif
+#endif /* RT_USING_CONSOLE */
 }
 
 /* for exit() and abort() */
@@ -289,17 +276,17 @@ RT_WEAK void _sys_exit(int return_code)
  */
 long _sys_flen(FILEHANDLE fh)
 {
-#ifdef RT_USING_DFS
+#ifdef RT_LIBC_USING_FILEIO
     struct stat stat;
 
     if (fh < STDERR)
-        return -1;
+        return 0; /* error */
 
     fstat(fh, &stat);
     return stat.st_size;
 #else
-    return -1;
-#endif
+    return 0;
+#endif /* RT_LIBC_USING_FILEIO */
 }
 
 int _sys_istty(FILEHANDLE fh)
@@ -312,11 +299,11 @@ int _sys_istty(FILEHANDLE fh)
 
 int remove(const char *filename)
 {
-#ifndef RT_USING_DFS
-    return -1;
-#else
+#ifdef RT_LIBC_USING_FILEIO
     return unlink(filename);
-#endif
+#else
+    return 0; /* error */
+#endif /* RT_LIBC_USING_FILEIO */
 }
 
 #ifdef __MICROLIB
@@ -324,28 +311,32 @@ int remove(const char *filename)
 
 int fputc(int c, FILE *f)
 {
+#ifdef RT_USING_CONSOLE
     char ch[2] = {0};
 
     ch[0] = c;
     rt_kprintf(&ch[0]);
     return 1;
+#else
+    return 0; /* error */
+#endif /* RT_USING_CONSOLE */
 }
 
 int fgetc(FILE *f)
 {
-#ifdef RT_USING_POSIX
+#ifdef RT_LIBC_USING_FILEIO
     char ch;
 
     if (libc_stdio_get_console() < 0)
     {
         LOG_W("Do not invoke standard output before initializing libc");
-        return -1;
+        return 0;
     }
 
     if(read(STDIN_FILENO, &ch, 1) == 1)
         return ch;
-#endif
-
-    return -1;
+#endif /* RT_LIBC_USING_FILEIO */
+    return 0; /* error */
 }
-#endif
+
+#endif /* __MICROLIB */

+ 1 - 1
components/libc/compilers/common/SConscript

@@ -11,7 +11,7 @@ CPPDEFINES = []
 if GetDepend('RT_USING_LIBC'):
     src += Glob('*.c')
 elif GetDepend('RT_LIBC_USING_TIME'):
-    src += Glob('time.c')
+    src += ['time.c']
 
 if rtconfig.CROSS_TOOL == 'keil':
     CPPDEFINES += ['__CLK_TCK=RT_TICK_PER_SECOND']

+ 2 - 3
components/libc/compilers/dlib/SConscript

@@ -11,7 +11,7 @@ CPPDEFINES = ['RT_USING_DLIBC']
 
 if rtconfig.PLATFORM == 'iar':
 
-    if GetDepend('RT_USING_DFS'):
+    if GetDepend('RT_LIBC_USING_FILEIO'):
         from distutils.version import LooseVersion
         from iar import IARVersion
 
@@ -20,7 +20,6 @@ if rtconfig.PLATFORM == 'iar':
         if LooseVersion(IARVersion()) < LooseVersion("8.20.1"):
             CPPDEFINES = CPPDEFINES + ['_DLIB_THREAD_SUPPORT']
 
-    group = DefineGroup('libc', src, depend = ['RT_USING_LIBC'], 
-        CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES)
+    group = DefineGroup('libc', src, depend = ['RT_USING_LIBC'], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES)
 
 Return('group')

+ 3 - 9
components/libc/compilers/dlib/libc.c

@@ -7,29 +7,24 @@
  * Date           Author       Notes
  * 2017/10/15     bernard      the first version
  */
-#include <fcntl.h>
 #include <rtthread.h>
+#include <fcntl.h>
 #include "libc.h"
-
 #ifdef RT_USING_PTHREADS
 #include <pthread.h>
 #endif
 
 int libc_system_init(void)
 {
-#if defined(RT_USING_DFS) && defined(RT_USING_DFS_DEVFS)
+#ifdef RT_USING_POSIX
     rt_device_t dev_console;
 
     dev_console = rt_console_get_device();
     if (dev_console)
     {
-    #if defined(RT_USING_POSIX)
         libc_stdio_set_console(dev_console->parent.name, O_RDWR);
-    #else
-        libc_stdio_set_console(dev_console->parent.name, O_WRONLY);
-    #endif
     }
-#endif
+#endif /* RT_USING_POSIX */
 
 #if defined (RT_USING_PTHREADS) && !defined (RT_USING_COMPONENTS_INIT)
     pthread_system_init();
@@ -38,4 +33,3 @@ int libc_system_init(void)
     return 0;
 }
 INIT_COMPONENT_EXPORT(libc_system_init);
-

+ 2 - 0
components/libc/compilers/dlib/libc.h

@@ -16,8 +16,10 @@ extern "C" {
 #endif
 
 int libc_system_init(void);
+#ifdef RT_USING_POSIX
 int libc_stdio_get_console(void);
 int libc_stdio_set_console(const char* device_name, int mode);
+#endif /* RT_USING_POSIX */
 
 #ifdef __cplusplus
 }

+ 6 - 6
components/libc/compilers/dlib/stdio.c

@@ -7,17 +7,17 @@
  * Date           Author       Notes
  * 2017/10/15     bernard      implement stdio for IAR dlib.
  */
+#include <rtthread.h>
+
+#ifdef RT_USING_POSIX
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-
-#include <rtthread.h>
+#include <fcntl.h>
+#include <unistd.h>
 #include "libc.h"
 
-#if defined(RT_USING_DFS) && defined(RT_USING_DFS_DEVFS)
-#include <dfs_posix.h>
-
 #define STDIO_DEVICE_NAME_MAX   32
 
 static int std_fd = -1;
@@ -46,4 +46,4 @@ int libc_stdio_get_console(void) {
     return std_fd;
 }
 
-#endif
+#endif /* RT_USING_POSIX */

+ 4 - 7
components/libc/compilers/dlib/syscall_close.c

@@ -8,10 +8,8 @@
  * 2015-01-28     Bernard      first version
  */
 #include <rtthread.h>
-#ifdef RT_USING_DFS
-#include <dfs_posix.h>
-#endif
 #include <yfuns.h>
+#include <unistd.h>
 
 #pragma module_name = "?__close"
 int __close(int handle)
@@ -20,10 +18,9 @@ int __close(int handle)
         handle == _LLIO_STDERR ||
         handle == _LLIO_STDIN)
         return _LLIO_ERROR;
-
-#ifdef RT_USING_DFS
+#ifdef RT_LIBC_USING_FILEIO
     return close(handle);
 #else
-    return 0;
-#endif
+    return _LLIO_ERROR;
+#endif /* RT_LIBC_USING_FILEIO */
 }

+ 2 - 5
components/libc/compilers/dlib/syscall_lseek.c

@@ -8,10 +8,8 @@
  * 2015-01-28     Bernard      first version
  */
 #include <rtthread.h>
-#ifdef RT_USING_DFS
-#include <dfs_posix.h>
-#endif
 #include <yfuns.h>
+#include <unistd.h>
 
 #pragma module_name = "?__lseek"
 long __lseek(int handle, long offset, int whence)
@@ -20,8 +18,7 @@ long __lseek(int handle, long offset, int whence)
         handle == _LLIO_STDERR ||
         handle == _LLIO_STDIN)
         return _LLIO_ERROR;
-
-#ifdef RT_USING_DFS
+#ifdef RT_LIBC_USING_FILEIO
     return lseek(handle, offset, whence);
 #else
     return _LLIO_ERROR;

+ 5 - 7
components/libc/compilers/dlib/syscall_open.c

@@ -10,17 +10,13 @@
 
 #include <rtthread.h>
 #include <yfuns.h>
-#ifdef RT_USING_DFS
-#include <dfs_posix.h>
-#endif
+#include <fcntl.h>
 
 #pragma module_name = "?__open"
 
 int __open(const char *filename, int mode)
 {
-#ifndef RT_USING_DFS
-  return _LLIO_ERROR;
-#else
+#ifdef RT_LIBC_USING_FILEIO
   int handle;
   int open_mode = O_RDONLY;
 
@@ -70,5 +66,7 @@ int __open(const char *filename, int mode)
     return _LLIO_ERROR;
 
   return handle;
-#endif
+#else
+  return _LLIO_ERROR;
+#endif /* RT_LIBC_USING_FILEIO */
 }

+ 5 - 13
components/libc/compilers/dlib/syscall_read.c

@@ -9,10 +9,8 @@
  */
 
 #include <rtthread.h>
-#ifdef RT_USING_DFS
-#include <dfs_posix.h>
-#endif
 #include <yfuns.h>
+#include <unistd.h>
 #include "libc.h"
 
 #define DBG_TAG    "dlib.syscall_read"
@@ -22,32 +20,26 @@
 #pragma module_name = "?__read"
 size_t __read(int handle, unsigned char *buf, size_t len)
 {
-#ifdef RT_USING_DFS
+#ifdef RT_LIBC_USING_FILEIO
     int size;
-#endif
 
     if (handle == _LLIO_STDIN)
     {
-#ifdef RT_USING_POSIX
         if (libc_stdio_get_console() < 0)
         {
             LOG_W("Do not invoke standard input before initializing libc");
             return 0;
         }
         return read(STDIN_FILENO, buf, len);
-#else
-        return _LLIO_ERROR;
-#endif
     }
     else if ((handle == _LLIO_STDOUT) || (handle == _LLIO_STDERR))
     {
         return _LLIO_ERROR;
     }
 
-#ifndef RT_USING_DFS
-    return _LLIO_ERROR;
-#else
     size = read(handle, buf, len);
     return size;
-#endif
+#else
+    return _LLIO_ERROR;
+#endif /* RT_LIBC_USING_FILEIO */
 }

+ 5 - 7
components/libc/compilers/dlib/syscall_remove.c

@@ -8,17 +8,15 @@
  * 2015-01-28     Bernard      first version
  */
 #include <rtthread.h>
-#ifdef RT_USING_DFS
-#include <dfs_posix.h>
-#endif
 #include <yfuns.h>
+#include <unistd.h>
 
 #pragma module_name = "?remove"
 int remove(const char *val)
 {
-#ifndef RT_USING_DFS
-    return -1;
-#else
+#ifdef RT_USING_POSIX
     return unlink(val);
-#endif
+#else
+    return -1;
+#endif /* RT_USING_POSIX */
 }

+ 12 - 18
components/libc/compilers/dlib/syscall_write.c

@@ -9,10 +9,8 @@
  */
 
 #include <rtthread.h>
-#ifdef RT_USING_DFS
-#include <dfs_posix.h>
-#endif
 #include <yfuns.h>
+#include <unistd.h>
 #include "libc.h"
 
 #define DBG_TAG    "dlib.syscall_write"
@@ -23,24 +21,20 @@
 
 size_t __write(int handle, const unsigned char *buf, size_t len)
 {
-#ifdef RT_USING_DFS
+#ifdef RT_LIBC_USING_FILEIO
     int size;
-#endif
+#endif /* RT_LIBC_USING_FILEIO */
 
     if ((handle == _LLIO_STDOUT) || (handle == _LLIO_STDERR))
     {
-#ifndef RT_USING_CONSOLE
-        return _LLIO_ERROR;
-#else
-
-#ifdef RT_USING_POSIX
+#ifdef RT_LIBC_USING_FILEIO
         if (libc_stdio_get_console() < 0)
         {
             LOG_W("Do not invoke standard output before initializing libc");
             return 0;
         }
         return write(STDOUT_FILENO, (void*)buf, len);
-#else
+#elif defined(RT_USING_CONSOLE)
         rt_device_t console_device;
 
         console_device = rt_console_get_device();
@@ -50,19 +44,19 @@ size_t __write(int handle, const unsigned char *buf, size_t len)
         }
 
         return len;
-#endif
-#endif
+#else
+        return _LLIO_ERROR;
+#endif /* RT_LIBC_USING_FILEIO */
     }
     else if (handle == _LLIO_STDIN)
     {
         return _LLIO_ERROR;
     }
 
-#ifndef RT_USING_DFS
-    return _LLIO_ERROR;
-#else
+#ifdef RT_LIBC_USING_FILEIO
     size = write(handle, buf, len);
     return size;
-#endif
+#else
+    return _LLIO_ERROR;
+#endif /* RT_LIBC_USING_FILEIO */
 }
-

+ 2 - 13
components/libc/compilers/gcc/newlib/libc.c

@@ -12,34 +12,23 @@
 #include <stdlib.h>
 #include <fcntl.h>
 #include <sys/time.h>
-
 #include "libc.h"
 
 #ifdef RT_USING_PTHREADS
 #include <pthread.h>
 #endif
 
-int _EXFUN(putenv,(char *__string));
-
 int libc_system_init(void)
 {
-#if defined(RT_USING_DFS) & defined(RT_USING_DFS_DEVFS) & defined(RT_USING_CONSOLE)
+#ifdef RT_USING_POSIX
     rt_device_t dev_console;
 
     dev_console = rt_console_get_device();
     if (dev_console)
     {
-    #if defined(RT_USING_POSIX)
         libc_stdio_set_console(dev_console->parent.name, O_RDWR);
-    #else
-        libc_stdio_set_console(dev_console->parent.name, O_WRONLY);
-    #endif
     }
-
-    /* set PATH and HOME */
-    putenv("PATH=/bin");
-    putenv("HOME=/home");
-#endif
+#endif /* RT_USING_POSIX */
 
 #if defined RT_USING_PTHREADS && !defined RT_USING_COMPONENTS_INIT
     pthread_system_init();

+ 3 - 4
components/libc/compilers/gcc/newlib/libc.h

@@ -10,16 +10,15 @@
 #ifndef __RTT_LIBC_H__
 #define __RTT_LIBC_H__
 
-#ifndef _EXFUN
-#define _EXFUN(name, proto)     name proto
-#endif
-
 #ifdef __cplusplus
 extern "C" {
 #endif
+
 int libc_system_init(void);
+#ifdef RT_USING_POSIX
 int libc_stdio_get_console(void);
 int libc_stdio_set_console(const char* device_name, int mode);
+#endif /* RT_USING_POSIX */
 
 #ifdef __cplusplus
 }

+ 47 - 6
components/libc/compilers/gcc/newlib/stdio.c

@@ -7,15 +7,15 @@
  * Date           Author       Notes
  * 2017/10/15     bernard      the first version
  */
+#include <rtthread.h>
 #include <stdio.h>
-#include <stdlib.h>
 #include <fcntl.h>
-#include <rtthread.h>
 #include "libc.h"
 
 #define STDIO_DEVICE_NAME_MAX   32
 
-int _EXFUN(fileno, (FILE *));
+#ifdef RT_LIBC_USING_FILEIO
+#include <stdlib.h>
 
 static FILE* std_console = NULL;
 
@@ -28,9 +28,18 @@ int libc_stdio_set_console(const char* device_name, int mode)
     snprintf(name, sizeof(name) - 1, "/dev/%s", device_name);
     name[STDIO_DEVICE_NAME_MAX - 1] = '\0';
 
-    if (mode == O_RDWR) file_mode = "r+";
-    else if (mode == O_WRONLY) file_mode = "wb";
-    else file_mode = "rb";
+    if (mode == O_RDWR)
+    {
+        file_mode = "r+";
+    }
+    else if (mode == O_WRONLY)
+    {
+        file_mode = "wb";
+    }
+    else
+    {
+        file_mode = "rb";
+    }
 
     fp = fopen(name, file_mode);
     if (fp)
@@ -79,3 +88,35 @@ int libc_stdio_get_console(void)
     else
         return -1;
 }
+
+#elif defined(RT_USING_POSIX)
+#include <unistd.h>
+static int std_fd = -1;
+
+int libc_stdio_set_console(const char* device_name, int mode)
+{
+    int fd;
+    char name[STDIO_DEVICE_NAME_MAX];
+
+    snprintf(name, sizeof(name) - 1, "/dev/%s", device_name);
+    name[STDIO_DEVICE_NAME_MAX - 1] = '\0';
+
+    fd = open(name, mode, 0);
+    if (fd >= 0)
+    {
+        if (std_fd >= 0)
+        {
+            close(std_fd);
+        }
+        std_fd = fd;
+    }
+
+    return std_fd;
+}
+
+int libc_stdio_get_console(void)
+{
+    return std_fd;
+}
+
+#endif /* RT_LIBC_USING_FILEIO */

+ 68 - 96
components/libc/compilers/gcc/newlib/syscalls.c

@@ -13,9 +13,16 @@
 
 #include <reent.h>
 #include <rtthread.h>
+#include <stdio.h>
 #include <stddef.h>
+#include <fcntl.h>
 #include <unistd.h>
 #include <sys/errno.h>
+#include <sys/stat.h>
+#include "libc.h"
+#ifdef RT_USING_MODULE
+#include <dlmodule.h>
+#endif
 
 #define DBG_TAG    "newlib.syscalls"
 #define DBG_LVL    DBG_INFO
@@ -83,18 +90,8 @@ void __libc_init_array(void)
 }
 
 #ifdef RT_USING_LIBC
-#include <reent.h>
-#include <stdio.h>
-#include "libc.h"
-#ifdef RT_USING_DFS
-#include <dfs_posix.h>
-#endif
-#ifdef RT_USING_MODULE
-#include <dlmodule.h>
-#endif
 
 /* Reentrant versions of system calls.  */
-
 #ifndef _REENT_ONLY
 int *__errno ()
 {
@@ -109,39 +106,29 @@ int _getpid_r(struct _reent *ptr)
 
 int _close_r(struct _reent *ptr, int fd)
 {
-#ifndef RT_USING_DFS
-    /* return "not supported" */
-    ptr->_errno = ENOTSUP;
-    return -1;
-#else
     return close(fd);
-#endif
 }
 
 int _execve_r(struct _reent *ptr, const char * name, char *const *argv, char *const *env)
 {
-    /* return "not supported" */
     ptr->_errno = ENOTSUP;
     return -1;
 }
 
 int _fcntl_r(struct _reent *ptr, int fd, int cmd, int arg)
 {
-    /* return "not supported" */
     ptr->_errno = ENOTSUP;
     return -1;
 }
 
 int _fork_r(struct _reent *ptr)
 {
-    /* return "not supported" */
     ptr->_errno = ENOTSUP;
     return -1;
 }
 
 int _fstat_r(struct _reent *ptr, int fd, struct stat *pstat)
 {
-    /* return "not supported" */
     ptr->_errno = ENOTSUP;
     return -1;
 }
@@ -160,67 +147,74 @@ int _isatty_r(struct _reent *ptr, int fd)
 
 int _kill_r(struct _reent *ptr, int pid, int sig)
 {
-    /* return "not supported" */
     ptr->_errno = ENOTSUP;
     return -1;
 }
 
 int _link_r(struct _reent *ptr, const char *old, const char *new)
 {
-    /* return "not supported" */
     ptr->_errno = ENOTSUP;
     return -1;
 }
 
-_off_t _lseek_r(struct _reent *ptr, int fd, _off_t pos, int whence)
+int _wait_r(struct _reent *ptr, int *status)
 {
-#ifndef RT_USING_DFS
-    /* return "not supported" */
     ptr->_errno = ENOTSUP;
     return -1;
-#else
+}
+
+mode_t umask(mode_t mask)
+{
+    return 022;
+}
+
+int flock(int fd, int operation)
+{
+    return 0;
+}
+
+_off_t _lseek_r(struct _reent *ptr, int fd, _off_t pos, int whence)
+{
+#ifdef RT_LIBC_USING_FILEIO
     _off_t rc;
 
     rc = lseek(fd, pos, whence);
     return rc;
-#endif
+#else
+    ptr->_errno = ENOTSUP;
+    return -1;
+#endif /* RT_LIBC_USING_FILEIO */
 }
 
 int _mkdir_r(struct _reent *ptr, const char *name, int mode)
 {
-#ifndef RT_USING_DFS
-    /* return "not supported" */
-    ptr->_errno = ENOTSUP;
-    return -1;
-#else
+#ifdef RT_LIBC_USING_FILEIO
     int rc;
 
     rc = mkdir(name, mode);
     return rc;
-#endif
+#else
+    ptr->_errno = ENOTSUP;
+    return -1;
+#endif /* RT_LIBC_USING_FILEIO */
 }
 
 int _open_r(struct _reent *ptr, const char *file, int flags, int mode)
 {
-#ifndef RT_USING_DFS
-    /* return "not supported" */
-    ptr->_errno = ENOTSUP;
-    return -1;
-#else
+#ifdef RT_LIBC_USING_FILEIO
     int rc;
 
     rc = open(file, flags, mode);
     return rc;
-#endif
+#else
+    ptr->_errno = ENOTSUP;
+    return -1;
+#endif /* RT_LIBC_USING_FILEIO */
 }
 
 _ssize_t _read_r(struct _reent *ptr, int fd, void *buf, size_t nbytes)
 {
-#ifndef RT_USING_DFS
-    /* return "not supported" */
-    ptr->_errno = ENOTSUP;
-    return -1;
-#else
+#ifdef RT_LIBC_USING_FILEIO
     _ssize_t rc;
     if (libc_stdio_get_console() < 0 && fd == STDIN_FILENO)
     {
@@ -229,74 +223,51 @@ _ssize_t _read_r(struct _reent *ptr, int fd, void *buf, size_t nbytes)
     }
     rc = read(fd, buf, nbytes);
     return rc;
-#endif
+#else
+    ptr->_errno = ENOTSUP;
+    return -1;
+#endif /* RT_LIBC_USING_FILEIO */
 }
 
 int _rename_r(struct _reent *ptr, const char *old, const char *new)
 {
-#ifndef RT_USING_DFS
-    /* return "not supported" */
-    ptr->_errno = ENOTSUP;
-    return -1;
-#else
+#ifdef RT_LIBC_USING_FILEIO
     int rc;
 
     rc = rename(old, new);
     return rc;
-#endif
+#else
+    ptr->_errno = ENOTSUP;
+    return -1;
+#endif /* RT_LIBC_USING_FILEIO */
 }
 
 int _stat_r(struct _reent *ptr, const char *file, struct stat *pstat)
 {
-#ifndef RT_USING_DFS
-    /* return "not supported" */
-    ptr->_errno = ENOTSUP;
-    return -1;
-#else
+#ifdef RT_LIBC_USING_FILEIO
     int rc;
 
     rc = stat(file, pstat);
     return rc;
-#endif
-}
-
-int _unlink_r(struct _reent *ptr, const char *file)
-{
-#ifndef RT_USING_DFS
-    /* return "not supported" */
+#else
     ptr->_errno = ENOTSUP;
     return -1;
-#else
-    return unlink(file);
-#endif
+#endif /* RT_LIBC_USING_FILEIO */
 }
 
-int _wait_r(struct _reent *ptr, int *status)
+int _unlink_r(struct _reent *ptr, const char *file)
 {
-    /* return "not supported" */
+#ifdef RT_LIBC_USING_FILEIO
+    return unlink(file);
+#else
     ptr->_errno = ENOTSUP;
     return -1;
+#endif /* RT_LIBC_USING_FILEIO */
 }
 
 _ssize_t _write_r(struct _reent *ptr, int fd, const void *buf, size_t nbytes)
 {
-#ifndef RT_USING_DFS
-#if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE)
-    if (STDOUT_FILENO == fd)
-    {
-        rt_device_t console;
-
-        console = rt_console_get_device();
-        if (console) return rt_device_write(console, -1, buf, nbytes);
-    }
-
-    return 0;
-#else
-    /* return "not supported" */
-    ptr->_errno = ENOTSUP;
-    return -1;
-#endif /*RT_USING_DEVICE*/
-#else
+#ifdef RT_LIBC_USING_FILEIO
     _ssize_t rc;
     if (libc_stdio_get_console() < 0 && fd == STDOUT_FILENO)
     {
@@ -305,7 +276,18 @@ _ssize_t _write_r(struct _reent *ptr, int fd, const void *buf, size_t nbytes)
     }
     rc = write(fd, buf, nbytes);
     return rc;
-#endif
+#elif defined(RT_USING_CONSOLE)
+    if (STDOUT_FILENO == fd)
+    {
+        rt_device_t console;
+
+        console = rt_console_get_device();
+        if (console)
+            return rt_device_write(console, -1, buf, nbytes);
+    }
+#endif /* RT_LIBC_USING_FILEIO */
+    ptr->_errno = ENOTSUP;
+    return -1;
 }
 
 /* for exit() and abort() */
@@ -316,16 +298,6 @@ __attribute__ ((noreturn)) void _exit (int status)
     while(1);
 }
 
-mode_t umask(mode_t mask)
-{
-    return 022;
-}
-
-int flock(int fd, int operation)
-{
-    return 0;
-}
-
 /*
 These functions are implemented and replaced by the 'common/time.c' file
 int _gettimeofday_r(struct _reent *ptr, struct timeval *__tp, void *__tzp);

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно