xuxinyi 6 kuukautta sitten
commit
fe1d0d42b0
59 muutettua tiedostoa jossa 3862 lisäystä ja 0 poistoa
  1. 245 0
      QS-100/.config
  2. 255 0
      QS-100/.config.old
  3. 9 0
      QS-100/.gitignore
  4. 46 0
      QS-100/Kconfig
  5. 13 0
      QS-100/QS100_mv.py
  6. 14 0
      QS-100/SConscript
  7. 37 0
      QS-100/SConstruct
  8. 28 0
      QS-100/applications/SConscript
  9. 65 0
      QS-100/applications/inc/fal_cfg.h
  10. 28 0
      QS-100/applications/inc/fs_cfg.h
  11. 177 0
      QS-100/applications/inc/zos_config.h
  12. 10 0
      QS-100/applications/inc/zos_main.h
  13. 107 0
      QS-100/applications/src/demo_network.c
  14. 170 0
      QS-100/applications/src/zos_main.c
  15. 26 0
      QS-100/libraries/SConscript
  16. BIN
      QS-100/libraries/libapplib_gcc.a
  17. BIN
      QS-100/libraries/libarch_gcc.a
  18. BIN
      QS-100/libraries/libhal_drivers_gcc.a
  19. BIN
      QS-100/libraries/libhal_kernel_gcc.a
  20. BIN
      QS-100/libraries/libsysapp_gcc.a
  21. BIN
      QS-100/libraries/libuserapp_gcc.a
  22. BIN
      QS-100/libraries/libzos_ota_gcc.a
  23. 25 0
      QS-100/libraries/link/mem.ld
  24. 400 0
      QS-100/libraries/link/sections.ld
  25. 87 0
      QS-100/osconfig.py
  26. BIN
      QS-100/requirements.txt
  27. 168 0
      QS-100/zos.py
  28. 309 0
      QS-200/.config
  29. 342 0
      QS-200/.config.old
  30. 9 0
      QS-200/.gitignore
  31. 43 0
      QS-200/Kconfig
  32. 11 0
      QS-200/QS200_mv.py
  33. 14 0
      QS-200/SConscript
  34. 37 0
      QS-200/SConstruct
  35. 28 0
      QS-200/applications/SConscript
  36. 65 0
      QS-200/applications/inc/fal_cfg.h
  37. 28 0
      QS-200/applications/inc/fs_cfg.h
  38. 228 0
      QS-200/applications/inc/zos_config.h
  39. 10 0
      QS-200/applications/inc/zos_main.h
  40. 233 0
      QS-200/applications/src/zos_main.c
  41. 1 0
      QS-200/cfg/.gitignore
  42. 14 0
      QS-200/cfg/SConscript
  43. 21 0
      QS-200/cfg/flash_partition_cfg.json
  44. 36 0
      QS-200/cfg/peripheral_test.sct
  45. 12 0
      QS-200/cfg/peripheral_test_ram_run.sct
  46. 120 0
      QS-200/cfg/proj_config.h
  47. 10 0
      QS-200/cfg/ram_run_ln882h.ini
  48. 28 0
      QS-200/libraries/SConscript
  49. BIN
      QS-200/libraries/lib/boot_QS200.bin
  50. BIN
      QS-200/libraries/libarm_cortexM4lf_math.a
  51. BIN
      QS-200/libraries/libhal_drivers_gcc.a
  52. BIN
      QS-200/libraries/libln882h_ble_full_stack.a
  53. BIN
      QS-200/libraries/libln882h_wifi.a
  54. BIN
      QS-200/libraries/libuserapp_gcc.a
  55. BIN
      QS-200/libraries/libzos_ota_gcc.a
  56. 187 0
      QS-200/libraries/link/ln882h.ld
  57. 86 0
      QS-200/osconfig.py
  58. BIN
      QS-200/requirements.txt
  59. 80 0
      QS-200/zos.py

+ 245 - 0
QS-100/.config

@@ -0,0 +1,245 @@
+CONFIG___ZEUSOS__=y
+CONFIG_VENDOR_USING_QS100=y
+CONFIG_BSP_USING_FLASH_LEN=16
+CONFIG_BSP_USING_FLASH_BLOCK_SIZE=4
+CONFIG_BSP_USING_FLASH_WRITE_GRAN=8
+CONFIG_ZOS_TICK_PER_SECOND=1000
+
+#
+# On-chip Peripheral Drivers
+#
+
+#
+# hardware
+#
+CONFIG_BSP_USING_CONSOLE=y
+CONFIG_BSP_CONSOLE_DEVICE_NAME="uart0"
+CONFIG_BSP_CONSOLE_DEVICE_BAUD=115200
+CONFIG_BSP_CONSOLE_DEVICE_RECV_BUFFER_SIZE=128
+CONFIG_BSP_USING_PIN=y
+CONFIG_BSP_USING_UART=y
+CONFIG_BSP_USING_UART0=y
+CONFIG_BSP_USING_UART1=y
+CONFIG_BSP_USING_UART2=y
+CONFIG_BSP_USING_I2C=y
+CONFIG_BSP_USING_I2C0=y
+CONFIG_BSP_USING_SPI=y
+CONFIG_BSP_USING_SPI0=y
+CONFIG_BSP_USING_PWM=y
+CONFIG_BSP_USING_PWM0=y
+CONFIG_BSP_USING_PWM0_PIN=13
+CONFIG_BSP_USING_PM=y
+CONFIG_BSP_USING_PM_DTIMER=y
+CONFIG_BSP_USING_RTC=y
+CONFIG_BSP_USING_RTC_ALARM=y
+CONFIG_BSP_USING_FLASH=y
+CONFIG_BSP_USING_ADC=y
+CONFIG_BSP_USING_ADC0=y
+CONFIG_BSP_USING_MO=y
+# end of hardware
+# end of On-chip Peripheral Drivers
+
+#
+# drivers
+#
+# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
+# CONFIG_PKG_USING_BH1750 is not set
+# CONFIG_PKG_USING_EC11 is not set
+# CONFIG_PKG_USING_SPI_LCD is not set
+# CONFIG_PKG_USING_MPU6XXX is not set
+# CONFIG_PKG_USING_OLED is not set
+# CONFIG_PKG_USING_SFUD is not set
+# CONFIG_PKG_USING_SHT2X is not set
+# CONFIG_PKG_USING_SHT3X is not set
+# CONFIG_PKG_USING_TOUCH is not set
+# end of drivers
+
+#
+# kernel
+#
+# CONFIG_ZOS_NAME_MAX_7 is not set
+CONFIG_ZOS_NAME_MAX_15=y
+# CONFIG_ZOS_NAME_MAX_31 is not set
+CONFIG_ZOS_NAME_MAX=15
+
+#
+# Inter-task communication and synchronization
+#
+CONFIG_ZOS_USING_MUTEX=y
+CONFIG_ZOS_USING_SEMAPHORE=y
+CONFIG_ZOS_USING_EVENT=y
+CONFIG_ZOS_USING_MESSAGEQUEUE=y
+# end of Inter-task communication and synchronization
+
+CONFIG_ZOS_USING_DLOG=y
+CONFIG_ZOS_DLOG_BUF_SIZE=1024
+CONFIG_ZOS_DLOG_ENABLE_COLOR=y
+CONFIG_PKG_VSNPRINTF_SUPPORT_DECIMAL_SPECIFIERS=y
+CONFIG_PKG_VSNPRINTF_SUPPORT_EXPONENTIAL_SPECIFIERS=y
+CONFIG_PKG_VSNPRINTF_SUPPORT_WRITEBACK_SPECIFIER=y
+CONFIG_PKG_VSNPRINTF_SUPPORT_LONG_LONG=y
+CONFIG_PKG_VSNPRINTF_CHECK_FOR_NUL_IN_FORMAT_SPECIFIER=y
+# CONFIG_PKG_VSNPRINTF_SUPPORT_MSVC_STYLE_INTEGER_SPECIFIERS is not set
+CONFIG_PKG_VSNPRINTF_INTEGER_BUFFER_SIZE=32
+CONFIG_PKG_VSNPRINTF_DECIMAL_BUFFER_SIZE=32
+CONFIG_PKG_VSNPRINTF_DEFAULT_FLOAT_PRECISION=6
+CONFIG_PKG_VSNPRINTF_MAX_INTEGRAL_DIGITS_FOR_DECIMAL=9
+CONFIG_PKG_VSNPRINTF_LOG10_TAYLOR_TERMS=4
+CONFIG_ZOS_USING_KERNEL_DEBUG=y
+# CONFIG_KLOG_GLOBAL_LEVEL_ERROR is not set
+CONFIG_KLOG_GLOBAL_LEVEL_WARNING=y
+# CONFIG_KLOG_GLOBAL_LEVEL_INFO is not set
+# CONFIG_KLOG_GLOBAL_LEVEL_DEBUG is not set
+CONFIG_KLOG_GLOBAL_LEVEL=1
+CONFIG_KLOG_USING_COLOR=y
+CONFIG_KLOG_WITH_FUNC_LINE=y
+# end of kernel
+
+#
+# components
+#
+
+#
+# AI
+#
+# CONFIG_PKG_USING_TINYMAIX is not set
+# end of AI
+
+#
+# Cloud
+#
+# CONFIG_PKG_USING_HTTP_CLIENT is not set
+# CONFIG_PKG_USING_MQTTCLIENT is not set
+# CONFIG_PKG_USING_ONENETCLOUD is not set
+# end of Cloud
+
+#
+# File system
+#
+# CONFIG_PKG_USING_FLASHDB is not set
+CONFIG_PKG_USING_FAL=y
+CONFIG_FAL_DEBUG_CONFIG=y
+CONFIG_FAL_DEBUG=1
+CONFIG_FAL_PART_HAS_TABLE_CFG=y
+# CONFIG_FAL_USING_SFUD_PORT is not set
+CONFIG_ZOS_USING_VFS=y
+CONFIG_VFS_MOUNTPOINT_MAX=4
+CONFIG_VFS_FILESYSTEM_TYPES_MAX=4
+CONFIG_VFS_FD_MAX=16
+CONFIG_ZOS_USING_AUTO_MOUNT=y
+# CONFIG_ZOS_USING_VFS_DEVFS is not set
+CONFIG_ZOS_USING_VFS_LFS=y
+
+#
+# Little filesystem module
+#
+CONFIG_LFS_NAME_MAX=255
+CONFIG_LFS_FILE_MAX=512
+CONFIG_LFS_LOOKAHEAD_SIZE=8
+CONFIG_LFS_THREADSAFE=y
+# end of Little filesystem module
+
+CONFIG_ZOS_USING_VFS_SHELL_CMD=y
+# CONFIG_ZOS_USING_VFS_USING_SPI_FLASH is not set
+# end of File system
+
+#
+# GUI
+#
+# CONFIG_PKG_USING_LVGL is not set
+# end of GUI
+
+#
+# IoT
+#
+# CONFIG_PKG_USING_AT is not set
+# CONFIG_PKG_USING_NETUTILS is not set
+# end of IoT
+
+#
+# Language
+#
+CONFIG_PKG_USING_CJSON=y
+# end of Language
+
+#
+# C standard library adapter
+#
+CONFIG_ZOS_USING_LIBC_ADAPTER=y
+CONFIG_ZOS_USING_NEWLIB_ADAPTER=y
+CONFIG_ZOS_USING_ARMCCLIB_ADAPTER=y
+# end of C standard library adapter
+
+# CONFIG_ZOS_USING_OTA is not set
+
+#
+# security
+#
+CONFIG_PKG_USING_ZOS_CRYPTO=y
+
+#
+# mbedtls
+#
+CONFIG_SECURITY_USING_MBEDTLS=y
+CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384
+CONFIG_MBEDTLS_HAVE_TIME=y
+# CONFIG_MBEDTLS_DEBUG_C is not set
+# CONFIG_MBEDTLS_SSL_SRV_C is not set
+CONFIG_MBEDTLS_SSL_PROTO_DTLS=y
+CONFIG_MBEDTLS_SSL_DTLS_ANTI_REPLAY=y
+CONFIG_MBEDTLS_SSL_DTLS_HELLO_VERIFY=y
+# end of mbedtls
+# end of security
+
+#
+# utils
+#
+
+#
+# Shell
+#
+CONFIG_ZOS_USING_SHELL=y
+CONFIG_SHELL_TASK_NAME="shell"
+CONFIG_SHELL_TASK_PRIORITY=13
+CONFIG_SHELL_TASK_STACK_SIZE=2048
+CONFIG_SHELL_USING_HISTORY=y
+CONFIG_SHELL_HISTORY_LINES=5
+CONFIG_SHELL_USING_DESCRIPTION=y
+# CONFIG_SHELL_ECHO_DISABLE_DEFAULT is not set
+CONFIG_SHELL_CMD_SIZE=80
+CONFIG_SHELL_PROMPT_SIZE=256
+CONFIG_SHELL_ARG_MAX=10
+# CONFIG_SHELL_USING_AUTH is not set
+# end of Shell
+# end of utils
+# end of components
+
+#
+# SDK DEMO Config
+#
+# CONFIG_BSP_USING_ZeusOS_DEMO is not set
+# CONFIG_BSP_USING_HARDWARE_DEMO is not set
+# CONFIG_BSP_USING_ClOUD_DEMO is not set
+# CONFIG_BSP_USING_MQTT_DEMO is not set
+# CONFIG_BSP_USING_SLEEP_DEMO is not set
+# CONFIG_BSP_USING_HTTP_DEMO is not set
+# CONFIG_BSP_USING_HTTP_FOTA is not set
+# CONFIG_BSP_USING_SFUD_DEMO is not set
+# CONFIG_BSP_USING_FAL_DEMO is not set
+# CONFIG_BSP_USING_VFS_DEMO is not set
+# CONFIG_BSP_USING_FLASHDB_DEMO is not set
+# CONFIG_BSP_USING_LVGL_DEMO is not set
+# end of SDK DEMO Config
+
+#
+# QS-100 DEMO Config
+#
+# CONFIG_BSP_USING_CTIOT_DEMO is not set
+# CONFIG_BSP_USING_CMIOT_DEMO is not set
+# end of QS-100 DEMO Config
+
+#
+# Cloud platform configuration
+#
+# CONFIG_PKG_USING_CMIOT is not set
+# end of Cloud platform configuration

+ 255 - 0
QS-100/.config.old

@@ -0,0 +1,255 @@
+CONFIG___ZEUSOS__=y
+CONFIG_VENDOR_USING_QS100=y
+CONFIG_BSP_USING_FLASH_LEN=16
+CONFIG_BSP_USING_FLASH_BLOCK_SIZE=4
+CONFIG_BSP_USING_FLASH_WRITE_GRAN=8
+CONFIG_ZOS_TICK_PER_SECOND=1000
+
+#
+# On-chip Peripheral Drivers
+#
+
+#
+# hardware
+#
+CONFIG_BSP_USING_CONSOLE=y
+CONFIG_BSP_CONSOLE_DEVICE_NAME="uart0"
+CONFIG_BSP_CONSOLE_DEVICE_BAUD=115200
+CONFIG_BSP_CONSOLE_DEVICE_RECV_BUFFER_SIZE=128
+CONFIG_BSP_USING_PIN=y
+CONFIG_BSP_USING_UART=y
+CONFIG_BSP_USING_UART0=y
+CONFIG_BSP_USING_UART1=y
+CONFIG_BSP_USING_UART2=y
+CONFIG_BSP_USING_I2C=y
+CONFIG_BSP_USING_I2C0=y
+CONFIG_BSP_USING_SPI=y
+CONFIG_BSP_USING_SPI0=y
+CONFIG_BSP_USING_PWM=y
+CONFIG_BSP_USING_PWM0=y
+CONFIG_BSP_USING_PWM0_PIN=13
+CONFIG_BSP_USING_PM=y
+CONFIG_BSP_USING_PM_DTIMER=y
+CONFIG_BSP_USING_RTC=y
+CONFIG_BSP_USING_RTC_ALARM=y
+CONFIG_BSP_USING_FLASH=y
+CONFIG_BSP_USING_ADC=y
+CONFIG_BSP_USING_ADC0=y
+CONFIG_BSP_USING_MO=y
+# end of hardware
+# end of On-chip Peripheral Drivers
+
+#
+# drivers
+#
+# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
+# CONFIG_PKG_USING_BH1750 is not set
+# CONFIG_PKG_USING_EC11 is not set
+# CONFIG_PKG_USING_SPI_LCD is not set
+# CONFIG_PKG_USING_MPU6XXX is not set
+# CONFIG_PKG_USING_OLED is not set
+# CONFIG_PKG_USING_SFUD is not set
+# CONFIG_PKG_USING_SHT2X is not set
+# CONFIG_PKG_USING_SHT3X is not set
+# CONFIG_PKG_USING_TOUCH is not set
+# end of drivers
+
+#
+# kernel
+#
+# CONFIG_ZOS_NAME_MAX_7 is not set
+CONFIG_ZOS_NAME_MAX_15=y
+# CONFIG_ZOS_NAME_MAX_31 is not set
+CONFIG_ZOS_NAME_MAX=15
+
+#
+# Inter-task communication and synchronization
+#
+CONFIG_ZOS_USING_MUTEX=y
+CONFIG_ZOS_USING_SEMAPHORE=y
+CONFIG_ZOS_USING_EVENT=y
+CONFIG_ZOS_USING_MESSAGEQUEUE=y
+# end of Inter-task communication and synchronization
+
+CONFIG_ZOS_USING_DLOG=y
+CONFIG_ZOS_DLOG_BUF_SIZE=1024
+CONFIG_ZOS_DLOG_ENABLE_COLOR=y
+CONFIG_PKG_VSNPRINTF_SUPPORT_DECIMAL_SPECIFIERS=y
+CONFIG_PKG_VSNPRINTF_SUPPORT_EXPONENTIAL_SPECIFIERS=y
+CONFIG_PKG_VSNPRINTF_SUPPORT_WRITEBACK_SPECIFIER=y
+CONFIG_PKG_VSNPRINTF_SUPPORT_LONG_LONG=y
+CONFIG_PKG_VSNPRINTF_CHECK_FOR_NUL_IN_FORMAT_SPECIFIER=y
+# CONFIG_PKG_VSNPRINTF_SUPPORT_MSVC_STYLE_INTEGER_SPECIFIERS is not set
+CONFIG_PKG_VSNPRINTF_INTEGER_BUFFER_SIZE=32
+CONFIG_PKG_VSNPRINTF_DECIMAL_BUFFER_SIZE=32
+CONFIG_PKG_VSNPRINTF_DEFAULT_FLOAT_PRECISION=6
+CONFIG_PKG_VSNPRINTF_MAX_INTEGRAL_DIGITS_FOR_DECIMAL=9
+CONFIG_PKG_VSNPRINTF_LOG10_TAYLOR_TERMS=4
+CONFIG_ZOS_USING_KERNEL_DEBUG=y
+# CONFIG_KLOG_GLOBAL_LEVEL_ERROR is not set
+CONFIG_KLOG_GLOBAL_LEVEL_WARNING=y
+# CONFIG_KLOG_GLOBAL_LEVEL_INFO is not set
+# CONFIG_KLOG_GLOBAL_LEVEL_DEBUG is not set
+CONFIG_KLOG_GLOBAL_LEVEL=1
+CONFIG_KLOG_USING_COLOR=y
+CONFIG_KLOG_WITH_FUNC_LINE=y
+# end of kernel
+
+#
+# components
+#
+
+#
+# AI
+#
+# CONFIG_PKG_USING_TINYMAIX is not set
+# end of AI
+
+#
+# Cloud
+#
+CONFIG_PKG_USING_HTTP_CLIENT=y
+# CONFIG_HTTP_CLIENT_USING_SECURE is not set
+# CONFIG_HTTP_CLIENT_DEBUG is not set
+CONFIG_HTTP_CLIENT_AUTHB_SIZE=128
+CONFIG_HTTP_CLIENT_CHUNK_SIZE=1024
+CONFIG_HTTP_CLIENT_SEND_BUF_SIZE=1024
+CONFIG_HTTP_CLIENT_MAX_HOST_LEN=128
+CONFIG_HTTP_CLIENT_MAX_URL_LEN=512
+CONFIG_HTTP_CLIENT_MAX_RECV_WAIT_MS=5000
+CONFIG_HTTP_PORT=80
+CONFIG_HTTPS_PORT=443
+# CONFIG_PKG_USING_MQTTCLIENT is not set
+# CONFIG_PKG_USING_ONENETCLOUD is not set
+# end of Cloud
+
+#
+# File system
+#
+# CONFIG_PKG_USING_FLASHDB is not set
+CONFIG_PKG_USING_FAL=y
+CONFIG_FAL_DEBUG_CONFIG=y
+CONFIG_FAL_DEBUG=1
+CONFIG_FAL_PART_HAS_TABLE_CFG=y
+# CONFIG_FAL_USING_SFUD_PORT is not set
+CONFIG_ZOS_USING_VFS=y
+CONFIG_VFS_MOUNTPOINT_MAX=4
+CONFIG_VFS_FILESYSTEM_TYPES_MAX=4
+CONFIG_VFS_FD_MAX=16
+CONFIG_ZOS_USING_AUTO_MOUNT=y
+# CONFIG_ZOS_USING_VFS_DEVFS is not set
+CONFIG_ZOS_USING_VFS_LFS=y
+
+#
+# Little filesystem module
+#
+CONFIG_LFS_NAME_MAX=255
+CONFIG_LFS_FILE_MAX=512
+CONFIG_LFS_LOOKAHEAD_SIZE=8
+CONFIG_LFS_THREADSAFE=y
+# end of Little filesystem module
+
+CONFIG_ZOS_USING_VFS_SHELL_CMD=y
+# CONFIG_ZOS_USING_VFS_USING_SPI_FLASH is not set
+# end of File system
+
+#
+# GUI
+#
+# CONFIG_PKG_USING_LVGL is not set
+# end of GUI
+
+#
+# IoT
+#
+# CONFIG_PKG_USING_AT is not set
+# CONFIG_PKG_USING_NETUTILS is not set
+# end of IoT
+
+#
+# Language
+#
+CONFIG_PKG_USING_CJSON=y
+# end of Language
+
+#
+# C standard library adapter
+#
+CONFIG_ZOS_USING_LIBC_ADAPTER=y
+CONFIG_ZOS_USING_NEWLIB_ADAPTER=y
+CONFIG_ZOS_USING_ARMCCLIB_ADAPTER=y
+# end of C standard library adapter
+
+CONFIG_ZOS_USING_OTA=y
+
+#
+# security
+#
+CONFIG_PKG_USING_ZOS_CRYPTO=y
+
+#
+# mbedtls
+#
+CONFIG_SECURITY_USING_MBEDTLS=y
+CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384
+CONFIG_MBEDTLS_HAVE_TIME=y
+# CONFIG_MBEDTLS_DEBUG_C is not set
+# CONFIG_MBEDTLS_SSL_SRV_C is not set
+CONFIG_MBEDTLS_SSL_PROTO_DTLS=y
+CONFIG_MBEDTLS_SSL_DTLS_ANTI_REPLAY=y
+CONFIG_MBEDTLS_SSL_DTLS_HELLO_VERIFY=y
+# end of mbedtls
+# end of security
+
+#
+# utils
+#
+
+#
+# Shell
+#
+CONFIG_ZOS_USING_SHELL=y
+CONFIG_SHELL_TASK_NAME="shell"
+CONFIG_SHELL_TASK_PRIORITY=13
+CONFIG_SHELL_TASK_STACK_SIZE=2048
+CONFIG_SHELL_USING_HISTORY=y
+CONFIG_SHELL_HISTORY_LINES=5
+CONFIG_SHELL_USING_DESCRIPTION=y
+# CONFIG_SHELL_ECHO_DISABLE_DEFAULT is not set
+CONFIG_SHELL_CMD_SIZE=80
+CONFIG_SHELL_PROMPT_SIZE=256
+CONFIG_SHELL_ARG_MAX=10
+# CONFIG_SHELL_USING_AUTH is not set
+# end of Shell
+# end of utils
+# end of components
+
+#
+# SDK DEMO Config
+#
+# CONFIG_BSP_USING_ZeusOS_DEMO is not set
+# CONFIG_BSP_USING_HARDWARE_DEMO is not set
+# CONFIG_BSP_USING_ClOUD_DEMO is not set
+# CONFIG_BSP_USING_MQTT_DEMO is not set
+# CONFIG_BSP_USING_SLEEP_DEMO is not set
+# CONFIG_BSP_USING_HTTP_DEMO is not set
+# CONFIG_BSP_USING_HTTP_FOTA is not set
+# CONFIG_BSP_USING_SFUD_DEMO is not set
+# CONFIG_BSP_USING_FAL_DEMO is not set
+# CONFIG_BSP_USING_VFS_DEMO is not set
+# CONFIG_BSP_USING_FLASHDB_DEMO is not set
+# CONFIG_BSP_USING_LVGL_DEMO is not set
+# end of SDK DEMO Config
+
+#
+# QS-100 DEMO Config
+#
+# CONFIG_BSP_USING_CTIOT_DEMO is not set
+# CONFIG_BSP_USING_CMIOT_DEMO is not set
+# end of QS-100 DEMO Config
+
+#
+# Cloud platform configuration
+#
+# CONFIG_PKG_USING_CMIOT is not set
+# end of Cloud platform configuration

