Jelajahi Sumber

【更新】更新 1.7.0 版本

liu2guang 1 bulan lalu
induk
melakukan
a2bdb34905
100 mengubah file dengan 7250 tambahan dan 185 penghapusan
  1. 3 3
      00_base_helloworld/SConstruct
  2. 1 1
      00_base_helloworld/rtconfig.py
  3. 5 4
      01_os_coredump/SConstruct
  4. 1 1
      01_os_coredump/rtconfig.py
  5. 5 4
      01_os_ipc_event/SConstruct
  6. 1 1
      01_os_ipc_event/rtconfig.py
  7. 5 4
      01_os_ipc_mailbox/SConstruct
  8. 1 1
      01_os_ipc_mailbox/rtconfig.py
  9. 5 4
      01_os_ipc_msg/SConstruct
  10. 1 1
      01_os_ipc_msg/rtconfig.py
  11. 5 4
      01_os_ipc_mutex/SConstruct
  12. 1 1
      01_os_ipc_mutex/rtconfig.py
  13. 5 4
      01_os_ipc_sem/SConstruct
  14. 1 1
      01_os_ipc_sem/rtconfig.py
  15. 5 4
      01_os_msh/SConstruct
  16. 1 1
      01_os_msh/rtconfig.py
  17. 5 4
      01_os_thread/SConstruct
  18. 1 1
      01_os_thread/rtconfig.py
  19. 5 4
      01_os_time/SConstruct
  20. 1 1
      01_os_time/rtconfig.py
  21. 5 4
      02_peripheral_can_send/SConstruct
  22. 1 1
      02_peripheral_can_send/rtconfig.py
  23. 3 3
      02_peripheral_flexbus_ad7606/SConstruct
  24. 1 0
      02_peripheral_flexbus_ad7606/board/board.dts
  25. 1 1
      02_peripheral_flexbus_ad7606/rtconfig.py
  26. 5 4
      02_peripheral_gpio_input/SConstruct
  27. 1 1
      02_peripheral_gpio_input/rtconfig.py
  28. 5 4
      02_peripheral_gpio_input_interrupt/SConstruct
  29. 1 1
      02_peripheral_gpio_input_interrupt/rtconfig.py
  30. 5 4
      02_peripheral_gpio_output/SConstruct
  31. 1 1
      02_peripheral_gpio_output/rtconfig.py
  32. 5 4
      02_peripheral_i2c_at24c32/SConstruct
  33. 1 1
      02_peripheral_i2c_at24c32/rtconfig.py
  34. 5 4
      02_peripheral_i2c_hym8563/SConstruct
  35. 1 1
      02_peripheral_i2c_hym8563/rtconfig.py
  36. 5 4
      02_peripheral_mipi_ruiching_4_3in_480_800/SConstruct
  37. 1 1
      02_peripheral_mipi_ruiching_4_3in_480_800/rtconfig.py
  38. 5 4
      02_peripheral_mipi_ruiching_7in_1024_600/SConstruct
  39. 1 1
      02_peripheral_mipi_ruiching_7in_1024_600/rtconfig.py
  40. 5 4
      02_peripheral_pwm/SConstruct
  41. 1 1
      02_peripheral_pwm/rtconfig.py
  42. 5 4
      02_peripheral_rs485/SConstruct
  43. 1 1
      02_peripheral_rs485/rtconfig.py
  44. 5 4
      02_peripheral_saradc/SConstruct
  45. 1 1
      02_peripheral_saradc/rtconfig.py
  46. 5 4
      02_peripheral_sdmmc/SConstruct
  47. 1 1
      02_peripheral_sdmmc/rtconfig.py
  48. 5 4
      02_peripheral_spi_norflash/SConstruct
  49. 1 1
      02_peripheral_spi_norflash/rtconfig.py
  50. 5 4
      02_peripheral_usb_device_acm/SConstruct
  51. 1 1
      02_peripheral_usb_device_acm/rtconfig.py
  52. 5 4
      02_peripheral_uvc_capture/SConstruct
  53. 15 2
      02_peripheral_uvc_capture/applications/uvc_capture.c
  54. 1 1
      02_peripheral_uvc_capture/rtconfig.py
  55. 5 4
      02_peripheral_wdg/SConstruct
  56. 1 1
      02_peripheral_wdg/rtconfig.py
  57. 5 4
      03_network_4g_webclient_get/SConstruct
  58. 1 1
      03_network_4g_webclient_get/rtconfig.py
  59. 5 4
      03_network_ftp_server/SConstruct
  60. 1 1
      03_network_ftp_server/rtconfig.py
  61. 5 4
      03_network_iperf/SConstruct
  62. 1 1
      03_network_iperf/rtconfig.py
  63. 5 4
      03_network_mqtt/SConstruct
  64. 1 1
      03_network_mqtt/rtconfig.py
  65. 5 4
      03_network_netctrl/SConstruct
  66. 1 1
      03_network_netctrl/rtconfig.py
  67. 1199 0
      03_network_opc_ua/.config
  68. 309 0
      03_network_opc_ua/.cproject
  69. 30 0
      03_network_opc_ua/.project
  70. 5 0
      03_network_opc_ua/.settings/.rtmenus
  71. 25 0
      03_network_opc_ua/.settings/language.settings.xml
  72. 41 0
      03_network_opc_ua/.settings/org.eclipse.cdt.core.prefs
  73. 3 0
      03_network_opc_ua/.settings/org.eclipse.core.runtime.prefs
  74. 21 0
      03_network_opc_ua/.settings/projcfg.ini
  75. 3140 0
      03_network_opc_ua/.settings/rk3506_board_pins.yaml
  76. 1072 0
      03_network_opc_ua/.settings/rk3506_peripheral.yaml
  77. 4 0
      03_network_opc_ua/.settings/settings.ini
  78. 13 0
      03_network_opc_ua/Kconfig
  79. 29 0
      03_network_opc_ua/SConscript
  80. 102 0
      03_network_opc_ua/SConstruct
  81. 5 0
      03_network_opc_ua/applications/Kconfig
  82. 82 0
      03_network_opc_ua/applications/SConscript
  83. 17 0
      03_network_opc_ua/applications/main.c
  84. 244 0
      03_network_opc_ua/applications/open62541_example.c
  85. 12 0
      03_network_opc_ua/board/board.dts
  86. 70 0
      03_network_opc_ua/board/ruiching-lcd-mipi-4_3-480x800.dtsi
  87. 64 0
      03_network_opc_ua/board/ruiching-lcd-mipi-7-1024x600.dtsi
  88. 29 0
      03_network_opc_ua/packages/SConscript
  89. 349 0
      03_network_opc_ua/rtconfig.h
  90. 151 0
      03_network_opc_ua/rtconfig.py
  91. 5 4
      03_network_tcp_client/SConstruct
  92. 1 1
      03_network_tcp_client/rtconfig.py
  93. 5 4
      03_network_tcp_server/SConstruct
  94. 1 1
      03_network_tcp_server/rtconfig.py
  95. 5 4
      03_network_telnet/SConstruct
  96. 1 1
      03_network_telnet/rtconfig.py
  97. 5 4
      03_network_udp_client/SConstruct
  98. 1 1
      03_network_udp_client/rtconfig.py
  99. 5 4
      03_network_udp_server/SConstruct
  100. 1 1
      03_network_udp_server/rtconfig.py

+ 3 - 3
00_base_helloworld/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -87,7 +87,7 @@ if not os.path.isdir('rt-thread'):
             variant_dir='build/sdk/', duplicate=0)
     )
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
 elif os.path.isdir('../rt-thread'):
     pass

+ 1 - 1
00_base_helloworld/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
01_os_coredump/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
01_os_coredump/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
01_os_ipc_event/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
01_os_ipc_event/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
01_os_ipc_mailbox/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
01_os_ipc_mailbox/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
01_os_ipc_msg/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
01_os_ipc_msg/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
01_os_ipc_mutex/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
01_os_ipc_mutex/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
01_os_ipc_sem/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
01_os_ipc_sem/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
01_os_msh/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
01_os_msh/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
01_os_thread/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
01_os_thread/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
01_os_time/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
01_os_time/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
02_peripheral_can_send/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
02_peripheral_can_send/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 3 - 3
02_peripheral_flexbus_ad7606/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -87,7 +87,7 @@ if not os.path.isdir('rt-thread'):
             variant_dir='build/sdk/', duplicate=0)
     )
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
 elif os.path.isdir('../rt-thread'):
     pass

+ 1 - 0
02_peripheral_flexbus_ad7606/board/board.dts

@@ -99,6 +99,7 @@
         &gpio1_b4 &gpio1_b5 &gpio1_b6 &gpio1_b7>;
 
     adc@0 {
+        hwtimer-device = "timer0";
         compatible = "adi,ad7606-8";
 
         /*

+ 1 - 1
02_peripheral_flexbus_ad7606/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
02_peripheral_gpio_input/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
02_peripheral_gpio_input/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
02_peripheral_gpio_input_interrupt/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
02_peripheral_gpio_input_interrupt/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
02_peripheral_gpio_output/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
02_peripheral_gpio_output/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
02_peripheral_i2c_at24c32/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
02_peripheral_i2c_at24c32/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
02_peripheral_i2c_hym8563/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
02_peripheral_i2c_hym8563/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
02_peripheral_mipi_ruiching_4_3in_480_800/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
02_peripheral_mipi_ruiching_4_3in_480_800/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
02_peripheral_mipi_ruiching_7in_1024_600/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
02_peripheral_mipi_ruiching_7in_1024_600/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
02_peripheral_pwm/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
02_peripheral_pwm/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
02_peripheral_rs485/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
02_peripheral_rs485/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
02_peripheral_saradc/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
02_peripheral_saradc/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
02_peripheral_sdmmc/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
02_peripheral_sdmmc/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
02_peripheral_spi_norflash/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
02_peripheral_spi_norflash/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
02_peripheral_usb_device_acm/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
02_peripheral_usb_device_acm/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
02_peripheral_uvc_capture/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 15 - 2
02_peripheral_uvc_capture/applications/uvc_capture.c

@@ -29,11 +29,11 @@ struct usbh_videoframe {
 typedef void (*frame_callback_t)(struct usbh_videoframe *frame);
 char file_path[50];
 static struct rt_semaphore sem_lock;
-bool flag = false;
+static bool flag = false;
 //  定义回调函数
 frame_callback_t uvc_function(struct usbh_videoframe *frame) {
      int fd = -1;
-     flag = true;
+
      if (frame->frame_format == 0 && flag) {
          flag = false;
          //yuv
@@ -95,6 +95,19 @@ static int uvc_capture(int argc, char *argv[])
 
     snprintf(file_path, sizeof(file_path), "%s", argv[2]);
 
+    if ((strcmp (file_path , "/data/") == 0) || (strcmp (file_path , "/tmp/") == 0)) {
+            rt_kprintf("file path exist\r\n");
+    }
+    else if ((strcmp (file_path , "/data") == 0) || (strcmp (file_path , "/tmp") == 0)) {
+            strncat( file_path, "/", sizeof(file_path) - strlen(file_path) -1 );
+    }
+    else {
+             rt_kprintf("file path does not exist\r\n");
+             rt_kprintf("File paths are only allowed to be created in the /tmp/ or /data/ \r\n");
+             return (-RT_ERROR); // 文件路径不存在
+    }
+
+    flag = true;
     frame_callback_t uvc_callback = uvc_function; // 用户定义的UVC函数
     rt_sem_init(&sem_lock, "uvc_lock", 0, RT_IPC_FLAG_PRIO);
 

+ 1 - 1
02_peripheral_uvc_capture/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
02_peripheral_wdg/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
02_peripheral_wdg/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
03_network_4g_webclient_get/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
03_network_4g_webclient_get/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
03_network_ftp_server/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
03_network_ftp_server/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
03_network_iperf/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
03_network_iperf/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
03_network_mqtt/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
03_network_mqtt/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
03_network_netctrl/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
03_network_netctrl/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 1199 - 0
03_network_opc_ua/.config

@@ -0,0 +1,1199 @@
+
+#
+# RuiChing Components Configure
+#
+
+#
+# Industrial Bus
+#
+CONFIG_COMP_USING_CANFESTIVAL=y
+CONFIG_CANFESTIVAL_CAN_DEVICE_NAME="can0"
+CONFIG_CANFESTIVAL_TIMER_DEVICE_NAME="timer0"
+CONFIG_CANFESTIVAL_RECV_THREAD_PRIO=9
+CONFIG_CANFESTIVAL_TIMER_THREAD_PRIO=10
+CONFIG_COMP_USING_ETHERCAT=y
+CONFIG_COMP_USING_MODBUS=y
+# end of Industrial Bus
+
+#
+# Net Apps
+#
+CONFIG_COMP_USING_AGILE_FTP=y
+CONFIG_COMP_USING_OPEN62541=y
+CONFIG_COMP_USING_PAHOMQTT=y
+CONFIG__PAHOMQTT_PIPE_MODE=y
+# CONFIG__PAHOMQTT_UDP_MODE is not set
+# CONFIG_MQTT_USING_TLS is not set
+CONFIG_MQTT_THREAD_STACK_SIZE=4096
+CONFIG_PAHOMQTT_SUBSCRIBE_HANDLERS=1
+CONFIG_MQTT_DEBUG=y
+CONFIG_COMP_USING_TELNET=y
+CONFIG_COMP_USING_TFTP=y
+CONFIG_NETUTILS_TFTP_PORT=69
+CONFIG_COMP_USING_WEBCLIENT=y
+# CONFIG_WEBCLIENT_DEBUG is not set
+CONFIG_WEBCLIENT_USING_FILE_DOWMLOAD=y
+# CONFIG_COMPONENTS_WEBCLIENT_NOT_USE_TLS is not set
+# CONFIG_COMPONENTS_WEBCLIENT_USING_SAL_TLS is not set
+CONFIG_COMPONENTS_WEBCLIENT_USING_MBED_TLS=y
+CONFIG_COMP_USING_WEBNET=y
+CONFIG_WEBNET_PORT=80
+CONFIG_WEBNET_CONN_MAX=16
+CONFIG_WEBNET_ROOT="/sdmmc/webnet"
+
+#
+# Select supported modules
+#
+# CONFIG_WEBNET_USING_LOG is not set
+CONFIG_WEBNET_USING_AUTH=y
+CONFIG_WEBNET_USING_CGI=y
+CONFIG_WEBNET_USING_ASP=y
+CONFIG_WEBNET_USING_SSI=y
+CONFIG_WEBNET_USING_INDEX=y
+CONFIG_WEBNET_USING_ALIAS=y
+# CONFIG_WEBNET_USING_DAV is not set
+CONFIG_WEBNET_USING_UPLOAD=y
+# CONFIG_WEBNET_USING_GZIP is not set
+CONFIG_WEBNET_CACHE_LEVEL=0
+CONFIG_WEBNET_USING_SSI_VIRTUAL_HANDLER=y
+# end of Select supported modules
+# end of Net Apps
+
+#
+# Graphics
+#
+CONFIG_COMP_USING_LVGL=y
+CONFIG_RT_LVGL_THREAD_PRIO=20
+CONFIG_RT_LVGL_THREAD_STACK_SIZE=8192
+CONFIG_LV_DEF_REFR_PERIOD=33
+# CONFIG_COMP_USING_LVGL_SQUARELINE is not set
+CONFIG_RT_LVGL_VER_NUM=0x090100
+CONFIG_RT_LVGL_VER="v9.1.0"
+CONFIG_LV_CONF_SKIP=y
+
+#
+# Color Settings
+#
+# CONFIG_COLOR_DEPTH_32 is not set
+# CONFIG_COLOR_DEPTH_24 is not set
+CONFIG_COLOR_DEPTH_16=y
+# CONFIG_COLOR_DEPTH_8 is not set
+# CONFIG_COLOR_DEPTH_1 is not set
+CONFIG_LV_COLOR_DEPTH=16
+# end of Color Settings
+
+#
+# RT-Thread rockchip rga driver
+#
+CONFIG_RT_USING_RGA=y
+# end of RT-Thread rockchip rga driver
+# end of Graphics
+
+#
+# AI
+#
+CONFIG_COMP_USING_NCNN=y
+# CONFIG_COMP_USING_OPENCV is not set
+# end of AI
+
+#
+# Data Parsers
+#
+CONFIG_COMP_USING_CJSON=y
+# CONFIG_COMP_USING_SQLITE is not set
+# end of Data Parsers
+
+#
+# Debug Tools
+#
+CONFIG_COMP_USING_BACKTRACE=y
+CONFIG_COMP_USING_COREDUMP=y
+CONFIG_COREDUMP_STORAGE_RAM=y
+# CONFIG_COREDUMP_STORAGE_FILE is not set
+# CONFIG_COREDUMP_STORAGE_FILE_AND_RAM is not set
+CONFIG_COREDUMP_MAX_SIZE_KB=2048
+CONFIG_COREDUMP_FILE_SAVE_PATH="/sdmmc/core.dump"
+CONFIG_COMP_USING_IPERF2=y
+CONFIG_IPERF_THREAD_STACK_SIZE=16384
+CONFIG_COMP_USING_RT_PERF=y
+CONFIG_RT_PERF_TIMER_FREQ=24000000
+CONFIG_RT_PERF_TIMER_BITS=32
+# CONFIG_RT_PERF_EXPORT_CSV_DATA is not set
+CONFIG_RT_PERF_ENABLE_IRQ_LATENCY=y
+CONFIG_RT_PERF_USING_TIMER_NAME="timer3"
+# end of Debug Tools
+
+#
+# Language
+#
+CONFIG_COMP_USING_LUA=y
+# CONFIG_COMP_USING_MICROPYTHON is not set
+# end of Language
+
+#
+# Security
+#
+CONFIG_COMP_USING_MBEDTLS=y
+
+#
+# Select Root Certificate
+#
+CONFIG_COMP_USING_MBEDTLS_USE_ALL_CERTS=y
+CONFIG_COMP_USING_MBEDTLS_USER_CERTS=y
+CONFIG_COMP_USING_MBEDTLS_THAWTE_ROOT_CA=y
+CONFIG_COMP_USING_MBEDTLS_VERSIGN_PBULIC_ROOT_CA=y
+CONFIG_COMP_USING_MBEDTLS_VERSIGN_UNIVERSAL_ROOT_CA=y
+CONFIG_COMP_USING_MBEDTLS_GEOTRUST_ROOT_CA=y
+CONFIG_COMP_USING_MBEDTLS_DIGICERT_ROOT_CA=y
+CONFIG_COMP_USING_MBEDTLS_GODADDY_ROOT_CA=y
+CONFIG_COMP_USING_MBEDTLS_COMODOR_ROOT_CA=y
+CONFIG_COMP_USING_MBEDTLS_DST_ROOT_CA=y
+CONFIG_COMP_USING_MBEDTLS_CLOBALSIGN_ROOT_CA=y
+CONFIG_COMP_USING_MBEDTLS_ENTRUST_ROOT_CA=y
+CONFIG_COMP_USING_MBEDTLS_AMAZON_ROOT_CA=y
+CONFIG_COMP_USING_MBEDTLS_CERTUM_TRUSTED_NETWORK_ROOT_CA=y
+# end of Select Root Certificate
+
+CONFIG_MBEDTLS_AES_ROM_TABLES=y
+CONFIG_MBEDTLS_ECP_WINDOW_SIZE=6
+CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384
+# CONFIG_COMP_USING_MBEDTLS_DEBUG is not set
+# end of Security
+# end of RuiChing Components Configure
+
+CONFIG_RT_USING_CPLUSPLUS=y
+
+#
+# RT-Thread online packages
+#
+
+#
+# IoT - internet of things
+#
+# CONFIG_PKG_USING_LORAWAN_DRIVER is not set
+# CONFIG_PKG_USING_PAHOMQTT is not set
+# CONFIG_PKG_USING_UMQTT is not set
+# CONFIG_PKG_USING_WEBCLIENT is not set
+# CONFIG_PKG_USING_WEBNET is not set
+# CONFIG_PKG_USING_MONGOOSE is not set
+# CONFIG_PKG_USING_MYMQTT is not set
+# CONFIG_PKG_USING_KAWAII_MQTT is not set
+# CONFIG_PKG_USING_BC28_MQTT is not set
+# CONFIG_PKG_USING_WEBTERMINAL is not set
+# CONFIG_PKG_USING_FREEMODBUS is not set
+# CONFIG_PKG_USING_NANOPB is not set
+# CONFIG_PKG_USING_WIFI_HOST_DRIVER is not set
+# CONFIG_PKG_USING_ESP_HOSTED is not set
+
+#
+# Wi-Fi
+#
+
+#
+# Marvell WiFi
+#
+# CONFIG_PKG_USING_WLANMARVELL is not set
+# end of Marvell WiFi
+
+#
+# Wiced WiFi
+#
+# CONFIG_PKG_USING_WLAN_WICED is not set
+# end of Wiced WiFi
+
+# CONFIG_PKG_USING_RW007 is not set
+
+#
+# CYW43012 WiFi
+#
+# CONFIG_PKG_USING_WLAN_CYW43012 is not set
+# end of CYW43012 WiFi
+
+#
+# BL808 WiFi
+#
+# CONFIG_PKG_USING_WLAN_BL808 is not set
+# end of BL808 WiFi
+
+#
+# CYW43439 WiFi
+#
+# CONFIG_PKG_USING_WLAN_CYW43439 is not set
+# end of CYW43439 WiFi
+# end of Wi-Fi
+
+# CONFIG_PKG_USING_COAP is not set
+# CONFIG_PKG_USING_NOPOLL is not set
+# CONFIG_PKG_USING_NETUTILS is not set
+# CONFIG_PKG_USING_CMUX is not set
+# CONFIG_PKG_USING_PPP_DEVICE is not set
+# CONFIG_PKG_USING_AT_DEVICE is not set
+# CONFIG_PKG_USING_ATSRV_SOCKET is not set
+# CONFIG_PKG_USING_WIZNET is not set
+# CONFIG_PKG_USING_ZB_COORDINATOR is not set
+
+#
+# IoT Cloud
+#
+# CONFIG_PKG_USING_ONENET is not set
+# CONFIG_PKG_USING_GAGENT_CLOUD is not set
+# CONFIG_PKG_USING_ALI_IOTKIT is not set
+# CONFIG_PKG_USING_AZURE is not set
+# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set
+# CONFIG_PKG_USING_JIOT-C-SDK is not set
+# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
+# CONFIG_PKG_USING_JOYLINK is not set
+# CONFIG_PKG_USING_IOTSHARP_SDK is not set
+# end of IoT Cloud
+
+# CONFIG_PKG_USING_NIMBLE is not set
+# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
+# CONFIG_PKG_USING_OTA_DOWNLOADER is not set
+# CONFIG_PKG_USING_IPMSG is not set
+# CONFIG_PKG_USING_LSSDP is not set
+# CONFIG_PKG_USING_AIRKISS_OPEN is not set
+# CONFIG_PKG_USING_LIBRWS is not set
+# CONFIG_PKG_USING_TCPSERVER is not set
+# CONFIG_PKG_USING_PROTOBUF_C is not set
+# CONFIG_PKG_USING_DLT645 is not set
+# CONFIG_PKG_USING_QXWZ is not set
+# CONFIG_PKG_USING_SMTP_CLIENT is not set
+# CONFIG_PKG_USING_ABUP_FOTA is not set
+# CONFIG_PKG_USING_LIBCURL2RTT is not set
+# CONFIG_PKG_USING_CAPNP is not set
+# CONFIG_PKG_USING_AGILE_TELNET is not set
+# CONFIG_PKG_USING_NMEALIB is not set
+# CONFIG_PKG_USING_PDULIB is not set
+# CONFIG_PKG_USING_BTSTACK is not set
+# CONFIG_PKG_USING_BT_CYW43012 is not set
+# CONFIG_PKG_USING_CYW43XX is not set
+# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
+# CONFIG_PKG_USING_WAYZ_IOTKIT is not set
+# CONFIG_PKG_USING_MAVLINK is not set
+# CONFIG_PKG_USING_BSAL is not set
+# CONFIG_PKG_USING_AGILE_MODBUS is not set
+# CONFIG_PKG_USING_AGILE_FTP is not set
+# CONFIG_PKG_USING_EMBEDDEDPROTO is not set
+# CONFIG_PKG_USING_RT_LINK_HW is not set
+# CONFIG_PKG_USING_RYANMQTT is not set
+# CONFIG_PKG_USING_RYANW5500 is not set
+# CONFIG_PKG_USING_LORA_PKT_FWD is not set
+# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set
+# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set
+# CONFIG_PKG_USING_HM is not set
+# CONFIG_PKG_USING_SMALL_MODBUS is not set
+# CONFIG_PKG_USING_NET_SERVER is not set
+# CONFIG_PKG_USING_ZFTP is not set
+# CONFIG_PKG_USING_WOL is not set
+# CONFIG_PKG_USING_ZEPHYR_POLLING is not set
+# CONFIG_PKG_USING_MATTER_ADAPTATION_LAYER is not set
+# CONFIG_PKG_USING_LHC_MODBUS is not set
+# CONFIG_PKG_USING_QMODBUS is not set
+# CONFIG_PKG_USING_PNET is not set
+# CONFIG_PKG_USING_OPENER is not set
+# CONFIG_PKG_USING_FREEMQTT is not set
+# end of IoT - internet of things
+
+#
+# security packages
+#
+# CONFIG_PKG_USING_MBEDTLS is not set
+# CONFIG_PKG_USING_LIBSODIUM is not set
+# CONFIG_PKG_USING_LIBHYDROGEN is not set
+# CONFIG_PKG_USING_TINYCRYPT is not set
+# CONFIG_PKG_USING_TFM is not set
+# CONFIG_PKG_USING_YD_CRYPTO is not set
+# end of security packages
+
+#
+# language packages
+#
+
+#
+# JSON: JavaScript Object Notation, a lightweight data-interchange format
+#
+# CONFIG_PKG_USING_CJSON is not set
+# CONFIG_PKG_USING_LJSON is not set
+# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
+# CONFIG_PKG_USING_RAPIDJSON is not set
+# CONFIG_PKG_USING_JSMN is not set
+# CONFIG_PKG_USING_AGILE_JSMN is not set
+# CONFIG_PKG_USING_PARSON is not set
+# CONFIG_PKG_USING_RYAN_JSON is not set
+# end of JSON: JavaScript Object Notation, a lightweight data-interchange format
+
+#
+# XML: Extensible Markup Language
+#
+# CONFIG_PKG_USING_SIMPLE_XML is not set
+# CONFIG_PKG_USING_EZXML is not set
+# end of XML: Extensible Markup Language
+
+# CONFIG_PKG_USING_LUATOS_SOC is not set
+# CONFIG_PKG_USING_LUA is not set
+# CONFIG_PKG_USING_JERRYSCRIPT is not set
+# CONFIG_PKG_USING_MICROPYTHON is not set
+# CONFIG_PKG_USING_PIKASCRIPT is not set
+# CONFIG_PKG_USING_RTT_RUST is not set
+# end of language packages
+
+#
+# multimedia packages
+#
+
+#
+# LVGL: powerful and easy-to-use embedded GUI library
+#
+# CONFIG_PKG_USING_LVGL is not set
+# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
+# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
+# end of LVGL: powerful and easy-to-use embedded GUI library
+
+#
+# u8g2: a monochrome graphic library
+#
+# CONFIG_PKG_USING_U8G2_OFFICIAL is not set
+# CONFIG_PKG_USING_U8G2 is not set
+# end of u8g2: a monochrome graphic library
+
+# CONFIG_PKG_USING_OPENMV is not set
+# CONFIG_PKG_USING_MUPDF is not set
+# CONFIG_PKG_USING_STEMWIN is not set
+# CONFIG_PKG_USING_WAVPLAYER is not set
+# CONFIG_PKG_USING_TJPGD is not set
+# CONFIG_PKG_USING_PDFGEN is not set
+# CONFIG_PKG_USING_HELIX is not set
+# CONFIG_PKG_USING_AZUREGUIX is not set
+# CONFIG_PKG_USING_TOUCHGFX2RTT is not set
+# CONFIG_PKG_USING_NUEMWIN is not set
+# CONFIG_PKG_USING_MP3PLAYER is not set
+# CONFIG_PKG_USING_TINYJPEG is not set
+# CONFIG_PKG_USING_UGUI is not set
+# CONFIG_PKG_USING_MCURSES is not set
+# CONFIG_PKG_USING_TERMBOX is not set
+# CONFIG_PKG_USING_VT100 is not set
+# CONFIG_PKG_USING_QRCODE is not set
+# CONFIG_PKG_USING_GUIENGINE is not set
+# CONFIG_PKG_USING_3GPP_AMRNB is not set
+# end of multimedia packages
+
+#
+# tools packages
+#
+# CONFIG_PKG_USING_CMBACKTRACE is not set
+# CONFIG_PKG_USING_MCOREDUMP is not set
+# CONFIG_PKG_USING_EASYFLASH is not set
+# CONFIG_PKG_USING_EASYLOGGER is not set
+# CONFIG_PKG_USING_SYSTEMVIEW is not set
+# CONFIG_PKG_USING_SEGGER_RTT is not set
+# CONFIG_PKG_USING_RTT_AUTO_EXE_CMD is not set
+# CONFIG_PKG_USING_RDB is not set
+# CONFIG_PKG_USING_ULOG_EASYFLASH is not set
+# CONFIG_PKG_USING_LOGMGR is not set
+# CONFIG_PKG_USING_ADBD is not set
+# CONFIG_PKG_USING_COREMARK is not set
+# CONFIG_PKG_USING_DHRYSTONE is not set
+# CONFIG_PKG_USING_MEMORYPERF is not set
+# CONFIG_PKG_USING_NR_MICRO_SHELL is not set
+# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set
+# CONFIG_PKG_USING_LUNAR_CALENDAR is not set
+# CONFIG_PKG_USING_BS8116A is not set
+# CONFIG_PKG_USING_GPS_RMC is not set
+# CONFIG_PKG_USING_URLENCODE is not set
+# CONFIG_PKG_USING_UMCN is not set
+# CONFIG_PKG_USING_LWRB2RTT is not set
+# CONFIG_PKG_USING_CPU_USAGE is not set
+# CONFIG_PKG_USING_GBK2UTF8 is not set
+# CONFIG_PKG_USING_VCONSOLE is not set
+# CONFIG_PKG_USING_KDB is not set
+# CONFIG_PKG_USING_WAMR is not set
+# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set
+# CONFIG_PKG_USING_LWLOG is not set
+# CONFIG_PKG_USING_ANV_TRACE is not set
+# CONFIG_PKG_USING_ANV_MEMLEAK is not set
+# CONFIG_PKG_USING_ANV_TESTSUIT is not set
+# CONFIG_PKG_USING_ANV_BENCH is not set
+# CONFIG_PKG_USING_DEVMEM is not set
+# CONFIG_PKG_USING_REGEX is not set
+# CONFIG_PKG_USING_MEM_SANDBOX is not set
+# CONFIG_PKG_USING_SOLAR_TERMS is not set
+# CONFIG_PKG_USING_GAN_ZHI is not set
+# CONFIG_PKG_USING_FDT is not set
+# CONFIG_PKG_USING_CBOX is not set
+# CONFIG_PKG_USING_SNOWFLAKE is not set
+# CONFIG_PKG_USING_HASH_MATCH is not set
+# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
+# CONFIG_PKG_USING_VOFA_PLUS is not set
+# CONFIG_PKG_USING_ZDEBUG is not set
+# CONFIG_PKG_USING_RVBACKTRACE is not set
+# CONFIG_PKG_USING_HPATCHLITE is not set
+# CONFIG_PKG_USING_THREAD_METRIC is not set
+# CONFIG_PKG_USING_UORB is not set
+# CONFIG_PKG_USING_RT_TUNNEL is not set
+# CONFIG_PKG_USING_VIRTUAL_TERMINAL is not set
+# end of tools packages
+
+#
+# system packages
+#
+
+#
+# enhanced kernel services
+#
+# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
+# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
+# end of enhanced kernel services
+
+# CONFIG_PKG_USING_AUNITY is not set
+
+#
+# acceleration: Assembly language or algorithmic acceleration packages
+#
+# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
+# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
+# CONFIG_PKG_USING_QFPLIB_M3 is not set
+# end of acceleration: Assembly language or algorithmic acceleration packages
+
+#
+# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
+#
+# CONFIG_PKG_USING_CMSIS_5 is not set
+# CONFIG_PKG_USING_CMSIS_CORE is not set
+# CONFIG_PKG_USING_CMSIS_NN is not set
+# CONFIG_PKG_USING_CMSIS_RTOS1 is not set
+# CONFIG_PKG_USING_CMSIS_RTOS2 is not set
+# end of CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
+
+#
+# Micrium: Micrium software products porting for RT-Thread
+#
+# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set
+# CONFIG_PKG_USING_UCOSII_WRAPPER is not set
+# CONFIG_PKG_USING_UC_CRC is not set
+# CONFIG_PKG_USING_UC_CLK is not set
+# CONFIG_PKG_USING_UC_COMMON is not set
+# CONFIG_PKG_USING_UC_MODBUS is not set
+# end of Micrium: Micrium software products porting for RT-Thread
+
+# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
+# CONFIG_PKG_USING_LITEOS_SDK is not set
+# CONFIG_PKG_USING_TZ_DATABASE is not set
+# CONFIG_PKG_USING_CAIRO is not set
+# CONFIG_PKG_USING_PIXMAN is not set
+# CONFIG_PKG_USING_PARTITION is not set
+# CONFIG_PKG_USING_PERF_COUNTER is not set
+# CONFIG_PKG_USING_FILEX is not set
+# CONFIG_PKG_USING_LEVELX is not set
+# CONFIG_PKG_USING_FLASHDB is not set
+# CONFIG_PKG_USING_SQLITE is not set
+# CONFIG_PKG_USING_RTI is not set
+# CONFIG_PKG_USING_DFS_YAFFS is not set
+# CONFIG_PKG_USING_LITTLEFS is not set
+# CONFIG_PKG_USING_DFS_JFFS2 is not set
+# CONFIG_PKG_USING_DFS_UFFS is not set
+# CONFIG_PKG_USING_LWEXT4 is not set
+# CONFIG_PKG_USING_THREAD_POOL is not set
+# CONFIG_PKG_USING_ROBOTS is not set
+# CONFIG_PKG_USING_EV is not set
+# CONFIG_PKG_USING_SYSWATCH is not set
+# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set
+# CONFIG_PKG_USING_PLCCORE is not set
+# CONFIG_PKG_USING_RAMDISK is not set
+# CONFIG_PKG_USING_MININI is not set
+# CONFIG_PKG_USING_QBOOT is not set
+# CONFIG_PKG_USING_PPOOL is not set
+# CONFIG_PKG_USING_OPENAMP is not set
+# CONFIG_PKG_USING_RPMSG_LITE is not set
+# CONFIG_PKG_USING_LPM is not set
+# CONFIG_PKG_USING_TLSF is not set
+# CONFIG_PKG_USING_EVENT_RECORDER is not set
+# CONFIG_PKG_USING_ARM_2D is not set
+# CONFIG_PKG_USING_MCUBOOT is not set
+# CONFIG_PKG_USING_TINYUSB is not set
+# CONFIG_PKG_USING_KMULTI_RTIMER is not set
+# CONFIG_PKG_USING_TFDB is not set
+# CONFIG_PKG_USING_QPC is not set
+# CONFIG_PKG_USING_AGILE_UPGRADE is not set
+# CONFIG_PKG_USING_FLASH_BLOB is not set
+# CONFIG_PKG_USING_MLIBC is not set
+# CONFIG_PKG_USING_TASK_MSG_BUS is not set
+# CONFIG_PKG_USING_UART_FRAMEWORK is not set
+# CONFIG_PKG_USING_SFDB is not set
+# CONFIG_PKG_USING_RTP is not set
+# CONFIG_PKG_USING_REB is not set
+# CONFIG_PKG_USING_RMP is not set
+# CONFIG_PKG_USING_R_RHEALSTONE is not set
+# CONFIG_PKG_USING_HEARTBEAT is not set
+# CONFIG_PKG_USING_MICRO_ROS_RTTHREAD_PACKAGE is not set
+# CONFIG_PKG_USING_CHERRYECAT is not set
+# end of system packages
+
+#
+# peripheral libraries and drivers
+#
+
+#
+# HAL & SDK Drivers
+#
+
+#
+# STM32 HAL & SDK Drivers
+#
+# CONFIG_PKG_USING_STM32F0_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32F0_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_STM32F1_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32F1_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_STM32F2_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32F2_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_STM32F3_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32F3_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_STM32F4_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32F4_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_STM32F7_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32F7_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_STM32G0_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32G0_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_STM32G4_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32G4_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_STM32H5_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32H5_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_STM32H7_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32H7_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_STM32H7RS_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32H7RS_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_STM32L0_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32L0_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_STM32L4_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32L4_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_STM32L5_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32L5_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_STM32U5_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32U5_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_STM32WB55_SDK is not set
+# CONFIG_PKG_USING_STM32_SDIO is not set
+# CONFIG_PKG_USING_STM32WL_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32WL_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_STM32WB_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32WB_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_STM32MP1_M4_HAL_DRIVER is not set
+# CONFIG_PKG_USING_STM32MP1_M4_CMSIS_DRIVER is not set
+# end of STM32 HAL & SDK Drivers
+
+#
+# Infineon HAL Packages
+#
+# CONFIG_PKG_USING_INFINEON_CAT1CM0P is not set
+# CONFIG_PKG_USING_INFINEON_CMSIS is not set
+# CONFIG_PKG_USING_INFINEON_CORE_LIB is not set
+# CONFIG_PKG_USING_INFINEON_MTB_HAL_CAT1 is not set
+# CONFIG_PKG_USING_INFINEON_MTB_PDL_CAT1 is not set
+# CONFIG_PKG_USING_INFINEON_RETARGET_IO is not set
+# CONFIG_PKG_USING_INFINEON_CAPSENSE is not set
+# CONFIG_PKG_USING_INFINEON_CSDIDAC is not set
+# CONFIG_PKG_USING_INFINEON_SERIAL_FLASH is not set
+# CONFIG_PKG_USING_INFINEON_USBDEV is not set
+# end of Infineon HAL Packages
+
+# CONFIG_PKG_USING_BLUETRUM_SDK is not set
+# CONFIG_PKG_USING_EMBARC_BSP is not set
+# CONFIG_PKG_USING_ESP_IDF is not set
+
+#
+# Kendryte SDK
+#
+# CONFIG_PKG_USING_K210_SDK is not set
+# CONFIG_PKG_USING_KENDRYTE_SDK is not set
+# end of Kendryte SDK
+
+# CONFIG_PKG_USING_NRF5X_SDK is not set
+# CONFIG_PKG_USING_NRFX is not set
+# CONFIG_PKG_USING_RASPBERRYPI_PICO_RP2350_SDK is not set
+# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
+# CONFIG_PKG_USING_MM32 is not set
+
+#
+# WCH HAL & SDK Drivers
+#
+# CONFIG_PKG_USING_CH32V20x_SDK is not set
+# CONFIG_PKG_USING_CH32V307_SDK is not set
+# end of WCH HAL & SDK Drivers
+
+#
+# AT32 HAL & SDK Drivers
+#
+# CONFIG_PKG_USING_AT32A403A_HAL_DRIVER is not set
+# CONFIG_PKG_USING_AT32A403A_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_AT32A423_HAL_DRIVER is not set
+# CONFIG_PKG_USING_AT32A423_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_AT32F45x_HAL_DRIVER is not set
+# CONFIG_PKG_USING_AT32F45x_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_AT32F402_405_HAL_DRIVER is not set
+# CONFIG_PKG_USING_AT32F402_405_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_AT32F403A_407_HAL_DRIVER is not set
+# CONFIG_PKG_USING_AT32F403A_407_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_AT32F413_HAL_DRIVER is not set
+# CONFIG_PKG_USING_AT32F413_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_AT32F415_HAL_DRIVER is not set
+# CONFIG_PKG_USING_AT32F415_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_AT32F421_HAL_DRIVER is not set
+# CONFIG_PKG_USING_AT32F421_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_AT32F423_HAL_DRIVER is not set
+# CONFIG_PKG_USING_AT32F423_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_AT32F425_HAL_DRIVER is not set
+# CONFIG_PKG_USING_AT32F425_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_AT32F435_437_HAL_DRIVER is not set
+# CONFIG_PKG_USING_AT32F435_437_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_AT32M412_416_HAL_DRIVER is not set
+# CONFIG_PKG_USING_AT32M412_416_CMSIS_DRIVER is not set
+# end of AT32 HAL & SDK Drivers
+
+#
+# HC32 DDL Drivers
+#
+# CONFIG_PKG_USING_HC32F3_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_HC32F3_SERIES_DRIVER is not set
+# CONFIG_PKG_USING_HC32F4_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_HC32F4_SERIES_DRIVER is not set
+# end of HC32 DDL Drivers
+
+#
+# NXP HAL & SDK Drivers
+#
+# CONFIG_PKG_USING_NXP_MCX_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_NXP_MCX_SERIES_DRIVER is not set
+# CONFIG_PKG_USING_NXP_LPC_DRIVER is not set
+# CONFIG_PKG_USING_NXP_LPC55S_DRIVER is not set
+# CONFIG_PKG_USING_NXP_IMX6SX_DRIVER is not set
+# CONFIG_PKG_USING_NXP_IMX6UL_DRIVER is not set
+# CONFIG_PKG_USING_NXP_IMXRT_DRIVER is not set
+# end of NXP HAL & SDK Drivers
+
+#
+# NUVOTON Drivers
+#
+# CONFIG_PKG_USING_NUVOTON_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_NUVOTON_SERIES_DRIVER is not set
+# CONFIG_PKG_USING_NUVOTON_ARM926_LIB is not set
+# end of NUVOTON Drivers
+
+#
+# GD32 Drivers
+#
+# CONFIG_PKG_USING_GD32_ARM_CMSIS_DRIVER is not set
+# CONFIG_PKG_USING_GD32_ARM_SERIES_DRIVER is not set
+# end of GD32 Drivers
+
+#
+# HPMicro SDK
+#
+# CONFIG_PKG_USING_HPM_SDK is not set
+# end of HPMicro SDK
+# end of HAL & SDK Drivers
+
+#
+# sensors drivers
+#
+# CONFIG_PKG_USING_LSM6DSM is not set
+# CONFIG_PKG_USING_LSM6DSL is not set
+# CONFIG_PKG_USING_LPS22HB is not set
+# CONFIG_PKG_USING_HTS221 is not set
+# CONFIG_PKG_USING_LSM303AGR is not set
+# CONFIG_PKG_USING_BME280 is not set
+# CONFIG_PKG_USING_BME680 is not set
+# CONFIG_PKG_USING_BMA400 is not set
+# CONFIG_PKG_USING_BMI160_BMX160 is not set
+# CONFIG_PKG_USING_SPL0601 is not set
+# CONFIG_PKG_USING_MS5805 is not set
+# CONFIG_PKG_USING_DA270 is not set
+# CONFIG_PKG_USING_DF220 is not set
+# CONFIG_PKG_USING_HSHCAL001 is not set
+# CONFIG_PKG_USING_BH1750 is not set
+# CONFIG_PKG_USING_MPU6XXX is not set
+# CONFIG_PKG_USING_AHT10 is not set
+# CONFIG_PKG_USING_AP3216C is not set
+# CONFIG_PKG_USING_TSL4531 is not set
+# CONFIG_PKG_USING_DS18B20 is not set
+# CONFIG_PKG_USING_DHT11 is not set
+# CONFIG_PKG_USING_DHTXX is not set
+# CONFIG_PKG_USING_GY271 is not set
+# CONFIG_PKG_USING_GP2Y10 is not set
+# CONFIG_PKG_USING_SGP30 is not set
+# CONFIG_PKG_USING_HDC1000 is not set
+# CONFIG_PKG_USING_BMP180 is not set
+# CONFIG_PKG_USING_BMP280 is not set
+# CONFIG_PKG_USING_SHTC1 is not set
+# CONFIG_PKG_USING_BMI088 is not set
+# CONFIG_PKG_USING_HMC5883 is not set
+# CONFIG_PKG_USING_MAX6675 is not set
+# CONFIG_PKG_USING_MAX31855 is not set
+# CONFIG_PKG_USING_TMP1075 is not set
+# CONFIG_PKG_USING_SR04 is not set
+# CONFIG_PKG_USING_CCS811 is not set
+# CONFIG_PKG_USING_PMSXX is not set
+# CONFIG_PKG_USING_RT3020 is not set
+# CONFIG_PKG_USING_MLX90632 is not set
+# CONFIG_PKG_USING_MLX90382 is not set
+# CONFIG_PKG_USING_MLX90393 is not set
+# CONFIG_PKG_USING_MLX90392 is not set
+# CONFIG_PKG_USING_MLX90394 is not set
+# CONFIG_PKG_USING_MLX90396 is not set
+# CONFIG_PKG_USING_MLX90397 is not set
+# CONFIG_PKG_USING_MS5611 is not set
+# CONFIG_PKG_USING_MAX31865 is not set
+# CONFIG_PKG_USING_VL53L0X is not set
+# CONFIG_PKG_USING_INA260 is not set
+# CONFIG_PKG_USING_MAX30102 is not set
+# CONFIG_PKG_USING_INA226 is not set
+# CONFIG_PKG_USING_LIS2DH12 is not set
+# CONFIG_PKG_USING_HS300X is not set
+# CONFIG_PKG_USING_ZMOD4410 is not set
+# CONFIG_PKG_USING_ISL29035 is not set
+# CONFIG_PKG_USING_MMC3680KJ is not set
+# CONFIG_PKG_USING_QMP6989 is not set
+# CONFIG_PKG_USING_BALANCE is not set
+# CONFIG_PKG_USING_SHT2X is not set
+# CONFIG_PKG_USING_SHT3X is not set
+# CONFIG_PKG_USING_SHT4X is not set
+# CONFIG_PKG_USING_AD7746 is not set
+# CONFIG_PKG_USING_ADT74XX is not set
+# CONFIG_PKG_USING_MAX17048 is not set
+# CONFIG_PKG_USING_AS7341 is not set
+# CONFIG_PKG_USING_CW2015 is not set
+# CONFIG_PKG_USING_ICM20608 is not set
+# CONFIG_PKG_USING_PAJ7620 is not set
+# CONFIG_PKG_USING_STHS34PF80 is not set
+# CONFIG_PKG_USING_P3T1755 is not set
+# CONFIG_PKG_USING_QMI8658 is not set
+# CONFIG_PKG_USING_ICM20948 is not set
+# end of sensors drivers
+
+#
+# touch drivers
+#
+# CONFIG_PKG_USING_GT9147 is not set
+# CONFIG_PKG_USING_GT1151 is not set
+# CONFIG_PKG_USING_GT917S is not set
+# CONFIG_PKG_USING_GT911 is not set
+# CONFIG_PKG_USING_FT6206 is not set
+# CONFIG_PKG_USING_FT5426 is not set
+# CONFIG_PKG_USING_FT6236 is not set
+# CONFIG_PKG_USING_XPT2046_TOUCH is not set
+# CONFIG_PKG_USING_CST816X is not set
+# CONFIG_PKG_USING_CST812T is not set
+# end of touch drivers
+
+# CONFIG_PKG_USING_REALTEK_AMEBA is not set
+# CONFIG_PKG_USING_BUTTON is not set
+# CONFIG_PKG_USING_PCF8574 is not set
+# CONFIG_PKG_USING_SX12XX is not set
+# CONFIG_PKG_USING_SIGNAL_LED is not set
+# CONFIG_PKG_USING_LEDBLINK is not set
+# CONFIG_PKG_USING_LITTLED is not set
+# CONFIG_PKG_USING_LKDGUI is not set
+# CONFIG_PKG_USING_INFRARED is not set
+# CONFIG_PKG_USING_MULTI_INFRARED is not set
+# CONFIG_PKG_USING_AGILE_BUTTON is not set
+# CONFIG_PKG_USING_AGILE_LED is not set
+# CONFIG_PKG_USING_AT24CXX is not set
+# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set
+# CONFIG_PKG_USING_PCA9685 is not set
+# CONFIG_PKG_USING_ILI9341 is not set
+# CONFIG_PKG_USING_I2C_TOOLS is not set
+# CONFIG_PKG_USING_NRF24L01 is not set
+# CONFIG_PKG_USING_RPLIDAR is not set
+# CONFIG_PKG_USING_AS608 is not set
+# CONFIG_PKG_USING_RC522 is not set
+# CONFIG_PKG_USING_WS2812B is not set
+# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set
+# CONFIG_PKG_USING_MULTI_RTIMER is not set
+# CONFIG_PKG_USING_MAX7219 is not set
+# CONFIG_PKG_USING_BEEP is not set
+# CONFIG_PKG_USING_EASYBLINK is not set
+# CONFIG_PKG_USING_PMS_SERIES is not set
+# CONFIG_PKG_USING_CAN_YMODEM is not set
+# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set
+# CONFIG_PKG_USING_QLED is not set
+# CONFIG_PKG_USING_AGILE_CONSOLE is not set
+# CONFIG_PKG_USING_LD3320 is not set
+# CONFIG_PKG_USING_WK2124 is not set
+# CONFIG_PKG_USING_LY68L6400 is not set
+# CONFIG_PKG_USING_DM9051 is not set
+# CONFIG_PKG_USING_SSD1306 is not set
+# CONFIG_PKG_USING_QKEY is not set
+# CONFIG_PKG_USING_RS485 is not set
+# CONFIG_PKG_USING_RS232 is not set
+# CONFIG_PKG_USING_NES is not set
+# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set
+# CONFIG_PKG_USING_VDEVICE is not set
+# CONFIG_PKG_USING_SGM706 is not set
+# CONFIG_PKG_USING_RDA58XX is not set
+# CONFIG_PKG_USING_LIBNFC is not set
+# CONFIG_PKG_USING_MFOC is not set
+# CONFIG_PKG_USING_TMC51XX is not set
+# CONFIG_PKG_USING_TCA9534 is not set
+# CONFIG_PKG_USING_KOBUKI is not set
+# CONFIG_PKG_USING_ROSSERIAL is not set
+# CONFIG_PKG_USING_MICRO_ROS is not set
+# CONFIG_PKG_USING_MCP23008 is not set
+# CONFIG_PKG_USING_MISAKA_AT24CXX is not set
+# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set
+# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set
+# CONFIG_PKG_USING_SOFT_SERIAL is not set
+# CONFIG_PKG_USING_MB85RS16 is not set
+# CONFIG_PKG_USING_RFM300 is not set
+# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
+# CONFIG_PKG_USING_LRF_NV7LIDAR is not set
+# CONFIG_PKG_USING_AIP650 is not set
+# CONFIG_PKG_USING_FINGERPRINT is not set
+# CONFIG_PKG_USING_BT_ECB02C is not set
+# CONFIG_PKG_USING_UAT is not set
+# CONFIG_PKG_USING_ST7789 is not set
+# CONFIG_PKG_USING_VS1003 is not set
+# CONFIG_PKG_USING_X9555 is not set
+# CONFIG_PKG_USING_SYSTEM_RUN_LED is not set
+# CONFIG_PKG_USING_BT_MX01 is not set
+# CONFIG_PKG_USING_RGPOWER is not set
+# CONFIG_PKG_USING_BT_MX02 is not set
+# CONFIG_PKG_USING_GC9A01 is not set
+# CONFIG_PKG_USING_IK485 is not set
+# CONFIG_PKG_USING_SERVO is not set
+# CONFIG_PKG_USING_SEAN_WS2812B is not set
+# CONFIG_PKG_USING_IST8310 is not set
+# CONFIG_PKG_USING_ST7789_SPI is not set
+# CONFIG_PKG_USING_SPI_TOOLS is not set
+# end of peripheral libraries and drivers
+
+#
+# AI packages
+#
+# CONFIG_PKG_USING_LIBANN is not set
+# CONFIG_PKG_USING_NNOM is not set
+# CONFIG_PKG_USING_ONNX_BACKEND is not set
+# CONFIG_PKG_USING_ONNX_PARSER is not set
+# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set
+# CONFIG_PKG_USING_ELAPACK is not set
+# CONFIG_PKG_USING_ULAPACK is not set
+# CONFIG_PKG_USING_QUEST is not set
+# CONFIG_PKG_USING_NAXOS is not set
+# CONFIG_PKG_USING_R_TINYMAIX is not set
+# CONFIG_PKG_USING_LLMCHAT is not set
+# end of AI packages
+
+#
+# Signal Processing and Control Algorithm Packages
+#
+# CONFIG_PKG_USING_APID is not set
+# CONFIG_PKG_USING_FIRE_PID_CURVE is not set
+# CONFIG_PKG_USING_QPID is not set
+# CONFIG_PKG_USING_UKAL is not set
+# CONFIG_PKG_USING_DIGITALCTRL is not set
+# CONFIG_PKG_USING_KISSFFT is not set
+# end of Signal Processing and Control Algorithm Packages
+
+#
+# miscellaneous packages
+#
+
+#
+# project laboratory
+#
+# end of project laboratory
+
+#
+# samples: kernel and components samples
+#
+# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
+# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
+# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
+# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
+# end of samples: kernel and components samples
+
+#
+# entertainment: terminal games and other interesting software packages
+#
+# CONFIG_PKG_USING_CMATRIX is not set
+# CONFIG_PKG_USING_SL is not set
+# CONFIG_PKG_USING_CAL is not set
+# CONFIG_PKG_USING_ACLOCK is not set
+# CONFIG_PKG_USING_THREES is not set
+# CONFIG_PKG_USING_2048 is not set
+# CONFIG_PKG_USING_SNAKE is not set
+# CONFIG_PKG_USING_TETRIS is not set
+# CONFIG_PKG_USING_DONUT is not set
+# CONFIG_PKG_USING_COWSAY is not set
+# CONFIG_PKG_USING_MORSE is not set
+# end of entertainment: terminal games and other interesting software packages
+
+# CONFIG_PKG_USING_LIBCSV is not set
+# CONFIG_PKG_USING_OPTPARSE is not set
+# CONFIG_PKG_USING_FASTLZ is not set
+# CONFIG_PKG_USING_MINILZO is not set
+# CONFIG_PKG_USING_QUICKLZ is not set
+# CONFIG_PKG_USING_LZMA is not set
+# CONFIG_PKG_USING_RALARAM is not set
+# CONFIG_PKG_USING_MULTIBUTTON is not set
+# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
+# CONFIG_PKG_USING_CANFESTIVAL is not set
+# CONFIG_PKG_USING_ZLIB is not set
+# CONFIG_PKG_USING_MINIZIP is not set
+# CONFIG_PKG_USING_HEATSHRINK is not set
+# CONFIG_PKG_USING_DSTR is not set
+# CONFIG_PKG_USING_TINYFRAME is not set
+# CONFIG_PKG_USING_KENDRYTE_DEMO is not set
+# CONFIG_PKG_USING_UPACKER is not set
+# CONFIG_PKG_USING_UPARAM is not set
+# CONFIG_PKG_USING_HELLO is not set
+# CONFIG_PKG_USING_VI is not set
+# CONFIG_PKG_USING_KI is not set
+# CONFIG_PKG_USING_ARMv7M_DWT is not set
+# CONFIG_PKG_USING_CRCLIB is not set
+# CONFIG_PKG_USING_LIBCRC is not set
+# CONFIG_PKG_USING_LWGPS is not set
+# CONFIG_PKG_USING_STATE_MACHINE is not set
+# CONFIG_PKG_USING_DESIGN_PATTERN is not set
+# CONFIG_PKG_USING_CONTROLLER is not set
+# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set
+# CONFIG_PKG_USING_MFBD is not set
+# CONFIG_PKG_USING_SLCAN2RTT is not set
+# CONFIG_PKG_USING_SOEM is not set
+# CONFIG_PKG_USING_QPARAM is not set
+# CONFIG_PKG_USING_CorevMCU_CLI is not set
+# CONFIG_PKG_USING_DRMP is not set
+# end of miscellaneous packages
+
+#
+# Arduino libraries
+#
+# CONFIG_PKG_USING_RTDUINO is not set
+
+#
+# Projects and Demos
+#
+# CONFIG_PKG_USING_ARDUINO_MSGQ_C_CPP_DEMO is not set
+# CONFIG_PKG_USING_ARDUINO_SKETCH_LOADER_DEMO is not set
+# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set
+# CONFIG_PKG_USING_ARDUINO_RTDUINO_SENSORFUSION_SHIELD is not set
+# CONFIG_PKG_USING_ARDUINO_NINEINONE_SENSOR_SHIELD is not set
+# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set
+# CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set
+# end of Projects and Demos
+
+#
+# Sensors
+#
+# CONFIG_PKG_USING_ARDUINO_SENSOR_DEVICE_DRIVERS is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSORLAB is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL375 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L0X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L1X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL6180X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31855 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31865 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31856 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX6675 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90614 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS1 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS0 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP280 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADT7410 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME680 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9808 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4728 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA219 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR390 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL345 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DHT is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9600 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM6DS is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO055 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX1704X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMC56X3 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90393 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90395 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ICM20X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DPS310 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTS221 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT4X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT31 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL343 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME280 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS726X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AMG88XX is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2320 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2315 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR329_LTR303 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085_UNIFIED is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183_UNIFIED is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP3XX is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MS8607 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3MDL is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90640 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMA8451 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MSA301 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL115A2 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X_RVC is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS2MDL is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303DLH_MAG is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LC709203F is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CAP1188 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CCS811 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_NAU7802 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS331 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS2X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS35HW is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303_ACCEL is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3DH is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8591 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL3115A2 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPR121 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPRLS is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPU6050 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCT2075 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PM25AQI is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_EMC2101 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXAS21002C is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SCD30 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXOS8700 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HMC5883_UNIFIED is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP30 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP006 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TLA202X is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCS34725 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI7021 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI1145 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP40 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHTC3 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HDC1000 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU21DF is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS7341 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU31D is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA260 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP007_LIBRARY is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_L3GD20 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP117 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSC2007 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2561 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2591_LIBRARY is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VCNL4040 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6070 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6075 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML7700 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_DHT is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL335 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL345 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_BME280 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_H3LIS331DL is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_MMA7660 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_TSL2561 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_PAJ7620 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_VL53L0X is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_ITG3200 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_SHT31 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_HP20X is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_DRV2605L is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_BBM150 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_HMC5883L is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_LSM303DLH is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_TCS3414CS is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_MP503 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_BMP085 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_HIGHTEMP is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_VEML6070 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_SI1145 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_SHT35 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_AT42QT1070 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_LSM6DS3 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_HDC1000 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_HM3301 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_MCP9600 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_LTC2941 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_LDC1612 is not set
+# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set
+# CONFIG_PKG_USING_ARDUINO_JARZEBSKI_MPU6050 is not set
+# end of Sensors
+
+#
+# Display
+#
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set
+# CONFIG_PKG_USING_ARDUINO_U8G2 is not set
+# CONFIG_PKG_USING_ARDUINO_TFT_ESPI is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ST7735 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set
+# CONFIG_PKG_USING_SEEED_TM1637 is not set
+# end of Display
+
+#
+# Timing
+#
+# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set
+# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set
+# CONFIG_PKG_USING_ARDUINO_TICKER is not set
+# CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set
+# end of Timing
+
+#
+# Data Processing
+#
+# CONFIG_PKG_USING_ARDUINO_KALMANFILTER is not set
+# CONFIG_PKG_USING_ARDUINO_ARDUINOJSON is not set
+# CONFIG_PKG_USING_ARDUINO_TENSORFLOW_LITE_MICRO is not set
+# CONFIG_PKG_USING_ARDUINO_RUNNINGMEDIAN is not set
+# end of Data Processing
+
+#
+# Data Storage
+#
+
+#
+# Communication
+#
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PN532 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI4713 is not set
+# end of Communication
+
+#
+# Device Control
+#
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8574 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCA9685 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TPA2016 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DRV2605 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS1841 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DS3502 is not set
+# CONFIG_PKG_USING_ARDUINO_SEEED_PCF85063TP is not set
+# end of Device Control
+
+#
+# Other
+#
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set
+# end of Other
+
+#
+# Signal IO
+#
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCA8418 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP23017 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADS1X15 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AW9523 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP3008 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4725 is not set
+# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BD3491FS is not set
+# end of Signal IO
+
+#
+# Uncategorized
+#
+# end of Arduino libraries
+# end of RT-Thread online packages

+ 309 - 0
03_network_opc_ua/.cproject

@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+	<storageModule moduleId="org.eclipse.cdt.core.settings">
+		<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.MachO64" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.Cygwin_PE" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.MachO" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.XCOFF32" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactName="app" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="${cross_rm} -rf" description="" errorParsers="org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.CWDLocator;org.eclipse.cdt.core.GCCErrorParser" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094" name="Debug" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug" postannouncebuildStep="" postbuildStep="" prebuildStep="">
+					<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094." name="/" resourcePath="">
+						<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug.1201710416" name="ARM Cross GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug">
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash.251260409" name="Create flash image" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash" useByScannerDiscovery="false" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.1365878149" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" useByScannerDiscovery="false"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize.709136944" name="Print size" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize" useByScannerDiscovery="false" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.1986446770" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.none" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.1312975261" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" useByScannerDiscovery="true" value="false" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.1538128212" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" useByScannerDiscovery="true" value="false" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.2136804218" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" useByScannerDiscovery="true" value="false" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.244767666" name="Data sections (-fdata-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections" useByScannerDiscovery="true" value="false" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.1055848773" name="Debug level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.default" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.501941135" name="Debug format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.dwarf2" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name.1696308067" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name" useByScannerDiscovery="false" value="GNU Tools for ARM Embedded Processors" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.1558403188" name="Architecture" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.architecture" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.arm" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family.749415257" name="ARM family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcpu.cortex-a7" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.2114153533" name="Instruction set" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.default" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix.1600865811" name="Prefix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix" useByScannerDiscovery="false" value="arm-none-eabi-" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.c.1109963929" name="C compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.c" useByScannerDiscovery="false" value="gcc" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp.1040883831" name="C++ compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp" useByScannerDiscovery="false" value="g++" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar.1678200391" name="Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar" useByScannerDiscovery="false" value="ar" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy.1171840296" name="Hex/Bin converter" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy" useByScannerDiscovery="false" value="objcopy" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump.342604837" name="Listing generator" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump" useByScannerDiscovery="false" value="objdump" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.size.898269225" name="Size command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.size" useByScannerDiscovery="false" value="size" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.make.2016398076" name="Build command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.make" useByScannerDiscovery="false" value="make" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm.1606171496" name="Remove command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm" useByScannerDiscovery="false" value="rm" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.id.540792084" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.id" useByScannerDiscovery="false" value="1287942917" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.architecture.430121817" name="Architecture" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.architecture" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.arch.armv7-a" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.966735324" name="Float ABI" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.soft" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn.1381561249" name="Enable all common warnings (-Wall)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn" useByScannerDiscovery="true" value="false" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.target.other.2041717463" name="Other target flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.target.other" useByScannerDiscovery="true" value="" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.1463655269" name="FPU Type" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.vfpv4" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.other.1724910394" name="Other optimization flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.other" useByScannerDiscovery="true" value="" valueType="string"/>
+							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.MachO64;org.eclipse.cdt.core.Cygwin_PE;org.eclipse.cdt.core.MachO;org.eclipse.cdt.core.PE;org.eclipse.cdt.core.XCOFF32;org.eclipse.cdt.core.GNU_ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1798638225" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
+							<builder buildPath="${workspace_loc:/${ProjName}/" cleanBuildTarget="clean" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1736709688" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="GNU Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
+							<tool commandLinePattern="${COMMAND} ${cross_toolchain_flags} ${FLAGS} -c ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1810966071" name="GNU ARM Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1072524326" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.161242639" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths" useByScannerDiscovery="true" valueType="includePath"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs.1521934876" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs" useByScannerDiscovery="true" valueType="definedSymbols"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.flags.1325367962" name="Assembler flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.flags" useByScannerDiscovery="false" valueType="stringList"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.other.647856572" name="Other assembler flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.other" useByScannerDiscovery="false" value="" valueType="string"/>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.1843333483" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
+							</tool>
+							<tool commandLinePattern="${COMMAND} ${cross_toolchain_flags} ${FLAGS} -c ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1570350559" name="GNU ARM Cross C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.634882052" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="true" valueType="includePath"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.100549972" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.other.2133065240" name="Other compiler flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.other" useByScannerDiscovery="true" value="" valueType="string"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.files.714348818" name="Include files (-include)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.files" useByScannerDiscovery="true" valueType="includeFiles"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.131617712" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.c99" valueType="enumerated"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.otheroptimizations.721912492" name="Other optimization flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.otheroptimizations" useByScannerDiscovery="true" value="" valueType="string"/>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.992053063" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"/>
+							</tool>
+							<tool commandLinePattern="${COMMAND}  ${cross_toolchain_flags} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.869072473" name="Cross ARM C Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections.1167322178" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.nostart.351692886" name="Do not use standard start files (-nostartfiles)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.nostart" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.nostdlibs.1009243715" name="No startup or default libs (-nostdlib)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.nostdlibs" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.nodeflibs.2016026082" name="Do not use default libraries (-nodefaultlibs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.nodeflibs" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano.923990336" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option defaultValue="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.shared.548869459" name="Shared (-shared)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.shared" useByScannerDiscovery="false" valueType="boolean"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.scriptfile.1818777301" name="Script files (-T)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.scriptfile" useByScannerDiscovery="false" valueType="stringList"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.libs.1135656995" name="Libraries (-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.libs" useByScannerDiscovery="false" valueType="libs"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.paths.36884122" name="Library search path (-L)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.paths" useByScannerDiscovery="false" valueType="libPaths"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.other.396049466" name="Other linker flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.other" useByScannerDiscovery="false" value="" valueType="string"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.cref.1645737861" name="Cross reference (-Xlinker --cref)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.cref" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.mapfilename.1305977580" name="Generate map" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.mapfilename" useByScannerDiscovery="false" value="" valueType="string"/>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.input.334732222" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool commandLinePattern="${COMMAND} ${cross_toolchain_flags}  ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.1601059928" name="GNU ARM Cross C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections.437759352" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile.1101974459" name="Script files (-T)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile" useByScannerDiscovery="false" valueType="stringList"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.cref.2007675975" name="Cross reference (-Xlinker --cref)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.cref" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnano.2105838438" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnano" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs.934137837" name="Libraries (-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs" useByScannerDiscovery="false" valueType="libs"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostart.2118356996" name="Do not use standard start files (-nostartfiles)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostart" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nodeflibs.1427884346" name="Do not use default libraries (-nodefaultlibs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nodeflibs" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostdlibs.1433863653" name="No startup or default libs (-nostdlib)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostdlibs" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printgcsections.1387745410" name="Print removed sections (-Xlinker --print-gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printgcsections" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.strip.1230158061" name="Omit all symbol information (-s)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.strip" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printmap.1307581821" name="Print link map (-Xlinker --print-map)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printmap" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.useprintffloat.960778920" name="Use float with nano printf (-u _printf_float)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.useprintffloat" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usescanffloat.637205035" name="Use float with nano scanf (-u _scanf_float)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usescanffloat" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnosys.1948314201" name="Do not use syscalls (--specs=nosys.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnosys" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.verbose.273162112" name="Verbose (-v)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.verbose" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths.1399535143" name="Library search path (-L)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths" useByScannerDiscovery="false" valueType="libPaths"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other.882307902" name="Other linker flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other" useByScannerDiscovery="false" value="" valueType="string"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.mapfilename.889820765" name="Generate map" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.mapfilename" useByScannerDiscovery="false" value="&quot;${BuildArtifactFileBaseName}.map&quot;" valueType="string"/>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input.262373798" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.506412204" name="GNU ARM Cross Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.1461589245" name="GNU ARM Cross Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.1937707052" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.82359725" name="GNU ARM Cross Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.601724476" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders.692505279" name="Display all headers (--all-headers|-x)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle.97345172" name="Demangle names (--demangle|-C)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers.1342893377" name="Display line numbers (--line-numbers|-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide.1533725981" name="Wide lines (--wide|-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide" value="true" valueType="boolean"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize.1073550295" name="GNU ARM Cross Print Size" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.946451386" name="Size format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.berkeley" valueType="enumerated"/>
+							</tool>
+							<tool commandLinePattern="${COMMAND} ${cross_toolchain_flags} ${FLAGS} -c ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1302177015" name="GNU ARM Cross C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler">
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.704468062" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths.302877723" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths" useByScannerDiscovery="true" valueType="includePath"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.files.343249373" name="Include files (-include)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.files" useByScannerDiscovery="true" valueType="includeFiles"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.other.465079095" name="Other compiler flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.other" useByScannerDiscovery="true" value="" valueType="string"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std.1577307670" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std.cpp11" valueType="enumerated"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.abiversion.1627353016" name="ABI version" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.abiversion" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.abiversion.default" valueType="enumerated"/>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.45918001" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input"/>
+							</tool>
+						</toolChain>
+					</folderInfo>
+					<sourceEntries></sourceEntries>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+			<storageModule moduleId="ilg.gnumcueclipse.managedbuild.packs"/>
+		</cconfiguration>
+		<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191" moduleId="org.eclipse.cdt.core.settings" name="Release">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.MachO64" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.Cygwin_PE" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.MachO" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.XCOFF32" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration artifactName="app" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="${cross_rm} -rf" description="" errorParsers="org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.CWDLocator;org.eclipse.cdt.core.GCCErrorParser" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191" name="Release" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug" postannouncebuildStep="" postbuildStep="" prebuildStep="">
+					<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191." name="/" resourcePath="">
+						<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug.540923187" name="ARM Cross GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug">
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash.105373379" name="Create flash image" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash" useByScannerDiscovery="false" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.447444900" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" useByScannerDiscovery="false"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize.2108785534" name="Print size" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize" useByScannerDiscovery="false" value="true" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.626661742" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.more" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.1372815586" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" useByScannerDiscovery="true" value="false" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.1234811548" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" useByScannerDiscovery="true" value="false" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.461867811" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" useByScannerDiscovery="true" value="false" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.1855461602" name="Data sections (-fdata-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections" useByScannerDiscovery="true" value="false" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.1095868530" name="Debug level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.default" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.1735911175" name="Debug format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.dwarf2" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name.1988920893" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name" useByScannerDiscovery="false" value="GNU Tools for ARM Embedded Processors" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.895868468" name="Architecture" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.architecture" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.arm" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family.2110652900" name="ARM family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcpu.cortex-a7" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.63510496" name="Instruction set" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.default" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix.2106713994" name="Prefix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix" useByScannerDiscovery="false" value="arm-none-eabi-" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.c.1684005354" name="C compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.c" useByScannerDiscovery="false" value="gcc" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp.1459153495" name="C++ compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp" useByScannerDiscovery="false" value="g++" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar.1000099072" name="Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar" useByScannerDiscovery="false" value="ar" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy.1424707063" name="Hex/Bin converter" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy" useByScannerDiscovery="false" value="objcopy" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump.1788437882" name="Listing generator" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump" useByScannerDiscovery="false" value="objdump" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.size.1319258362" name="Size command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.size" useByScannerDiscovery="false" value="size" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.make.2144978288" name="Build command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.make" useByScannerDiscovery="false" value="make" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm.670315674" name="Remove command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm" useByScannerDiscovery="false" value="rm" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.id.1208081038" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.id" useByScannerDiscovery="false" value="1287942917" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.architecture.237434881" name="Architecture" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.architecture" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.arch.armv7-a" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.151776458" name="Float ABI" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.soft" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn.806485976" name="Enable all common warnings (-Wall)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn" useByScannerDiscovery="true" value="false" valueType="boolean"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.target.other.1316162235" name="Other target flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.target.other" useByScannerDiscovery="true" value="" valueType="string"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.402457120" name="FPU Type" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.vfpv4" valueType="enumerated"/>
+							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.other.408156752" name="Other optimization flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.other" useByScannerDiscovery="true" value="" valueType="string"/>
+							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.MachO64;org.eclipse.cdt.core.Cygwin_PE;org.eclipse.cdt.core.MachO;org.eclipse.cdt.core.PE;org.eclipse.cdt.core.XCOFF32;org.eclipse.cdt.core.GNU_ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1703269343" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
+							<builder buildPath="${workspace_loc:/${ProjName}/" cleanBuildTarget="clean" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1942708580" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="GNU Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
+							<tool commandLinePattern="${COMMAND} ${cross_toolchain_flags} ${FLAGS} -c ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.401026099" name="GNU ARM Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1498338359" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.199928699" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths" useByScannerDiscovery="true" valueType="includePath"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs.1364648978" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs" useByScannerDiscovery="true" valueType="definedSymbols"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.flags.18404482" name="Assembler flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.flags" useByScannerDiscovery="false" valueType="stringList"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.other.1856083487" name="Other assembler flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.other" useByScannerDiscovery="false" value="" valueType="string"/>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.1632846976" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
+							</tool>
+							<tool commandLinePattern="${COMMAND} ${cross_toolchain_flags} ${FLAGS} -c ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1865875109" name="GNU ARM Cross C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.2138487964" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="true" valueType="includePath"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.909894" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.other.662847431" name="Other compiler flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.other" useByScannerDiscovery="true" value="" valueType="string"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.files.615662558" name="Include files (-include)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.files" useByScannerDiscovery="true" valueType="includeFiles"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.924531809" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.c99" valueType="enumerated"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.otheroptimizations.1316480870" name="Other optimization flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.otheroptimizations" useByScannerDiscovery="true" value="" valueType="string"/>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.2009124944" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"/>
+							</tool>
+							<tool commandLinePattern="${COMMAND}  ${cross_toolchain_flags} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.1346495024" name="Cross ARM C Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections.1323783741" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.nostart.1673360950" name="Do not use standard start files (-nostartfiles)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.nostart" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.nostdlibs.264209656" name="No startup or default libs (-nostdlib)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.nostdlibs" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.nodeflibs.1973060286" name="Do not use default libraries (-nodefaultlibs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.nodeflibs" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano.1846564482" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option defaultValue="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.shared.1189476072" name="Shared (-shared)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.shared" useByScannerDiscovery="false" valueType="boolean"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.scriptfile.372240565" name="Script files (-T)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.scriptfile" useByScannerDiscovery="false" valueType="stringList"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.libs.1514398965" name="Libraries (-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.libs" useByScannerDiscovery="false" valueType="libs"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.paths.1685695517" name="Library search path (-L)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.paths" useByScannerDiscovery="false" valueType="libPaths"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.other.943567307" name="Other linker flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.other" useByScannerDiscovery="false" value="" valueType="string"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.cref.1035825948" name="Cross reference (-Xlinker --cref)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.cref" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.mapfilename.1460553562" name="Generate map" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.mapfilename" useByScannerDiscovery="false" value="" valueType="string"/>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.input.880751235" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool commandLinePattern="${COMMAND} ${cross_toolchain_flags}  ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.94227981" name="GNU ARM Cross C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections.1491970233" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile.1265138352" name="Script files (-T)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile" useByScannerDiscovery="false" valueType="stringList"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.cref.1675469416" name="Cross reference (-Xlinker --cref)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.cref" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnano.373492857" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnano" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs.1666590567" name="Libraries (-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs" useByScannerDiscovery="false" valueType="libs"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostart.1831020492" name="Do not use standard start files (-nostartfiles)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostart" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nodeflibs.1786498181" name="Do not use default libraries (-nodefaultlibs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nodeflibs" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostdlibs.1599605622" name="No startup or default libs (-nostdlib)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostdlibs" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printgcsections.465119480" name="Print removed sections (-Xlinker --print-gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printgcsections" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.strip.1489709339" name="Omit all symbol information (-s)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.strip" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printmap.953861876" name="Print link map (-Xlinker --print-map)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printmap" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.useprintffloat.859953061" name="Use float with nano printf (-u _printf_float)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.useprintffloat" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usescanffloat.1520283483" name="Use float with nano scanf (-u _scanf_float)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usescanffloat" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnosys.1274899548" name="Do not use syscalls (--specs=nosys.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnosys" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.verbose.2085269896" name="Verbose (-v)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.verbose" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths.1231480761" name="Library search path (-L)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths" useByScannerDiscovery="false" valueType="libPaths"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other.562887910" name="Other linker flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other" useByScannerDiscovery="false" value="" valueType="string"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.mapfilename.889820765" name="Generate map" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.mapfilename" useByScannerDiscovery="false" value="&quot;${BuildArtifactFileBaseName}.map&quot;" valueType="string"/>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input.257111382" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.850734406" name="GNU ARM Cross Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.1958114867" name="GNU ARM Cross Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.2074130512" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.251351850" name="GNU ARM Cross Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.920524899" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders.1892556485" name="Display all headers (--all-headers|-x)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle.1954331664" name="Demangle names (--demangle|-C)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers.1134683115" name="Display line numbers (--line-numbers|-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers" value="true" valueType="boolean"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide.990766070" name="Wide lines (--wide|-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide" value="true" valueType="boolean"/>
+							</tool>
+							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize.722394223" name="GNU ARM Cross Print Size" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize">
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.649905801" name="Size format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.berkeley" valueType="enumerated"/>
+							</tool>
+							<tool commandLinePattern="${COMMAND} ${cross_toolchain_flags} ${FLAGS} -c ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.189862873" name="GNU ARM Cross C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler">
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.344888428" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths.269113009" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths" useByScannerDiscovery="true" valueType="includePath"/>
+								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.files.706279079" name="Include files (-include)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.files" useByScannerDiscovery="true" valueType="includeFiles"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.other.1502742809" name="Other compiler flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.other" useByScannerDiscovery="true" value="" valueType="string"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std.340262771" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std.cpp11" valueType="enumerated"/>
+								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.abiversion.157430079" name="ABI version" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.abiversion" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.abiversion.default" valueType="enumerated"/>
+								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1101040960" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input"/>
+							</tool>
+						</toolChain>
+					</folderInfo>
+					<sourceEntries></sourceEntries>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+			<storageModule moduleId="ilg.gnumcueclipse.managedbuild.packs"/>
+		</cconfiguration>
+	</storageModule>
+	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+		<project id="qemu-vexpress-a9.ilg.gnuarmeclipse.managedbuild.cross.target.elf.860020518" name="Executable" projectType="ilg.gnuarmeclipse.managedbuild.cross.target.elf"/>
+	</storageModule>
+	<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+	<storageModule moduleId="refreshScope" versionNumber="2">
+		<configuration configurationName="Debug">
+			<resource resourceType="PROJECT" workspacePath="/gpio_input"/>
+		</configuration>
+	</storageModule>
+	<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+	<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings">
+		<doc-comment-owner id="org.eclipse.cdt.ui.doxygen">
+			<path value=""/>
+		</doc-comment-owner>
+	</storageModule>
+	<storageModule moduleId="scannerConfiguration"/>
+</cproject>

+ 30 - 0
03_network_opc_ua/.project

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+  <name>gpio_input</name>
+  <comment />
+  <projects>
+    </projects>
+  <buildSpec>
+    <buildCommand>
+      <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+      <triggers>clean,full,incremental,</triggers>
+      <arguments>
+            </arguments>
+    </buildCommand>
+    <buildCommand>
+      <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+      <triggers>full,incremental,</triggers>
+      <arguments>
+            </arguments>
+    </buildCommand>
+  </buildSpec>
+  <natures>
+    <nature>org.eclipse.cdt.core.cnature</nature>
+    <nature>org.eclipse.cdt.core.ccnature</nature>
+    <nature>org.rt-thread.studio.rttnature</nature>
+    <nature>org.rt-thread.studiopro.rttappnature</nature>
+    <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+    <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+  </natures>
+  <linkedResources />
+</projectDescription>

+ 5 - 0
03_network_opc_ua/.settings/.rtmenus

@@ -0,0 +1,5 @@
+Đ4}/Ó”dVü/ź—-_¦˙·­~+YS˙Ż\gĂ10sUü‡*qĐËfźÇ-y†Vˢ‹cptß{C;CšČ˘-
+EĐpW¨˝	›ŁÄ�ď•1\íŹţ`Yái+äŻ&e[đ°Üáh–|¨yÖ"¤s„Ý
+ĽqÉČŰäŠ"wXyĹ*\u"ĘwiÚvSc‹ ¬ŃËyîái›0
„Qk¸(
+V˘üf×b!Gh‹nüôú÷÷Ń=	x•Űŕ
+Ëř†¦ścĎYÜŤňKDÓŰ|JˇĘcH{®‚�ôMgü,EBTgźŐ`čRÔíeď�KŹ\ËKęUŐ4.Ęţĺ­!bĆnp• ×)b;.Ś:yTą§w

+ 25 - 0
03_network_opc_ua/.settings/language.settings.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project>
+	<configuration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094" name="Debug">
+		<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
+			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
+			<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
+			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
+			<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="500632045684766020" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT ARM Cross GCC Built-in Compiler Settings " parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+				<language-scope id="org.eclipse.cdt.core.gcc"/>
+				<language-scope id="org.eclipse.cdt.core.g++"/>
+			</provider>
+		</extension>
+	</configuration>
+	<configuration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.731351121" name="Release">
+		<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
+			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
+			<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
+			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
+			<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="385084545534" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT ARM Cross GCC Built-in Compiler Settings " parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+				<language-scope id="org.eclipse.cdt.core.gcc"/>
+				<language-scope id="org.eclipse.cdt.core.g++"/>
+			</provider>
+		</extension>
+	</configuration>
+</project>

+ 41 - 0
03_network_opc_ua/.settings/org.eclipse.cdt.core.prefs

@@ -0,0 +1,41 @@
+eclipse.preferences.version=1
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/CWD/delimiter=;
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/CWD/operation=replace
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/CWD/value=${ProjDirPath}
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/PATH/delimiter=;
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/PATH/operation=append
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/PATH/value=${SCONS_ROOT}/Scripts;${PYTHONPATH};${PYTHONHOME};${RTT_EXEC_PATH};
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/PYTHONHOME/delimiter=;
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/PYTHONHOME/operation=replace
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/PYTHONHOME/value=${rtt_install_path}\\platform\\env_released\\env\\tools\\Python27
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/PYTHONPATH/delimiter=;
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/PYTHONPATH/operation=replace
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/PYTHONPATH/value=${rtt_install_path}\\platform\\env_released\\env\\tools\\Python27\\Lib\\site-packages\\scons
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/RTT_EXEC_PATH/delimiter=;
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/RTT_EXEC_PATH/operation=replace
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/RTT_EXEC_PATH/value=${rtt_install_path}\\repo\\Extract\\ToolChain_Support_Packages\\mips-2015.05\\bin
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/SCONS_ROOT/delimiter=;
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/SCONS_ROOT/operation=replace
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/SCONS_ROOT/value=${rtt_install_path}\\platform\\env_released\\env\\tools\\Python27
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/append=true
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.964231191/appendContributed=true
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/CWD/delimiter=;
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/CWD/operation=replace
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/CWD/value=${ProjDirPath}
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/PATH/delimiter=;
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/PATH/operation=append
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/PATH/value=${SCONS_ROOT}/Scripts;${PYTHONPATH};${PYTHONHOME};${RTT_EXEC_PATH};
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/PYTHONHOME/delimiter=;
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/PYTHONHOME/operation=replace
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/PYTHONHOME/value=${rtt_install_path}\\platform\\env_released\\env\\tools\\Python27
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/PYTHONPATH/delimiter=;
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/PYTHONPATH/operation=replace
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/PYTHONPATH/value=${rtt_install_path}\\platform\\env_released\\env\\tools\\Python27\\Lib\\site-packages\\scons
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/RTT_EXEC_PATH/delimiter=;
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/RTT_EXEC_PATH/operation=replace
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/RTT_EXEC_PATH/value=${rtt_install_path}\\repo\\Extract\\ToolChain_Support_Packages\\mips-2015.05\\bin
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/SCONS_ROOT/delimiter=;
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/SCONS_ROOT/operation=replace
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/SCONS_ROOT/value=${rtt_install_path}\\platform\\env_released\\env\\tools\\Python27
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/append=true
+environment/project/ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094/appendContributed=true

+ 3 - 0
03_network_opc_ua/.settings/org.eclipse.core.runtime.prefs

@@ -0,0 +1,3 @@
+content-types/enabled=true
+content-types/org.eclipse.cdt.core.asmSource/file-extensions=s
+eclipse.preferences.version=1

+ 21 - 0
03_network_opc_ua/.settings/projcfg.ini

@@ -0,0 +1,21 @@
+#RT-Thread Studio Project Configuration
+#Thu May 29 13:27:49 2025
+cfg_version=v3.0
+
+board_name=RC-Pi-3506
+bsp_version=
+bsp_path=
+chip_name=RK3506J
+project_base_bsp=true
+is_use_scons_build=True
+hardware_adapter=OpenOCD
+selected_rtt_version=
+board_base_nano_proj=False
+is_base_example_project=True
+example_name=
+project_type=bare-metal
+os_branch=notUsed
+os_version=notUsed
+project_name=
+output_project_path=
+pinmux=enable

+ 3140 - 0
03_network_opc_ua/.settings/rk3506_board_pins.yaml

@@ -0,0 +1,3140 @@
+#引脚电气属性配置
+pinconf:
+  display:
+    zh: 引脚属性配置
+    en: pin config
+  type: configuration
+  drive_strength:
+    display:
+      zh: 驱动能力
+      en: drive strength
+    input_type: choise  # 不支持自定义参数输入
+    default: 0x07
+    choise:
+      0x00:
+        display:
+          zh: 禁用
+          en: disable
+      0x01:
+        display:
+          zh: 驱动强度0
+          en: level0
+      0x03:
+        display:
+          zh: 驱动强度1
+          en: level1
+      0x07:
+        display:
+          zh: 驱动强度2
+          en: level2
+      0x0F:
+        display:
+          zh: 驱动强度3
+          en: level3
+      0x1F:
+        display:
+          zh: 驱动强度4
+          en: level4
+      0x3F:
+        display:
+          zh: 驱动强度5
+          en: level5
+  pull_up_down:
+    display:
+      zh: 上/下拉电阻
+      en: pull-up/down
+    input_type: choise  # 不支持自定义参数输入
+    default: 0x00
+    choise:
+      0x00:
+        display:
+          zh: 高阻态
+          en: high-z
+      0x01:
+        display:
+          zh: 上拉
+          en: pull up
+      0x02:
+        display:
+          zh: 下拉
+          en: pull down
+  input_enable:
+    display:
+      zh: 输入使能
+      en: input enable
+    input_type: choise  # 不支持自定义参数输入
+    default: 0x00
+    choise:
+      0x00:
+        display:
+          zh: 禁用
+          en: disable
+      0x01:
+        display:
+          zh: 使能
+          en: enable
+  schmitt:
+    display:
+      zh: 施密特触发器
+      en: schmitt trigger
+    input_type: choise  # 不支持自定义参数输入
+    default: 0x01
+    choise:
+      0x00:
+        display:
+          zh: 禁用
+          en: disable
+      0x01:
+        display:
+          zh: 使能
+          en: enable
+  weak_pull_keeper:
+    display:
+      zh: 弱上拉保持
+      en: weak pull keeper
+    input_type: choise  # 不支持自定义参数输入
+    default: 0x00
+    choise:
+      0x00:
+        display:
+          zh: 禁用
+          en: disable
+      0x01:
+        display:
+          zh: 使能
+          en: enable
+  slew_rate:
+    display:
+      zh: 斜率控制
+      en: slew rate
+    input_type: choise  # 不支持自定义参数输入
+    default: 0x00
+    choise:
+      0x00:
+        display:
+          zh: 禁用
+          en: disable
+      0x01:
+        display:
+          zh: 使能
+          en: enable
+  open_drain:
+    display:
+      zh: 开漏输出
+      en: open drain
+    input_type: choise  # 不支持自定义参数输入
+    default: 0x00
+    choise:
+      0x00:
+        display:
+          zh: 禁用
+          en: disable
+      0x01:
+        display:
+          zh: 使能
+          en: enable
+
+#矩阵IO
+rmio:
+  display:
+    zh: 矩阵IO
+    en: RM_IO
+  mux:
+    choise:
+      0x00:
+        display:
+          zh: none
+          en: none
+      0x01:
+        display:
+          zh: UART1_TX
+          en: UART1_TX
+      0x02:
+        display:
+          zh: UART1_RX
+          en: UART1_RX
+      0x03:
+        display:
+          zh: UART2_TX
+          en: UART2_TX
+      0x04:
+        display:
+          zh: UART2_RX
+          en: UART2_RX
+      0x05:
+        display:
+          zh: UART3_TX
+          en: UART3_TX
+      0x06:
+        display:
+          zh: UART3_RX
+          en: UART3_RX
+      0x07:
+        display:
+          zh: UART3_CTSN
+          en: UART3_CTSN
+      0x08:
+        display:
+          zh: UART3_RTSN
+          en: UART3_RTSN
+      0x09:
+        display:
+          zh: UART4_TX
+          en: UART4_TX
+      0x0A:
+        display:
+          zh: UART4_RX
+          en: UART4_RX
+      0x0B:
+        display:
+          zh: UART4_CTSN
+          en: UART4_CTSN
+      0x0C:
+        display:
+          zh: UART4_RTSN
+          en: UART4_RTSN
+      0x0D:
+        display:
+          zh: MIPI_DPHY_DSI_TX_TE
+          en: MIPI_DPHY_DSI_TX_TE
+      0x0E:
+        display:
+          zh: CLK_32K
+          en: CLK_32K
+      0x0F:
+        display:
+          zh: I2C0_SCL
+          en: I2C0_SCL
+      0x10:
+        display:
+          zh: I2C0_SDA
+          en: I2C0_SDA
+      0x11:
+        display:
+          zh: I2C1_SCL
+          en: I2C1_SCL
+      0x12:
+        display:
+          zh: I2C1_SDA
+          en: I2C1_SDA
+      0x13:
+        display:
+          zh: I2C2_SCL
+          en: I2C2_SCL
+      0x14:
+        display:
+          zh: I2C2_SDA
+          en: I2C2_SDA
+      0x15:
+        display:
+          zh: PDM_CLK0
+          en: PDM_CLK0
+      0x16:
+        display:
+          zh: PDM_SDI0
+          en: PDM_SDI0
+      0x17:
+        display:
+          zh: PDM_SDI1
+          en: PDM_SDI1
+      0x18:
+        display:
+          zh: PDM_SDI2
+          en: PDM_SDI2
+      0x19:
+        display:
+          zh: PDM_SDI3
+          en: PDM_SDI3
+      0x1A:
+        display:
+          zh: CAN1_TX
+          en: CAN1_TX
+      0x1B:
+        display:
+          zh: CAN1_RX
+          en: CAN1_RX
+      0x1C:
+        display:
+          zh: CAN0_TX
+          en: CAN0_TX
+      0x1D:
+        display:
+          zh: CAN0_RX
+          en: CAN0_RX
+      0x1E:
+        display:
+          zh: PWM0_CH0
+          en: PWM0_CH0
+      0x1F:
+        display:
+          zh: PWM0_CH1
+          en: PWM0_CH1
+      0x20:
+        display:
+          zh: PWM0_CH2
+          en: PWM0_CH2
+      0x21:
+        display:
+          zh: PWM0_CH3
+          en: PWM0_CH3
+      0x22:
+        display:
+          zh: PWM1_CH0
+          en: PWM1_CH0
+      0x23:
+        display:
+          zh: PWM1_CH1
+          en: PWM1_CH1
+      0x24:
+        display:
+          zh: PWM1_CH2
+          en: PWM1_CH2
+      0x25:
+        display:
+          zh: PWM1_CH3
+          en: PWM1_CH3
+      0x26:
+        display:
+          zh: PWM1_CH4
+          en: PWM1_CH4
+      0x27:
+        display:
+          zh: PWM1_CH5
+          en: PWM1_CH5
+      0x28:
+        display:
+          zh: PWM1_CH6
+          en: PWM1_CH6
+      0x29:
+        display:
+          zh: PWM1_CH7
+          en: PWM1_CH7
+      0x2A:
+        display:
+          zh: TOUCH_KEY_DRIVE
+          en: TOUCH_KEY_DRIVE
+      0x2B:
+        display:
+          zh: TOUCH_KEY_IN0
+          en: TOUCH_KEY_IN0
+      0x2C:
+        display:
+          zh: TOUCH_KEY_IN1
+          en: TOUCH_KEY_IN1
+      0x2D:
+        display:
+          zh: TOUCH_KEY_IN2
+          en: TOUCH_KEY_IN2
+      0x2E:
+        display:
+          zh: TOUCH_KEY_IN3
+          en: TOUCH_KEY_IN3
+      0x2F:
+        display:
+          zh: TOUCH_KEY_IN4
+          en: TOUCH_KEY_IN4
+      0x30:
+        display:
+          zh: TOUCH_KEY_IN5
+          en: TOUCH_KEY_IN5
+      0x31:
+        display:
+          zh: TOUCH_KEY_IN6
+          en: TOUCH_KEY_IN6
+      0x32:
+        display:
+          zh: TOUCH_KEY_IN7
+          en: TOUCH_KEY_IN7
+      0x33:
+        display:
+          zh: SAI0_MCLK
+          en: SAI0_MCLK
+      0x34:
+        display:
+          zh: SAI0_SCLK
+          en: SAI0_SCLK
+      0x35:
+        display:
+          zh: SAI0_LRCK
+          en: SAI0_LRCK
+      0x36:
+        display:
+          zh: SAI0_SDI0
+          en: SAI0_SDI0
+      0x37:
+        display:
+          zh: SAI0_SDI1
+          en: SAI0_SDI1
+      0x38:
+        display:
+          zh: SAI0_SDI2
+          en: SAI0_SDI2
+      0x39:
+        display:
+          zh: SAI0_SDI3
+          en: SAI0_SDI3
+      0x3A:
+        display:
+          zh: SAI0_SDO
+          en: SAI0_SDO
+      0x3B:
+        display:
+          zh: SAI1_MCLK
+          en: SAI1_MCLK
+      0x3C:
+        display:
+          zh: SAI1_SCLK
+          en: SAI1_SCLK
+      0x3D:
+        display:
+          zh: SAI1_LRCK
+          en: SAI1_LRCK
+      0x3E:
+        display:
+          zh: SAI1_SDI
+          en: SAI1_SDI
+      0x3F:
+        display:
+          zh: SAI1_SDO0
+          en: SAI1_SDO0
+      0x40:
+        display:
+          zh: SAI1_SDO1
+          en: SAI1_SDO1
+      0x41:
+        display:
+          zh: SAI1_SDO2
+          en: SAI1_SDO2
+      0x42:
+        display:
+          zh: SAI1_SDO3
+          en: SAI1_SDO3
+      0x43:
+        display:
+          zh: SPI0_CLK
+          en: SPI0_CLK
+      0x44:
+        display:
+          zh: SPI0_MOSI
+          en: SPI0_MOSI
+      0x45:
+        display:
+          zh: SPI0_MISO
+          en: SPI0_MISO
+      0x46:
+        display:
+          zh: SPI0_CSN0
+          en: SPI0_CSN0
+      0x47:
+        display:
+          zh: SPI0_CSN1
+          en: SPI0_CSN1
+      0x48:
+        display:
+          zh: SPI1_CLK
+          en: SPI1_CLK
+      0x49:
+        display:
+          zh: SPI1_MOSI
+          en: SPI1_MOSI
+      0x4A:
+        display:
+          zh: SPI1_MISO
+          en: SPI1_MISO
+      0x4B:
+        display:
+          zh: SPI1_CSN0
+          en: SPI1_CSN0
+      0x4C:
+        display:
+          zh: SPI1_CSN1
+          en: SPI1_CSN1
+      0x4D:
+        display:
+          zh: TSADC_CTRL
+          en: TSADC_CTRL
+      0x4E:
+        display:
+          zh: PMU_SLEEP
+          en: PMU_SLEEP
+      0x4F:
+        display:
+          zh: CORE_POWER_OFF
+          en: CORE_POWER_OFF
+      0x50:
+        display:
+          zh: SPDIF_TX
+          en: SPDIF_TX
+      0x51:
+        display:
+          zh: SPDIF_RX
+          en: SPDIF_RX
+      0x52:
+        display:
+          zh: PWM1_BIP_CNTR_A0
+          en: PWM1_BIP_CNTR_A0
+      0x53:
+        display:
+          zh: PWM1_BIP_CNTR_A1
+          en: PWM1_BIP_CNTR_A1
+      0x54:
+        display:
+          zh: PWM1_BIP_CNTR_A2
+          en: PWM1_BIP_CNTR_A2
+      0x55:
+        display:
+          zh: PWM1_BIP_CNTR_A3
+          en: PWM1_BIP_CNTR_A3
+      0x56:
+        display:
+          zh: PWM1_BIP_CNTR_A4
+          en: PWM1_BIP_CNTR_A4
+      0x57:
+        display:
+          zh: PWM1_BIP_CNTR_A5
+          en: PWM1_BIP_CNTR_A5
+      0x58:
+        display:
+          zh: PWM1_BIP_CNTR_B0
+          en: PWM1_BIP_CNTR_B0
+      0x59:
+        display:
+          zh: PWM1_BIP_CNTR_B1
+          en: PWM1_BIP_CNTR_B1
+      0x5A:
+        display:
+          zh: PWM1_BIP_CNTR_B2
+          en: PWM1_BIP_CNTR_B2
+      0x5B:
+        display:
+          zh: PWM1_BIP_CNTR_B3
+          en: PWM1_BIP_CNTR_B3
+      0x5C:
+        display:
+          zh: PWM1_BIP_CNTR_B4
+          en: PWM1_BIP_CNTR_B4
+      0x5D:
+        display:
+          zh: PWM1_BIP_CNTR_B5
+          en: PWM1_BIP_CNTR_B5
+      0x5E:
+        display:
+          zh: PDM_CLK1
+          en: PDM_CLK1
+      0x5F:
+        display:
+          zh: ETH_RMII0_PPSCLK
+          en: ETH_RMII0_PPSCLK
+      0x60:
+        display:
+          zh: ETH_RMII0_PPSTRIG
+          en: ETH_RMII0_PPSTRIG
+      0x61:
+        display:
+          zh: ETH_RMII1_PPSCLK
+          en: ETH_RMII1_PPSCLK
+      0x62:
+        display:
+          zh: ETH_RMII1_PPSTRIG
+          en: ETH_RMII1_PPSTRIG
+
+#核心板引脚
+pin:
+  display:
+    zh: 引脚
+    en: pin
+  type: pin
+  pin_num: 128
+
+  #第一组引脚
+  GPIO1_C4:
+    display:
+      zh: GPIO1_C4
+      en: GPIO1_C4
+    index: 1
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_C4
+            en: GPIO1_C4
+        0x01:
+          display:
+            zh: VO_LCDC_D7
+            en: VO_LCDC_D7
+        0x02:
+          display:
+            zh: DSMC_D11
+            en: DSMC_D11
+        0x03:
+          display:
+            zh: FLEXBUS0_D7
+            en: FLEXBUS0_D7
+        0x08:
+          display:
+            zh: DSMC_SLV_D2
+            en: DSMC_SLV_D2
+  GPIO1_C5:
+    display:
+      zh: GPIO1_C5
+      en: GPIO1_C5
+    index: 2
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_C5
+            en: GPIO1_C5
+        0x01:
+          display:
+            zh: VO_LCDC_D6
+            en: VO_LCDC_D6
+        0x02:
+          display:
+            zh: DSMC_D12
+            en: DSMC_D12
+        0x03:
+          display:
+            zh: FLEXBUS0_D6
+            en: FLEXBUS0_D6
+        0x08:
+          display:
+            zh: DSMC_SLV_D3
+            en: DSMC_SLV_D3
+  GPIO1_C6:
+    display:
+      zh: GPIO1_C6
+      en: GPIO1_C6
+    index: 3
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_C6
+            en: GPIO1_C6
+        0x01:
+          display:
+            zh: VO_LCDC_D5
+            en: VO_LCDC_D5
+        0x02:
+          display:
+            zh: DSMC_D13
+            en: DSMC_D13
+        0x03:
+          display:
+            zh: FLEXBUS0_D5
+            en: FLEXBUS0_D5
+        0x08:
+          display:
+            zh: DSMC_SLV_D4
+            en: DSMC_SLV_D4
+  GPIO1_C7:
+    display:
+      zh: GPIO1_C7
+      en: GPIO1_C7
+    index: 4
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_C7
+            en: GPIO1_C7
+        0x01:
+          display:
+            zh: VO_LCDC_D4
+            en: VO_LCDC_D4
+        0x02:
+          display:
+            zh: DSMC_D14
+            en: DSMC_D14
+        0x03:
+          display:
+            zh: FLEXBUS0_D4
+            en: FLEXBUS0_D4
+        0x08:
+          display:
+            zh: DSMC_SLV_D5
+            en: DSMC_SLV_D5
+  GND5:
+    display:
+      zh: GND
+      en: GND
+    index: 5
+    optional: false
+  GPIO1_D0:
+    display:
+      zh: GPIO1_D0
+      en: GPIO1_D0
+    index: 6
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_D0
+            en: GPIO1_D0
+        0x01:
+          display:
+            zh: VO_LCDC_D3
+            en: VO_LCDC_D3
+        0x02:
+          display:
+            zh: DSMC_D15
+            en: DSMC_D15
+        0x03:
+          display:
+            zh: FLEXBUS0_D3
+            en: FLEXBUS0_D3
+        0x04:
+          display:
+            zh: DSM_AUD_LN_M0
+            en: DSM_AUD_LN_M0
+        0x08:
+          display:
+            zh: DSMC_SLV_D6
+            en: DSMC_SLV_D6
+  GPIO1_D1:
+    display:
+      zh: GPIO1_D1
+      en: GPIO1_D1
+    index: 7
+    optional: true
+    mux:
+      default: 0x06
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_D1
+            en: GPIO1_D1
+        0x01:
+          display:
+            zh: VO_LCDC_D2
+            en: VO_LCDC_D2
+        0x02:
+          display:
+            zh: DSMC_DQS1
+            en: DSMC_DQS1
+        0x03:
+          display:
+            zh: FLEXBUS0_D2
+            en: FLEXBUS0_D2
+        0x04:
+          display:
+            zh: DSM_AUD_LP_M0
+            en: DSM_AUD_LP_M0
+        0x06:
+          display:
+            zh: UART5_RTSN_M1
+            en: UART5_RTSN_M1
+        0x07:
+          display:
+            zh: RM_IO29
+            en: RM_IO29
+          secondary:
+            select: rmio
+            default: 0x00
+        0x08:
+          display:
+            zh: DSMC_SLV_D7
+            en: DSMC_SLV_D7
+  GPIO1_D2:
+    display:
+      zh: GPIO1_D2
+      en: GPIO1_D2
+    index: 8
+    optional: true
+    mux:
+      default: 0x06
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_D2
+            en: GPIO1_D2
+        0x01:
+          display:
+            zh: VO_LCDC_D1
+            en: VO_LCDC_D1
+        0x02:
+          display:
+            zh: DSMC_CSN2
+            en: DSMC_CSN2
+        0x03:
+          display:
+            zh: FLEXBUS0_D1
+            en: FLEXBUS0_D1
+        0x06:
+          display:
+            zh: UART5_TX_M1
+            en: UART5_TX_M1
+        0x07:
+          display:
+            zh: RM_IO30
+            en: RM_IO30
+          secondary:
+            select: rmio
+            default: 0x00
+        0x08:
+          display:
+            zh: DSMC_SLV_CSN0
+            en: DSMC_SLV_CSN0
+  GPIO1_D3:
+    display:
+      zh: GPIO1_D3
+      en: GPIO1_D3
+    index: 9
+    optional: true
+    mux:
+      default: 0x06
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_D3
+            en: GPIO1_D3
+        0x01:
+          display:
+            zh: VO_LCDC_D0
+            en: VO_LCDC_D0
+        0x02:
+          display:
+            zh: DSMC_CSN3
+            en: DSMC_CSN3
+        0x03:
+          display:
+            zh: FLEXBUS0_D0
+            en: FLEXBUS0_D0
+        0x06:
+          display:
+            zh: UART5_RX_M1
+            en: UART5_RX_M1
+        0x07:
+          display:
+            zh: RM_IO31
+            en: RM_IO31
+          secondary:
+            select: rmio
+            default: 0x00
+        0x08:
+          display:
+            zh: DSMC_SLV_RDYN
+            en: DSMC_SLV_RDYN
+  GND10:
+    display:
+      zh: GND
+      en: GND
+    index: 10
+    optional: false
+  GPIO0_D0:
+    display:
+      zh: GPIO0_D0
+      en: GPIO0_D0
+    index: 11
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_D0
+            en: GPIO0_D0
+        0x01:
+          display:
+            zh: OSC_CLK_OUT
+            en: OSC_CLK_OUT
+        0x02:
+          display:
+            zh: REF_CLK0_OUT
+            en: REF_CLK0_OUT
+  GND12:
+    display:
+      zh: GND
+      en: GND
+    index: 12
+    optional: false
+  GPIO0_C6:
+    display:
+      zh: GPIO0_C6
+      en: GPIO0_C6
+    index: 13
+    optional: true
+    mux:
+      default: 0x02
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_C6
+            en: GPIO0_C6
+        0x01:
+          display:
+            zh: UART0_TX
+            en: UART0_TX
+        0x02:
+          display:
+            zh: JTAG_TCK_M1
+            en: JTAG_TCK_M1
+        0x07:
+          display:
+            zh: RM_IO22
+            en: RM_IO22
+          secondary:
+            select: rmio
+            default: 0x00
+  GPIO0_C7:
+    display:
+      zh: GPIO0_C7
+      en: GPIO0_C7
+    index: 14
+    optional: true
+    mux:
+      default: 0x02
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_C7
+            en: GPIO0_C7
+        0x01:
+          display:
+            zh: UART0_RX
+            en: UART0_RX
+        0x02:
+          display:
+            zh: JTAG_TMS_M1
+            en: JTAG_TMS_M1
+        0x07:
+          display:
+            zh: RM_IO23
+            en: RM_IO23
+          secondary:
+            select: rmio
+            default: 0x00
+  GND15:
+    display:
+      zh: GND
+      en: GND
+    index: 15
+    optional: false
+  NPOR_L16:
+    display:
+      zh: NPOR_L
+      en: NPOR_L
+    index: 16
+    optional: false
+  GND17:
+    display:
+      zh: GND
+      en: GND
+    index: 17
+    optional: false
+  GPIO0_C4:
+    display:
+      zh: GPIO0_C4
+      en: GPIO0_C4
+    index: 18
+    optional: true
+    mux:
+      default: 0x07
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_C4
+            en: GPIO0_C4
+        0x01:
+          display:
+            zh: ETH_CLK0_50M_OUT
+            en: ETH_CLK0_50M_OUT
+        0x02:
+          display:
+            zh: AUPLL_CLK_IN
+            en: AUPLL_CLK_IN
+        0x07:
+          display:
+            zh: RM_IO20
+            en: RM_IO20
+          secondary:
+            select: rmio
+            default: 0x1D
+  GPIO0_C3:
+    display:
+      zh: GPIO0_C3
+      en: GPIO0_C3
+    index: 19
+    optional: true
+    mux:
+      default: 0x07
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_C3
+            en: GPIO0_C3
+        0x01:
+          display:
+            zh: ETH_CLK1_25M_OUT
+            en: ETH_CLK1_25M_OUT
+        0x02:
+          display:
+            zh: SPI0_CSN0
+            en: SPI0_CSN0
+        0x07:
+          display:
+            zh: RM_IO19
+            en: RM_IO19
+          secondary:
+            select: rmio
+            default: 0x1C
+  GPIO0_C2:
+    display:
+      zh: GPIO0_C2
+      en: GPIO0_C2
+    index: 20
+    optional: true
+    mux:
+      default: 0x07
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_C2
+            en: GPIO0_C2
+        0x01:
+          display:
+            zh: REF_CLK1_OUT
+            en: REF_CLK1_OUT
+        0x02:
+          display:
+            zh: SPI0_MISO
+            en: SPI0_MISO
+        0x07:
+          display:
+            zh: RM_IO18
+            en: RM_IO18
+          secondary:
+            select: rmio
+            default: 0x20
+  GPIO0_C1:
+    display:
+      zh: GPIO0_C1
+      en: GPIO0_C1
+    index: 21
+    optional: true
+    mux:
+      default: 0x07
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_C1
+            en: GPIO0_C1
+        0x01:
+          display:
+            zh: SPI0_MOSI
+            en: SPI0_MOSI
+        0x07:
+          display:
+            zh: RM_IO17
+            en: RM_IO17
+          secondary:
+            select: rmio
+            default: 0x44
+  GPIO0_C0:
+    display:
+      zh: GPIO0_C0
+      en: GPIO0_C0
+    index: 22
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_C0
+            en: GPIO0_C0
+        0x01:
+          display:
+            zh: SPI0_CLK
+            en: SPI0_CLK
+        0x07:
+          display:
+            zh: RM_IO16
+            en: RM_IO16
+          secondary:
+            select: rmio
+            default: 0x00
+  GND23:
+    display:
+      zh: GND
+      en: GND
+    index: 23
+    optional: false
+  GPIO0_B7:
+    display:
+      zh: GPIO0_B7
+      en: GPIO0_B7
+    index: 24
+    optional: true
+    mux:
+      default: 0x07
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_B7
+            en: GPIO0_B7
+        0x01:
+          display:
+            zh: SAI1_SDO3
+            en: SAI1_SDO3
+        0x02:
+          display:
+            zh: SPI0_CSN1
+            en: SPI0_CSN1
+        0x07:
+          display:
+            zh: RM_IO15
+            en: RM_IO15
+          secondary:
+            select: rmio
+            default: 0x10
+  GPIO0_B6:
+    display:
+      zh: GPIO0_B6
+      en: GPIO0_B6
+    index: 25
+    optional: true
+    mux:
+      default: 0x07
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_B6
+            en: GPIO0_B6
+        0x01:
+          display:
+            zh: SAI1_SDO2
+            en: SAI1_SDO2
+        0x02:
+          display:
+            zh: SPI1_CSN0
+            en: SPI1_CSN0
+        0x07:
+          display:
+            zh: RM_IO14
+            en: RM_IO14
+          secondary:
+            select: rmio
+            default: 0xF
+  GPIO0_B5:
+    display:
+      zh: GPIO0_B5
+      en: GPIO0_B5
+    index: 26
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_B5
+            en: GPIO0_B5
+        0x01:
+          display:
+            zh: SAI1_SDO1
+            en: SAI1_SDO1
+        0x07:
+          display:
+            zh: RM_IO13
+            en: RM_IO13
+          secondary:
+            select: rmio
+            default: 0x00
+  GPIO0_B4:
+    display:
+      zh: GPIO0_B4
+      en: GPIO0_B4
+    index: 27
+    optional: true
+    mux:
+      default: 0x07
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_B4
+            en: GPIO0_B4
+        0x01:
+          display:
+            zh: SAI1_SDO0
+            en: SAI1_SDO0
+        0x07:
+          display:
+            zh: RM_IO12
+            en: RM_IO12
+          secondary:
+            select: rmio
+            default: 0x45
+  GPIO0_B3:
+    display:
+      zh: GPIO0_B3
+      en: GPIO0_B3
+    index: 28
+    optional: true
+    mux:
+      default: 0x07
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_B3
+            en: GPIO0_B3
+        0x01:
+          display:
+            zh: SAI1_SDI
+            en: SAI1_SDI
+        0x07:
+          display:
+            zh: RM_IO11
+            en: RM_IO11
+          secondary:
+            select: rmio
+            default: 0x43
+  GPIO0_B2:
+    display:
+      zh: GPIO0_B2
+      en: GPIO0_B2
+    index: 29
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_B2
+            en: GPIO0_B2
+        0x01:
+          display:
+            zh: SAI1_LRCK
+            en: SPI1_MISO
+        0x02:
+          display:
+            zh: SPI1_MISO
+            en: SPI1_MISO
+        0x07:
+          display:
+            zh: RM_IO10
+            en: RM_IO10
+          secondary:
+            select: rmio
+            default: 0x00
+  GPIO0_B1:
+    display:
+      zh: GPIO0_B1
+      en: GPIO0_B1
+    index: 30
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_B1
+            en: GPIO0_B1
+        0x01:
+          display:
+            zh: SAI1_SCLK
+            en: SAI1_SCLK
+        0x02:
+          display:
+            zh: SPI1_MOSI
+            en: SPI1_MOSI
+        0x07:
+          display:
+            zh: RM_IO9
+            en: RM_IO9
+          secondary:
+            select: rmio
+            default: 0x00
+  GPIO0_B0:
+    display:
+      zh: GPIO0_B0
+      en: GPIO0_B0
+    index: 31
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_B0
+            en: GPIO0_B0
+        0x01:
+          display:
+            zh: SAI1_MCLK
+            en: SAI1_MCLK
+        0x02:
+          display:
+            zh: SPI1_CLK
+            en: SPI1_CLK
+        0x07:
+          display:
+            zh: RM_IO8
+            en: RM_IO8
+          secondary:
+            select: rmio
+            default: 0x00
+  GND32:
+    display:
+      zh: GND
+      en: GND
+    index: 32
+    optional: false
+
+  #第二组引脚
+  VCC_IN33:
+    display:
+      zh: VCC_IN
+      en: VCC_IN
+    index: 33
+    optional: false
+  VCC_IN34:
+    display:
+      zh: VCC_IN
+      en: VCC_IN
+    index: 34
+    optional: false
+  GND35:
+    display:
+      zh: GND
+      en: GND
+    index: 35
+    optional: false
+  GPIO0_A7:
+    display:
+      zh: GPIO0_A7
+      en: GPIO0_A7
+    index: 36
+    optional: true
+    mux:
+      default: 0x07
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_A7
+            en: GPIO0_A7
+        0x01:
+          display:
+            zh: SAI0_SDI3
+            en: SAI0_SDI3
+        0x07:
+          display:
+            zh: RM_IO7
+            en: RM_IO7
+          secondary:
+            select: rmio
+            default: 0x08
+  GPIO0_A6:
+    display:
+      zh: GPIO0_A6
+      en: GPIO0_A6
+    index: 37
+    optional: true
+    mux:
+      default: 0x07
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_A6
+            en: GPIO0_A6
+        0x01:
+          display:
+            zh: SAI0_SDI2
+            en: SAI0_SDI2
+        0x07:
+          display:
+            zh: RM_IO6
+            en: RM_IO6
+          secondary:
+            select: rmio
+            default: 0x07
+  GPIO0_A5:
+    display:
+      zh: GPIO0_A5
+      en: GPIO0_A5
+    index: 38
+    optional: true
+    mux:
+      default: 0x07
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_A5
+            en: GPIO0_A5
+        0x01:
+          display:
+            zh: SAI0_SDI1
+            en: SAI0_SDI1
+        0x07:
+          display:
+            zh: RM_IO5
+            en: RM_IO5
+          secondary:
+            select: rmio
+            default: 0x06
+  GPIO0_A4:
+    display:
+      zh: GPIO0_A4
+      en: GPIO0_A4
+    index: 39
+    optional: true
+    mux:
+      default: 0x07
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_A4
+            en: GPIO0_A4
+        0x01:
+          display:
+            zh: SAI0_SDI0
+            en: SAI0_SDI0
+        0x07:
+          display:
+            zh: RM_IO4
+            en: RM_IO4
+          secondary:
+            select: rmio
+            default: 0x05
+  GPIO0_A3:
+    display:
+      zh: GPIO0_A3
+      en: GPIO0_A3
+    index: 40
+    optional: true
+    mux:
+      default: 0x07
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_A3
+            en: GPIO0_A3
+        0x01:
+          display:
+            zh: SAI0_SD0
+            en: SAI0_SD0
+        0x07:
+          display:
+            zh: RM_IO3
+            en: RM_IO3
+          secondary:
+            select: rmio
+            default: 0x02
+  GPIO0_A2:
+    display:
+      zh: GPIO0_A2
+      en: GPIO0_A2
+    index: 41
+    optional: true
+    mux:
+      default: 0x07
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_A2
+            en: GPIO0_A2
+        0x01:
+          display:
+            zh: SAI0_MCLK
+            en: SAI0_MCLK
+        0x07:
+          display:
+            zh: RM_IO2
+            en: RM_IO2
+          secondary:
+            select: rmio
+            default: 0x01
+  GPIO0_A1:
+    display:
+      zh: GPIO0_A1
+      en: GPIO0_A1
+    index: 42
+    optional: true
+    mux:
+      default: 0x07
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_A1
+            en: GPIO0_A1
+        0x01:
+          display:
+            zh: SAI0_SCLK
+            en: SAI0_SCLK
+        0x07:
+          display:
+            zh: RM_IO1
+            en: RM_IO1
+          secondary:
+            select: rmio
+            default: 0x11
+  GPIO0_A0:
+    display:
+      zh: GPIO0_A0
+      en: GPIO0_A0
+    index: 43
+    optional: true
+    mux:
+      default: 0x07
+      choise:
+        0x00:
+          display:
+            zh: GPIO0_A0
+            en: GPIO0_A0
+        0x01:
+          display:
+            zh: SAI0_LRCK
+            en: SAI0_LRCK
+        0x07:
+          display:
+            zh: RM_IO0
+            en: RM_IO0
+          secondary:
+            select: rmio
+            default: 0x12
+  GND44:
+    display:
+      zh: GND
+      en: GND
+    index: 44
+    optional: false
+  GPIO3_B6:
+    display:
+      zh: GPIO3_B6
+      en: GPIO3_B6
+    index: 45
+    optional: true
+    mux:
+      default: 0x02
+      choise:
+        0x00:
+          display:
+            zh: GPIO3_B6
+            en: GPIO3_B6
+        0x01:
+          display:
+            zh: SAI2_MCLK_M0
+            en: SAI2_MCLK_M0
+        0x02:
+          display:
+            zh: ETH_RMII1_RXDVCRS
+            en: ETH_RMII1_RXDVCRS
+  GPIO3_B5:
+    display:
+      zh: GPIO3_B5
+      en: GPIO3_B5
+    index: 46
+    optional: true
+    mux:
+      default: 0x02
+      choise:
+        0x00:
+          display:
+            zh: GPIO3_B5
+            en: GPIO3_B5
+        0x01:
+          display:
+            zh: UART5_RTSN_M0
+            en: UART5_RTSN_M0
+        0x02:
+          display:
+            zh: ETH_RMII1_MDIO
+            en: ETH_RMII1_MDIO
+  GPIO3_B4:
+    display:
+      zh: GPIO3_B4
+      en: GPIO3_B4
+    index: 47
+    optional: true
+    mux:
+      default: 0x02
+      choise:
+        0x00:
+          display:
+            zh: GPIO3_B4
+            en: GPIO3_B4
+        0x01:
+          display:
+            zh: UART5_TX_M0
+            en: UART5_TX_M0
+        0x02:
+          display:
+            zh: ETH_RMII1_MDC
+            en: ETH_RMII1_MDC
+  GND48:
+    display:
+      zh: GND
+      en: GND
+    index: 48
+    optional: false
+  GPIO3_B0:
+    display:
+      zh: GPIO3_B0
+      en: GPIO3_B0
+    index: 49
+    optional: true
+    mux:
+      default: 0x02
+      choise:
+        0x00:
+          display:
+            zh: GPIO3_B0
+            en: GPIO3_B0
+        0x01:
+          display:
+            zh: SAI2_SDO_M0
+            en: SAI2_SDO_M0
+        0x02:
+          display:
+            zh: ETH_RMII1_CLK
+            en: ETH_RMII1_CLK
+  GPIO3_B3:
+    display:
+      zh: GPIO3_B3
+      en: GPIO3_B3
+    index: 50
+    optional: true
+    mux:
+      default: 0x02
+      choise:
+        0x00:
+          display:
+            zh: GPIO3_B3
+            en: GPIO3_B3
+        0x01:
+          display:
+            zh: UART5_RX_M0
+            en: UART5_RX_M0
+        0x02:
+          display:
+            zh: ETH_RMII1_TXEN
+            en: ETH_RMII1_TXEN
+  GPIO3_B2:
+    display:
+      zh: GPIO3_B2
+      en: GPIO3_B2
+    index: 51
+    optional: true
+    mux:
+      default: 0x02
+      choise:
+        0x00:
+          display:
+            zh: GPIO3_B2
+            en: GPIO3_B2
+        0x01:
+          display:
+            zh: UART5_CTSN_M0
+            en: UART5_CTSN_M0
+        0x02:
+          display:
+            zh: ETH_RMII1_TXD1
+            en: ETH_RMII1_TXD1
+  GPIO3_B1:
+    display:
+      zh: GPIO3_B1
+      en: GPIO3_B1
+    index: 52
+    optional: true
+    mux:
+      default: 0x02
+      choise:
+        0x00:
+          display:
+            zh: GPIO3_B1
+            en: GPIO3_B1
+        0x01:
+          display:
+            zh: SAI2_LRCK_M0
+            en: SAI2_LRCK_M0
+        0x02:
+          display:
+            zh: ETH_RMII1_TXD0
+            en: ETH_RMII1_TXD0
+  GPIO3_A7:
+    display:
+      zh: GPIO3_A7
+      en: GPIO3_A7
+    index: 53
+    optional: true
+    mux:
+      default: 0x02
+      choise:
+        0x00:
+          display:
+            zh: GPIO3_A7
+            en: GPIO3_A7
+        0x01:
+          display:
+            zh: SAI2_SCLK_M0
+            en: SAI2_SCLK_M0
+        0x02:
+          display:
+            zh: ETH_RMII1_RXD1
+            en: ETH_RMII1_RXD1
+  GPIO3_A6:
+    display:
+      zh: GPIO3_A6
+      en: GPIO3_A6
+    index: 54
+    optional: true
+    mux:
+      default: 0x02
+      choise:
+        0x00:
+          display:
+            zh: GPIO3_A6
+            en: GPIO3_A6
+        0x01:
+          display:
+            zh: SAI2_SDI_M0
+            en: SAI2_SDI_M0
+        0x02:
+          display:
+            zh: ETH_RMII1_RXD0
+            en: ETH_RMII1_RXD0
+  GPIO3_A4:
+    display:
+      zh: GPIO3_A4
+      en: GPIO3_A4
+    index: 55
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO3_A4
+            en: GPIO3_A4
+        0x01:
+          display:
+            zh: SDMMC_D2
+            en: SDMMC_D2
+        0x02:
+          display:
+            zh: JTAG_TCK_M0
+            en: JTAG_TCK_M0
+  GPIO3_A3:
+    display:
+      zh: GPIO3_A3
+      en: GPIO3_A3
+    index: 56
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO3_A3
+            en: GPIO3_A3
+        0x01:
+          display:
+            zh: SDMMC_D1
+            en: SDMMC_D1
+        0x02:
+          display:
+            zh: TEST_CLK_OUT
+            en: TEST_CLK_OUT
+  GPIO3_A2:
+    display:
+      zh: GPIO3_A2
+      en: GPIO3_A2
+    index: 57
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO3_A2
+            en: GPIO3_A2
+        0x01:
+          display:
+            zh: SDMMC_D0
+            en: SDMMC_D0
+  GPIO3_A5:
+    display:
+      zh: GPIO3_A5
+      en: GPIO3_A5
+    index: 58
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO3_A5
+            en: GPIO3_A5
+        0x01:
+          display:
+            zh: SDMMC_D3
+            en: SDMMC_D3
+        0x02:
+          display:
+            zh: JTAG_TMS_M0
+            en: JTAG_TMS_M0
+  GPIO3_A1:
+    display:
+      zh: GPIO3_A1
+      en: GPIO3_A1
+    index: 59
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO3_A1
+            en: GPIO3_A1
+        0x01:
+          display:
+            zh: SDMMC_CMD
+            en: SDMMC_CMD
+  GPIO3_A0:
+    display:
+      zh: GPIO3_A0
+      en: GPIO3_A0
+    index: 60
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO3_A0
+            en: GPIO3_A0
+        0x01:
+          display:
+            zh: SDMMC_CLK
+            en: SDMMC_CLK
+  GND61:
+    display:
+      zh: GND
+      en: GND
+    index: 61
+    optional: false
+  GPIO2_B6:
+    display:
+      zh: GPIO2_B6
+      en: GPIO2_B6
+    index: 62
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO2_B6
+            en: GPIO2_B6
+        0x01:
+          display:
+            zh: ETH_RMII0_MDC
+            en: ETH_RMII0_MDC
+        0x02:
+          display:
+            zh: DSM_AUD_LN_M1
+            en: DSM_AUD_LN_M1
+        0x03:
+          display:
+            zh: SAI3_SDI
+            en: SAI3_SDI
+  GPIO2_B7:
+    display:
+      zh: GPIO2_B7
+      en: GPIO2_B7
+    index: 63
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO2_B7
+            en: GPIO2_B7
+        0x01:
+          display:
+            zh: ETH_RMII0_MDIO
+            en: ETH_RMII0_MDIO
+        0x02:
+          display:
+            zh: DSM_AUD_LP_M1
+            en: DSM_AUD_LP_M1
+        0x03:
+          display:
+            zh: SAI3_SDO
+            en: SAI3_SDO
+  GPIO2_C0:
+    display:
+      zh: GPIO2_C0
+      en: GPIO2_C0
+    index: 64
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO2_C0
+            en: GPIO2_C0
+        0x01:
+          display:
+            zh: ETH_RMII0_RXDVCRS
+            en: ETH_RMII0_RXDVCRS
+        0x03:
+          display:
+            zh: SAI3_MCLK
+            en: SAI3_MCLK
+
+  #第三组引脚
+  VCC_1V8_OUT65:
+    display:
+      zh: VCC_1V8_OUT
+      en: VCC_1V8_OUT
+    index: 65
+    optional: false
+  VCC_3V3_OUT66:
+    display:
+      zh: VCC_3V3_OUT
+      en: VCC_3V3_OUT
+    index: 66
+    optional: false
+  GND67:
+    display:
+      zh: GND
+      en: GND
+    index: 67
+    optional: false
+  VCC_IO4_IN68:
+    display:
+      zh: VCC_IO4_IN
+      en: VCC_IO4_IN
+    index: 68
+    optional: false
+  GPIO2_B5:
+    display:
+      zh: GPIO2_B5
+      en: GPIO2_B5
+    index: 69
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO2_B5
+            en: GPIO2_B5
+        0x01:
+          display:
+            zh: ETH_RMII0_TXEN
+            en: ETH_RMII0_TXEN
+        0x02:
+          display:
+            zh: DSM_AUD_RP_M1
+            en: DSM_AUD_RP_M1
+        0x03:
+          display:
+            zh: SAI3_LRCK
+            en: SAI3_LRCK
+  GPIO2_B4:
+    display:
+      zh: GPIO2_B4
+      en: GPIO2_B4
+    index: 70
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO2_B4
+            en: GPIO2_B4
+        0x01:
+          display:
+            zh: ETH_RMII0_TXD1
+            en: ETH_RMII0_TXD1
+        0x02:
+          display:
+            zh: DSM_AUD_RN_M1
+            en: DSM_AUD_RN_M1
+        0x03:
+          display:
+            zh: SAI3_SCLK
+            en: SAI3_SCLK
+  GPIO2_B3:
+    display:
+      zh: GPIO2_B3
+      en: GPIO2_B3
+    index: 71
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO2_B3
+            en: GPIO2_B3
+        0x01:
+          display:
+            zh: ETH_RMII0_TXD0
+            en: ETH_RMII0_TXD0
+        0x02:
+          display:
+            zh: SPI2_MISO
+            en: SPI2_MISO
+  GPIO2_B1:
+    display:
+      zh: GPIO2_B1
+      en: GPIO2_B1
+    index: 72
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO2_B1
+            en: GPIO2_B1
+        0x01:
+          display:
+            zh: ETH_RMII0_RXD1
+            en: ETH_RMII0_RXD1
+        0x02:
+          display:
+            zh: SPI2_CSN
+            en: SPI2_CSN
+  GPIO2_B0:
+    display:
+      zh: GPIO2_B0
+      en: GPIO2_B0
+    index: 73
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO2_B0
+            en: GPIO2_B0
+        0x01:
+          display:
+            zh: ETH_RMII0_RXD0
+            en: ETH_RMII0_RXD0
+        0x02:
+          display:
+            zh: SPI2_CLK
+            en: SPI2_CLK
+  GPIO2_B2:
+    display:
+      zh: GPIO2_B2
+      en: GPIO2_B2
+    index: 74
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO2_B2
+            en: GPIO2_B2
+        0x01:
+          display:
+            zh: ETH_RMII0_CLK
+            en: ETH_RMII0_CLK
+        0x02:
+          display:
+            zh: SPI2_MOSI
+            en: SPI2_MOSI
+  GND75:
+    display:
+      zh: GND
+      en: GND
+    index: 75
+    optional: false
+  # GPIO2_A1:
+  #   display:
+  #     zh: GPIO2_A1
+  #     en: GPIO2_A1
+  #   index: 76
+  #   optional: true
+  #   mux:
+  #     default: 0x01
+  #     choise:
+  #       0x00:
+  #         display:
+  #           zh: GPIO2_A1
+  #           en: GPIO2_A1
+  #       0x01:
+  #         display:
+  #           zh: FSPI_CLK
+  #           en: FSPI_CLK
+  # GPIO2_A2:
+  #   display:
+  #     zh: GPIO2_A2
+  #     en: GPIO2_A2
+  #   index: 77
+  #   optional: true
+  #   mux:
+  #     default: 0x01
+  #     choise:
+  #       0x00:
+  #         display:
+  #           zh: GPIO2_A2
+  #           en: GPIO2_A2
+  #       0x01:
+  #         display:
+  #           zh: FSPI_D0
+  #           en: FSPI_D0
+  # GPIO2_A5:
+  #   display:
+  #     zh: GPIO2_A5
+  #     en: GPIO2_A5
+  #   index: 78
+  #   optional: true
+  #   mux:
+  #     default: 0x01
+  #     choise:
+  #       0x00:
+  #         display:
+  #           zh: GPIO2_A5
+  #           en: GPIO2_A5
+  #       0x01:
+  #         display:
+  #           zh: FSPI_D3
+  #           en: FSPI_D3
+  # GPIO2_A4:
+  #   display:
+  #     zh: GPIO2_A4
+  #     en: GPIO2_A4
+  #   index: 79
+  #   optional: true
+  #   mux:
+  #     default: 0x01
+  #     choise:
+  #       0x00:
+  #         display:
+  #           zh: GPIO2_A4
+  #           en: GPIO2_A4
+  #       0x01:
+  #         display:
+  #           zh: FSPI_D2
+  #           en: FSPI_D2
+  # GPIO2_A3:
+  #   display:
+  #     zh: GPIO2_A3
+  #     en: GPIO2_A3
+  #   index: 80
+  #   optional: true
+  #   mux:
+  #     default: 0x01
+  #     choise:
+  #       0x00:
+  #         display:
+  #           zh: GPIO2_A3
+  #           en: GPIO2_A3
+  #       0x01:
+  #         display:
+  #           zh: FSPI_D1
+  #           en: FSPI_D1
+  # GPIO2_A0:
+  #   display:
+  #     zh: GPIO2_A0
+  #     en: GPIO2_A0
+  #   index: 81
+  #   optional: true
+  #   mux:
+  #     default: 0x01
+  #     choise:
+  #       0x00:
+  #         display:
+  #           zh: GPIO2_A0
+  #           en: GPIO2_A0
+  #       0x01:
+  #         display:
+  #           zh: FSPI_CSN
+  #           en: FSPI_CSN
+  NC76:
+    display:
+      zh: NC
+      en: NC
+    index: 76
+    optional: false
+  NC77:
+    display:
+      zh: NC
+      en: NC
+    index: 77
+    optional: false
+  NC78:
+    display:
+      zh: NC
+      en: NC
+    index: 78
+    optional: false
+  NC79:
+    display:
+      zh: NC
+      en: NC
+    index: 79
+    optional: false
+  NC80:
+    display:
+      zh: NC
+      en: NC
+    index: 80
+    optional: false
+  NC81:
+    display:
+      zh: NC
+      en: NC
+    index: 81
+    optional: false
+  GND82:
+    display:
+      zh: GND
+      en: GND
+    index: 82
+    optional: false
+  GPIO4_B3:
+    display:
+      zh: GPIO4_B3
+      en: GPIO4_B3
+    index: 83
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO4_B3
+            en: GPIO4_B3
+        0x01:
+          display:
+            zh: SARADC_IN3
+            en: SARADC_IN3
+  GPIO4_B2:
+    display:
+      zh: GPIO4_B2
+      en: GPIO4_B2
+    index: 84
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO4_B2
+            en: GPIO4_B2
+        0x01:
+          display:
+            zh: SARADC_IN2
+            en: SARADC_IN2
+  GPIO4_B1:
+    display:
+      zh: GPIO4_B1
+      en: GPIO4_B1
+    index: 85
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO4_B1
+            en: GPIO4_B1
+        0x01:
+          display:
+            zh: SARADC_IN1_RECOVER
+            en: SARADC_IN1_RECOVER
+  GPIO4_B0:
+    display:
+      zh: GPIO4_B0
+      en: GPIO4_B0
+    index: 86
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO4_B0
+            en: GPIO4_B0
+        0x01:
+          display:
+            zh: SARADC_IN0_BOOT
+            en: SARADC_IN0_BOOT
+  GND87:
+    display:
+      zh: GND
+      en: GND
+    index: 87
+    optional: false
+  ACODEC_ADC_INP:
+    display:
+      zh: ACODEC_ADC_INP
+      en: ACODEC_ADC_INP
+    index: 88
+    optional: false
+  ACODEC_ADC_INN:
+    display:
+      zh: ACODEC_ADC_INN
+      en: ACODEC_ADC_INN
+    index: 89
+    optional: false
+  GND90:
+    display:
+      zh: GND
+      en: GND
+    index: 90
+    optional: false
+  USB20_OTG0_VBUSDET:
+    display:
+      zh: USB20_OTG0_VBUSDET
+      en: USB20_OTG0_VBUSDET
+    index: 91
+    optional: false
+  USB20_OTG0_ID:
+    display:
+      zh: USB20_OTG0_ID
+      en: USB20_OTG0_ID
+    index: 92
+    optional: false
+  USB20_OTG0_DM:
+    display:
+      zh: USB20_OTG0_DM
+      en: USB20_OTG0_DM
+    index: 93
+    optional: false
+  USB20_OTG0_DP:
+    display:
+      zh: USB20_OTG0_DP
+      en: USB20_OTG0_DP
+    index: 94
+    optional: false
+  USB20_OTG1_DM:
+    display:
+      zh: USB20_OTG1_DM
+      en: USB20_OTG1_DM
+    index: 95
+    optional: false
+  USB20_OTG1_DP:
+    display:
+      zh: USB20_OTG1_DP
+      en: USB20_OTG1_DP
+    index: 96
+    optional: false
+
+  #第四组引脚
+  GND97:
+    display:
+      zh: GND
+      en: GND
+    index: 97
+    optional: false
+  GPIO4_A4:
+    display:
+      zh: GPIO4_A4
+      en: GPIO4_A4
+    index: 98
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO4_A4
+            en: GPIO4_A4
+        0x01:
+          display:
+            zh: MIPI_DPHY_DSI_TX_CLKN
+            en: MIPI_DPHY_DSI_TX_CLKN
+  GPIO4_A5:
+    display:
+      zh: GPIO4_A5
+      en: GPIO4_A5
+    index: 99
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO4_A5
+            en: GPIO4_A5
+        0x01:
+          display:
+            zh: MIPI_DPHY_DSI_TX_CLKP
+            en: MIPI_DPHY_DSI_TX_CLKP
+  GND100:
+    display:
+      zh: GND
+      en: GND
+    index: 100
+    optional: false
+  GPIO4_A2:
+    display:
+      zh: GPIO4_A2
+      en: GPIO4_A2
+    index: 101
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO4_A2
+            en: GPIO4_A2
+        0x01:
+          display:
+            zh: MIPI_DPHY_DSI_TX_D1N
+            en: MIPI_DPHY_DSI_TX_D1N
+  GPIO4_A3:
+    display:
+      zh: GPIO4_A3
+      en: GPIO4_A3
+    index: 102
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO4_A3
+            en: GPIO4_A3
+        0x01:
+          display:
+            zh: MIPI_DPHY_DSI_TX_D1P
+            en: MIPI_DPHY_DSI_TX_D1P
+  GPIO4_A0:
+    display:
+      zh: GPIO4_A0
+      en: GPIO4_A0
+    index: 103
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO4_A0
+            en: GPIO4_A0
+        0x01:
+          display:
+            zh: MIPI_DPHY_DSI_TX_D0N
+            en: MIPI_DPHY_DSI_TX_D0N
+  GPIO4_A1:
+    display:
+      zh: GPIO4_A1
+      en: GPIO4_A1
+    index: 104
+    optional: true
+    mux:
+      default: 0x01
+      choise:
+        0x00:
+          display:
+            zh: GPIO4_A1
+            en: GPIO4_A1
+        0x01:
+          display:
+            zh: MIPI_DPHY_DSI_TX_D0P
+            en: MIPI_DPHY_DSI_TX_D0P
+  GND105:
+    display:
+      zh: GND
+      en: GND
+    index: 105
+    optional: false
+  GPIO1_A0:
+    display:
+      zh: GPIO1_A0
+      en: GPIO1_A0
+    index: 106
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_A0
+            en: GPIO1_A0
+        0x01:
+          display:
+            zh: VO_LCDC_DEN
+            en: VO_LCDC_DEN
+        0x02:
+          display:
+            zh: DSNC_CLKP
+            en: DSNC_CLKP
+        0x03:
+          display:
+            zh: FLEXBUS1_D0
+            en: FLEXBUS1_D0
+  GPIO1_A1:
+    display:
+      zh: GPIO1_A1
+      en: GPIO1_A1
+    index: 107
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_A1
+            en: GPIO1_A1
+        0x01:
+          display:
+            zh: VO_LCDC_VSYNC
+            en: VO_LCDC_VSYNC
+        0x02:
+          display:
+            zh: DSMC_CLKN
+            en: DSMC_CLKN
+        0x03:
+          display:
+            zh: FLEXBUS1_D1
+            en: FLEXBUS1_D1
+        0x04:
+          display:
+            zh: DSMC_INT0
+            en: DSMC_INT0
+        0x08:
+          display:
+            zh: DSMC_SLV_INT
+            en: DSMC_SLV_INT
+  GPIO1_A2:
+    display:
+      zh: GPIO1_A2
+      en: GPIO1_A2
+    index: 108
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_A2
+            en: GPIO1_A2
+        0x01:
+          display:
+            zh: VO_LCDC_HSYNC
+            en: VO_LCDC_HSYNC
+        0x02:
+          display:
+            zh: DSMC_DQS0
+            en: DSMC_DQS0
+        0x03:
+          display:
+            zh: FLEXBUS1_D2
+            en: FLEXBUS1_D2
+  GPIO1_A3:
+    display:
+      zh: GPIO1_A3
+      en: GPIO1_A3
+    index: 109
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_A3
+            en: GPIO1_A3
+        0x01:
+          display:
+            zh: VO_LCDC_CLK
+            en: VO_LCDC_CLK
+        0x02:
+          display:
+            zh: DSMC_D0
+            en: DSMC_D0
+        0x03:
+          display:
+            zh: FLEXBUS1_D3
+            en: FLEXBUS1_D3
+  GND110:
+    display:
+      zh: GND
+      en: GND
+    index: 110
+    optional: false
+  GPIO1_A4:
+    display:
+      zh: GPIO1_A4
+      en: GPIO1_A4
+    index: 111
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_A4
+            en: GPIO1_A4
+        0x01:
+          display:
+            zh: VO_LCDC_D23
+            en: VO_LCDC_D23
+        0x02:
+          display:
+            zh: DSMC_D1
+            en: DSMC_D1
+        0x03:
+          display:
+            zh: FLEXBUS1_D4
+            en: FLEXBUS1_D4
+  GPIO1_A5:
+    display:
+      zh: GPIO1_A5
+      en: GPIO1_A5
+    index: 112
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_A5
+            en: GPIO1_A5
+        0x01:
+          display:
+            zh: VO_LCDC_D22
+            en: VO_LCDC_D22
+        0x02:
+          display:
+            zh: DSMC_D2
+            en: DSMC_D2
+        0x03:
+          display:
+            zh: FLEXBUS1_D5
+            en: FLEXBUS1_D5
+  GPIO1_A6:
+    display:
+      zh: GPIO1_A6
+      en: GPIO1_A6
+    index: 113
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_A6
+            en: GPIO1_A6
+        0x01:
+          display:
+            zh: VO_LCDC_D21
+            en: VO_LCDC_D21
+        0x02:
+          display:
+            zh: DSMC_D3
+            en: DSMC_D3
+        0x03:
+          display:
+            zh: FLEXBUS1_D6
+            en: FLEXBUS1_D6
+  GPIO1_A7:
+    display:
+      zh: GPIO1_A7
+      en: GPIO1_A7
+    index: 114
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_A7
+            en: GPIO1_A7
+        0x01:
+          display:
+            zh: VO_LCDC_D20
+            en: VO_LCDC_D20
+        0x02:
+          display:
+            zh: DSMC_D4
+            en: DSMC_D4
+        0x03:
+          display:
+            zh: FLEXBUS1_D7
+            en: FLEXBUS1_D7
+  GND115:
+    display:
+      zh: GND
+      en: GND
+    index: 115
+    optional: false
+  GPIO1_B0:
+    display:
+      zh: GPIO1_B0
+      en: GPIO1_B0
+    index: 116
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_B0
+            en: GPIO1_B0
+        0x01:
+          display:
+            zh: VO_LCDC_D19
+            en: VO_LCDC_D19
+        0x02:
+          display:
+            zh: DSMC_D5
+            en: DSMC_D5
+        0x03:
+          display:
+            zh: FLEXBUS1_D8
+            en: FLEXBUS1_D8
+        0x05:
+          display:
+            zh: FLEXBUS0_CSN_M0
+            en: FLEXBUS0_CSN_M0
+  GPIO1_B1:
+    display:
+      zh: GPIO1_B1
+      en: GPIO1_B1
+    index: 117
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_B1
+            en: GPIO1_B1
+        0x01:
+          display:
+            zh: VO_LCDC_D18
+            en: VO_LCDC_D18
+        0x02:
+          display:
+            zh: DSMC_CSN1
+            en: DSMC_CSN1
+        0x03:
+          display:
+            zh: FLEXBUS1_D9
+            en: FLEXBUS1_D9
+        0x05:
+          display:
+            zh: FLEXBUS1_CSN_M0
+            en: FLEXBUS1_CSN_M0
+        0x06:
+          display:
+            zh: UART5_CTSN_M1
+            en: UART5_CTSN_M1
+        0x07:
+          display:
+            zh: RM_IO24
+            en: RM_IO24
+          secondary:
+            select: rmio
+            default: 0x1C
+  GPIO1_B2:
+    display:
+      zh: GPIO1_B2
+      en: GPIO1_B2
+    index: 118
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_B2
+            en: GPIO1_B2
+        0x01:
+          display:
+            zh: VO_LCDC_D17
+            en: VO_LCDC_D17
+        0x02:
+          display:
+            zh: DSMC_CSN2
+            en: DSMC_CSN2
+        0x03:
+          display:
+            zh: FLEXBUS1_D10
+            en: FLEXBUS1_D10
+        0x04:
+          display:
+            zh: FLEXBUS0_D15
+            en: FLEXBUS0_D15
+        0x05:
+          display:
+            zh: FLEXBUS0_CSN_M1
+            en: FLEXBUS0_CSN_M1
+        0x06:
+          display:
+            zh: SAI2_SCLK_M1
+            en: SAI2_SCLK_M1
+        0x07:
+          display:
+            zh: RM_IO25
+            en: RM_IO25
+          secondary:
+            select: rmio
+            default: 0x1C
+  GPIO1_B3:
+    display:
+      zh: GPIO1_B3
+      en: GPIO1_B3
+    index: 119
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_B3
+            en: GPIO1_B3
+        0x01:
+          display:
+            zh: VO_LCDC_D16
+            en: VO_LCDC_D16
+        0x02:
+          display:
+            zh: DSMC_INT3
+            en: DSMC_INT3
+        0x03:
+          display:
+            zh: FLEXBUS1_D11
+            en: FLEXBUS1_D11
+        0x04:
+          display:
+            zh: FLEXBUS0_D14
+            en: FLEXBUS0_D14
+        0x05:
+          display:
+            zh: FLEXBUS1_CSN_M1
+            en: FLEXBUS1_CSN_M1
+        0x06:
+          display:
+            zh: SAI2_LRCK_M1
+            en: SAI2_LRCK_M1
+        0x07:
+          display:
+            zh: RM_IO26
+            en: RM_IO26
+          secondary:
+            select: rmio
+            default: 0x1C
+  GPIO1_B4:
+    display:
+      zh: GPIO1_B4
+      en: GPIO1_B4
+    index: 120
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_B4
+            en: GPIO1_B4
+        0x01:
+          display:
+            zh: VO_LCDC_D15
+            en: VO_LCDC_D15
+        0x02:
+          display:
+            zh: DSMC_D6
+            en: DSMC_D6
+        0x03:
+          display:
+            zh: FLEXBUS1_D12
+            en: FLEXBUS1_D12
+        0x04:
+          display:
+            zh: FLEXBUS0_D13
+            en: FLEXBUS0_D13
+        0x05:
+          display:
+            zh: FLEXBUS0_CSN_M2
+            en: FLEXBUS0_CSN_M2
+  GPIO1_B5:
+    display:
+      zh: GPIO1_B5
+      en: GPIO1_B5
+    index: 121
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_B5
+            en: GPIO1_B5
+        0x01:
+          display:
+            zh: VO_LCDC_D14
+            en: VO_LCDC_D14
+        0x02:
+          display:
+            zh: DSMC_D7
+            en: DSMC_D7
+        0x03:
+          display:
+            zh: FLEXBUS1_D13
+            en: FLEXBUS1_D13
+        0x04:
+          display:
+            zh: FLEXBUS0_D12
+            en: FLEXBUS0_D12
+        0x05:
+          display:
+            zh: FLEXBUS1_CSN_M2
+            en: FLEXBUS1_CSN_M2
+  GPIO1_B6:
+    display:
+      zh: GPIO1_B6
+      en: GPIO1_B6
+    index: 122
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_B6
+            en: GPIO1_B6
+        0x01:
+          display:
+            zh: VO_LCDC_D13
+            en: VO_LCDC_D13
+        0x02:
+          display:
+            zh: DSMC_CSN0
+            en: DSMC_CSN0
+        0x03:
+          display:
+            zh: FLEXBUS1_D14
+            en: FLEXBUS1_D14
+        0x04:
+          display:
+            zh: FLEXBUS0_D11
+            en: FLEXBUS0_D11
+        0x05:
+          display:
+            zh: FLEXBUS0_CSN_M3
+            en: FLEXBUS0_CSN_M3
+  GPIO1_B7:
+    display:
+      zh: GPIO1_B7
+      en: GPIO1_B7
+    index: 123
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_B7
+            en: GPIO1_B7
+        0x01:
+          display:
+            zh: VO_LCDC_D12
+            en: VO_LCDC_D12
+        0x02:
+          display:
+            zh: DSMC_RDYN
+            en: DSMC_RDYN
+        0x03:
+          display:
+            zh: FLEXBUS1_D15
+            en: FLEXBUS1_D15
+        0x04:
+          display:
+            zh: FLEXBUS0_D10
+            en: FLEXBUS0_D10
+        0x05:
+          display:
+            zh: FLEXBUS1_CSN_M3
+            en: FLEXBUS1_CSN_M3
+  GND124:
+    display:
+      zh: GND
+      en: GND
+    index: 124
+    optional: false
+  GPIO1_C0:
+    display:
+      zh: GPIO1_C0
+      en: GPIO1_C0
+    index: 125
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_C0
+            en: GPIO1_C0
+        0x01:
+          display:
+            zh: VO_LCDC_D11
+            en: VO_LCDC_D11
+        0x02:
+          display:
+            zh: DSMC_RESETN
+            en: DSMC_RESETN
+        0x03:
+          display:
+            zh: FLEXBUS1_CLK
+            en: FLEXBUS1_CLK
+        0x04:
+          display:
+            zh: DSMC_INT1
+            en: DSMC_INT1
+        0x05:
+          display:
+            zh: FLEXBUS0_CSN_M4
+            en: FLEXBUS0_CSN_M4
+        0x08:
+          display:
+            zh: DSMC_SLV_CLK
+            en: DSMC_SLV_CLK
+  GPIO1_C1:
+    display:
+      zh: GPIO1_C1
+      en: GPIO1_C1
+    index: 126
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_C1
+            en: GPIO1_C1
+        0x01:
+          display:
+            zh: VO_LCDC_D10
+            en: VO_LCDC_D10
+        0x02:
+          display:
+            zh: DSMC_D8
+            en: DSMC_D8
+        0x03:
+          display:
+            zh: FLEXBUS0_CLK
+            en: FLEXBUS0_CLK
+        0x04:
+          display:
+            zh: DSM_AUD_RN_M0
+            en: DSM_AUD_RN_M0
+        0x05:
+          display:
+            zh: FLEXBUS1_CSN_M4
+            en: FLEXBUS1_CSN_M4
+        0x06:
+          display:
+            zh: SAI2_MCLK_M1
+            en: SAI2_MCLK_M1
+        0x08:
+          display:
+            zh: DSMC_SLV_DQS0
+            en: DSMC_SLV_DQS0
+  GPIO1_C2:
+    display:
+      zh: GPIO1_C2
+      en: GPIO1_C2
+    index: 127
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_C2
+            en: GPIO1_C2
+        0x01:
+          display:
+            zh: VO_LCDC_D9
+            en: VO_LCDC_D9
+        0x02:
+          display:
+            zh: DSMC_D9
+            en: DSMC_D9
+        0x03:
+          display:
+            zh: FLEXBUS0_D9
+            en: FLEXBUS0_D9
+        0x04:
+          display:
+            zh: DSM_AUD_RP_M0
+            en: DSM_AUD_RP_M0
+        0x05:
+          display:
+            zh: FLEXBUS0_CSN_M5
+            en: FLEXBUS0_CSN_M5
+        0x06:
+          display:
+            zh: SAI2_SDI_M1
+            en: SAI2_SDI_M1
+        0x07:
+          display:
+            zh: RM_IO27
+            en: RM_IO27
+          secondary:
+            select: rmio
+            default: 0x1C
+        0x08:
+          display:
+            zh: DSMC_SLV_D0
+            en: DSMC_SLV_D0
+  GPIO1_C3:
+    display:
+      zh: GPIO1_C3
+      en: GPIO1_C3
+    index: 128
+    optional: true
+    mux:
+      default: 0x00
+      choise:
+        0x00:
+          display:
+            zh: GPIO1_C3
+            en: GPIO1_C3
+        0x01:
+          display:
+            zh: VO_LCDC_D8
+            en: VO_LCDC_D8
+        0x02:
+          display:
+            zh: DSMC_D10
+            en: DSMC_D10
+        0x03:
+          display:
+            zh: FLEXBUS0_D8
+            en: FLEXBUS0_D8
+        0x05:
+          display:
+            zh: FLEXBUS1_CSN_M5
+            en: FLEXBUS1_CSN_M5
+        0x06:
+          display:
+            zh: SAI2_SDO_M1
+            en: SAI2_SDO_M1
+        0x07:
+          display:
+            zh: RM_IO28
+            en: RM_IO28
+          secondary:
+            select: rmio
+            default: 0x1C
+        0x08:
+          display:
+            zh: DSMC_SLV_D1
+            en: DSMC_SLV_D1

+ 1072 - 0
03_network_opc_ua/.settings/rk3506_peripheral.yaml

@@ -0,0 +1,1072 @@
+uart_config: &uart_config
+  display:
+    zh: 串口配置
+    en: UART configuration
+  type: configuration
+  baudrate:
+    display:
+      zh: 波特率
+      en: baudrate
+    input_type: choise_and_input  # 支持自定义参数输入
+    choise:
+      default: 115200
+      9600:
+        display:
+          zh: 9600
+          en: 9600
+      115200:
+        display:
+          zh: 115200
+          en: 115200
+  data_bits:
+    display:
+      zh: 数据位
+      en: data bits
+    input_type: choise  # 不支持自定义参数输入
+    choise:
+      default: 8
+      5:
+        display:
+          zh: 5
+          en: 5
+      6:
+        display:
+          zh: 6
+          en: 6
+      7:
+        display:
+          zh: 7
+          en: 7
+      8:
+        display:
+          zh: 8
+          en: 8
+  stop_bits:
+    display:
+      zh: 停止位
+      en: stop bits
+    input_type: choise  # 不支持自定义参数输入
+    choise:
+      default: 1
+      1:
+        display:
+          zh: 1
+          en: 1
+      1.5:
+        display:
+          zh: 1.5
+          en: 1.5
+      2:
+        display:
+          zh: 2
+          en: 2
+  parity:
+    display:
+      zh: 奇偶校验
+      en: parity
+    input_type: choise
+    choise:
+      default: none
+      none:
+        display:
+          zh: 关闭校验
+          en: none
+      odd:
+        display:
+          zh: 奇检验
+          en: odd
+      even:
+        display:
+          zh: 偶校验
+          en: even
+  flow_control:
+    display:
+      zh: 流控
+      en: flow control
+    input_type: choise
+    choise:
+      default: none
+      none:
+        display:
+          ch:关闭流控
+          en:none
+      rts/cts:
+        display:
+          ch:rts/cts
+          en:rts/cts
+      xon/xoff:
+        display:
+          ch:xon/xoff
+          en:xon/xoff
+  interrupt_affinity:
+    display:
+      zh: 中断亲和性
+      en: interrupt affinity
+    input_type: choise
+    choise:
+      default: cpu0
+      cpu0:
+        display:
+          zh: cpu0
+          en: cpu0
+      cpu1:
+        display:
+          zh: cpu1
+          en: cpu1
+      cpu2:
+        display:
+          zh: cpu2
+          en: cpu2
+  clock:
+    display:
+      zh: 时钟配置
+      en: clock config
+    input_type: input
+    choise:
+      default: 24000000
+
+i2c_config: &i2c_config
+  display:
+    zh: I2C 配置
+    en: I2C configuration
+  type: configuration
+  speed:
+    display:
+      zh: I2C 速度
+      en: I2C speed
+    input_type: choise_and_input # 支持自定义参数输入
+    choise:
+      default: 100000
+      100000:
+        display:
+          zh: 100KHz
+          en: 100KHz
+      400000:
+        display:
+          zh: 400KHz
+          en: 400KHz
+  interrupt_affinity:
+    display:
+      zh: 中断亲和性
+      en: interrupt affinity
+    input_type: choise
+    choise:
+      default: cpu0
+      cpu0:
+        display:
+          zh: cpu0
+          en: cpu0
+      cpu1:
+        display:
+          zh: cpu1
+          en: cpu1
+      cpu2:
+        display:
+          zh: cpu2
+          en: cpu2
+  clock:
+    display:
+      zh: 时钟配置
+      en: clock config
+    input_type: input
+    choise:
+      default: 24000000
+
+can_config: &can_config
+  display:
+    zh: CAN 配置
+    en: CAN configuration
+  type: configuration
+  interrupt_affinity:
+    display:
+      zh: 中断亲和性
+      en: interrupt affinity
+    input_type: choise
+    choise:
+      default: cpu0
+      cpu0:
+        display:
+          zh: cpu0
+          en: cpu0
+      cpu1:
+        display:
+          zh: cpu1
+          en: cpu1
+      cpu2:
+        display:
+          zh: cpu2
+          en: cpu2
+
+spi_config: &spi_config
+  display:
+    zh: SPI 配置
+    en: SPI configuration
+  type: configuration
+  interrupt_affinity:
+    display:
+      zh: 中断亲和性
+      en: interrupt affinity
+    input_type: choise
+    choise:
+      default: cpu0
+      cpu0:
+        display:
+          zh: cpu0
+          en: cpu0
+      cpu1:
+        display:
+          zh: cpu1
+          en: cpu1
+      cpu2:
+        display:
+          zh: cpu2
+          en: cpu2
+
+gmac_config: &gmac_config
+  display:
+    zh: GMAC 配置
+    en: GMAC configuration
+  type: configuration
+  interrupt_affinity:
+    display:
+      zh: 中断亲和性
+      en: interrupt affinity
+    input_type: choise
+    choise:
+      default: cpu0
+      cpu0:
+        display:
+          zh: cpu0
+          en: cpu0
+      cpu1:
+        display:
+          zh: cpu1
+          en: cpu1
+      cpu2:
+        display:
+          zh: cpu2
+          en: cpu2
+  mac-addr0:
+    display:
+      zh: mac 地址
+      en: mac addr
+    input_type: input
+    choise:
+      default: 08:00:27:ae:56:87
+  mac-addr1:
+    display:
+      zh: mac 地址
+      en: mac addr
+    input_type: input
+    choise:
+      default: 08:00:27:ae:56:88
+  static-ip-addr0:
+    display:
+      zh: 静态 ip 地址
+      en: static ip addr
+    input_type: input
+    choise:
+      default: 192.168.2.100
+  static-ip-addr1:
+    display:
+      zh: 静态 ip 地址
+      en: static ip addr
+    input_type: input
+    choise:
+      default: 192.168.3.100
+  gateway0:
+    display:
+      zh: 网关
+      en: gateway
+    input_type: input
+    choise:
+      default: 192.168.2.1
+  gateway1:
+    display:
+      zh: 网关
+      en: gateway
+    input_type: input
+    choise:
+      default: 192.168.3.1
+  netmask0:
+    display:
+      zh: 子网掩码
+      en: netmask
+    input_type: input
+    choise:
+      default: 255.255.255.0
+  netmask1:
+    display:
+      zh: 子网掩码
+      en: netmask
+    input_type: input
+    choise:
+      default: 255.255.255.0
+  dns0:
+    display:
+      zh: dns0
+      en: dns0
+    input_type: input
+    choise:
+      default: 114.114.114.114
+  dns1:
+    display:
+      zh: dns1
+      en: dns1
+    input_type: input
+    choise:
+      default: 223.6.6.6
+  dhcp:
+    display:
+      zh: dhcp
+      en: dhcp
+    input_type: choise
+    choise:
+      default: disable
+      enable:
+        display:
+          zh: 使能
+          en: enable
+      disable:
+        display:
+          zh: 关闭
+          en: disable
+
+mmc_config: &mmc_config
+  display:
+    zh: SDMMC 配置
+    en: SDMMC configuration
+  type: configuration
+  interrupt_affinity:
+    display:
+      zh: 中断亲和性
+      en: interrupt affinity
+    input_type: choise
+    choise:
+      default: cpu0
+      cpu0:
+        display:
+          zh: cpu0
+          en: cpu0
+      cpu1:
+        display:
+          zh: cpu1
+          en: cpu1
+      cpu2:
+        display:
+          zh: cpu2
+          en: cpu2
+
+pwm_config: &pwm_config
+  display:
+    zh: PWM 配置
+    en: PWM configuration
+  type: configuration
+  interrupt_affinity:
+    display:
+      zh: 中断亲和性
+      en: interrupt affinity
+    input_type: choise
+    choise:
+      default: cpu0
+      cpu0:
+        display:
+          zh: cpu0
+          en: cpu0
+      cpu1:
+        display:
+          zh: cpu1
+          en: cpu1
+      cpu2:
+        display:
+          zh: cpu2
+          en: cpu2
+
+wdt_config: &wdt_config
+  display:
+    zh: WATCHDOG 配置
+    en: WATCHDOG configuration
+  type: configuration
+  interrupt_affinity:
+    display:
+      zh: 中断亲和性
+      en: interrupt affinity
+    input_type: choise
+    choise:
+      default: cpu0
+      cpu0:
+        display:
+          zh: cpu0
+          en: cpu0
+      cpu1:
+        display:
+          zh: cpu1
+          en: cpu1
+      cpu2:
+        display:
+          zh: cpu2
+          en: cpu2
+
+kernel_config: &kernel_config
+  display:
+    zh: 内核配置
+    en: kernel configuration
+  type: configuration
+  console-name:
+    display:
+      zh: 控制台设备选择
+      en: console device select
+    input_type: input
+    choise:
+      default: fiq_debugger
+
+periperal:
+  display:
+    zh: 外设配置
+    en: peripheral
+  type: periperal
+
+  kernel:
+    display:
+      zh: 内核配置
+      en: kernel configuration
+    all_config: *kernel_config
+    console:
+      display:
+        zh: 控制台
+        en: console
+      config:
+        - console-name
+      status: enable
+
+  uart:
+    display:
+      zh: 串口
+      en: UART
+    all_config: *uart_config
+    uart1:
+      display:
+        zh: UART1
+        en: UART1
+      status: disable
+      config:
+        # - baudrate
+        # - data_bits
+        # - stop_bits
+        # - parity
+        - interrupt_affinity
+      pin:
+        UART1_TX:
+          display:
+            zh: UART1_TX
+            en: UART1_TX
+          mux: UART1_TX
+        UART0_RX:
+          display:
+            zh: UART1_RX
+            en: UART1_RX
+          mux: UART1_RX
+    uart2:
+      display:
+        zh: UART2
+        en: UART2
+      status: disable
+      config:
+        # - baudrate
+        # - data_bits
+        # - stop_bits
+        # - parity
+        # - clock
+        - interrupt_affinity
+      pin:
+        UART2_TX:
+          display:
+            zh: UART2_TX
+            en: UART2_TX
+          mux: UART2_TX
+        UART2_RX:
+          display:
+            zh: UART2_RX
+            en: UART2_RX
+          mux: UART2_RX
+    uart3:
+      display:
+        zh: UART3
+        en: UART3
+      status: enable
+      config:
+        # - baudrate
+        # - data_bits
+        # - stop_bits
+        # - parity
+        # - clock
+        - interrupt_affinity
+      pin:
+        UART3_TX:
+          display:
+            zh: UART3_TX
+            en: UART3_TX
+          mux: UART3_TX
+        UART3_RX:
+          display:
+            zh: UART3_RX
+            en: UART3_RX
+          mux: UART3_RX
+        UART3_CTSN:
+          display:
+            zh: UART3_CTSN
+            en: UART3_CTSN
+          mux: UART3_CTSN
+        UART3_RTSN:
+          display:
+            zh: UART3_RTSN
+            en: UART3_RTSN
+          mux: UART3_RTSN
+    uart4:
+      display:
+        zh: UART4
+        en: UART4
+      status: disable
+      config:
+        # - baudrate
+        # - data_bits
+        # - stop_bits
+        # - parity
+        # - clock
+        - interrupt_affinity
+      pin:
+        UART4_TX:
+          display:
+            zh: UART4_TX
+            en: UART4_TX
+          mux: UART4_TX
+        UART4_RX:
+          display:
+            zh: UART4_RX
+            en: UART4_RX
+          mux: UART4_RX
+    uart5:
+      display:
+        zh: UART5
+        en: UART5
+      status: enable
+      config:
+        # - baudrate
+        # - data_bits
+        # - stop_bits
+        # - parity
+        # - clock
+        - interrupt_affinity
+      pin:
+        UART5_TX:
+          display:
+            zh: UART5_TX_M1
+            en: UART5_TX_M1
+          mux: UART5_TX_M1
+        UART5_RX:
+          display:
+            zh: UART5_RX_M1
+            en: UART5_RX_M1
+          mux: UART5_RX_M1
+
+  i2c:
+    display:
+      zh: I2C
+      en: I2C
+    all_config: *i2c_config
+    i2c0:
+      display:
+        zh: I2C0
+        en: I2C0
+      status: enable
+      config:
+        # - speed
+        # - clock
+        - interrupt_affinity
+      pin:
+        I2C0_SCL:
+          display:
+            zh: I2C0_SCL
+            en: I2C0_SCL
+          mux: I2C0_SCL
+        I2C0_SDA:
+          display:
+            zh: I2C0_SDA
+            en: I2C0_SDA
+          mux: I2C0_SDA
+    i2c1:
+      display:
+        zh: I2C1
+        en: I2C1
+      status: enable
+      config:
+        # - speed
+        # - clock
+        - interrupt_affinity
+      pin:
+        I2C1_SCL:
+          display:
+            zh: I2C1_SCL
+            en: I2C1_SCL
+          mux: I2C1_SCL
+        I2C1_SDA:
+          display:
+            zh: I2C1_SDA
+            en: I2C1_SDA
+          mux: I2C1_SDA
+    i2c2:
+      display:
+        zh: I2C2
+        en: I2C2
+      status: disable
+      config:
+        # - speed
+        # - clock
+        - interrupt_affinity
+      pin:
+        I2C2_SCL:
+          display:
+            zh: I2C2_SCL
+            en: I2C2_SCL
+          mux: I2C2_SCL
+        I2C2_SDA:
+          display:
+            zh: I2C2_SDA
+            en: I2C2_SDA
+          mux: I2C2_SDA
+
+  can:
+    display:
+      zh: CAN
+      en: CAN
+    all_config: *can_config
+    can0:
+      display:
+        zh: CAN0
+        en: CAN0
+      status: enable
+      config:
+        - interrupt_affinity
+      pin:
+        CAN0_TX:
+          display:
+            zh: CAN0_TX
+            en: CAN0_TX
+          mux: CAN0_TX
+        CAN0_RX:
+          display:
+            zh: CAN0_RX
+            en: CAN0_RX
+          mux: CAN0_RX
+    can1:
+      display:
+        zh: CAN1
+        en: CAN1
+      status: disable
+      config:
+        - interrupt_affinity
+      pin:
+        CAN1_TX:
+          display:
+            zh: CAN1_TX
+            en: CAN1_TX
+          mux: CAN1_TX
+        CAN1_RX:
+          display:
+            zh: CAN1_RX
+            en: CAN1_RX
+          mux: CAN1_RX
+
+  spi:
+    display:
+      zh: SPI
+      en: SPI
+    all_config: *spi_config
+    spi0:
+      display:
+        zh: SPI0
+        en: SPI0
+      status: enable
+      config:
+        - interrupt_affinity
+      pin:
+        SPI0_CLK:
+          display:
+            zh: SPI0_CLK
+            en: SPI0_CLK
+          mux: SPI0_CLK
+        SPI0_MOSI:
+          display:
+            zh: SPI0_MOSI
+            en: SPI0_MOSI
+          mux: SPI0_MOSI
+        SPI0_MISO:
+          display:
+            zh: SPI0_MISO
+            en: SPI0_MISO
+          mux: SPI0_MISO
+    spi1:
+      display:
+        zh: SPI1
+        en: SPI1
+      status: disable
+      config:
+        - interrupt_affinity
+      pin:
+        SPI1_CLK:
+          display:
+            zh: SPI1_CLK
+            en: SPI1_CLK
+          mux: SPI1_CLK
+        SPI1_MOSI:
+          display:
+            zh: SPI1_MOSI
+            en: SPI1_MOSI
+          mux: SPI1_MOSI
+        SPI1_MISO:
+          display:
+            zh: SPI1_MISO
+            en: SPI1_MISO
+          mux: SPI1_MISO
+
+  gmac:
+    display:
+      zh: GMAC
+      en: GMAC
+    all_config: *gmac_config
+    gmac0:
+      display:
+        zh: GMAC0
+        en: GMAC0
+      status: enable
+      config:
+        - mac-addr0
+        - dhcp
+        - static-ip-addr0
+        - gateway0
+        - netmask0
+        - interrupt_affinity
+      pin:
+        ETH_RMII0_RXDVCRS:
+          display:
+            zh: ETH_RMII0_RXDVCRS
+            en: ETH_RMII0_RXDVCRS
+          mux: ETH_RMII0_RXDVCRS
+        ETH_RMII0_RXD0:
+          display:
+            zh: ETH_RMII0_RXD0
+            en: ETH_RMII0_RXD0
+          mux: ETH_RMII0_RXD0
+        ETH_RMII0_RXD1:
+          display:
+            zh: ETH_RMII0_RXD1
+            en: ETH_RMII0_RXD1
+          mux: ETH_RMII0_RXD1
+        ETH_RMII0_TXD0:
+          display:
+            zh: ETH_RMII0_TXD0
+            en: ETH_RMII0_TXD0
+          mux: ETH_RMII0_TXD0
+        ETH_RMII0_TXD1:
+          display:
+            zh: ETH_RMII0_TXD1
+            en: ETH_RMII0_TXD1
+          mux: ETH_RMII0_TXD1
+        ETH_RMII0_TXEN:
+          display:
+            zh: ETH_RMII0_TXEN
+            en: ETH_RMII0_TXEN
+          mux: ETH_RMII0_TXEN
+        ETH_RMII0_CLK:
+          display:
+            zh: ETH_RMII0_CLK
+            en: ETH_RMII0_CLK
+          mux: ETH_RMII0_CLK
+        ETH_RMII0_MDIO:
+          display:
+            zh: ETH_RMII0_MDIO
+            en: ETH_RMII0_MDIO
+          mux: ETH_RMII0_MDIO
+        ETH_RMII0_MDC:
+          display:
+            zh: ETH_RMII0_MDC
+            en: ETH_RMII0_MDC
+          mux: ETH_RMII0_MDC
+    gmac1:
+      display:
+        zh: GMAC1
+        en: GMAC1
+      status: enable
+      config:
+        - mac-addr1
+        - dhcp
+        - static-ip-addr1
+        - gateway1
+        - netmask1
+        - interrupt_affinity
+      pin:
+        ETH_RMII1_RXDVCRS:
+          display:
+            zh: ETH_RMII1_RXDVCRS
+            en: ETH_RMII1_RXDVCRS
+          mux: ETH_RMII1_RXDVCRS
+        ETH_RMII1_RXD0:
+          display:
+            zh: ETH_RMII1_RXD0
+            en: ETH_RMII1_RXD0
+          mux: ETH_RMII1_RXD0
+        ETH_RMII1_RXD1:
+          display:
+            zh: ETH_RMII1_RXD1
+            en: ETH_RMII1_RXD1
+          mux: ETH_RMII1_RXD1
+        ETH_RMII1_TXD0:
+          display:
+            zh: ETH_RMII1_TXD0
+            en: ETH_RMII1_TXD0
+          mux: ETH_RMII1_TXD0
+        ETH_RMII1_TXD1:
+          display:
+            zh: ETH_RMII1_TXD1
+            en: ETH_RMII1_TXD1
+          mux: ETH_RMII1_TXD1
+        ETH_RMII1_TXEN:
+          display:
+            zh: ETH_RMII1_TXEN
+            en: ETH_RMII1_TXEN
+          mux: ETH_RMII1_TXEN
+        ETH_RMII1_CLK:
+          display:
+            zh: ETH_RMII1_CLK
+            en: ETH_RMII1_CLK
+          mux: ETH_RMII1_CLK
+        ETH_RMII1_MDIO:
+          display:
+            zh: ETH_RMII1_MDIO
+            en: ETH_RMII1_MDIO
+          mux: ETH_RMII1_MDIO
+        ETH_RMII1_MDC:
+          display:
+            zh: ETH_RMII1_MDC
+            en: ETH_RMII1_MDC
+          mux: ETH_RMII1_MDC
+    dns:
+      display:
+        zh: DNS 服务器
+        en: DNS Server
+      status: enable
+      config:
+        - dns0
+        - dns1
+
+  mmc:
+    display:
+      zh: MMC
+      en: MMC
+    all_config: *mmc_config
+    mmc:
+      display:
+        zh: SDMMC
+        en: SDMMC
+      status: enable
+      config:
+        - interrupt_affinity
+      pin:
+        SDMMC_CMD:
+          display:
+            zh: SDMMC_CMD
+            en: SDMMC_CMD
+          mux: SDMMC_CMD
+        SDMMC_CLK:
+          display:
+            zh: SDMMC_CLK
+            en: SDMMC_CLK
+          mux: SDMMC_CLK
+        SDMMC_D0:
+          display:
+            zh: SDMMC_D0
+            en: SDMMC_D0
+          mux: SDMMC_D0
+        SDMMC_D1:
+          display:
+            zh: SDMMC_D1
+            en: SDMMC_D1
+          mux: SDMMC_D1
+        SDMMC_D2:
+          display:
+            zh: SDMMC_D2
+            en: SDMMC_D2
+          mux: SDMMC_D2
+        SDMMC_D3:
+          display:
+            zh: SDMMC_D3
+            en: SDMMC_D3
+          mux: SDMMC_D3
+
+  pwm:
+    display:
+      zh: PWM
+      en: PWM
+    all_config: *pwm_config
+    pwm0_4ch_0:
+      config:
+      display:
+        zh: PWM0_4CH_0
+        en: PWM0_4CH_0
+      status: enable
+      pin:
+        PWM0_CH0:
+          display:
+            zh: PWM0_CH0
+            en: PWM0_CH0
+          mux: PWM0_CH0
+    pwm0_4ch_1:
+      config:
+      display:
+        zh: PWM0_4CH_1
+        en: PWM0_4CH_1
+      status: disable
+      pin:
+        PWM0_CH1:
+          display:
+            zh: PWM0_CH1
+            en: PWM0_CH1
+          mux: PWM0_CH1
+    pwm0_4ch_2:
+      config:
+      display:
+        zh: PWM0_4CH_2
+        en: PWM0_4CH_2
+      status: enable
+      pin:
+        PWM0_CH0:
+          display:
+            zh: PWM0_CH2
+            en: PWM0_CH2
+          mux: PWM0_CH2
+    pwm0_4ch_3:
+      config:
+      display:
+        zh: PWM0_4CH_3
+        en: PWM0_4CH_3
+      status: disable
+      pin:
+        PWM0_CH3:
+          display:
+            zh: PWM0_CH3
+            en: PWM0_CH3
+          mux: PWM0_CH3
+    pwm1_8ch_0:
+      config:
+      display:
+        zh: PWM1_8CH_0
+        en: PWM1_8CH_0
+      status: disable
+      pin:
+        PWM1_CH0:
+          display:
+            zh: PWM1_CH0
+            en: PWM1_CH0
+          mux: PWM1_CH0
+    pwm1_8ch_1:
+      config:
+      display:
+        zh: PWM1_8CH_1
+        en: PWM1_8CH_1
+      status: disable
+      pin:
+        PWM1_CH1:
+          display:
+            zh: PWM1_CH1
+            en: PWM1_CH1
+          mux: PWM1_CH1
+    pwm1_8ch_2:
+      config:
+      display:
+        zh: PWM1_8CH_2
+        en: PWM1_8CH_2
+      status: disable
+      pin:
+        PWM1_CH2:
+          display:
+            zh: PWM1_CH2
+            en: PWM1_CH2
+          mux: PWM1_CH2
+    pwm1_8ch_3:
+      config:
+      display:
+        zh: PWM1_8CH_3
+        en: PWM1_8CH_3
+      status: disable
+      pin:
+        PWM1_CH3:
+          display:
+            zh: PWM1_CH3
+            en: PWM1_CH3
+          mux: PWM1_CH3
+    pwm1_8ch_4:
+      config:
+      display:
+        zh: PWM1_8CH_4
+        en: PWM1_8CH_4
+      status: disable
+      pin:
+        PWM1_CH4:
+          display:
+            zh: PWM1_CH4
+            en: PWM1_CH4
+          mux: PWM1_CH4
+    pwm1_8ch_5:
+      config:
+      display:
+        zh: PWM1_8CH_5
+        en: PWM1_8CH_5
+      status: disable
+      pin:
+        PWM1_CH5:
+          display:
+            zh: PWM1_CH5
+            en: PWM1_CH5
+          mux: PWM1_CH5
+    pwm1_8ch_6:
+      config:
+      display:
+        zh: PWM1_8CH_6
+        en: PWM1_8CH_6
+      status: disable
+      pin:
+        PWM1_CH6:
+          display:
+            zh: PWM1_CH6
+            en: PWM1_CH6
+          mux: PWM1_CH6
+    pwm1_8ch_7:
+      config:
+      display:
+        zh: PWM1_8CH_7
+        en: PWM1_8CH_7
+      status: disable
+      pin:
+        PWM1_CH7:
+          display:
+            zh: PWM1_CH7
+            en: PWM1_CH7
+          mux: PWM1_CH7
+
+  wdt:
+    display:
+      zh: WATCHDOG
+      en: WATCHDOG
+    all_config: *wdt_config
+    wdt0:
+      display:
+        zh: WATCHDOG0
+        en: WATCHDOG0
+      config:
+      status: enable
+    wdt1:
+      display:
+        zh: WATCHDOG1
+        en: WATCHDOG1
+      config:
+      status: enable

+ 4 - 0
03_network_opc_ua/.settings/settings.ini

@@ -0,0 +1,4 @@
+running_mode=smp
+dtb_download_pre=restore ${output} binary 0x5003000
+app_download_pre=restore ${output} binary 0xAA1C000;set *0xAA1C014=1
+app_debug_pre=set *0x4000018=0;monitor rk3506.0 cortex_a maskisr on;monitor rk3506.1 cortex_a maskisr on;monitor rk3506.2 cortex_a maskisr on

+ 13 - 0
03_network_opc_ua/Kconfig

@@ -0,0 +1,13 @@
+#-------------------------------------------------------------------------------
+# RT-Thread RuiChing
+# Copyright (c) Shanghai Real-Thread Electronic Technology Co., Ltd.
+# All rights reserved.
+#-------------------------------------------------------------------------------
+mainmenu "RuiChing APP Project Configure"
+
+config PKGS_DIR
+    string
+    option env="PKGS_ROOT"
+    default "packages"
+
+orsource 'rt-thread/Kconfig'

+ 29 - 0
03_network_opc_ua/SConscript

@@ -0,0 +1,29 @@
+#-*- encoding: utf-8 -*-
+#-------------------------------------------------------------------------------
+# SConscript
+# Copyright (c) Shanghai Real-Thread Electronic Technology Co., Ltd.
+#-------------------------------------------------------------------------------
+import os
+from building import *
+Import('RTT_ROOT')
+Import('rtconfig')
+
+#-------------------------------------------------------------------------------
+# System variables
+#-------------------------------------------------------------------------------
+objs   = []
+root   = GetCurrentDir()
+
+#-------------------------------------------------------------------------------
+# Main target
+#-------------------------------------------------------------------------------
+list = os.listdir(root)
+for d in list:
+    path = os.path.join(root, d)
+    if os.path.isfile(os.path.join(path, 'SConscript')):
+        objs = objs + SConscript(os.path.join(d, 'SConscript'))
+
+Return("objs")
+#-------------------------------------------------------------------------------
+# End
+#-------------------------------------------------------------------------------

+ 102 - 0
03_network_opc_ua/SConstruct

@@ -0,0 +1,102 @@
+#-*- encoding: utf-8 -*-
+#-------------------------------------------------------------------------------
+# SConstruct
+# Copyright (c) Shanghai Real-Thread Electronic Technology Co., Ltd.
+#-------------------------------------------------------------------------------
+import sys
+import os
+
+#-------------------------------------------------------------------------------
+# System configuration
+#-------------------------------------------------------------------------------
+if os.path.isdir('rt-thread'):
+    RTT_ROOT = 'rt-thread'
+elif os.path.isdir('../rt-thread'):
+    RTT_ROOT = '../rt-thread'
+else:
+    RTT_ROOT = os.path.join(os.getcwd(), '..', '..', '..', '..', '..')
+
+sys.pycache_prefix = os.path.join(RTT_ROOT, 'scripts', '__pycache__')
+import rtconfig
+sys.path = sys.path + [os.path.abspath(os.path.join(RTT_ROOT, 'scripts'))]
+from building import *
+Export('RTT_ROOT')
+Export('rtconfig')
+
+#-------------------------------------------------------------------------------
+# Scons Environment
+#-------------------------------------------------------------------------------
+TARGET = rtconfig.TARGET
+DefaultEnvironment(tools=[])
+env = Environment(tools = ['mingw'],
+    CPP  = rtconfig.CPP,
+    AS   = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
+    CC   = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS,
+    CXX  = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS,
+    AR   = rtconfig.AR, ARFLAGS = '-rc',
+    LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS,
+    LD = rtconfig.LD, DTC = rtconfig.DTC
+)
+
+env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
+
+#-------------------------------------------------------------------------------
+# Prepare building environment
+#-------------------------------------------------------------------------------
+objs = PrepareBuilding(env, RTT_ROOT, has_libcpu = False, app = True)
+env.Replace(LINKFLAGS = rtconfig.LFLAGS)
+
+if GetDepend('RT_USING_FPU'):
+    env['CCFLAGS'] = env['CCFLAGS'].replace('-msoft-float', '-mhard-float')
+    env['ASFLAGS'] = env['ASFLAGS'].replace('-msoft-float', '-mhard-float')
+    env['CXXFLAGS'] = env['CXXFLAGS'].replace('-msoft-float', '-mhard-float')
+    env['LINKFLAGS'] = env['LINKFLAGS'].replace('-msoft-float', '-mhard-float')
+
+#-------------------------------------------------------------------------------
+# Prepare Device Tree
+#-------------------------------------------------------------------------------
+DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
+if not os.path.isdir('rt-thread'):
+    DTCPATH = [
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
+    ]
+else:
+    DTCPATH = [
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/../platform/dtsi/'),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/../platform/dtsi/rockchip')
+    ]
+DTCFLAGS  = '-b 0 '
+DTCFLAGS += '-Wno-interrupt_provider '
+DTCFLAGS += '-Wno-unit_address_vs_reg '
+DTCFLAGS += '-Wno-avoid_unnecessary_addr_size '
+DTCFLAGS += '-Wno-alias_paths '
+DTCFLAGS += '-Wno-graph_child_address '
+DTCFLAGS += '-Wno-simple_bus_reg '
+DTCFLAGS += '-Wno-unique_unit_address '
+PrepareDTC(DTCSRC, depend = [], DTCPATH = DTCPATH, DTCFLAGS = DTCFLAGS)
+
+#-------------------------------------------------------------------------------
+# Add RuiChing SDK
+#-------------------------------------------------------------------------------
+if not os.path.isdir('rt-thread'):
+    objs.extend(
+        SConscript(RTT_ROOT + '/SConscript',
+            variant_dir='build/sdk/', duplicate=0)
+    )
+    objs.extend(
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
+            variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
+else:
+    objs.extend(
+        SConscript('platform/drivers/SConscript',
+            variant_dir='build/platform/', duplicate=0))
+
+#-------------------------------------------------------------------------------
+# Make a building
+#-------------------------------------------------------------------------------
+DoBuilding(TARGET, objs)

+ 5 - 0
03_network_opc_ua/applications/Kconfig

@@ -0,0 +1,5 @@
+#-------------------------------------------------------------------------------
+# RT-Thread RuiChing
+# Copyright (c) Shanghai Real-Thread Electronic Technology Co., Ltd.
+# All rights reserved.
+#-------------------------------------------------------------------------------

+ 82 - 0
03_network_opc_ua/applications/SConscript

@@ -0,0 +1,82 @@
+#-*- encoding: utf-8 -*-
+#-------------------------------------------------------------------------------
+# SConscript
+# Copyright (c) Shanghai Real-Thread Electronic Technology Co., Ltd.
+#-------------------------------------------------------------------------------
+import os
+from building import *
+Import('RTT_ROOT')
+Import('rtconfig')
+
+#-------------------------------------------------------------------------------
+# Package configuration
+#-------------------------------------------------------------------------------
+PKGNAME = 'applications'
+DEPENDS = []
+
+#-------------------------------------------------------------------------------
+# Compile the configuration
+#-------------------------------------------------------------------------------
+SOURCES          = Glob('*.c')
+
+LOCAL_CPPPATH    = []
+LOCAL_CCFLAGS    = ""
+LOCAL_ASFLAGS    = ""
+
+CPPPATH          = [os.path.join(GetCurrentDir(), '.')]
+
+CCFLAGS          = ""
+ASFLAGS          = ""
+
+CPPDEFINES       = []
+LOCAL_CPPDEFINES = []
+
+LIBS             = []
+LIBPATH          = [GetCurrentDir()]
+
+LINKFLAGS        = ""
+
+#-------------------------------------------------------------------------------
+# Feature clip configuration, optional
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+# Compiler platform configuration, optional
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+# System variables
+#-------------------------------------------------------------------------------
+objs   = []
+root   = GetCurrentDir()
+
+#-------------------------------------------------------------------------------
+# Sub target
+#-------------------------------------------------------------------------------
+list = os.listdir(root)
+if GetDepend(DEPENDS):
+    for d in list:
+        path = os.path.join(root, d)
+        if os.path.isfile(os.path.join(path, 'SConscript')):
+            objs = objs + SConscript(os.path.join(d, 'SConscript'))
+
+#-------------------------------------------------------------------------------
+# Main target
+#-------------------------------------------------------------------------------
+objs += DefineGroup(name = PKGNAME, src = SOURCES, depend = DEPENDS,
+                    CPPPATH          = CPPPATH,
+                    CCFLAGS          = CCFLAGS,
+                    ASFLAGS          = ASFLAGS,
+                    LOCAL_CPPPATH    = LOCAL_CPPPATH,
+                    LOCAL_CCFLAGS    = LOCAL_CCFLAGS,
+                    LOCAL_ASFLAGS    = LOCAL_ASFLAGS,
+                    CPPDEFINES       = CPPDEFINES,
+                    LOCAL_CPPDEFINES = LOCAL_CPPDEFINES,
+                    LIBS             = LIBS,
+                    LIBPATH          = LIBPATH,
+                    LINKFLAGS        = LINKFLAGS)
+
+Return("objs")
+#-------------------------------------------------------------------------------
+# End
+#-------------------------------------------------------------------------------

+ 17 - 0
03_network_opc_ua/applications/main.c

@@ -0,0 +1,17 @@
+/**
+ * RT-Thread RuiChing
+ *
+ * COPYRIGHT (C) 2024-2025 Shanghai Real-Thread Electronic Technology Co., Ltd.
+ * All rights reserved.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution.
+ */
+#include <rtthread.h>
+
+int main(void)
+{
+    rt_kprintf("Hello, RT-Thread app\n");
+
+    return 0;
+}

+ 244 - 0
03_network_opc_ua/applications/open62541_example.c

@@ -0,0 +1,244 @@
+/**
+ * RT-Thread RuiChing
+ *
+ * COPYRIGHT (C) 2024-2025 Shanghai Real-Thread Electronic Technology Co., Ltd.
+ * All rights reserved.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution.
+ */
+#include <rtthread.h>
+#include <rtdevice.h>
+#include <string.h>
+#include "open62541.h"
+#include <netdev.h>
+
+static void updateCurrentTime(UA_Server* server)
+{
+    UA_DateTime now = UA_DateTime_now();
+    UA_Variant value;
+    UA_Variant_setScalar(&value, &now, &UA_TYPES[UA_TYPES_DATETIME]);
+    UA_NodeId currentNodeId = UA_NODEID_STRING(1, "current-time-value-callback");
+    UA_Server_writeValue(server, currentNodeId, value);
+}
+
+static void addCurrentTimeVariable(UA_Server* server)
+{
+    UA_DateTime now = 0;
+    UA_VariableAttributes attr = UA_VariableAttributes_default;
+    attr.displayName = UA_LOCALIZEDTEXT("en-US", "Current time - value callback");
+    attr.accessLevel = UA_ACCESSLEVELMASK_READ | UA_ACCESSLEVELMASK_WRITE;
+    UA_Variant_setScalar(&attr.value, &now, &UA_TYPES[UA_TYPES_DATETIME]);
+
+    UA_NodeId currentNodeId = UA_NODEID_STRING(1, "current-time-value-callback");
+    UA_QualifiedName currentName = UA_QUALIFIEDNAME(1, "current-time-value-callback");
+    UA_NodeId parentNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER);
+    UA_NodeId parentReferenceNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES);
+    UA_NodeId variableTypeNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATAVARIABLETYPE);
+    UA_Server_addVariableNode(server, currentNodeId, parentNodeId,
+        parentReferenceNodeId, currentName,
+        variableTypeNodeId, attr, NULL, NULL);
+
+    updateCurrentTime(server);
+}
+
+static void beforeReadTime(UA_Server* server,
+    const UA_NodeId* sessionId, void* sessionContext,
+    const UA_NodeId* nodeid, void* nodeContext,
+    const UA_NumericRange* range, const UA_DataValue* data)
+{
+    updateCurrentTime(server);
+}
+
+static void afterWriteTime(UA_Server* server,
+    const UA_NodeId* sessionId, void* sessionContext,
+    const UA_NodeId* nodeId, void* nodeContext,
+    const UA_NumericRange* range, const UA_DataValue* data)
+{
+    UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND,
+        "The variable was updated");
+}
+
+static void addValueCallbackToCurrentTimeVariable(UA_Server* server)
+{
+    UA_NodeId currentNodeId = UA_NODEID_STRING(1, "current-time-value-callback");
+    UA_ValueCallback callback;
+    callback.onRead = beforeReadTime;
+    callback.onWrite = afterWriteTime;
+    UA_Server_setVariableNode_valueCallback(server, currentNodeId, callback);
+}
+
+static UA_StatusCode readCurrentTime(UA_Server* server,
+    const UA_NodeId* sessionId, void* sessionContext,
+    const UA_NodeId* nodeId, void* nodeContext,
+    UA_Boolean sourceTimeStamp, const UA_NumericRange* range,
+    UA_DataValue* dataValue)
+{
+    UA_DateTime now = UA_DateTime_now();
+    UA_Variant_setScalarCopy(&dataValue->value, &now,
+        &UA_TYPES[UA_TYPES_DATETIME]);
+    dataValue->hasValue = true;
+    return UA_STATUSCODE_GOOD;
+}
+
+static UA_StatusCode writeCurrentTime(UA_Server* server,
+    const UA_NodeId* sessionId, void* sessionContext,
+    const UA_NodeId* nodeId, void* nodeContext,
+    const UA_NumericRange* range, const UA_DataValue* data)
+{
+    UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND,
+        "Changing the system time is not implemented");
+    return UA_STATUSCODE_BADINTERNALERROR;
+}
+
+static void addCurrentTimeDataSourceVariable(UA_Server* server)
+{
+    UA_VariableAttributes attr = UA_VariableAttributes_default;
+    attr.displayName = UA_LOCALIZEDTEXT("en-US", "Current time - data source");
+    attr.accessLevel = UA_ACCESSLEVELMASK_READ | UA_ACCESSLEVELMASK_WRITE;
+
+    UA_NodeId currentNodeId = UA_NODEID_STRING(1, "current-time-datasource");
+    UA_QualifiedName currentName = UA_QUALIFIEDNAME(1, "current-time-datasource");
+    UA_NodeId parentNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER);
+    UA_NodeId parentReferenceNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES);
+    UA_NodeId variableTypeNodeId = UA_NODEID_NUMERIC(0, UA_NS0ID_BASEDATAVARIABLETYPE);
+
+    UA_DataSource timeDataSource;
+    timeDataSource.read = readCurrentTime;
+    timeDataSource.write = writeCurrentTime;
+    UA_Server_addDataSourceVariableNode(server, currentNodeId, parentNodeId,
+        parentReferenceNodeId, currentName,
+        variableTypeNodeId, attr,
+        timeDataSource, NULL, NULL);
+}
+
+static UA_DataValue* externalValue;
+
+static void addCurrentTimeExternalDataSource(UA_Server* server)
+{
+    UA_NodeId currentNodeId = UA_NODEID_STRING(1, "current-time-external-source");
+
+    UA_ValueBackend valueBackend;
+    valueBackend.backendType = UA_VALUEBACKENDTYPE_EXTERNAL;
+    valueBackend.backend.external.value = &externalValue;
+
+    UA_Server_setVariableNode_valueBackend(server, currentNodeId, valueBackend);
+}
+
+void server_demo(char *ip)
+{
+    UA_Boolean running = true;
+
+    rt_kprintf("opc ua server ip :%s port:4840\n", ip);
+
+    UA_Server* server = UA_Server_new();
+    UA_ServerConfig_setDefault(UA_Server_getConfig(server));
+    // UA_ServerConfig_setCustomHostname(UA_Server_getConfig(server), UA_STRING(server_ip));
+    UA_ServerConfig *config = UA_Server_getConfig(server);
+    UA_String_clear(&config->customHostname);
+    config->customHostname = UA_String_fromChars(ip);
+
+    addCurrentTimeVariable(server);
+    addValueCallbackToCurrentTimeVariable(server);
+    addCurrentTimeDataSourceVariable(server);
+
+    addCurrentTimeExternalDataSource(server);
+
+    UA_Server_run(server, &running);
+
+    UA_Server_delete(server);
+}
+
+static void opc_ua_server_entry(void* ip)
+{
+    UA_Logger *logger = (UA_Logger *)UA_Log_Stdout;
+    logger->context = (void*)UA_LOGLEVEL_WARNING;
+
+    server_demo(ip);
+
+    while (1)
+    {
+        rt_thread_mdelay(1000);
+    }
+}
+
+int open62541_server(int argc, char** argv)
+{
+    rt_thread_t tid = RT_NULL;
+    static char ip_addr[16] = {0};
+    char gw_addr[16] = {0};
+    char nm_addr[16] = {0};
+
+    if (argc != 2)
+    {
+        rt_kprintf("open62541_server [net dev name]\n");
+        return -RT_ERROR;
+    }
+
+    if (if_get_ip(argv[1], ip_addr, gw_addr, nm_addr) != 0)
+    {
+        rt_kprintf("Failed to get IP address\n");
+        return -1;
+    }
+
+    tid = rt_thread_create("open62541", opc_ua_server_entry, ip_addr, 102400, 25, 10);
+    if (tid != RT_NULL)
+    {
+        rt_thread_startup(tid);
+    }
+    else
+    {
+        rt_kprintf("rt_thread_create: failed!\n");
+        return -RT_ERROR;
+    }
+
+    return RT_EOK;
+}
+MSH_CMD_EXPORT(open62541_server, open62541_server);
+
+int open62541_client(int argc, char **argv)
+{
+    char ip_data[128] = {0};
+
+    if (argc != 3)
+    {
+        rt_kprintf("open62541_client [ip] [port]\n");
+        return -RT_ERROR;
+    }
+    rt_sprintf(ip_data,"opc.tcp://%s:%s", argv[1], argv[2]);
+
+    UA_Client *client = UA_Client_new();
+    UA_ClientConfig_setDefault(UA_Client_getConfig(client));
+
+    UA_StatusCode retval = UA_Client_connect(client, ip_data);
+    if(retval != UA_STATUSCODE_GOOD)
+    {
+        UA_Client_delete(client);
+        return (int)retval;
+    }
+
+    /*read the value attribute of the node.UA_Client_readValueAttribute is a wrapper for the
+    raw read service available as UA_Client_Service_read.*/
+    UA_Variant value;
+    UA_Variant_init(&value);
+
+    UA_NodeId testvar = UA_NODEID_STRING(1,"the.answer");
+    retval = UA_Client_readValueAttribute(client, testvar, &value);
+
+    if(retval == UA_STATUSCODE_GOOD)
+    {
+        UA_Int32 *p = (UA_Int32 *)value.data;
+        rt_kprintf("[%s] = [%d] \n", testvar.identifier.byteString.data, *p);
+    }
+    else
+    {
+        rt_kprintf("read [%s] failed\n", testvar.identifier.byteString.data);
+    }
+
+    /*Clean up */
+    UA_Variant_clear(&value);
+    UA_Client_delete(client);
+
+    return EXIT_SUCCESS;
+}
+MSH_CMD_EXPORT(open62541_client, open62541_client);