+ 9 - 0
QS-100/.gitignore

@@ -0,0 +1,9 @@
+demo
+firmware
+build
+__pycache__
+hook
+iot
+tools
+.sconsign.dblite
+cconfig.h

+ 46 - 0
QS-100/Kconfig

@@ -0,0 +1,46 @@
+mainmenu "ZeusOS Configuration"
+#Define the relative path to root directory of os code
+OS_ROOT=../..
+BSP_HAL=QS100
+
+config __ZEUSOS__
+    bool
+    default y
+    
+config VENDOR_USING_QS100
+    bool
+    select BSP_USING_PIN
+    select BSP_USING_UART
+    select BSP_USING_UART0
+    select BSP_USING_RTC
+    select BSP_USING_FLASH
+    select BSP_USING_MO
+    select MBEDTLS_HAVE_TIME
+    select ZOS_USING_DLOG
+    select SECURITY_USING_MBEDTLS
+    select PKG_USING_CJSON
+    select ZOS_USING_SHELL
+    default y
+config BSP_USING_FLASH_LEN
+    int 
+    default 16
+
+config BSP_USING_FLASH_BLOCK_SIZE
+    int 
+    default 4
+
+config BSP_USING_FLASH_WRITE_GRAN
+    int 
+    default 8
+
+config ZOS_TICK_PER_SECOND
+     int 
+     default 1000
+
+source "$OS_ROOT/base/Kconfig"
+source "$OS_ROOT/drivers/Kconfig"
+source "$OS_ROOT/kernel/Kconfig"
+source "$OS_ROOT/components/Kconfig"
+source "$OS_ROOT/demos/Kconfig"
+source "demo/Kconfig"
+source "iot/Kconfig"

+ 13 - 0
QS-100/QS100_mv.py

@@ -0,0 +1,13 @@
+import os
+import shutil
+vendor_file = os.getcwd()
+
+def remove_file():
+    shutil.move("./flash.bin", "./firmware/allbins")
+    shutil.move("./ram.bin", "./firmware/allbins")
+    shutil.move("./zos.map", "./firmware/allbins")
+    shutil.move("./zos.elf", "./firmware/allbins")
+
+if __name__ == '__main__':
+    remove_file()
+    print('SDK编译完成,正在生成固件')

+ 14 - 0
QS-100/SConscript

@@ -0,0 +1,14 @@
+# for module compiling
+import os
+Import('OS_ROOT')
+
+cwd = str(Dir('#'))
+objs = []
+list = os.listdir(cwd)
+
+for d in list:
+    path = os.path.join(cwd, d)
+    if os.path.isfile(os.path.join(path, 'SConscript')):
+        objs = objs + SConscript(os.path.join(d, 'SConscript'))
+
+Return('objs')

+ 37 - 0
QS-100/SConstruct

@@ -0,0 +1,37 @@
+import os
+import sys
+import osconfig
+
+if os.getenv('OS_ROOT'):
+    OS_ROOT = os.getenv('OS_ROOT')
+else:
+    OS_ROOT = os.path.normpath(os.getcwd() + './../../')
+
+sys.path = sys.path + [os.path.join(OS_ROOT, './tools/scripts')]
+try:
+    from build_tools import *
+except:
+    print('Cannot found zos root directory, please check OS_ROOT')
+    print(OS_ROOT)
+    exit(-1)
+
+RESULT = 'zos.' + osconfig.RESULT_SUFFIX
+
+env = Environment(tools = ['mingw'],
+    AS = osconfig.AS, ASFLAGS = osconfig.AFLAGS,
+    CC = osconfig.CC, CCFLAGS = osconfig.CFLAGS,
+    AR = osconfig.AR, ARFLAGS = '-rc',
+    CXX = osconfig.CXX, CXXFLAGS = osconfig.CXXFLAGS,
+    LINK = osconfig.LINK, LINKFLAGS = osconfig.LFLAGS)
+env.PrependENVPath('PATH', osconfig.COMPILER_PATH)
+
+Export('OS_ROOT')
+Export('osconfig')
+
+# prepare building environment
+objs = SetupCompile(env, OS_ROOT, has_libcpu=False)
+
+Import('kernel_vdir')
+
+# make a building
+StartCompile(RESULT, objs)

+ 28 - 0
QS-100/applications/SConscript

@@ -0,0 +1,28 @@
+from build_tools import *
+
+pwd  = PresentDir()
+
+src  = []
+src  += Glob('src/*.c')
+
+CPPPATH = [pwd + '/inc']
+
+
+if IsDefined(['PKG_USING_LVGL']):
+    src += Glob("lvgl/*.c")
+    CPPPATH += [pwd + '/lvgl']
+    #以下是gui guider 生成文件
+    CPPPATH += [pwd + '/custom']
+    CPPPATH += [pwd + '/generated']
+    CPPPATH += [pwd + '/guider_customer_fonts']
+    src  += Glob('custom/*.c')
+    src  += Glob('generated/*.c')
+    src  += Glob('generated/guider_fonts/*.c')
+    src  += Glob('generated/images/*.c')
+    
+
+group = AddCodeGroup('applications', src, depend = [''], CPPPATH = CPPPATH)
+
+Return("group")
+
+

+ 65 - 0
QS-100/applications/inc/fal_cfg.h

@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2006-2018, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2018-05-17     armink       the first version
+ */
+
+#ifndef _FAL_CFG_H_
+#define _FAL_CFG_H_
+
+#include <zos.h>
+#include <zos_config.h>
+
+
+/* ===================== Flash device Configuration ========================= */
+extern const struct fal_flash_dev zos_onchip_flash;
+
+#ifdef FAL_USING_SFUD_PORT
+#define NOR_FLASH_DEV_NAME             "norflash0"
+extern struct fal_flash_dev nor_flash0;
+#define FAL_FLASH_DEV_TABLE                                          \
+{                                                                    \
+    &zos_onchip_flash,                                               \
+    &nor_flash0,                                                     \
+}
+
+#else
+
+#define FAL_FLASH_DEV_TABLE                                          \
+{                                                                    \
+    &zos_onchip_flash,                                               \
+}
+#endif
+/* flash device table */
+
+/* ====================== Partition Configuration ========================== */
+#ifdef FAL_PART_HAS_TABLE_CFG
+
+
+#ifdef FAL_USING_SFUD_PORT
+
+#define FAL_PART_TABLE                                                               \
+{                                                                                    \
+    {FAL_PART_MAGIC_WORD, "filesystem",     "zos_onchip",          0,   BSP_USING_FLASH_LEN * 1024, 0}, \
+    {FAL_PART_MAGIC_WORD,   "easyflash", NOR_FLASH_DEV_NAME,         0, 20*1024, 0}, \
+    {FAL_PART_MAGIC_WORD,    "download", NOR_FLASH_DEV_NAME, 20*1024, 1024*1024, 0}, \
+}
+
+
+#else
+
+#define FAL_PART_TABLE                                                               \
+{                                                                                    \
+    {FAL_PART_MAGIC_WORD,        "filesystem",     "zos_onchip",          0,   BSP_USING_FLASH_LEN * 1024, 0}, \
+}
+
+#endif
+/* partition table */
+
+#endif /* FAL_PART_HAS_TABLE_CFG */
+
+#endif /* _FAL_CFG_H_ */

+ 28 - 0
QS-100/applications/inc/fs_cfg.h

@@ -0,0 +1,28 @@
+/**
+ ***********************************************************************************************************************
+ * Copyright (c) 2019-2029, ZeusOS Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ *
+ * @file        fs_cfg.c
+ *
+ * @brief       filesystem auto mount definition
+ *
+ * @revision
+ * Date         Author          Notes
+ * 2024-03-01   ZeusOS Team     Add ZeusOS adaptation layer
+ ***********************************************************************************************************************
+ */
+#include "vfs.h"
+const struct vfs_mountinfo fs_mount_info[] = {    
+    /*       point,          part,        fs_type,  auto_format */
+    {           "/", "filesystem",      "littlefs",              1},
+    // {           "/ef", "easyflash",      "littlefs",              1},
+};

+ 177 - 0
QS-100/applications/inc/zos_config.h

@@ -0,0 +1,177 @@
+#ifndef __ZOS_CONFIG_H__
+#define __ZOS_CONFIG_H__
+
+#define __ZEUSOS__
+#define VENDOR_USING_QS100
+#define BSP_USING_FLASH_LEN 16
+#define BSP_USING_FLASH_BLOCK_SIZE 4
+#define BSP_USING_FLASH_WRITE_GRAN 8
+#define ZOS_TICK_PER_SECOND 1000
+
+/* On-chip Peripheral Drivers */
+
+/* hardware */
+
+#define BSP_USING_CONSOLE
+#define BSP_CONSOLE_DEVICE_NAME "uart0"
+#define BSP_CONSOLE_DEVICE_BAUD 115200
+#define BSP_CONSOLE_DEVICE_RECV_BUFFER_SIZE 128
+#define BSP_USING_PIN
+#define BSP_USING_UART
+#define BSP_USING_UART0
+#define BSP_USING_UART1
+#define BSP_USING_UART2
+#define BSP_USING_I2C
+#define BSP_USING_I2C0
+#define BSP_USING_SPI
+#define BSP_USING_SPI0
+#define BSP_USING_PWM
+#define BSP_USING_PWM0
+#define BSP_USING_PWM0_PIN 13
+#define BSP_USING_PM
+#define BSP_USING_PM_DTIMER
+#define BSP_USING_RTC
+#define BSP_USING_RTC_ALARM
+#define BSP_USING_FLASH
+#define BSP_USING_ADC
+#define BSP_USING_ADC0
+#define BSP_USING_MO
+/* end of hardware */
+/* end of On-chip Peripheral Drivers */
+
+/* drivers */
+
+/* end of drivers */
+
+/* kernel */
+
+#define ZOS_NAME_MAX_15
+#define ZOS_NAME_MAX 15
+
+/* Inter-task communication and synchronization */
+
+#define ZOS_USING_MUTEX
+#define ZOS_USING_SEMAPHORE
+#define ZOS_USING_EVENT
+#define ZOS_USING_MESSAGEQUEUE
+/* end of Inter-task communication and synchronization */
+#define ZOS_USING_DLOG
+#define ZOS_DLOG_BUF_SIZE 1024
+#define ZOS_DLOG_ENABLE_COLOR
+#define PKG_VSNPRINTF_SUPPORT_DECIMAL_SPECIFIERS
+#define PKG_VSNPRINTF_SUPPORT_EXPONENTIAL_SPECIFIERS
+#define PKG_VSNPRINTF_SUPPORT_WRITEBACK_SPECIFIER
+#define PKG_VSNPRINTF_SUPPORT_LONG_LONG
+#define PKG_VSNPRINTF_CHECK_FOR_NUL_IN_FORMAT_SPECIFIER
+#define PKG_VSNPRINTF_INTEGER_BUFFER_SIZE 32
+#define PKG_VSNPRINTF_DECIMAL_BUFFER_SIZE 32
+#define PKG_VSNPRINTF_DEFAULT_FLOAT_PRECISION 6
+#define PKG_VSNPRINTF_MAX_INTEGRAL_DIGITS_FOR_DECIMAL 9
+#define PKG_VSNPRINTF_LOG10_TAYLOR_TERMS 4
+#define ZOS_USING_KERNEL_DEBUG
+#define KLOG_GLOBAL_LEVEL_WARNING
+#define KLOG_GLOBAL_LEVEL 1
+#define KLOG_USING_COLOR
+#define KLOG_WITH_FUNC_LINE
+/* end of kernel */
+
+/* components */
+
+/* AI */
+
+/* end of AI */
+
+/* Cloud */
+
+/* end of Cloud */
+
+/* File system */
+
+#define PKG_USING_FAL
+#define FAL_DEBUG_CONFIG
+#define FAL_DEBUG 1
+#define FAL_PART_HAS_TABLE_CFG
+#define ZOS_USING_VFS
+#define VFS_MOUNTPOINT_MAX 4
+#define VFS_FILESYSTEM_TYPES_MAX 4
+#define VFS_FD_MAX 16
+#define ZOS_USING_AUTO_MOUNT
+#define ZOS_USING_VFS_LFS
+
+/* Little filesystem module */
+
+#define LFS_NAME_MAX 255
+#define LFS_FILE_MAX 512
+#define LFS_LOOKAHEAD_SIZE 8
+#define LFS_THREADSAFE
+/* end of Little filesystem module */
+#define ZOS_USING_VFS_SHELL_CMD
+/* end of File system */
+
+/* GUI */
+
+/* end of GUI */
+
+/* IoT */
+
+/* end of IoT */
+
+/* Language */
+
+#define PKG_USING_CJSON
+/* end of Language */
+
+/* C standard library adapter */
+
+#define ZOS_USING_LIBC_ADAPTER
+#define ZOS_USING_NEWLIB_ADAPTER
+#define ZOS_USING_ARMCCLIB_ADAPTER
+/* end of C standard library adapter */
+
+/* security */
+
+#define PKG_USING_ZOS_CRYPTO
+
+/* mbedtls */
+
+#define SECURITY_USING_MBEDTLS
+#define MBEDTLS_SSL_MAX_CONTENT_LEN 16384
+#define MBEDTLS_HAVE_TIME
+#define MBEDTLS_SSL_PROTO_DTLS
+#define MBEDTLS_SSL_DTLS_ANTI_REPLAY
+#define MBEDTLS_SSL_DTLS_HELLO_VERIFY
+/* end of mbedtls */
+/* end of security */
+
+/* utils */
+
+/* Shell */
+
+#define ZOS_USING_SHELL
+#define SHELL_TASK_NAME "shell"
+#define SHELL_TASK_PRIORITY 13
+#define SHELL_TASK_STACK_SIZE 2048
+#define SHELL_USING_HISTORY
+#define SHELL_HISTORY_LINES 5
+#define SHELL_USING_DESCRIPTION
+#define SHELL_CMD_SIZE 80
+#define SHELL_PROMPT_SIZE 256
+#define SHELL_ARG_MAX 10
+/* end of Shell */
+/* end of utils */
+/* end of components */
+
+/* SDK DEMO Config */
+
+/* end of SDK DEMO Config */
+
+/* QS-100 DEMO Config */
+
+/* end of QS-100 DEMO Config */
+
+/* Cloud platform configuration */
+
+/* end of Cloud platform configuration */
+
+#endif /* __ZOS_CONFIG_H__ */
+

+ 10 - 0
QS-100/applications/inc/zos_main.h

@@ -0,0 +1,10 @@
+#ifndef __ZOS_MAIN_H__
+#define __ZOS_MAIN_H__
+
+#include "zos_util.h"
+
+
+zos_err_t mo_network_init(void); //Detect the network connection status, and return: ZOS_EOK, failure return: ZOS_ERROR
+
+#endif /* __ZOS_MAIN_H__ */
+