+ 12 - 0
03_network_opc_ua/board/board.dts

@@ -0,0 +1,12 @@
+/**
+ * RT-Thread RuiChing
+ *
+ * COPYRIGHT (C) 2024-2025 Shanghai Real-Thread Electronic Technology Co., Ltd.
+ * All rights reserved.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution.
+ */
+/dts-v1/;
+#include "rc3506j.dtsi"
+#include "ruiching-lcd-mipi-4_3-480x800.dtsi"

+ 70 - 0
03_network_opc_ua/board/ruiching-lcd-mipi-4_3-480x800.dtsi

@@ -0,0 +1,70 @@
+&i2c1 {
+    status = "okay";
+    pinctrl-names = "default";
+
+    sitronix@55 {
+        status = "okay";
+        compatible = "sitronix_ts_i2c";
+        reg = <0x55>;
+        resolution_x = <480>;
+        resolution_y = <800>;
+
+        sitronix_rst_gpio = <&gpio0 162 GPIO_ACTIVE_HIGH>;
+        sitronix_irq_gpio = <&gpio0 RK_PC0 IRQ_TYPE_EDGE_FALLING>;
+    };
+};
+
+&backlight {
+    pwms = <&pwm0_4ch_2 0 500000 0>;
+};
+
+&pwm0_4ch_2 {
+    status = "okay";
+};
+
+&display_subsystem {
+    status = "okay";
+};
+
+&dsi_panel {
+    status = "okay";
+
+    prepare-delay-ms = <20>;
+    reset-delay-ms = <80>;
+    init-delay-ms = <240>;
+
+    panel-init-sequence = [
+        29 00 04 99 71 02 a2
+        29 00 04 99 71 02 a3
+        29 00 04 99 71 02 a4
+        15 00 02 a4 31
+        39 00 08 b0 22 57 1e 61 2f 57 61
+        39 00 03 b7 64 64
+        39 00 03 bf b4 b4
+        29 00 26 C8 00 00 0F 1C 34 00 60 03 A0 06 10 FE 06 74 03 21 C4 00 08 00 22 46 0F 8F 0A 32 F2 0C 42 0C F3 80 00 AB C0 03 C4
+        29 00 26 C9 00 00 0F 1C 34 00 60 03 A0 06 10 FE 06 74 03 21 C4 00 08 00 22 46 0F 8F 0A 32 F2 0C 42 0C F3 80 00 AB C0 03 C4
+        39 00 07 d7 10 0c 36 19 90 90
+        39 00 21 A3 51 03 80 CF 44 00 00 00 00 04 78 78 00 1A 00 45 05 00 00 00 00 46 00 00 02 20 52 00 05 00 00 FF
+        39 00 2d A6 02 00 24 55 35 00 38 00 78 78 00 24 55 36 00 37 00 78 78 02 AC 51 3A 00 00 00 78 78 03 AC 21 00 04 00 00 78 78 3e 00 06 00 00 00 00
+        39 00 31 A7 19 19 00 64 40 07 16 40 00 04 03 78 78 00 64 40 25 34 00 00 02 01 78 78 00 64 40 4B 5A 00 00 02 01 78 78 00 24 40 69 78 00 00 00 00 78 78 00 44
+        39 00 26 AC 08 0A 11 00 13 03 1B 18 06 1A 19 1B 1B 1B 18 1B 09 0B 10 02 12 01 1B 18 06 1A 19 1B 1B 1B 18 1B FF 67 FF 67 00
+        39 00 08 ad cc 40 46 11 04 78 78
+        39 00 0f e8 30 07 00 94 94 9c 00 e2 04 00 00 00 00 ef
+        39 00 22 E7 8B 3C 00 0C F0 5D 00 5D 00 5D 00 5D 00 FF 00 08 7B 00 00 C8 6A 5A 08 1A 3C 00 81 01 CC 01 7F F0 22
+        05 14 01 11
+        05 14 01 29
+        15 00 02 35 00
+    ];
+};
+
+&dsi_timing0 {
+    clock-frequency = <33300000>;
+    hactive = <480>;
+    vactive = <800>;
+    hback-porch = <40>;
+    hfront-porch = <40>;
+    vback-porch = <10>;
+    vfront-porch = <180>;
+    hsync-len = <2>;
+    vsync-len = <2>;
+};

+ 64 - 0
03_network_opc_ua/board/ruiching-lcd-mipi-7-1024x600.dtsi

@@ -0,0 +1,64 @@
+&i2c1 {
+    status = "okay";
+    pinctrl-names = "default";
+
+    goodix_ts: goodix_ts@14 {
+        status = "okay";
+        compatible = "goodix,gt9xx";
+        reg = <0x14>;
+        gtp_resolution_x = <1024>;
+        gtp_resolution_y = <600>;
+        gtp_int_tarigger = <1>;
+        gtp_change_x2y = <0>;
+        gtp_overturn_x = <1>;
+        gtp_overturn_y = <1>;
+        gtp_send_cfg = <0>;
+        gtp_touch_wakeup = <1>;
+
+        goodix_rst_gpio = <&gpio0 162 GPIO_ACTIVE_HIGH>;
+        goodix_irq_gpio = <&gpio0 RK_PC0 IRQ_TYPE_EDGE_FALLING>;
+    };
+};
+
+&backlight {
+    pwms = <&pwm0_4ch_2 0 500000 0>;
+};
+
+&pwm0_4ch_2 {
+    status = "okay";
+};
+
+&display_subsystem {
+    status = "okay";
+};
+
+&dsi_panel {
+    status = "okay";
+
+    prepare-delay-ms = <20>;
+    reset-delay-ms = <80>;
+    init-delay-ms = <240>;
+    
+    panel-init-sequence = [
+        15 00 02 b2 10
+        15 00 02 80 ac
+        15 00 02 81 b8
+        15 00 02 82 09
+        15 00 02 83 78
+        15 00 02 84 7f
+        15 00 02 85 bb
+        15 00 02 86 70
+    ];
+};
+
+&dsi_timing0 {
+    clock-frequency = <51200000>;
+    hactive = <1024>;
+    vactive = <600>;
+    hback-porch = <90>;
+    hfront-porch = <160>;
+    vback-porch = <23>;
+    vfront-porch = <12>;
+    hsync-len = <70>;
+    vsync-len = <10>;
+};