+ 107 - 0
QS-100/applications/src/demo_network.c

@@ -0,0 +1,107 @@
+#include "zos.h"
+#include "zos_config.h"
+#include "zos_mo.h"
+#include "sys/time.h"
+
+//检测网络是否连接成功,成功返回:ZOS_EOK,失败返回:ZOS_ERROR
+zos_err_t mo_network_init(void)
+{
+	zos_int8_t i = 60;
+	zos_uint8_t rssi,ber,cgact;
+	radio_info_t radio_info;
+	
+	char *str = ZOS_NULL;
+	str = zos_malloc(50);
+
+	zos_kprintf("nb power by psm:%d\r\n",zos_pm_get_poweron_from_deepsleep());
+	zos_kprintf("nb power type:%d\r\n",zos_pm_get_poweron_reason());
+	zos_kprintf("nb reset type:%d\r\n",zos_pm_get_reset_reason());
+	mo_get_imei(str,50);
+	str[15] = '\0';
+	zos_kprintf("IMEI = %s\r\n",str);
+	if(mo_get_imsi(str,50) != ZOS_EOK)
+	{
+		zos_kprintf("Please check the SIM card\r\n",str);
+		zos_free(str);
+		return ZOS_ERROR;
+	}
+	str[15] = '\0';
+	zos_kprintf("IMSI = %s\r\n",str);
+
+	mo_get_iccid(str,50);
+	str[20] = '\0';
+	zos_kprintf("ICCID = %s\r\n",str);
+	zos_free(str);
+	
+	do{
+		if(mo_get_csq(&rssi,&ber) == ZOS_EOK)
+		{
+			zos_kprintf("csq = %d\r\n",rssi);
+			if(rssi<32)
+			{
+				break;
+			}
+		}
+		zos_task_msleep(1000);
+	}while(i--);
+
+	if(i>0)
+	{
+		do{
+			if(mo_get_cgact(&cgact) == ZOS_EOK)
+			{
+				zos_kprintf("cgact=%d\r\n",cgact);
+				if(cgact == 1)
+				{
+					break;
+				}
+			}
+			zos_task_msleep(1000);
+		}while(i--);
+		if(i <= 0)
+		{
+			zos_kprintf("module connect to net failed\r\n");
+			return ZOS_ERROR;
+		}
+		zos_task_msleep(1000);
+		time_t t = time(NULL);
+		
+		zos_kprintf("%lld\r\n",zos_rtc_get());
+		zos_kprintf("%lld\r\n",time(NULL));
+		zos_kprintf("%s\r\n",ctime(&t));
+
+		struct tm *data = localtime(&t);
+		zos_kprintf("date:%d-%d-%d time:%d-%d-%d\r\n",data->tm_year + 1900 ,data->tm_mon + 1,data->tm_mday,data->tm_hour,data->tm_min,data->tm_sec);
+		zos_task_msleep(1000);
+		zos_kprintf("get radio info %d\r\n",mo_get_radio(&radio_info));
+		zos_kprintf("cell info:%d,%d,%d,%d,%d,%d,%d\r\n",
+        radio_info.earfcn,
+        radio_info.pci,
+        radio_info.cell_id,
+        radio_info.signal_power,
+        radio_info.rsrq,
+        radio_info.ecl,
+        radio_info.snr);
+		zos_kprintf("Module connect to net successful\r\n");	
+		return ZOS_EOK;	
+	}
+	zos_kprintf("module connect to net failed\r\n");
+	return ZOS_ERROR;
+}
+
+
+
+#ifdef ZOS_USING_SHELL
+//以下为shell命令相关函数和命令定义,如果不需要shell命令控制,可以全部删除
+void demo_network(int argc, char *agrv[])
+{
+	mo_network_init();
+}
+#include "shell.h"
+SH_CMD_EXPORT(demo_network,demo_network, "network demo");
+
+#endif
+
+
+
+

+ 170 - 0
QS-100/applications/src/zos_main.c

@@ -0,0 +1,170 @@
+/**
+ * @defgroup zos main
+ */
+
+#include "zos_config.h"
+#include "zos.h"
+#include "zos_version.h"
+#include "zos_main.h"
+#ifdef ZOS_USING_OTA
+#include "zos_ota.h"
+#endif
+
+#include <unistd.h>
+#include <fcntl.h>
+#include <vfs.h>
+//如果想用带颜色的
+#define DBG_TAG "zos_main"		//代表文件名或者特定信息
+//#define DBG_LVL DBG_ERROR		//仅 LOG_E 会打印
+//#define DBG_LVL DBG_WARNING	//LOG_W 、LOG_E 都会打印
+//#define DBG_LVL DBG_INFO		//LOG_I 、LOG_W 、LOG_E 都会打印
+#define DBG_LVL DBG_LOG			//LOG_D 、LOG_I 、LOG_W 、LOG_E 都会打印
+#include "zos_dbg.h"			//想要支持颜色打印,必须先定义上面的信息,再引用 zos_dbg.h
+
+//任务全局变量
+zos_task_t user_main_task_Handle = ZOS_NULL;
+
+//如果在 user_main_task 任务里面进行复杂程序,请将任务的栈改大一些
+#define USER_MAIN_STACK_SIZE       10240
+
+#include "shell.h"
+#define FILE_NAME "test.txt"
+#define FILE_NAME_NEW "test_new.txt"
+
+void file_operation_sample(void)
+{
+    int fd, size, str_len;
+    char *str[3] = {"1234567890", "ABCDEFGHIJ", "abcdefghij"};
+    char bufread[35];
+    off_t offset = 0;
+    char* str_ptr;    
+    struct stat filestat;
+
+    fd = open(FILE_NAME, O_RDWR | O_CREAT | O_TRUNC);
+    if (fd < 0)
+    {        
+        LOG_E("open file err");
+        return;
+    }
+    else
+    {        
+        LOG_W("open(create) file:%s", FILE_NAME);
+        str_ptr = str[0];
+        str_len = strlen(str_ptr);
+        size = write(fd, str_ptr, str_len);
+        LOG_W("write %d byte from offset %d :%s", size, offset, str_ptr);
+    }
+
+    offset = 10;
+    if (lseek(fd, offset, SEEK_SET) != -1)
+    {
+        str_ptr = str[1];
+        str_len = strlen(str_ptr);
+        size = write(fd, str_ptr, str_len);
+        LOG_W("write %d byte from offset %d :%s", size, offset, str_ptr);
+    }
+
+    offset = 20;
+    if (lseek(fd, offset, SEEK_SET) != -1)
+    {
+        str_ptr = str[2];
+        str_len = strlen(str_ptr);
+        size = write(fd, str_ptr, str_len);
+        LOG_W("write %d byte from offset %d :%s", size, offset, str_ptr);
+    }
+
+    offset = 0;
+    if (lseek(fd, offset, SEEK_SET) != -1)
+    {
+        memset(bufread, 0, sizeof(bufread));
+        size = read(fd, bufread, sizeof(bufread));        
+        LOG_W("read %d byte from offset %d :%s", size, offset, bufread);
+    }
+
+    if(fstat(fd, &filestat) != -1)
+    {
+        LOG_W("the filesize of %s is :%d", FILE_NAME, filestat.st_size);
+    }
+
+    if(close(fd) != -1)
+    {
+        LOG_W("close file:%s", FILE_NAME);
+    }
+
+    // if(rename(FILE_NAME, FILE_NAME_NEW) != -1)
+    // {
+    //     LOG_W("rename %s to %s", FILE_NAME, FILE_NAME_NEW);
+    // }
+
+    if(stat(FILE_NAME, &filestat) != -1)
+    {
+        LOG_W("the filesize of %s is :%d", FILE_NAME, filestat.st_size);
+    }
+
+    // if (unlink(FILE_NAME_NEW) != -1)
+    // {
+    //     LOG_W("rm file:%s", FILE_NAME_NEW);
+    // }
+}
+
+SH_CMD_EXPORT(test_file, file_operation_sample, "test for file operation");
+
+void user_main_task(void *parameter)
+{
+	zos_kprintf("Hello, welcome to using QS-100 module. The ZeusOS-SDK integrates shell functions. You can send help and other commands to operate the module.\r\n");
+	LOG_I("Hello, ZeusOS 1.0 ");
+	LOG_I("欢迎使用QS-100模组");
+
+    //*****  上电检测是否来自深睡眠唤醒  *****//
+	if(zos_pm_get_poweron_from_deepsleep() != ZOS_TRUE)
+	{
+		//如果属于正常开机,需要执行连网操作
+		if(mo_network_init() == ZOS_ERROR)
+		{
+			//模块连接到网络失败,等待20S,然后重启模组
+			zos_task_msleep(20000);
+			zos_reboot();
+		}
+	}
+	// zos_pin_mode(5,PIN_MODE_OUTPUT);
+	// zos_pin_write(5,PIN_LOW);
+	zos_adc_t adc_dev = zos_adc_find("vbat");
+	zos_adc_init(adc_dev,0);
+	zos_adc_enable(adc_dev,0);
+	zos_adc_t adc0_dev = zos_adc_find("adc0");
+	zos_adc_init(adc0_dev,0);
+	zos_adc_enable(adc0_dev,0);
+	zos_kprintf("VBAT = %dMV\r\n",zos_adc_read(adc_dev,0));
+	zos_task_msleep(5000);
+	zos_pin_write(5,PIN_HIGH);
+	zos_kprintf("VBAT = %dMV\r\n",zos_adc_read(adc_dev,0));
+	zos_task_msleep(5000);
+	zos_pin_write(5,PIN_LOW);
+	zos_kprintf("adc0 = %dMV\r\n",zos_adc_read(adc0_dev,0));
+	zos_task_msleep(5000);
+	zos_pin_write(5,PIN_HIGH);
+	zos_kprintf("adc0 = %dMV\r\n",zos_adc_read(adc0_dev,0));
+
+#ifdef ZOS_USING_OTA
+    //上报升级结果到平台
+    zos_ota_result_check();
+    //OTA查询和升级程序,可以在其他地方按需求调用
+    zos_err_t ret1 = zos_fota_exec();
+    zos_kprintf("ret1 = %d\r\n",ret1);
+#endif
+	user_main_task_Handle = ZOS_NULL;
+	zos_task_exit();
+}
+
+
+int zos_main(void)
+{
+	user_main_task_Handle = zos_task_create ("user_main_task",user_main_task,ZOS_NULL,USER_MAIN_STACK_SIZE,ZOS_TASK_PRIORITY_NORMAL);
+	if(user_main_task_Handle != ZOS_NULL)
+    {
+        zos_task_startup(user_main_task_Handle);
+    }
+    return ZOS_EOK;
+}
+
+

+ 26 - 0
QS-100/libraries/SConscript

@@ -0,0 +1,26 @@
+from build_tools import *
+import osconfig
+
+pwd  = PresentDir()
+src  = []
+LIBS = []
+LIBPATH = []
+LIBS += ['c', 'm']
+LIBPATH += [pwd ]  
+if IsDefined(['ZOS_USING_OTA']):
+    LIBS += ['zos_ota_gcc']
+if osconfig.BUILD ==  'release':
+               # LIBPATH 指定库的路径,表示库的搜索路径是当前目录下的'libs'目录
+
+    LIBS += ['userapp_gcc']                    # GCC 下 LIBS 指定库的名称 
+    LIBS += ['hal_kernel_gcc']
+    LIBS += ['sysapp_gcc']
+    LIBS += ['applib_gcc']
+    LIBS += ['arch_gcc']
+    LIBS += ['hal_drivers_gcc']
+
+
+
+group = AddCodeGroup('libraries', src, depend=[''], LIBS = LIBS, LIBPATH=LIBPATH)
+
+Return("group")

BIN
QS-100/libraries/libapplib_gcc.a


BIN
QS-100/libraries/libarch_gcc.a


BIN
QS-100/libraries/libhal_drivers_gcc.a


BIN
QS-100/libraries/libhal_kernel_gcc.a


BIN
QS-100/libraries/libsysapp_gcc.a


BIN
QS-100/libraries/libuserapp_gcc.a


BIN
QS-100/libraries/libzos_ota_gcc.a


+ 25 - 0
QS-100/libraries/link/mem.ld

@@ -0,0 +1,25 @@
+/*
+ * Memory Spaces Definitions.
+ *
+ * Need modifying for a specific board. 
+ *   FLASH.ORIGIN: starting address of flash
+ *   FLASH.LENGTH: length of flash
+ *   RAM.ORIGIN: starting address of RAM bank 0
+ *   RAM.LENGTH: length of RAM bank 0
+ *
+ * The values below can be addressed in further linker scripts
+ * using functions like 'ORIGIN(RAM)' or 'LENGTH(RAM)'.
+ */
+
+MEMORY
+{
+	FLASH (xrw)   : ORIGIN = 0x2711F000, LENGTH = 0xCD000	/* text in flash */
+	RAM (xrw)     : ORIGIN = 0x2001D000, LENGTH = 0x43000	/* text/data/bss/heap/stack in RAM */
+}
+
+/*
+ * For external ram use something like:
+
+  RAM (xrw) : ORIGIN = 0x68000000, LENGTH = 64K
+
+ */

+ 400 - 0
QS-100/libraries/link/sections.ld

@@ -0,0 +1,400 @@
+/* 
+ * To make use of the multi-region initialisations, define
+ * OS_INCLUDE_STARTUP_INIT_MULTIPLE_RAM_SECTIONS for the _startup.c file.
+ */
+
+_Flash_Total = LENGTH(FLASH);
+_Flash_Used = SIZEOF(.flashtext)+SIZEOF(.ARM.extab)+SIZEOF(.ARM.exidx);
+_Ram_Total = LENGTH(RAM);
+_Ram_Text = SIZEOF(.isr_vector)+SIZEOF(.text)+SIZEOF(.inits);
+_Ram_Data = SIZEOF(.data);
+_Ram_Bss = SIZEOF(.bss);
+
+/* Used for Alert*/
+FLASH_LIMIT = _Flash_Total;
+
+/*
+ * The '__stack' definition is required by crt0, do not remove it.
+ */
+__stack = ORIGIN(RAM) + LENGTH(RAM);
+
+/*
+ * Default stack sizes.
+ * These are used by the startup in order to allocate stacks 
+ * for the different modes.
+ */
+
+__Main_Stack_Size = 0x400 ;
+
+PROVIDE ( _Main_Stack_Size = __Main_Stack_Size ) ;
+
+__Main_Stack_Limit = __stack - __Main_Stack_Size ;
+
+/* "PROVIDE" allows to easily override these values from an 
+ * object file or the command line. */
+PROVIDE ( _Main_Stack_Limit = __Main_Stack_Limit ) ;
+
+/*
+ * There will be a link error if there is not this amount of 
+ * RAM free at the end. 
+ */
+_Minimum_Stack_Size = __Main_Stack_Size ;
+
+/*
+ * Default heap definitions.
+ * The heap start immediately after the last statically allocated 
+ * .sbss/.noinit section, and extends up to the main stack limit.
+ */
+
+PROVIDE ( _Heap_Begin = _end_noinit ) ;
+PROVIDE ( _Heap_Limit = __stack - __Main_Stack_Size ) ;
+
+
+/* 
+ * the RAM area's size is 0xE000, stack use __Main_Stack_Size, 
+ * the others is heap size
+ */
+__Heap_Size  = _Heap_Limit - _Heap_Begin ;
+
+_Minimum_Heap_Size = __Heap_Size ;
+
+/*
+__malloc_sbrk_base = _Heap_Begin ;
+__malloc_trim_threshold = __Heap_Size ;
+*/
+/* 
+ * The entry point is informative, for debuggers and simulators,
+ * since the Cortex-M vector points to it anyway.
+ */
+ENTRY(Reset_Handler)
+
+
+/* Sections Definitions */
+
+SECTIONS
+{
+    /*
+     * For some STRx devices, the beginning of the startup code
+     * is stored in the .flashtext section, which goes to FLASH.
+     */
+    .flashtext : ALIGN(4)
+    {
+    	*.o.flash(.text .text.*)								/* all code in ram */
+    	
+        *(.flashtext .flashtext.*)								/* attribute used */
+        
+        *.o.flash(.rodata .rodata.* .constdata .constdata.*)	/* read only or const data */
+        . = ALIGN(4);
+        __fsymtab_start = .;
+        KEEP(*(FSymTab))
+        __fsymtab_end = .;
+
+        /* section information for initial. */
+        . = ALIGN(4);
+        __zos_init_start = .;
+        KEEP(*(SORT(.zos_init_call*)))
+        __zos_init_end = .;
+
+
+		. = ALIGN(4);
+    } >FLASH
+    
+    
+    /*
+     * For Cortex-M devices, the beginning of the startup code is stored in
+     * the .isr_vector section, which goes to RAM. 
+     */
+    .isr_vector : ALIGN(4)
+    {
+        FILL(0xFF)
+        
+        __vectors_start = ABSOLUTE(.) ;
+        KEEP(*(.isr_vector))     	/* Interrupt vectors */
+        
+		KEEP(*(.cfmconfig))			/* Freescale configuration words */
+		     
+        /* 
+         * This section is here for convenience, to store the
+         * startup code at the beginning of the flash area, hoping that
+         * this will increase the readability of the listing.
+         */
+        *(.after_vectors .after_vectors.*)	/* Startup code and ISR */
+
+    } >RAM
+	
+    
+    /*
+     * The program code is stored in the .text section, 
+     * which goes to RAM.
+     */
+    .text : ALIGN(4)
+    {
+        *(.text .text.*)								/* all remaining code in ram */
+        
+        *(.ramtext*)									/* attribute used */
+        
+        *(.rodata .rodata.* .constdata .constdata.*)	/* read only or const data */
+
+        *(vtable)										/* C++ virtual tables */
+
+		KEEP(*(.eh_frame*))
+
+		/*
+		 * Stub sections generated by the linker, to glue together 
+		 * ARM and Thumb code. .glue_7 is used for ARM code calling 
+		 * Thumb code, and .glue_7t is used for Thumb code calling 
+		 * ARM code. Apparently always generated by the linker, for some
+		 * architectures, so better leave them here.
+		 */
+        *(.glue_7)
+        *(.glue_7t)
+
+    } >RAM
+
+
+    .inits : ALIGN(4)
+    {
+        /* 
+         * Memory regions initialisation arrays.
+         *
+         * Thee are two kinds of arrays for each RAM region, one for 
+         * data and one for bss. Each is iterrated at startup and the   
+         * region initialisation is performed.
+         * 
+         * The data array includes:
+         * - from (LOADADDR())
+         * - region_begin (ADDR())
+         * - region_end (ADDR()+SIZEOF())
+         *
+         * The bss array includes:
+         * - region_begin (ADDR())
+         * - region_end (ADDR()+SIZEOF())
+         *
+         * WARNING: It is mandatory that the regions are word aligned, 
+         * since the initialisation code works only on words.
+         */
+         
+        __data_regions_array_start = .;
+        
+        LONG(LOADADDR(.data));
+        LONG(ADDR(.data));
+        LONG(ADDR(.data)+SIZEOF(.data));
+        
+        __data_regions_array_end = .;
+        
+        __bss_regions_array_start = .;
+        
+        LONG(ADDR(.bss));
+        LONG(ADDR(.bss)+SIZEOF(.bss));
+        
+        __bss_regions_array_end = .;
+
+        /* End of memory regions initialisation arrays. */
+    
+        /*
+         * These are the old initialisation sections, intended to contain
+         * naked code, with the prologue/epilogue added by crti.o/crtn.o
+         * when linking with startup files. The standalone startup code
+         * currently does not run these, better use the init arrays below.
+         */
+		KEEP(*(.init))
+		KEEP(*(.fini))
+
+		. = ALIGN(4);
+
+		/*
+         * The preinit code, i.e. an array of pointers to initialisation 
+         * functions to be performed before constructors.
+         */
+		PROVIDE_HIDDEN (__preinit_array_start = .);
+        
+        /*
+         * Used to run the SystemInit() before anything else.
+         */
+		KEEP(*(.preinit_array_sysinit .preinit_array_sysinit.*))
+        
+        /* 
+         * Used for other platform inits.
+         */
+		KEEP(*(.preinit_array_platform .preinit_array_platform.*))
+        
+        /*
+         * The application inits. If you need to enforce some order in 
+         * execution, create new sections, as before.
+         */
+		KEEP(*(.preinit_array .preinit_array.*))
+
+		PROVIDE_HIDDEN (__preinit_array_end = .);
+
+		. = ALIGN(4);
+
+		/*
+         * The init code, i.e. an array of pointers to static constructors.
+         */
+		PROVIDE_HIDDEN (__init_array_start = .);
+		KEEP(*(SORT(.init_array.*)))
+		KEEP(*(.init_array))
+		PROVIDE_HIDDEN (__init_array_end = .);
+
+		. = ALIGN(4);
+
+		/*
+         * The fini code, i.e. an array of pointers to static destructors.
+         */
+		PROVIDE_HIDDEN (__fini_array_start = .);
+		KEEP(*(SORT(.fini_array.*)))
+		KEEP(*(.fini_array))
+		PROVIDE_HIDDEN (__fini_array_end = .);
+
+    } >RAM
+
+	/* ARM magic sections */
+	.ARM.extab : ALIGN(4)
+   	{
+       *(.ARM.extab* .gnu.linkonce.armextab.*)
+   	} > FLASH
+   	
+    . = ALIGN(4);
+   	__exidx_start = .;   	
+   	.ARM.exidx : ALIGN(4)
+   	{
+       *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+   	} > FLASH
+   	__exidx_end = .;
+   	
+    . = ALIGN(4);
+    _etext = .;
+    __etext = .;
+
+	/* 
+     * This address is used by the startup code to 
+     * initialise the .data section.
+     */
+    _sidata = LOADADDR(.data);
+
+    /*
+     * The initialised data section.
+     *
+     * The program executes knowing that the data is in the RAM
+     * but the loader puts the initial values in the FLASH (inidata).
+     * It is one task of the startup to copy the initial values from 
+     * FLASH to RAM.
+     */
+    .data : ALIGN(4)
+    {
+    	FILL(0xFF)
+        /* This is used by the startup code to initialise the .data section */
+        __data_start__ = . ;
+		*(.data_begin .data_begin.*)
+
+		*(.data .data.*)
+		
+		*(.data_end .data_end.*)
+	    . = ALIGN(4);
+
+	    /* This is used by the startup code to initialise the .data section */
+        __data_end__ = . ;
+
+    } >RAM
+
+    /* The primary uninitialised data section. */
+    .bss (NOLOAD) : ALIGN(4)
+    {
+        __bss_start__ = .;     	/* standard newlib definition */
+        *(.bss_begin .bss_begin.*)
+
+        *(.bss .bss.*)
+        *(COMMON)
+        
+        *(.bss_end .bss_end.*)
+	    . = ALIGN(4);
+        __bss_end__ = .;        /* standard newlib definition */
+    } >RAM
+    
+    .noinit (NOLOAD) : ALIGN(4)
+    {
+        _noinit = .;
+        
+        *(.noinit .noinit.*) 
+        
+         . = ALIGN(4) ;
+        _end_noinit = .;   
+    } > RAM
+    
+    /* Mandatory to be word aligned, _sbrk assumes this */
+    PROVIDE ( end = _end_noinit ); /* was _ebss */
+    PROVIDE ( _end = _end_noinit );
+    PROVIDE ( __end = _end_noinit );
+    PROVIDE ( __end__ = _end_noinit );
+    
+    /*
+     * Used for validation only, do not allocate anything here!
+     *
+     * This is just to check that there is enough RAM left for the Main
+     * stack. It should generate an error if it's full.
+     */
+     
+    .heap : ALIGN(4)
+    {
+    	__heap_start__ = .;     /* heap start */
+    	*(.heap .heap.*)
+    	. = ALIGN(4);
+    	__heap_end__ = .;       /* heap end */
+    } >RAM
+     
+    ._check_stack : ALIGN(4)
+    {
+        . = . + _Minimum_Stack_Size ;
+    } >RAM
+   
+    /* Check if sram + flash exceeds Flash Total limit */
+    ASSERT( _Flash_Used + _Ram_Text + _Ram_Data < FLASH_LIMIT, "flash used size exceeds flash total size")
+
+    /* After that there are only debugging sections. */
+    
+    /* This can remove the debugging information from the standard libraries */    
+    /* 
+    DISCARD :
+    {
+     libc.a ( * )
+     libm.a ( * )
+     libgcc.a ( * )
+     }
+     */
+  
+    /* Stabs debugging sections.  */
+    .stab          0 : { *(.stab) }
+    .stabstr       0 : { *(.stabstr) }
+    .stab.excl     0 : { *(.stab.excl) }
+    .stab.exclstr  0 : { *(.stab.exclstr) }
+    .stab.index    0 : { *(.stab.index) }
+    .stab.indexstr 0 : { *(.stab.indexstr) }
+    .comment       0 : { *(.comment) }
+    /*
+     * DWARF debug sections.
+     * Symbols in the DWARF debugging sections are relative to the beginning
+     * of the section so we begin them at 0.  
+     */
+    /* DWARF 1 */
+    .debug          0 : { *(.debug) }
+    .line           0 : { *(.line) }
+    /* GNU DWARF 1 extensions */
+    .debug_srcinfo  0 : { *(.debug_srcinfo) }
+    .debug_sfnames  0 : { *(.debug_sfnames) }
+    /* DWARF 1.1 and DWARF 2 */
+    .debug_aranges  0 : { *(.debug_aranges) }
+    .debug_pubnames 0 : { *(.debug_pubnames) }
+    /* DWARF 2 */
+    .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
+    .debug_abbrev   0 : { *(.debug_abbrev) }
+    .debug_line     0 : { *(.debug_line) }
+    .debug_frame    0 : { *(.debug_frame) }
+    .debug_str      0 : { *(.debug_str) }
+    .debug_loc      0 : { *(.debug_loc) }
+    .debug_macinfo  0 : { *(.debug_macinfo) }
+    /* SGI/MIPS DWARF 2 extensions */
+    .debug_weaknames 0 : { *(.debug_weaknames) }
+    .debug_funcnames 0 : { *(.debug_funcnames) }
+    .debug_typenames 0 : { *(.debug_typenames) }
+    .debug_varnames  0 : { *(.debug_varnames) }    
+}

+ 87 - 0
QS-100/osconfig.py

@@ -0,0 +1,87 @@
+import os
+import platform
+# toolchains options
+ARCH='arm'
+CPU='cortex-m3'
+CROSS_TOOL='gcc'
+MODULE = 'QS-100'
+# bsp lib config
+BSP_LIBRARY_TYPE = None
+project_directory = os.getcwd()
+
+if os.getenv('OS_CC'):
+    CROSS_TOOL = os.getenv('OS_CC')
+if os.getenv('OS_ROOT'):
+    OS_ROOT = os.getenv('OS_ROOT')
+
+
+os_ver = platform.system()
+# cross_tool provides the cross compiler
+# COMPILER_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR
+if  CROSS_TOOL == 'gcc':
+    COMPILER    = 'gcc'
+    os_ver = platform.system()
+    if  os_ver == "Windows":
+        COMPILER_PATH   = './../../tools/gcc/bin'
+    else :
+        COMPILER_PATH   = '/usr/bin'
+
+
+if CROSS_TOOL == 'gcc' and os.getenv('OS_EXEC_PATH'):
+    COMPILER_PATH = os.getenv('OS_EXEC_PATH')
+
+# BUILD = 'debug'
+BUILD = 'release'
+
+if COMPILER == 'gcc':
+    # toolchains
+    PREFIX = 'arm-none-eabi-'
+    CC = PREFIX + 'gcc'
+    AS = PREFIX + 'gcc'
+    AR = PREFIX + 'ar'
+    CXX = PREFIX + 'g++'
+    LINK = PREFIX + 'gcc'
+    RESULT_SUFFIX = 'elf'
+    SIZE = PREFIX + 'size'
+    OBJDUMP = PREFIX + 'objdump'
+    OBJCPY = PREFIX + 'objcopy'
+
+    DEVICE = ' -mcpu=cortex-m3 -std=gnu11 -mthumb -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -ffreestanding --specs=nano.specs --specs=nosys.specs -Xlinker -zmuldefs -u _printf_float ' 
+    CFLAGS = DEVICE + ' -Wall -Wextra -g -Dgcc -D_REENT_SMALL -D_REENT_GLOBAL_ATEXIT -DCOMPILE_TIME -D__SOC_XINYI_1100__ -DMODULE_VER -DPRODUCT_VER -DXY_SOCKET_PROXY=1 -DXY_DTLS=1 -DMOBILE_VER=1 -DLWM2M_LITTLE_ENDIAN=1 -DTELECOM_VER=1 -DWITH_LWIP=1 -DLWM2M_CLIENT_MODE=1 -DWAKAAMA=1 -DXINYI_LWM2M_CLIENT_MODE=1 -DXINYI_LWM2M_LITTLE_ENDIAN=1 -DLIBCOAP=1 -DWITH_LWIP=1 -DXY_PING=1 -DXY_DM=1 -DAT_SOCKET -DXY_WIRESHARK=1 -DXY_FOTA=1 -DXY_HTTP=0 -DBLE_ENABLE=0'
+    AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb '
+    LFLAGS = DEVICE + ' -Wall -Wextra -Wl,--gc-sections,-Map=zos.map,-cref,-u,Reset_Handler -T ./libraries/link/mem.ld  -T ./libraries/link/sections.ld '
+    # LFLAGS = DEVICE + ' -Wall -Wextra -Wl,-Map=zos.map,-cref,-u,Reset_Handler -T ./libraries/link/mem.ld  -T ./libraries/link/sections.ld '
+
+    CPATH = ''
+    LPATH = ''
+
+    if BUILD == 'debug':
+        CFLAGS += ' -O2 -Os'
+        AFLAGS += ' -O2 -Os'
+    else:
+        CFLAGS += ' -O2 -Os'
+        AFLAGS += ' -O2 -Os'
+
+    CXXFLAGS = CFLAGS 
+
+    POST_ACTION = OBJCPY + ' -O binary -j .flashtext $TARGET flash.bin\n'
+    POST_ACTION += OBJCPY + ' -O binary -j .isr_vector -j .text -j .data $TARGET ram.bin\n' + SIZE + ' $TARGET \n'
+    if  os_ver == "Windows":
+        if os.path.exists("./firmware/allbins" + '/flash.bin ') == True :
+            os.remove("./firmware/allbins" + '/flash.bin ')
+
+        if os.path.exists("./firmware/allbins" + '/ram.bin ') == True :
+            os.remove("./firmware/allbins" + '/ram.bin ')
+
+        if os.path.exists("./firmware/allbins" + '/zos.map ') == True :
+            os.remove("./firmware/allbins" + '/zos.map ')
+
+        if os.path.exists("./firmware/allbins" + '/zos.elf ') == True :
+            os.remove("./firmware/allbins" + '/zos.elf ')
+            
+        POST_ACTION += 'python QS100_mv.py\n'
+        
+    else :
+        POST_ACTION += 'mv *.bin *.map *.' + RESULT_SUFFIX + ' '+ "./firmware/allbins/ \n" 
+    POST_ACTION += 'python ./tools/m3ld.py ./firmware/allbins/\n'
+    POST_ACTION += 'python zos.py -m\n'

BIN
QS-100/requirements.txt


+ 168 - 0
QS-100/zos.py

@@ -0,0 +1,168 @@
+#!/usr/bin/python3
+# -*- coding: UTF-8 -*-
+import os
+import sys
+import platform
+import multiprocessing
+import serial
+import time
+from tools.Download import build
+
+
+def usage():
+    print('''
+    ZeusOS版本SDK的编译命令如下:
+
+    python zos.py [action]
+
+    <-menu> 功能描述: 开启图形化代码裁剪功能
+
+    <-dl> 功能描述: 往UE下载程序 
+        参数: <PortNo.>:    串口号(例如com4)
+
+    <-s> 功能描述: 拆分文件
+
+    示例1, 开启图形化代码裁剪功能
+    python zos.py -menu
+
+    示例2, 下载固件到模组
+    python zos.py -dl com3
+
+    示例3, 拆分固件
+    python zos.py -s
+    
+    ''')
+
+def enter_download_mode(com):
+    print(com)
+    dev = serial.Serial(com, 9600,timeout=1, parity=serial.PARITY_NONE, stopbits=1)
+    if dev.isOpen():  # 判断串口是否打开
+        print("open success")
+    else :
+        dev.open()
+
+    dev.write('AT\r\n'.encode("utf8"))
+    data = dev.read(50)
+    time.sleep(1)
+    dev.write('AT\r\n'.encode("utf8"))
+    data = dev.read(50)
+    if ( "OK" in str(data)):
+        print("当前是AT固件\r\n")
+        dev.write('AT+NV=SET,STANDBY,0\r\n'.encode("utf8"))
+        time.sleep(2)
+        dev.write('AT+NV=SET,WDT,0\r\n'.encode("utf8"))
+        time.sleep(2)
+        dev.write('AT+FORCEDL\r\n'.encode("utf8"))
+        time.sleep(2)
+        data = dev.read(4)
+        print(data)
+    else    :
+        dev.baudrate = 115200
+        dev.write('AT\r\n'.encode("utf8"))
+        data = dev.read(50)
+        dev.write('enter_download_mode\r\n'.encode("utf8"))
+        data = dev.read(50)
+        if ( "OK" in str(data)):
+            print("当前已经进入二次开发模式,即将下载固件\r\n")
+        else :
+            print("设备连接失败\r\n")  
+    dev.close()
+    time.sleep(3)
+
+def main():
+    argc = 1
+    test_list = ['-menu','-b','-c','-m','-mdl','-dl','-s','-h']
+    os_ver = platform.system()
+    while len(sys.argv) > argc:
+        if sys.argv[argc] == "-menu" :
+            menu_cmd = "python ./../../tools/config/menuconfig.py"
+            if  os_ver == "Windows":
+                menu_cmd = "start cmd /c " + menu_cmd
+            else :
+                menu_cmd = "gnome-terminal -x " + menu_cmd    
+
+            os.system(menu_cmd)
+            print("Zeusos menuconfig 配置已开启")
+            if  os_ver == "Windows":
+                print("如果在windows下看不到图形化配置界面,请使用调用以下命令安装python包: \r\npip install windows-curses ")
+
+        elif sys.argv[argc] == '-m':
+            if  len(sys.argv) > argc+1:
+                if sys.argv[argc+1] in test_list:
+                    passward = ''
+                else :
+                    passward = sys.argv[argc+1]
+                    argc +=1
+            else :
+                passward = ''
+            print(passward)
+            build.do_pack(passward)
+            print('\r\n固件合并完成,现在可以执行以下命令进行下载固件了.')
+            print('\r\n当前程序为AT固件或者shell命令可以正常运行,请使用 python zos.py -dl com3 进行下载')
+            print('\r\n如果程序处于死机状态请按住boot按键后再上电,然后使用 python zos.py -mdl com3 进行下载')
+
+        elif sys.argv[argc] == '-mdl':
+            cmd_list = []
+            if  len(sys.argv) > argc+1:
+                if sys.argv[argc+1] in test_list:
+                    print("执行下载命令,需要输入串口信息。")
+                    print("例如:python zos.py -dl com3")
+                    return
+                else :
+                    cmd_list.append(sys.argv[argc+1])
+                    if  len(sys.argv) > argc+2:
+                        if sys.argv[argc+2] not in test_list:
+                            cmd_list.append(sys.argv[argc+2])
+                    build.do_download(cmd_list)
+                    argc +=1
+            else :
+                print("执行下载命令,需要输入串口信息。")
+                print("例如:python zos.py -dl com3")
+                return
+
+        elif sys.argv[argc] == '-dl':
+            cmd_list = []
+            if  len(sys.argv) > argc+1:
+                if sys.argv[argc+1] in test_list:
+                    print("执行下载命令,需要输入串口信息。")
+                    print("例如:python zos.py -dl com3")
+                    return
+                else :
+                    cmd_list.append(sys.argv[argc+1])
+                    if  len(sys.argv) > argc+2:
+                        if sys.argv[argc+2] not in test_list:
+                            cmd_list.append(sys.argv[argc+2])
+                    enter_download_mode(cmd_list[0])
+                    build.do_download(cmd_list)
+                    argc +=1
+            else :
+                print("执行下载命令,需要输入串口信息。")
+                print("例如:python zos.py -dl com3")
+                return
+        elif sys.argv[argc] == '-s':
+            
+            if  len(sys.argv) > argc+1:
+                if sys.argv[argc+1] in test_list:
+                    passward = ''
+                else :
+                    passward = sys.argv[argc+1]
+                    argc +=1
+            else :
+                passward = ''
+            print(passward)
+            build.do_unpack(passward)
+            print('\r\n固件拆分完成')
+        elif sys.argv[argc] == '-h':
+            usage()
+        else :
+            usage()
+        argc += 1
+        print("***********************************************************************")
+    print("操作已完成,再见")
+
+if len(sys.argv) == 1 :
+    usage()
+else :
+    main()
+
+

+ 309 - 0
QS-200/.config

@@ -0,0 +1,309 @@
+CONFIG___ZEUSOS__=y
+CONFIG_VENDOR_USING_QS200=y
+CONFIG_BSP_USING_FLASH_LEN=112
+CONFIG_BSP_USING_FLASH_BLOCK_SIZE=4
+CONFIG_BSP_USING_FLASH_WRITE_GRAN=1
+CONFIG_ZOS_TICK_PER_SECOND=1000
+
+#
+# On-chip Peripheral Drivers
+#
+
+#
+# hardware
+#
+CONFIG_BSP_USING_CONSOLE=y
+CONFIG_BSP_CONSOLE_DEVICE_NAME="uart0"
+CONFIG_BSP_CONSOLE_DEVICE_BAUD=115200
+CONFIG_BSP_CONSOLE_DEVICE_RECV_BUFFER_SIZE=128
+CONFIG_BSP_USING_PIN=y
+CONFIG_BSP_USING_UART=y
+CONFIG_BSP_USING_UART0=y
+CONFIG_BSP_USING_UART0_TXD_PIN=2
+CONFIG_BSP_USING_UART0_RXD_PIN=3
+CONFIG_BSP_USING_UART1=y
+CONFIG_BSP_USING_UART1_TXD_PIN=19
+CONFIG_BSP_USING_UART1_RXD_PIN=18
+# CONFIG_BSP_USING_UART2 is not set
+CONFIG_BSP_USING_I2C=y
+CONFIG_BSP_USING_I2C0=y
+CONFIG_BSP_USING_I2C0_SCL_PIN=4
+CONFIG_BSP_USING_I2C0_SDA_PIN=5
+CONFIG_BSP_USING_SPI=y
+CONFIG_BSP_USING_SPI0=y
+CONFIG_BSP_USING_SPI0_CLK_PIN=8
+CONFIG_BSP_USING_SPI0_MOSI_PIN=7
+CONFIG_BSP_USING_SPI0_MISO_PIN=6
+CONFIG_BSP_USING_SPI0_DMA=y
+# CONFIG_BSP_USING_SPI1 is not set
+CONFIG_BSP_USING_PWM=y
+# CONFIG_BSP_USING_PWM0 is not set
+CONFIG_BSP_USING_RTC=y
+CONFIG_BSP_USING_RTC_ALARM=y
+CONFIG_BSP_USING_FLASH=y
+CONFIG_BSP_USING_ADC=y
+CONFIG_BSP_USING_ADC0=y
+CONFIG_BSP_USING_HWTIMER=y
+CONFIG_BSP_USING_HWTIMER0=y
+CONFIG_BSP_USING_HWTIMER1=y
+CONFIG_BSP_USING_HWTIMER2=y
+CONFIG_BSP_USING_PM=y
+CONFIG_BSP_USING_PM_WAKEPIN=y
+CONFIG_BSP_USING_PM_DTIMER=y
+CONFIG_BSP_USING_WDT=y
+CONFIG_BSP_USING_NETWORK=y
+CONFIG_BSP_USING_WLAN=y
+CONFIG_ZOS_WLAN_SSID_MAX_LENGTH=30
+CONFIG_ZOS_WLAN_BSSID_MAX_LENGTH=6
+# end of hardware
+# end of On-chip Peripheral Drivers
+
+#
+# drivers
+#
+# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
+# CONFIG_PKG_USING_BH1750 is not set
+# CONFIG_PKG_USING_EC11 is not set
+# CONFIG_PKG_USING_HCSR04 is not set
+CONFIG_PKG_USING_SPI_LCD=y
+# CONFIG_PKG_USING_MPU6XXX is not set
+# CONFIG_PKG_USING_OLED is not set
+# CONFIG_PKG_USING_SFUD is not set
+# CONFIG_PKG_USING_SHT2X is not set
+# CONFIG_PKG_USING_SHT3X is not set
+# CONFIG_PKG_USING_TOUCH is not set
+CONFIG_PKG_USING_WS2812=y
+# end of drivers
+
+#
+# kernel
+#
+# CONFIG_ZOS_NAME_MAX_7 is not set
+CONFIG_ZOS_NAME_MAX_15=y
+# CONFIG_ZOS_NAME_MAX_31 is not set
+CONFIG_ZOS_NAME_MAX=15
+
+#
+# Inter-task communication and synchronization
+#
+CONFIG_ZOS_USING_MUTEX=y
+CONFIG_ZOS_USING_SEMAPHORE=y
+CONFIG_ZOS_USING_EVENT=y
+CONFIG_ZOS_USING_MESSAGEQUEUE=y
+# end of Inter-task communication and synchronization
+
+CONFIG_ZOS_USING_DLOG=y
+CONFIG_ZOS_DLOG_BUF_SIZE=1024
+CONFIG_ZOS_DLOG_ENABLE_COLOR=y
+CONFIG_PKG_VSNPRINTF_SUPPORT_DECIMAL_SPECIFIERS=y
+CONFIG_PKG_VSNPRINTF_SUPPORT_EXPONENTIAL_SPECIFIERS=y
+CONFIG_PKG_VSNPRINTF_SUPPORT_WRITEBACK_SPECIFIER=y
+CONFIG_PKG_VSNPRINTF_SUPPORT_LONG_LONG=y
+CONFIG_PKG_VSNPRINTF_CHECK_FOR_NUL_IN_FORMAT_SPECIFIER=y
+# CONFIG_PKG_VSNPRINTF_SUPPORT_MSVC_STYLE_INTEGER_SPECIFIERS is not set
+CONFIG_PKG_VSNPRINTF_INTEGER_BUFFER_SIZE=32
+CONFIG_PKG_VSNPRINTF_DECIMAL_BUFFER_SIZE=32
+CONFIG_PKG_VSNPRINTF_DEFAULT_FLOAT_PRECISION=6
+CONFIG_PKG_VSNPRINTF_MAX_INTEGRAL_DIGITS_FOR_DECIMAL=9
+CONFIG_PKG_VSNPRINTF_LOG10_TAYLOR_TERMS=4
+CONFIG_ZOS_USING_KERNEL_DEBUG=y
+# CONFIG_KLOG_GLOBAL_LEVEL_ERROR is not set
+CONFIG_KLOG_GLOBAL_LEVEL_WARNING=y
+# CONFIG_KLOG_GLOBAL_LEVEL_INFO is not set
+# CONFIG_KLOG_GLOBAL_LEVEL_DEBUG is not set
+CONFIG_KLOG_GLOBAL_LEVEL=1
+CONFIG_KLOG_USING_COLOR=y
+CONFIG_KLOG_WITH_FUNC_LINE=y
+# end of kernel
+
+#
+# components
+#
+
+#
+# AI
+#
+# CONFIG_PKG_USING_TINYMAIX is not set
+# end of AI
+
+#
+# Cloud
+#
+CONFIG_PKG_USING_HTTP_CLIENT=y
+# CONFIG_HTTP_CLIENT_USING_SECURE is not set
+# CONFIG_HTTP_CLIENT_DEBUG is not set
+CONFIG_HTTP_CLIENT_AUTHB_SIZE=128
+CONFIG_HTTP_CLIENT_CHUNK_SIZE=1024
+CONFIG_HTTP_CLIENT_SEND_BUF_SIZE=1024
+CONFIG_HTTP_CLIENT_MAX_HOST_LEN=128
+CONFIG_HTTP_CLIENT_MAX_URL_LEN=512
+CONFIG_HTTP_CLIENT_MAX_RECV_WAIT_MS=5000
+CONFIG_HTTP_PORT=80
+CONFIG_HTTPS_PORT=443
+CONFIG_PKG_USING_MQTTCLIENT=y
+# CONFIG_MQTT_NETWORK_TYPE_TLS is not set
+CONFIG_MQTT_LOG_IS_SALOF=y
+CONFIG_SALOF_USING_LOG=y
+CONFIG_SALOF_USING_SALOF=y
+CONFIG_SALOF_BUFF_SIZE=512
+CONFIG_SALOF_FIFO_SIZE=2048
+CONFIG_SALOF_TASK_STACK_SIZE=2048
+CONFIG_SALOF_TASK_TICK=50
+# CONFIG_SALOF_LOG_COLOR is not set
+# CONFIG_SALOF_LOG_TS is not set
+# CONFIG_SALOF_LOG_TAR is not set
+# CONFIG_SALOF_USING_IDLE_HOOK is not set
+CONFIG_SALOF_LOG_LEVEL=4
+CONFIG_MQTT_LOG_LEVEL=4
+CONFIG_MQTT_VERSION=4
+CONFIG_MQTT_KEEP_ALIVE_INTERVAL=100
+CONFIG_MQTT_THREAD_STACK_SIZE=10240
+CONFIG_MQTT_THREAD_PRIO=5
+CONFIG_MQTT_THREAD_TICK=50
+CONFIG_MQTT_MAX_PACKET_ID=0xFFFE
+CONFIG_MQTT_TOPIC_LEN_MAX=64
+CONFIG_MQTT_ACK_HANDLER_NUM_MAX=64
+CONFIG_MQTT_DEFAULT_BUF_SIZE=1024
+CONFIG_MQTT_DEFAULT_CMD_TIMEOUT=4000
+CONFIG_MQTT_MAX_CMD_TIMEOUT=20000
+CONFIG_MQTT_MIN_CMD_TIMEOUT=1000
+CONFIG_MQTT_RECONNECT_DEFAULT_DURATION=1000
+CONFIG_PKG_USING_MQTT_IOT_AUTH=y
+# CONFIG_PKG_USING_MQTT_TEST is not set
+# CONFIG_PKG_USING_ONENETCLOUD is not set
+# end of Cloud
+
+#
+# File system
+#
+# CONFIG_PKG_USING_FLASHDB is not set
+CONFIG_PKG_USING_FAL=y
+CONFIG_FAL_DEBUG_CONFIG=y
+CONFIG_FAL_DEBUG=1
+CONFIG_FAL_PART_HAS_TABLE_CFG=y
+# CONFIG_FAL_USING_SFUD_PORT is not set
+CONFIG_ZOS_USING_VFS=y
+CONFIG_VFS_MOUNTPOINT_MAX=4
+CONFIG_VFS_FILESYSTEM_TYPES_MAX=4
+CONFIG_VFS_FD_MAX=16
+CONFIG_ZOS_USING_AUTO_MOUNT=y
+# CONFIG_ZOS_USING_VFS_DEVFS is not set
+CONFIG_ZOS_USING_VFS_LFS=y
+
+#
+# Little filesystem module
+#
+CONFIG_LFS_NAME_MAX=255
+CONFIG_LFS_FILE_MAX=2147483647
+CONFIG_LFS_LOOKAHEAD_SIZE=8
+CONFIG_LFS_THREADSAFE=y
+# end of Little filesystem module
+
+CONFIG_ZOS_USING_VFS_SHELL_CMD=y
+# CONFIG_ZOS_USING_VFS_USING_SPI_FLASH is not set
+# end of File system
+
+#
+# GUI
+#
+# CONFIG_PKG_USING_LVGL is not set
+# end of GUI
+
+#
+# IoT
+#
+# CONFIG_PKG_USING_AIRKISS is not set
+# CONFIG_PKG_USING_AT is not set
+CONFIG_PKG_USING_BLEFI=y
+CONFIG_PKG_USING_NETUTILS=y
+# CONFIG_PKG_NETUTILS_WEATHER is not set
+# CONFIG_PKG_NETUTILS_PING is not set
+CONFIG_PKG_NETUTILS_NTP=y
+CONFIG_NETUTILS_NTP_TIMEZONE=8
+CONFIG_PKG_NETUTILS_NTP_CMD=y
+# CONFIG_PKG_NETUTILS_NTP_DEBUG is not set
+CONFIG_NETUTILS_NTP_HOSTNAME="cn.ntp.org.cn"
+CONFIG_NETUTILS_NTP_HOSTNAME2="ntp.rt-thread.org"
+CONFIG_NETUTILS_NTP_HOSTNAME3="edu.ntp.org.cn"
+# CONFIG_PKG_USING_SMARTCONFIG is not set
+CONFIG_PKG_USING_SOFTAPCFG=y
+# end of IoT
+
+#
+# Language
+#
+CONFIG_PKG_USING_CJSON=y
+# end of Language
+
+#
+# C standard library adapter
+#
+CONFIG_ZOS_USING_LIBC_ADAPTER=y
+CONFIG_ZOS_USING_NEWLIB_ADAPTER=y
+CONFIG_ZOS_USING_ARMCCLIB_ADAPTER=y
+# end of C standard library adapter
+
+# CONFIG_ZOS_USING_OTA is not set
+
+#
+# security
+#
+CONFIG_PKG_USING_ZOS_CRYPTO=y
+
+#
+# mbedtls
+#
+CONFIG_SECURITY_USING_MBEDTLS=y
+# end of mbedtls
+# end of security
+
+#
+# utils
+#
+
+#
+# Shell
+#
+CONFIG_ZOS_USING_SHELL=y
+CONFIG_SHELL_TASK_NAME="shell"
+CONFIG_SHELL_TASK_PRIORITY=13
+CONFIG_SHELL_TASK_STACK_SIZE=2048
+CONFIG_SHELL_USING_HISTORY=y
+CONFIG_SHELL_HISTORY_LINES=5
+CONFIG_SHELL_USING_DESCRIPTION=y
+# CONFIG_SHELL_ECHO_DISABLE_DEFAULT is not set
+CONFIG_SHELL_CMD_SIZE=80
+CONFIG_SHELL_PROMPT_SIZE=256
+CONFIG_SHELL_ARG_MAX=10
+# CONFIG_SHELL_USING_AUTH is not set
+# end of Shell
+# end of utils
+# end of components
+
+#
+# SDK DEMO Config
+#
+# CONFIG_BSP_USING_ZeusOS_DEMO is not set
+# CONFIG_BSP_USING_HARDWARE_DEMO is not set
+# CONFIG_BSP_USING_ClOUD_DEMO is not set
+# CONFIG_BSP_USING_MQTT_DEMO is not set
+# CONFIG_BSP_USING_SLEEP_DEMO is not set
+# CONFIG_BSP_USING_HTTP_DEMO is not set
+# CONFIG_BSP_USING_HTTP_FOTA is not set
+# CONFIG_BSP_USING_SFUD_DEMO is not set
+# CONFIG_BSP_USING_FAL_DEMO is not set
+# CONFIG_BSP_USING_VFS_DEMO is not set
+# CONFIG_BSP_USING_FLASHDB_DEMO is not set
+# CONFIG_BSP_USING_LVGL_DEMO is not set
+# end of SDK DEMO Config
+
+#
+# QS-200 DEMO Config
+#
+# CONFIG_BSP_USING_WS2812_DEMO is not set
+# CONFIG_BSP_USING_AIRKISS_DEMO is not set
+# CONFIG_BSP_USING_SMARTCONFIG_DEMO is not set
+# CONFIG_BSP_USING_SOFTAP_DEMO is not set
+# CONFIG_BSP_USING_BLEFI_DEMO is not set
+# CONFIG_BSP_USING_ONENETCLOUD_DEMO is not set
+# end of QS-200 DEMO Config

+ 342 - 0
QS-200/.config.old

@@ -0,0 +1,342 @@
+CONFIG___ZEUSOS__=y
+CONFIG_VENDOR_USING_QS200=y
+CONFIG_BSP_USING_FLASH_LEN=112
+CONFIG_BSP_USING_FLASH_BLOCK_SIZE=4
+CONFIG_BSP_USING_FLASH_WRITE_GRAN=1
+CONFIG_ZOS_TICK_PER_SECOND=1000
+
+#
+# On-chip Peripheral Drivers
+#
+
+#
+# hardware
+#
+CONFIG_BSP_USING_CONSOLE=y
+CONFIG_BSP_CONSOLE_DEVICE_NAME="uart0"
+CONFIG_BSP_CONSOLE_DEVICE_BAUD=115200
+CONFIG_BSP_CONSOLE_DEVICE_RECV_BUFFER_SIZE=128
+CONFIG_BSP_USING_PIN=y
+CONFIG_BSP_USING_UART=y
+CONFIG_BSP_USING_UART0=y
+CONFIG_BSP_USING_UART0_TXD_PIN=2
+CONFIG_BSP_USING_UART0_RXD_PIN=3
+CONFIG_BSP_USING_UART1=y
+CONFIG_BSP_USING_UART1_TXD_PIN=19
+CONFIG_BSP_USING_UART1_RXD_PIN=18
+# CONFIG_BSP_USING_UART2 is not set
+CONFIG_BSP_USING_I2C=y
+CONFIG_BSP_USING_I2C0=y
+CONFIG_BSP_USING_I2C0_SCL_PIN=4
+CONFIG_BSP_USING_I2C0_SDA_PIN=5
+CONFIG_BSP_USING_SPI=y
+CONFIG_BSP_USING_SPI0=y
+CONFIG_BSP_USING_SPI0_CLK_PIN=8
+CONFIG_BSP_USING_SPI0_MOSI_PIN=7
+CONFIG_BSP_USING_SPI0_MISO_PIN=6
+CONFIG_BSP_USING_SPI0_DMA=y
+# CONFIG_BSP_USING_SPI1 is not set
+CONFIG_BSP_USING_PWM=y
+# CONFIG_BSP_USING_PWM0 is not set
+CONFIG_BSP_USING_RTC=y
+CONFIG_BSP_USING_RTC_ALARM=y
+CONFIG_BSP_USING_FLASH=y
+CONFIG_BSP_USING_ADC=y
+CONFIG_BSP_USING_ADC0=y
+CONFIG_BSP_USING_HWTIMER=y
+CONFIG_BSP_USING_HWTIMER0=y
+CONFIG_BSP_USING_HWTIMER1=y
+CONFIG_BSP_USING_HWTIMER2=y
+CONFIG_BSP_USING_PM=y
+CONFIG_BSP_USING_PM_WAKEPIN=y
+CONFIG_BSP_USING_PM_DTIMER=y
+CONFIG_BSP_USING_WDT=y
+CONFIG_BSP_USING_NETWORK=y
+CONFIG_BSP_USING_WLAN=y
+CONFIG_ZOS_WLAN_SSID_MAX_LENGTH=30
+CONFIG_ZOS_WLAN_BSSID_MAX_LENGTH=6
+# end of hardware
+# end of On-chip Peripheral Drivers
+
+#
+# drivers
+#
+# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
+# CONFIG_PKG_USING_BH1750 is not set
+# CONFIG_PKG_USING_EC11 is not set
+# CONFIG_PKG_USING_HCSR04 is not set
+CONFIG_PKG_USING_SPI_LCD=y
+# CONFIG_PKG_USING_MPU6XXX is not set
+# CONFIG_PKG_USING_OLED is not set
+# CONFIG_PKG_USING_SFUD is not set
+# CONFIG_PKG_USING_SHT2X is not set
+# CONFIG_PKG_USING_SHT3X is not set
+# CONFIG_PKG_USING_TOUCH is not set
+CONFIG_PKG_USING_WS2812=y
+# end of drivers
+
+#
+# kernel
+#
+# CONFIG_ZOS_NAME_MAX_7 is not set
+CONFIG_ZOS_NAME_MAX_15=y
+# CONFIG_ZOS_NAME_MAX_31 is not set
+CONFIG_ZOS_NAME_MAX=15
+
+#
+# Inter-task communication and synchronization
+#
+CONFIG_ZOS_USING_MUTEX=y
+CONFIG_ZOS_USING_SEMAPHORE=y
+CONFIG_ZOS_USING_EVENT=y
+CONFIG_ZOS_USING_MESSAGEQUEUE=y
+# end of Inter-task communication and synchronization
+
+CONFIG_ZOS_USING_DLOG=y
+CONFIG_ZOS_DLOG_BUF_SIZE=1024
+CONFIG_ZOS_DLOG_ENABLE_COLOR=y
+CONFIG_PKG_VSNPRINTF_SUPPORT_DECIMAL_SPECIFIERS=y
+CONFIG_PKG_VSNPRINTF_SUPPORT_EXPONENTIAL_SPECIFIERS=y
+CONFIG_PKG_VSNPRINTF_SUPPORT_WRITEBACK_SPECIFIER=y
+CONFIG_PKG_VSNPRINTF_SUPPORT_LONG_LONG=y
+CONFIG_PKG_VSNPRINTF_CHECK_FOR_NUL_IN_FORMAT_SPECIFIER=y
+# CONFIG_PKG_VSNPRINTF_SUPPORT_MSVC_STYLE_INTEGER_SPECIFIERS is not set
+CONFIG_PKG_VSNPRINTF_INTEGER_BUFFER_SIZE=32
+CONFIG_PKG_VSNPRINTF_DECIMAL_BUFFER_SIZE=32
+CONFIG_PKG_VSNPRINTF_DEFAULT_FLOAT_PRECISION=6
+CONFIG_PKG_VSNPRINTF_MAX_INTEGRAL_DIGITS_FOR_DECIMAL=9
+CONFIG_PKG_VSNPRINTF_LOG10_TAYLOR_TERMS=4
+CONFIG_ZOS_USING_KERNEL_DEBUG=y
+# CONFIG_KLOG_GLOBAL_LEVEL_ERROR is not set
+CONFIG_KLOG_GLOBAL_LEVEL_WARNING=y
+# CONFIG_KLOG_GLOBAL_LEVEL_INFO is not set
+# CONFIG_KLOG_GLOBAL_LEVEL_DEBUG is not set
+CONFIG_KLOG_GLOBAL_LEVEL=1
+CONFIG_KLOG_USING_COLOR=y
+CONFIG_KLOG_WITH_FUNC_LINE=y
+# end of kernel
+
+#
+# components
+#
+
+#
+# AI
+#
+# CONFIG_PKG_USING_TINYMAIX is not set
+# end of AI
+
+#
+# Cloud
+#
+CONFIG_PKG_USING_HTTP_CLIENT=y
+# CONFIG_HTTP_CLIENT_USING_SECURE is not set
+# CONFIG_HTTP_CLIENT_DEBUG is not set
+CONFIG_HTTP_CLIENT_AUTHB_SIZE=128
+CONFIG_HTTP_CLIENT_CHUNK_SIZE=1024
+CONFIG_HTTP_CLIENT_SEND_BUF_SIZE=1024
+CONFIG_HTTP_CLIENT_MAX_HOST_LEN=128
+CONFIG_HTTP_CLIENT_MAX_URL_LEN=512
+CONFIG_HTTP_CLIENT_MAX_RECV_WAIT_MS=5000
+CONFIG_HTTP_PORT=80
+CONFIG_HTTPS_PORT=443
+CONFIG_PKG_USING_MQTTCLIENT=y
+# CONFIG_MQTT_NETWORK_TYPE_TLS is not set
+CONFIG_MQTT_LOG_IS_SALOF=y
+CONFIG_SALOF_USING_LOG=y
+CONFIG_SALOF_USING_SALOF=y
+CONFIG_SALOF_BUFF_SIZE=512
+CONFIG_SALOF_FIFO_SIZE=2048
+CONFIG_SALOF_TASK_STACK_SIZE=2048
+CONFIG_SALOF_TASK_TICK=50
+# CONFIG_SALOF_LOG_COLOR is not set
+# CONFIG_SALOF_LOG_TS is not set
+# CONFIG_SALOF_LOG_TAR is not set
+# CONFIG_SALOF_USING_IDLE_HOOK is not set
+CONFIG_SALOF_LOG_LEVEL=4
+CONFIG_MQTT_LOG_LEVEL=4
+CONFIG_MQTT_VERSION=4
+CONFIG_MQTT_KEEP_ALIVE_INTERVAL=100
+CONFIG_MQTT_THREAD_STACK_SIZE=10240
+CONFIG_MQTT_THREAD_PRIO=5
+CONFIG_MQTT_THREAD_TICK=50
+CONFIG_MQTT_MAX_PACKET_ID=0xFFFE
+CONFIG_MQTT_TOPIC_LEN_MAX=64
+CONFIG_MQTT_ACK_HANDLER_NUM_MAX=64
+CONFIG_MQTT_DEFAULT_BUF_SIZE=1024
+CONFIG_MQTT_DEFAULT_CMD_TIMEOUT=4000
+CONFIG_MQTT_MAX_CMD_TIMEOUT=20000
+CONFIG_MQTT_MIN_CMD_TIMEOUT=1000
+CONFIG_MQTT_RECONNECT_DEFAULT_DURATION=1000
+CONFIG_PKG_USING_MQTT_IOT_AUTH=y
+# CONFIG_PKG_USING_MQTT_TEST is not set
+# CONFIG_PKG_USING_ONENETCLOUD is not set
+# end of Cloud
+
+#
+# File system
+#
+# CONFIG_PKG_USING_FLASHDB is not set
+CONFIG_PKG_USING_FAL=y
+CONFIG_FAL_DEBUG_CONFIG=y
+CONFIG_FAL_DEBUG=1
+CONFIG_FAL_PART_HAS_TABLE_CFG=y
+# CONFIG_FAL_USING_SFUD_PORT is not set
+CONFIG_ZOS_USING_VFS=y
+CONFIG_VFS_MOUNTPOINT_MAX=4
+CONFIG_VFS_FILESYSTEM_TYPES_MAX=4
+CONFIG_VFS_FD_MAX=16
+CONFIG_ZOS_USING_AUTO_MOUNT=y
+# CONFIG_ZOS_USING_VFS_DEVFS is not set
+CONFIG_ZOS_USING_VFS_LFS=y
+
+#
+# Little filesystem module
+#
+CONFIG_LFS_NAME_MAX=255
+CONFIG_LFS_FILE_MAX=2147483647
+CONFIG_LFS_LOOKAHEAD_SIZE=8
+CONFIG_LFS_THREADSAFE=y
+# end of Little filesystem module
+
+CONFIG_ZOS_USING_VFS_SHELL_CMD=y
+# CONFIG_ZOS_USING_VFS_USING_SPI_FLASH is not set
+# end of File system
+
+#
+# GUI
+#
+# CONFIG_PKG_USING_LVGL is not set
+# end of GUI
+
+#
+# IoT
+#
+# CONFIG_PKG_USING_AIRKISS is not set
+# CONFIG_PKG_USING_AT is not set
+CONFIG_PKG_USING_BLEFI=y
+CONFIG_PKG_USING_NETUTILS=y
+# CONFIG_PKG_NETUTILS_WEATHER is not set
+# CONFIG_PKG_NETUTILS_PING is not set
+CONFIG_PKG_NETUTILS_NTP=y
+CONFIG_NETUTILS_NTP_TIMEZONE=8
+CONFIG_PKG_NETUTILS_NTP_CMD=y
+# CONFIG_PKG_NETUTILS_NTP_DEBUG is not set
+CONFIG_NETUTILS_NTP_HOSTNAME="cn.ntp.org.cn"
+CONFIG_NETUTILS_NTP_HOSTNAME2="ntp.rt-thread.org"
+CONFIG_NETUTILS_NTP_HOSTNAME3="edu.ntp.org.cn"
+# CONFIG_PKG_USING_SMARTCONFIG is not set
+CONFIG_PKG_USING_SOFTAPCFG=y
+# end of IoT
+
+#
+# Language
+#
+CONFIG_PKG_USING_CJSON=y
+CONFIG_PKG_USING_PIKASCRIPT=y
+CONFIG_PIKASCRIPT_USING_MACHINE=y
+CONFIG_PIKASCRIPT_USING_TIME=y
+CONFIG_PIKASCRIPT_USING_NETWORK=y
+# CONFIG_PIKASCRIPT_USING_AIRKISS is not set
+# CONFIG_PIKASCRIPT_USING_SMARTCONFIG is not set
+# CONFIG_PIKASCRIPT_USING_SOFTAP is not set
+CONFIG_PIKASCRIPT_USING_BLEFI=y
+CONFIG_PIKASCRIPT_USING_LWIP=y
+CONFIG_PIKASCRIPT_USING_NTP=y
+CONFIG_PIKASCRIPT_USING_SOCKET=y
+CONFIG_PIKASCRIPT_USING_MQTT=y
+# CONFIG_PIKASCRIPT_USING_RANDOM is not set
+CONFIG_PIKASCRIPT_USING_THREAD=y
+# CONFIG_PIKASCRIPT_USING_AES is not set
+# CONFIG_PIKASCRIPT_USING_BASE64 is not set
+# CONFIG_PIKASCRIPT_USING_HASHLIB is not set
+# CONFIG_PIKASCRIPT_USING_HMAC is not set
+# CONFIG_PIKASCRIPT_USING_BINASCII is not set
+# CONFIG_PIKASCRIPT_USING_CONFIGPARSER is not set
+# CONFIG_PIKASCRIPT_USING_CTYPES is not set
+# CONFIG_PIKASCRIPT_USING_FSM is not set
+CONFIG_PIKASCRIPT_USING_JSON=y
+# CONFIG_PIKASCRIPT_USING_MATH is not set
+CONFIG_PIKASCRIPT_USING_OS=y
+# CONFIG_PIKASCRIPT_USING_PIKAMATH is not set
+CONFIG_PIKASCRIPT_USING_RE=y
+# CONFIG_PIKASCRIPT_USING_STRUCT is not set
+# CONFIG_PIKASCRIPT_USING_UNITTEST is not set
+# CONFIG_PIKASCRIPT_USING_WEAKREF is not set
+# CONFIG_PIKASCRIPT_USING_ZLIB is not set
+# end of Language
+
+#
+# C standard library adapter
+#
+CONFIG_ZOS_USING_LIBC_ADAPTER=y
+CONFIG_ZOS_USING_NEWLIB_ADAPTER=y
+CONFIG_ZOS_USING_ARMCCLIB_ADAPTER=y
+# end of C standard library adapter
+
+# CONFIG_ZOS_USING_OTA is not set
+
+#
+# security
+#
+CONFIG_PKG_USING_ZOS_CRYPTO=y
+
+#
+# mbedtls
+#
+CONFIG_SECURITY_USING_MBEDTLS=y
+# end of mbedtls
+# end of security
+
+#
+# utils
+#
+
+#
+# Shell
+#
+CONFIG_ZOS_USING_SHELL=y
+CONFIG_SHELL_TASK_NAME="shell"
+CONFIG_SHELL_TASK_PRIORITY=13
+CONFIG_SHELL_TASK_STACK_SIZE=2048
+CONFIG_SHELL_USING_HISTORY=y
+CONFIG_SHELL_HISTORY_LINES=5
+CONFIG_SHELL_USING_DESCRIPTION=y
+# CONFIG_SHELL_ECHO_DISABLE_DEFAULT is not set
+CONFIG_SHELL_CMD_SIZE=80
+CONFIG_SHELL_PROMPT_SIZE=256
+CONFIG_SHELL_ARG_MAX=10
+# CONFIG_SHELL_USING_AUTH is not set
+# end of Shell
+# end of utils
+# end of components
+
+#
+# SDK DEMO Config
+#
+# CONFIG_BSP_USING_ZeusOS_DEMO is not set
+# CONFIG_BSP_USING_HARDWARE_DEMO is not set
+# CONFIG_BSP_USING_ClOUD_DEMO is not set
+# CONFIG_BSP_USING_MQTT_DEMO is not set
+# CONFIG_BSP_USING_SLEEP_DEMO is not set
+# CONFIG_BSP_USING_HTTP_DEMO is not set
+# CONFIG_BSP_USING_HTTP_FOTA is not set
+# CONFIG_BSP_USING_SFUD_DEMO is not set
+# CONFIG_BSP_USING_FAL_DEMO is not set
+# CONFIG_BSP_USING_VFS_DEMO is not set
+# CONFIG_BSP_USING_FLASHDB_DEMO is not set
+# CONFIG_BSP_USING_LVGL_DEMO is not set
+CONFIG_BSP_USING_PikaScript_DEMO=y
+CONFIG_PKG_PIKASCRIPT_USING_AUTORUNNING=y
+# end of SDK DEMO Config
+
+#
+# QS-200 DEMO Config
+#
+# CONFIG_BSP_USING_WS2812_DEMO is not set
+# CONFIG_BSP_USING_AIRKISS_DEMO is not set
+# CONFIG_BSP_USING_SMARTCONFIG_DEMO is not set
+# CONFIG_BSP_USING_SOFTAP_DEMO is not set
+# CONFIG_BSP_USING_BLEFI_DEMO is not set
+# CONFIG_BSP_USING_ONENETCLOUD_DEMO is not set
+# end of QS-200 DEMO Config

+ 9 - 0
QS-200/.gitignore

@@ -0,0 +1,9 @@
+demo
+firmware
+build
+__pycache__
+hook
+iot
+tools
+.sconsign.dblite
+cconfig.h

+ 43 - 0
QS-200/Kconfig

@@ -0,0 +1,43 @@
+mainmenu "ZeusOS Configuration"
+#Define the relative path to root directory of os code
+OS_ROOT=../..
+
+config __ZEUSOS__
+    bool
+    default y
+BSP_HAL=QS200
+
+config VENDOR_USING_QS200
+    bool
+    select BSP_USING_PIN
+    select BSP_USING_RTC
+    select BSP_USING_RTC_ALARM
+    select BSP_USING_UART
+    select BSP_USING_UART0
+    select BSP_USING_FLASH
+    select ZOS_USING_DLOG
+    select ZOS_USING_SHELL
+    select PKG_USING_BLEFI
+    select SECURITY_USING_MBEDTLS
+    default y
+config BSP_USING_FLASH_LEN
+    int 
+    default 112
+
+config BSP_USING_FLASH_BLOCK_SIZE
+    int 
+    default 4
+
+config BSP_USING_FLASH_WRITE_GRAN
+    int 
+    default 1
+
+config ZOS_TICK_PER_SECOND
+     int 
+     default 1000
+source "$OS_ROOT/base/Kconfig"
+source "$OS_ROOT/drivers/Kconfig"
+source "$OS_ROOT/kernel/Kconfig"
+source "$OS_ROOT/components/Kconfig"
+source "$OS_ROOT/demos/Kconfig"
+source "demo/Kconfig"

+ 11 - 0
QS-200/QS200_mv.py

@@ -0,0 +1,11 @@
+import os
+import shutil
+vendor_file = os.getcwd()
+
+def remove_file():
+    print("copy zos.bin")
+    shutil.copy("./zos.bin", "../../out/QS-200")
+
+if __name__ == '__main__':
+    remove_file()
+    print('SDK编译完成,正在生成固件')

+ 14 - 0
QS-200/SConscript

@@ -0,0 +1,14 @@
+# for module compiling
+import os
+Import('OS_ROOT')
+
+cwd = str(Dir('#'))
+objs = []
+list = os.listdir(cwd)
+
+for d in list:
+    path = os.path.join(cwd, d)
+    if os.path.isfile(os.path.join(path, 'SConscript')):
+        objs = objs + SConscript(os.path.join(d, 'SConscript'))
+
+Return('objs')

+ 37 - 0
QS-200/SConstruct

@@ -0,0 +1,37 @@
+import os
+import sys
+import osconfig
+
+if os.getenv('OS_ROOT'):
+    OS_ROOT = os.getenv('OS_ROOT')
+else:
+    OS_ROOT = os.path.normpath(os.getcwd() + './../../')
+
+sys.path = sys.path + [os.path.join(OS_ROOT, './tools/scripts')]
+try:
+    from build_tools import *
+except:
+    print('Cannot found zos root directory, please check OS_ROOT')
+    print(OS_ROOT)
+    exit(-1)
+
+RESULT = 'zos.' + osconfig.RESULT_SUFFIX
+
+env = Environment(tools = ['mingw'],
+    AS = osconfig.AS, ASFLAGS = osconfig.AFLAGS,
+    CC = osconfig.CC, CCFLAGS = osconfig.CFLAGS,
+    AR = osconfig.AR, ARFLAGS = '-rc',
+    CXX = osconfig.CXX, CXXFLAGS = osconfig.CXXFLAGS,
+    LINK = osconfig.LINK, LINKFLAGS = osconfig.LFLAGS)
+env.PrependENVPath('PATH', osconfig.COMPILER_PATH)
+
+Export('OS_ROOT')
+Export('osconfig')
+
+# prepare building environment
+objs = SetupCompile(env, OS_ROOT, has_libcpu=False)
+
+Import('kernel_vdir')
+
+# make a building
+StartCompile(RESULT, objs)

+ 28 - 0
QS-200/applications/SConscript

@@ -0,0 +1,28 @@
+from build_tools import *
+
+pwd  = PresentDir()
+
+src  = []
+src  += Glob('src/*.c')
+
+CPPPATH = [pwd + '/inc']
+
+if IsDefined(['PKG_USING_LVGL']):
+    src += Glob("lvgl/*.c")
+    CPPPATH += [pwd + '/lvgl']
+    #以下是gui guider 生成文件
+    CPPPATH += [pwd + '/custom']
+    CPPPATH += [pwd + '/generated']
+    CPPPATH += [pwd + '/guider_customer_fonts']
+    src  += Glob('custom/*.c')
+    src  += Glob('generated/*.c')
+    src  += Glob('generated/guider_fonts/*.c')
+    src  += Glob('generated/images/*.c')
+
+    
+
+group = AddCodeGroup('applications', src, depend = [''], CPPPATH = CPPPATH)
+
+Return("group")
+
+

+ 65 - 0
QS-200/applications/inc/fal_cfg.h

@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2006-2018, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2018-05-17     armink       the first version
+ */
+
+#ifndef _FAL_CFG_H_
+#define _FAL_CFG_H_
+
+#include <zos.h>
+#include <zos_config.h>
+
+
+/* ===================== Flash device Configuration ========================= */
+extern const struct fal_flash_dev zos_onchip_flash;
+
+#ifdef FAL_USING_SFUD_PORT
+#define NOR_FLASH_DEV_NAME             "norflash0"
+extern struct fal_flash_dev nor_flash0;
+#define FAL_FLASH_DEV_TABLE                                          \
+{                                                                    \
+    &zos_onchip_flash,                                               \
+    &nor_flash0,                                                     \
+}
+
+#else
+
+#define FAL_FLASH_DEV_TABLE                                          \
+{                                                                    \
+    &zos_onchip_flash,                                               \
+}
+#endif
+/* flash device table */
+
+/* ====================== Partition Configuration ========================== */
+#ifdef FAL_PART_HAS_TABLE_CFG
+
+
+#ifdef FAL_USING_SFUD_PORT
+
+#define FAL_PART_TABLE                                                               \
+{                                                                                    \
+    {FAL_PART_MAGIC_WORD, "filesystem",     "zos_onchip",          0,   BSP_USING_FLASH_LEN * 1024, 0}, \
+    {FAL_PART_MAGIC_WORD,   "easyflash", NOR_FLASH_DEV_NAME,         0, 20*1024, 0}, \
+    {FAL_PART_MAGIC_WORD,    "download", NOR_FLASH_DEV_NAME, 20*1024, 1024*1024, 0}, \
+}
+
+
+#else
+
+#define FAL_PART_TABLE                                                               \
+{                                                                                    \
+    {FAL_PART_MAGIC_WORD,        "filesystem",     "zos_onchip",          0,   BSP_USING_FLASH_LEN * 1024, 0}, \
+}
+
+#endif
+/* partition table */
+
+#endif /* FAL_PART_HAS_TABLE_CFG */
+
+#endif /* _FAL_CFG_H_ */

+ 28 - 0
QS-200/applications/inc/fs_cfg.h

@@ -0,0 +1,28 @@
+/**
+ ***********************************************************************************************************************
+ * Copyright (c) 2019-2029, ZeusOS Team
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ *
+ * @file        fs_cfg.c
+ *
+ * @brief       filesystem auto mount definition
+ *
+ * @revision
+ * Date         Author          Notes
+ * 2024-03-01   ZeusOS Team     Add ZeusOS adaptation layer
+ ***********************************************************************************************************************
+ */
+#include "vfs.h"
+const struct vfs_mountinfo fs_mount_info[] = {    
+    /*       point,          part,        fs_type,  auto_format */
+    {           "/", "filesystem",      "littlefs",              1},
+    // {           "/ef", "easyflash",      "littlefs",              1},
+};

+ 228 - 0
QS-200/applications/inc/zos_config.h

@@ -0,0 +1,228 @@
+#ifndef __ZOS_CONFIG_H__
+#define __ZOS_CONFIG_H__
+
+#define __ZEUSOS__
+#define VENDOR_USING_QS200
+#define BSP_USING_FLASH_LEN 112
+#define BSP_USING_FLASH_BLOCK_SIZE 4
+#define BSP_USING_FLASH_WRITE_GRAN 1
+#define ZOS_TICK_PER_SECOND 1000
+
+/* On-chip Peripheral Drivers */
+
+/* hardware */
+
+#define BSP_USING_CONSOLE
+#define BSP_CONSOLE_DEVICE_NAME "uart0"
+#define BSP_CONSOLE_DEVICE_BAUD 115200
+#define BSP_CONSOLE_DEVICE_RECV_BUFFER_SIZE 128
+#define BSP_USING_PIN
+#define BSP_USING_UART
+#define BSP_USING_UART0
+#define BSP_USING_UART0_TXD_PIN 2
+#define BSP_USING_UART0_RXD_PIN 3
+#define BSP_USING_UART1
+#define BSP_USING_UART1_TXD_PIN 19
+#define BSP_USING_UART1_RXD_PIN 18
+#define BSP_USING_I2C
+#define BSP_USING_I2C0
+#define BSP_USING_I2C0_SCL_PIN 4
+#define BSP_USING_I2C0_SDA_PIN 5
+#define BSP_USING_SPI
+#define BSP_USING_SPI0
+#define BSP_USING_SPI0_CLK_PIN 8
+#define BSP_USING_SPI0_MOSI_PIN 7
+#define BSP_USING_SPI0_MISO_PIN 6
+#define BSP_USING_SPI0_DMA
+#define BSP_USING_PWM
+#define BSP_USING_RTC
+#define BSP_USING_RTC_ALARM
+#define BSP_USING_FLASH
+#define BSP_USING_ADC
+#define BSP_USING_ADC0
+#define BSP_USING_HWTIMER
+#define BSP_USING_HWTIMER0
+#define BSP_USING_HWTIMER1
+#define BSP_USING_HWTIMER2
+#define BSP_USING_PM
+#define BSP_USING_PM_WAKEPIN
+#define BSP_USING_PM_DTIMER
+#define BSP_USING_WDT
+#define BSP_USING_NETWORK
+#define BSP_USING_WLAN
+#define ZOS_WLAN_SSID_MAX_LENGTH 30
+#define ZOS_WLAN_BSSID_MAX_LENGTH 6
+/* end of hardware */
+/* end of On-chip Peripheral Drivers */
+
+/* drivers */
+
+#define PKG_USING_SPI_LCD
+#define PKG_USING_WS2812
+/* end of drivers */
+
+/* kernel */
+
+#define ZOS_NAME_MAX_15
+#define ZOS_NAME_MAX 15
+
+/* Inter-task communication and synchronization */
+
+#define ZOS_USING_MUTEX
+#define ZOS_USING_SEMAPHORE
+#define ZOS_USING_EVENT
+#define ZOS_USING_MESSAGEQUEUE
+/* end of Inter-task communication and synchronization */
+#define ZOS_USING_DLOG
+#define ZOS_DLOG_BUF_SIZE 1024
+#define ZOS_DLOG_ENABLE_COLOR
+#define PKG_VSNPRINTF_SUPPORT_DECIMAL_SPECIFIERS
+#define PKG_VSNPRINTF_SUPPORT_EXPONENTIAL_SPECIFIERS
+#define PKG_VSNPRINTF_SUPPORT_WRITEBACK_SPECIFIER
+#define PKG_VSNPRINTF_SUPPORT_LONG_LONG
+#define PKG_VSNPRINTF_CHECK_FOR_NUL_IN_FORMAT_SPECIFIER
+#define PKG_VSNPRINTF_INTEGER_BUFFER_SIZE 32
+#define PKG_VSNPRINTF_DECIMAL_BUFFER_SIZE 32
+#define PKG_VSNPRINTF_DEFAULT_FLOAT_PRECISION 6
+#define PKG_VSNPRINTF_MAX_INTEGRAL_DIGITS_FOR_DECIMAL 9
+#define PKG_VSNPRINTF_LOG10_TAYLOR_TERMS 4
+#define ZOS_USING_KERNEL_DEBUG
+#define KLOG_GLOBAL_LEVEL_WARNING
+#define KLOG_GLOBAL_LEVEL 1
+#define KLOG_USING_COLOR
+#define KLOG_WITH_FUNC_LINE
+/* end of kernel */
+
+/* components */
+
+/* AI */
+
+/* end of AI */
+
+/* Cloud */
+
+#define PKG_USING_HTTP_CLIENT
+#define HTTP_CLIENT_AUTHB_SIZE 128
+#define HTTP_CLIENT_CHUNK_SIZE 1024
+#define HTTP_CLIENT_SEND_BUF_SIZE 1024
+#define HTTP_CLIENT_MAX_HOST_LEN 128
+#define HTTP_CLIENT_MAX_URL_LEN 512
+#define HTTP_CLIENT_MAX_RECV_WAIT_MS 5000
+#define HTTP_PORT 80
+#define HTTPS_PORT 443
+#define PKG_USING_MQTTCLIENT
+#define MQTT_LOG_IS_SALOF
+#define SALOF_USING_LOG
+#define SALOF_USING_SALOF
+#define SALOF_BUFF_SIZE 512
+#define SALOF_FIFO_SIZE 2048
+#define SALOF_TASK_STACK_SIZE 2048
+#define SALOF_TASK_TICK 50
+#define SALOF_LOG_LEVEL 4
+#define MQTT_LOG_LEVEL 4
+#define MQTT_VERSION 4
+#define MQTT_KEEP_ALIVE_INTERVAL 100
+#define MQTT_THREAD_STACK_SIZE 10240
+#define MQTT_THREAD_PRIO 5
+#define MQTT_THREAD_TICK 50
+#define MQTT_MAX_PACKET_ID 0xFFFE
+#define MQTT_TOPIC_LEN_MAX 64
+#define MQTT_ACK_HANDLER_NUM_MAX 64
+#define MQTT_DEFAULT_BUF_SIZE 1024
+#define MQTT_DEFAULT_CMD_TIMEOUT 4000
+#define MQTT_MAX_CMD_TIMEOUT 20000
+#define MQTT_MIN_CMD_TIMEOUT 1000
+#define MQTT_RECONNECT_DEFAULT_DURATION 1000
+#define PKG_USING_MQTT_IOT_AUTH
+/* end of Cloud */
+
+/* File system */
+
+#define PKG_USING_FAL
+#define FAL_DEBUG_CONFIG
+#define FAL_DEBUG 1
+#define FAL_PART_HAS_TABLE_CFG
+#define ZOS_USING_VFS
+#define VFS_MOUNTPOINT_MAX 4
+#define VFS_FILESYSTEM_TYPES_MAX 4
+#define VFS_FD_MAX 16
+#define ZOS_USING_AUTO_MOUNT
+#define ZOS_USING_VFS_LFS
+
+/* Little filesystem module */
+
+#define LFS_NAME_MAX 255
+#define LFS_FILE_MAX 2147483647
+#define LFS_LOOKAHEAD_SIZE 8
+#define LFS_THREADSAFE
+/* end of Little filesystem module */
+#define ZOS_USING_VFS_SHELL_CMD
+/* end of File system */
+
+/* GUI */
+
+/* end of GUI */
+
+/* IoT */
+
+#define PKG_USING_BLEFI
+#define PKG_USING_NETUTILS
+#define PKG_NETUTILS_NTP
+#define NETUTILS_NTP_TIMEZONE 8
+#define PKG_NETUTILS_NTP_CMD
+#define NETUTILS_NTP_HOSTNAME "cn.ntp.org.cn"
+#define NETUTILS_NTP_HOSTNAME2 "ntp.rt-thread.org"
+#define NETUTILS_NTP_HOSTNAME3 "edu.ntp.org.cn"
+#define PKG_USING_SOFTAPCFG
+/* end of IoT */
+
+/* Language */
+
+#define PKG_USING_CJSON
+/* end of Language */
+
+/* C standard library adapter */
+
+#define ZOS_USING_LIBC_ADAPTER
+#define ZOS_USING_NEWLIB_ADAPTER
+#define ZOS_USING_ARMCCLIB_ADAPTER
+/* end of C standard library adapter */
+
+/* security */
+
+#define PKG_USING_ZOS_CRYPTO
+
+/* mbedtls */
+
+#define SECURITY_USING_MBEDTLS
+/* end of mbedtls */
+/* end of security */
+
+/* utils */
+
+/* Shell */
+
+#define ZOS_USING_SHELL
+#define SHELL_TASK_NAME "shell"
+#define SHELL_TASK_PRIORITY 13
+#define SHELL_TASK_STACK_SIZE 2048
+#define SHELL_USING_HISTORY
+#define SHELL_HISTORY_LINES 5
+#define SHELL_USING_DESCRIPTION
+#define SHELL_CMD_SIZE 80
+#define SHELL_PROMPT_SIZE 256
+#define SHELL_ARG_MAX 10
+/* end of Shell */
+/* end of utils */
+/* end of components */
+
+/* SDK DEMO Config */
+
+/* end of SDK DEMO Config */
+
+/* QS-200 DEMO Config */
+
+/* end of QS-200 DEMO Config */
+
+#endif /* __ZOS_CONFIG_H__ */
+

+ 10 - 0
QS-200/applications/inc/zos_main.h

@@ -0,0 +1,10 @@
+#ifndef __ZOS_MAIN_H__
+#define __ZOS_MAIN_H__
+
+#include "zos_util.h"
+
+
+// zos_err_t mo_network_init(void); //Detect the network connection status, and return: ZOS_EOK, failure return: ZOS_ERROR
+
+#endif /* __ZOS_MAIN_H__ */
+

+ 233 - 0
QS-200/applications/src/zos_main.c

@@ -0,0 +1,233 @@
+/**
+ * @defgroup zos main
+ */
+
+#include "zos_config.h"
+#include "zos.h"
+#include "zos_version.h"
+#include "time.h"
+#include "ntp.h"
+#ifdef ZOS_USING_OTA
+#include "zos_ota.h"
+#endif
+
+
+//如果想用带颜色的
+#define DBG_TAG "zos_main"		//代表文件名或者特定信息
+//#define DBG_LVL DBG_ERROR		//仅 LOG_E 会打印
+//#define DBG_LVL DBG_WARNING	//LOG_W 、LOG_E 都会打印
+//#define DBG_LVL DBG_INFO		//LOG_I 、LOG_W 、LOG_E 都会打印
+#define DBG_LVL DBG_LOG			//LOG_D 、LOG_I 、LOG_W 、LOG_E 都会打印
+#include "zos_dbg.h"			//想要支持颜色打印,必须先定义上面的信息,再引用 zos_dbg.h
+
+//任务全局变量
+zos_task_t user_main_task_Handle = ZOS_NULL;
+zos_task_t user_main_task_Handle1 = ZOS_NULL;
+//如果在 user_main_task 任务里面进行复杂程序,请将任务的栈改大一些
+#define USER_MAIN_STACK_SIZE       5120
+
+
+static volatile uint32_t flash_id = 0;
+
+static uint32_t err_cnt = 0;
+
+
+#if !defined(MBEDTLS_CONFIG_FILE)
+#include "mbedtls/config.h"
+#else
+#include MBEDTLS_CONFIG_FILE
+#endif
+
+#if defined(MBEDTLS_CTR_DRBG_C)
+
+#include <stdio.h>
+#include "string.h"
+#include "mbedtls/entropy.h"
+#include "mbedtls/ctr_drbg.h"
+
+int mbedtls_ctr_drbg_test(void)
+{
+    int ret;
+    uint8_t data_buf[10];
+   
+    const char *pers = "crbg_test";
+    mbedtls_entropy_context entropy;
+    mbedtls_ctr_drbg_context ctr_drbg;
+
+    /* 1. init entropy structure */
+    mbedtls_entropy_init(&entropy);
+    
+    /* 2. init ctr drbg structure */
+    mbedtls_ctr_drbg_init(&ctr_drbg);
+    
+    /* 3. update seed with we own interface ported */
+    zos_kprintf( "\n  . Seeding the random number generator..." );
+    
+    if( ( ret = mbedtls_ctr_drbg_seed( &ctr_drbg, mbedtls_entropy_func, &entropy,
+                               (const unsigned char *) pers,
+                               strlen( pers ) ) ) != 0 ) {
+        zos_kprintf( " failed\n  ! mbedtls_ctr_drbg_seed returned %d(-0x%04x)\n", ret, -ret);
+        goto exit;
+    }
+
+    zos_kprintf( " ok\n" );
+
+    /* 4. generate random data */
+    zos_kprintf( "\n  . generate random data..." );
+    
+    
+    if ( ( ret = mbedtls_ctr_drbg_random(&ctr_drbg, data_buf, sizeof(data_buf) ) ) != 0) {
+        zos_kprintf( " failed\n  ! mbedtls_ctr_drbg_random returned %d\n", ret );
+        goto exit;
+    }
+    zos_kprintf( " ok\n" );
+    
+    zos_kprintf("random data:[");
+    for (int i = 0; i < sizeof(data_buf); i++) {
+        zos_kprintf("%02x ", data_buf[i]);
+    }
+    zos_kprintf("]\r\n");
+    
+    exit:
+    
+    /* 5. release ctr drbg structure */
+    mbedtls_ctr_drbg_free(&ctr_drbg);
+    
+    /* 6. release entropy structure*/
+    mbedtls_entropy_free(&entropy);
+    
+    return ret;
+}
+
+#endif /* MBEDTLS_CTR_DRBG_C */
+
+//wlan 事件回调函数
+void wlan_coned(int event, struct zos_wlan_buff *buff, void *parameter)
+{
+
+    if(event == ZOS_WLAN_EVT_STA_CONNECTED)
+    {
+        zos_kprintf("wlan connected\r\n");
+    }
+    if(event == ZOS_WLAN_EVT_STA_CONNECTED_FAIL)
+    {  
+        zos_kprintf("wlan connected\r\n");
+    }
+    if(event == ZOS_WLAN_EVT_STA_DISCONNECTED)
+    {
+        zos_kprintf("wlan disconnected\r\n");
+    }
+    if(event == ZOS_WLAN_EVT_READY)
+    {
+
+        zos_kprintf("wlan ready = %d\r\n",*((zos_wlan_status_t*)parameter));
+    }
+    if(event == ZOS_WLAN_EVT_SCAN_REPORT)
+    {
+        zos_kprintf("wlan scan report\r\n");
+        struct zos_wlan_scan_result *result = ZOS_NULL;
+        result = zos_wlan_scan_get_result();
+        zos_kprintf("num = %d\r\n",result->num);
+        for(int x=0;x<result->num;x++)
+        {
+            zos_kprintf("[main]+CWLAP:[%02X:%02X:%02X:%02X:%02X:%02X] enc=%d,ch=%02d,rssi=%3d,ssid:\"%s\"\r\n", \
+            result->info[x].bssid[0],result->info[x].bssid[1],result->info[x].bssid[2],result->info[x].bssid[3],result->info[x].bssid[4],result->info[x].bssid[5],\
+            result->info[x].security,result->info[x].channel,result->info[x].rssi,result->info[x].ssid.val);
+    
+        }
+    }
+    if(event == ZOS_WLAN_EVT_AP_START)
+    {
+        zos_kprintf("wlan ap start\r\n");
+    }
+    if(event == ZOS_WLAN_EVT_AP_ASSOCIATED)
+    {
+        zos_kprintf("wlan ap ASSOCIATED\r\n");
+    }
+    if(event == ZOS_WLAN_EVT_AP_DISASSOCIATED)
+    {
+        zos_kprintf("wlan ap DISASSOCIATED\r\n");
+    }
+
+}
+
+
+
+
+
+void user_main_task(void *parameter)
+{
+	zos_kprintf("Hello, welcome to using QS-200 module. The ZeusOS-SDK integrates shell functions. You can send help and other commands to operate the module.\r\n");
+	LOG_I("Hello, ZeusOS %d.%d.%d",ZOS_VERSION_MAJOR,ZOS_VERSION_MINOR,ZOS_VERSION_PATCH);
+	LOG_I("欢迎使用QS-200模组3.2");
+	LOG_I("power =%d",zos_pm_get_poweron_reason());
+    // extern int lvgl_demo_init(void);
+    // lvgl_demo_init();
+    
+    //初始化wlan,并设置为sta模式
+    zos_wlan_init();
+    zos_wlan_set_mode(ZOS_WLAN_MODE_STATION);
+    LOG_D("wifi STA mode =%d",zos_wlan_get_mode());
+    
+    mbedtls_ctr_drbg_test();
+    
+
+//     //注册wlan事件回调函数,如果不需要注册,可以注销代码
+//     zos_wlan_register_event_handler(ZOS_WLAN_EVT_STA_CONNECTED,wlan_coned,ZOS_NULL);
+//     zos_wlan_register_event_handler(ZOS_WLAN_EVT_STA_CONNECTED_FAIL,wlan_coned,ZOS_NULL);
+//     zos_wlan_register_event_handler(ZOS_WLAN_EVT_STA_DISCONNECTED,wlan_coned,ZOS_NULL);
+//     zos_wlan_register_event_handler(ZOS_WLAN_EVT_READY,wlan_coned,ZOS_NULL);
+//     zos_wlan_register_event_handler(ZOS_WLAN_EVT_AP_START,wlan_coned,ZOS_NULL);
+//     zos_wlan_register_event_handler(ZOS_WLAN_EVT_AP_ASSOCIATED,wlan_coned,ZOS_NULL);
+//     zos_wlan_register_event_handler(ZOS_WLAN_EVT_AP_DISASSOCIATED,wlan_coned,ZOS_NULL);
+//     LOG_D("wifi will connect");
+
+    if(zos_wlan_is_stored() == ZOS_TRUE)
+    {
+        LOG_D("wlan will auto connect");
+        zos_wlan_auto_connect();
+    }
+    else
+    {
+        if(zos_wlan_connect("qishi_wifi","zhang1239799850") != ZOS_EOK)
+        {
+            LOG_D("wifi connect failed");
+        }
+    }
+   
+    while(zos_wlan_status() != ZOS_WLAN_STATUS_GOT_IP)
+    {
+        zos_task_msleep(1000);
+    }
+
+    //获取ntp时间,并用zos_rtc_set函数更新本地时间
+    time_t now_time = ntp_sync_to_rtc(ZOS_NULL);
+    LOG_D("ntp_get_time %ld",(long)now_time);
+    LOG_D("zos_rtc_get %ld",(long)zos_rtc_get());
+
+
+    // #ifdef ZOS_USING_OTA
+//     //上报升级结果到平台
+//     zos_ota_result_check();
+//     //OTA查询和升级程序,可以在其他地方按需求调用
+//     zos_err_t ret1 = zos_fota_exec();
+//     zos_kprintf("ret1 = %d\r\n",ret1);
+// #endif
+    
+    
+	user_main_task_Handle = ZOS_NULL;
+	zos_task_exit();
+}
+
+
+int zos_main(void)
+{
+	user_main_task_Handle = zos_task_create ("user_main_task",user_main_task,ZOS_NULL,USER_MAIN_STACK_SIZE,ZOS_TASK_PRIORITY_NORMAL);
+	if(user_main_task_Handle != ZOS_NULL)
+    {
+        zos_task_startup(user_main_task_Handle);
+    }
+    return ZOS_EOK;
+}
+
+

+ 1 - 0
QS-200/cfg/.gitignore

@@ -0,0 +1 @@
+flash_partition_table.h

+ 14 - 0
QS-200/cfg/SConscript

@@ -0,0 +1,14 @@
+from build_tools import *
+import osconfig
+
+pwd  = PresentDir()
+src  = []
+
+CPPPATH = [pwd]
+
+
+src += Glob('./*.c')
+
+group = AddCodeGroup('hal_drivers', src = src, depend = [''], CPPPATH = CPPPATH)
+
+Return('group')

+ 21 - 0
QS-200/cfg/flash_partition_cfg.json

@@ -0,0 +1,21 @@
+{
+    "Warning1":"警告,系统定义用户不可修改!!!",
+    "vendor_define":
+    [
+        {"partition_type": "BOOT",        "start_addr": "0x00000000",  "size_KB": 24  },
+        {"partition_type": "PART_TAB",    "start_addr": "0x00006000",  "size_KB": 4   }
+    ],
+
+
+    "Warning2":"以下数据,用户根据SOC flash容量以及具体需求修改,仅可以修改start_addr值和size值,且必须4KB对齐!!!",
+    "user_define":
+    [
+        {"partition_type": "APP",         "start_addr": "0x00007000",  "size_KB": 1200 },
+        {"partition_type": "OTA",         "start_addr": "0x00133000",  "size_KB": 680 },
+        {"partition_type": "NVDS",        "start_addr": "0x001DD000",  "size_KB": 12  },
+        {"partition_type": "KV",          "start_addr": "0x001E0000",  "size_KB": 16  },
+        {"partition_type": "USER",        "start_addr": "0x001E4000",  "size_KB": 112  }
+    ]
+}
+
+

+ 36 - 0
QS-200/cfg/peripheral_test.sct

@@ -0,0 +1,36 @@
+#! armcc -E
+
+#include "../cfg/flash_partition_table.h"
+#include "../../../../mcu/ln882h/mem_map_ln882h.h"
+	
+
+LR_FLASH  CACHE_FLASH_BASE+APP_SPACE_OFFSET+IMAGE_HEADER_SIZE  APP_SPACE_SIZE
+{
+    ISR_VECTOR RAM_BASE ALIGN 0x100
+    {
+        startup_*.o (RESET, +First)
+    }
+
+
+    ER_FLASH CACHE_FLASH_BASE+APP_SPACE_OFFSET+IMAGE_HEADER_SIZE+ImageLength(ISR_VECTOR)  APP_SPACE_SIZE
+    {
+        *(InRoot$$Sections)
+        .ANY (+RO)
+    }
+
+	ER_CODE ImageLimit(ISR_VECTOR) 
+    {
+        hal_flash.o(+RO)
+        hal_cache.o(+RO)
+        hal_qspi.o(+RO)
+    }
+	ER_STACK +0
+    {
+        startup_ln*(+RW +ZI)
+    }
+
+    ER_DATA +0
+    {
+		.ANY (+RW +ZI)
+    }
+}	

+ 12 - 0
QS-200/cfg/peripheral_test_ram_run.sct

@@ -0,0 +1,12 @@
+#! armcc -E
+
+#include "..\..\..\mcu\ln882h\mem_map_ln882h.h"
+
+LOAD_RAM  RAM_BASE  (RAM_BLOCK0_SIZE + RAM_BLOCK1_SIZE + RETENTION_MEM_SIZE + CACHE_MEM_SIZE)  {
+
+    BOOTRAM_EXEC_DECTION +0 ALIGN 0x100{
+        startup_*.o(RESET,+First);
+        *.o(InRoot$$Sections);
+        *.o(+RO,+RW,+ZI);
+    }
+}

+ 120 - 0
QS-200/cfg/proj_config.h

@@ -0,0 +1,120 @@
+// #ifndef _PROJ_CONFIG_H_
+// #define _PROJ_CONFIG_H_
+
+// #define DISABLE                                 (0)
+// #define ENABLE                                  (1)
+
+// /*
+//  * Clock settings section
+//  * Note:
+//  *      
+//  */
+// #define XTAL_CLOCK                              (40000000)
+// #define RCO_CLOCK                               (32000)
+// #define PLL_CLOCK                               (160000000)
+
+// //TODO: SystemCoreClock
+// #define SYSTEM_CLOCK                            (160000000)
+// /*
+//  * Module enable/disable control
+//  */
+// #define FULL_ASSERT   DISABLE
+// #define PRINTF_OMIT   DISABLE     // when release software, set 1 to omit all printf logs
+// #define PRINT_TO_RTT  DISABLE     // 1: print to segger rtt   0: print to uart1
+
+// #define FLASH_XIP     ENABLE
+
+// /*
+//  * flash image settings
+//  */
+// #define FLASH_IMAGE_VER_MAJOR       1
+// #define FLASH_IMAGE_VER_MINOR       1
+// #define SOC_CRP_FLAG                0
+
+
+
+// /*
+//  * Hardware config
+//  */
+// #define CFG_UART0_TX_BUF_SIZE      256
+// #define CFG_UART0_RX_BUF_SIZE      512
+
+// #define CFG_UART_BAUDRATE_LOG      115200
+
+
+
+// #endif /* _PROJ_CONFIG_H_ */
+
+
+#ifndef _PROJ_CONFIG_H_
+#define _PROJ_CONFIG_H_
+
+#define DISABLE                                 (0)
+#define ENABLE                                  (1)
+
+#define __CONFIG_OS_KERNEL                      RTOS_FREERTOS
+#define INCLUDE_xTaskGetHandle                  1
+#define INCLUDE_uxTaskGetStackHighWaterMark     1
+/*
+ * Clock settings section
+ * Note:
+ *      
+ */
+#define XTAL_CLOCK                              (40000000)
+#define RCO_CLOCK                               (32000)
+#define PLL_CLOCK                               (160000000)
+
+//TODO: SystemCoreClock
+#define SYSTEM_CLOCK                            (160000000)
+
+
+/*
+ * Module enable/disable control
+ */
+#define FLASH_XIP                             ENABLE
+#define LN_ASSERT_EN                          ENABLE
+#define HAL_ASSERT_EN                         ENABLE
+#define PRINTF_OMIT                           DISABLE // when release software, set 1 to omit all printf logs
+#define OS_TICK_COMPENSATE
+
+
+//Check big and endian mode
+#if defined ( __CC_ARM )
+  #if defined (__BIG_ENDIAN)
+    #error "Please set the compiler to little-endian mode"
+  #endif
+#elif defined ( __GNUC__ )
+  #if (__BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__)
+    #error "Please set the compiler to little-endian mode"
+  #endif // __BYTE_ORDER__
+#else
+  #error "Unsupported compiler"
+#endif
+
+#ifndef LITTLE_ENDIAN
+#define LITTLE_ENDIAN 1234
+#endif
+
+
+/*
+ * flash image settings
+ */
+#define FLASH_IMAGE_VER_MAJOR       0
+#define FLASH_IMAGE_VER_MINOR       1
+#define SOC_CRP_FLAG                0
+
+
+/*
+ * Hardware config
+ */
+#define CFG_UART0_TX_BUF_SIZE      256
+#define CFG_UART0_RX_BUF_SIZE      256
+#define CFG_UART1_TX_BUF_SIZE      128
+#define CFG_UART1_RX_BUF_SIZE      256
+#define CFG_UART2_TX_BUF_SIZE      128
+#define CFG_UART2_RX_BUF_SIZE      256
+
+#define CFG_UART_BAUDRATE_LOG      921600
+#define CFG_UART_BAUDRATE_CONSOLE  115200
+
+#endif /* _PROJ_CONFIG_H_ */

+ 10 - 0
QS-200/cfg/ram_run_ln882h.ini

@@ -0,0 +1,10 @@
+FUNC void Setup (void) {
+  SP = _RDWORD(0x20000000);          // Setup Stack Pointer
+  PC = _RDWORD(0x20000004);          // Setup Program Counter
+  _WDWORD(0xE000ED08, 0x20000100);   // Setup Vector Table Offset Register
+}
+
+
+load %L incremental
+
+Setup();                             // Setup for Running

+ 28 - 0
QS-200/libraries/SConscript

@@ -0,0 +1,28 @@
+from build_tools import *
+import osconfig
+
+pwd  = PresentDir()
+src  = []
+LIBS = []
+LIBPATH = []
+LIBPATH += [pwd ]             # LIBPATH 指定库的路径,表示库的搜索路径是当前目录下的'libs'目录
+LIBS += ['c', 'm']
+
+if osconfig.BUILD ==  'release':
+    if IsDefined(['ZOS_USING_OTA']):
+        LIBS += ['zos_ota_gcc']
+    LIBS += ['userapp_gcc']
+    LIBS += ['hal_drivers_gcc']
+    
+    
+
+LIBS += ['arm_cortexM4lf_math']
+LIBS += ['ln882h_ble_full_stack']
+LIBS += ['ln882h_wifi']
+
+
+    
+
+group = AddCodeGroup('libraries', src, depend=[''], LIBS = LIBS, LIBPATH=LIBPATH)
+
+Return("group")

BIN
QS-200/libraries/lib/boot_QS200.bin


BIN
QS-200/libraries/libarm_cortexM4lf_math.a


BIN
QS-200/libraries/libhal_drivers_gcc.a


BIN
QS-200/libraries/libln882h_ble_full_stack.a


BIN
QS-200/libraries/libln882h_wifi.a


BIN
QS-200/libraries/libuserapp_gcc.a


BIN
QS-200/libraries/libzos_ota_gcc.a


+ 187 - 0
QS-200/libraries/link/ln882h.ld

@@ -0,0 +1,187 @@
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
+OUTPUT_ARCH(arm)
+ENTRY(Reset_Handler)
+
+/* Linker script to configure memory regions. */
+MEMORY
+{
+  FLASH     (rx)  : ORIGIN = 0x10007100, LENGTH = 1228544
+  RAM0      (rwx) : ORIGIN = 0x20000000, LENGTH = 295K
+  RETENTION (rwx) : ORIGIN = 0x20049C00, LENGTH = 1K
+  CACHE_MEM (rwx) : ORIGIN = 0x2004A000, LENGTH = 32K
+}
+
+
+SECTIONS
+{
+	.flash_copysection :
+	{
+		__copysection_ram0_load = LOADADDR(.flash_copysection);
+		__copysection_ram0_start = .;
+		KEEP(*(.vectors))             /* startup code: ARM vectors */
+
+		*hal_qspi.o*(.text*)
+		*hal_cache.o*(.text*)
+		*hal_dma.o*(.text*)
+		*hal_rtc.o*(.text*)
+		*qspi.o*(.text*)
+		*flash.o*(.text*)
+		*port.o*(.text*)
+
+		/* Optional .text part*/
+		/*
+		*hal_uart.o*(.text)
+		*log.o*(.text)
+		*serial.o*(.text)
+		*serial_hw.o*(.text)
+		*fifobuf.o*(.text)
+		*/
+
+		. = ALIGN(4);
+		/* all RW data in ram0 of wlan shared memory and lwip pubf pool are not in this section, they are in .bss section */
+		*(.data*)
+		. = ALIGN(4);
+		/* preinit data */
+		PROVIDE_HIDDEN (__preinit_array_start = .);
+		KEEP(*(.preinit_array))
+		PROVIDE_HIDDEN (__preinit_array_end = .);
+
+		. = ALIGN(4);
+		/* init data */
+		PROVIDE_HIDDEN (__init_array_start = .);
+		KEEP(*(SORT(.init_array.*)))
+		KEEP(*(.init_array))
+		PROVIDE_HIDDEN (__init_array_end = .);
+
+		. = ALIGN(4);
+		/* finit data */
+		PROVIDE_HIDDEN (__fini_array_start = .);
+		KEEP(*(SORT(.fini_array.*)))
+		KEEP(*(.fini_array))
+		PROVIDE_HIDDEN (__fini_array_end = .);
+
+		KEEP(*(.jcr*))
+		. = ALIGN(4);
+		/* All data end */
+		__copysection_ram0_end = .;
+
+	} >RAM0 AT>FLASH
+
+	.flash_text :
+	{
+		PROVIDE(_stext = .);
+		*(.text*)
+		PROVIDE(_etext = .);
+
+		KEEP(*(.init))
+		KEEP(*(.fini))
+
+		/* .ctors */
+		*crtbegin.o(.ctors)
+		*crtbegin?.o(.ctors)
+		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
+		*(SORT(.ctors.*))
+		*(.ctors)
+
+		/* .dtors */
+ 		*crtbegin.o(.dtors)
+ 		*crtbegin?.o(.dtors)
+ 		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
+ 		*(SORT(.dtors.*))
+ 		*(.dtors)
+
+		*(.rodata*)
+
+		KEEP(*(.eh_frame*))
+
+		/* section information for ln_at */
+		. = ALIGN(4);
+		__ln_at_cmd_tbl_start = .;
+		KEEP(*(ln_at_cmd_tbl))
+		__ln_at_cmd_tbl_end = .;
+
+		. = ALIGN(4);
+        __fsymtab_start = .;
+        KEEP(*(FSymTab))
+        __fsymtab_end = .;
+
+        /* section information for initial. */
+        . = ALIGN(4);
+        __zos_init_start = .;
+        KEEP(*(SORT(.zos_init_call*)))
+        __zos_init_end = .;
+		. = ALIGN(4);
+		__zosatcmdtab_start = .;
+		KEEP(*(ZosAtCmdTab))
+		__zosatcmdtab_end = .;
+		. = ALIGN(4);
+
+	} >FLASH
+
+	/* .stack_dummy section doesn't contain any symbols. It is only
+	* used for linker to calculate size of stack sections, and assign
+	* values to stack symbols later */
+	.stack_dummy (COPY):
+	{
+		PROVIDE(__stack_start__ = .);
+		KEEP(*(.stack*))
+		PROVIDE(__c_stack_top__ = .);
+		PROVIDE(__stack_end__ = .);
+	} >RAM0
+
+	/* Location counter can end up 2byte aligned with narrow Thumb code but
+	   __etext is assumed by startup code to be the LMA of a section in RAM
+	   which must be 4byte aligned */
+	__etext = ALIGN (4);
+	.bss_ram0 (NOLOAD):
+	{
+		. = ALIGN(4);
+		__bss_ram0_start__ = .;
+		*memp.o(.bss* COMMON)
+		*(wlan_mem_local)
+		*(wlan_mem_pkt)
+		*(wlan_mem_dscr)
+		*(.bss*)
+		*(COMMON)
+		. = ALIGN(4);
+		__bss_ram0_end__ = .;
+	} >RAM0
+
+	.no_init_data (NOLOAD):
+	{
+		. = ALIGN(4);
+		*(.no_init_data)
+		*(.noinit .noinit.*)
+		. = ALIGN(4);
+		__retention_start__ = .;
+		*(retention_data)
+		. = ALIGN(4);
+		__retention_end__ = .;
+	} >RETENTION
+
+	/* Group unwind sections together: */
+	.ARM.extab : { *(.ARM.extab*) }
+	.ARM.exidx : { *(.ARM.exidx*) }
+
+	/DISCARD/ : {
+        *(.ARM.exidx.exit.text)
+        *(.ARM.extab.exit.text)
+        *(.ARM.exidx.devexit.text)
+        *(.ARM.extab.devexit.text)
+	}
+
+	/* Set stack top to end of RAM, and stack limit move down by
+	 * size of stack_dummy section */
+	PROVIDE(__StackTop = __c_stack_top__);
+	PROVIDE(__StackLimit = __stack_start__);
+	PROVIDE(__stack = __StackTop);
+
+	PROVIDE(heap0_start = __bss_ram0_end__);
+	PROVIDE(heap0_end = ORIGIN(RAM0) + LENGTH(RAM0)); /* RAM0 end */
+	PROVIDE(heap0_len = heap0_end - heap0_start);
+
+
+	/* Check if data + heap + stack exceeds RAM limit */
+	/* ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack") */
+	ASSERT(heap0_start < heap0_end, "region RAM0 overflowed with .bss")
+}

+ 86 - 0
QS-200/osconfig.py

@@ -0,0 +1,86 @@
+import os
+import platform
+import shutil
+# toolchains options
+ARCH='arm'
+CPU='cortex-m4'
+CROSS_TOOL='gcc'
+MODULE = 'QS-200'
+# bsp lib config
+BSP_LIBRARY_TYPE = None
+
+project_directory = os.getcwd()
+
+if os.getenv('OS_CC'):
+    CROSS_TOOL = os.getenv('OS_CC')
+if os.getenv('OS_ROOT'):
+    OS_ROOT = os.getenv('OS_ROOT')
+
+os_ver = platform.system()
+# cross_tool provides the cross compiler
+# COMPILER_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR
+if  CROSS_TOOL == 'gcc':
+    COMPILER    = 'gcc'
+    os_ver = platform.system()
+    if  os_ver == "Windows":
+        COMPILER_PATH   = './../../tools/gcc/bin'
+    else :
+        COMPILER_PATH   = '/usr/bin'
+
+
+if CROSS_TOOL == 'gcc' and os.getenv('OS_EXEC_PATH'):
+    COMPILER_PATH = os.getenv('OS_EXEC_PATH')
+
+BUILD = 'release'
+# BUILD = 'debug'
+
+if COMPILER == 'gcc':
+    # toolchains
+    PREFIX = 'arm-none-eabi-'
+    CC = PREFIX + 'gcc'
+    AS = PREFIX + 'gcc'
+    AR = PREFIX + 'ar'
+    CXX = PREFIX + 'gcc'
+    LINK = PREFIX + 'gcc'
+    RESULT_SUFFIX = 'elf'
+    SIZE = PREFIX + 'size'
+    OBJDUMP = PREFIX + 'objdump'
+    OBJCPY = PREFIX + 'objcopy'
+
+    DEVICE = ' -mcpu=cortex-m4 -std=gnu11 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -mabi=aapcs -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -ffreestanding -fno-strict-aliasing -mabi=aapcs --specs=nano.specs --specs=nosys.specs -Xlinker -zmuldefs -u _printf_float ' 
+   
+    
+    CFLAGS = DEVICE + ' -Wall -Wextra -g -Wundef -Wshadow -Wredundant-decls -Wstrict-prototypes -Wimplicit-function-declaration -Wmissing-prototypes -Wdouble-promotion -Wfloat-conversion -MD -MP -DLN882H -DARM_MATH_CM4 '
+    AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb '
+    LFLAGS = DEVICE + ' -Wall -Wextra -Wl,--gc-sections,-Map=zos.map,-cref,-u,Reset_Handler -T ./libraries/link/ln882h.ld '
+    # LFLAGS = DEVICE + ' -Wall -Wextra -Wl,-Map=zos.map,-cref,-u,Reset_Handler -T ./libraries/link/ln882h.ld '
+
+    CPATH = ''
+    LPATH = ''
+
+    if BUILD == 'debug':
+        CFLAGS += ' -O2 -Os'
+        AFLAGS += ' -O2 -Os'
+    else:
+        CFLAGS += ' -O2 -Os'
+        AFLAGS += ' -O2 -Os'
+
+    CXXFLAGS = CFLAGS 
+    POST_ACTION = OBJCPY + ' -O binary $TARGET zos.bin\n' + SIZE + ' $TARGET \n'
+    POST_ACTION += 'python ./tools/python_scripts/after_build_gcc.py --sdkroot_dir ./libraries --userproj_dir ./ --buildout_dir ./ --buildout_name zos -o ./../../out/QS-200/zos.bin\n'
+    if  os_ver == "Windows":
+        if os.path.exists("." + '/zos.bin ') == True :
+            os.remove("." + '/zos.bin ')
+
+        if os.path.exists("." + '/zos.map ') == True :
+            os.remove("." + '/zos.map ')
+
+        if os.path.exists("." + '/zos.elf ') == True :
+            os.remove("." + '/zos.elf ')
+        
+    else :
+        POST_ACTION += 'rm -rf *.bin *.map *.' + RESULT_SUFFIX + ' \n' 
+    os.system('python ./tools/python_scripts/before_build_gcc.py  -p ./cfg/flash_partition_cfg.json -o  ./cfg/flash_partition_table.h')
+    os.system('python ./tools/python_scripts/rewrite_ln882x_linker_script.py ./cfg/flash_partition_cfg.json ./libraries/link/ln882h.ld')
+    # POST_ACTION += 'python QS200_mv.py\n'
+

BIN
QS-200/requirements.txt


+ 80 - 0
QS-200/zos.py

@@ -0,0 +1,80 @@
+#!/usr/bin/python3
+# -*- coding: UTF-8 -*-
+import os
+import sys
+import platform
+import multiprocessing
+import serial
+import time
+from tools.Download import build
+
+
+def usage():
+    print('''
+    ZeusOS版本SDK的编译命令如下:
+
+    python zos.py [action]
+
+    <-menu> 功能描述: 开启图形化代码裁剪功能
+
+    <-mdl> 功能描述: 往模组下载程序 
+        参数: <PortNo.>:    串口号(例如com4)
+
+    示例1, 开启图形化代码裁剪功能
+    python zos.py -menu
+
+    示例2, 下载固件到模组
+    python zos.py -mdl com3
+    
+    ''')
+
+def main():
+    argc = 1
+    test_list = ['-menu','-mdl','-h']
+    os_ver = platform.system()
+    while len(sys.argv) > argc:
+        if sys.argv[argc] == "-menu" :
+            menu_cmd = "python ./../../tools/config/menuconfig.py"
+            if  os_ver == "Windows":
+                menu_cmd = "start cmd /c " + menu_cmd
+            else :
+                menu_cmd = "gnome-terminal -x " + menu_cmd    
+
+            os.system(menu_cmd)
+            print("Zeusos menuconfig 配置已开启")
+            if  os_ver == "Windows":
+                print("如果在windows下看不到图形化配置界面,请使用调用以下命令安装python包: \r\npip install windows-curses ")
+
+        elif sys.argv[argc] == '-mdl':
+            cmd_list = []
+            if  len(sys.argv) > argc+1:
+                if sys.argv[argc+1] in test_list:
+                    print("执行下载命令,需要输入串口信息。")
+                    print("例如:python zos.py -dl com3")
+                    return
+                else :
+                    cmd_list.append(sys.argv[argc+1])
+                    if  len(sys.argv) > argc+2:
+                        if sys.argv[argc+2] not in test_list:
+                            cmd_list.append(sys.argv[argc+2])
+                    build.do_download(cmd_list)
+                    argc +=1
+            else :
+                print("执行下载命令,需要输入串口信息。")
+                print("例如:python zos.py -dl com3")
+                return
+        
+        elif sys.argv[argc] == '-h':
+            usage()
+        else :
+            usage()
+        argc += 1
+        print("***********************************************************************")
+    print("操作已完成,再见")
+
+if len(sys.argv) == 1 :
+    usage()
+else :
+    main()
+
+