+ 29 - 0
03_network_opc_ua/packages/SConscript

@@ -0,0 +1,29 @@
+#-*- encoding: utf-8 -*-
+#-------------------------------------------------------------------------------
+# SConscript
+# Copyright (c) Shanghai Real-Thread Electronic Technology Co., Ltd.
+#-------------------------------------------------------------------------------
+import os
+from building import *
+Import('RTT_ROOT')
+Import('rtconfig')
+
+#-------------------------------------------------------------------------------
+# System variables
+#-------------------------------------------------------------------------------
+objs   = []
+root   = GetCurrentDir()
+
+#-------------------------------------------------------------------------------
+# Main target
+#-------------------------------------------------------------------------------
+list = os.listdir(root)
+for d in list:
+    path = os.path.join(root, d)
+    if os.path.isfile(os.path.join(path, 'SConscript')):
+        objs = objs + SConscript(os.path.join(d, 'SConscript'))
+
+Return("objs")
+#-------------------------------------------------------------------------------
+# End
+#-------------------------------------------------------------------------------

+ 349 - 0
03_network_opc_ua/rtconfig.h

@@ -0,0 +1,349 @@
+/**
+ * RT-Thread RuiChing
+ *
+ * COPYRIGHT (C) 2024-2025 Shanghai Real-Thread Electronic Technology Co., Ltd.
+ * All rights reserved.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution.
+ */
+#ifndef __RTCONFIG_APP_H__
+#define __RTCONFIG_APP_H__
+
+/* Automatically generated file; DO NOT EDIT. */
+#include <kconfig.h>
+
+/* RuiChing Components Configure */
+
+/* Industrial Bus */
+
+#define COMP_USING_CANFESTIVAL
+#define CANFESTIVAL_CAN_DEVICE_NAME "can0"
+#define CANFESTIVAL_TIMER_DEVICE_NAME "timer0"
+#define CANFESTIVAL_RECV_THREAD_PRIO 9
+#define CANFESTIVAL_TIMER_THREAD_PRIO 10
+#define COMP_USING_ETHERCAT
+#define COMP_USING_MODBUS
+/* end of Industrial Bus */
+
+/* Net Apps */
+
+#define COMP_USING_AGILE_FTP
+#define COMP_USING_OPEN62541
+#define COMP_USING_PAHOMQTT
+#define _PAHOMQTT_PIPE_MODE
+#define MQTT_THREAD_STACK_SIZE 4096
+#define PAHOMQTT_SUBSCRIBE_HANDLERS 1
+#define MQTT_DEBUG
+#define COMP_USING_TELNET
+#define COMP_USING_TFTP
+#define NETUTILS_TFTP_PORT 69
+#define COMP_USING_WEBCLIENT
+#define WEBCLIENT_USING_FILE_DOWMLOAD
+#define COMPONENTS_WEBCLIENT_USING_MBED_TLS
+#define COMP_USING_WEBNET
+#define WEBNET_PORT 80
+#define WEBNET_CONN_MAX 16
+#define WEBNET_ROOT "/sdmmc/webnet"
+
+/* Select supported modules */
+
+#define WEBNET_USING_AUTH
+#define WEBNET_USING_CGI
+#define WEBNET_USING_ASP
+#define WEBNET_USING_SSI
+#define WEBNET_USING_INDEX
+#define WEBNET_USING_ALIAS
+#define WEBNET_USING_UPLOAD
+#define WEBNET_CACHE_LEVEL 0
+#define WEBNET_USING_SSI_VIRTUAL_HANDLER
+/* end of Select supported modules */
+/* end of Net Apps */
+
+/* Graphics */
+
+#define COMP_USING_LVGL
+#define RT_LVGL_THREAD_PRIO 20
+#define RT_LVGL_THREAD_STACK_SIZE 8192
+#define LV_DEF_REFR_PERIOD 33
+#define RT_LVGL_VER_NUM 0x090100
+#define RT_LVGL_VER "v9.1.0"
+#define LV_CONF_SKIP
+
+/* Color Settings */
+
+#define COLOR_DEPTH_16
+#define LV_COLOR_DEPTH 16
+/* end of Color Settings */
+
+/* RT-Thread rockchip rga driver */
+
+#define RT_USING_RGA
+/* end of RT-Thread rockchip rga driver */
+/* end of Graphics */
+
+/* AI */
+
+#define COMP_USING_NCNN
+/* end of AI */
+
+/* Data Parsers */
+
+#define COMP_USING_CJSON
+/* end of Data Parsers */
+
+/* Debug Tools */
+
+#define COMP_USING_BACKTRACE
+#define COMP_USING_COREDUMP
+#define COREDUMP_STORAGE_RAM
+#define COREDUMP_MAX_SIZE_KB 2048
+#define COREDUMP_FILE_SAVE_PATH "/sdmmc/core.dump"
+#define COMP_USING_IPERF2
+#define IPERF_THREAD_STACK_SIZE 16384
+#define COMP_USING_RT_PERF
+#define RT_PERF_TIMER_FREQ 24000000
+#define RT_PERF_TIMER_BITS 32
+#define RT_PERF_ENABLE_IRQ_LATENCY
+#define RT_PERF_USING_TIMER_NAME "timer3"
+/* end of Debug Tools */
+
+/* Language */
+
+#define COMP_USING_LUA
+/* end of Language */
+
+/* Security */
+
+#define COMP_USING_MBEDTLS
+
+/* Select Root Certificate */
+
+#define COMP_USING_MBEDTLS_USE_ALL_CERTS
+#define COMP_USING_MBEDTLS_USER_CERTS
+#define COMP_USING_MBEDTLS_THAWTE_ROOT_CA
+#define COMP_USING_MBEDTLS_VERSIGN_PBULIC_ROOT_CA
+#define COMP_USING_MBEDTLS_VERSIGN_UNIVERSAL_ROOT_CA
+#define COMP_USING_MBEDTLS_GEOTRUST_ROOT_CA
+#define COMP_USING_MBEDTLS_DIGICERT_ROOT_CA
+#define COMP_USING_MBEDTLS_GODADDY_ROOT_CA
+#define COMP_USING_MBEDTLS_COMODOR_ROOT_CA
+#define COMP_USING_MBEDTLS_DST_ROOT_CA
+#define COMP_USING_MBEDTLS_CLOBALSIGN_ROOT_CA
+#define COMP_USING_MBEDTLS_ENTRUST_ROOT_CA
+#define COMP_USING_MBEDTLS_AMAZON_ROOT_CA
+#define COMP_USING_MBEDTLS_CERTUM_TRUSTED_NETWORK_ROOT_CA
+/* end of Select Root Certificate */
+#define MBEDTLS_AES_ROM_TABLES
+#define MBEDTLS_ECP_WINDOW_SIZE 6
+#define MBEDTLS_SSL_MAX_CONTENT_LEN 16384
+/* end of Security */
+/* end of RuiChing Components Configure */
+#define RT_USING_CPLUSPLUS
+
+/* RT-Thread online packages */
+
+/* IoT - internet of things */
+
+
+/* Wi-Fi */
+
+/* Marvell WiFi */
+
+/* end of Marvell WiFi */
+
+/* Wiced WiFi */
+
+/* end of Wiced WiFi */
+
+/* CYW43012 WiFi */
+
+/* end of CYW43012 WiFi */
+
+/* BL808 WiFi */
+
+/* end of BL808 WiFi */
+
+/* CYW43439 WiFi */
+
+/* end of CYW43439 WiFi */
+/* end of Wi-Fi */
+
+/* IoT Cloud */
+
+/* end of IoT Cloud */
+/* end of IoT - internet of things */
+
+/* security packages */
+
+/* end of security packages */
+
+/* language packages */
+
+/* JSON: JavaScript Object Notation, a lightweight data-interchange format */
+
+/* end of JSON: JavaScript Object Notation, a lightweight data-interchange format */
+
+/* XML: Extensible Markup Language */
+
+/* end of XML: Extensible Markup Language */
+/* end of language packages */
+
+/* multimedia packages */
+
+/* LVGL: powerful and easy-to-use embedded GUI library */
+
+/* end of LVGL: powerful and easy-to-use embedded GUI library */
+
+/* u8g2: a monochrome graphic library */
+
+/* end of u8g2: a monochrome graphic library */
+/* end of multimedia packages */
+
+/* tools packages */
+
+/* end of tools packages */
+
+/* system packages */
+
+/* enhanced kernel services */
+
+/* end of enhanced kernel services */
+
+/* acceleration: Assembly language or algorithmic acceleration packages */
+
+/* end of acceleration: Assembly language or algorithmic acceleration packages */
+
+/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */
+
+/* end of CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */
+
+/* Micrium: Micrium software products porting for RT-Thread */
+
+/* end of Micrium: Micrium software products porting for RT-Thread */
+/* end of system packages */
+
+/* peripheral libraries and drivers */
+
+/* HAL & SDK Drivers */
+
+/* STM32 HAL & SDK Drivers */
+
+/* end of STM32 HAL & SDK Drivers */
+
+/* Infineon HAL Packages */
+
+/* end of Infineon HAL Packages */
+
+/* Kendryte SDK */
+
+/* end of Kendryte SDK */
+
+/* WCH HAL & SDK Drivers */
+
+/* end of WCH HAL & SDK Drivers */
+
+/* AT32 HAL & SDK Drivers */
+
+/* end of AT32 HAL & SDK Drivers */
+
+/* HC32 DDL Drivers */
+
+/* end of HC32 DDL Drivers */
+
+/* NXP HAL & SDK Drivers */
+
+/* end of NXP HAL & SDK Drivers */
+
+/* NUVOTON Drivers */
+
+/* end of NUVOTON Drivers */
+
+/* GD32 Drivers */
+
+/* end of GD32 Drivers */
+
+/* HPMicro SDK */
+
+/* end of HPMicro SDK */
+/* end of HAL & SDK Drivers */
+
+/* sensors drivers */
+
+/* end of sensors drivers */
+
+/* touch drivers */
+
+/* end of touch drivers */
+/* end of peripheral libraries and drivers */
+
+/* AI packages */
+
+/* end of AI packages */
+
+/* Signal Processing and Control Algorithm Packages */
+
+/* end of Signal Processing and Control Algorithm Packages */
+
+/* miscellaneous packages */
+
+/* project laboratory */
+
+/* end of project laboratory */
+
+/* samples: kernel and components samples */
+
+/* end of samples: kernel and components samples */
+
+/* entertainment: terminal games and other interesting software packages */
+
+/* end of entertainment: terminal games and other interesting software packages */
+/* end of miscellaneous packages */
+
+/* Arduino libraries */
+
+
+/* Projects and Demos */
+
+/* end of Projects and Demos */
+
+/* Sensors */
+
+/* end of Sensors */
+
+/* Display */
+
+/* end of Display */
+
+/* Timing */
+
+/* end of Timing */
+
+/* Data Processing */
+
+/* end of Data Processing */
+
+/* Data Storage */
+
+/* Communication */
+
+/* end of Communication */
+
+/* Device Control */
+
+/* end of Device Control */
+
+/* Other */
+
+/* end of Other */
+
+/* Signal IO */
+
+/* end of Signal IO */
+
+/* Uncategorized */
+
+/* end of Arduino libraries */
+/* end of RT-Thread online packages */
+
+#endif /* __RTCONFIG_APP_H__ */ 

+ 151 - 0
03_network_opc_ua/rtconfig.py

@@ -0,0 +1,151 @@
+#-*- encoding: utf-8 -*-
+#-------------------------------------------------------------------------------
+# SConscript
+# Copyright (c) Shanghai Real-Thread Electronic Technology Co., Ltd.
+#-------------------------------------------------------------------------------
+import os, sys
+import platform
+
+if os.path.isdir('rt-thread'):
+    RTT_ROOT = 'rt-thread'
+elif os.path.isdir('../rt-thread'):
+    RTT_ROOT = '../rt-thread'
+else:
+    RTT_ROOT = os.path.join(os.getcwd(), '..', '..', '..', '..', '..')
+
+sys.path = sys.path + [os.path.abspath(os.path.join(RTT_ROOT, 'scripts'))]
+from cic import cic_gen_parameters
+from cic import cic_add_linked_resource
+
+#-------------------------------------------------------------------------------
+# System variables
+#-------------------------------------------------------------------------------
+TARGET_NAME         = 'app'
+TARGET_EXT          = 'elf'
+TARGET              = TARGET_NAME + '.' + TARGET_EXT
+# BUILD             = 'debug'
+BUILD               = 'release'
+
+#-------------------------------------------------------------------------------
+# Architecture configuration
+#-------------------------------------------------------------------------------
+CHIP                = 'rk3506'
+ARCH                = 'arm'
+CPU                 = 'cortex-a'
+CROSS_TOOL          = 'gcc'
+PLATFORM            = 'gcc'
+EXEC_PATH           = os.getenv('RTT_EXEC_PATH') or '/usr/bin'
+
+#-------------------------------------------------------------------------------
+# Toolchain configuration
+#-------------------------------------------------------------------------------
+PREFIX              = 'arm-none-eabi-'
+CC                  = PREFIX + 'gcc'
+CXX                 = PREFIX + 'g++'
+CPP                 = PREFIX + 'cpp'
+AS                  = PREFIX + 'gcc'
+AR                  = PREFIX + 'ar'
+LINK                = PREFIX + 'gcc'
+LD                  = PREFIX + 'ld'
+SIZE                = PREFIX + 'size'
+STRIP               = PREFIX + 'strip'
+OBJDUMP             = PREFIX + 'objdump'
+OBJCPY              = PREFIX + 'objcopy'
+DTC                 = 'dtc'
+
+#-------------------------------------------------------------------------------
+# Target processor
+#-------------------------------------------------------------------------------
+TARGET_PROCESSOR    = '-march=armv7-a '
+TARGET_PROCESSOR   += '-mtune=cortex-a7 '
+TARGET_PROCESSOR   += '-mfpu=vfpv4 '
+TARGET_PROCESSOR   += '-mfloat-abi=hard '
+
+#-------------------------------------------------------------------------------
+# Common parameter
+#-------------------------------------------------------------------------------
+OPTIMIZATION        = '-ftree-vectorize '
+OPTIMIZATION       += '-ffast-math '
+if BUILD == 'debug':
+    OPTIMIZATION   += '-O0'
+else:
+    OPTIMIZATION   += '-O2'
+WARNINGS            = '-w'
+DEBUGGINGS          = '-gdwarf-2'
+COMMON_PREPROCESSOR = ''
+
+#-------------------------------------------------------------------------------
+# Assembler parameter
+#-------------------------------------------------------------------------------
+ASM_PREPROCESSOR    = COMMON_PREPROCESSOR + ''
+ASM_INCLUDES        = []
+ASM_FLAGS           = '-c -x assembler-with-cpp -D__ASSEMBLY__'
+
+#-------------------------------------------------------------------------------
+# C compiler parameter
+#-------------------------------------------------------------------------------
+C_PREPROCESSOR      = COMMON_PREPROCESSOR + ''
+C_INCLUDES          = []
+C_FLAGS             = ''
+C_FLAGS            += ' -fno-omit-frame-pointer'
+C_FLAGS            += ' -funwind-tables'
+C_FLAGS            += ' -fasynchronous-unwind-tables'
+
+#-------------------------------------------------------------------------------
+# C++ compiler parameter
+#-------------------------------------------------------------------------------
+CXX_PREPROCESSOR    = COMMON_PREPROCESSOR + ''
+CXX_INCLUDES        = []
+CXX_FLAGS           = ''
+
+#-------------------------------------------------------------------------------
+# Linker parameter
+#-------------------------------------------------------------------------------
+LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
+if not os.path.isdir('rt-thread'):
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
+else:
+    LINKER_GENERAL += '-T platform/lds/link.lds'
+
+LINKER_LIBRARIES    = ''
+LINKER_MISCELLANEOUS = '-Wl,-Map=build/%s.map' % (TARGET_NAME)
+
+#-------------------------------------------------------------------------------
+# Image parameter
+#-------------------------------------------------------------------------------
+FLASH_IMAGE_GENERAL = '-O binary'
+
+#-------------------------------------------------------------------------------
+# Print Size parameter
+#-------------------------------------------------------------------------------
+PRINT_SIZE_GENERAL  = '--format=berkeley'
+
+#-------------------------------------------------------------------------------
+# CIC Parameter handling
+#-------------------------------------------------------------------------------
+COMMON = [TARGET_PROCESSOR, WARNINGS, DEBUGGINGS]
+COMPILER_CONFIGS = {
+    'ASM'  : COMMON + [ASM_PREPROCESSOR, ASM_INCLUDES, ASM_FLAGS],
+    'C'    : COMMON + [OPTIMIZATION, C_PREPROCESSOR, C_INCLUDES, C_FLAGS],
+    'CXX'  : COMMON + [OPTIMIZATION, CXX_PREPROCESSOR, CXX_INCLUDES, CXX_FLAGS],
+    'Link' : [TARGET_PROCESSOR,
+        LINKER_GENERAL, LINKER_LIBRARIES, LINKER_MISCELLANEOUS]
+}
+
+AFLAGS, CFLAGS, CXXFLAGS, LFLAGS = (
+    cic_gen_parameters(config)
+    for config in COMPILER_CONFIGS.values()
+)
+
+#-------------------------------------------------------------------------------
+# IDE linked resources
+#-------------------------------------------------------------------------------
+LINKEDRESOURCES = []
+
+#-------------------------------------------------------------------------------
+# Post-compile behavior
+#-------------------------------------------------------------------------------
+POST_ACTION  = '%s -O binary build/%s build/%s\n' % \
+    (OBJCPY, TARGET, TARGET_NAME + '.bin')
+POST_ACTION += '%s build/%s\n' % (SIZE, TARGET)
+POST_ACTION_IDE = 'scons -C ../ --app_pkg=${ConfigName}'

+ 5 - 4
03_network_tcp_client/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
03_network_tcp_client/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
03_network_tcp_server/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
03_network_tcp_server/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
03_network_telnet/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
03_network_telnet/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
03_network_udp_client/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
03_network_udp_client/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

+ 5 - 4
03_network_udp_server/SConstruct

@@ -59,8 +59,8 @@ DTCSRC = [os.path.join(GetCurrentDir(), 'board/board.dts')]
 if not os.path.isdir('rt-thread'):
     DTCPATH = [
         os.path.join(GetCurrentDir(), RTT_ROOT + '/drivers/include'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/'),
-        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/platform/dtsi/rockchip')
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/' % rtconfig.CHIP),
+        os.path.join(GetCurrentDir(), RTT_ROOT + '/apps/rockchip/%s/platform/dtsi/rockchip' % rtconfig.CHIP)
     ]
 else:
     DTCPATH = [
@@ -86,10 +86,11 @@ if not os.path.isdir('rt-thread'):
         SConscript(RTT_ROOT + '/SConscript',
             variant_dir='build/sdk/', duplicate=0)
     )
-
     objs.extend(
-        SConscript(RTT_ROOT + '/apps/rockchip/platform/drivers/SConscript',
+        SConscript(RTT_ROOT + '/apps/rockchip/%s/platform/drivers/SConscript' % rtconfig.CHIP,
             variant_dir='build/drivers/', duplicate=0))
+elif os.path.isdir('../rt-thread'):
+    pass
 else:
     objs.extend(
         SConscript('platform/drivers/SConscript',

+ 1 - 1
03_network_udp_server/rtconfig.py

@@ -103,7 +103,7 @@ CXX_FLAGS           = ''
 #-------------------------------------------------------------------------------
 LINKER_GENERAL      = '-Wl,--gc-sections,-cref,-u,system_vectors '
 if not os.path.isdir('rt-thread'):
-    LINKER_GENERAL += '-T ../../../platform/lds/link.lds'
+    LINKER_GENERAL += '-T ../../platform/lds/link.lds'
 else:
     LINKER_GENERAL += '-T platform/lds/link.lds'
 

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini