Переглянути джерело

[bsp/nuvoton] Support NuMaker-IoT-M467 board (#6448)

Co-authored-by: Wayne Lin <wclin@nuvoton.com>
Wayne 2 роки тому
батько
коміт
746d7a01bd
68 змінених файлів з 10304 додано та 894 видалено
  1. 1 0
      bsp/nuvoton/README.md
  2. 1 0
      bsp/nuvoton/docs/LVGL_Notes.md
  3. 9 9
      bsp/nuvoton/libraries/m460/StdDriver/inc/nu_canfd.h
  4. 2 0
      bsp/nuvoton/libraries/m460/StdDriver/inc/nu_ccap.h
  5. 56 56
      bsp/nuvoton/libraries/m460/rtt_port/drv_bpwm_capture.c
  6. 42 10
      bsp/nuvoton/libraries/m460/rtt_port/drv_ccap.c
  7. 2 0
      bsp/nuvoton/libraries/m460/rtt_port/drv_ccap.h
  8. 6 6
      bsp/nuvoton/libraries/m460/rtt_port/drv_epwm_capture.c
  9. 9 9
      bsp/nuvoton/libraries/n9h30/rtt_port/drv_vpost.c
  10. 235 169
      bsp/nuvoton/libraries/nu_packages/CCAP_Sensors/ccap_demo.c
  11. 4 5
      bsp/nuvoton/libraries/nu_packages/Demo/SConscript
  12. 48 0
      bsp/nuvoton/libraries/nu_packages/Demo/atdev_utils.c
  13. BIN
      bsp/nuvoton/libraries/nu_packages/SLCD/rhe6616.png
  14. 4 4
      bsp/nuvoton/libraries/nu_packages/TPC/tpc_worker.c
  15. 6 78
      bsp/nuvoton/nk-980iot/.config
  16. 0 29
      bsp/nuvoton/nk-980iot/board/board_dev.c
  17. 2 2
      bsp/nuvoton/nk-980iot/board/nu_pin_init.c
  18. 10 81
      bsp/nuvoton/nk-n9h30/.config
  19. 6 78
      bsp/nuvoton/nk-rtu980/.config
  20. 1174 0
      bsp/nuvoton/numaker-iot-m467/.config
  21. 23 0
      bsp/nuvoton/numaker-iot-m467/Kconfig
  22. 100 0
      bsp/nuvoton/numaker-iot-m467/README.md
  23. 14 0
      bsp/nuvoton/numaker-iot-m467/SConscript
  24. 59 0
      bsp/nuvoton/numaker-iot-m467/SConstruct
  25. 21 0
      bsp/nuvoton/numaker-iot-m467/applications/SConscript
  26. 10 0
      bsp/nuvoton/numaker-iot-m467/applications/lvgl/SConscript
  27. 38 0
      bsp/nuvoton/numaker-iot-m467/applications/lvgl/lv_conf.h
  28. 32 0
      bsp/nuvoton/numaker-iot-m467/applications/lvgl/lv_demo.c
  29. 99 0
      bsp/nuvoton/numaker-iot-m467/applications/lvgl/lv_port_disp.c
  30. 23 0
      bsp/nuvoton/numaker-iot-m467/applications/lvgl/lv_port_disp.h
  31. 54 0
      bsp/nuvoton/numaker-iot-m467/applications/lvgl/lv_port_indev.c
  32. 28 0
      bsp/nuvoton/numaker-iot-m467/applications/lvgl/lv_port_indev.h
  33. 44 0
      bsp/nuvoton/numaker-iot-m467/applications/main.c
  34. 172 0
      bsp/nuvoton/numaker-iot-m467/applications/mnt.c
  35. 146 0
      bsp/nuvoton/numaker-iot-m467/board/Kconfig
  36. 919 0
      bsp/nuvoton/numaker-iot-m467/board/NuPinConfig/nutool_pincfg.c
  37. 273 0
      bsp/nuvoton/numaker-iot-m467/board/NuPinConfig/nutool_pincfg.cfg
  38. 94 0
      bsp/nuvoton/numaker-iot-m467/board/NuPinConfig/nutool_pincfg.h
  39. 19 0
      bsp/nuvoton/numaker-iot-m467/board/SConscript
  40. 38 0
      bsp/nuvoton/numaker-iot-m467/board/board.h
  41. 303 0
      bsp/nuvoton/numaker-iot-m467/board/board_dev.c
  42. 65 0
      bsp/nuvoton/numaker-iot-m467/board/fal_cfg.h
  43. 26 0
      bsp/nuvoton/numaker-iot-m467/board/nutool_clkcfg.h
  44. 1388 0
      bsp/nuvoton/numaker-iot-m467/board/nutool_modclkcfg.c
  45. 139 0
      bsp/nuvoton/numaker-iot-m467/board/nutool_modclkcfg.h
  46. 1205 0
      bsp/nuvoton/numaker-iot-m467/config_lvgl
  47. BIN
      bsp/nuvoton/numaker-iot-m467/figures/NuLinkMe_SwitchSetting.png
  48. BIN
      bsp/nuvoton/numaker-iot-m467/figures/NuMaker-IoT-M467-V1_B.png
  49. BIN
      bsp/nuvoton/numaker-iot-m467/figures/NuMaker-IoT-M467-V1_F.png
  50. BIN
      bsp/nuvoton/numaker-iot-m467/figures/NuMicro_MCU_Disk.png
  51. BIN
      bsp/nuvoton/numaker-iot-m467/figures/Sendto.png
  52. BIN
      bsp/nuvoton/numaker-iot-m467/figures/SerialSetting.png
  53. 28 0
      bsp/nuvoton/numaker-iot-m467/linking_scripts/m460_flash.icf
  54. 15 0
      bsp/nuvoton/numaker-iot-m467/linking_scripts/m460_flash.sct
  55. 161 0
      bsp/nuvoton/numaker-iot-m467/linking_scripts/m460_link.ld
  56. 140 0
      bsp/nuvoton/numaker-iot-m467/rtconfig.py
  57. 1485 0
      bsp/nuvoton/numaker-iot-m467/template.ewd
  58. 1039 0
      bsp/nuvoton/numaker-iot-m467/template.ewp
  59. 10 0
      bsp/nuvoton/numaker-iot-m467/template.eww
  60. 402 0
      bsp/nuvoton/numaker-iot-m467/template.uvprojx
  61. 38 12
      bsp/nuvoton/numaker-iot-m487/.config
  62. 1 1
      bsp/nuvoton/numaker-iot-m487/applications/lvgl/lv_port_disp.c
  63. 2 48
      bsp/nuvoton/numaker-iot-m487/board/board_dev.c
  64. 10 96
      bsp/nuvoton/numaker-m032ki/.config
  65. 9 60
      bsp/nuvoton/numaker-m2354/.config
  66. 1 49
      bsp/nuvoton/numaker-m2354/board/board_dev.c
  67. 13 91
      bsp/nuvoton/numaker-pfm-m487/.config
  68. 1 1
      bsp/nuvoton/numaker-pfm-m487/applications/lvgl/lv_port_disp.c

+ 1 - 0
bsp/nuvoton/README.md

@@ -11,3 +11,4 @@ Current supported BSP shown in below table:
 | [nk-n9h30](nk-n9h30) | Nuvoton NK-N9H30 |
 | [numaker-m032ki](numaker-m032ki) | Nuvoton NuMaker-M032KI |
 | [numaker-m467hj](numaker-m467hj) | Nuvoton NuMaker-M467HJ |
+| [numaker-iot-m467](numaker-iot-m467) | Nuvoton NuMaker-IoT-M467 |

+ 1 - 0
bsp/nuvoton/docs/LVGL_Notes.md

@@ -11,6 +11,7 @@ Current supported LVGL running environment on Nuvoton's boards shown in below ta
 | nk-n9h30 | Music | No | .config |
 | numaker-m032ki | Widgets | Nu-TFT v1.3 | config_lvgl |
 | numaker-m467hj | Widgets | NuMaker-TFT-LCD43 v1.0 | config_lvgl |
+| numaker-iot-m467 | Widgets | Nu-TFT v1.3 | config_lvgl |
 
 ## Download related packages
 

+ 9 - 9
bsp/nuvoton/libraries/m460/StdDriver/inc/nu_canfd.h

@@ -130,7 +130,7 @@ typedef enum
 {
     eCANFD_NORMAL = 0,              /*!< None, Normal mode. */
 
-      /*
+    /*
     Support:
     (1) to receive data frames
     (2) to receive remote frames
@@ -139,34 +139,34 @@ typedef enum
     (1) data frames sending
     (2) remote frames sending
     (3) active error frames or overload frames sending
-      */
+    */
     eCANFD_RESTRICTED_OPERATION,    /*!< Receive external RX frame and always keep recessive state or send dominate bit on ACK bit on TX pin. */
 
-      /*
+    /*
     Support:
     (1) to receive valid data frames
     (2) to receive valid remote frames
     Not support:
     (1) transmission start
     (2) acknowledge to valid frames
-      */
+    */
     eCANFD_BUS_MONITOR,             /*!< Receive external RX frame and always keep recessive state on TX pin. */
 
-      /*
+    /*
     Support:
     (1) Loopback
     (2) Also send out frames
     Not support:
     (1) to receive external frame
-      */
+    */
     eCANFD_LOOPBACK_EXTERNAL,       /*!< Won't receive external RX frame. */
-      /*
+    /*
     Support:
     (1) Loopback
     Not support:
     (1) to receive external frame
     (2) transmission start
-      */
+    */
     eCANFD_LOOPBACK_INTERNAL        /*!< Won't receive external RX frame and always keep recessive state on TX pin */
 } E_CANFD_TEST_MODE;
 
@@ -458,7 +458,7 @@ int32_t CANFD_RunToNormal(CANFD_T *canfd, uint8_t u8Enable);
 void CANFD_GetDefaultConfig(CANFD_FD_T *psConfig, uint8_t u8OpMode);
 void CANFD_ClearStatusFlag(CANFD_T *canfd, uint32_t u32InterruptFlag);
 uint32_t CANFD_GetStatusFlag(CANFD_T *canfd, uint32_t u32IntTypeFlag);
-uint32_t CANFD_ReadReg(__I uint32_t* pu32RegAddr);
+uint32_t CANFD_ReadReg(__I uint32_t *pu32RegAddr);
 
 /*@}*/ /* end of group CANFD_EXPORTED_FUNCTIONS */
 

+ 2 - 0
bsp/nuvoton/libraries/m460/StdDriver/inc/nu_ccap.h

@@ -137,6 +137,8 @@ extern int32_t g_CCAP_i32ErrCode;
  */
 #define CCAP_GET_INT_STS(ccap) (ccap->INT)
 
+#define CCAP_SET_CTL(ccap, u32IntMask) (ccap->CTL |= u32IntMask)
+#define CCAP_CLR_CTL(ccap, u32IntMask) (ccap->CTL &= ~u32IntMask)
 
 void CCAP_Open(CCAP_T *ccap, uint32_t u32InFormat, uint32_t u32OutFormat);
 void CCAP_SetCroppingWindow(CCAP_T *ccap, uint32_t u32VStart, uint32_t u32HStart, uint32_t u32Height, uint32_t u32Width);

+ 56 - 56
bsp/nuvoton/libraries/m460/rtt_port/drv_bpwm_capture.c

@@ -117,39 +117,39 @@ static void nu_bpwmcap_isr(nu_bpwmcap_t psNuBpwmCapBase)
     for (i = 0; i < BPWM_CHANNEL_NUM ; i++)
     {
         nu_bpwmcap_t psNuBpwmCap = psNuBpwmCapBase + i;
-                if (psNuBpwmCap->u8DummyData < NU_DUMMY_DATA)
-                {
-                        psNuBpwmCap->u8DummyData++;
-                }
-                else
-                {
-                        u32Status = BPWM_GetCaptureIntFlag(psNuBpwmCap->base, psNuBpwmCap->u8Channel);
-
-                        switch (u32Status)
-                        {
-                        case NU_NO_EDGE:
-                                break;
-
-                        case NU_RISING_EDGE:
-                                BPWM_ClearCaptureIntFlag(psNuBpwmCap->base, psNuBpwmCap->u8Channel, BPWM_CAPTURE_INT_RISING_LATCH);
-                                psNuBpwmCap->u32CurrentRisingCnt = BPWM_GET_CAPTURE_RISING_DATA(psNuBpwmCap->base, psNuBpwmCap->u8Channel);
-                                rt_hw_inputcapture_isr(&psNuBpwmCap->parent, psNuBpwmCap->input_data_level);
-                                break;
-
-                        case NU_FALLING_EDGE:
-                                BPWM_ClearCaptureIntFlag(psNuBpwmCap->base, psNuBpwmCap->u8Channel, BPWM_CAPTURE_INT_FALLING_LATCH);
-                                psNuBpwmCap->u32CurrentFallingCnt = BPWM_GET_CAPTURE_FALLING_DATA(psNuBpwmCap->base, psNuBpwmCap->u8Channel);
-                                rt_hw_inputcapture_isr(&psNuBpwmCap->parent, psNuBpwmCap->input_data_level);
-                                break;
-
-                        default:
-                                BPWM_ClearCaptureIntFlag(psNuBpwmCap->base, psNuBpwmCap->u8Channel, BPWM_CAPTURE_INT_RISING_LATCH | BPWM_CAPTURE_INT_FALLING_LATCH);
-                                BPWM_GET_CAPTURE_RISING_DATA(psNuBpwmCap->base, psNuBpwmCap->u8Channel);
-                                BPWM_GET_CAPTURE_FALLING_DATA(psNuBpwmCap->base, psNuBpwmCap->u8Channel);
-
-                                break;
-                        }
-                }
+        if (psNuBpwmCap->u8DummyData < NU_DUMMY_DATA)
+        {
+            psNuBpwmCap->u8DummyData++;
+        }
+        else
+        {
+            u32Status = BPWM_GetCaptureIntFlag(psNuBpwmCap->base, psNuBpwmCap->u8Channel);
+
+            switch (u32Status)
+            {
+            case NU_NO_EDGE:
+                break;
+
+            case NU_RISING_EDGE:
+                BPWM_ClearCaptureIntFlag(psNuBpwmCap->base, psNuBpwmCap->u8Channel, BPWM_CAPTURE_INT_RISING_LATCH);
+                psNuBpwmCap->u32CurrentRisingCnt = BPWM_GET_CAPTURE_RISING_DATA(psNuBpwmCap->base, psNuBpwmCap->u8Channel);
+                rt_hw_inputcapture_isr(&psNuBpwmCap->parent, psNuBpwmCap->input_data_level);
+                break;
+
+            case NU_FALLING_EDGE:
+                BPWM_ClearCaptureIntFlag(psNuBpwmCap->base, psNuBpwmCap->u8Channel, BPWM_CAPTURE_INT_FALLING_LATCH);
+                psNuBpwmCap->u32CurrentFallingCnt = BPWM_GET_CAPTURE_FALLING_DATA(psNuBpwmCap->base, psNuBpwmCap->u8Channel);
+                rt_hw_inputcapture_isr(&psNuBpwmCap->parent, psNuBpwmCap->input_data_level);
+                break;
+
+            default:
+                BPWM_ClearCaptureIntFlag(psNuBpwmCap->base, psNuBpwmCap->u8Channel, BPWM_CAPTURE_INT_RISING_LATCH | BPWM_CAPTURE_INT_FALLING_LATCH);
+                BPWM_GET_CAPTURE_RISING_DATA(psNuBpwmCap->base, psNuBpwmCap->u8Channel);
+                BPWM_GET_CAPTURE_FALLING_DATA(psNuBpwmCap->base, psNuBpwmCap->u8Channel);
+
+                break;
+            }
+        }
     }
 }
 
@@ -185,7 +185,7 @@ static rt_err_t nu_bpwmcap_get_pulsewidth(struct rt_inputcapture_device *inputca
     nu_bpwmcap_t psNuBpwmCap;
     float fTempCnt;
 
-    psNuBpwmCap = (nu_bpwmcap_t )inputcapture;
+    psNuBpwmCap = (nu_bpwmcap_t)inputcapture;
 
     if (psNuBpwmCap->u32CurrentFallingCnt)
     {
@@ -225,14 +225,14 @@ static rt_err_t nu_bpwmcap_init(struct rt_inputcapture_device *inputcapture)
 
     RT_ASSERT(inputcapture);
 
-    psNuBpwmCap = (nu_bpwmcap_t ) inputcapture;
+    psNuBpwmCap = (nu_bpwmcap_t) inputcapture;
 
-        psNuBpwmCap->u8DummyData = 0;
-        psNuBpwmCap->u32CurrentFallingCnt = 0;
-        psNuBpwmCap->u32CurrentRisingCnt = 0;
-        psNuBpwmCap->u32LastRisingCnt = 0;
-        psNuBpwmCap->u32LastFallingCnt = 0;
-        psNuBpwmCap->parent.ops = &nu_bpwmcap_ops;
+    psNuBpwmCap->u8DummyData = 0;
+    psNuBpwmCap->u32CurrentFallingCnt = 0;
+    psNuBpwmCap->u32CurrentRisingCnt = 0;
+    psNuBpwmCap->u32LastRisingCnt = 0;
+    psNuBpwmCap->u32LastFallingCnt = 0;
+    psNuBpwmCap->parent.ops = &nu_bpwmcap_ops;
 
     if ((psNuBpwmCap->u8Channel % BPWM_CHANNEL_NUM) == 0)
     {
@@ -250,9 +250,9 @@ static rt_err_t nu_bpwmcap_open(struct rt_inputcapture_device *inputcapture)
 
     RT_ASSERT(inputcapture);
 
-    psNuBpwmCap = (nu_bpwmcap_t ) inputcapture;
+    psNuBpwmCap = (nu_bpwmcap_t) inputcapture;
 
-        /* Set capture time as 500 nano second */
+    /* Set capture time as 500 nano second */
     psNuBpwmCap->fUsPerTick = (float)BPWM_ConfigCaptureChannel(psNuBpwmCap->base, 0, 500, 0) / 1000;
 
     /* Set counter type as up count */
@@ -268,7 +268,7 @@ static rt_err_t nu_bpwmcap_open(struct rt_inputcapture_device *inputcapture)
     BPWM_EnableCapture(psNuBpwmCap->base, 0x1 << psNuBpwmCap->u8Channel);
 
     /* Enable BPWM NVIC interrupt */
-    if ( (psNuBpwmCap->base->CAPCTL & ((0x1 << BPWM_CHANNEL_NUM)-1) ) != 0u)
+    if ((psNuBpwmCap->base->CAPCTL & ((0x1 << BPWM_CHANNEL_NUM) - 1)) != 0u)
         NVIC_EnableIRQ(psNuBpwmCap->irqn);
 
     return RT_EOK;
@@ -280,7 +280,7 @@ static rt_err_t nu_bpwmcap_close(struct rt_inputcapture_device *inputcapture)
 
     RT_ASSERT(inputcapture);
 
-    psNuBpwmCap = (nu_bpwmcap_t ) inputcapture;
+    psNuBpwmCap = (nu_bpwmcap_t) inputcapture;
 
     /* Enable Capture Function for BPWM */
     BPWM_DisableCapture(psNuBpwmCap->base, 0x1 << psNuBpwmCap->u8Channel);
@@ -289,7 +289,7 @@ static rt_err_t nu_bpwmcap_close(struct rt_inputcapture_device *inputcapture)
     BPWM_DisableCaptureInt(psNuBpwmCap->base, psNuBpwmCap->u8Channel, BPWM_CAPTURE_INT_FALLING_LATCH | BPWM_CAPTURE_INT_RISING_LATCH);
 
     /* Disable BPWM NVIC interrupt */
-    if ( (psNuBpwmCap->base->CAPCTL & ((0x1 << BPWM_CHANNEL_NUM)-1) ) == 0u)
+    if ((psNuBpwmCap->base->CAPCTL & ((0x1 << BPWM_CHANNEL_NUM) - 1)) == 0u)
         NVIC_DisableIRQ(psNuBpwmCap->irqn);
 
     return RT_EOK;
@@ -301,17 +301,17 @@ static int nu_bpwm_capture_device_init(void)
     int i;
     rt_err_t ret = RT_EOK;
 
-    for (i = (BPWM_START+1); i < BPWM_CNT; i++)
+    for (i = (BPWM_START + 1); i < BPWM_CNT; i++)
     {
         nu_bpwmcap_t psNuBpwmCap = &nu_bpwmcap_arr[i];
 
-                psNuBpwmCap->u8Channel = i % BPWM_CHANNEL_NUM;
-                psNuBpwmCap->u8DummyData = 0;
-                psNuBpwmCap->u32CurrentFallingCnt = 0;
-                psNuBpwmCap->u32CurrentRisingCnt = 0;
-                psNuBpwmCap->u32LastRisingCnt = 0;
-                psNuBpwmCap->u32LastFallingCnt = 0;
-                psNuBpwmCap->parent.ops = &nu_bpwmcap_ops;
+        psNuBpwmCap->u8Channel = i % BPWM_CHANNEL_NUM;
+        psNuBpwmCap->u8DummyData = 0;
+        psNuBpwmCap->u32CurrentFallingCnt = 0;
+        psNuBpwmCap->u32CurrentRisingCnt = 0;
+        psNuBpwmCap->u32LastRisingCnt = 0;
+        psNuBpwmCap->u32LastFallingCnt = 0;
+        psNuBpwmCap->parent.ops = &nu_bpwmcap_ops;
 
         if ((psNuBpwmCap->u8Channel % BPWM_CHANNEL_NUM) == 0)
         {
@@ -320,8 +320,8 @@ static int nu_bpwm_capture_device_init(void)
             SYS_ResetModule(psNuBpwmCap->rstidx);
         }
 
-                /* register inputcapture device */
-                ret = rt_device_inputcapture_register(&psNuBpwmCap->parent, psNuBpwmCap->name, psNuBpwmCap);
+        /* register inputcapture device */
+        ret = rt_device_inputcapture_register(&psNuBpwmCap->parent, psNuBpwmCap->name, psNuBpwmCap);
         RT_ASSERT(ret == RT_EOK);
     }
 

+ 42 - 10
bsp/nuvoton/libraries/m460/rtt_port/drv_ccap.c

@@ -182,14 +182,14 @@ static rt_err_t ccap_pipe_configure(nu_ccap_t psNuCcap, ccap_view_info_t psViewI
         /* Set Packet Scaling Vertical/Horizontal Factor Register */
         if (psCcapConf->sPipeInfo_Packet.u32Height < psRectCropping->height)
         {
-            u32HN = psRectCropping->height;
-            u32HM = psCcapConf->sPipeInfo_Packet.u32Height;
+            u32HN = psCcapConf->sPipeInfo_Packet.u32Height;
+            u32HM = psRectCropping->height;
         }
 
         if (psCcapConf->sPipeInfo_Packet.u32Width < psRectCropping->width)
         {
-            u32WN = psRectCropping->width;
-            u32WM = psCcapConf->sPipeInfo_Packet.u32Width;
+            u32WN = psCcapConf->sPipeInfo_Packet.u32Width;
+            u32WM = psRectCropping->width;
         }
 
         CCAP_SetPacketScaling(psNuCcap->base,
@@ -217,23 +217,23 @@ static rt_err_t ccap_pipe_configure(nu_ccap_t psNuCcap, ccap_view_info_t psViewI
         /* Set System Memory Planar U Base Address Register */
         CCAP_SetPlanarUBuf(psNuCcap->base, (uint32_t)psCcapConf->sPipeInfo_Planar.pu8FarmAddr + u32Offset);
 
-        u32Offset += (psCcapConf->sPipeInfo_Planar.u32Height * psCcapConf->sPipeInfo_Planar.u32Width) / 2;
+        u32Offset += ((psCcapConf->sPipeInfo_Planar.u32Height * psCcapConf->sPipeInfo_Planar.u32Width) / 2);
 
         /* Set System Memory Planar V Base Address Register */
         CCAP_SetPlanarVBuf(psNuCcap->base, (uint32_t)psCcapConf->sPipeInfo_Planar.pu8FarmAddr + u32Offset);
 
         u32WM = u32WN = u32HM = u32HN = 0;
-        /* Set Packet Scaling Vertical/Horizontal Factor Register */
+        /* Set Planar Scaling Vertical/Horizontal Factor Register */
         if (psCcapConf->sPipeInfo_Planar.u32Height < psRectCropping->height)
         {
-            u32HN = psRectCropping->height;
-            u32HM = psCcapConf->sPipeInfo_Planar.u32Height;
+            u32HN = psCcapConf->sPipeInfo_Planar.u32Height;
+            u32HM = psRectCropping->height;
         }
 
         if (psCcapConf->sPipeInfo_Planar.u32Width < psRectCropping->width)
         {
-            u32WN = psRectCropping->width;
-            u32WM = psCcapConf->sPipeInfo_Planar.u32Width;
+            u32WN = psCcapConf->sPipeInfo_Planar.u32Width;
+            u32WM = psRectCropping->width;
         }
 
         /* Set Planar Scaling Vertical/Horizontal Factor Register */
@@ -368,6 +368,38 @@ static rt_err_t ccap_control(rt_device_t dev, int cmd, void *args)
     }
     break;
 
+    case CCAP_CMD_SET_OPMODE:
+    {
+        RT_ASSERT(args);
+        int i32IsOneSutterMode = *((int *)args);
+
+        /* Set shutter or continuous mode */
+        CCAP_SET_CTL(psNuCcap->base, (i32IsOneSutterMode > 0) ? CCAP_CTL_SHUTTER_Msk : 0);
+    }
+    break;
+
+    case CCAP_CMD_SET_BASEADDR:
+    {
+        uint32_t u32Offset = 0;
+        ccap_config_t psCcapConf;
+
+        RT_ASSERT(args);
+        psCcapConf = (ccap_config_t)args;
+
+        /* Set System Memory Packet Base Address Register */
+        CCAP_SetPacketBuf(psNuCcap->base, (uint32_t)psCcapConf->sPipeInfo_Packet.pu8FarmAddr);
+
+        /* Set System Memory Planar Y Base Address Register */
+        CCAP_SetPlanarYBuf(psNuCcap->base, (uint32_t)psCcapConf->sPipeInfo_Planar.pu8FarmAddr + u32Offset);
+        u32Offset = psCcapConf->sPipeInfo_Planar.u32Height * psCcapConf->sPipeInfo_Planar.u32Width;
+        /* Set System Memory Planar U Base Address Register */
+        CCAP_SetPlanarUBuf(psNuCcap->base, (uint32_t)psCcapConf->sPipeInfo_Planar.pu8FarmAddr + u32Offset);
+        u32Offset += ((psCcapConf->sPipeInfo_Planar.u32Height * psCcapConf->sPipeInfo_Planar.u32Width) / 2);
+        /* Set System Memory Planar V Base Address Register */
+        CCAP_SetPlanarVBuf(psNuCcap->base, (uint32_t)psCcapConf->sPipeInfo_Planar.pu8FarmAddr + u32Offset);
+    }
+    break;
+
     default:
         return -RT_ENOSYS;
     }

+ 2 - 0
bsp/nuvoton/libraries/m460/rtt_port/drv_ccap.h

@@ -29,6 +29,8 @@ typedef enum
     CCAP_CMD_STOP_CAPTURE,
     CCAP_CMD_SET_SENCLK,
     CCAP_CMD_SET_PIPES,
+    CCAP_CMD_SET_OPMODE,
+    CCAP_CMD_SET_BASEADDR,
 } ccap_cmd;
 
 typedef struct

+ 6 - 6
bsp/nuvoton/libraries/m460/rtt_port/drv_epwm_capture.c

@@ -165,14 +165,14 @@ void EPWM1P2_IRQHandler(void)
 
 static void nu_epwmcap_isr(nu_epwmcap_t psNuEpwmCap)
 {
-        if (EPWM_GetCaptureIntFlag(psNuEpwmCap->base, psNuEpwmCap->u8Channel) != 0)
+    if (EPWM_GetCaptureIntFlag(psNuEpwmCap->base, psNuEpwmCap->u8Channel) != 0)
+    {
+        /* Calculate pulse width */
+        if (CalPulseWidth(psNuEpwmCap) == RT_EOK)
         {
-                /* Calculate pulse width */
-                if (CalPulseWidth(psNuEpwmCap) == RT_EOK)
-                {
-                        rt_hw_inputcapture_isr(&psNuEpwmCap->parent, psNuEpwmCap->input_data_level);
-                }
+            rt_hw_inputcapture_isr(&psNuEpwmCap->parent, psNuEpwmCap->input_data_level);
         }
+    }
 }
 
 static rt_err_t CalPulseWidth(nu_epwmcap_t psNuEpwmCap)

+ 9 - 9
bsp/nuvoton/libraries/n9h30/rtt_port/drv_vpost.c

@@ -242,20 +242,20 @@ static rt_err_t vpost_layer_init(rt_device_t dev)
 
 static void nu_vpost_calculate_fps(void)
 {
-    #define DEF_PERIOD_SEC  10
-    static uint32_t u32LastTick=0;
-    static uint32_t u32VSyncBlank=0;
-    static uint32_t u32UnderRun=0;
+#define DEF_PERIOD_SEC  10
+    static uint32_t u32LastTick = 0;
+    static uint32_t u32VSyncBlank = 0;
+    static uint32_t u32UnderRun = 0;
     uint32_t u32CurrTick = rt_tick_get();
 
-    if ( (u32CurrTick-u32LastTick) > (DEF_PERIOD_SEC*RT_TICK_PER_SECOND) )
+    if ((u32CurrTick - u32LastTick) > (DEF_PERIOD_SEC * RT_TICK_PER_SECOND))
     {
-            rt_kprintf("VPOST: %d FPS, URPS: %d\n",
-                              (s_u32VSyncBlank-u32VSyncBlank)/DEF_PERIOD_SEC,
-                                (s_u32UnderRun-u32UnderRun)/DEF_PERIOD_SEC);
+        rt_kprintf("VPOST: %d FPS, URPS: %d\n",
+                   (s_u32VSyncBlank - u32VSyncBlank) / DEF_PERIOD_SEC,
+                   (s_u32UnderRun - u32UnderRun) / DEF_PERIOD_SEC);
         u32LastTick = u32CurrTick;
         u32VSyncBlank = s_u32VSyncBlank;
-              u32UnderRun = s_u32UnderRun;
+        u32UnderRun = s_u32UnderRun;
     }
 }
 

+ 235 - 169
bsp/nuvoton/libraries/nu_packages/CCAP_Sensors/ccap_demo.c

@@ -13,6 +13,7 @@
 #include <rtthread.h>
 
 #include "drv_ccap.h"
+#include <dfs_posix.h>
 
 #define DBG_ENABLE
 #define DBG_LEVEL DBG_LOG
@@ -20,34 +21,51 @@
 #define DBG_COLOR
 #include <rtdbg.h>
 
-#define THREAD_NAME       "ccap_demo"
 #define THREAD_PRIORITY   5
 #define THREAD_STACK_SIZE 4096
 #define THREAD_TIMESLICE  5
 
-#define DEVNAME_LCD       "lcd"
 #define DEF_CROP_PACKET_RECT
-#define DEF_DURATION         5
+#define DEF_ENABLE_PLANAR_PIPE  0
+
+#define DEF_DURATION         10
 #if defined(BSP_USING_CCAP0) && defined(BSP_USING_CCAP1)
     #define DEF_GRID_VIEW        1
 #elif defined(BSP_USING_CCAP0) || defined(BSP_USING_CCAP1)
     #define DEF_GRID_VIEW        0
 #endif
 
-static volatile uint32_t s_u32FrameGrabbed = 0;
-static rt_sem_t  preview_sem = RT_NULL;
+typedef struct
+{
+    char *thread_name;
+    char *devname_ccap;
+    char *devname_sensor;
+    char *devname_lcd;
+} ccap_grabber_param;
+typedef ccap_grabber_param *ccap_grabber_param_t;
+
+typedef struct
+{
+    ccap_config    sCcapConfig;
+    struct rt_device_graphic_info sLcdInfo;
+    uint32_t       u32CurFBPointer;
+    uint32_t       u32FrameEnd;
+    rt_sem_t       semFrameEnd;
+} ccap_grabber_context;
+typedef ccap_grabber_context *ccap_grabber_context_t;
 
 static void nu_ccap_event_hook(void *pvData, uint32_t u32EvtMask)
 {
+    ccap_grabber_context_t psGrabberContext = (ccap_grabber_context_t)pvData;
+
     if (u32EvtMask & NU_CCAP_FRAME_END)
     {
-        s_u32FrameGrabbed++;
-        rt_sem_release(preview_sem);
+        rt_sem_release(psGrabberContext->semFrameEnd);
     }
 
     if (u32EvtMask & NU_CCAP_ADDRESS_MATCH)
     {
-        LOG_E("Address matched");
+        LOG_I("Address matched");
     }
 
     if (u32EvtMask & NU_CCAP_MEMORY_ERROR)
@@ -56,41 +74,85 @@ static void nu_ccap_event_hook(void *pvData, uint32_t u32EvtMask)
     }
 }
 
-static rt_device_t ccap_sensor_init(ccap_config *psCcapConf, const char *pcCcapDevName, const char *pcSensorDevName)
+static rt_device_t ccap_sensor_init(ccap_grabber_context_t psGrabberContext, ccap_grabber_param_t psGrabberParam)
 {
     rt_err_t ret;
     ccap_view_info_t psViewInfo;
     sensor_mode_info *psSensorModeInfo;
     rt_device_t psDevSensor = RT_NULL;
     rt_device_t psDevCcap = RT_NULL;
+    struct rt_device_graphic_info *psLcdInfo = &psGrabberContext->sLcdInfo;
+    ccap_config_t    psCcapConfig = &psGrabberContext->sCcapConfig;
 
-    psDevCcap = rt_device_find(pcCcapDevName);
+    psDevCcap = rt_device_find(psGrabberParam->devname_ccap);
     if (psDevCcap == RT_NULL)
     {
-        LOG_E("Can't find %s", pcCcapDevName);
+        LOG_E("Can't find %s", psGrabberParam->devname_ccap);
         goto exit_ccap_sensor_init;
     }
 
-    psDevSensor = rt_device_find(pcSensorDevName);
+    psDevSensor = rt_device_find(psGrabberParam->devname_sensor);
     if (psDevSensor == RT_NULL)
     {
-        LOG_E("Can't find %s", pcSensorDevName);
+        LOG_E("Can't find %s", psGrabberParam->devname_sensor);
         goto exit_ccap_sensor_init;
     }
 
+    /* Packet pipe for preview */
+    if (DEF_GRID_VIEW)
+    {
+        psCcapConfig->sPipeInfo_Packet.u32Width    = psLcdInfo->width / 2;
+        psCcapConfig->sPipeInfo_Packet.u32Height   = psLcdInfo->height / 2;
+        psCcapConfig->sPipeInfo_Packet.u32PixFmt   = (psLcdInfo->pixel_format == RTGRAPHIC_PIXEL_FORMAT_RGB565) ? CCAP_PAR_OUTFMT_RGB565 : 0;
+        psCcapConfig->u32Stride_Packet             = psLcdInfo->width;
+        if (!rt_strcmp(psGrabberParam->devname_ccap, "ccap1"))
+            psCcapConfig->sPipeInfo_Packet.pu8FarmAddr = psLcdInfo->framebuffer + (psCcapConfig->sPipeInfo_Packet.u32Width * 2);
+        else
+            psCcapConfig->sPipeInfo_Packet.pu8FarmAddr = psLcdInfo->framebuffer;
+    }
+    else
+    {
+        psCcapConfig->sPipeInfo_Packet.pu8FarmAddr = psLcdInfo->framebuffer;
+        psCcapConfig->sPipeInfo_Packet.u32Height   = psLcdInfo->height;
+        psCcapConfig->sPipeInfo_Packet.u32Width    = psLcdInfo->width;
+        psCcapConfig->sPipeInfo_Packet.u32PixFmt   = (psLcdInfo->pixel_format == RTGRAPHIC_PIXEL_FORMAT_RGB565) ? CCAP_PAR_OUTFMT_RGB565 : 0;
+        psCcapConfig->u32Stride_Packet             = psLcdInfo->width;
+    }
+
+    /* Planar pipe for encoding */
+#if DEF_ENABLE_PLANAR_PIPE
+    psCcapConfig->sPipeInfo_Planar.u32Width    = psLcdInfo->width / 2;
+    psCcapConfig->sPipeInfo_Planar.u32Height   = psLcdInfo->height / 2;
+    psCcapConfig->sPipeInfo_Planar.pu8FarmAddr = rt_malloc_align(psCcapConfig->sPipeInfo_Planar.u32Height * psCcapConfig->sPipeInfo_Planar.u32Width * 2, 32);
+    psCcapConfig->sPipeInfo_Planar.u32PixFmt   = CCAP_PAR_PLNFMT_YUV422;
+    psCcapConfig->u32Stride_Planar             = psCcapConfig->sPipeInfo_Planar.u32Width;
+
+    if (psCcapConfig->sPipeInfo_Planar.pu8FarmAddr == RT_NULL)
+    {
+        psCcapConfig->sPipeInfo_Planar.u32Height = 0;
+        psCcapConfig->sPipeInfo_Planar.u32Width  = 0;
+        psCcapConfig->sPipeInfo_Planar.u32PixFmt = 0;
+        psCcapConfig->u32Stride_Planar           = 0;
+    }
+
+    LOG_I("Planar.FarmAddr@0x%08X", psCcapConfig->sPipeInfo_Planar.pu8FarmAddr);
+    LOG_I("Planar.FarmWidth: %d", psCcapConfig->sPipeInfo_Planar.u32Width);
+    LOG_I("Planar.FarmHeight: %d", psCcapConfig->sPipeInfo_Planar.u32Height);
+#endif
+
     /* open CCAP */
     ret = rt_device_open(psDevCcap, 0);
     if (ret != RT_EOK)
     {
-        LOG_E("Can't open %s", pcCcapDevName);
+        LOG_E("Can't open %s", psGrabberParam->devname_ccap);
         goto exit_ccap_sensor_init;
     }
 
     /* Find suit mode for packet pipe */
-    if (psCcapConf->sPipeInfo_Packet.pu8FarmAddr != RT_NULL)
+    if (psCcapConfig->sPipeInfo_Packet.pu8FarmAddr != RT_NULL)
     {
         /* Check view window of packet pipe */
-        psViewInfo = &psCcapConf->sPipeInfo_Packet;
+        psViewInfo = &psCcapConfig->sPipeInfo_Packet;
 
         if ((rt_device_control(psDevSensor, CCAP_SENSOR_CMD_GET_SUIT_MODE, (void *)&psViewInfo) != RT_EOK)
                 || (psViewInfo == RT_NULL))
@@ -101,21 +163,21 @@ static rt_device_t ccap_sensor_init(ccap_config *psCcapConf, const char *pcCcapD
     }
 
     /* Find suit mode for planner pipe */
-    if (psCcapConf->sPipeInfo_Planar.pu8FarmAddr != RT_NULL)
+    if (psCcapConfig->sPipeInfo_Planar.pu8FarmAddr != RT_NULL)
     {
         int recheck = 1;
 
         if (psViewInfo != RT_NULL)
         {
-            if ((psCcapConf->sPipeInfo_Planar.u32Width <= psViewInfo->u32Width) ||
-                    (psCcapConf->sPipeInfo_Planar.u32Height <= psViewInfo->u32Height))
+            if ((psCcapConfig->sPipeInfo_Planar.u32Width <= psViewInfo->u32Width) ||
+                    (psCcapConfig->sPipeInfo_Planar.u32Height <= psViewInfo->u32Height))
                 recheck = 0;
         }
 
         if (recheck)
         {
             /* Check view window of planner pipe */
-            psViewInfo = &psCcapConf->sPipeInfo_Planar;
+            psViewInfo = &psCcapConfig->sPipeInfo_Planar;
 
             /* Find suit mode */
             if ((rt_device_control(psDevSensor, CCAP_SENSOR_CMD_GET_SUIT_MODE, (void *)&psViewInfo) != RT_EOK)
@@ -129,55 +191,65 @@ static rt_device_t ccap_sensor_init(ccap_config *psCcapConf, const char *pcCcapD
 
 #if defined(DEF_CROP_PACKET_RECT)
     /* Set cropping rectangle */
-    if (psViewInfo->u32Width >= psCcapConf->sPipeInfo_Packet.u32Width)
+    if (psViewInfo->u32Width >= psCcapConfig->sPipeInfo_Packet.u32Width)
     {
         /* sensor.width >= preview.width */
-        psCcapConf->sRectCropping.x = (psViewInfo->u32Width - psCcapConf->sPipeInfo_Packet.u32Width) / 2;
-        psCcapConf->sRectCropping.width  = psCcapConf->sPipeInfo_Packet.u32Width;
+        psCcapConfig->sRectCropping.x = (psViewInfo->u32Width - psCcapConfig->sPipeInfo_Packet.u32Width) / 2;
+        psCcapConfig->sRectCropping.width  = psCcapConfig->sPipeInfo_Packet.u32Width;
     }
     else
     {
         /* sensor.width < preview.width */
-        psCcapConf->sRectCropping.x = 0;
-        psCcapConf->sRectCropping.width  = psViewInfo->u32Width;
+        psCcapConfig->sRectCropping.x = 0;
+        psCcapConfig->sRectCropping.width  = psViewInfo->u32Width;
     }
 
-    if (psViewInfo->u32Height >= psCcapConf->sPipeInfo_Packet.u32Height)
+    if (psViewInfo->u32Height >= psCcapConfig->sPipeInfo_Packet.u32Height)
     {
         /* sensor.height >= preview.height */
-        psCcapConf->sRectCropping.y = (psViewInfo->u32Height - psCcapConf->sPipeInfo_Packet.u32Height) / 2;
-        psCcapConf->sRectCropping.height = psCcapConf->sPipeInfo_Packet.u32Height;
+        psCcapConfig->sRectCropping.y = (psViewInfo->u32Height - psCcapConfig->sPipeInfo_Packet.u32Height) / 2;
+        psCcapConfig->sRectCropping.height = psCcapConfig->sPipeInfo_Packet.u32Height;
     }
     else
     {
         /* sensor.height < preview.height */
-        psCcapConf->sRectCropping.y = 0;
-        psCcapConf->sRectCropping.height = psViewInfo->u32Height;
+        psCcapConfig->sRectCropping.y = 0;
+        psCcapConfig->sRectCropping.height = psViewInfo->u32Height;
     }
 #else
     /* Set cropping rectangle */
-    psCcapConf->sRectCropping.x      = 0;
-    psCcapConf->sRectCropping.y      = 0;
-    psCcapConf->sRectCropping.width  = psViewInfo->u32Width;
-    psCcapConf->sRectCropping.height = psViewInfo->u32Height;
+    psCcapConfig->sRectCropping.x      = 0;
+    psCcapConfig->sRectCropping.y      = 0;
+    psCcapConfig->sRectCropping.width  = psViewInfo->u32Width;
+    psCcapConfig->sRectCropping.height = psViewInfo->u32Height;
 #endif
 
+    /* ISR Hook */
+    psCcapConfig->pfnEvHndler = nu_ccap_event_hook;
+    psCcapConfig->pvData      = (void *)psGrabberContext;
+
     /* Get Suitable mode. */
     psSensorModeInfo = (sensor_mode_info *)psViewInfo;
 
     /* Feed CCAP configuration */
-    ret = rt_device_control(psDevCcap, CCAP_CMD_CONFIG, (void *)psCcapConf);
+    ret = rt_device_control(psDevCcap, CCAP_CMD_CONFIG, (void *)psCcapConfig);
     if (ret != RT_EOK)
     {
-        LOG_E("Can't feed configuration %s", pcCcapDevName);
+        LOG_E("Can't feed configuration %s", psGrabberParam->devname_ccap);
         goto fail_ccap_init;
     }
 
-    /* speed up pixel clock */
-    if (rt_device_control(psDevCcap, CCAP_CMD_SET_SENCLK, (void *)&psSensorModeInfo->u32SenClk) != RT_EOK)
     {
-        LOG_E("Can't feed setting.");
-        goto fail_ccap_init;
+        int i32SenClk = psSensorModeInfo->u32SenClk;
+        if (DEF_GRID_VIEW && DEF_ENABLE_PLANAR_PIPE)
+            i32SenClk = 45000000; /* Bandwidth limitation: Slow down sensor clock */
+
+        /* speed up pixel clock */
+        if (rt_device_control(psDevCcap, CCAP_CMD_SET_SENCLK, (void *)&i32SenClk) != RT_EOK)
+        {
+            LOG_E("Can't feed setting.");
+            goto fail_ccap_init;
+        }
     }
 
     /* Initial CCAP sensor */
@@ -197,7 +269,7 @@ static rt_device_t ccap_sensor_init(ccap_config *psCcapConf, const char *pcCcapD
     ret = rt_device_control(psDevCcap, CCAP_CMD_SET_PIPES, (void *)psViewInfo);
     if (ret != RT_EOK)
     {
-        LOG_E("Can't set pipes %s", pcCcapDevName);
+        LOG_E("Can't set pipes %s", psGrabberParam->devname_ccap);
         goto fail_ccap_init;
     }
 
@@ -229,36 +301,67 @@ static void ccap_sensor_fini(rt_device_t psDevCcap, rt_device_t psDevSensor)
         rt_device_close(psDevCcap);
 }
 
+#if DEF_ENABLE_PLANAR_PIPE
+static int ccap_save_planar_frame(char *name, rt_tick_t timestamp, const void *data, size_t size)
+{
+    int fd;
+    char szFilename[32];
+    int wrote_size = 0;
+
+    rt_snprintf(szFilename, sizeof(szFilename), "/%s-%08d.yuv", name, timestamp);
+    fd = open(szFilename, O_WRONLY | O_CREAT);
+    if (fd < 0)
+    {
+        LOG_E("Could not open %s for writing.", szFilename);
+        goto exit_ccap_save_planar_frame;
+    }
+
+    if ((wrote_size = write(fd, data, size)) != size)
+    {
+        LOG_E("Could not write to %s (%d != %d).", szFilename, wrote_size, size);
+        goto exit_ccap_save_planar_frame;
+    }
+
+    wrote_size = size;
+
+exit_ccap_save_planar_frame:
+
+    if (fd >= 0)
+        close(fd);
+
+    return wrote_size;
+}
+#endif
+
 static void ccap_grabber(void *parameter)
 {
     rt_err_t ret;
+    ccap_grabber_param_t psGrabberParam = (ccap_grabber_param_t)parameter;
+    ccap_grabber_context sGrabberContext;
 
-    rt_device_t psDevLcd;
-    struct rt_device_graphic_info sLcdInfo;
+    rt_device_t psDevCcap = RT_NULL;
+    rt_device_t psDevLcd = RT_NULL;
 
-    ccap_config sCcapConfig;
-    rt_tick_t last_tick;
+    rt_tick_t last, now;
     rt_bool_t bDrawDirect;
-    rt_bool_t i32PingPong = 0;
 
-    rt_device_t psDevCcap0 = RT_NULL;
-    rt_device_t psDevCcap1 = RT_NULL;
+    rt_memset((void *)&sGrabberContext, 0, sizeof(ccap_grabber_context));
 
-    psDevLcd = rt_device_find(DEVNAME_LCD);
+    psDevLcd = rt_device_find(psGrabberParam->devname_lcd);
     if (psDevLcd == RT_NULL)
     {
-        LOG_E("Can't find %s", DEVNAME_LCD);
+        LOG_E("Can't find %s", psGrabberParam->devname_lcd);
         goto exit_ccap_grabber;
     }
 
-    ret = rt_device_control(psDevLcd, RTGRAPHIC_CTRL_GET_INFO, &sLcdInfo);
+    ret = rt_device_control(psDevLcd, RTGRAPHIC_CTRL_GET_INFO, &sGrabberContext.sLcdInfo);
     if (ret != RT_EOK)
     {
-        LOG_E("Can't get LCD info %s", DEVNAME_LCD);
+        LOG_E("Can't get LCD info %s", psGrabberParam->devname_lcd);
         goto exit_ccap_grabber;
     }
 
-    if (rt_device_control(psDevLcd, RTGRAPHIC_CTRL_PAN_DISPLAY, (void *)sLcdInfo.framebuffer) == RT_EOK)
+    if (rt_device_control(psDevLcd, RTGRAPHIC_CTRL_PAN_DISPLAY, (void *)sGrabberContext.sLcdInfo.framebuffer) == RT_EOK)
     {
         /* Sync-type LCD panel, will draw to VRAM directly. */
         bDrawDirect = RT_TRUE;
@@ -270,98 +373,51 @@ static void ccap_grabber(void *parameter)
     }
 
     LOG_I("LCD Type: %s-type",   bDrawDirect ? "Sync" : "MPU");
-    LOG_I("LCD Width: %d",   sLcdInfo.width);
-    LOG_I("LCD Height: %d",  sLcdInfo.height);
-    LOG_I("LCD bpp:%d",   sLcdInfo.bits_per_pixel);
-    LOG_I("LCD pixel format:%d",   sLcdInfo.pixel_format);
-    LOG_I("LCD frame buffer@0x%08x",   sLcdInfo.framebuffer);
-    LOG_I("LCD frame buffer size:%d",   sLcdInfo.smem_len);
-
-    /* Packet pipe for preview */
-    if (DEF_GRID_VIEW)
-    {
-        sCcapConfig.sPipeInfo_Packet.pu8FarmAddr = sLcdInfo.framebuffer;
-        sCcapConfig.sPipeInfo_Packet.u32Height   = sLcdInfo.height / 2;
-        sCcapConfig.sPipeInfo_Packet.u32Width    = sLcdInfo.width / 2;
-        sCcapConfig.sPipeInfo_Packet.u32PixFmt   = (sLcdInfo.pixel_format == RTGRAPHIC_PIXEL_FORMAT_RGB565) ? CCAP_PAR_OUTFMT_RGB565 : 0;
-        sCcapConfig.u32Stride_Packet             = sLcdInfo.width;
-    }
-    else
-    {
-        sCcapConfig.sPipeInfo_Packet.pu8FarmAddr = sLcdInfo.framebuffer;
-        sCcapConfig.sPipeInfo_Packet.u32Height   = sLcdInfo.height;
-        sCcapConfig.sPipeInfo_Packet.u32Width    = sLcdInfo.width;
-        sCcapConfig.sPipeInfo_Packet.u32PixFmt   = (sLcdInfo.pixel_format == RTGRAPHIC_PIXEL_FORMAT_RGB565) ? CCAP_PAR_OUTFMT_RGB565 : 0;
-        sCcapConfig.u32Stride_Packet             = sLcdInfo.width;
-    }
-
-    /* Planar pipe for encoding */
-    sCcapConfig.sPipeInfo_Planar.pu8FarmAddr = RT_NULL;
-    sCcapConfig.sPipeInfo_Planar.u32Height   = 0;
-    sCcapConfig.sPipeInfo_Planar.u32Width    = 0;
-    sCcapConfig.sPipeInfo_Planar.u32PixFmt   = 0;
-    sCcapConfig.u32Stride_Planar             = 0;
-
-    preview_sem = rt_sem_create("cdsem", 0, RT_IPC_FLAG_FIFO);
-
-    /* ISR Hook */
-    sCcapConfig.pfnEvHndler = nu_ccap_event_hook;
-    sCcapConfig.pvData      = (void *)&sCcapConfig;
-
-    /* initial ccap0 & sensor0 */
-#if defined(BSP_USING_CCAP0)
-    psDevCcap0 = ccap_sensor_init(&sCcapConfig, "ccap0", "sensor0");
-    if (psDevCcap0 == RT_NULL)
+    LOG_I("LCD Width: %d",   sGrabberContext.sLcdInfo.width);
+    LOG_I("LCD Height: %d",  sGrabberContext.sLcdInfo.height);
+    LOG_I("LCD bpp:%d",   sGrabberContext.sLcdInfo.bits_per_pixel);
+    LOG_I("LCD pixel format:%d",   sGrabberContext.sLcdInfo.pixel_format);
+    LOG_I("LCD frame buffer@0x%08x",   sGrabberContext.sLcdInfo.framebuffer);
+    LOG_I("LCD frame buffer size:%d",   sGrabberContext.sLcdInfo.smem_len);
+
+    sGrabberContext.semFrameEnd = rt_sem_create(psGrabberParam->devname_ccap, 0, RT_IPC_FLAG_FIFO);
+    if (sGrabberContext.semFrameEnd == RT_NULL)
     {
-        LOG_E("Can't init ccap and sensor");
+        LOG_E("Can't allocate sem resource %s", psGrabberParam->devname_ccap);
         goto exit_ccap_grabber;
     }
 
-    /* Start to capture */
-    if (rt_device_control(psDevCcap0, CCAP_CMD_START_CAPTURE, RT_NULL) != RT_EOK)
-    {
-        LOG_E("Can't start ccap0 capture.");
-        goto exit_ccap_grabber;
-    }
-#endif
-
-    /* initial ccap1 & sensor1 */
-#if defined(BSP_USING_CCAP1)
-    if (DEF_GRID_VIEW)
-        sCcapConfig.sPipeInfo_Packet.pu8FarmAddr += (sCcapConfig.sPipeInfo_Packet.u32Width * 2);
-
-    psDevCcap1 = ccap_sensor_init(&sCcapConfig, "ccap1", "sensor1");
-    if (psDevCcap1 == RT_NULL)
+    /* initial ccap & sensor*/
+    psDevCcap = ccap_sensor_init(&sGrabberContext, psGrabberParam);
+    if (psDevCcap == RT_NULL)
     {
-        LOG_E("Can't init ccap and sensor");
+        LOG_E("Can't init %s and %s", psGrabberParam->devname_ccap, psGrabberParam->devname_sensor);
         goto exit_ccap_grabber;
     }
 
-#if !defined(BSP_USING_CCAP0) || defined(DEF_GRID_VIEW)
     /* Start to capture */
-    if (rt_device_control(psDevCcap1, CCAP_CMD_START_CAPTURE, RT_NULL) != RT_EOK)
+    if (rt_device_control(psDevCcap, CCAP_CMD_START_CAPTURE, RT_NULL) != RT_EOK)
     {
-        LOG_E("Can't start ccap1 capture.");
+        LOG_E("Can't start %s", psGrabberParam->devname_ccap);
         goto exit_ccap_grabber;
     }
-    if (!DEF_GRID_VIEW)
-        i32PingPong = 1;
-#endif
-
-#endif
 
     /* open lcd */
     ret = rt_device_open(psDevLcd, 0);
     if (ret != RT_EOK)
     {
-        LOG_E("Can't open %s", DEVNAME_LCD);
+        LOG_E("Can't open %s", psGrabberParam->devname_lcd);
         goto exit_ccap_grabber;
     }
 
-    last_tick = rt_tick_get();
+    last = now = rt_tick_get();
     while (1)
     {
-        rt_sem_take(preview_sem, RT_WAITING_FOREVER);
+        if (sGrabberContext.semFrameEnd)
+        {
+            rt_sem_take(sGrabberContext.semFrameEnd, RT_WAITING_FOREVER);
+        }
+
         if (!bDrawDirect)
         {
             //MPU type
@@ -370,78 +426,77 @@ static void ccap_grabber(void *parameter)
             /* Update fullscreen region. */
             sRectInfo.x = 0;
             sRectInfo.y = 0;
-            sRectInfo.height = sLcdInfo.height;
-            sRectInfo.width = sLcdInfo.width;
+            sRectInfo.height = sGrabberContext.sLcdInfo.height;
+            sRectInfo.width = sGrabberContext.sLcdInfo.width;
 
             rt_device_control(psDevLcd, RTGRAPHIC_CTRL_RECT_UPDATE, &sRectInfo);
         }
         else
         {
-            // Sync type
-        }
+            int i32FBSize = sGrabberContext.sLcdInfo.width * sGrabberContext.sLcdInfo.height * (sGrabberContext.sLcdInfo.bits_per_pixel / 8);
+            int i32VRAMPiece = sGrabberContext.sLcdInfo.smem_len / i32FBSize;
+            ccap_config sCcapConfig = {0};
 
-        /* FPS */
-        if ((rt_tick_get() - last_tick) >= (DEF_DURATION * 1000))
-        {
-            if (i32PingPong == 0)
+            // Pan to next view by grab0
+            if (!DEF_GRID_VIEW || !rt_strcmp(psGrabberParam->thread_name, "grab0"))
             {
-                if (!DEF_GRID_VIEW)
-                    LOG_I("%s: %d FPS", psDevCcap0->parent.name, (s_u32FrameGrabbed / DEF_DURATION));
-                if (!DEF_GRID_VIEW && psDevCcap0 && psDevCcap1)
-                {
-                    rt_device_control(psDevCcap0, CCAP_CMD_STOP_CAPTURE, RT_NULL);
-                    rt_device_control(psDevCcap1, CCAP_CMD_START_CAPTURE, RT_NULL);
-                }
-            }
-            else if (i32PingPong == 1)
-            {
-                if (!DEF_GRID_VIEW)
-                    LOG_I("%s: %d FPS", psDevCcap1->parent.name, (s_u32FrameGrabbed / DEF_DURATION));
-                if (!DEF_GRID_VIEW && psDevCcap0 && psDevCcap1)
-                {
-                    rt_device_control(psDevCcap1, CCAP_CMD_STOP_CAPTURE, RT_NULL);
-                    rt_device_control(psDevCcap0, CCAP_CMD_START_CAPTURE, RT_NULL);
-                }
+                uint32_t u32BufPtr = (uint32_t)sGrabberContext.sCcapConfig.sPipeInfo_Packet.pu8FarmAddr
+                                     + (sGrabberContext.u32FrameEnd % i32VRAMPiece) * i32FBSize;
+                rt_device_control(psDevLcd, RTGRAPHIC_CTRL_PAN_DISPLAY, (void *)u32BufPtr);
             }
 
-            if (DEF_GRID_VIEW)
-                LOG_I("GridView: %s+%s: %d FPS", psDevCcap0->parent.name,
-                      psDevCcap1->parent.name,
-                      (s_u32FrameGrabbed / DEF_DURATION) / 2);
+            sCcapConfig.sPipeInfo_Packet.pu8FarmAddr = sGrabberContext.sCcapConfig.sPipeInfo_Packet.pu8FarmAddr
+                    + ((sGrabberContext.u32FrameEnd + 1) % i32VRAMPiece) * i32FBSize ;
 
-            /* Ping-pong rendering */
-            if (!DEF_GRID_VIEW && psDevCcap0 && psDevCcap1)
-                i32PingPong = (i32PingPong + 1) % 2;
-
-            s_u32FrameGrabbed = 0;
-            last_tick = rt_tick_get();
-        }
-    }
+#if DEF_ENABLE_PLANAR_PIPE
+            sCcapConfig.sPipeInfo_Planar.pu8FarmAddr = sGrabberContext.sCcapConfig.sPipeInfo_Planar.pu8FarmAddr;
+            sCcapConfig.sPipeInfo_Planar.u32Width = sGrabberContext.sCcapConfig.sPipeInfo_Planar.u32Width;
+            sCcapConfig.sPipeInfo_Planar.u32Height = sGrabberContext.sCcapConfig.sPipeInfo_Planar.u32Height;
+            sCcapConfig.sPipeInfo_Planar.u32PixFmt = sGrabberContext.sCcapConfig.sPipeInfo_Planar.u32PixFmt;
+#endif
 
-exit_ccap_grabber:
+            rt_device_control(psDevCcap, CCAP_CMD_SET_BASEADDR, &sCcapConfig);
 
-#if defined(BSP_USING_CCAP0)
-    ccap_sensor_fini(rt_device_find("ccap0"), rt_device_find("sensor0"));
+#if DEF_ENABLE_PLANAR_PIPE
+            {
+                int OpModeShutter = 1;
+                /* One-shot mode, trigger next frame */
+                rt_device_control(psDevCcap, CCAP_CMD_SET_OPMODE, &OpModeShutter);
+            }
 #endif
+        }
 
+        sGrabberContext.u32FrameEnd++;
 
-#if defined(BSP_USING_CCAP1)
-    ccap_sensor_fini(rt_device_find("ccap1"), rt_device_find("sensor1"));
+        /* FPS */
+        now = rt_tick_get();
+        if ((now - last) >= (DEF_DURATION * 1000))
+        {
+#if DEF_ENABLE_PLANAR_PIPE
+            ccap_save_planar_frame(psGrabberParam->thread_name, now, (const void *)sGrabberContext.sCcapConfig.sPipeInfo_Planar.pu8FarmAddr, sGrabberContext.sCcapConfig.sPipeInfo_Planar.u32Width * sGrabberContext.sCcapConfig.sPipeInfo_Planar.u32Height * 2);
 #endif
+            LOG_I("%s: %d FPS", psGrabberParam->devname_ccap, sGrabberContext.u32FrameEnd / DEF_DURATION);
+            sGrabberContext.u32FrameEnd = 0;
+            last = now;
+        }
+    }
 
+exit_ccap_grabber:
+
+    ccap_sensor_fini(rt_device_find(psGrabberParam->devname_ccap), rt_device_find(psGrabberParam->devname_sensor));
     rt_device_close(psDevLcd);
 
     return;
 }
 
-int ccap_demo(void)
+static void ccap_grabber_create(ccap_grabber_param_t psGrabberParam)
 {
-    rt_thread_t  ccap_thread = rt_thread_find(THREAD_NAME);
+    rt_thread_t ccap_thread = rt_thread_find(psGrabberParam->thread_name);
     if (ccap_thread == RT_NULL)
     {
-        ccap_thread = rt_thread_create(THREAD_NAME,
+        ccap_thread = rt_thread_create(psGrabberParam->thread_name,
                                        ccap_grabber,
-                                       RT_NULL,
+                                       psGrabberParam,
                                        THREAD_STACK_SIZE,
                                        THREAD_PRIORITY,
                                        THREAD_TIMESLICE);
@@ -449,7 +504,18 @@ int ccap_demo(void)
         if (ccap_thread != RT_NULL)
             rt_thread_startup(ccap_thread);
     }
+}
 
+int ccap_demo(void)
+{
+#if defined(BSP_USING_CCAP0)
+    static ccap_grabber_param ccap0_grabber_param = {"grab0", "ccap0", "sensor0", "lcd"};
+    ccap_grabber_create(&ccap0_grabber_param);
+#endif
+#if defined(BSP_USING_CCAP1)
+    static ccap_grabber_param ccap1_grabber_param = {"grab1", "ccap1", "sensor1", "lcd"};
+    ccap_grabber_create(&ccap1_grabber_param);
+#endif
     return 0;
 }
 MSH_CMD_EXPORT(ccap_demo, camera capture demo);

+ 4 - 5
bsp/nuvoton/libraries/nu_packages/Demo/SConscript

@@ -1,14 +1,13 @@
 Import('RTT_ROOT')
 from building import *
 cwd = GetCurrentDir()
-group = []
-if GetDepend('NU_PKG_USING_DEMO'):
-    src = Split("""
+CPPPATH = [cwd]
+src = Split("""
     usbd_hid_dance_mouse.c
     slcd_show_tick.c
     usbd_cdc_vcom_echo.c
+    atdev_utils.c
     """)
-    CPPPATH = [cwd]
-    group = DefineGroup('nu_pkgs_demo', src, depend = [''], CPPPATH = CPPPATH)
 
+group = DefineGroup('nu_pkgs_demo', src, depend = ['NU_PKG_USING_DEMO'], CPPPATH = CPPPATH)
 Return('group')

+ 48 - 0
bsp/nuvoton/libraries/nu_packages/Demo/atdev_utils.c

@@ -0,0 +1,48 @@
+/**************************************************************************//**
+*
+* @copyright (C) 2019 Nuvoton Technology Corp. All rights reserved.
+*
+* SPDX-License-Identifier: Apache-2.0
+*
+* Change Logs:
+* Date            Author       Notes
+* 2022-9-19       Wayne        First version
+*
+******************************************************************************/
+
+#include <rtthread.h>
+
+#if defined(PKG_USING_AT_DEVICE)
+
+#include <at_device.h>
+
+static void at_wifi_set(int argc, char **argv)
+{
+    struct at_device_ssid_pwd sATDConf;
+    struct at_device *at_dev = RT_NULL;
+
+    /* If the number of arguments less than 2 */
+    if (argc != 3)
+    {
+        rt_kprintf("\n");
+        rt_kprintf("at_wifi_set <ssid> <password>\n");
+        return ;
+    }
+
+    sATDConf.ssid     = argv[1]; //ssid
+    sATDConf.password = argv[2]; //password
+
+    if ((at_dev = at_device_get_first_initialized()) != RT_NULL)
+        at_device_control(at_dev, AT_DEVICE_CTRL_SET_WIFI_INFO, &sATDConf);
+    else
+    {
+        rt_kprintf("Can't find any initialized AT device.\n");
+    }
+}
+
+#ifdef FINSH_USING_MSH
+    MSH_CMD_EXPORT(at_wifi_set, AT device wifi set ssid / password function);
+#endif
+
+#endif /* #if defined(PKG_USING_AT_DEVICE) */
+

BIN
bsp/nuvoton/libraries/nu_packages/SLCD/rhe6616.png


+ 4 - 4
bsp/nuvoton/libraries/nu_packages/TPC/tpc_worker.c

@@ -92,10 +92,10 @@ static void tpc_entry(void *parameter)
                     u16X = read_data[i].x_coordinate;
                     u16Y = read_data[i].y_coordinate;
 
-                    #if defined(NU_PKG_TPC_REVERSE_XY)
-                        u16X = info.range_x - u16X;
-                        u16Y = info.range_y - u16Y;
-                    #endif
+#if defined(NU_PKG_TPC_REVERSE_XY)
+                    u16X = info.range_x - u16X;
+                    u16Y = info.range_y - u16Y;
+#endif
 
                     //rt_kprintf("[%d] %d %d\n", read_data[i].event, u16X, u16Y);
 

+ 6 - 78
bsp/nuvoton/nk-980iot/.config

@@ -80,7 +80,7 @@ CONFIG_RT_USING_DEVICE=y
 CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=256
 CONFIG_RT_CONSOLE_DEVICE_NAME="uart0"
-CONFIG_RT_VER_NUM=0x40101
+CONFIG_RT_VER_NUM=0x50000
 CONFIG_ARCH_ARM=y
 # CONFIG_RT_USING_CPU_FFS is not set
 CONFIG_ARCH_ARM_ARM9=y
@@ -423,23 +423,8 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_RW007 is not set
 # CONFIG_PKG_USING_COAP is not set
 # CONFIG_PKG_USING_NOPOLL is not set
-CONFIG_PKG_USING_NETUTILS=y
-CONFIG_PKG_NETUTILS_PATH="/packages/iot/netutils"
-CONFIG_PKG_NETUTILS_TFTP=y
-CONFIG_PKG_NETUTILS_IPERF=y
-# CONFIG_PKG_NETUTILS_NETIO is not set
-CONFIG_PKG_NETUTILS_NTP=y
-CONFIG_NTP_USING_AUTO_SYNC=y
-CONFIG_NTP_AUTO_SYNC_FIRST_DELAY=30
-CONFIG_NTP_AUTO_SYNC_PERIOD=3600
-CONFIG_NETUTILS_NTP_HOSTNAME="0.tw.pool.ntp.org"
-CONFIG_NETUTILS_NTP_HOSTNAME2="1.tw.pool.ntp.org"
-CONFIG_NETUTILS_NTP_HOSTNAME3="2.tw.pool.ntp.org"
-# CONFIG_PKG_NETUTILS_TELNET is not set
-# CONFIG_PKG_NETUTILS_TCPDUMP is not set
-CONFIG_PKG_USING_NETUTILS_LATEST_VERSION=y
-CONFIG_PKG_NETUTILS_VER="latest"
-CONFIG_PKG_NETUTILS_VER_NUM=0x99999
+# CONFIG_PKG_USING_NETUTILS is not set
+# CONFIG_PKG_USING_NETUTILS_LATEST_VERSION 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
@@ -881,66 +866,6 @@ CONFIG_PKG_OPTPARSE_VER="latest"
 # 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
-
-#
-# Privated Packages of RealThread
-#
-# CONFIG_PKG_USING_CODEC is not set
-# CONFIG_PKG_USING_PLAYER is not set
-# CONFIG_PKG_USING_MPLAYER is not set
-# CONFIG_PKG_USING_PERSIMMON_SRC is not set
-# CONFIG_PKG_USING_JS_PERSIMMON is not set
-# CONFIG_PKG_USING_JERRYSCRIPT_WIN32 is not set
-
-#
-# Network Utilities
-#
-# CONFIG_PKG_USING_MDNS is not set
-# CONFIG_PKG_USING_UPNP is not set
-# CONFIG_PKG_USING_WICED is not set
-# CONFIG_PKG_USING_CLOUDSDK is not set
-# CONFIG_PKG_USING_POWER_MANAGER is not set
-# CONFIG_PKG_USING_RT_OTA is not set
-# CONFIG_PKG_USING_RTINSIGHT is not set
-# CONFIG_PKG_USING_SMARTCONFIG is not set
-# CONFIG_PKG_USING_RTX is not set
-# CONFIG_RT_USING_TESTCASE is not set
-# CONFIG_PKG_USING_NGHTTP2 is not set
-# CONFIG_PKG_USING_AVS is not set
-# CONFIG_PKG_USING_ALI_LINKKIT is not set
-# CONFIG_PKG_USING_STS is not set
-# CONFIG_PKG_USING_DLMS is not set
-# CONFIG_PKG_USING_AUDIO_FRAMEWORK is not set
-# CONFIG_PKG_USING_ZBAR is not set
-# CONFIG_PKG_USING_MCF is not set
-# CONFIG_PKG_USING_URPC is not set
-# CONFIG_PKG_USING_DCM is not set
-# CONFIG_PKG_USING_EMQ is not set
-# CONFIG_PKG_USING_CFGM is not set
-# CONFIG_PKG_USING_RT_CMSIS_DAP is not set
-# CONFIG_PKG_USING_SMODULE is not set
-# CONFIG_PKG_USING_SNFD is not set
-# CONFIG_PKG_USING_UDBD is not set
-# CONFIG_PKG_USING_BENCHMARK is not set
-# CONFIG_PKG_USING_UBJSON is not set
-# CONFIG_PKG_USING_DATATYPE is not set
-# CONFIG_PKG_USING_FASTFS is not set
-# CONFIG_PKG_USING_RIL is not set
-# CONFIG_PKG_USING_WATCH_DCM_SVC is not set
-# CONFIG_PKG_USING_WATCH_APP_FWK is not set
-# CONFIG_PKG_USING_GUI_TEST is not set
-# CONFIG_PKG_USING_PMEM is not set
-# CONFIG_PKG_USING_LWRDP is not set
-# CONFIG_PKG_USING_MASAN is not set
-# CONFIG_PKG_USING_BSDIFF_LIB is not set
-# CONFIG_PKG_USING_PRC_DIFF is not set
-
-#
-# RT-Thread Smart
-#
-# CONFIG_PKG_USING_UKERNEL is not set
-# CONFIG_PKG_USING_TRACE_AGENT is not set
 
 #
 # Hardware Drivers Config
@@ -1060,6 +985,7 @@ CONFIG_NU_PKG_USING_DEMO=y
 # CONFIG_NU_PKG_USING_LVGL is not set
 # CONFIG_NU_PKG_USING_BMX055 is not set
 # CONFIG_NU_PKG_USING_MAX31875 is not set
+# CONFIG_NU_PKG_USING_NCT7717U is not set
 # CONFIG_NU_PKG_USING_NAU88L25 is not set
 CONFIG_NU_PKG_USING_NAU8822=y
 # CONFIG_NU_PKG_USING_DA9062 is not set
@@ -1069,3 +995,5 @@ CONFIG_NU_PKG_USING_NAU8822=y
 # CONFIG_NU_PKG_USING_TPC is not set
 # CONFIG_NU_PKG_USING_ADC_TOUCH is not set
 CONFIG_NU_PKG_USING_SPINAND=y
+CONFIG_UTEST_CMD_PREFIX="bsp.nuvoton.utest."
+CONFIG_BOARD_USE_UTEST=y

+ 0 - 29
bsp/nuvoton/nk-980iot/board/board_dev.c

@@ -254,35 +254,6 @@ static int rt_hw_esp8266_port(void)
                               (void *) esp8266);
 }
 INIT_APP_EXPORT(rt_hw_esp8266_port);
-
-static int at_wifi_set(int argc, char **argv)
-{
-    struct at_device_ssid_pwd sATDConf;
-    struct at_device *at_dev = RT_NULL;
-
-    /* If the number of arguments less than 2 */
-    if (argc != 3)
-    {
-        rt_kprintf("\n");
-        rt_kprintf("at_wifi_set <ssid> <password>\n");
-        return -1;
-    }
-
-    sATDConf.ssid     = argv[1]; //ssid
-    sATDConf.password = argv[2]; //password
-
-    if ((at_dev = at_device_get_first_initialized()) != RT_NULL)
-        at_device_control(at_dev, AT_DEVICE_CTRL_SET_WIFI_INFO, &sATDConf);
-    else
-    {
-        rt_kprintf("Can't find any initialized AT device.\n");
-    }
-
-    return 0;
-}
-#ifdef FINSH_USING_MSH
-    MSH_CMD_EXPORT(at_wifi_set, AT device wifi set ssid / password function);
-#endif
 #endif /* BOARD_USING_ESP8266  */
 
 

+ 2 - 2
bsp/nuvoton/nk-980iot/board/nu_pin_init.c

@@ -85,8 +85,8 @@ static void nu_pin_can_init(void)
 static void nu_pin_adc_init(void)
 {
 #if defined(BSP_USING_ADC_TOUCH)
-    GPIO_SetMode(PB, BIT4|BIT5|BIT6|BIT7, GPIO_MODE_INPUT);
-    GPIO_DISABLE_DIGITAL_PATH(PB, BIT4|BIT5|BIT6|BIT7);
+    GPIO_SetMode(PB, BIT4 | BIT5 | BIT6 | BIT7, GPIO_MODE_INPUT);
+    GPIO_DISABLE_DIGITAL_PATH(PB, BIT4 | BIT5 | BIT6 | BIT7);
 #endif
 }
 

+ 10 - 81
bsp/nuvoton/nk-n9h30/.config

@@ -165,7 +165,6 @@ CONFIG_RT_USING_SERIAL_V1=y
 CONFIG_RT_SERIAL_RB_BUFSZ=2048
 CONFIG_RT_USING_CAN=y
 # CONFIG_RT_CAN_USING_HDR is not set
-# CONFIG_RT_CAN_USING_CANFD is not set
 CONFIG_RT_USING_HWTIMER=y
 # CONFIG_RT_USING_CPUTIME is not set
 CONFIG_RT_USING_I2C=y
@@ -491,7 +490,6 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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
 
 #
 # XML: Extensible Markup Language
@@ -517,15 +515,10 @@ CONFIG_PKG_LVGL_PATH="/packages/multimedia/LVGL/LVGL"
 CONFIG_PKG_LVGL_THREAD_PRIO=20
 CONFIG_PKG_LVGL_THREAD_STACK_SIZE=4096
 CONFIG_PKG_LVGL_DISP_REFR_PERIOD=30
-# CONFIG_PKG_USING_LVGL_SQUARELINE is not set
 # CONFIG_PKG_LVGL_USING_EXAMPLES is not set
 CONFIG_PKG_LVGL_USING_DEMOS=y
-# CONFIG_PKG_LVGL_USING_V08020 is not set
-# CONFIG_PKG_LVGL_USING_V08030 is not set
-CONFIG_PKG_LVGL_USING_V08031=y
-# CONFIG_PKG_LVGL_USING_LATEST_VERSION is not set
-CONFIG_PKG_LVGL_VER_NUM=0x08031
-CONFIG_PKG_LVGL_VER="v8.3.1"
+CONFIG_PKG_LVGL_VER_NUM=0x99999
+CONFIG_PKG_LVGL_VER="latest"
 # CONFIG_PKG_USING_LITTLEVGL2RTT is not set
 # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
 # CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
@@ -606,7 +599,6 @@ CONFIG_PKG_LVGL_VER="v8.3.1"
 # CONFIG_PKG_USING_SNOWFLAKE is not set
 # CONFIG_PKG_USING_HASH_MATCH is not set
 # CONFIG_PKG_USING_FIRE_PID_CURVE is not set
-# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
 
 #
 # system packages
@@ -619,6 +611,14 @@ CONFIG_PKG_LVGL_VER="v8.3.1"
 # CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
 # CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set
 
+#
+# POSIX extension functions
+#
+# CONFIG_PKG_USING_POSIX_GETLINE is not set
+# CONFIG_PKG_USING_POSIX_WCWIDTH is not set
+# CONFIG_PKG_USING_POSIX_ITOA is not set
+# CONFIG_PKG_USING_POSIX_STRINGS is not set
+
 #
 # acceleration: Assembly language or algorithmic acceleration packages
 #
@@ -643,11 +643,9 @@ CONFIG_PKG_LVGL_VER="v8.3.1"
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
 # CONFIG_PKG_USING_RTDUINO is not set
-# CONFIG_PKG_USING_FREERTOS_WRAPPER 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_FLASHDB is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
@@ -689,10 +687,8 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # CONFIG_PKG_USING_REALTEK_AMEBA is not set
 # CONFIG_PKG_USING_SHT2X is not set
 # CONFIG_PKG_USING_SHT3X is not set
-# CONFIG_PKG_USING_ADT74XX is not set
 # CONFIG_PKG_USING_AS7341 is not set
 # CONFIG_PKG_USING_STM32_SDIO is not set
-# CONFIG_PKG_USING_ESP_IDF is not set
 # CONFIG_PKG_USING_ICM20608 is not set
 # CONFIG_PKG_USING_BUTTON is not set
 # CONFIG_PKG_USING_PCF8574 is not set
@@ -704,11 +700,6 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # CONFIG_PKG_USING_NRF5X_SDK is not set
 # CONFIG_PKG_USING_NRFX is not set
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
-
-#
-# Kendryte SDK
-#
-# CONFIG_PKG_USING_K210_SDK is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK is not set
 # CONFIG_PKG_USING_INFRARED is not set
 # CONFIG_PKG_USING_MULTI_INFRARED is not set
@@ -769,8 +760,6 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # CONFIG_PKG_USING_MB85RS16 is not set
 # CONFIG_PKG_USING_CW2015 is not set
 # CONFIG_PKG_USING_RFM300 is not set
-# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
-# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
 
 #
 # AI packages
@@ -846,66 +835,6 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # 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
-
-#
-# Privated Packages of RealThread
-#
-# CONFIG_PKG_USING_CODEC is not set
-# CONFIG_PKG_USING_PLAYER is not set
-# CONFIG_PKG_USING_MPLAYER is not set
-# CONFIG_PKG_USING_PERSIMMON_SRC is not set
-# CONFIG_PKG_USING_JS_PERSIMMON is not set
-# CONFIG_PKG_USING_JERRYSCRIPT_WIN32 is not set
-
-#
-# Network Utilities
-#
-# CONFIG_PKG_USING_MDNS is not set
-# CONFIG_PKG_USING_UPNP is not set
-# CONFIG_PKG_USING_WICED is not set
-# CONFIG_PKG_USING_CLOUDSDK is not set
-# CONFIG_PKG_USING_POWER_MANAGER is not set
-# CONFIG_PKG_USING_RT_OTA is not set
-# CONFIG_PKG_USING_RTINSIGHT is not set
-# CONFIG_PKG_USING_SMARTCONFIG is not set
-# CONFIG_PKG_USING_RTX is not set
-# CONFIG_RT_USING_TESTCASE is not set
-# CONFIG_PKG_USING_NGHTTP2 is not set
-# CONFIG_PKG_USING_AVS is not set
-# CONFIG_PKG_USING_ALI_LINKKIT is not set
-# CONFIG_PKG_USING_STS is not set
-# CONFIG_PKG_USING_DLMS is not set
-# CONFIG_PKG_USING_AUDIO_FRAMEWORK is not set
-# CONFIG_PKG_USING_ZBAR is not set
-# CONFIG_PKG_USING_MCF is not set
-# CONFIG_PKG_USING_URPC is not set
-# CONFIG_PKG_USING_DCM is not set
-# CONFIG_PKG_USING_EMQ is not set
-# CONFIG_PKG_USING_CFGM is not set
-# CONFIG_PKG_USING_RT_CMSIS_DAP is not set
-# CONFIG_PKG_USING_SMODULE is not set
-# CONFIG_PKG_USING_SNFD is not set
-# CONFIG_PKG_USING_UDBD is not set
-# CONFIG_PKG_USING_BENCHMARK is not set
-# CONFIG_PKG_USING_UBJSON is not set
-# CONFIG_PKG_USING_DATATYPE is not set
-# CONFIG_PKG_USING_FASTFS is not set
-# CONFIG_PKG_USING_RIL is not set
-# CONFIG_PKG_USING_WATCH_DCM_SVC is not set
-# CONFIG_PKG_USING_WATCH_APP_FWK is not set
-# CONFIG_PKG_USING_GUI_TEST is not set
-# CONFIG_PKG_USING_PMEM is not set
-# CONFIG_PKG_USING_LWRDP is not set
-# CONFIG_PKG_USING_MASAN is not set
-# CONFIG_PKG_USING_BSDIFF_LIB is not set
-# CONFIG_PKG_USING_PRC_DIFF is not set
-
-#
-# RT-Thread Smart
-#
-# CONFIG_PKG_USING_UKERNEL is not set
-# CONFIG_PKG_USING_TRACE_AGENT is not set
 
 #
 # Hardware Drivers Config

+ 6 - 78
bsp/nuvoton/nk-rtu980/.config

@@ -80,7 +80,7 @@ CONFIG_RT_USING_DEVICE=y
 CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=256
 CONFIG_RT_CONSOLE_DEVICE_NAME="uart0"
-CONFIG_RT_VER_NUM=0x40101
+CONFIG_RT_VER_NUM=0x50000
 CONFIG_ARCH_ARM=y
 # CONFIG_RT_USING_CPU_FFS is not set
 CONFIG_ARCH_ARM_ARM9=y
@@ -429,23 +429,8 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_RW007 is not set
 # CONFIG_PKG_USING_COAP is not set
 # CONFIG_PKG_USING_NOPOLL is not set
-CONFIG_PKG_USING_NETUTILS=y
-CONFIG_PKG_NETUTILS_PATH="/packages/iot/netutils"
-CONFIG_PKG_NETUTILS_TFTP=y
-CONFIG_PKG_NETUTILS_IPERF=y
-# CONFIG_PKG_NETUTILS_NETIO is not set
-CONFIG_PKG_NETUTILS_NTP=y
-CONFIG_NTP_USING_AUTO_SYNC=y
-CONFIG_NTP_AUTO_SYNC_FIRST_DELAY=30
-CONFIG_NTP_AUTO_SYNC_PERIOD=3600
-CONFIG_NETUTILS_NTP_HOSTNAME="0.tw.pool.ntp.org"
-CONFIG_NETUTILS_NTP_HOSTNAME2="1.tw.pool.ntp.org"
-CONFIG_NETUTILS_NTP_HOSTNAME3="2.tw.pool.ntp.org"
-# CONFIG_PKG_NETUTILS_TELNET is not set
-# CONFIG_PKG_NETUTILS_TCPDUMP is not set
-CONFIG_PKG_USING_NETUTILS_LATEST_VERSION=y
-CONFIG_PKG_NETUTILS_VER="latest"
-CONFIG_PKG_NETUTILS_VER_NUM=0x99999
+# CONFIG_PKG_USING_NETUTILS is not set
+# CONFIG_PKG_USING_NETUTILS_LATEST_VERSION 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
@@ -870,66 +855,6 @@ CONFIG_PKG_OPTPARSE_VER="latest"
 # 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
-
-#
-# Privated Packages of RealThread
-#
-# CONFIG_PKG_USING_CODEC is not set
-# CONFIG_PKG_USING_PLAYER is not set
-# CONFIG_PKG_USING_MPLAYER is not set
-# CONFIG_PKG_USING_PERSIMMON_SRC is not set
-# CONFIG_PKG_USING_JS_PERSIMMON is not set
-# CONFIG_PKG_USING_JERRYSCRIPT_WIN32 is not set
-
-#
-# Network Utilities
-#
-# CONFIG_PKG_USING_MDNS is not set
-# CONFIG_PKG_USING_UPNP is not set
-# CONFIG_PKG_USING_WICED is not set
-# CONFIG_PKG_USING_CLOUDSDK is not set
-# CONFIG_PKG_USING_POWER_MANAGER is not set
-# CONFIG_PKG_USING_RT_OTA is not set
-# CONFIG_PKG_USING_RTINSIGHT is not set
-# CONFIG_PKG_USING_SMARTCONFIG is not set
-# CONFIG_PKG_USING_RTX is not set
-# CONFIG_RT_USING_TESTCASE is not set
-# CONFIG_PKG_USING_NGHTTP2 is not set
-# CONFIG_PKG_USING_AVS is not set
-# CONFIG_PKG_USING_ALI_LINKKIT is not set
-# CONFIG_PKG_USING_STS is not set
-# CONFIG_PKG_USING_DLMS is not set
-# CONFIG_PKG_USING_AUDIO_FRAMEWORK is not set
-# CONFIG_PKG_USING_ZBAR is not set
-# CONFIG_PKG_USING_MCF is not set
-# CONFIG_PKG_USING_URPC is not set
-# CONFIG_PKG_USING_DCM is not set
-# CONFIG_PKG_USING_EMQ is not set
-# CONFIG_PKG_USING_CFGM is not set
-# CONFIG_PKG_USING_RT_CMSIS_DAP is not set
-# CONFIG_PKG_USING_SMODULE is not set
-# CONFIG_PKG_USING_SNFD is not set
-# CONFIG_PKG_USING_UDBD is not set
-# CONFIG_PKG_USING_BENCHMARK is not set
-# CONFIG_PKG_USING_UBJSON is not set
-# CONFIG_PKG_USING_DATATYPE is not set
-# CONFIG_PKG_USING_FASTFS is not set
-# CONFIG_PKG_USING_RIL is not set
-# CONFIG_PKG_USING_WATCH_DCM_SVC is not set
-# CONFIG_PKG_USING_WATCH_APP_FWK is not set
-# CONFIG_PKG_USING_GUI_TEST is not set
-# CONFIG_PKG_USING_PMEM is not set
-# CONFIG_PKG_USING_LWRDP is not set
-# CONFIG_PKG_USING_MASAN is not set
-# CONFIG_PKG_USING_BSDIFF_LIB is not set
-# CONFIG_PKG_USING_PRC_DIFF is not set
-
-#
-# RT-Thread Smart
-#
-# CONFIG_PKG_USING_UKERNEL is not set
-# CONFIG_PKG_USING_TRACE_AGENT is not set
 
 #
 # Hardware Drivers Config
@@ -1040,6 +965,7 @@ CONFIG_NU_PKG_USING_DEMO=y
 # CONFIG_NU_PKG_USING_LVGL is not set
 # CONFIG_NU_PKG_USING_BMX055 is not set
 # CONFIG_NU_PKG_USING_MAX31875 is not set
+# CONFIG_NU_PKG_USING_NCT7717U is not set
 # CONFIG_NU_PKG_USING_NAU88L25 is not set
 # CONFIG_NU_PKG_USING_NAU8822 is not set
 # CONFIG_NU_PKG_USING_DA9062 is not set
@@ -1049,3 +975,5 @@ CONFIG_NU_PKG_USING_DEMO=y
 # CONFIG_NU_PKG_USING_TPC is not set
 # CONFIG_NU_PKG_USING_ADC_TOUCH is not set
 # CONFIG_NU_PKG_USING_SPINAND is not set
+CONFIG_UTEST_CMD_PREFIX="bsp.nuvoton.utest."
+CONFIG_BOARD_USE_UTEST=y

+ 1174 - 0
bsp/nuvoton/numaker-iot-m467/.config

@@ -0,0 +1,1174 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# RT-Thread Configuration
+#
+
+#
+# RT-Thread Kernel
+#
+CONFIG_RT_NAME_MAX=8
+# CONFIG_RT_USING_ARCH_DATA_TYPE is not set
+# CONFIG_RT_USING_SMP is not set
+CONFIG_RT_ALIGN_SIZE=4
+# CONFIG_RT_THREAD_PRIORITY_8 is not set
+CONFIG_RT_THREAD_PRIORITY_32=y
+# CONFIG_RT_THREAD_PRIORITY_256 is not set
+CONFIG_RT_THREAD_PRIORITY_MAX=32
+CONFIG_RT_TICK_PER_SECOND=1000
+CONFIG_RT_USING_OVERFLOW_CHECK=y
+CONFIG_RT_USING_HOOK=y
+CONFIG_RT_HOOK_USING_FUNC_PTR=y
+CONFIG_RT_USING_IDLE_HOOK=y
+CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
+CONFIG_IDLE_THREAD_STACK_SIZE=1024
+# CONFIG_RT_USING_TIMER_SOFT is not set
+
+#
+# kservice optimization
+#
+# CONFIG_RT_KSERVICE_USING_STDLIB is not set
+# CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set
+# CONFIG_RT_USING_TINY_FFS is not set
+# CONFIG_RT_KPRINTF_USING_LONGLONG is not set
+CONFIG_RT_DEBUG=y
+CONFIG_RT_DEBUG_COLOR=y
+# CONFIG_RT_DEBUG_INIT_CONFIG is not set
+# CONFIG_RT_DEBUG_THREAD_CONFIG is not set
+# CONFIG_RT_DEBUG_SCHEDULER_CONFIG is not set
+# CONFIG_RT_DEBUG_IPC_CONFIG is not set
+# CONFIG_RT_DEBUG_TIMER_CONFIG is not set
+# CONFIG_RT_DEBUG_IRQ_CONFIG is not set
+# CONFIG_RT_DEBUG_MEM_CONFIG is not set
+# CONFIG_RT_DEBUG_SLAB_CONFIG is not set
+# CONFIG_RT_DEBUG_MEMHEAP_CONFIG is not set
+# CONFIG_RT_DEBUG_MODULE_CONFIG is not set
+
+#
+# Inter-Thread communication
+#
+CONFIG_RT_USING_SEMAPHORE=y
+CONFIG_RT_USING_MUTEX=y
+CONFIG_RT_USING_EVENT=y
+CONFIG_RT_USING_MAILBOX=y
+CONFIG_RT_USING_MESSAGEQUEUE=y
+CONFIG_RT_USING_SIGNALS=y
+
+#
+# Memory Management
+#
+CONFIG_RT_USING_MEMPOOL=y
+CONFIG_RT_USING_SMALL_MEM=y
+# CONFIG_RT_USING_SLAB is not set
+# CONFIG_RT_USING_MEMHEAP is not set
+CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y
+# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set
+# CONFIG_RT_USING_SLAB_AS_HEAP is not set
+# CONFIG_RT_USING_USERHEAP is not set
+# CONFIG_RT_USING_NOHEAP is not set
+# CONFIG_RT_USING_MEMTRACE is not set
+# CONFIG_RT_USING_HEAP_ISR is not set
+CONFIG_RT_USING_HEAP=y
+
+#
+# Kernel Device Object
+#
+CONFIG_RT_USING_DEVICE=y
+# CONFIG_RT_USING_DEVICE_OPS is not set
+# CONFIG_RT_USING_INTERRUPT_INFO is not set
+CONFIG_RT_USING_CONSOLE=y
+CONFIG_RT_CONSOLEBUF_SIZE=256
+CONFIG_RT_CONSOLE_DEVICE_NAME="uart0"
+CONFIG_RT_VER_NUM=0x50000
+CONFIG_ARCH_ARM=y
+CONFIG_RT_USING_CPU_FFS=y
+CONFIG_ARCH_ARM_CORTEX_M=y
+CONFIG_ARCH_ARM_CORTEX_M4=y
+# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set
+
+#
+# RT-Thread Components
+#
+CONFIG_RT_USING_COMPONENTS_INIT=y
+CONFIG_RT_USING_USER_MAIN=y
+CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048
+CONFIG_RT_MAIN_THREAD_PRIORITY=10
+CONFIG_RT_USING_LEGACY=y
+CONFIG_RT_USING_MSH=y
+CONFIG_RT_USING_FINSH=y
+CONFIG_FINSH_USING_MSH=y
+CONFIG_FINSH_THREAD_NAME="tshell"
+CONFIG_FINSH_THREAD_PRIORITY=20
+CONFIG_FINSH_THREAD_STACK_SIZE=2048
+CONFIG_FINSH_USING_HISTORY=y
+CONFIG_FINSH_HISTORY_LINES=5
+CONFIG_FINSH_USING_SYMTAB=y
+CONFIG_FINSH_CMD_SIZE=80
+CONFIG_MSH_USING_BUILT_IN_COMMANDS=y
+CONFIG_FINSH_USING_DESCRIPTION=y
+# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set
+# CONFIG_FINSH_USING_AUTH is not set
+CONFIG_FINSH_ARG_MAX=10
+CONFIG_RT_USING_DFS=y
+CONFIG_DFS_USING_POSIX=y
+CONFIG_DFS_USING_WORKDIR=y
+CONFIG_DFS_FILESYSTEMS_MAX=8
+CONFIG_DFS_FILESYSTEM_TYPES_MAX=8
+CONFIG_DFS_FD_MAX=32
+CONFIG_RT_USING_DFS_MNTTABLE=y
+CONFIG_RT_USING_DFS_ELMFAT=y
+
+#
+# elm-chan's FatFs, Generic FAT Filesystem Module
+#
+CONFIG_RT_DFS_ELM_CODE_PAGE=437
+CONFIG_RT_DFS_ELM_WORD_ACCESS=y
+# CONFIG_RT_DFS_ELM_USE_LFN_0 is not set
+# CONFIG_RT_DFS_ELM_USE_LFN_1 is not set
+# CONFIG_RT_DFS_ELM_USE_LFN_2 is not set
+CONFIG_RT_DFS_ELM_USE_LFN_3=y
+CONFIG_RT_DFS_ELM_USE_LFN=3
+CONFIG_RT_DFS_ELM_LFN_UNICODE_0=y
+# CONFIG_RT_DFS_ELM_LFN_UNICODE_1 is not set
+# CONFIG_RT_DFS_ELM_LFN_UNICODE_2 is not set
+# CONFIG_RT_DFS_ELM_LFN_UNICODE_3 is not set
+CONFIG_RT_DFS_ELM_LFN_UNICODE=0
+CONFIG_RT_DFS_ELM_MAX_LFN=255
+CONFIG_RT_DFS_ELM_DRIVES=8
+CONFIG_RT_DFS_ELM_MAX_SECTOR_SIZE=4096
+# CONFIG_RT_DFS_ELM_USE_ERASE is not set
+CONFIG_RT_DFS_ELM_REENTRANT=y
+CONFIG_RT_DFS_ELM_MUTEX_TIMEOUT=3000
+CONFIG_RT_USING_DFS_DEVFS=y
+# CONFIG_RT_USING_DFS_ROMFS is not set
+# CONFIG_RT_USING_DFS_RAMFS is not set
+# CONFIG_RT_USING_DFS_NFS is not set
+CONFIG_RT_USING_FAL=y
+CONFIG_FAL_DEBUG_CONFIG=y
+CONFIG_FAL_DEBUG=1
+CONFIG_FAL_PART_HAS_TABLE_CFG=y
+CONFIG_FAL_USING_SFUD_PORT=y
+CONFIG_FAL_USING_NOR_FLASH_DEV_NAME="norflash0"
+# CONFIG_RT_USING_LWP is not set
+
+#
+# Device Drivers
+#
+CONFIG_RT_USING_DEVICE_IPC=y
+CONFIG_RT_USING_SYSTEM_WORKQUEUE=y
+CONFIG_RT_SYSTEM_WORKQUEUE_STACKSIZE=2048
+CONFIG_RT_SYSTEM_WORKQUEUE_PRIORITY=23
+CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_USING_SERIAL_V1=y
+# CONFIG_RT_USING_SERIAL_V2 is not set
+CONFIG_RT_SERIAL_USING_DMA=y
+CONFIG_RT_SERIAL_RB_BUFSZ=512
+CONFIG_RT_USING_CAN=y
+# CONFIG_RT_CAN_USING_HDR is not set
+# CONFIG_RT_CAN_USING_CANFD is not set
+CONFIG_RT_USING_HWTIMER=y
+# CONFIG_RT_USING_CPUTIME is not set
+CONFIG_RT_USING_I2C=y
+# CONFIG_RT_I2C_DEBUG is not set
+CONFIG_RT_USING_I2C_BITOPS=y
+# CONFIG_RT_I2C_BITOPS_DEBUG is not set
+# CONFIG_RT_USING_PHY is not set
+CONFIG_RT_USING_PIN=y
+# CONFIG_RT_USING_ADC is not set
+# CONFIG_RT_USING_DAC is not set
+CONFIG_RT_USING_PWM=y
+# CONFIG_RT_USING_MTD_NOR is not set
+# CONFIG_RT_USING_MTD_NAND is not set
+# CONFIG_RT_USING_PM is not set
+CONFIG_RT_USING_RTC=y
+# CONFIG_RT_USING_ALARM is not set
+# CONFIG_RT_USING_SOFT_RTC is not set
+CONFIG_RT_USING_SDIO=y
+CONFIG_RT_SDIO_STACK_SIZE=2048
+CONFIG_RT_SDIO_THREAD_PRIORITY=15
+CONFIG_RT_MMCSD_STACK_SIZE=2048
+CONFIG_RT_MMCSD_THREAD_PREORITY=22
+CONFIG_RT_MMCSD_MAX_PARTITION=16
+CONFIG_RT_SDIO_DEBUG=y
+CONFIG_RT_USING_SPI=y
+# CONFIG_RT_USING_SPI_BITOPS is not set
+CONFIG_RT_USING_QSPI=y
+# CONFIG_RT_USING_SPI_MSD is not set
+CONFIG_RT_USING_SFUD=y
+CONFIG_RT_SFUD_USING_SFDP=y
+CONFIG_RT_SFUD_USING_FLASH_INFO_TABLE=y
+CONFIG_RT_SFUD_USING_QSPI=y
+CONFIG_RT_SFUD_SPI_MAX_HZ=50000000
+# CONFIG_RT_DEBUG_SFUD is not set
+# CONFIG_RT_USING_ENC28J60 is not set
+# CONFIG_RT_USING_SPI_WIFI is not set
+CONFIG_RT_USING_WDT=y
+CONFIG_RT_USING_AUDIO=y
+CONFIG_RT_AUDIO_REPLAY_MP_BLOCK_SIZE=4096
+CONFIG_RT_AUDIO_REPLAY_MP_BLOCK_COUNT=2
+CONFIG_RT_AUDIO_RECORD_PIPE_SIZE=2048
+CONFIG_RT_USING_SENSOR=y
+CONFIG_RT_USING_SENSOR_CMD=y
+# CONFIG_RT_USING_TOUCH is not set
+CONFIG_RT_USING_HWCRYPTO=y
+CONFIG_RT_HWCRYPTO_DEFAULT_NAME="hwcryto"
+CONFIG_RT_HWCRYPTO_IV_MAX_SIZE=16
+CONFIG_RT_HWCRYPTO_KEYBIT_MAX_SIZE=256
+# CONFIG_RT_HWCRYPTO_USING_GCM is not set
+CONFIG_RT_HWCRYPTO_USING_AES=y
+CONFIG_RT_HWCRYPTO_USING_AES_ECB=y
+CONFIG_RT_HWCRYPTO_USING_AES_CBC=y
+CONFIG_RT_HWCRYPTO_USING_AES_CFB=y
+CONFIG_RT_HWCRYPTO_USING_AES_CTR=y
+CONFIG_RT_HWCRYPTO_USING_AES_OFB=y
+CONFIG_RT_HWCRYPTO_USING_DES=y
+CONFIG_RT_HWCRYPTO_USING_DES_ECB=y
+CONFIG_RT_HWCRYPTO_USING_DES_CBC=y
+CONFIG_RT_HWCRYPTO_USING_3DES=y
+CONFIG_RT_HWCRYPTO_USING_3DES_ECB=y
+CONFIG_RT_HWCRYPTO_USING_3DES_CBC=y
+# CONFIG_RT_HWCRYPTO_USING_RC4 is not set
+# CONFIG_RT_HWCRYPTO_USING_MD5 is not set
+CONFIG_RT_HWCRYPTO_USING_SHA1=y
+CONFIG_RT_HWCRYPTO_USING_SHA2=y
+CONFIG_RT_HWCRYPTO_USING_SHA2_224=y
+CONFIG_RT_HWCRYPTO_USING_SHA2_256=y
+CONFIG_RT_HWCRYPTO_USING_SHA2_384=y
+CONFIG_RT_HWCRYPTO_USING_SHA2_512=y
+CONFIG_RT_HWCRYPTO_USING_RNG=y
+CONFIG_RT_HWCRYPTO_USING_CRC=y
+CONFIG_RT_HWCRYPTO_USING_CRC_07=y
+CONFIG_RT_HWCRYPTO_USING_CRC_8005=y
+CONFIG_RT_HWCRYPTO_USING_CRC_1021=y
+# CONFIG_RT_HWCRYPTO_USING_CRC_3D65 is not set
+CONFIG_RT_HWCRYPTO_USING_CRC_04C11DB7=y
+# CONFIG_RT_HWCRYPTO_USING_BIGNUM is not set
+# CONFIG_RT_USING_PULSE_ENCODER is not set
+CONFIG_RT_USING_INPUT_CAPTURE=y
+CONFIG_RT_INPUT_CAPTURE_RB_SIZE=100
+# CONFIG_RT_USING_WIFI is not set
+
+#
+# Using USB
+#
+CONFIG_RT_USING_USB=y
+CONFIG_RT_USING_USB_HOST=y
+CONFIG_RT_USBH_MSTORAGE=y
+CONFIG_UDISK_MOUNTPOINT="/mnt/udisk"
+# CONFIG_RT_USBH_HID is not set
+CONFIG_RT_USING_USB_DEVICE=y
+CONFIG_RT_USBD_THREAD_STACK_SZ=4096
+CONFIG_USB_VENDOR_ID=0x0FFE
+CONFIG_USB_PRODUCT_ID=0x0001
+# CONFIG_RT_USB_DEVICE_COMPOSITE is not set
+# CONFIG__RT_USB_DEVICE_NONE is not set
+# CONFIG__RT_USB_DEVICE_CDC is not set
+CONFIG__RT_USB_DEVICE_MSTORAGE=y
+# CONFIG__RT_USB_DEVICE_HID is not set
+# CONFIG__RT_USB_DEVICE_RNDIS is not set
+# CONFIG__RT_USB_DEVICE_ECM is not set
+# CONFIG__RT_USB_DEVICE_WINUSB is not set
+# CONFIG__RT_USB_DEVICE_AUDIO is not set
+CONFIG_RT_USB_DEVICE_MSTORAGE=y
+CONFIG_RT_USB_MSTORAGE_DISK_NAME="sd0"
+
+#
+# C/C++ and POSIX layer
+#
+CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
+
+#
+# POSIX (Portable Operating System Interface) layer
+#
+CONFIG_RT_USING_POSIX_FS=y
+CONFIG_RT_USING_POSIX_DEVIO=y
+# CONFIG_RT_USING_POSIX_STDIO is not set
+CONFIG_RT_USING_POSIX_POLL=y
+CONFIG_RT_USING_POSIX_SELECT=y
+CONFIG_RT_USING_POSIX_SOCKET=y
+# CONFIG_RT_USING_POSIX_TERMIOS is not set
+# CONFIG_RT_USING_POSIX_AIO is not set
+# CONFIG_RT_USING_POSIX_MMAN is not set
+# CONFIG_RT_USING_POSIX_DELAY is not set
+# CONFIG_RT_USING_POSIX_CLOCK is not set
+# CONFIG_RT_USING_POSIX_TIMER is not set
+# CONFIG_RT_USING_PTHREADS is not set
+# CONFIG_RT_USING_MODULE is not set
+
+#
+# Interprocess Communication (IPC)
+#
+# CONFIG_RT_USING_POSIX_PIPE is not set
+# CONFIG_RT_USING_POSIX_MESSAGE_QUEUE is not set
+# CONFIG_RT_USING_POSIX_MESSAGE_SEMAPHORE is not set
+
+#
+# Socket is in the 'Network' category
+#
+# CONFIG_RT_USING_CPLUSPLUS is not set
+
+#
+# Network
+#
+CONFIG_RT_USING_SAL=y
+CONFIG_SAL_INTERNET_CHECK=y
+
+#
+# Docking with protocol stacks
+#
+CONFIG_SAL_USING_LWIP=y
+CONFIG_SAL_USING_AT=y
+# CONFIG_SAL_USING_TLS is not set
+CONFIG_SAL_USING_POSIX=y
+CONFIG_RT_USING_NETDEV=y
+CONFIG_NETDEV_USING_IFCONFIG=y
+CONFIG_NETDEV_USING_PING=y
+CONFIG_NETDEV_USING_NETSTAT=y
+CONFIG_NETDEV_USING_AUTO_DEFAULT=y
+# CONFIG_NETDEV_USING_IPV6 is not set
+CONFIG_NETDEV_IPV4=1
+CONFIG_NETDEV_IPV6=0
+# CONFIG_NETDEV_IPV6_SCOPES is not set
+CONFIG_RT_USING_LWIP=y
+# CONFIG_RT_USING_LWIP_LOCAL_VERSION is not set
+# CONFIG_RT_USING_LWIP141 is not set
+# CONFIG_RT_USING_LWIP203 is not set
+CONFIG_RT_USING_LWIP212=y
+# CONFIG_RT_USING_LWIP_LATEST is not set
+CONFIG_RT_USING_LWIP_VER_NUM=0x20102
+# CONFIG_RT_USING_LWIP_IPV6 is not set
+CONFIG_RT_LWIP_MEM_ALIGNMENT=4
+CONFIG_RT_LWIP_IGMP=y
+CONFIG_RT_LWIP_ICMP=y
+# CONFIG_RT_LWIP_SNMP is not set
+CONFIG_RT_LWIP_DNS=y
+CONFIG_RT_LWIP_DHCP=y
+CONFIG_IP_SOF_BROADCAST=1
+CONFIG_IP_SOF_BROADCAST_RECV=1
+
+#
+# Static IPv4 Address
+#
+CONFIG_RT_LWIP_IPADDR="192.168.31.55"
+CONFIG_RT_LWIP_GWADDR="192.168.31.1"
+CONFIG_RT_LWIP_MSKADDR="255.255.255.0"
+CONFIG_RT_LWIP_UDP=y
+CONFIG_RT_LWIP_TCP=y
+CONFIG_RT_LWIP_RAW=y
+# CONFIG_RT_LWIP_PPP is not set
+CONFIG_RT_MEMP_NUM_NETCONN=8
+CONFIG_RT_LWIP_PBUF_NUM=64
+CONFIG_RT_LWIP_RAW_PCB_NUM=4
+CONFIG_RT_LWIP_UDP_PCB_NUM=4
+CONFIG_RT_LWIP_TCP_PCB_NUM=4
+CONFIG_RT_LWIP_TCP_SEG_NUM=64
+CONFIG_RT_LWIP_TCP_SND_BUF=8192
+CONFIG_RT_LWIP_TCP_WND=10240
+CONFIG_RT_LWIP_TCPTHREAD_PRIORITY=10
+CONFIG_RT_LWIP_TCPTHREAD_MBOX_SIZE=64
+CONFIG_RT_LWIP_TCPTHREAD_STACKSIZE=2048
+# CONFIG_LWIP_NO_RX_THREAD is not set
+# CONFIG_LWIP_NO_TX_THREAD is not set
+CONFIG_RT_LWIP_ETHTHREAD_PRIORITY=12
+CONFIG_RT_LWIP_ETHTHREAD_STACKSIZE=2048
+CONFIG_RT_LWIP_ETHTHREAD_MBOX_SIZE=64
+CONFIG_RT_LWIP_REASSEMBLY_FRAG=y
+CONFIG_LWIP_NETIF_STATUS_CALLBACK=1
+CONFIG_LWIP_NETIF_LINK_CALLBACK=1
+CONFIG_SO_REUSE=1
+CONFIG_LWIP_SO_RCVTIMEO=1
+CONFIG_LWIP_SO_SNDTIMEO=1
+CONFIG_LWIP_SO_RCVBUF=1
+CONFIG_LWIP_SO_LINGER=0
+CONFIG_RT_LWIP_NETIF_LOOPBACK=y
+CONFIG_LWIP_NETIF_LOOPBACK=1
+CONFIG_RT_LWIP_STATS=y
+# CONFIG_RT_LWIP_USING_HW_CHECKSUM is not set
+CONFIG_RT_LWIP_USING_PING=y
+# CONFIG_LWIP_USING_DHCPD is not set
+# CONFIG_RT_LWIP_DEBUG is not set
+CONFIG_RT_USING_AT=y
+# CONFIG_AT_DEBUG is not set
+# CONFIG_AT_USING_SERVER is not set
+CONFIG_AT_USING_CLIENT=y
+CONFIG_AT_CLIENT_NUM_MAX=1
+CONFIG_AT_USING_SOCKET=y
+# CONFIG_AT_USING_SOCKET_SERVER is not set
+CONFIG_AT_USING_CLI=y
+# CONFIG_AT_PRINT_RAW_CMD is not set
+CONFIG_AT_CMD_MAX_LEN=128
+CONFIG_AT_SW_VERSION_NUM=0x10301
+
+#
+# Utilities
+#
+# CONFIG_RT_USING_RYM is not set
+CONFIG_RT_USING_ULOG=y
+# CONFIG_ULOG_OUTPUT_LVL_A is not set
+# CONFIG_ULOG_OUTPUT_LVL_E is not set
+# CONFIG_ULOG_OUTPUT_LVL_W is not set
+# CONFIG_ULOG_OUTPUT_LVL_I is not set
+CONFIG_ULOG_OUTPUT_LVL_D=y
+CONFIG_ULOG_OUTPUT_LVL=7
+# CONFIG_ULOG_USING_ISR_LOG is not set
+CONFIG_ULOG_ASSERT_ENABLE=y
+CONFIG_ULOG_LINE_BUF_SIZE=128
+# CONFIG_ULOG_USING_ASYNC_OUTPUT is not set
+
+#
+# log format
+#
+# CONFIG_ULOG_OUTPUT_FLOAT is not set
+CONFIG_ULOG_USING_COLOR=y
+CONFIG_ULOG_OUTPUT_TIME=y
+# CONFIG_ULOG_TIME_USING_TIMESTAMP is not set
+CONFIG_ULOG_OUTPUT_LEVEL=y
+CONFIG_ULOG_OUTPUT_TAG=y
+# CONFIG_ULOG_OUTPUT_THREAD_NAME is not set
+CONFIG_ULOG_BACKEND_USING_CONSOLE=y
+# CONFIG_ULOG_BACKEND_USING_FILE is not set
+# CONFIG_ULOG_USING_FILTER is not set
+# CONFIG_ULOG_USING_SYSLOG is not set
+CONFIG_RT_USING_UTEST=y
+CONFIG_UTEST_THR_STACK_SIZE=4096
+CONFIG_UTEST_THR_PRIORITY=20
+# CONFIG_RT_USING_VAR_EXPORT is not set
+# CONFIG_RT_USING_RT_LINK is not set
+# CONFIG_RT_USING_VBUS is not set
+
+#
+# RT-Thread Utestcases
+#
+# CONFIG_RT_USING_UTESTCASES is not set
+
+#
+# RT-Thread online packages
+#
+
+#
+# IoT - internet of things
+#
+# CONFIG_PKG_USING_LWIP is not set
+# 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_LIBMODBUS is not set
+# CONFIG_PKG_USING_FREEMODBUS is not set
+# CONFIG_PKG_USING_NANOPB is not set
+
+#
+# Wi-Fi
+#
+
+#
+# Marvell WiFi
+#
+# CONFIG_PKG_USING_WLANMARVELL is not set
+
+#
+# Wiced WiFi
+#
+# CONFIG_PKG_USING_WLAN_WICED is not set
+# CONFIG_PKG_USING_RW007 is not set
+# CONFIG_PKG_USING_COAP is not set
+# CONFIG_PKG_USING_NOPOLL is not set
+# CONFIG_PKG_USING_NETUTILS is not set
+# CONFIG_PKG_USING_CMUX is not set
+# CONFIG_PKG_USING_PPP_DEVICE is not set
+CONFIG_PKG_USING_AT_DEVICE=y
+CONFIG_PKG_AT_DEVICE_PATH="/packages/iot/at_device"
+# CONFIG_AT_DEVICE_USING_M26 is not set
+# CONFIG_AT_DEVICE_USING_EC20 is not set
+# CONFIG_AT_DEVICE_USING_ESP32 is not set
+CONFIG_AT_DEVICE_USING_ESP8266=y
+CONFIG_AT_DEVICE_ESP8266_INIT_ASYN=y
+CONFIG_AT_DEVICE_ESP8266_SOCKET=y
+CONFIG_AT_DEVICE_ESP8266_SAMPLE=y
+# CONFIG_AT_DEVICE_ESP8266_SAMPLE_BSP_TAKEOVER is not set
+CONFIG_ESP8266_SAMPLE_WIFI_SSID="NT_ZY_BUFFALO"
+CONFIG_ESP8266_SAMPLE_WIFI_PASSWORD="12345678"
+CONFIG_ESP8266_SAMPLE_CLIENT_NAME="uart2"
+CONFIG_ESP8266_SAMPLE_RECV_BUFF_LEN=2048
+# CONFIG_AT_DEVICE_USING_RW007 is not set
+# CONFIG_AT_DEVICE_USING_SIM800C is not set
+# CONFIG_AT_DEVICE_USING_SIM76XX is not set
+# CONFIG_AT_DEVICE_USING_MW31 is not set
+# CONFIG_AT_DEVICE_USING_W60X is not set
+# CONFIG_AT_DEVICE_USING_A9G is not set
+# CONFIG_AT_DEVICE_USING_BC26 is not set
+# CONFIG_AT_DEVICE_USING_AIR720 is not set
+# CONFIG_AT_DEVICE_USING_ME3616 is not set
+# CONFIG_AT_DEVICE_USING_M6315 is not set
+# CONFIG_AT_DEVICE_USING_BC28 is not set
+# CONFIG_AT_DEVICE_USING_EC200X is not set
+# CONFIG_AT_DEVICE_USING_N21 is not set
+# CONFIG_AT_DEVICE_USING_N58 is not set
+# CONFIG_AT_DEVICE_USING_M5311 is not set
+# CONFIG_AT_DEVICE_USING_L610 is not set
+# CONFIG_AT_DEVICE_USING_N720 is not set
+# CONFIG_PKG_USING_AT_DEVICE_V204 is not set
+# CONFIG_PKG_USING_AT_DEVICE_V203 is not set
+# CONFIG_PKG_USING_AT_DEVICE_V202 is not set
+# CONFIG_PKG_USING_AT_DEVICE_V201 is not set
+# CONFIG_PKG_USING_AT_DEVICE_V200 is not set
+CONFIG_PKG_USING_AT_DEVICE_LATEST_VERSION=y
+CONFIG_PKG_AT_DEVICE_VER="latest"
+CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
+# 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_EZ_IOT_OS is not set
+# CONFIG_PKG_USING_IOTSHARP_SDK is not set
+# 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_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_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
+
+#
+# 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
+
+#
+# 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
+
+#
+# XML: Extensible Markup Language
+#
+# CONFIG_PKG_USING_SIMPLE_XML is not set
+# CONFIG_PKG_USING_EZXML is not set
+# 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
+
+#
+# multimedia packages
+#
+
+#
+# LVGL: powerful and easy-to-use embedded GUI library
+#
+# CONFIG_PKG_USING_LVGL is not set
+# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
+# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
+# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
+
+#
+# u8g2: a monochrome graphic library
+#
+# CONFIG_PKG_USING_U8G2_OFFICIAL is not set
+# CONFIG_PKG_USING_U8G2 is not set
+# 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
+
+#
+# PainterEngine: A cross-platform graphics application framework written in C language
+#
+# CONFIG_PKG_USING_PAINTERENGINE is not set
+# CONFIG_PKG_USING_PAINTERENGINE_AUX 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_PERSIMMON is not set
+
+#
+# tools packages
+#
+# CONFIG_PKG_USING_CMBACKTRACE 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_RDB is not set
+# CONFIG_PKG_USING_ULOG_EASYFLASH is not set
+# CONFIG_PKG_USING_ULOG_FILE 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_FIRE_PID_CURVE is not set
+# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
+
+#
+# system packages
+#
+
+#
+# enhanced kernel services
+#
+# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
+# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
+# CONFIG_PKG_USING_RT_VSNPRINTF_FULL 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
+
+#
+# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
+#
+# CONFIG_PKG_USING_CMSIS_5 is not set
+# CONFIG_PKG_USING_CMSIS_RTOS1 is not set
+# CONFIG_PKG_USING_CMSIS_RTOS2 is not set
+
+#
+# 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
+# CONFIG_PKG_USING_RTDUINO is not set
+# CONFIG_PKG_USING_FREERTOS_WRAPPER 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_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_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_CHERRYUSB 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
+
+#
+# peripheral libraries and drivers
+#
+CONFIG_PKG_USING_SENSORS_DRIVERS=y
+# CONFIG_PKG_USING_FINGERPRINT is not set
+# 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=y
+CONFIG_PKG_MPU6XXX_PATH="/packages/peripherals/sensors/mpu6xxx"
+# CONFIG_PKG_USING_MPU6XXX_V001 is not set
+# CONFIG_PKG_USING_MPU6XXX_V100 is not set
+# CONFIG_PKG_USING_MPU6XXX_V110 is not set
+CONFIG_PKG_USING_MPU6XXX_LATEST_VERSION=y
+CONFIG_PKG_MPU6XXX_VER="latest"
+CONFIG_PKG_USING_MPU6XXX_ACCE=y
+CONFIG_PKG_USING_MPU6XXX_GYRO=y
+# CONFIG_PKG_USING_MPU6XXX_MAG 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_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_MLX90393 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_REALTEK_AMEBA is not set
+# CONFIG_PKG_USING_SHT2X is not set
+# CONFIG_PKG_USING_SHT3X is not set
+# CONFIG_PKG_USING_ADT74XX is not set
+# CONFIG_PKG_USING_AS7341 is not set
+# CONFIG_PKG_USING_STM32_SDIO is not set
+# CONFIG_PKG_USING_ESP_IDF is not set
+# CONFIG_PKG_USING_ICM20608 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_NRF5X_SDK is not set
+# CONFIG_PKG_USING_NRFX is not set
+# CONFIG_PKG_USING_WM_LIBRARIES is not set
+
+#
+# Kendryte SDK
+#
+# CONFIG_PKG_USING_K210_SDK is not set
+# CONFIG_PKG_USING_KENDRYTE_SDK 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_AD7746 is not set
+# CONFIG_PKG_USING_PCA9685 is not set
+# CONFIG_PKG_USING_I2C_TOOLS is not set
+# CONFIG_PKG_USING_NRF24L01 is not set
+# CONFIG_PKG_USING_TOUCH_DRIVERS is not set
+# CONFIG_PKG_USING_MAX17048 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_EMBARC_BSP 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_PAJ7620 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_STM32WB55_SDK 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_BLUETRUM_SDK 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_BL_MCU_SDK is not set
+# CONFIG_PKG_USING_SOFT_SERIAL is not set
+# CONFIG_PKG_USING_MB85RS16 is not set
+# CONFIG_PKG_USING_CW2015 is not set
+# CONFIG_PKG_USING_RFM300 is not set
+# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
+# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
+
+#
+# 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
+
+#
+# miscellaneous packages
+#
+
+#
+# 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
+
+#
+# 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_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_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_DIGITALCTRL 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_UKAL is not set
+# CONFIG_PKG_USING_CRCLIB 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
+
+#
+# Hardware Drivers Config
+#
+
+#
+# On-chip Peripheral Drivers
+#
+CONFIG_SOC_SERIES_M460=y
+CONFIG_BSP_USE_STDDRIVER_SOURCE=y
+CONFIG_BSP_USING_PDMA=y
+CONFIG_NU_PDMA_MEMFUN_ACTOR_MAX=2
+CONFIG_NU_PDMA_SGTBL_POOL_SIZE=32
+CONFIG_BSP_USING_FMC=y
+CONFIG_BSP_USING_GPIO=y
+CONFIG_BSP_USING_EMAC=y
+CONFIG_BSP_USING_RTC=y
+# CONFIG_NU_RTC_SUPPORT_IO_RW is not set
+CONFIG_NU_RTC_SUPPORT_MSH_CMD=y
+# CONFIG_BSP_USING_CCAP is not set
+# CONFIG_BSP_USING_DAC is not set
+# CONFIG_BSP_USING_EADC is not set
+CONFIG_BSP_USING_TMR=y
+CONFIG_BSP_USING_TIMER=y
+CONFIG_BSP_USING_TPWM=y
+CONFIG_BSP_USING_TIMER_CAPTURE=y
+CONFIG_BSP_USING_TMR0=y
+CONFIG_BSP_USING_TIMER0=y
+# CONFIG_BSP_USING_TPWM0 is not set
+# CONFIG_BSP_USING_TIMER0_CAPTURE is not set
+CONFIG_BSP_USING_TMR1=y
+# CONFIG_BSP_USING_TIMER1 is not set
+CONFIG_BSP_USING_TPWM1=y
+# CONFIG_BSP_USING_TIMER1_CAPTURE is not set
+CONFIG_BSP_USING_TMR2=y
+# CONFIG_BSP_USING_TIMER2 is not set
+# CONFIG_BSP_USING_TPWM2 is not set
+CONFIG_BSP_USING_TIMER2_CAPTURE=y
+CONFIG_BSP_USING_TMR3=y
+CONFIG_BSP_USING_TIMER3=y
+# CONFIG_BSP_USING_TPWM3 is not set
+# CONFIG_BSP_USING_TIMER3_CAPTURE is not set
+CONFIG_BSP_USING_UART=y
+CONFIG_BSP_USING_UART0=y
+# CONFIG_BSP_USING_UART0_TX_DMA is not set
+# CONFIG_BSP_USING_UART0_RX_DMA is not set
+CONFIG_BSP_USING_UART1=y
+CONFIG_BSP_USING_UART1_TX_DMA=y
+CONFIG_BSP_USING_UART1_RX_DMA=y
+CONFIG_BSP_USING_UART2=y
+CONFIG_BSP_USING_UART2_TX_DMA=y
+CONFIG_BSP_USING_UART2_RX_DMA=y
+# CONFIG_BSP_USING_UART3 is not set
+# CONFIG_BSP_USING_UART4 is not set
+# CONFIG_BSP_USING_UART5 is not set
+# CONFIG_BSP_USING_UART6 is not set
+# CONFIG_BSP_USING_UART7 is not set
+# CONFIG_BSP_USING_UART8 is not set
+# CONFIG_BSP_USING_UART9 is not set
+CONFIG_BSP_USING_I2C=y
+# CONFIG_BSP_USING_I2C0 is not set
+# CONFIG_BSP_USING_I2C1 is not set
+CONFIG_BSP_USING_I2C2=y
+# CONFIG_BSP_USING_I2C3 is not set
+# CONFIG_BSP_USING_I2C4 is not set
+# CONFIG_BSP_USING_USCI is not set
+CONFIG_BSP_USING_SDH=y
+CONFIG_BSP_USING_SDH0=y
+# CONFIG_BSP_USING_SDH1 is not set
+CONFIG_BSP_USING_CANFD=y
+CONFIG_BSP_USING_CANFD0=y
+# CONFIG_BSP_USING_CANFD1 is not set
+# CONFIG_BSP_USING_CANFD2 is not set
+# CONFIG_BSP_USING_CANFD3 is not set
+# CONFIG_BSP_USING_BPWM is not set
+# CONFIG_BSP_USING_EPWM is not set
+CONFIG_BSP_USING_SPI=y
+CONFIG_BSP_USING_SPI_PDMA=y
+# CONFIG_BSP_USING_SPII2S is not set
+CONFIG_BSP_USING_SPI0_NONE=y
+# CONFIG_BSP_USING_SPI0 is not set
+# CONFIG_BSP_USING_SPII2S0 is not set
+CONFIG_BSP_USING_SPI1_NONE=y
+# CONFIG_BSP_USING_SPI1 is not set
+# CONFIG_BSP_USING_SPII2S1 is not set
+# CONFIG_BSP_USING_SPI2_NONE is not set
+CONFIG_BSP_USING_SPI2=y
+# CONFIG_BSP_USING_SPII2S2 is not set
+CONFIG_BSP_USING_SPI2_PDMA=y
+CONFIG_BSP_USING_SPI3_NONE=y
+# CONFIG_BSP_USING_SPI3 is not set
+# CONFIG_BSP_USING_SPII2S3 is not set
+CONFIG_BSP_USING_SPI4_NONE=y
+# CONFIG_BSP_USING_SPI4 is not set
+# CONFIG_BSP_USING_SPII2S4 is not set
+CONFIG_BSP_USING_SPI5_NONE=y
+# CONFIG_BSP_USING_SPI5 is not set
+# CONFIG_BSP_USING_SPII2S5 is not set
+CONFIG_BSP_USING_SPI6_NONE=y
+# CONFIG_BSP_USING_SPI6 is not set
+# CONFIG_BSP_USING_SPII2S6 is not set
+CONFIG_BSP_USING_SPI7_NONE=y
+# CONFIG_BSP_USING_SPI7 is not set
+# CONFIG_BSP_USING_SPII2S7 is not set
+CONFIG_BSP_USING_SPI8_NONE=y
+# CONFIG_BSP_USING_SPI8 is not set
+# CONFIG_BSP_USING_SPII2S8 is not set
+CONFIG_BSP_USING_SPI9_NONE=y
+# CONFIG_BSP_USING_SPI9 is not set
+# CONFIG_BSP_USING_SPII2S9 is not set
+CONFIG_BSP_USING_SPI10_NONE=y
+# CONFIG_BSP_USING_SPI10 is not set
+# CONFIG_BSP_USING_SPII2S10 is not set
+# CONFIG_BSP_USING_I2S is not set
+CONFIG_BSP_USING_QSPI=y
+CONFIG_BSP_USING_QSPI0=y
+# CONFIG_BSP_USING_QSPI0_PDMA is not set
+# CONFIG_BSP_USING_QSPI1 is not set
+# CONFIG_BSP_USING_SCUART is not set
+# CONFIG_BSP_USING_ECAP is not set
+# CONFIG_BSP_USING_EQEI is not set
+CONFIG_BSP_USING_CRYPTO=y
+# CONFIG_NU_PRNG_USE_SEED is not set
+CONFIG_BSP_USING_TRNG=y
+CONFIG_BSP_USING_CRC=y
+CONFIG_NU_CRC_USE_PDMA=y
+# CONFIG_BSP_USING_SOFT_I2C is not set
+CONFIG_BSP_USING_WDT=y
+# CONFIG_BSP_USING_EBI is not set
+# CONFIG_BSP_USING_HBI is not set
+CONFIG_BSP_USING_USBD=y
+# CONFIG_BSP_USING_HSUSBD is not set
+# CONFIG_BSP_USING_USBH is not set
+CONFIG_BSP_USING_HSUSBH=y
+CONFIG_NU_USBHOST_HUB_POLLING_INTERVAL=100
+# CONFIG_BSP_USING_HSOTG is not set
+
+#
+# On-board Peripheral Drivers
+#
+CONFIG_BSP_USING_NULINKME=y
+CONFIG_BOARD_USING_RTL8201FI=y
+CONFIG_BOARD_USING_ESP8266=y
+CONFIG_BOARD_USING_STORAGE_SDCARD=y
+CONFIG_BOARD_USING_STORAGE_SPIFLASH=y
+CONFIG_BOARD_USING_CANFD0=y
+CONFIG_BOARD_USING_NCT7717U=y
+CONFIG_BOARD_USING_MPU6500=y
+CONFIG_BOARD_USING_USB_D_H=y
+# CONFIG_BOARD_USING_HSUSBD is not set
+# CONFIG_BOARD_USING_HSUSBD_USBH is not set
+# CONFIG_BOARD_USING_HSUSBH is not set
+CONFIG_BOARD_USING_HSUSBH_USBD=y
+# CONFIG_BOARD_USING_HSOTG is not set
+
+#
+# Board extended module drivers
+#
+# CONFIG_BOARD_USING_LCD_ILI9341 is not set
+
+#
+# Nuvoton Packages Config
+#
+CONFIG_NU_PKG_USING_UTILS=y
+CONFIG_NU_PKG_USING_DEMO=y
+# CONFIG_NU_PKG_USING_LVGL is not set
+# CONFIG_NU_PKG_USING_BMX055 is not set
+# CONFIG_NU_PKG_USING_MAX31875 is not set
+CONFIG_NU_PKG_USING_NCT7717U=y
+# CONFIG_NU_PKG_USING_NAU88L25 is not set
+# CONFIG_NU_PKG_USING_NAU8822 is not set
+# CONFIG_NU_PKG_USING_DA9062 is not set
+# CONFIG_NU_PKG_USING_ILI9341 is not set
+# CONFIG_NU_PKG_USING_SSD1963 is not set
+# CONFIG_NU_PKG_USING_FSA506 is not set
+# CONFIG_NU_PKG_USING_TPC is not set
+# CONFIG_NU_PKG_USING_ADC_TOUCH is not set
+# CONFIG_NU_PKG_USING_SPINAND is not set

+ 23 - 0
bsp/nuvoton/numaker-iot-m467/Kconfig

@@ -0,0 +1,23 @@
+mainmenu "RT-Thread Configuration"
+
+config BSP_DIR
+    string
+    option env="BSP_ROOT"
+    default "."
+
+config RTT_DIR
+    string
+    option env="RTT_ROOT"
+    default "../../.."
+    
+# you can change the RTT_ROOT default "../../.." to your rtthread_root,
+# example : default "F:/git_repositories/rt-thread"
+
+config PKGS_DIR
+    string
+    option env="PKGS_ROOT"
+    default "packages"
+
+source "$RTT_DIR/Kconfig"
+source "$PKGS_DIR/Kconfig"
+source "$BSP_DIR/board/Kconfig"

+ 100 - 0
bsp/nuvoton/numaker-iot-m467/README.md

@@ -0,0 +1,100 @@
+# NuMaker-IoT-M467
+
+## 1. Introduction
+
+NuMaker-IoT-M467 provides multiple networking, interfaces, and flexible extended data storage. Whether you need a sensor node or a light-weight gateway, the NuMaker-IoT-M467 is an ideal choice for IoT applications.
+
+The M467HJ target board is based on NuMicro M467HJHAN. For the development flexibility, the M467HJ target board provides the extension connectors, the Arduino UNO, mikroBUS compatible headers and the capability of adopting multiple power supplies.
+
+The NuMaker-IoT-M467 is an evaluation board for Nuvoton NuMicro M467HJ microcontrollers. The NuMaker-IoT-M467 consists of two parts: an M467HJ target board and an on-board Nu-Link2-Me debugger and programmer. The NuMaker-IoT-M467 is designed for project evaluation, prototype development and validation with power consumption monitoring function.
+
+![NuMaker-IoT-M467](./figures/NuMaker-IoT-M467-V1_F.png)
+
+### 1.1 MCU specification
+
+|  | Features |
+| -- | -- |
+| MCU | M467HJHAN |
+| Operation frequency | 200 MHz |
+| embedded Flash size | 1 MB, Dual Bank |
+| SRAM size | 512 kB |
+| Crypto engine |  TRNG, PRNG, AES, SHA/HMAC, RSA, and ECC crypto accelerator |
+| RMII interface | Support 10/100 Mbps Ethernet |
+
+### 1.2 Interface
+
+| Interface |
+| -- |
+| An Arduino UNO compatible extension connector |
+| Two mikroBUS compatible extension connector |
+| RJ45 Ethernet port |
+| USB 1.1/2.0 OTG ports |
+| A microSD slot |
+| A CAN FD communication port |
+| Debug through SWD interface |
+
+### 1.3 On-board devices
+
+| Device | Description | Driver supporting status |
+| -- | -- | -- |
+| SPI flash | 32Mb, W25Q32 | Supported |
+| Wi-Fi | ESP8266 | Supported |
+| Ethernet PHY | RTL8201F | Supported |
+| Thermal Sensor | NCT7717U | Supported |
+| 6-axis MotionTracking Sensor | MPU6500 | Supported |
+
+### 1.4 Board extended module
+
+| Device | Description | Driver supporting status |
+| -- | -- | -- |
+| LCD Panel(NuTFT V1.2) | ILI9341(over spi2) | Supported |
+| Touch screen | ADC S/W touch(over eadc0) | Supported |
+
+## 2. Supported compiler
+
+Support GCC, MDK5, IAR IDE/compilers. More information of these compiler version as following:
+
+| IDE/Compiler  | Tested version            |
+| ---------- | ---------------------------- |
+| MDK5       | 5.26.2                       |
+| IAR        | 8.2                          |
+| GCC        | GCC 5.4.1 20160919 (release) |
+
+Notice: Please install Nu-Link_Keil_Driver or Nu-Link_IAR_Driver for development.
+
+## 3. Program firmware
+
+### Step 1
+
+At first, you need to configure switch on the NuMaker-IoT-M467 board. Set the No.1/2 switches to ‘ON’ position. After the configuration is done, connect the NuMaker-IoT-M467 board and your computer using the USB Micro cable. After that, window manager will show a ‘NuMicro MCU’ virtual disk. Finally, you will use this virtual disk to burn firmware.
+
+![NuLinkMe2_SwitchSetting](./figures/NuLinkMe_SwitchSetting.png)
+
+![NuMicro MCU](./figures/NuMicro_MCU_Disk.png)
+
+### Step 2
+
+A simple firmware burning method is that you can drag and drop the binary image file to NuMicro MCU virtual disk or copy the binary file to NuMicro MCU disk to burn firmware.
+
+![Sendto](./figures/Sendto.png)
+
+## 4. Test
+
+You can use Tera Term terminate emulator (or other software) to type commands of RTT. All parameters of serial communication are shown in below image. Here, you can find out the corresponding port number of Nuvoton Virtual Com Port in window device manager.
+
+![Serial settings](./figures/SerialSetting.png)
+
+## 5. Purchase
+
+* [Nuvoton Direct][1]
+
+## 6. Resources
+
+* [Download Board User Manual][2]
+* [Download MCU TRM][3]
+* [Download MCU Datasheet][4]
+
+  [1]: https://direct.nuvoton.com/en/numaker-iot-m467
+  [2]: https://Coming_soon
+  [3]: https://www.nuvoton.com/resource-download.jsp?tp_GUID=DA05-M460
+  [4]: https://www.nuvoton.com/resource-download.jsp?tp_GUID=DA00-M460

+ 14 - 0
bsp/nuvoton/numaker-iot-m467/SConscript

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

+ 59 - 0
bsp/nuvoton/numaker-iot-m467/SConstruct

@@ -0,0 +1,59 @@
+import os
+import sys
+import rtconfig
+
+if os.getenv('RTT_ROOT'):
+    RTT_ROOT = os.getenv('RTT_ROOT')
+else:
+    RTT_ROOT = os.path.normpath(os.getcwd() + '/../../..')
+
+sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
+try:
+    from building import *
+except:
+    print('Cannot found RT-Thread root directory, please check RTT_ROOT')
+    print(RTT_ROOT)
+    exit(-1)
+
+TARGET = 'rtthread.' + rtconfig.TARGET_EXT
+
+DefaultEnvironment(tools=[])
+env = Environment(tools = ['mingw'],
+    AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
+    CC = rtconfig.CC, CFLAGS = rtconfig.CFLAGS,
+    AR = rtconfig.AR, ARFLAGS = '-rc',
+    LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS)
+env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
+
+if rtconfig.PLATFORM in ['iccarm']:
+    env.Replace(CCCOM = ['$CC $CFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -o $TARGET $SOURCES'])
+    env.Replace(ARFLAGS = [''])
+    env.Replace(LINKCOM = env["LINKCOM"] + ' --map rt-thread.map')
+
+Export('RTT_ROOT')
+Export('rtconfig')
+
+SDK_ROOT = os.path.abspath('./')
+
+if os.path.exists(SDK_ROOT + '/libraries'):
+    libraries_path_prefix = SDK_ROOT + '/libraries'
+else:
+    libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries'
+
+SDK_LIB = libraries_path_prefix
+Export('SDK_LIB')
+
+# prepare building environment
+objs = PrepareBuilding(env, RTT_ROOT, has_libcpu=False)
+
+nuvoton_library = 'm460'
+rtconfig.BSP_LIBRARY_TYPE = nuvoton_library
+
+# include libraries
+objs.extend(SConscript(os.path.join(libraries_path_prefix, nuvoton_library, 'SConscript')))
+
+# include nu_pkgs
+objs.extend(SConscript(os.path.join(libraries_path_prefix, 'nu_packages', 'SConscript')))
+
+# make a building
+DoBuilding(TARGET, objs)

+ 21 - 0
bsp/nuvoton/numaker-iot-m467/applications/SConscript

@@ -0,0 +1,21 @@
+# RT-Thread building script for component
+
+from building import *
+
+cwd = GetCurrentDir()
+objs = []
+list = os.listdir(cwd)
+for d in list:
+    path = os.path.join(cwd, d)
+    if os.path.isfile(os.path.join(path, 'SConscript')):
+        objs = objs + SConscript(os.path.join(d, 'SConscript'))
+
+src = Glob('*.c') + Glob('*.cpp')
+CPPPATH = [cwd, str(Dir('#'))]
+
+group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH)
+
+objs = objs + group
+
+Return('objs')
+

+ 10 - 0
bsp/nuvoton/numaker-iot-m467/applications/lvgl/SConscript

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

+ 38 - 0
bsp/nuvoton/numaker-iot-m467/applications/lvgl/lv_conf.h

@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2006-2022, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author        Notes
+ * 2022-2-17      Wayne         First version
+ */
+
+#ifndef LV_CONF_H
+#define LV_CONF_H
+
+#include "rtconfig.h"
+
+#define LV_COLOR_DEPTH                  BSP_LCD_BPP
+#define LV_HOR_RES_MAX                  BSP_LCD_WIDTH
+#define LV_VER_RES_MAX                  BSP_LCD_HEIGHT
+
+#define LV_FONT_MONTSERRAT_12           1
+#define LV_FONT_MONTSERRAT_16           1
+#define LV_USE_PERF_MONITOR             1
+//#define CONFIG_LV_LOG_LEVEL LV_LOG_LEVEL_TRACE
+
+//#define LV_USE_DEMO_RTT_MUSIC         1
+#if LV_USE_DEMO_RTT_MUSIC
+    #define LV_COLOR_SCREEN_TRANSP        1
+    #define LV_DEMO_RTT_MUSIC_AUTO_PLAY   1
+
+    #define LV_USE_DEMO_MUSIC             1
+    #define LV_DEMO_MUSIC_AUTO_PLAY       1
+#endif
+
+/* Please comment LV_USE_DEMO_RTT_MUSIC declaration before un-comment below */
+#define LV_USE_DEMO_WIDGETS         1
+//#define LV_USE_DEMO_BENCHMARK       1
+
+#endif

+ 32 - 0
bsp/nuvoton/numaker-iot-m467/applications/lvgl/lv_demo.c

@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2006-2022, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author        Notes
+ * 2022-6-1       Wayne         First version
+ */
+
+#include <lvgl.h>
+
+void lv_user_gui_init(void)
+{
+    /* display demo; you may replace with your LVGL application at here and disable related definitions. */
+
+#if LV_USE_DEMO_BENCHMARK
+    extern void lv_demo_benchmark(void);
+    lv_demo_benchmark();
+#endif
+
+#if LV_USE_DEMO_WIDGETS
+    extern void lv_demo_widgets(void);
+    lv_demo_widgets();
+#endif
+
+#if LV_USE_DEMO_MUSIC || LV_USE_DEMO_RTT_MUSIC
+    extern void lv_demo_music(void);
+    lv_demo_music();
+#endif
+
+}

+ 99 - 0
bsp/nuvoton/numaker-iot-m467/applications/lvgl/lv_port_disp.c

@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2006-2022, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2021-12-17     Wayne        The first version
+ */
+#include <lvgl.h>
+
+#define LOG_TAG             "lvgl.disp"
+#define DBG_ENABLE
+#define DBG_SECTION_NAME   LOG_TAG
+#define DBG_LEVEL DBG_ERROR
+#define DBG_COLOR
+#include <rtdbg.h>
+
+/*A static or global variable to store the buffers*/
+static lv_disp_draw_buf_t disp_buf;
+static lv_disp_drv_t disp_drv;  /*Descriptor of a display driver*/
+
+static rt_device_t lcd_device = 0;
+static struct rt_device_graphic_info info;
+
+static void lcd_fb_flush(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p)
+{
+    /* Rendering */
+    struct rt_device_rect_info rect;
+
+    rect.x = area->x1;
+    rect.y = area->y1;
+    rect.width = area->x2 - area->x1 + 1;
+    rect.height = area->y2 - area->y1 + 1;
+
+    rt_device_control(lcd_device, RTGRAPHIC_CTRL_RECT_UPDATE, &rect);
+    lv_disp_flush_ready(disp_drv);
+}
+
+void lcd_perf_monitor(struct _lv_disp_drv_t *disp_drv, uint32_t time, uint32_t px)
+{
+    rt_kprintf("Elapsed: %dms, Pixel: %d, Bytes:%d\n", time, px, px * sizeof(lv_color_t));
+}
+
+void lv_port_disp_init(void)
+{
+    rt_err_t result;
+    void *buf1 = RT_NULL;
+
+    lcd_device = rt_device_find("lcd");
+    if (lcd_device == 0)
+    {
+        LOG_E("error!");
+        return;
+    }
+
+    /* get framebuffer address */
+    result = rt_device_control(lcd_device, RTGRAPHIC_CTRL_GET_INFO, &info);
+    if (result != RT_EOK && info.framebuffer == RT_NULL)
+    {
+        LOG_E("error!");
+        /* get device information failed */
+        return;
+    }
+
+    RT_ASSERT(info.bits_per_pixel == 8 || info.bits_per_pixel == 16 ||
+              info.bits_per_pixel == 24 || info.bits_per_pixel == 32);
+
+    buf1 = (void *)info.framebuffer;
+    rt_kprintf("LVGL: Use one buffers - buf1@%08x, size: %d bytes\n", buf1, info.smem_len);
+
+    /*Initialize `disp_buf` with the buffer(s).*/
+    lv_disp_draw_buf_init(&disp_buf, buf1, RT_NULL, info.smem_len / (info.bits_per_pixel / 8));
+
+    result = rt_device_open(lcd_device, 0);
+    if (result != RT_EOK)
+    {
+        LOG_E("error!");
+        return;
+    }
+
+    lv_disp_drv_init(&disp_drv); /*Basic initialization*/
+
+    /*Set the resolution of the display*/
+    disp_drv.hor_res = info.width;
+    disp_drv.ver_res = info.height;
+
+    /*Set a display buffer*/
+    disp_drv.draw_buf = &disp_buf;
+
+    /*Write the internal buffer (draw_buf) to the display*/
+    disp_drv.flush_cb = lcd_fb_flush;
+
+    /* Called after every refresh cycle to tell the rendering and flushing time + the number of flushed pixels */
+    //disp_drv.monitor_cb = lcd_perf_monitor;
+
+    /*Finally register the driver*/
+    lv_disp_drv_register(&disp_drv);
+}

+ 23 - 0
bsp/nuvoton/numaker-iot-m467/applications/lvgl/lv_port_disp.h

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

+ 54 - 0
bsp/nuvoton/numaker-iot-m467/applications/lvgl/lv_port_indev.c

@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2006-2022, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2021-10-18     Meco Man     The first version
+ * 2021-12-17     Wayne        Add input event
+ */
+#include <lvgl.h>
+#include <stdbool.h>
+#include <rtdevice.h>
+#include "touch.h"
+
+static lv_indev_state_t last_state = LV_INDEV_STATE_REL;
+static rt_int16_t last_x = 0;
+static rt_int16_t last_y = 0;
+
+static void input_read(lv_indev_drv_t *indev_drv, lv_indev_data_t *data)
+{
+    data->point.x = last_x;
+    data->point.y = last_y;
+    data->state = last_state;
+}
+
+void nu_touch_inputevent_cb(rt_int16_t x, rt_int16_t y, rt_uint8_t state)
+{
+    switch (state)
+    {
+    case RT_TOUCH_EVENT_UP:
+        last_state = LV_INDEV_STATE_RELEASED;
+        break;
+    case RT_TOUCH_EVENT_MOVE:
+    case RT_TOUCH_EVENT_DOWN:
+        last_x = x;
+        last_y = y;
+        last_state = LV_INDEV_STATE_PRESSED;
+        break;
+    }
+}
+
+void lv_port_indev_init(void)
+{
+    static lv_indev_drv_t indev_drv;
+
+    /* Basic initialization */
+    lv_indev_drv_init(&indev_drv);
+    indev_drv.type = LV_INDEV_TYPE_POINTER;
+    indev_drv.read_cb = input_read;
+
+    /* Register the driver in LVGL and save the created input device object */
+    lv_indev_drv_register(&indev_drv);
+}

+ 28 - 0
bsp/nuvoton/numaker-iot-m467/applications/lvgl/lv_port_indev.h

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

+ 44 - 0
bsp/nuvoton/numaker-iot-m467/applications/main.c

@@ -0,0 +1,44 @@
+/**************************************************************************//**
+* @copyright (C) 2019 Nuvoton Technology Corp. All rights reserved.
+*
+* SPDX-License-Identifier: Apache-2.0
+*
+* Change Logs:
+* Date            Author       Notes
+* 2020-1-16       Wayne        First version
+*
+******************************************************************************/
+
+#include <rtconfig.h>
+#include <rtdevice.h>
+#include <drv_gpio.h>
+
+/* defined the LEDR pin: PH4 */
+#define LEDR   NU_GET_PININDEX(NU_PH, 4)
+
+/* defined the LEDG pin: PH6 */
+#define LEDG   NU_GET_PININDEX(NU_PH, 6)
+
+int main(int argc, char **argv)
+{
+#if defined(RT_USING_PIN)
+
+    int counter = 0;
+
+    /* set pin mode to output */
+    rt_pin_mode(LEDR, PIN_MODE_OUTPUT);
+    rt_pin_mode(LEDG, PIN_MODE_OUTPUT);
+
+    while (counter++ < 10)
+    {
+        rt_pin_write(LEDR, PIN_HIGH);
+        rt_pin_write(LEDG, PIN_LOW);
+        rt_thread_mdelay(500);
+        rt_pin_write(LEDR, PIN_LOW);
+        rt_pin_write(LEDG, PIN_HIGH);
+        rt_thread_mdelay(500);
+    }
+
+#endif
+    return 0;
+}

+ 172 - 0
bsp/nuvoton/numaker-iot-m467/applications/mnt.c

@@ -0,0 +1,172 @@
+/**************************************************************************//**
+*
+* @copyright (C) 2019 Nuvoton Technology Corp. All rights reserved.
+*
+* SPDX-License-Identifier: Apache-2.0
+*
+* Change Logs:
+* Date            Author       Notes
+* 2022-3-12       Wayne        First version
+*
+******************************************************************************/
+
+#include <rtthread.h>
+
+#define LOG_TAG         "mnt"
+#define DBG_ENABLE
+#define DBG_SECTION_NAME "mnt"
+#define DBG_LEVEL DBG_ERROR
+#define DBG_COLOR
+#include <rtdbg.h>
+
+#include <dfs_fs.h>
+#include <dfs_file.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <sys/stat.h>
+#include <sys/statfs.h>
+
+#if defined(RT_USING_FAL)
+    #include <fal.h>
+#endif
+
+#if defined(BOARD_USING_STORAGE_SPIFLASH)
+    #define PARTITION_NAME_FILESYSTEM "filesystem"
+    #define MOUNT_POINT_SPIFLASH0 "/"
+#endif
+
+#ifdef RT_USING_DFS_MNTTABLE
+
+/*
+const char   *device_name;
+const char   *path;
+const char   *filesystemtype;
+unsigned long rwflag;
+const void   *data;
+*/
+
+const struct dfs_mount_tbl mount_table[] =
+{
+    { "sd0", "/mnt/sd0", "elm", 0, RT_NULL },
+    { "sd0p0", "/mnt/sd0p0", "elm", 0, RT_NULL },
+    { "sd0p1", "/mnt/sd0p1", "elm", 0, RT_NULL },
+    { "sd1", "/mnt/sd1", "elm", 0, RT_NULL },
+    { "sd1p0", "/mnt/sd1p0", "elm", 0, RT_NULL },
+    { "sd1p1", "/mnt/sd1p1", "elm", 0, RT_NULL },
+    {0},
+};
+#endif
+
+/* Recursive mkdir */
+#if defined(RT_USBH_MSTORAGE) && defined(UDISK_MOUNTPOINT)
+static int mkdir_p(const char *dir, const mode_t mode)
+{
+    int ret = -1;
+    char *tmp = NULL;
+    char *p = NULL;
+    struct stat sb;
+    rt_size_t len;
+
+    if (!dir)
+        goto exit_mkdir_p;
+
+    /* Copy path */
+    /* Get the string length */
+    len = strlen(dir);
+    tmp = rt_strdup(dir);
+
+    /* Remove trailing slash */
+    if (tmp[len - 1] == '/')
+    {
+        tmp[len - 1] = '\0';
+        len--;
+    }
+
+    /* check if path exists and is a directory */
+    if (stat(tmp, &sb) == 0)
+    {
+        if (S_ISDIR(sb.st_mode))
+        {
+            ret = 0;
+            goto exit_mkdir_p;
+        }
+    }
+
+    /* Recursive mkdir */
+    for (p = tmp + 1; p - tmp <= len; p++)
+    {
+        if ((*p == '/') || (p - tmp == len))
+        {
+            *p = 0;
+
+            /* Test path */
+            if (stat(tmp, &sb) != 0)
+            {
+                /* Path does not exist - create directory */
+                if (mkdir(tmp, mode) < 0)
+                {
+                    goto exit_mkdir_p;
+                }
+            }
+            else if (!S_ISDIR(sb.st_mode))
+            {
+                /* Not a directory */
+                goto exit_mkdir_p;
+            }
+            if (p - tmp != len)
+                *p = '/';
+        }
+    }
+
+    ret = 0;
+
+exit_mkdir_p:
+
+    if (tmp)
+        rt_free(tmp);
+
+    return ret;
+}
+#endif
+
+#if defined(BOARD_USING_STORAGE_SPIFLASH)
+int mnt_init_spiflash0(void)
+{
+#if defined(RT_USING_FAL)
+    extern int fal_init_check(void);
+    if (!fal_init_check())
+        fal_init();
+#endif
+    struct rt_device *psNorFlash = fal_blk_device_create(PARTITION_NAME_FILESYSTEM);
+    if (!psNorFlash)
+    {
+        rt_kprintf("Failed to create block device for %s.\n", PARTITION_NAME_FILESYSTEM);
+        goto exit_mnt_init_spiflash0;
+    }
+    else if (dfs_mount(psNorFlash->parent.name, MOUNT_POINT_SPIFLASH0, "elm", 0, 0) != 0)
+    {
+        rt_kprintf("Failed to mount elm on %s.\n", MOUNT_POINT_SPIFLASH0);
+        rt_kprintf("Try to execute 'mkfs -t elm %s' first, then reboot.\n", PARTITION_NAME_FILESYSTEM);
+        goto exit_mnt_init_spiflash0;
+    }
+    rt_kprintf("mount %s with elmfat type: ok\n", PARTITION_NAME_FILESYSTEM);
+    mkdir_p("/mnt/sd0", 0x777);
+    mkdir_p("/mnt/sd0p0", 0x777);
+    mkdir_p("/mnt/sd0p1", 0x777);
+    mkdir_p("/mnt/sd1", 0x777);
+    mkdir_p("/mnt/sd1p0", 0x777);
+    mkdir_p("/mnt/sd1p1", 0x777);
+
+#if defined(RT_USBH_MSTORAGE) && defined(UDISK_MOUNTPOINT)
+    if (mkdir_p(UDISK_MOUNTPOINT, 0) < 0)
+    {
+        rt_kprintf("Failed to create directory on %s for RT_USBH_MSTORAGE.\n", UDISK_MOUNTPOINT);
+    }
+#endif
+exit_mnt_init_spiflash0:
+
+    return 0;
+}
+INIT_APP_EXPORT(mnt_init_spiflash0);
+#endif
+

+ 146 - 0
bsp/nuvoton/numaker-iot-m467/board/Kconfig

@@ -0,0 +1,146 @@
+menu "Hardware Drivers Config"
+
+    menu "On-chip Peripheral Drivers"
+        source "$BSP_DIR/../libraries/m460/rtt_port/Kconfig"
+    endmenu
+
+    menu "On-board Peripheral Drivers"
+
+        config BSP_USING_NULINKME
+            bool "Enable UART0 for RTT Console(uart0)"
+            select BSP_USING_UART
+            select BSP_USING_UART0
+            default y
+
+        config BOARD_USING_RTL8201FI
+            bool "Enable Ethernet phy supporting(over emac/mdio)"
+            select BSP_USING_EMAC
+            default n
+
+        config BOARD_USING_ESP8266
+            bool "ESP8266 Wi-Fi module supporting(over uart2)"
+            select BSP_USING_UART
+            select BSP_USING_UART2
+            select BSP_USING_UART2_RX_DMA
+            select BSP_USING_UART2_TX_DMA
+            select PKG_USING_AT_DEVICE
+            select AT_DEVICE_USING_ESP8266
+            select AT_DEVICE_ESP8266_INIT_ASYN
+            default y
+        config BOARD_USING_STORAGE_SDCARD
+            bool "SDCARD supporting(over sdh0)"
+            select BSP_USING_SDH
+            select BSP_USING_SDH0
+            default y
+
+        config BOARD_USING_STORAGE_SPIFLASH
+            bool "SPIFLASH supporting(over qspi0)"
+            select BSP_USING_QSPI
+            select BSP_USING_QSPI0
+            default y
+
+        config BOARD_USING_CANFD0
+            bool "CAN-FD supporting(over canfd0)"
+            select BSP_USING_CANFD
+            select BSP_USING_CANFD0
+            default y
+
+        config BOARD_USING_NCT7717U
+            bool "Thermal Sensor(over i2c2)"
+            select NU_PKG_USING_NCT7717U
+            select BSP_USING_I2C
+            select BSP_USING_I2C2
+            default y
+
+        config BOARD_USING_MPU6500
+            bool "MPU6500 6-axis MotionTracking Sensor(over i2c2)"
+            select PKG_USING_MPU6XXX
+            select BSP_USING_I2C
+            select BSP_USING_I2C2
+            default y
+
+        config BOARD_USING_USB_D_H
+            bool "Enable USB Device or Host function"
+            help
+                Choose this option if you need USB function.
+
+        if BOARD_USING_USB_D_H
+            choice
+                prompt "Select FS/HS USB Ports"
+
+                config BOARD_USING_HSUSBD
+                    select BSP_USING_HSUSBD
+                    bool "Enable HSUSBD(over USB2.0)"
+                    help
+                        Choose this option if you need HSUSBD function mode.
+
+                config BOARD_USING_HSUSBD_USBH
+                    select BSP_USING_USBH
+                    select BSP_USING_HSUSBD
+                    bool "Enable HSUSBD(over USB2.0) and USBH(over USB1.1)"
+                    help
+                        Choose this option if you need HSUSBD and USBH function mode at the same time.
+
+                config BOARD_USING_HSUSBH
+                    select BSP_USING_HSUSBH
+                    bool "Enable HSUSBH(over USB2.0)"
+                    help
+                        Choose this option if you need HSUSBH function mode.
+
+                config BOARD_USING_HSUSBH_USBD
+                    select BSP_USING_HSUSBH
+                    select BSP_USING_USBD
+                    bool "Enable HSUSBH(over USB2.0) and USBD(over USB1.1)"
+                    help
+                        Choose this option if you need HSUSBH and USBD function mode at the same time.
+
+                config BOARD_USING_HSOTG
+                    select BSP_USING_HSOTG
+                    bool "Enable HSOTG(over USB2.0)"
+                    help
+                        Choose this option if you need HSOTG function mode.
+            endchoice
+        endif
+
+    endmenu
+
+    menu "Board extended module drivers"
+
+        config BOARD_USING_LCD_ILI9341
+            bool "LCD ILI9341 (over spi2)"
+	    select RT_USING_TOUCH	    
+            select BSP_USING_SPI2
+            select BSP_USING_EADC
+            select BSP_USING_EADC0
+            select NU_PKG_USING_ADC_TOUCH
+            select NU_PKG_USING_ADC_TOUCH_SW
+            select NU_PKG_USING_ILI9341
+            select NU_PKG_USING_ILI9341_SPI
+            select NU_PKG_ILI9341_WITH_OFFSCREEN_FRAMEBUFFER
+            select NU_PKG_ILI9341_HORIZONTAL
+            default n
+
+        if BOARD_USING_LCD_ILI9341
+
+            config BOARD_USING_ILI9341_PIN_BACKLIGHT
+            int "Specify the pin index of backlight pin index"
+                range 0 127
+                default 21
+
+            config BOARD_USING_ILI9341_PIN_RESET
+            int "Specify the pin index of reset pin index"
+                range 0 127
+                default 19
+
+            config BOARD_USING_ILI9341_PIN_DC
+            int "Specify the pin index of data&command switching"
+                range 0 127
+                default 18
+
+        endif
+
+    endmenu
+
+    source "$BSP_DIR/../libraries/nu_packages/Kconfig"
+
+endmenu

+ 919 - 0
bsp/nuvoton/numaker-iot-m467/board/NuPinConfig/nutool_pincfg.c

@@ -0,0 +1,919 @@
+/****************************************************************************
+ * @file     nutool_pincfg.c
+ * @version  V1.24
+ * @Date     2022/09/15-10:20:52
+ * @brief    NuMicro generated code file
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Copyright (C) 2013-2022 Nuvoton Technology Corp. All rights reserved.
+*****************************************************************************/
+
+/********************
+MCU:M467HJHAE(LQFP176)
+Pin Configuration:
+Pin1:EPWM0_CH0
+Pin2:EPWM0_CH1
+Pin3:UART1_TXD
+Pin4:UART1_RXD
+Pin5:EPWM1_CH0
+Pin6:EPWM1_CH1
+Pin7:EPWM1_CH2
+Pin8:EPWM1_CH3
+Pin9:EADC0_CH1
+Pin10:EADC0_CH0
+Pin13:SPI2_SS
+Pin14:SPI2_CLK
+Pin15:SPI2_MISO
+Pin16:SPI2_MOSI
+Pin19:EADC1_CH1
+Pin20:EADC1_CH0
+Pin23:I2C3_SCL
+Pin24:I2C3_SDA
+Pin25:I2C1_SCL
+Pin26:I2C1_SDA
+Pin27:PG.4
+Pin28:PI.6
+Pin29:SPI1_MISO
+Pin30:SPI1_MOSI
+Pin31:SPI1_CLK
+Pin32:SPI1_SS
+Pin34:UART5_TXD
+Pin35:UART5_RXD
+Pin36:PF.9
+Pin37:PF.8
+Pin38:UART4_TXD
+Pin39:UART4_RXD
+Pin41:X32_IN
+Pin42:X32_OUT
+Pin45:PH.2
+Pin46:PH.3
+Pin47:PH.4
+Pin48:PH.5
+Pin49:PH.6
+Pin50:PH.7
+Pin51:XT1_IN
+Pin52:XT1_OUT
+Pin55:EMAC0_RMII_MDC
+Pin56:EMAC0_RMII_MDIO
+Pin57:EMAC0_RMII_TXD0
+Pin58:EMAC0_RMII_TXD1
+Pin59:EMAC0_RMII_TXEN
+Pin61:EMAC0_RMII_REFCLK
+Pin62:EMAC0_RMII_RXD0
+Pin63:EMAC0_RMII_RXD1
+Pin64:EMAC0_RMII_CRSDV
+Pin65:EMAC0_RMII_RXERR
+Pin66:SPIM_SS
+Pin67:SPIM_MISO
+Pin68:SPIM_D2
+Pin69:SPIM_D3
+Pin70:SPIM_CLK
+Pin71:SPIM_MOSI
+Pin75:QSPI0_MISO1
+Pin76:QSPI0_MOSI1
+Pin77:QSPI0_SS
+Pin78:QSPI0_CLK
+Pin79:QSPI0_MISO0
+Pin80:QSPI0_MOSI0
+Pin82:PE.14
+Pin83:PE.15
+Pin85:ICE_DAT
+Pin86:ICE_CLK
+Pin87:PD.9
+Pin88:PD.8
+Pin89:PC.5
+Pin90:PC.4
+Pin91:UART2_nRTS
+Pin92:UART2_nCTS
+Pin93:UART2_TXD
+Pin94:UART2_RXD
+Pin97:I2C4_SCL
+Pin98:I2C4_SDA
+Pin99:PG.11
+Pin100:PG.12
+Pin101:PG.13
+Pin102:PG.14
+Pin103:PG.15
+Pin104:PJ.2
+Pin105:PJ.3
+Pin106:PJ.4
+Pin107:PJ.5
+Pin108:PJ.6
+Pin109:PJ.7
+Pin110:PH.12
+Pin111:PH.13
+Pin112:PH.14
+Pin113:PH.15
+Pin114:PD.7
+Pin115:PD.6
+Pin116:PD.5
+Pin117:PD.4
+Pin118:PD.3
+Pin119:PD.2
+Pin120:I2C2_SCL
+Pin121:I2C2_SDA
+Pin122:SD0_nCD
+Pin123:USB_VBUS
+Pin124:USB_D-
+Pin125:USB_D+
+Pin126:USB_OTG_ID
+Pin135:SD0_CMD
+Pin136:SD0_CLK
+Pin137:SD0_DAT3
+Pin138:SD0_DAT2
+Pin139:SD0_DAT1
+Pin140:SD0_DAT0
+Pin143:PE.1
+Pin144:PE.0
+Pin145:PH.8
+Pin146:PH.9
+Pin147:PH.10
+Pin148:EPWM0_CH5
+Pin149:EPWM0_CH4
+Pin150:PJ.8
+Pin151:PJ.9
+Pin152:CAN0_TXD
+Pin153:CAN0_RXD
+Pin154:HSUSB_VBUS_ST
+Pin155:HSUSB_VBUS_EN
+Pin156:SPI3_SS
+Pin157:SPI3_CLK
+Pin158:SPI3_MISO
+Pin159:SPI3_MOSI
+Pin163:USB_VBUS_ST
+Pin164:USB_VBUS_EN
+Pin166:UART0_TXD
+Pin167:UART0_RXD
+Pin173:EADC0_CH9
+Pin174:EADC0_CH8
+Pin175:EADC0_CH7
+Pin176:EADC0_CH6
+********************/
+
+#include "M460.h"
+#include "rtconfig.h"
+
+void nutool_pincfg_init_can0(void)
+{
+    SYS->GPJ_MFP2 &= ~(SYS_GPJ_MFP2_PJ11MFP_Msk | SYS_GPJ_MFP2_PJ10MFP_Msk);
+    SYS->GPJ_MFP2 |= (SYS_GPJ_MFP2_PJ11MFP_CAN0_RXD | SYS_GPJ_MFP2_PJ10MFP_CAN0_TXD);
+
+    return;
+}
+
+void nutool_pincfg_deinit_can0(void)
+{
+    SYS->GPJ_MFP2 &= ~(SYS_GPJ_MFP2_PJ11MFP_Msk | SYS_GPJ_MFP2_PJ10MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_eadc0(void)
+{
+    SYS->GPB_MFP0 &= ~(SYS_GPB_MFP0_PB1MFP_Msk | SYS_GPB_MFP0_PB0MFP_Msk);
+    SYS->GPB_MFP0 |= (SYS_GPB_MFP0_PB1MFP_EADC0_CH1 | SYS_GPB_MFP0_PB0MFP_EADC0_CH0);
+    SYS->GPB_MFP1 &= ~(SYS_GPB_MFP1_PB7MFP_Msk | SYS_GPB_MFP1_PB6MFP_Msk);
+    SYS->GPB_MFP1 |= (SYS_GPB_MFP1_PB7MFP_EADC0_CH7 | SYS_GPB_MFP1_PB6MFP_EADC0_CH6);
+    SYS->GPB_MFP2 &= ~(SYS_GPB_MFP2_PB9MFP_Msk | SYS_GPB_MFP2_PB8MFP_Msk);
+    SYS->GPB_MFP2 |= (SYS_GPB_MFP2_PB9MFP_EADC0_CH9 | SYS_GPB_MFP2_PB8MFP_EADC0_CH8);
+
+    /* Disable digital path on these EADC pins */
+    GPIO_DISABLE_DIGITAL_PATH(PB, BIT0 | BIT1 | BIT6 | BIT7 | BIT8 | BIT9);
+
+    return;
+}
+
+void nutool_pincfg_deinit_eadc0(void)
+{
+    SYS->GPB_MFP0 &= ~(SYS_GPB_MFP0_PB1MFP_Msk | SYS_GPB_MFP0_PB0MFP_Msk);
+    SYS->GPB_MFP1 &= ~(SYS_GPB_MFP1_PB7MFP_Msk | SYS_GPB_MFP1_PB6MFP_Msk);
+    SYS->GPB_MFP2 &= ~(SYS_GPB_MFP2_PB9MFP_Msk | SYS_GPB_MFP2_PB8MFP_Msk);
+
+    /* Enable digital path on these EADC pins */
+    GPIO_ENABLE_DIGITAL_PATH(PB, BIT0 | BIT1 | BIT6 | BIT7 | BIT8 | BIT9);
+
+    return;
+}
+
+void nutool_pincfg_init_eadc1(void)
+{
+    SYS->GPD_MFP2 &= ~(SYS_GPD_MFP2_PD11MFP_Msk | SYS_GPD_MFP2_PD10MFP_Msk);
+    SYS->GPD_MFP2 |= (SYS_GPD_MFP2_PD11MFP_EADC1_CH1 | SYS_GPD_MFP2_PD10MFP_EADC1_CH0);
+
+    /* Disable digital path on these EADC pins */
+    GPIO_DISABLE_DIGITAL_PATH(PD, BIT10 | BIT11);
+
+    return;
+}
+
+void nutool_pincfg_deinit_eadc1(void)
+{
+    SYS->GPD_MFP2 &= ~(SYS_GPD_MFP2_PD11MFP_Msk | SYS_GPD_MFP2_PD10MFP_Msk);
+    /* Enable digital path on these EADC pins */
+    GPIO_ENABLE_DIGITAL_PATH(PD, BIT10 | BIT11);
+
+    return;
+}
+
+void nutool_pincfg_init_emac0(void)
+{
+    SYS->GPA_MFP1 &= ~(SYS_GPA_MFP1_PA7MFP_Msk | SYS_GPA_MFP1_PA6MFP_Msk);
+    SYS->GPA_MFP1 |= (SYS_GPA_MFP1_PA7MFP_EMAC0_RMII_CRSDV | SYS_GPA_MFP1_PA6MFP_EMAC0_RMII_RXERR);
+    SYS->GPC_MFP1 &= ~(SYS_GPC_MFP1_PC7MFP_Msk | SYS_GPC_MFP1_PC6MFP_Msk);
+    SYS->GPC_MFP1 |= (SYS_GPC_MFP1_PC7MFP_EMAC0_RMII_RXD0 | SYS_GPC_MFP1_PC6MFP_EMAC0_RMII_RXD1);
+    SYS->GPC_MFP2 &= ~(SYS_GPC_MFP2_PC8MFP_Msk);
+    SYS->GPC_MFP2 |= (SYS_GPC_MFP2_PC8MFP_EMAC0_RMII_REFCLK);
+    SYS->GPE_MFP2 &= ~(SYS_GPE_MFP2_PE11MFP_Msk | SYS_GPE_MFP2_PE10MFP_Msk | SYS_GPE_MFP2_PE9MFP_Msk | SYS_GPE_MFP2_PE8MFP_Msk);
+    SYS->GPE_MFP2 |= (SYS_GPE_MFP2_PE11MFP_EMAC0_RMII_TXD1 | SYS_GPE_MFP2_PE10MFP_EMAC0_RMII_TXD0 | SYS_GPE_MFP2_PE9MFP_EMAC0_RMII_MDIO | SYS_GPE_MFP2_PE8MFP_EMAC0_RMII_MDC);
+    SYS->GPE_MFP3 &= ~(SYS_GPE_MFP3_PE12MFP_Msk);
+    SYS->GPE_MFP3 |= (SYS_GPE_MFP3_PE12MFP_EMAC0_RMII_TXEN);
+
+    return;
+}
+
+void nutool_pincfg_deinit_emac0(void)
+{
+    SYS->GPA_MFP1 &= ~(SYS_GPA_MFP1_PA7MFP_Msk | SYS_GPA_MFP1_PA6MFP_Msk);
+    SYS->GPC_MFP1 &= ~(SYS_GPC_MFP1_PC7MFP_Msk | SYS_GPC_MFP1_PC6MFP_Msk);
+    SYS->GPC_MFP2 &= ~(SYS_GPC_MFP2_PC8MFP_Msk);
+    SYS->GPE_MFP2 &= ~(SYS_GPE_MFP2_PE11MFP_Msk | SYS_GPE_MFP2_PE10MFP_Msk | SYS_GPE_MFP2_PE9MFP_Msk | SYS_GPE_MFP2_PE8MFP_Msk);
+    SYS->GPE_MFP3 &= ~(SYS_GPE_MFP3_PE12MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_epwm0(void)
+{
+#if defined(BOARD_USING_LCD_ILI9341) && defined(NU_PKG_USING_ILI9341_SPI)
+    /* NuTFT LED Pin is PB.5 */
+    SYS->GPB_MFP1 &= ~(SYS_GPB_MFP1_PB5MFP_Msk | SYS_GPB_MFP1_PB4MFP_Msk);
+    SYS->GPB_MFP1 |= (SYS_GPB_MFP1_PB4MFP_EPWM0_CH1);
+#else
+    SYS->GPB_MFP1 &= ~(SYS_GPB_MFP1_PB5MFP_Msk | SYS_GPB_MFP1_PB4MFP_Msk);
+    SYS->GPB_MFP1 |= (SYS_GPB_MFP1_PB5MFP_EPWM0_CH0 | SYS_GPB_MFP1_PB4MFP_EPWM0_CH1);
+#endif
+    SYS->GPD_MFP3 &= ~(SYS_GPD_MFP3_PD14MFP_Msk);
+    SYS->GPD_MFP3 |= (SYS_GPD_MFP3_PD14MFP_EPWM0_CH4);
+    SYS->GPH_MFP2 &= ~(SYS_GPH_MFP2_PH11MFP_Msk);
+    SYS->GPH_MFP2 |= (SYS_GPH_MFP2_PH11MFP_EPWM0_CH5);
+
+    return;
+}
+
+void nutool_pincfg_deinit_epwm0(void)
+{
+#if defined(BOARD_USING_LCD_ILI9341) && defined(NU_PKG_USING_ILI9341_SPI)
+    SYS->GPB_MFP1 &= ~(SYS_GPB_MFP1_PB4MFP_Msk);
+#else
+    SYS->GPB_MFP1 &= ~(SYS_GPB_MFP1_PB5MFP_Msk | SYS_GPB_MFP1_PB4MFP_Msk);
+#endif
+    SYS->GPD_MFP3 &= ~(SYS_GPD_MFP3_PD14MFP_Msk);
+    SYS->GPH_MFP2 &= ~(SYS_GPH_MFP2_PH11MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_epwm1(void)
+{
+    SYS->GPC_MFP2 &= ~(SYS_GPC_MFP2_PC11MFP_Msk | SYS_GPC_MFP2_PC10MFP_Msk | SYS_GPC_MFP2_PC9MFP_Msk);
+    SYS->GPC_MFP2 |= (SYS_GPC_MFP2_PC11MFP_EPWM1_CH1 | SYS_GPC_MFP2_PC10MFP_EPWM1_CH2 | SYS_GPC_MFP2_PC9MFP_EPWM1_CH3);
+    SYS->GPC_MFP3 &= ~(SYS_GPC_MFP3_PC12MFP_Msk);
+    SYS->GPC_MFP3 |= (SYS_GPC_MFP3_PC12MFP_EPWM1_CH0);
+
+    return;
+}
+
+void nutool_pincfg_deinit_epwm1(void)
+{
+    SYS->GPC_MFP2 &= ~(SYS_GPC_MFP2_PC11MFP_Msk | SYS_GPC_MFP2_PC10MFP_Msk | SYS_GPC_MFP2_PC9MFP_Msk);
+    SYS->GPC_MFP3 &= ~(SYS_GPC_MFP3_PC12MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_hsusb(void)
+{
+    SYS->GPJ_MFP3 &= ~(SYS_GPJ_MFP3_PJ13MFP_Msk | SYS_GPJ_MFP3_PJ12MFP_Msk);
+    SYS->GPJ_MFP3 |= (SYS_GPJ_MFP3_PJ13MFP_HSUSB_VBUS_EN | SYS_GPJ_MFP3_PJ12MFP_HSUSB_VBUS_ST);
+
+    return;
+}
+
+void nutool_pincfg_deinit_hsusb(void)
+{
+    SYS->GPJ_MFP3 &= ~(SYS_GPJ_MFP3_PJ13MFP_Msk | SYS_GPJ_MFP3_PJ12MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_i2c1(void)
+{
+    SYS->GPG_MFP0 &= ~(SYS_GPG_MFP0_PG3MFP_Msk | SYS_GPG_MFP0_PG2MFP_Msk);
+    SYS->GPG_MFP0 |= (SYS_GPG_MFP0_PG3MFP_I2C1_SDA | SYS_GPG_MFP0_PG2MFP_I2C1_SCL);
+
+    //GPIO_SetPullCtl(PG, BIT2 | BIT3, GPIO_PUSEL_PULL_UP);
+
+    return;
+}
+
+void nutool_pincfg_deinit_i2c1(void)
+{
+    SYS->GPG_MFP0 &= ~(SYS_GPG_MFP0_PG3MFP_Msk | SYS_GPG_MFP0_PG2MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_i2c2(void)
+{
+    SYS->GPD_MFP0 &= ~(SYS_GPD_MFP0_PD1MFP_Msk | SYS_GPD_MFP0_PD0MFP_Msk);
+    SYS->GPD_MFP0 |= (SYS_GPD_MFP0_PD1MFP_I2C2_SCL | SYS_GPD_MFP0_PD0MFP_I2C2_SDA);
+
+    return;
+}
+
+void nutool_pincfg_deinit_i2c2(void)
+{
+    SYS->GPD_MFP0 &= ~(SYS_GPD_MFP0_PD1MFP_Msk | SYS_GPD_MFP0_PD0MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_i2c3(void)
+{
+    SYS->GPG_MFP0 &= ~(SYS_GPG_MFP0_PG1MFP_Msk | SYS_GPG_MFP0_PG0MFP_Msk);
+    SYS->GPG_MFP0 |= (SYS_GPG_MFP0_PG1MFP_I2C3_SDA | SYS_GPG_MFP0_PG0MFP_I2C3_SCL);
+
+    return;
+}
+
+void nutool_pincfg_deinit_i2c3(void)
+{
+    SYS->GPG_MFP0 &= ~(SYS_GPG_MFP0_PG1MFP_Msk | SYS_GPG_MFP0_PG0MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_i2c4(void)
+{
+    SYS->GPG_MFP2 &= ~(SYS_GPG_MFP2_PG10MFP_Msk | SYS_GPG_MFP2_PG9MFP_Msk);
+    SYS->GPG_MFP2 |= (SYS_GPG_MFP2_PG10MFP_I2C4_SDA | SYS_GPG_MFP2_PG9MFP_I2C4_SCL);
+    //GPIO_SetPullCtl(PG, BIT9 | BIT10, GPIO_PUSEL_PULL_UP);
+
+    return;
+}
+
+void nutool_pincfg_deinit_i2c4(void)
+{
+    SYS->GPG_MFP2 &= ~(SYS_GPG_MFP2_PG10MFP_Msk | SYS_GPG_MFP2_PG9MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_ice(void)
+{
+    SYS->GPF_MFP0 &= ~(SYS_GPF_MFP0_PF1MFP_Msk | SYS_GPF_MFP0_PF0MFP_Msk);
+    SYS->GPF_MFP0 |= (SYS_GPF_MFP0_PF1MFP_ICE_CLK | SYS_GPF_MFP0_PF0MFP_ICE_DAT);
+
+    return;
+}
+
+void nutool_pincfg_deinit_ice(void)
+{
+    SYS->GPF_MFP0 &= ~(SYS_GPF_MFP0_PF1MFP_Msk | SYS_GPF_MFP0_PF0MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_pc(void)
+{
+    SYS->GPC_MFP1 &= ~(SYS_GPC_MFP1_PC5MFP_Msk | SYS_GPC_MFP1_PC4MFP_Msk);
+    SYS->GPC_MFP1 |= (SYS_GPC_MFP1_PC5MFP_GPIO | SYS_GPC_MFP1_PC4MFP_GPIO);
+
+    return;
+}
+
+void nutool_pincfg_deinit_pc(void)
+{
+    SYS->GPC_MFP1 &= ~(SYS_GPC_MFP1_PC5MFP_Msk | SYS_GPC_MFP1_PC4MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_pd(void)
+{
+    SYS->GPD_MFP0 &= ~(SYS_GPD_MFP0_PD3MFP_Msk | SYS_GPD_MFP0_PD2MFP_Msk);
+    SYS->GPD_MFP0 |= (SYS_GPD_MFP0_PD3MFP_GPIO | SYS_GPD_MFP0_PD2MFP_GPIO);
+    SYS->GPD_MFP1 &= ~(SYS_GPD_MFP1_PD7MFP_Msk | SYS_GPD_MFP1_PD6MFP_Msk | SYS_GPD_MFP1_PD5MFP_Msk | SYS_GPD_MFP1_PD4MFP_Msk);
+    SYS->GPD_MFP1 |= (SYS_GPD_MFP1_PD7MFP_GPIO | SYS_GPD_MFP1_PD6MFP_GPIO | SYS_GPD_MFP1_PD5MFP_GPIO | SYS_GPD_MFP1_PD4MFP_GPIO);
+    SYS->GPD_MFP2 &= ~(SYS_GPD_MFP2_PD9MFP_Msk | SYS_GPD_MFP2_PD8MFP_Msk);
+    SYS->GPD_MFP2 |= (SYS_GPD_MFP2_PD9MFP_GPIO | SYS_GPD_MFP2_PD8MFP_GPIO);
+
+    return;
+}
+
+void nutool_pincfg_deinit_pd(void)
+{
+    SYS->GPD_MFP0 &= ~(SYS_GPD_MFP0_PD3MFP_Msk | SYS_GPD_MFP0_PD2MFP_Msk);
+    SYS->GPD_MFP1 &= ~(SYS_GPD_MFP1_PD7MFP_Msk | SYS_GPD_MFP1_PD6MFP_Msk | SYS_GPD_MFP1_PD5MFP_Msk | SYS_GPD_MFP1_PD4MFP_Msk);
+    SYS->GPD_MFP2 &= ~(SYS_GPD_MFP2_PD9MFP_Msk | SYS_GPD_MFP2_PD8MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_pe(void)
+{
+    SYS->GPE_MFP0 &= ~(SYS_GPE_MFP0_PE1MFP_Msk | SYS_GPE_MFP0_PE0MFP_Msk);
+    SYS->GPE_MFP0 |= (SYS_GPE_MFP0_PE1MFP_GPIO | SYS_GPE_MFP0_PE0MFP_GPIO);
+    SYS->GPE_MFP3 &= ~(SYS_GPE_MFP3_PE15MFP_Msk | SYS_GPE_MFP3_PE14MFP_Msk);
+    SYS->GPE_MFP3 |= (SYS_GPE_MFP3_PE15MFP_GPIO | SYS_GPE_MFP3_PE14MFP_GPIO);
+
+    return;
+}
+
+void nutool_pincfg_deinit_pe(void)
+{
+    SYS->GPE_MFP0 &= ~(SYS_GPE_MFP0_PE1MFP_Msk | SYS_GPE_MFP0_PE0MFP_Msk);
+    SYS->GPE_MFP3 &= ~(SYS_GPE_MFP3_PE15MFP_Msk | SYS_GPE_MFP3_PE14MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_pf(void)
+{
+    SYS->GPF_MFP2 &= ~(SYS_GPF_MFP2_PF9MFP_Msk | SYS_GPF_MFP2_PF8MFP_Msk);
+    SYS->GPF_MFP2 |= (SYS_GPF_MFP2_PF9MFP_GPIO | SYS_GPF_MFP2_PF8MFP_GPIO);
+
+    return;
+}
+
+void nutool_pincfg_deinit_pf(void)
+{
+    SYS->GPF_MFP2 &= ~(SYS_GPF_MFP2_PF9MFP_Msk | SYS_GPF_MFP2_PF8MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_pg(void)
+{
+    SYS->GPG_MFP1 &= ~(SYS_GPG_MFP1_PG4MFP_Msk);
+    SYS->GPG_MFP1 |= (SYS_GPG_MFP1_PG4MFP_GPIO);
+    SYS->GPG_MFP2 &= ~(SYS_GPG_MFP2_PG11MFP_Msk);
+    SYS->GPG_MFP2 |= (SYS_GPG_MFP2_PG11MFP_GPIO);
+    SYS->GPG_MFP3 &= ~(SYS_GPG_MFP3_PG15MFP_Msk | SYS_GPG_MFP3_PG14MFP_Msk | SYS_GPG_MFP3_PG13MFP_Msk | SYS_GPG_MFP3_PG12MFP_Msk);
+    SYS->GPG_MFP3 |= (SYS_GPG_MFP3_PG15MFP_GPIO | SYS_GPG_MFP3_PG14MFP_GPIO | SYS_GPG_MFP3_PG13MFP_GPIO | SYS_GPG_MFP3_PG12MFP_GPIO);
+
+    return;
+}
+
+void nutool_pincfg_deinit_pg(void)
+{
+    SYS->GPG_MFP1 &= ~(SYS_GPG_MFP1_PG4MFP_Msk);
+    SYS->GPG_MFP2 &= ~(SYS_GPG_MFP2_PG11MFP_Msk);
+    SYS->GPG_MFP3 &= ~(SYS_GPG_MFP3_PG15MFP_Msk | SYS_GPG_MFP3_PG14MFP_Msk | SYS_GPG_MFP3_PG13MFP_Msk | SYS_GPG_MFP3_PG12MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_ph(void)
+{
+    SYS->GPH_MFP0 &= ~(SYS_GPH_MFP0_PH3MFP_Msk | SYS_GPH_MFP0_PH2MFP_Msk);
+    SYS->GPH_MFP0 |= (SYS_GPH_MFP0_PH3MFP_GPIO | SYS_GPH_MFP0_PH2MFP_GPIO);
+    SYS->GPH_MFP1 &= ~(SYS_GPH_MFP1_PH7MFP_Msk | SYS_GPH_MFP1_PH6MFP_Msk | SYS_GPH_MFP1_PH5MFP_Msk | SYS_GPH_MFP1_PH4MFP_Msk);
+    SYS->GPH_MFP1 |= (SYS_GPH_MFP1_PH7MFP_GPIO | SYS_GPH_MFP1_PH6MFP_GPIO | SYS_GPH_MFP1_PH5MFP_GPIO | SYS_GPH_MFP1_PH4MFP_GPIO);
+    SYS->GPH_MFP2 &= ~(SYS_GPH_MFP2_PH10MFP_Msk | SYS_GPH_MFP2_PH9MFP_Msk | SYS_GPH_MFP2_PH8MFP_Msk);
+    SYS->GPH_MFP2 |= (SYS_GPH_MFP2_PH10MFP_GPIO | SYS_GPH_MFP2_PH9MFP_GPIO | SYS_GPH_MFP2_PH8MFP_GPIO);
+    SYS->GPH_MFP3 &= ~(SYS_GPH_MFP3_PH15MFP_Msk | SYS_GPH_MFP3_PH14MFP_Msk | SYS_GPH_MFP3_PH13MFP_Msk | SYS_GPH_MFP3_PH12MFP_Msk);
+    SYS->GPH_MFP3 |= (SYS_GPH_MFP3_PH15MFP_GPIO | SYS_GPH_MFP3_PH14MFP_GPIO | SYS_GPH_MFP3_PH13MFP_GPIO | SYS_GPH_MFP3_PH12MFP_GPIO);
+
+    return;
+}
+
+void nutool_pincfg_deinit_ph(void)
+{
+    SYS->GPH_MFP0 &= ~(SYS_GPH_MFP0_PH3MFP_Msk | SYS_GPH_MFP0_PH2MFP_Msk);
+    SYS->GPH_MFP1 &= ~(SYS_GPH_MFP1_PH7MFP_Msk | SYS_GPH_MFP1_PH6MFP_Msk | SYS_GPH_MFP1_PH5MFP_Msk | SYS_GPH_MFP1_PH4MFP_Msk);
+    SYS->GPH_MFP2 &= ~(SYS_GPH_MFP2_PH10MFP_Msk | SYS_GPH_MFP2_PH9MFP_Msk | SYS_GPH_MFP2_PH8MFP_Msk);
+    SYS->GPH_MFP3 &= ~(SYS_GPH_MFP3_PH15MFP_Msk | SYS_GPH_MFP3_PH14MFP_Msk | SYS_GPH_MFP3_PH13MFP_Msk | SYS_GPH_MFP3_PH12MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_pi(void)
+{
+    SYS->GPI_MFP1 &= ~(SYS_GPI_MFP1_PI6MFP_Msk);
+    SYS->GPI_MFP1 |= (SYS_GPI_MFP1_PI6MFP_GPIO);
+
+    return;
+}
+
+void nutool_pincfg_deinit_pi(void)
+{
+    SYS->GPI_MFP1 &= ~(SYS_GPI_MFP1_PI6MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_pj(void)
+{
+    SYS->GPJ_MFP0 &= ~(SYS_GPJ_MFP0_PJ3MFP_Msk | SYS_GPJ_MFP0_PJ2MFP_Msk);
+    SYS->GPJ_MFP0 |= (SYS_GPJ_MFP0_PJ3MFP_GPIO | SYS_GPJ_MFP0_PJ2MFP_GPIO);
+    SYS->GPJ_MFP1 &= ~(SYS_GPJ_MFP1_PJ7MFP_Msk | SYS_GPJ_MFP1_PJ6MFP_Msk | SYS_GPJ_MFP1_PJ5MFP_Msk | SYS_GPJ_MFP1_PJ4MFP_Msk);
+    SYS->GPJ_MFP1 |= (SYS_GPJ_MFP1_PJ7MFP_GPIO | SYS_GPJ_MFP1_PJ6MFP_GPIO | SYS_GPJ_MFP1_PJ5MFP_GPIO | SYS_GPJ_MFP1_PJ4MFP_GPIO);
+    SYS->GPJ_MFP2 &= ~(SYS_GPJ_MFP2_PJ9MFP_Msk | SYS_GPJ_MFP2_PJ8MFP_Msk);
+    SYS->GPJ_MFP2 |= (SYS_GPJ_MFP2_PJ9MFP_GPIO | SYS_GPJ_MFP2_PJ8MFP_GPIO);
+
+    return;
+}
+
+void nutool_pincfg_deinit_pj(void)
+{
+    SYS->GPJ_MFP0 &= ~(SYS_GPJ_MFP0_PJ3MFP_Msk | SYS_GPJ_MFP0_PJ2MFP_Msk);
+    SYS->GPJ_MFP1 &= ~(SYS_GPJ_MFP1_PJ7MFP_Msk | SYS_GPJ_MFP1_PJ6MFP_Msk | SYS_GPJ_MFP1_PJ5MFP_Msk | SYS_GPJ_MFP1_PJ4MFP_Msk);
+    SYS->GPJ_MFP2 &= ~(SYS_GPJ_MFP2_PJ9MFP_Msk | SYS_GPJ_MFP2_PJ8MFP_Msk);
+
+    return;
+}
+
+#if 1
+// Use on-board SPI NOR flash
+void nutool_pincfg_init_qspi0(void)
+{
+    SYS->GPI_MFP3 &= ~(SYS_GPI_MFP3_PI15MFP_Msk | SYS_GPI_MFP3_PI14MFP_Msk | SYS_GPI_MFP3_PI13MFP_Msk | SYS_GPI_MFP3_PI12MFP_Msk);
+    SYS->GPI_MFP3 |= (SYS_GPI_MFP3_PI15MFP_QSPI0_CLK | SYS_GPI_MFP3_PI14MFP_QSPI0_SS | SYS_GPI_MFP3_PI13MFP_QSPI0_MOSI1 | SYS_GPI_MFP3_PI12MFP_QSPI0_MISO1);
+    SYS->GPJ_MFP0 &= ~(SYS_GPJ_MFP0_PJ1MFP_Msk | SYS_GPJ_MFP0_PJ0MFP_Msk);
+    SYS->GPJ_MFP0 |= (SYS_GPJ_MFP0_PJ1MFP_QSPI0_MOSI0 | SYS_GPJ_MFP0_PJ0MFP_QSPI0_MISO0);
+
+    return;
+}
+
+void nutool_pincfg_deinit_qspi0(void)
+{
+    SYS->GPI_MFP3 &= ~(SYS_GPI_MFP3_PI15MFP_Msk | SYS_GPI_MFP3_PI14MFP_Msk | SYS_GPI_MFP3_PI13MFP_Msk | SYS_GPI_MFP3_PI12MFP_Msk);
+    SYS->GPJ_MFP0 &= ~(SYS_GPJ_MFP0_PJ1MFP_Msk | SYS_GPJ_MFP0_PJ0MFP_Msk);
+
+    return;
+}
+#else
+//UNO interface pins
+void nutool_pincfg_init_qspi0(void)
+{
+    SYS->GPA_MFP0 &= ~(SYS_GPA_MFP0_PA3MFP_Msk | SYS_GPA_MFP0_PA2MFP_Msk | SYS_GPA_MFP0_PA1MFP_Msk | SYS_GPA_MFP0_PA0MFP_Msk);
+    SYS->GPA_MFP0 |= (SYS_GPA_MFP0_PA3MFP_QSPI0_SS | SYS_GPA_MFP0_PA2MFP_QSPI0_CLK | SYS_GPA_MFP0_PA1MFP_QSPI0_MISO0 | SYS_GPA_MFP0_PA0MFP_QSPI0_MOSI0);
+    SYS->GPA_MFP1 &= ~(SYS_GPA_MFP1_PA5MFP_Msk | SYS_GPA_MFP1_PA4MFP_Msk);
+    SYS->GPA_MFP1 |= (SYS_GPA_MFP1_PA5MFP_QSPI0_MISO1 | SYS_GPA_MFP1_PA4MFP_QSPI0_MOSI1);
+
+    return;
+}
+
+void nutool_pincfg_deinit_qspi0(void)
+{
+    SYS->GPA_MFP0 &= ~(SYS_GPA_MFP0_PA3MFP_Msk | SYS_GPA_MFP0_PA2MFP_Msk | SYS_GPA_MFP0_PA1MFP_Msk | SYS_GPA_MFP0_PA0MFP_Msk);
+    SYS->GPA_MFP1 &= ~(SYS_GPA_MFP1_PA5MFP_Msk | SYS_GPA_MFP1_PA4MFP_Msk);
+
+    return;
+}
+#endif
+
+void nutool_pincfg_init_sd0(void)
+{
+    SYS->GPD_MFP3 &= ~(SYS_GPD_MFP3_PD13MFP_Msk);
+    SYS->GPD_MFP3 |= (SYS_GPD_MFP3_PD13MFP_SD0_nCD);
+    SYS->GPE_MFP0 &= ~(SYS_GPE_MFP0_PE3MFP_Msk | SYS_GPE_MFP0_PE2MFP_Msk);
+    SYS->GPE_MFP0 |= (SYS_GPE_MFP0_PE3MFP_SD0_DAT1 | SYS_GPE_MFP0_PE2MFP_SD0_DAT0);
+    SYS->GPE_MFP1 &= ~(SYS_GPE_MFP1_PE7MFP_Msk | SYS_GPE_MFP1_PE6MFP_Msk | SYS_GPE_MFP1_PE5MFP_Msk | SYS_GPE_MFP1_PE4MFP_Msk);
+    SYS->GPE_MFP1 |= (SYS_GPE_MFP1_PE7MFP_SD0_CMD | SYS_GPE_MFP1_PE6MFP_SD0_CLK | SYS_GPE_MFP1_PE5MFP_SD0_DAT3 | SYS_GPE_MFP1_PE4MFP_SD0_DAT2);
+
+    return;
+}
+
+void nutool_pincfg_deinit_sd0(void)
+{
+    SYS->GPD_MFP3 &= ~(SYS_GPD_MFP3_PD13MFP_Msk);
+    SYS->GPE_MFP0 &= ~(SYS_GPE_MFP0_PE3MFP_Msk | SYS_GPE_MFP0_PE2MFP_Msk);
+    SYS->GPE_MFP1 &= ~(SYS_GPE_MFP1_PE7MFP_Msk | SYS_GPE_MFP1_PE6MFP_Msk | SYS_GPE_MFP1_PE5MFP_Msk | SYS_GPE_MFP1_PE4MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_spi1(void)
+{
+    SYS->GPI_MFP1 &= ~(SYS_GPI_MFP1_PI7MFP_Msk);
+    SYS->GPI_MFP1 |= (SYS_GPI_MFP1_PI7MFP_SPI1_MISO);
+    SYS->GPI_MFP2 &= ~(SYS_GPI_MFP2_PI10MFP_Msk | SYS_GPI_MFP2_PI9MFP_Msk | SYS_GPI_MFP2_PI8MFP_Msk);
+    SYS->GPI_MFP2 |= (SYS_GPI_MFP2_PI10MFP_SPI1_SS | SYS_GPI_MFP2_PI9MFP_SPI1_CLK | SYS_GPI_MFP2_PI8MFP_SPI1_MOSI);
+
+    return;
+}
+
+void nutool_pincfg_deinit_spi1(void)
+{
+    SYS->GPI_MFP1 &= ~(SYS_GPI_MFP1_PI7MFP_Msk);
+    SYS->GPI_MFP2 &= ~(SYS_GPI_MFP2_PI10MFP_Msk | SYS_GPI_MFP2_PI9MFP_Msk | SYS_GPI_MFP2_PI8MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_spi2(void)
+{
+    SYS->GPA_MFP2 &= ~(SYS_GPA_MFP2_PA11MFP_Msk | SYS_GPA_MFP2_PA10MFP_Msk | SYS_GPA_MFP2_PA9MFP_Msk | SYS_GPA_MFP2_PA8MFP_Msk);
+    SYS->GPA_MFP2 |= (SYS_GPA_MFP2_PA11MFP_SPI2_SS | SYS_GPA_MFP2_PA10MFP_SPI2_CLK | SYS_GPA_MFP2_PA9MFP_SPI2_MISO | SYS_GPA_MFP2_PA8MFP_SPI2_MOSI);
+
+    return;
+}
+
+void nutool_pincfg_deinit_spi2(void)
+{
+    SYS->GPA_MFP2 &= ~(SYS_GPA_MFP2_PA11MFP_Msk | SYS_GPA_MFP2_PA10MFP_Msk | SYS_GPA_MFP2_PA9MFP_Msk | SYS_GPA_MFP2_PA8MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_spi3(void)
+{
+    SYS->GPG_MFP1 &= ~(SYS_GPG_MFP1_PG7MFP_Msk | SYS_GPG_MFP1_PG6MFP_Msk | SYS_GPG_MFP1_PG5MFP_Msk);
+    SYS->GPG_MFP1 |= (SYS_GPG_MFP1_PG7MFP_SPI3_MISO | SYS_GPG_MFP1_PG6MFP_SPI3_CLK | SYS_GPG_MFP1_PG5MFP_SPI3_SS);
+    SYS->GPG_MFP2 &= ~(SYS_GPG_MFP2_PG8MFP_Msk);
+    SYS->GPG_MFP2 |= (SYS_GPG_MFP2_PG8MFP_SPI3_MOSI);
+
+    return;
+}
+
+void nutool_pincfg_deinit_spi3(void)
+{
+    SYS->GPG_MFP1 &= ~(SYS_GPG_MFP1_PG7MFP_Msk | SYS_GPG_MFP1_PG6MFP_Msk | SYS_GPG_MFP1_PG5MFP_Msk);
+    SYS->GPG_MFP2 &= ~(SYS_GPG_MFP2_PG8MFP_Msk);
+
+    return;
+}
+
+#if 0
+void nutool_pincfg_init_spim(void)
+{
+    SYS->GPI_MFP3 &= ~(SYS_GPI_MFP3_PI15MFP_Msk | SYS_GPI_MFP3_PI14MFP_Msk | SYS_GPI_MFP3_PI13MFP_Msk | SYS_GPI_MFP3_PI12MFP_Msk);
+    SYS->GPI_MFP3 |= (SYS_GPI_MFP3_PI15MFP_SPIM_D3 | SYS_GPI_MFP3_PI14MFP_SPIM_D2 | SYS_GPI_MFP3_PI13MFP_SPIM_MISO | SYS_GPI_MFP3_PI12MFP_SPIM_SS);
+    SYS->GPJ_MFP0 &= ~(SYS_GPJ_MFP0_PJ1MFP_Msk | SYS_GPJ_MFP0_PJ0MFP_Msk);
+    SYS->GPJ_MFP0 |= (SYS_GPJ_MFP0_PJ1MFP_SPIM_MOSI | SYS_GPJ_MFP0_PJ0MFP_SPIM_CLK);
+
+    return;
+}
+
+void nutool_pincfg_deinit_spim(void)
+{
+    SYS->GPI_MFP3 &= ~(SYS_GPI_MFP3_PI15MFP_Msk | SYS_GPI_MFP3_PI14MFP_Msk | SYS_GPI_MFP3_PI13MFP_Msk | SYS_GPI_MFP3_PI12MFP_Msk);
+    SYS->GPJ_MFP0 &= ~(SYS_GPJ_MFP0_PJ1MFP_Msk | SYS_GPJ_MFP0_PJ0MFP_Msk);
+
+    return;
+}
+#endif
+
+void nutool_pincfg_init_uart0(void)
+{
+    SYS->GPB_MFP3 &= ~(SYS_GPB_MFP3_PB13MFP_Msk | SYS_GPB_MFP3_PB12MFP_Msk);
+    SYS->GPB_MFP3 |= (SYS_GPB_MFP3_PB13MFP_UART0_TXD | SYS_GPB_MFP3_PB12MFP_UART0_RXD);
+
+    return;
+}
+
+void nutool_pincfg_deinit_uart0(void)
+{
+    SYS->GPB_MFP3 &= ~(SYS_GPB_MFP3_PB13MFP_Msk | SYS_GPB_MFP3_PB12MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_uart1(void)
+{
+    SYS->GPB_MFP0 &= ~(SYS_GPB_MFP0_PB3MFP_Msk | SYS_GPB_MFP0_PB2MFP_Msk);
+    SYS->GPB_MFP0 |= (SYS_GPB_MFP0_PB3MFP_UART1_TXD | SYS_GPB_MFP0_PB2MFP_UART1_RXD);
+
+    return;
+}
+
+void nutool_pincfg_deinit_uart1(void)
+{
+    SYS->GPB_MFP0 &= ~(SYS_GPB_MFP0_PB3MFP_Msk | SYS_GPB_MFP0_PB2MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_uart2(void)
+{
+    SYS->GPC_MFP0 &= ~(SYS_GPC_MFP0_PC3MFP_Msk | SYS_GPC_MFP0_PC2MFP_Msk | SYS_GPC_MFP0_PC1MFP_Msk | SYS_GPC_MFP0_PC0MFP_Msk);
+    SYS->GPC_MFP0 |= (SYS_GPC_MFP0_PC3MFP_UART2_nRTS | SYS_GPC_MFP0_PC2MFP_UART2_nCTS | SYS_GPC_MFP0_PC1MFP_UART2_TXD | SYS_GPC_MFP0_PC0MFP_UART2_RXD);
+
+    return;
+}
+
+void nutool_pincfg_deinit_uart2(void)
+{
+    SYS->GPC_MFP0 &= ~(SYS_GPC_MFP0_PC3MFP_Msk | SYS_GPC_MFP0_PC2MFP_Msk | SYS_GPC_MFP0_PC1MFP_Msk | SYS_GPC_MFP0_PC0MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_uart4(void)
+{
+    SYS->GPF_MFP1 &= ~(SYS_GPF_MFP1_PF7MFP_Msk | SYS_GPF_MFP1_PF6MFP_Msk);
+    SYS->GPF_MFP1 |= (SYS_GPF_MFP1_PF7MFP_UART4_TXD | SYS_GPF_MFP1_PF6MFP_UART4_RXD);
+
+    return;
+}
+
+void nutool_pincfg_deinit_uart4(void)
+{
+    SYS->GPF_MFP1 &= ~(SYS_GPF_MFP1_PF7MFP_Msk | SYS_GPF_MFP1_PF6MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_uart5(void)
+{
+    SYS->GPF_MFP2 &= ~(SYS_GPF_MFP2_PF11MFP_Msk | SYS_GPF_MFP2_PF10MFP_Msk);
+    SYS->GPF_MFP2 |= (SYS_GPF_MFP2_PF11MFP_UART5_TXD | SYS_GPF_MFP2_PF10MFP_UART5_RXD);
+
+    return;
+}
+
+void nutool_pincfg_deinit_uart5(void)
+{
+    SYS->GPF_MFP2 &= ~(SYS_GPF_MFP2_PF11MFP_Msk | SYS_GPF_MFP2_PF10MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_usb(void)
+{
+    SYS->GPA_MFP3 &= ~(SYS_GPA_MFP3_PA15MFP_Msk | SYS_GPA_MFP3_PA14MFP_Msk | SYS_GPA_MFP3_PA13MFP_Msk | SYS_GPA_MFP3_PA12MFP_Msk);
+    SYS->GPA_MFP3 |= (SYS_GPA_MFP3_PA15MFP_USB_OTG_ID | SYS_GPA_MFP3_PA14MFP_USB_D_P | SYS_GPA_MFP3_PA13MFP_USB_D_N | SYS_GPA_MFP3_PA12MFP_USB_VBUS);
+    SYS->GPB_MFP3 &= ~(SYS_GPB_MFP3_PB15MFP_Msk);
+    SYS->GPB_MFP3 |= (SYS_GPB_MFP3_PB15MFP_USB_VBUS_EN);
+    SYS->GPC_MFP3 &= ~(SYS_GPC_MFP3_PC14MFP_Msk);
+    SYS->GPC_MFP3 |= (SYS_GPC_MFP3_PC14MFP_USB_VBUS_ST);
+
+    return;
+}
+
+void nutool_pincfg_deinit_usb(void)
+{
+    SYS->GPA_MFP3 &= ~(SYS_GPA_MFP3_PA15MFP_Msk | SYS_GPA_MFP3_PA14MFP_Msk | SYS_GPA_MFP3_PA13MFP_Msk | SYS_GPA_MFP3_PA12MFP_Msk);
+    SYS->GPB_MFP3 &= ~(SYS_GPB_MFP3_PB15MFP_Msk);
+    SYS->GPC_MFP3 &= ~(SYS_GPC_MFP3_PC14MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_x32(void)
+{
+    SYS->GPF_MFP1 &= ~(SYS_GPF_MFP1_PF5MFP_Msk | SYS_GPF_MFP1_PF4MFP_Msk);
+    SYS->GPF_MFP1 |= (SYS_GPF_MFP1_PF5MFP_X32_IN | SYS_GPF_MFP1_PF4MFP_X32_OUT);
+
+    return;
+}
+
+void nutool_pincfg_deinit_x32(void)
+{
+    SYS->GPF_MFP1 &= ~(SYS_GPF_MFP1_PF5MFP_Msk | SYS_GPF_MFP1_PF4MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init_xt1(void)
+{
+    SYS->GPF_MFP0 &= ~(SYS_GPF_MFP0_PF3MFP_Msk | SYS_GPF_MFP0_PF2MFP_Msk);
+    SYS->GPF_MFP0 |= (SYS_GPF_MFP0_PF3MFP_XT1_IN | SYS_GPF_MFP0_PF2MFP_XT1_OUT);
+
+    return;
+}
+
+void nutool_pincfg_deinit_xt1(void)
+{
+    SYS->GPF_MFP0 &= ~(SYS_GPF_MFP0_PF3MFP_Msk | SYS_GPF_MFP0_PF2MFP_Msk);
+
+    return;
+}
+
+void nutool_pincfg_init(void)
+{
+    //SYS->GPA_MFP0 = 0x03030303UL;
+    //SYS->GPA_MFP1 = 0x03030303UL;
+    //SYS->GPA_MFP2 = 0x04040404UL;
+    //SYS->GPA_MFP3 = 0x0E0E0E0EUL;
+    //SYS->GPB_MFP0 = 0x06060101UL;
+    //SYS->GPB_MFP1 = 0x01010B0BUL;
+    //SYS->GPB_MFP2 = 0x00000101UL;
+    //SYS->GPB_MFP3 = 0x0E000606UL;
+    //SYS->GPC_MFP0 = 0x08080808UL;
+    //SYS->GPC_MFP1 = 0x03030000UL;
+    //SYS->GPC_MFP2 = 0x0C0C0C03UL;
+    //SYS->GPC_MFP3 = 0x000E000CUL;
+    //SYS->GPD_MFP0 = 0x00000606UL;
+    //SYS->GPD_MFP1 = 0x00000000UL;
+    //SYS->GPD_MFP2 = 0x01010000UL;
+    //SYS->GPD_MFP3 = 0x000B0300UL;
+    //SYS->GPE_MFP0 = 0x03030000UL;
+    //SYS->GPE_MFP1 = 0x03030303UL;
+    //SYS->GPE_MFP2 = 0x03030303UL;
+    //SYS->GPE_MFP3 = 0x00000003UL;
+    //SYS->GPF_MFP0 = 0x0A0A0E0EUL;
+    //SYS->GPF_MFP1 = 0x06060A0AUL;
+    //SYS->GPF_MFP2 = 0x06060000UL;
+    //SYS->GPG_MFP0 = 0x05050909UL;
+    //SYS->GPG_MFP1 = 0x03030300UL;
+    //SYS->GPG_MFP2 = 0x00080803UL;
+    //SYS->GPG_MFP3 = 0x00000000UL;
+    //SYS->GPH_MFP0 = 0x00000000UL;
+    //SYS->GPH_MFP1 = 0x00000000UL;
+    //SYS->GPH_MFP2 = 0x0B000000UL;
+    //SYS->GPH_MFP3 = 0x00000000UL;
+    //SYS->GPI_MFP1 = 0x07000000UL;
+    //SYS->GPI_MFP2 = 0x00070707UL;
+    //SYS->GPI_MFP3 = 0x03030303UL;
+    //SYS->GPJ_MFP0 = 0x00000303UL;
+    //SYS->GPJ_MFP1 = 0x00000000UL;
+    //SYS->GPJ_MFP2 = 0x0B0B0000UL;
+    //SYS->GPJ_MFP3 = 0x00000F0FUL;
+
+    nutool_pincfg_init_can0();
+    nutool_pincfg_init_eadc0();
+    nutool_pincfg_init_eadc1();
+    nutool_pincfg_init_emac0();
+    nutool_pincfg_init_epwm0();
+    nutool_pincfg_init_epwm1();
+    nutool_pincfg_init_hsusb();
+    nutool_pincfg_init_i2c1();
+    nutool_pincfg_init_i2c2();
+    nutool_pincfg_init_i2c3();
+    nutool_pincfg_init_i2c4();
+    nutool_pincfg_init_ice();
+    nutool_pincfg_init_pc();
+    nutool_pincfg_init_pd();
+    nutool_pincfg_init_pe();
+    nutool_pincfg_init_pf();
+    nutool_pincfg_init_pg();
+    nutool_pincfg_init_ph();
+    nutool_pincfg_init_pi();
+    nutool_pincfg_init_pj();
+    nutool_pincfg_init_qspi0();
+    nutool_pincfg_init_sd0();
+    nutool_pincfg_init_spi1();
+    nutool_pincfg_init_spi2();
+    nutool_pincfg_init_spi3();
+    //nutool_pincfg_init_spim();
+    nutool_pincfg_init_uart0();
+#if !(defined(BOARD_USING_LCD_ILI9341) && defined(NU_PKG_USING_ILI9341_SPI))
+    nutool_pincfg_init_uart1();
+#endif
+    nutool_pincfg_init_uart2();
+    nutool_pincfg_init_uart4();
+    nutool_pincfg_init_uart5();
+    nutool_pincfg_init_usb();
+    nutool_pincfg_init_x32();
+    nutool_pincfg_init_xt1();
+
+    return;
+}
+
+void nutool_pincfg_deinit(void)
+{
+    nutool_pincfg_deinit_can0();
+    nutool_pincfg_deinit_eadc0();
+    nutool_pincfg_deinit_eadc1();
+    nutool_pincfg_deinit_emac0();
+    nutool_pincfg_deinit_epwm0();
+    nutool_pincfg_deinit_epwm1();
+    nutool_pincfg_deinit_hsusb();
+    nutool_pincfg_deinit_i2c1();
+    nutool_pincfg_deinit_i2c2();
+    nutool_pincfg_deinit_i2c3();
+    nutool_pincfg_deinit_i2c4();
+    nutool_pincfg_deinit_ice();
+    nutool_pincfg_deinit_pc();
+    nutool_pincfg_deinit_pd();
+    nutool_pincfg_deinit_pe();
+    nutool_pincfg_deinit_pf();
+    nutool_pincfg_deinit_pg();
+    nutool_pincfg_deinit_ph();
+    nutool_pincfg_deinit_pi();
+    nutool_pincfg_deinit_pj();
+    nutool_pincfg_deinit_qspi0();
+    nutool_pincfg_deinit_sd0();
+    nutool_pincfg_deinit_spi1();
+    nutool_pincfg_deinit_spi2();
+    nutool_pincfg_deinit_spi3();
+    //nutool_pincfg_deinit_spim();
+    nutool_pincfg_deinit_uart0();
+#if !(defined(BOARD_USING_LCD_ILI9341) && defined(NU_PKG_USING_ILI9341_SPI))
+    nutool_pincfg_deinit_uart1();
+#endif
+    nutool_pincfg_deinit_uart2();
+    nutool_pincfg_deinit_uart4();
+    nutool_pincfg_deinit_uart5();
+    nutool_pincfg_deinit_usb();
+    nutool_pincfg_deinit_x32();
+    nutool_pincfg_deinit_xt1();
+
+    return;
+}
+
+/*** (C) COPYRIGHT 2013-2022 Nuvoton Technology Corp. ***/

+ 273 - 0
bsp/nuvoton/numaker-iot-m467/board/NuPinConfig/nutool_pincfg.cfg

@@ -0,0 +1,273 @@
+/****************************************************************************
+ * @file     nutool_pincfg.cfg
+ * @version  V1.24
+ * @Date     2022/09/15-10:20:54 
+ * @brief    NuMicro config file
+ *
+ * @note Please do not modify this file.
+ *       Otherwise, it may not be loaded successfully.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Copyright (C) 2013-2022 Nuvoton Technology Corp. All rights reserved.
+*****************************************************************************/
+MCU:M467HJHAE(LQFP176)
+Pin1:EPWM0_CH0
+Pin2:EPWM0_CH1
+Pin3:UART1_TXD
+Pin4:UART1_RXD
+Pin5:EPWM1_CH0
+Pin6:EPWM1_CH1
+Pin7:EPWM1_CH2
+Pin8:EPWM1_CH3
+Pin9:EADC0_CH1
+Pin10:EADC0_CH0
+Pin11:VSS
+Pin12:VDD
+Pin13:SPI2_SS
+Pin14:SPI2_CLK
+Pin15:SPI2_MISO
+Pin16:SPI2_MOSI
+Pin17:PC.13
+Pin18:PD.12
+Pin19:EADC1_CH1
+Pin20:EADC1_CH0
+Pin21:VSS
+Pin22:VDD
+Pin23:I2C3_SCL
+Pin24:I2C3_SDA
+Pin25:I2C1_SCL
+Pin26:I2C1_SDA
+Pin27:PG.4
+Pin28:PI.6
+Pin29:SPI1_MISO
+Pin30:SPI1_MOSI
+Pin31:SPI1_CLK
+Pin32:SPI1_SS
+Pin33:PI.11
+Pin34:UART5_TXD
+Pin35:UART5_RXD
+Pin36:PF.9
+Pin37:PF.8
+Pin38:UART4_TXD
+Pin39:UART4_RXD
+Pin40:VBAT
+Pin41:X32_IN
+Pin42:X32_OUT
+Pin43:PH.0
+Pin44:PH.1
+Pin45:PH.2
+Pin46:PH.3
+Pin47:PH.4
+Pin48:PH.5
+Pin49:PH.6
+Pin50:PH.7
+Pin51:XT1_IN
+Pin52:XT1_OUT
+Pin53:VSS
+Pin54:VDD
+Pin55:EMAC0_RMII_MDC
+Pin56:EMAC0_RMII_MDIO
+Pin57:EMAC0_RMII_TXD0
+Pin58:EMAC0_RMII_TXD1
+Pin59:EMAC0_RMII_TXEN
+Pin60:PE.13
+Pin61:EMAC0_RMII_REFCLK
+Pin62:EMAC0_RMII_RXD0
+Pin63:EMAC0_RMII_RXD1
+Pin64:EMAC0_RMII_CRSDV
+Pin65:EMAC0_RMII_RXERR
+Pin66:SPIM_SS
+Pin67:SPIM_MISO
+Pin68:SPIM_D2
+Pin69:SPIM_D3
+Pin70:SPIM_CLK
+Pin71:SPIM_MOSI
+Pin72:VSS
+Pin73:VDD
+Pin74:LDO_CAP
+Pin75:QSPI0_MISO1
+Pin76:QSPI0_MOSI1
+Pin77:QSPI0_SS
+Pin78:QSPI0_CLK
+Pin79:QSPI0_MISO0
+Pin80:QSPI0_MOSI0
+Pin81:VDDIO
+Pin82:PE.14
+Pin83:PE.15
+Pin84:nRESET
+Pin85:ICE_DAT
+Pin86:ICE_CLK
+Pin87:PD.9
+Pin88:PD.8
+Pin89:PC.5
+Pin90:PC.4
+Pin91:UART2_nRTS
+Pin92:UART2_nCTS
+Pin93:UART2_TXD
+Pin94:UART2_RXD
+Pin95:VSS
+Pin96:VDD
+Pin97:I2C4_SCL
+Pin98:I2C4_SDA
+Pin99:PG.11
+Pin100:PG.12
+Pin101:PG.13
+Pin102:PG.14
+Pin103:PG.15
+Pin104:PJ.2
+Pin105:PJ.3
+Pin106:PJ.4
+Pin107:PJ.5
+Pin108:PJ.6
+Pin109:PJ.7
+Pin110:PH.12
+Pin111:PH.13
+Pin112:PH.14
+Pin113:PH.15
+Pin114:PD.7
+Pin115:PD.6
+Pin116:PD.5
+Pin117:PD.4
+Pin118:PD.3
+Pin119:PD.2
+Pin120:I2C2_SCL
+Pin121:I2C2_SDA
+Pin122:SD0_nCD
+Pin123:USB_VBUS
+Pin124:USB_D-
+Pin125:USB_D+
+Pin126:USB_OTG_ID
+Pin127:HSUSB_VRES
+Pin128:HSUSB_VDD33
+Pin129:HSUSB_VBUS
+Pin130:HSUSB_D-
+Pin131:HSUSB_VSS
+Pin132:HSUSB_D+
+Pin133:HSUSB_VDD12_CAP
+Pin134:HSUSB_ID
+Pin135:SD0_CMD
+Pin136:SD0_CLK
+Pin137:SD0_DAT3
+Pin138:SD0_DAT2
+Pin139:SD0_DAT1
+Pin140:SD0_DAT0
+Pin141:VSS
+Pin142:VDD
+Pin143:PE.1
+Pin144:PE.0
+Pin145:PH.8
+Pin146:PH.9
+Pin147:PH.10
+Pin148:EPWM0_CH5
+Pin149:EPWM0_CH4
+Pin150:PJ.8
+Pin151:PJ.9
+Pin152:CAN0_TXD
+Pin153:CAN0_RXD
+Pin154:HSUSB_VBUS_ST
+Pin155:HSUSB_VBUS_EN
+Pin156:SPI3_SS
+Pin157:SPI3_CLK
+Pin158:SPI3_MISO
+Pin159:SPI3_MOSI
+Pin160:VSS
+Pin161:LDO_CAP
+Pin162:VDD
+Pin163:USB_VBUS_ST
+Pin164:USB_VBUS_EN
+Pin165:PB.14
+Pin166:UART0_TXD
+Pin167:UART0_RXD
+Pin168:AVDD
+Pin169:VREF
+Pin170:AVSS
+Pin171:PB.11
+Pin172:PB.10
+Pin173:EADC0_CH9
+Pin174:EADC0_CH8
+Pin175:EADC0_CH7
+Pin176:EADC0_CH6
+GPIOpin:26
+GPIOpin:27
+GPIOpin:35
+GPIOpin:36
+GPIOpin:44
+GPIOpin:45
+GPIOpin:46
+GPIOpin:47
+GPIOpin:48
+GPIOpin:49
+GPIOpin:81
+GPIOpin:82
+GPIOpin:86
+GPIOpin:87
+GPIOpin:88
+GPIOpin:89
+GPIOpin:98
+GPIOpin:99
+GPIOpin:100
+GPIOpin:101
+GPIOpin:102
+GPIOpin:103
+GPIOpin:104
+GPIOpin:105
+GPIOpin:106
+GPIOpin:107
+GPIOpin:108
+GPIOpin:109
+GPIOpin:110
+GPIOpin:111
+GPIOpin:112
+GPIOpin:113
+GPIOpin:114
+GPIOpin:115
+GPIOpin:116
+GPIOpin:117
+GPIOpin:118
+GPIOpin:142
+GPIOpin:143
+GPIOpin:144
+GPIOpin:145
+GPIOpin:146
+GPIOpin:149
+GPIOpin:150
+SYS->GPA_MFP0 = 0x03030303
+SYS->GPA_MFP1 = 0x03030303
+SYS->GPA_MFP2 = 0x04040404
+SYS->GPA_MFP3 = 0x0E0E0E0E
+SYS->GPB_MFP0 = 0x06060101
+SYS->GPB_MFP1 = 0x01010B0B
+SYS->GPB_MFP2 = 0x00000101
+SYS->GPB_MFP3 = 0x0E000606
+SYS->GPC_MFP0 = 0x08080808
+SYS->GPC_MFP1 = 0x03030000
+SYS->GPC_MFP2 = 0x0C0C0C03
+SYS->GPC_MFP3 = 0x000E000C
+SYS->GPD_MFP0 = 0x00000606
+SYS->GPD_MFP1 = 0x00000000
+SYS->GPD_MFP2 = 0x01010000
+SYS->GPD_MFP3 = 0x000B0300
+SYS->GPE_MFP0 = 0x03030000
+SYS->GPE_MFP1 = 0x03030303
+SYS->GPE_MFP2 = 0x03030303
+SYS->GPE_MFP3 = 0x00000003
+SYS->GPF_MFP0 = 0x0A0A0E0E
+SYS->GPF_MFP1 = 0x06060A0A
+SYS->GPF_MFP2 = 0x06060000
+SYS->GPG_MFP0 = 0x05050909
+SYS->GPG_MFP1 = 0x03030300
+SYS->GPG_MFP2 = 0x00080803
+SYS->GPG_MFP3 = 0x00000000
+SYS->GPH_MFP0 = 0x00000000
+SYS->GPH_MFP1 = 0x00000000
+SYS->GPH_MFP2 = 0x0B000000
+SYS->GPH_MFP3 = 0x00000000
+SYS->GPI_MFP1 = 0x07000000
+SYS->GPI_MFP2 = 0x00070707
+SYS->GPI_MFP3 = 0x03030303
+SYS->GPJ_MFP0 = 0x00000303
+SYS->GPJ_MFP1 = 0x00000000
+SYS->GPJ_MFP2 = 0x0B0B0000
+SYS->GPJ_MFP3 = 0x00000F0F
+/*** (C) COPYRIGHT 2013-2022 Nuvoton Technology Corp. ***/

+ 94 - 0
bsp/nuvoton/numaker-iot-m467/board/NuPinConfig/nutool_pincfg.h

@@ -0,0 +1,94 @@
+/****************************************************************************
+ * @file     nutool_pincfg.h
+ * @version  V1.24
+ * @Date     2022/09/15-10:20:52
+ * @brief    NuMicro generated code file
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Copyright (C) 2013-2022 Nuvoton Technology Corp. All rights reserved.
+*****************************************************************************/
+
+#ifndef __NUTOOL_PINCFG_H__
+#define __NUTOOL_PINCFG_H__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+void nutool_pincfg_init_can0(void);
+void nutool_pincfg_deinit_can0(void);
+void nutool_pincfg_init_eadc0(void);
+void nutool_pincfg_deinit_eadc0(void);
+void nutool_pincfg_init_eadc1(void);
+void nutool_pincfg_deinit_eadc1(void);
+void nutool_pincfg_init_emac0(void);
+void nutool_pincfg_deinit_emac0(void);
+void nutool_pincfg_init_epwm0(void);
+void nutool_pincfg_deinit_epwm0(void);
+void nutool_pincfg_init_epwm1(void);
+void nutool_pincfg_deinit_epwm1(void);
+void nutool_pincfg_init_hsusb(void);
+void nutool_pincfg_deinit_hsusb(void);
+void nutool_pincfg_init_i2c1(void);
+void nutool_pincfg_deinit_i2c1(void);
+void nutool_pincfg_init_i2c2(void);
+void nutool_pincfg_deinit_i2c2(void);
+void nutool_pincfg_init_i2c3(void);
+void nutool_pincfg_deinit_i2c3(void);
+void nutool_pincfg_init_i2c4(void);
+void nutool_pincfg_deinit_i2c4(void);
+void nutool_pincfg_init_ice(void);
+void nutool_pincfg_deinit_ice(void);
+void nutool_pincfg_init_pc(void);
+void nutool_pincfg_deinit_pc(void);
+void nutool_pincfg_init_pd(void);
+void nutool_pincfg_deinit_pd(void);
+void nutool_pincfg_init_pe(void);
+void nutool_pincfg_deinit_pe(void);
+void nutool_pincfg_init_pf(void);
+void nutool_pincfg_deinit_pf(void);
+void nutool_pincfg_init_pg(void);
+void nutool_pincfg_deinit_pg(void);
+void nutool_pincfg_init_ph(void);
+void nutool_pincfg_deinit_ph(void);
+void nutool_pincfg_init_pi(void);
+void nutool_pincfg_deinit_pi(void);
+void nutool_pincfg_init_pj(void);
+void nutool_pincfg_deinit_pj(void);
+void nutool_pincfg_init_qspi0(void);
+void nutool_pincfg_deinit_qspi0(void);
+void nutool_pincfg_init_sd0(void);
+void nutool_pincfg_deinit_sd0(void);
+void nutool_pincfg_init_spi1(void);
+void nutool_pincfg_deinit_spi1(void);
+void nutool_pincfg_init_spi2(void);
+void nutool_pincfg_deinit_spi2(void);
+void nutool_pincfg_init_spi3(void);
+void nutool_pincfg_deinit_spi3(void);
+void nutool_pincfg_init_spim(void);
+void nutool_pincfg_deinit_spim(void);
+void nutool_pincfg_init_uart0(void);
+void nutool_pincfg_deinit_uart0(void);
+void nutool_pincfg_init_uart1(void);
+void nutool_pincfg_deinit_uart1(void);
+void nutool_pincfg_init_uart2(void);
+void nutool_pincfg_deinit_uart2(void);
+void nutool_pincfg_init_uart4(void);
+void nutool_pincfg_deinit_uart4(void);
+void nutool_pincfg_init_uart5(void);
+void nutool_pincfg_deinit_uart5(void);
+void nutool_pincfg_init_usb(void);
+void nutool_pincfg_deinit_usb(void);
+void nutool_pincfg_init_x32(void);
+void nutool_pincfg_deinit_x32(void);
+void nutool_pincfg_init_xt1(void);
+void nutool_pincfg_deinit_xt1(void);
+void nutool_pincfg_init(void);
+void nutool_pincfg_deinit(void);
+#ifdef __cplusplus
+}
+#endif
+#endif /*__NUTOOL_PINCFG_H__*/
+
+/*** (C) COPYRIGHT 2013-2022 Nuvoton Technology Corp. ***/

+ 19 - 0
bsp/nuvoton/numaker-iot-m467/board/SConscript

@@ -0,0 +1,19 @@
+# RT-Thread building script for component
+
+from building import *
+
+
+Import('RTT_ROOT')
+from building import *
+
+cwd = GetCurrentDir()
+src = Split("""
+NuPinConfig/nutool_pincfg.c
+""")
+
+src += Glob('*.c') + Glob('*.cpp')
+CPPPATH = [cwd, cwd + '/NuPinConfig']
+
+group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)
+
+Return('group')

+ 38 - 0
bsp/nuvoton/numaker-iot-m467/board/board.h

@@ -0,0 +1,38 @@
+/**************************************************************************//**
+*
+* @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved.
+*
+* SPDX-License-Identifier: Apache-2.0
+*
+* Change Logs:
+* Date            Author       Notes
+* 2022-2-23       Wayne        First version
+*
+******************************************************************************/
+
+#ifndef __BOARD_H__
+#define __BOARD_H__
+
+#include "rtconfig.h"
+
+// <o> Internal SRAM memory size[Kbytes]
+#define SRAM_SIZE         (512)
+#define SRAM_END          (0x20000000 + SRAM_SIZE * 1024)
+
+#if defined(__ARMCC_VERSION)
+    extern int Image$$RW_IRAM1$$ZI$$Limit;
+    #define HEAP_BEGIN      ((void *)&Image$$RW_IRAM1$$ZI$$Limit)
+#elif __ICCARM__
+    #pragma section="CSTACK"
+    #define HEAP_BEGIN      (__segment_end("CSTACK"))
+#else
+    extern int __bss_end;
+    #define HEAP_BEGIN      ((void *)&__bss_end)
+#endif
+
+#define HEAP_END        (void *)SRAM_END
+
+void rt_hw_board_init(void);
+void rt_hw_cpu_reset(void);
+
+#endif /* BOARD_H_ */

+ 303 - 0
bsp/nuvoton/numaker-iot-m467/board/board_dev.c

@@ -0,0 +1,303 @@
+/**************************************************************************//**
+*
+* @copyright (C) 2019 Nuvoton Technology Corp. All rights reserved.
+*
+* SPDX-License-Identifier: Apache-2.0
+*
+* Change Logs:
+* Date            Author       Notes
+* 2020-1-16       Wayne        First version
+*
+******************************************************************************/
+
+#include <rtdevice.h>
+#include <drv_gpio.h>
+
+#if defined(BOARD_USING_STORAGE_SPIFLASH)
+#if defined(RT_USING_SFUD)
+    #include "spi_flash.h"
+    #include "spi_flash_sfud.h"
+#endif
+
+#include "drv_qspi.h"
+
+#define W25X_REG_READSTATUS    (0x05)
+#define W25X_REG_READSTATUS2   (0x35)
+#define W25X_REG_WRITEENABLE   (0x06)
+#define W25X_REG_WRITESTATUS   (0x01)
+#define W25X_REG_QUADENABLE    (0x02)
+
+static rt_uint8_t SpiFlash_ReadStatusReg(struct rt_qspi_device *qspi_device)
+{
+    rt_uint8_t u8Val;
+    rt_err_t result = RT_EOK;
+    rt_uint8_t w25x_txCMD1 = W25X_REG_READSTATUS;
+
+    result = rt_qspi_send_then_recv(qspi_device, &w25x_txCMD1, 1, &u8Val, 1);
+    RT_ASSERT(result > 0);
+
+    return u8Val;
+}
+
+static rt_uint8_t SpiFlash_ReadStatusReg2(struct rt_qspi_device *qspi_device)
+{
+    rt_uint8_t u8Val;
+    rt_err_t result = RT_EOK;
+    rt_uint8_t w25x_txCMD1 = W25X_REG_READSTATUS2;
+
+    result = rt_qspi_send_then_recv(qspi_device, &w25x_txCMD1, 1, &u8Val, 1);
+    RT_ASSERT(result > 0);
+
+    return u8Val;
+}
+
+static rt_err_t SpiFlash_WriteStatusReg(struct rt_qspi_device *qspi_device, uint8_t u8Value1, uint8_t u8Value2)
+{
+    rt_uint8_t w25x_txCMD1;
+    rt_uint8_t au8Val[2];
+    rt_err_t result;
+    struct rt_qspi_message qspi_message = {0};
+
+    /* Enable WE */
+    w25x_txCMD1 = W25X_REG_WRITEENABLE;
+    result = rt_qspi_send(qspi_device, &w25x_txCMD1, sizeof(w25x_txCMD1));
+    if (result != sizeof(w25x_txCMD1))
+        goto exit_SpiFlash_WriteStatusReg;
+
+    /* Prepare status-1, 2 data */
+    au8Val[0] = u8Value1;
+    au8Val[1] = u8Value2;
+
+    /* 1-bit mode: Instruction+payload */
+    qspi_message.instruction.content = W25X_REG_WRITESTATUS;
+    qspi_message.instruction.qspi_lines = 1;
+
+    qspi_message.qspi_data_lines   = 1;
+    qspi_message.parent.cs_take    = 1;
+    qspi_message.parent.cs_release = 1;
+    qspi_message.parent.send_buf   = &au8Val[0];
+    qspi_message.parent.length     = sizeof(au8Val);
+    qspi_message.parent.next       = RT_NULL;
+
+    if (rt_qspi_transfer_message(qspi_device, &qspi_message) != sizeof(au8Val))
+    {
+        result = -RT_ERROR;
+    }
+
+    result  = RT_EOK;
+
+exit_SpiFlash_WriteStatusReg:
+
+    return result;
+}
+
+static void SpiFlash_WaitReady(struct rt_qspi_device *qspi_device)
+{
+    volatile uint8_t u8ReturnValue;
+
+    do
+    {
+        u8ReturnValue = SpiFlash_ReadStatusReg(qspi_device);
+        u8ReturnValue = u8ReturnValue & 1;
+    }
+    while (u8ReturnValue != 0);   // check the BUSY bit
+}
+
+static void SpiFlash_EnterQspiMode(struct rt_qspi_device *qspi_device)
+{
+    rt_err_t result = RT_EOK;
+
+    uint8_t u8Status1 = SpiFlash_ReadStatusReg(qspi_device);
+    uint8_t u8Status2 = SpiFlash_ReadStatusReg2(qspi_device);
+
+    u8Status2 |= W25X_REG_QUADENABLE;
+
+    result = SpiFlash_WriteStatusReg(qspi_device, u8Status1, u8Status2);
+    RT_ASSERT(result == RT_EOK);
+
+    SpiFlash_WaitReady(qspi_device);
+}
+
+static void SpiFlash_ExitQspiMode(struct rt_qspi_device *qspi_device)
+{
+    rt_err_t result = RT_EOK;
+    uint8_t u8Status1 = SpiFlash_ReadStatusReg(qspi_device);
+    uint8_t u8Status2 = SpiFlash_ReadStatusReg2(qspi_device);
+
+    u8Status2 &= ~W25X_REG_QUADENABLE;
+
+    result = SpiFlash_WriteStatusReg(qspi_device, u8Status1, u8Status2);
+    RT_ASSERT(result == RT_EOK);
+
+    SpiFlash_WaitReady(qspi_device);
+}
+
+static int rt_hw_spiflash_init(void)
+{
+    /*
+        Don't forget to switch SPIM pins to QSPI0 pins on board.
+        CS:   R12-Open, R13-Close
+        CLK:  R14-Open, R15-Close
+        MOSI: R16-Open, R17-Close
+        MISO: R18-Open, R19-Close
+        IO2:  R20-Open, R21-Close
+        IO3:  R22-Open, R23-Close
+    */
+    if (nu_qspi_bus_attach_device("qspi0", "qspi01", 4, SpiFlash_EnterQspiMode, SpiFlash_ExitQspiMode) != RT_EOK)
+        return -1;
+
+#if defined(RT_USING_SFUD)
+    if (rt_sfud_flash_probe(FAL_USING_NOR_FLASH_DEV_NAME, "qspi01") == RT_NULL)
+    {
+        return -(RT_ERROR);
+    }
+#endif
+
+    return 0;
+}
+INIT_COMPONENT_EXPORT(rt_hw_spiflash_init);
+#endif /* BOARD_USING_STORAGE_SPIFLASH */
+
+#if defined(BOARD_USING_NCT7717U)
+
+#include "sensor_nct7717u.h"
+
+int rt_hw_nct7717u_port(void)
+{
+    struct rt_sensor_config cfg;
+
+    cfg.intf.dev_name = "i2c2";
+    cfg.irq_pin.pin = RT_PIN_NONE;
+
+    return rt_hw_nct7717u_init("nct7717u", &cfg);
+}
+INIT_APP_EXPORT(rt_hw_nct7717u_port);
+#endif /* BOARD_USING_NCT7717U */
+
+
+#if defined(BOARD_USING_MPU6500) && defined(PKG_USING_MPU6XXX)
+
+#include "sensor_inven_mpu6xxx.h"
+
+int rt_hw_mpu6xxx_port(void)
+{
+    struct rt_sensor_config cfg;
+    rt_base_t mpu_int = NU_GET_PININDEX(NU_PD, 2);
+
+    cfg.intf.dev_name = "i2c2";
+    cfg.intf.user_data = (void *)MPU6XXX_ADDR_DEFAULT;
+    cfg.irq_pin.pin = mpu_int;
+
+    return rt_hw_mpu6xxx_init("mpu", &cfg);
+}
+INIT_APP_EXPORT(rt_hw_mpu6xxx_port);
+#endif /* BOARD_USING_MPU6500 */
+
+
+#if defined(BOARD_USING_ESP8266)
+
+static int rt_hw_esp8266_port(void)
+{
+    rt_base_t esp_rst_pin = NU_GET_PININDEX(NU_PC, 4);
+
+    /* ESP8266 reset pin PC.4 */
+    rt_pin_mode(esp_rst_pin, PIN_MODE_OUTPUT);
+    rt_pin_write(esp_rst_pin, 1);
+
+    return 0;
+}
+INIT_COMPONENT_EXPORT(rt_hw_esp8266_port);
+
+#endif /* BOARD_USING_ESP8266  */
+
+#if defined(BOARD_USING_LCD_ILI9341) && defined(NU_PKG_USING_ILI9341_SPI)
+
+#if defined(NU_PKG_USING_ADC_TOUCH_SW)
+
+#include "adc_touch.h"
+#include "touch_sw.h"
+#include "NuMicro.h"
+
+#define NU_MFP_POS(PIN)          ((PIN % 4) * 8)
+#define NU_MFP_MSK(PIN)          (0x1ful << NU_MFP_POS(PIN))
+
+S_CALIBRATION_MATRIX g_sCalMat = { 97, 6214, -3216652, 4844, -30, -2333200, 65536 };
+
+static void nu_pin_func(rt_base_t pin, int data)
+{
+    uint32_t pin_index      = NU_GET_PINS(pin);
+    uint32_t port_index     = NU_GET_PORT(pin);
+    __IO uint32_t *GPx_MFPx = ((__IO uint32_t *) &SYS->GPA_MFP0) + port_index * 4 + (pin_index / 4);
+    uint32_t MFP_Msk        = NU_MFP_MSK(pin_index);
+
+    *GPx_MFPx  = (*GPx_MFPx & (~MFP_Msk)) | data;
+}
+
+static void tp_switch_to_analog(rt_base_t pin)
+{
+    GPIO_T *port = (GPIO_T *)(GPIOA_BASE + (0x40) * NU_GET_PORT(pin));
+
+    if (pin == NU_GET_PININDEX(NU_PB, 6))
+        nu_pin_func(pin, SYS_GPB_MFP1_PB6MFP_EADC0_CH6);
+    else if (pin == NU_GET_PININDEX(NU_PB, 9))
+        nu_pin_func(pin, SYS_GPB_MFP2_PB9MFP_EADC0_CH9);
+
+    GPIO_DISABLE_DIGITAL_PATH(port, NU_GET_PIN_MASK(NU_GET_PINS(pin)));
+}
+
+static void tp_switch_to_digital(rt_base_t pin)
+{
+    GPIO_T *port = (GPIO_T *)(GPIOA_BASE + (0x40) * NU_GET_PORT(pin));
+
+    nu_pin_func(pin, 0);
+
+    /* Enable digital path on these EADC pins */
+    GPIO_ENABLE_DIGITAL_PATH(port, NU_GET_PIN_MASK(NU_GET_PINS(pin)));
+}
+
+static S_TOUCH_SW sADCTP =
+{
+    .adc_name    = "eadc0",
+    .i32ADCChnYU = 6,
+    .i32ADCChnXR = 9,
+    .pin =
+    {
+        NU_GET_PININDEX(NU_PB, 7), // XL
+        NU_GET_PININDEX(NU_PB, 6), // YU
+        NU_GET_PININDEX(NU_PB, 9), // XR
+        NU_GET_PININDEX(NU_PB, 8), // YD
+    },
+    .switch_to_analog  = tp_switch_to_analog,
+    .switch_to_digital = tp_switch_to_digital,
+};
+
+#endif
+
+#include <lcd_ili9341.h>
+#if defined(PKG_USING_GUIENGINE)
+    #include <rtgui/driver.h>
+#endif
+int rt_hw_ili9341_port(void)
+{
+    if (rt_hw_lcd_ili9341_spi_init("spi2", RT_NULL) != RT_EOK)
+        return -1;
+
+    rt_hw_lcd_ili9341_init();
+
+#if defined(PKG_USING_GUIENGINE)
+    rt_device_t lcd_ili9341;
+    lcd_ili9341 = rt_device_find("lcd");
+    if (lcd_ili9341)
+    {
+        rtgui_graphic_set_device(lcd_ili9341);
+    }
+#endif
+
+#if defined(NU_PKG_USING_ADC_TOUCH_SW)
+    nu_adc_touch_sw_register(&sADCTP);
+#endif
+
+    return 0;
+}
+INIT_COMPONENT_EXPORT(rt_hw_ili9341_port);
+#endif /* BOARD_USING_LCD_ILI9341 */

+ 65 - 0
bsp/nuvoton/numaker-iot-m467/board/fal_cfg.h

@@ -0,0 +1,65 @@
+/**************************************************************************//**
+*
+* @copyright (C) 2020 Nuvoton Technology Corp. All rights reserved.
+*
+* SPDX-License-Identifier: Apache-2.0
+*
+* Change Logs:
+* Date            Author       Notes
+* 2022-4-1        Wayne        First version
+*
+******************************************************************************/
+
+#ifndef _FAL_CFG_H_
+#define _FAL_CFG_H_
+
+#include <rtconfig.h>
+#include <board.h>
+
+/* ===================== Flash device Configuration ========================= */
+#if defined(FAL_PART_HAS_TABLE_CFG)
+
+#if defined(BSP_USING_FMC)
+    extern const struct fal_flash_dev Onchip_aprom_flash;
+    extern const struct fal_flash_dev Onchip_ldrom_flash;
+#endif
+
+#if defined(FAL_USING_SFUD_PORT)
+    extern struct fal_flash_dev nor_flash0;
+#endif
+
+#if defined(BSP_USING_FMC) && defined(FAL_USING_SFUD_PORT)
+#define FAL_FLASH_DEV_TABLE         \
+{                                   \
+    &Onchip_aprom_flash,            \
+      &Onchip_ldrom_flash,            \
+    &nor_flash0,                    \
+}
+#elif defined(BSP_USING_FMC)
+#define FAL_FLASH_DEV_TABLE         \
+{                                   \
+    &Onchip_aprom_flash,            \
+      &Onchip_ldrom_flash,            \
+    &nor_flash0,                    \
+}
+#elif defined(FAL_USING_SFUD_PORT)
+#define FAL_FLASH_DEV_TABLE         \
+{                                   \
+    &nor_flash0,                    \
+}
+#else
+#define FAL_FLASH_DEV_TABLE         \
+{                                   \
+}
+#endif
+
+#define FAL_PART_TABLE                                                        \
+{                                                                             \
+    {FAL_PART_MAGIC_WORD,   "filesystem",     FAL_USING_NOR_FLASH_DEV_NAME,    0,   4*1024*1024, 0},  \
+    {FAL_PART_MAGIC_WORD,        "ldrom",     "OnChip_LDROM",                  0,        0x1000, 0},  \
+    {FAL_PART_MAGIC_WORD,        "aprom",     "OnChip_APROM",            0x60000,       0x20000, 0},  \
+}
+
+#endif /* FAL_PART_HAS_TABLE_CFG */
+
+#endif /* _FAL_CFG_H_ */

+ 26 - 0
bsp/nuvoton/numaker-iot-m467/board/nutool_clkcfg.h

@@ -0,0 +1,26 @@
+/****************************************************************************
+ * @file     nutool_clkcfg.h
+ * @version  V1.05
+ * @Date     2020/04/15-11:28:38
+ * @brief    NuMicro generated code file
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * Copyright (C) 2013-2020 Nuvoton Technology Corp. All rights reserved.
+*****************************************************************************/
+
+#ifndef __NUTOOL_CLKCFG_H__
+#define __NUTOOL_CLKCFG_H__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+#undef  __HXT
+#define __HXT         (12000000UL)  /*!< High Speed External Crystal Clock Frequency */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*__NUTOOL_CLKCFG_H__*/
+
+/*** (C) COPYRIGHT 2013-2020 Nuvoton Technology Corp. ***/

+ 1388 - 0
bsp/nuvoton/numaker-iot-m467/board/nutool_modclkcfg.c

@@ -0,0 +1,1388 @@
+#include "m460.h"
+#include "rtconfig.h"
+
+void nutool_modclkcfg_init_acmp01(void)
+{
+    CLK_EnableModuleClock(ACMP01_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_acmp01(void)
+{
+    CLK_DisableModuleClock(ACMP01_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_bpwm0(void)
+{
+    CLK_EnableModuleClock(BPWM0_MODULE);
+    CLK_SetModuleClock(BPWM0_MODULE, CLK_CLKSEL2_BPWM0SEL_PCLK0, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_bpwm0(void)
+{
+    CLK_DisableModuleClock(BPWM0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_bpwm1(void)
+{
+    CLK_EnableModuleClock(BPWM1_MODULE);
+    CLK_SetModuleClock(BPWM1_MODULE, CLK_CLKSEL2_BPWM1SEL_PCLK1, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_bpwm1(void)
+{
+    CLK_DisableModuleClock(BPWM1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_canfd0(void)
+{
+    CLK_SetModuleClock(CANFD0_MODULE, CLK_CLKSEL0_CANFD0SEL_HCLK, CLK_CLKDIV5_CANFD0(1));
+    CLK_EnableModuleClock(CANFD0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_canfd0(void)
+{
+    CLK_DisableModuleClock(CANFD0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_canfd1(void)
+{
+    CLK_SetModuleClock(CANFD1_MODULE, CLK_CLKSEL0_CANFD1SEL_HCLK, CLK_CLKDIV5_CANFD1(1));
+    CLK_EnableModuleClock(CANFD1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_canfd1(void)
+{
+    CLK_DisableModuleClock(CANFD1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_canfd2(void)
+{
+    CLK_SetModuleClock(CANFD2_MODULE, CLK_CLKSEL0_CANFD2SEL_HCLK, CLK_CLKDIV5_CANFD2(1));
+    CLK_EnableModuleClock(CANFD2_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_canfd2(void)
+{
+    CLK_DisableModuleClock(CANFD2_MODULE);
+
+    return;
+}
+
+
+void nutool_modclkcfg_init_canfd3(void)
+{
+    CLK_SetModuleClock(CANFD3_MODULE, CLK_CLKSEL0_CANFD3SEL_HCLK, CLK_CLKDIV5_CANFD3(1));
+    CLK_EnableModuleClock(CANFD3_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_canfd3(void)
+{
+    CLK_DisableModuleClock(CANFD3_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_crc(void)
+{
+    CLK_EnableModuleClock(CRC_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_crc(void)
+{
+    CLK_DisableModuleClock(CRC_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_crpt(void)
+{
+    CLK_EnableModuleClock(CRPT_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_crpt(void)
+{
+    CLK_DisableModuleClock(CRPT_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_dac(void)
+{
+    CLK_EnableModuleClock(DAC_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_dac(void)
+{
+    CLK_DisableModuleClock(DAC_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_eadc0(void)
+{
+    CLK_EnableModuleClock(EADC0_MODULE);
+    CLK_SetModuleClock(EADC0_MODULE, CLK_CLKSEL0_EADC0SEL_PLL_DIV2, CLK_CLKDIV0_EADC0(12));
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_eadc0(void)
+{
+    CLK_DisableModuleClock(EADC0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_eadc1(void)
+{
+    CLK_EnableModuleClock(EADC1_MODULE);
+    CLK_SetModuleClock(EADC1_MODULE, CLK_CLKSEL0_EADC1SEL_PLL_DIV2, CLK_CLKDIV2_EADC1(12));
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_eadc1(void)
+{
+    CLK_DisableModuleClock(EADC1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_eadc2(void)
+{
+    CLK_EnableModuleClock(EADC2_MODULE);
+    CLK_SetModuleClock(EADC2_MODULE, CLK_CLKSEL0_EADC2SEL_PLL_DIV2, CLK_CLKDIV5_EADC2(12));
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_eadc2(void)
+{
+    CLK_DisableModuleClock(EADC2_MODULE);
+
+    return;
+}
+
+
+void nutool_modclkcfg_init_ebi(void)
+{
+    CLK_EnableModuleClock(EBI_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_ebi(void)
+{
+    CLK_DisableModuleClock(EBI_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_ecap0(void)
+{
+    CLK_EnableModuleClock(ECAP0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_ecap0(void)
+{
+    CLK_DisableModuleClock(ECAP0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_ecap1(void)
+{
+    CLK_EnableModuleClock(ECAP1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_ecap1(void)
+{
+    CLK_DisableModuleClock(ECAP1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_ecap2(void)
+{
+    CLK_EnableModuleClock(ECAP2_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_ecap2(void)
+{
+    CLK_DisableModuleClock(ECAP2_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_ecap3(void)
+{
+    CLK_EnableModuleClock(ECAP3_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_ecap3(void)
+{
+    CLK_DisableModuleClock(ECAP3_MODULE);
+
+    return;
+}
+
+
+void nutool_modclkcfg_init_emac(void)
+{
+    CLK_EnableModuleClock(EMAC0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_emac(void)
+{
+    CLK_DisableModuleClock(EMAC0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_epwm0(void)
+{
+    CLK_EnableModuleClock(EPWM0_MODULE);
+    CLK_SetModuleClock(EPWM0_MODULE, CLK_CLKSEL2_EPWM0SEL_PCLK0, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_epwm0(void)
+{
+    CLK_DisableModuleClock(EPWM0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_epwm1(void)
+{
+    CLK_EnableModuleClock(EPWM1_MODULE);
+    CLK_SetModuleClock(EPWM1_MODULE, CLK_CLKSEL2_EPWM1SEL_PCLK1, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_epwm1(void)
+{
+    CLK_DisableModuleClock(EPWM1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_fmcidle(void)
+{
+    CLK_EnableModuleClock(FMCIDLE_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_fmcidle(void)
+{
+    CLK_DisableModuleClock(FMCIDLE_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_hsotg(void)
+{
+    CLK_EnableModuleClock(HSOTG_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_hsotg(void)
+{
+    CLK_DisableModuleClock(HSOTG_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_hsusbd(void)
+{
+    CLK_EnableModuleClock(HSUSBD_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_hsusbd(void)
+{
+    CLK_DisableModuleClock(HSUSBD_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_i2c0(void)
+{
+    CLK_EnableModuleClock(I2C0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_i2c0(void)
+{
+    CLK_DisableModuleClock(I2C0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_i2c1(void)
+{
+    CLK_EnableModuleClock(I2C1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_i2c1(void)
+{
+    CLK_DisableModuleClock(I2C1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_i2c2(void)
+{
+    CLK_EnableModuleClock(I2C2_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_i2c2(void)
+{
+    CLK_DisableModuleClock(I2C2_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_i2c3(void)
+{
+    CLK_EnableModuleClock(I2C3_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_i2c3(void)
+{
+    CLK_DisableModuleClock(I2C3_MODULE);
+
+    return;
+}
+void nutool_modclkcfg_init_i2c4(void)
+{
+    CLK_EnableModuleClock(I2C4_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_i2c4(void)
+{
+    CLK_DisableModuleClock(I2C4_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_i2s0(void)
+{
+    CLK_EnableModuleClock(I2S0_MODULE);
+    CLK_SetModuleClock(I2S0_MODULE, CLK_CLKSEL3_I2S0SEL_HXT, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_i2s0(void)
+{
+    CLK_DisableModuleClock(I2S0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_i2s1(void)
+{
+    CLK_EnableModuleClock(I2S1_MODULE);
+    CLK_SetModuleClock(I2S1_MODULE, CLK_CLKSEL2_I2S1SEL_HXT, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_i2s1(void)
+{
+    CLK_DisableModuleClock(I2S1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_isp(void)
+{
+    CLK_EnableModuleClock(ISP_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_isp(void)
+{
+    CLK_DisableModuleClock(ISP_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_otg(void)
+{
+    CLK_EnableModuleClock(OTG_MODULE);
+    CLK_SetModuleClock(OTG_MODULE, MODULE_NoMsk, CLK_CLKDIV0_USB(1));
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_otg(void)
+{
+    CLK_DisableModuleClock(OTG_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_pdma(void)
+{
+    CLK_EnableModuleClock(PDMA0_MODULE);
+    CLK_EnableModuleClock(PDMA1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_pdma(void)
+{
+    CLK_DisableModuleClock(PDMA0_MODULE);
+    CLK_DisableModuleClock(PDMA1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_eqei0(void)
+{
+    CLK_EnableModuleClock(EQEI0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_eqei0(void)
+{
+    CLK_DisableModuleClock(EQEI0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_eqei1(void)
+{
+    CLK_EnableModuleClock(EQEI1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_eqei1(void)
+{
+    CLK_DisableModuleClock(EQEI1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_eqei2(void)
+{
+    CLK_EnableModuleClock(EQEI2_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_eqei2(void)
+{
+    CLK_DisableModuleClock(EQEI2_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_eqei3(void)
+{
+    CLK_EnableModuleClock(EQEI3_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_eqei3(void)
+{
+    CLK_DisableModuleClock(EQEI3_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_qspi0(void)
+{
+    CLK_EnableModuleClock(QSPI0_MODULE);
+    CLK_SetModuleClock(QSPI0_MODULE, CLK_CLKSEL2_QSPI0SEL_PCLK0, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_qspi0(void)
+{
+    CLK_DisableModuleClock(QSPI0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_qspi1(void)
+{
+    CLK_EnableModuleClock(QSPI1_MODULE);
+    CLK_SetModuleClock(QSPI1_MODULE, CLK_CLKSEL2_QSPI1SEL_PCLK1, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_qspi1(void)
+{
+    CLK_DisableModuleClock(QSPI1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_rtc(void)
+{
+    CLK_EnableModuleClock(RTC_MODULE);
+    CLK_SetModuleClock(RTC_MODULE, RTC_LXTCTL_RTCCKSEL_LXT, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_rtc(void)
+{
+    CLK_DisableModuleClock(RTC_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_sc0(void)
+{
+    CLK_EnableModuleClock(SC0_MODULE);
+    CLK_SetModuleClock(SC0_MODULE, CLK_CLKSEL3_SC0SEL_HXT, CLK_CLKDIV1_SC0(1));
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_sc0(void)
+{
+    CLK_DisableModuleClock(SC0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_sc1(void)
+{
+    CLK_EnableModuleClock(SC1_MODULE);
+    CLK_SetModuleClock(SC1_MODULE, CLK_CLKSEL3_SC1SEL_HXT, CLK_CLKDIV1_SC1(1));
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_sc1(void)
+{
+    CLK_DisableModuleClock(SC1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_sc2(void)
+{
+    CLK_EnableModuleClock(SC2_MODULE);
+    CLK_SetModuleClock(SC2_MODULE, CLK_CLKSEL3_SC2SEL_HXT, CLK_CLKDIV1_SC2(1));
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_sc2(void)
+{
+    CLK_DisableModuleClock(SC2_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_sdh0(void)
+{
+    CLK_EnableModuleClock(SDH0_MODULE);
+    CLK_SetModuleClock(SDH0_MODULE, CLK_CLKSEL0_SDH0SEL_HCLK, CLK_CLKDIV0_SDH0(1));
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_sdh0(void)
+{
+    CLK_DisableModuleClock(SDH0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_sdh1(void)
+{
+    CLK_EnableModuleClock(SDH1_MODULE);
+    CLK_SetModuleClock(SDH1_MODULE, CLK_CLKSEL0_SDH1SEL_HCLK, CLK_CLKDIV3_SDH1(1));
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_sdh1(void)
+{
+    CLK_DisableModuleClock(SDH1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_spi0(void)
+{
+    CLK_EnableModuleClock(SPI0_MODULE);
+    CLK_SetModuleClock(SPI0_MODULE, CLK_CLKSEL2_SPI0SEL_PCLK1, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_spi0(void)
+{
+    CLK_DisableModuleClock(SPI0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_spi1(void)
+{
+    CLK_EnableModuleClock(SPI1_MODULE);
+    CLK_SetModuleClock(SPI1_MODULE, CLK_CLKSEL2_SPI1SEL_PCLK0, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_spi1(void)
+{
+    CLK_DisableModuleClock(SPI1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_spi2(void)
+{
+    CLK_EnableModuleClock(SPI2_MODULE);
+    CLK_SetModuleClock(SPI2_MODULE, CLK_CLKSEL3_SPI2SEL_PCLK1, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_spi2(void)
+{
+    CLK_DisableModuleClock(SPI2_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_spi3(void)
+{
+    CLK_EnableModuleClock(SPI3_MODULE);
+    CLK_SetModuleClock(SPI3_MODULE, CLK_CLKSEL3_SPI3SEL_PCLK0, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_spi3(void)
+{
+    CLK_DisableModuleClock(SPI3_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_spi4(void)
+{
+    CLK_EnableModuleClock(SPI4_MODULE);
+    CLK_SetModuleClock(SPI4_MODULE, CLK_CLKSEL4_SPI4SEL_PCLK1, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_spi4(void)
+{
+    CLK_DisableModuleClock(SPI4_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_spi5(void)
+{
+    CLK_EnableModuleClock(SPI5_MODULE);
+    CLK_SetModuleClock(SPI5_MODULE, CLK_CLKSEL4_SPI5SEL_PCLK0, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_spi5(void)
+{
+    CLK_DisableModuleClock(SPI5_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_spi6(void)
+{
+    CLK_EnableModuleClock(SPI6_MODULE);
+    CLK_SetModuleClock(SPI6_MODULE, CLK_CLKSEL4_SPI6SEL_PCLK1, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_spi6(void)
+{
+    CLK_DisableModuleClock(SPI6_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_spi7(void)
+{
+    CLK_EnableModuleClock(SPI7_MODULE);
+    CLK_SetModuleClock(SPI7_MODULE, CLK_CLKSEL4_SPI7SEL_PCLK0, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_spi7(void)
+{
+    CLK_DisableModuleClock(SPI7_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_spi8(void)
+{
+    CLK_EnableModuleClock(SPI8_MODULE);
+    CLK_SetModuleClock(SPI8_MODULE, CLK_CLKSEL4_SPI8SEL_PCLK1, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_spi8(void)
+{
+    CLK_DisableModuleClock(SPI8_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_spi9(void)
+{
+    CLK_EnableModuleClock(SPI9_MODULE);
+    CLK_SetModuleClock(SPI9_MODULE, CLK_CLKSEL4_SPI9SEL_PCLK0, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_spi9(void)
+{
+    CLK_DisableModuleClock(SPI9_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_spi10(void)
+{
+    CLK_EnableModuleClock(SPI10_MODULE);
+    CLK_SetModuleClock(SPI10_MODULE, CLK_CLKSEL4_SPI10SEL_PCLK1, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_spi10(void)
+{
+    CLK_DisableModuleClock(SPI10_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_spim(void)
+{
+    CLK_EnableModuleClock(SPIM_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_spim(void)
+{
+    CLK_DisableModuleClock(SPIM_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_systick(void)
+{
+    CLK_EnableSysTick(CLK_CLKSEL0_STCLKSEL_HCLK, 0);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_systick(void)
+{
+    CLK_DisableSysTick();
+
+    return;
+}
+
+void nutool_modclkcfg_init_tmr0(void)
+{
+    CLK_EnableModuleClock(TMR0_MODULE);
+    CLK_SetModuleClock(TMR0_MODULE, CLK_CLKSEL1_TMR0SEL_HXT, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_tmr0(void)
+{
+    CLK_DisableModuleClock(TMR0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_tmr1(void)
+{
+    CLK_EnableModuleClock(TMR1_MODULE);
+    CLK_SetModuleClock(TMR1_MODULE, CLK_CLKSEL1_TMR1SEL_HXT, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_tmr1(void)
+{
+    CLK_DisableModuleClock(TMR1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_tmr2(void)
+{
+    CLK_EnableModuleClock(TMR2_MODULE);
+    CLK_SetModuleClock(TMR2_MODULE, CLK_CLKSEL1_TMR2SEL_HXT, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_tmr2(void)
+{
+    CLK_DisableModuleClock(TMR2_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_tmr3(void)
+{
+    CLK_EnableModuleClock(TMR3_MODULE);
+    CLK_SetModuleClock(TMR3_MODULE, CLK_CLKSEL1_TMR3SEL_HXT, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_tmr3(void)
+{
+    CLK_DisableModuleClock(TMR3_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_uart0(void)
+{
+    CLK_EnableModuleClock(UART0_MODULE);
+    CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART0SEL_HXT, CLK_CLKDIV0_UART0(1));
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_uart0(void)
+{
+    CLK_DisableModuleClock(UART0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_uart1(void)
+{
+    CLK_EnableModuleClock(UART1_MODULE);
+    CLK_SetModuleClock(UART1_MODULE, CLK_CLKSEL1_UART1SEL_HXT, CLK_CLKDIV0_UART1(1));
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_uart1(void)
+{
+    CLK_DisableModuleClock(UART1_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_uart2(void)
+{
+    CLK_EnableModuleClock(UART2_MODULE);
+    CLK_SetModuleClock(UART2_MODULE, CLK_CLKSEL3_UART2SEL_HXT, CLK_CLKDIV4_UART2(1));
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_uart2(void)
+{
+    CLK_DisableModuleClock(UART2_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_uart3(void)
+{
+    CLK_EnableModuleClock(UART3_MODULE);
+    CLK_SetModuleClock(UART3_MODULE, CLK_CLKSEL3_UART3SEL_HXT, CLK_CLKDIV4_UART3(1));
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_uart3(void)
+{
+    CLK_DisableModuleClock(UART3_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_uart4(void)
+{
+    CLK_EnableModuleClock(UART4_MODULE);
+    CLK_SetModuleClock(UART4_MODULE, CLK_CLKSEL3_UART4SEL_HXT, CLK_CLKDIV4_UART4(1));
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_uart4(void)
+{
+    CLK_DisableModuleClock(UART4_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_uart5(void)
+{
+    CLK_EnableModuleClock(UART5_MODULE);
+    CLK_SetModuleClock(UART5_MODULE, CLK_CLKSEL3_UART5SEL_HXT, CLK_CLKDIV4_UART5(1));
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_uart5(void)
+{
+    CLK_DisableModuleClock(UART5_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_usbd(void)
+{
+    CLK_EnableModuleClock(USBD_MODULE);
+    CLK_SetModuleClock(USBD_MODULE, CLK_CLKSEL0_USBSEL_PLL_DIV2, CLK_CLKDIV0_USB(2));
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_usbd(void)
+{
+    CLK_DisableModuleClock(USBD_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_usbh(void)
+{
+    CLK_EnableModuleClock(USBH_MODULE);
+    CLK_SetModuleClock(USBH_MODULE, CLK_CLKSEL0_USBSEL_PLL_DIV2, CLK_CLKDIV0_USB(2));
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_usbh(void)
+{
+    CLK_DisableModuleClock(USBH_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_usci0(void)
+{
+    CLK_EnableModuleClock(USCI0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_usci0(void)
+{
+    CLK_DisableModuleClock(USCI0_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_wdt(void)
+{
+    CLK_EnableModuleClock(WDT_MODULE);
+    CLK_SetModuleClock(WDT_MODULE, CLK_CLKSEL1_WDTSEL_LXT, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_wdt(void)
+{
+    CLK_DisableModuleClock(WDT_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_wwdt(void)
+{
+    CLK_EnableModuleClock(WWDT_MODULE);
+    CLK_SetModuleClock(WWDT_MODULE, CLK_CLKSEL1_WWDTSEL_HCLK_DIV2048, MODULE_NoMsk);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_wwdt(void)
+{
+    CLK_DisableModuleClock(WWDT_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_hbi(void)
+{
+    CLK_EnableModuleClock(HBI_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_deinit_hbi(void)
+{
+    CLK_DisableModuleClock(HBI_MODULE);
+
+    return;
+}
+
+void nutool_modclkcfg_init_base(void)
+{
+    /* Enable clock source */
+    CLK_EnableXtalRC(CLK_PWRCTL_HIRCEN_Msk | CLK_PWRCTL_LXTEN_Msk | CLK_PWRCTL_HXTEN_Msk);
+
+    /* Waiting for clock source ready */
+    CLK_WaitClockReady(CLK_STATUS_HIRCSTB_Msk | CLK_STATUS_LXTSTB_Msk | CLK_STATUS_HXTSTB_Msk);
+
+    /* Set core clock to 192MHz */
+    CLK_SetCoreClock(FREQ_192MHZ);
+
+    /* Set PCLK-related clock */
+    CLK->PCLKDIV = (CLK_PCLKDIV_PCLK0DIV2 | CLK_PCLKDIV_PCLK1DIV2);
+
+    /* Enable all GPIO clock */
+    CLK->AHBCLK0 |= CLK_AHBCLK0_GPACKEN_Msk | CLK_AHBCLK0_GPBCKEN_Msk | CLK_AHBCLK0_GPCCKEN_Msk | CLK_AHBCLK0_GPDCKEN_Msk |
+                    CLK_AHBCLK0_GPECKEN_Msk | CLK_AHBCLK0_GPFCKEN_Msk | CLK_AHBCLK0_GPGCKEN_Msk | CLK_AHBCLK0_GPHCKEN_Msk;
+    CLK->AHBCLK1 |= CLK_AHBCLK1_GPICKEN_Msk | CLK_AHBCLK1_GPJCKEN_Msk;
+
+    /* Set XT1_OUT(PF.2) and XT1_IN(PF.3) to input mode */
+    PF->MODE &= ~(GPIO_MODE_MODE2_Msk | GPIO_MODE_MODE3_Msk);
+
+    return;
+}
+
+void nutool_modclkcfg_init(void)
+{
+    /*---------------------------------------------------------------------------------------------------------*/
+    /* Init System Clock                                                                                       */
+    /*---------------------------------------------------------------------------------------------------------*/
+    //CLK->PWRCTL = (CLK->PWRCTL & ~(0x0000000Ful)) | 0x00000017ul;
+    //CLK->PLLCTL = (CLK->PLLCTL & ~(0x000FFFFFul)) | 0x0000421Eul;
+    //CLK->CLKDIV0 = (CLK->CLKDIV0 & ~(0xFFFFFFFFul)) | 0x00070000ul;
+    //CLK->CLKDIV1 = (CLK->CLKDIV1 & ~(0x00FFFFFFul)) | 0x00000000ul;
+    //CLK->CLKDIV3 = (CLK->CLKDIV3 & ~(0xFFFF0000ul)) | 0x007E0000ul;
+    //CLK->CLKDIV4 = (CLK->CLKDIV4 & ~(0x0000FFFFul)) | 0x00000000ul;
+    //CLK->PCLKDIV = (CLK->PCLKDIV & ~(0x00000077ul)) | 0x00000011ul;
+    //CLK->CLKSEL0 = (CLK->CLKSEL0 & ~(0x00F0003Ful)) | 0x00A30102ul;
+    //CLK->CLKSEL1 = (CLK->CLKSEL1 & ~(0xFF777703ul)) | 0xB0000001ul;
+    //CLK->CLKSEL2 = (CLK->CLKSEL2 & ~(0x00003FFFul)) | 0x00002BABul;
+    //CLK->CLKSEL3 = (CLK->CLKSEL3 & ~(0xFF03023Ful)) | 0x00000000ul;
+    //CLK->AHBCLK = (CLK->AHBCLK & ~(0x0003D4EEul)) | 0x0003D4EEul;
+    //CLK->APBCLK0 = (CLK->APBCLK0 & ~(0x7F3FF7FFul)) | 0x7F3FF7BFul;
+    //CLK->APBCLK1 = (CLK->APBCLK1 & ~(0x4CCF1347ul)) | 0x4CCF1347ul;
+    //CLK->CLKOCTL = (CLK->CLKOCTL & ~(0x0000007Ful)) | 0x00000000ul;
+    //SysTick->CTRL = (SysTick->CTRL & ~(0x00000005ul)) | 0x00000005ul;
+
+    /* Enable base clock */
+    nutool_modclkcfg_init_base();
+
+    /* Enable module clock and set clock source */
+#if defined(BSP_USING_ACMP01)
+    nutool_modclkcfg_init_acmp01();
+#endif
+#if defined(BSP_USING_BPWM0)
+    nutool_modclkcfg_init_bpwm0();
+#endif
+#if defined(BSP_USING_BPWM1)
+    nutool_modclkcfg_init_bpwm1();
+#endif
+#if defined(BSP_USING_CAN0)
+    nutool_modclkcfg_init_can0();
+#endif
+#if defined(BSP_USING_CAN1)
+    nutool_modclkcfg_init_can1();
+#endif
+#if defined(BSP_USING_CRC)
+    nutool_modclkcfg_init_crc();
+#endif
+#if defined(BSP_USING_CRYPTO)
+    nutool_modclkcfg_init_crpt();
+#endif
+#if defined(BSP_USING_DAC)
+    nutool_modclkcfg_init_dac();
+#endif
+#if defined(BSP_USING_EADC0)
+    nutool_modclkcfg_init_eadc0();
+#endif
+#if defined(BSP_USING_EADC1)
+    nutool_modclkcfg_init_eadc1();
+#endif
+#if defined(BSP_USING_EADC2)
+    nutool_modclkcfg_init_eadc2();
+#endif
+#if defined(BSP_USING_EBI)
+    nutool_modclkcfg_init_ebi();
+#endif
+#if defined(BSP_USING_HBI)
+    nutool_modclkcfg_init_hbi();
+#endif
+#if defined(BSP_USING_ECAP0)
+    nutool_modclkcfg_init_ecap0();
+#endif
+#if defined(BSP_USING_ECAP1)
+    nutool_modclkcfg_init_ecap1();
+#endif
+#if defined(BSP_USING_ECAP2)
+    nutool_modclkcfg_init_ecap2();
+#endif
+#if defined(BSP_USING_ECAP3)
+    nutool_modclkcfg_init_ecap3();
+#endif
+#if defined(BSP_USING_EMAC)
+    nutool_modclkcfg_init_emac();
+#endif
+#if defined(BSP_USING_EPWM0)
+    nutool_modclkcfg_init_epwm0();
+#endif
+#if defined(BSP_USING_EPWM1)
+    nutool_modclkcfg_init_epwm1();
+#endif
+#if defined(BSP_USING_FMC)
+    nutool_modclkcfg_init_fmcidle();
+#endif
+#if defined(BSP_USING_HSOTG)
+    nutool_modclkcfg_init_hsotg();
+#endif
+#if defined(BSP_USING_HSUSBD)
+    nutool_modclkcfg_init_hsusbd();
+#endif
+#if defined(BSP_USING_I2C0)
+    nutool_modclkcfg_init_i2c0();
+#endif
+#if defined(BSP_USING_I2C1)
+    nutool_modclkcfg_init_i2c1();
+#endif
+#if defined(BSP_USING_I2C2)
+    nutool_modclkcfg_init_i2c2();
+#endif
+#if defined(BSP_USING_I2C3)
+    nutool_modclkcfg_init_i2c3();
+#endif
+#if defined(BSP_USING_I2C4)
+    nutool_modclkcfg_init_i2c4();
+#endif
+#if defined(BSP_USING_I2S0)
+    nutool_modclkcfg_init_i2s0();
+#endif
+#if defined(BSP_USING_I2S1)
+    nutool_modclkcfg_init_i2s1();
+#endif
+#if defined(BSP_USING_FMC)
+    nutool_modclkcfg_init_isp();
+#endif
+#if defined(BSP_USING_OTG) || defined(BSP_USING_USBH)
+    nutool_modclkcfg_init_otg();
+#endif
+#if defined(BSP_USING_PDMA)
+    nutool_modclkcfg_init_pdma();
+#endif
+#if defined(BSP_USING_EQEI0)
+    nutool_modclkcfg_init_eqei0();
+#endif
+#if defined(BSP_USING_QEI1)
+    nutool_modclkcfg_init_qei1();
+#endif
+#if defined(BSP_USING_QSPI0)
+    nutool_modclkcfg_init_qspi0();
+#endif
+#if defined(BSP_USING_QSPI1)
+    nutool_modclkcfg_init_qspi1();
+#endif
+#if defined(BSP_USING_RTC)
+    nutool_modclkcfg_init_rtc();
+#endif
+#if defined(BSP_USING_SCUART0)
+    nutool_modclkcfg_init_sc0();
+#endif
+#if defined(BSP_USING_SCUART1)
+    nutool_modclkcfg_init_sc1();
+#endif
+#if defined(BSP_USING_SCUART2)
+    nutool_modclkcfg_init_sc2();
+#endif
+#if defined(BSP_USING_SDH0)
+    nutool_modclkcfg_init_sdh0();
+#endif
+#if defined(BSP_USING_SDH1)
+    nutool_modclkcfg_init_sdh1();
+#endif
+#if defined(BSP_USING_SPI0) || defined(BSP_USING_SPII2S0)
+    nutool_modclkcfg_init_spi0();
+#endif
+#if defined(BSP_USING_SPI1) || defined(BSP_USING_SPII2S1)
+    nutool_modclkcfg_init_spi1();
+#endif
+#if defined(BSP_USING_SPI2) || defined(BSP_USING_SPII2S2)
+    nutool_modclkcfg_init_spi2();
+#endif
+#if defined(BSP_USING_SPI3) || defined(BSP_USING_SPII2S3)
+    nutool_modclkcfg_init_spi3();
+#endif
+#if defined(BSP_USING_SPI4) || defined(BSP_USING_SPII2S4)
+    nutool_modclkcfg_init_spi4();
+#endif
+#if defined(BSP_USING_SPI5) || defined(BSP_USING_SPII2S5)
+    nutool_modclkcfg_init_spi5();
+#endif
+#if defined(BSP_USING_SPI6) || defined(BSP_USING_SPII2S6)
+    nutool_modclkcfg_init_spi6();
+#endif
+#if defined(BSP_USING_SPI7) || defined(BSP_USING_SPII2S7)
+    nutool_modclkcfg_init_spi7();
+#endif
+#if defined(BSP_USING_SPI8) || defined(BSP_USING_SPII2S8)
+    nutool_modclkcfg_init_spi8();
+#endif
+#if defined(BSP_USING_SPI9) || defined(BSP_USING_SPII2S9)
+    nutool_modclkcfg_init_spi9();
+#endif
+#if defined(BSP_USING_SPI10) || defined(BSP_USING_SPII2S10)
+    nutool_modclkcfg_init_spi10();
+#endif
+
+    nutool_modclkcfg_init_systick();
+#if defined(BSP_USING_TMR0)
+    nutool_modclkcfg_init_tmr0();
+#endif
+#if defined(BSP_USING_TMR1)
+    nutool_modclkcfg_init_tmr1();
+#endif
+#if defined(BSP_USING_TMR2)
+    nutool_modclkcfg_init_tmr2();
+#endif
+#if defined(BSP_USING_TMR3)
+    nutool_modclkcfg_init_tmr3();
+#endif
+#if defined(BSP_USING_UART0)
+    nutool_modclkcfg_init_uart0();
+#endif
+#if defined(BSP_USING_UART1)
+    nutool_modclkcfg_init_uart1();
+#endif
+#if defined(BSP_USING_UART2)
+    nutool_modclkcfg_init_uart2();
+#endif
+#if defined(BSP_USING_UART3)
+    nutool_modclkcfg_init_uart3();
+#endif
+#if defined(BSP_USING_UART4)
+    nutool_modclkcfg_init_uart4();
+#endif
+#if defined(BSP_USING_UART5)
+    nutool_modclkcfg_init_uart5();
+#endif
+#if defined(BSP_USING_USBD) || defined(BSP_USING_USBH)
+    nutool_modclkcfg_init_usbd();
+#endif
+#if defined(BSP_USING_USBH) || defined(BSP_USING_HSUSBH)
+    nutool_modclkcfg_init_usbh();
+#endif
+#if defined(BSP_USING_USCI0)
+    nutool_modclkcfg_init_usci0();
+#endif
+#if defined(BSP_USING_USCI1)
+    nutool_modclkcfg_init_usci1();
+#endif
+#if defined(BSP_USING_WDT)
+    nutool_modclkcfg_init_wdt();
+#endif
+#if defined(BSP_USING_WWDT)
+    nutool_modclkcfg_init_wwdt();
+#endif
+#if defined(BSP_USING_CANFD0)
+    nutool_modclkcfg_init_canfd0();
+#endif
+#if defined(BSP_USING_CANFD1)
+    nutool_modclkcfg_init_canfd1();
+#endif
+#if defined(BSP_USING_CANFD2)
+    nutool_modclkcfg_init_canfd2();
+#endif
+#if defined(BSP_USING_CANFD3)
+    nutool_modclkcfg_init_canfd3();
+#endif
+
+    /* Update System Core Clock */
+    /* User can use SystemCoreClockUpdate() to calculate SystemCoreClock. */
+    SystemCoreClockUpdate();
+
+    return;
+}
+
+/*** (C) COPYRIGHT 2013-2020 Nuvoton Technology Corp. ***/

+ 139 - 0
bsp/nuvoton/numaker-iot-m467/board/nutool_modclkcfg.h

@@ -0,0 +1,139 @@
+/****************************************************************************
+ * @file     nutool_modclkcfg.h
+ * @version  V1.05
+ * @Date     2020/04/15-11:28:38
+ * @brief    NuMicro generated code file
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * Copyright (C) 2013-2020 Nuvoton Technology Corp. All rights reserved.
+*****************************************************************************/
+
+#ifndef __NUTOOL_MODCLKCFG_H__
+#define __NUTOOL_MODCLKCFG_H__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+void nutool_modclkcfg_init_acmp01(void);
+void nutool_modclkcfg_deinit_acmp01(void);
+void nutool_modclkcfg_init_bpwm0(void);
+void nutool_modclkcfg_deinit_bpwm0(void);
+void nutool_modclkcfg_init_bpwm1(void);
+void nutool_modclkcfg_deinit_bpwm1(void);
+void nutool_modclkcfg_init_can0(void);
+void nutool_modclkcfg_deinit_can0(void);
+void nutool_modclkcfg_init_can1(void);
+void nutool_modclkcfg_deinit_can1(void);
+void nutool_modclkcfg_init_crc(void);
+void nutool_modclkcfg_deinit_crc(void);
+void nutool_modclkcfg_init_crpt(void);
+void nutool_modclkcfg_deinit_crpt(void);
+void nutool_modclkcfg_init_dac(void);
+void nutool_modclkcfg_deinit_dac(void);
+void nutool_modclkcfg_init_eadc(void);
+void nutool_modclkcfg_deinit_eadc(void);
+void nutool_modclkcfg_init_ebi(void);
+void nutool_modclkcfg_deinit_ebi(void);
+void nutool_modclkcfg_init_ecap0(void);
+void nutool_modclkcfg_deinit_ecap0(void);
+void nutool_modclkcfg_init_ecap1(void);
+void nutool_modclkcfg_deinit_ecap1(void);
+void nutool_modclkcfg_init_emac(void);
+void nutool_modclkcfg_deinit_emac(void);
+void nutool_modclkcfg_init_epwm0(void);
+void nutool_modclkcfg_deinit_epwm0(void);
+void nutool_modclkcfg_init_epwm1(void);
+void nutool_modclkcfg_deinit_epwm1(void);
+void nutool_modclkcfg_init_fmcidle(void);
+void nutool_modclkcfg_deinit_fmcidle(void);
+void nutool_modclkcfg_init_hsotg(void);
+void nutool_modclkcfg_deinit_hsotg(void);
+void nutool_modclkcfg_init_hsusbd(void);
+void nutool_modclkcfg_deinit_hsusbd(void);
+void nutool_modclkcfg_init_i2c0(void);
+void nutool_modclkcfg_deinit_i2c0(void);
+void nutool_modclkcfg_init_i2c1(void);
+void nutool_modclkcfg_deinit_i2c1(void);
+void nutool_modclkcfg_init_i2c2(void);
+void nutool_modclkcfg_deinit_i2c2(void);
+void nutool_modclkcfg_init_i2s0(void);
+void nutool_modclkcfg_deinit_i2s0(void);
+void nutool_modclkcfg_init_isp(void);
+void nutool_modclkcfg_deinit_isp(void);
+void nutool_modclkcfg_init_opa(void);
+void nutool_modclkcfg_deinit_opa(void);
+void nutool_modclkcfg_init_otg(void);
+void nutool_modclkcfg_deinit_otg(void);
+void nutool_modclkcfg_init_pdma(void);
+void nutool_modclkcfg_deinit_pdma(void);
+void nutool_modclkcfg_init_qei0(void);
+void nutool_modclkcfg_deinit_qei0(void);
+void nutool_modclkcfg_init_qei1(void);
+void nutool_modclkcfg_deinit_qei1(void);
+void nutool_modclkcfg_init_qspi0(void);
+void nutool_modclkcfg_deinit_qspi0(void);
+void nutool_modclkcfg_init_rtc(void);
+void nutool_modclkcfg_deinit_rtc(void);
+void nutool_modclkcfg_init_sc0(void);
+void nutool_modclkcfg_deinit_sc0(void);
+void nutool_modclkcfg_init_sc1(void);
+void nutool_modclkcfg_deinit_sc1(void);
+void nutool_modclkcfg_init_sc2(void);
+void nutool_modclkcfg_deinit_sc2(void);
+void nutool_modclkcfg_init_sdh0(void);
+void nutool_modclkcfg_deinit_sdh0(void);
+void nutool_modclkcfg_init_sdh1(void);
+void nutool_modclkcfg_deinit_sdh1(void);
+void nutool_modclkcfg_init_spi0(void);
+void nutool_modclkcfg_deinit_spi0(void);
+void nutool_modclkcfg_init_spi1(void);
+void nutool_modclkcfg_deinit_spi1(void);
+void nutool_modclkcfg_init_spi2(void);
+void nutool_modclkcfg_deinit_spi2(void);
+void nutool_modclkcfg_init_spi3(void);
+void nutool_modclkcfg_deinit_spi3(void);
+void nutool_modclkcfg_init_spim(void);
+void nutool_modclkcfg_deinit_spim(void);
+void nutool_modclkcfg_init_systick(void);
+void nutool_modclkcfg_deinit_systick(void);
+void nutool_modclkcfg_init_tmr0(void);
+void nutool_modclkcfg_deinit_tmr0(void);
+void nutool_modclkcfg_init_tmr1(void);
+void nutool_modclkcfg_deinit_tmr1(void);
+void nutool_modclkcfg_init_tmr2(void);
+void nutool_modclkcfg_deinit_tmr2(void);
+void nutool_modclkcfg_init_tmr3(void);
+void nutool_modclkcfg_deinit_tmr3(void);
+void nutool_modclkcfg_init_uart0(void);
+void nutool_modclkcfg_deinit_uart0(void);
+void nutool_modclkcfg_init_uart1(void);
+void nutool_modclkcfg_deinit_uart1(void);
+void nutool_modclkcfg_init_uart2(void);
+void nutool_modclkcfg_deinit_uart2(void);
+void nutool_modclkcfg_init_uart3(void);
+void nutool_modclkcfg_deinit_uart3(void);
+void nutool_modclkcfg_init_uart4(void);
+void nutool_modclkcfg_deinit_uart4(void);
+void nutool_modclkcfg_init_uart5(void);
+void nutool_modclkcfg_deinit_uart5(void);
+void nutool_modclkcfg_init_usbd(void);
+void nutool_modclkcfg_deinit_usbd(void);
+void nutool_modclkcfg_init_usbh(void);
+void nutool_modclkcfg_deinit_usbh(void);
+void nutool_modclkcfg_init_usci0(void);
+void nutool_modclkcfg_deinit_usci0(void);
+void nutool_modclkcfg_init_usci1(void);
+void nutool_modclkcfg_deinit_usci1(void);
+void nutool_modclkcfg_init_wdt(void);
+void nutool_modclkcfg_deinit_wdt(void);
+void nutool_modclkcfg_init_wwdt(void);
+void nutool_modclkcfg_deinit_wwdt(void);
+void nutool_modclkcfg_init_base(void);
+void nutool_modclkcfg_init(void);
+#ifdef __cplusplus
+}
+#endif
+#endif /*__NUTOOL_MODCLKCFG_H__*/
+
+/*** (C) COPYRIGHT 2013-2020 Nuvoton Technology Corp. ***/

+ 1205 - 0
bsp/nuvoton/numaker-iot-m467/config_lvgl

@@ -0,0 +1,1205 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# RT-Thread Configuration
+#
+
+#
+# RT-Thread Kernel
+#
+CONFIG_RT_NAME_MAX=8
+# CONFIG_RT_USING_ARCH_DATA_TYPE is not set
+# CONFIG_RT_USING_SMP is not set
+CONFIG_RT_ALIGN_SIZE=4
+# CONFIG_RT_THREAD_PRIORITY_8 is not set
+CONFIG_RT_THREAD_PRIORITY_32=y
+# CONFIG_RT_THREAD_PRIORITY_256 is not set
+CONFIG_RT_THREAD_PRIORITY_MAX=32
+CONFIG_RT_TICK_PER_SECOND=1000
+CONFIG_RT_USING_OVERFLOW_CHECK=y
+CONFIG_RT_USING_HOOK=y
+CONFIG_RT_HOOK_USING_FUNC_PTR=y
+CONFIG_RT_USING_IDLE_HOOK=y
+CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
+CONFIG_IDLE_THREAD_STACK_SIZE=1024
+# CONFIG_RT_USING_TIMER_SOFT is not set
+
+#
+# kservice optimization
+#
+# CONFIG_RT_KSERVICE_USING_STDLIB is not set
+# CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set
+# CONFIG_RT_USING_TINY_FFS is not set
+# CONFIG_RT_KPRINTF_USING_LONGLONG is not set
+CONFIG_RT_DEBUG=y
+CONFIG_RT_DEBUG_COLOR=y
+# CONFIG_RT_DEBUG_INIT_CONFIG is not set
+# CONFIG_RT_DEBUG_THREAD_CONFIG is not set
+# CONFIG_RT_DEBUG_SCHEDULER_CONFIG is not set
+# CONFIG_RT_DEBUG_IPC_CONFIG is not set
+# CONFIG_RT_DEBUG_TIMER_CONFIG is not set
+# CONFIG_RT_DEBUG_IRQ_CONFIG is not set
+# CONFIG_RT_DEBUG_MEM_CONFIG is not set
+# CONFIG_RT_DEBUG_SLAB_CONFIG is not set
+# CONFIG_RT_DEBUG_MEMHEAP_CONFIG is not set
+# CONFIG_RT_DEBUG_MODULE_CONFIG is not set
+
+#
+# Inter-Thread communication
+#
+CONFIG_RT_USING_SEMAPHORE=y
+CONFIG_RT_USING_MUTEX=y
+CONFIG_RT_USING_EVENT=y
+CONFIG_RT_USING_MAILBOX=y
+CONFIG_RT_USING_MESSAGEQUEUE=y
+CONFIG_RT_USING_SIGNALS=y
+
+#
+# Memory Management
+#
+CONFIG_RT_USING_MEMPOOL=y
+CONFIG_RT_USING_SMALL_MEM=y
+# CONFIG_RT_USING_SLAB is not set
+# CONFIG_RT_USING_MEMHEAP is not set
+CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y
+# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set
+# CONFIG_RT_USING_SLAB_AS_HEAP is not set
+# CONFIG_RT_USING_USERHEAP is not set
+# CONFIG_RT_USING_NOHEAP is not set
+# CONFIG_RT_USING_MEMTRACE is not set
+# CONFIG_RT_USING_HEAP_ISR is not set
+CONFIG_RT_USING_HEAP=y
+
+#
+# Kernel Device Object
+#
+CONFIG_RT_USING_DEVICE=y
+# CONFIG_RT_USING_DEVICE_OPS is not set
+# CONFIG_RT_USING_INTERRUPT_INFO is not set
+CONFIG_RT_USING_CONSOLE=y
+CONFIG_RT_CONSOLEBUF_SIZE=256
+CONFIG_RT_CONSOLE_DEVICE_NAME="uart0"
+CONFIG_RT_VER_NUM=0x50000
+CONFIG_ARCH_ARM=y
+CONFIG_RT_USING_CPU_FFS=y
+CONFIG_ARCH_ARM_CORTEX_M=y
+CONFIG_ARCH_ARM_CORTEX_M4=y
+# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set
+
+#
+# RT-Thread Components
+#
+CONFIG_RT_USING_COMPONENTS_INIT=y
+CONFIG_RT_USING_USER_MAIN=y
+CONFIG_RT_MAIN_THREAD_STACK_SIZE=2048
+CONFIG_RT_MAIN_THREAD_PRIORITY=10
+CONFIG_RT_USING_LEGACY=y
+CONFIG_RT_USING_MSH=y
+CONFIG_RT_USING_FINSH=y
+CONFIG_FINSH_USING_MSH=y
+CONFIG_FINSH_THREAD_NAME="tshell"
+CONFIG_FINSH_THREAD_PRIORITY=20
+CONFIG_FINSH_THREAD_STACK_SIZE=2048
+CONFIG_FINSH_USING_HISTORY=y
+CONFIG_FINSH_HISTORY_LINES=5
+CONFIG_FINSH_USING_SYMTAB=y
+CONFIG_FINSH_CMD_SIZE=80
+CONFIG_MSH_USING_BUILT_IN_COMMANDS=y
+CONFIG_FINSH_USING_DESCRIPTION=y
+# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set
+# CONFIG_FINSH_USING_AUTH is not set
+CONFIG_FINSH_ARG_MAX=10
+CONFIG_RT_USING_DFS=y
+CONFIG_DFS_USING_POSIX=y
+CONFIG_DFS_USING_WORKDIR=y
+CONFIG_DFS_FILESYSTEMS_MAX=8
+CONFIG_DFS_FILESYSTEM_TYPES_MAX=8
+CONFIG_DFS_FD_MAX=32
+CONFIG_RT_USING_DFS_MNTTABLE=y
+CONFIG_RT_USING_DFS_ELMFAT=y
+
+#
+# elm-chan's FatFs, Generic FAT Filesystem Module
+#
+CONFIG_RT_DFS_ELM_CODE_PAGE=437
+CONFIG_RT_DFS_ELM_WORD_ACCESS=y
+# CONFIG_RT_DFS_ELM_USE_LFN_0 is not set
+# CONFIG_RT_DFS_ELM_USE_LFN_1 is not set
+# CONFIG_RT_DFS_ELM_USE_LFN_2 is not set
+CONFIG_RT_DFS_ELM_USE_LFN_3=y
+CONFIG_RT_DFS_ELM_USE_LFN=3
+CONFIG_RT_DFS_ELM_LFN_UNICODE_0=y
+# CONFIG_RT_DFS_ELM_LFN_UNICODE_1 is not set
+# CONFIG_RT_DFS_ELM_LFN_UNICODE_2 is not set
+# CONFIG_RT_DFS_ELM_LFN_UNICODE_3 is not set
+CONFIG_RT_DFS_ELM_LFN_UNICODE=0
+CONFIG_RT_DFS_ELM_MAX_LFN=255
+CONFIG_RT_DFS_ELM_DRIVES=8
+CONFIG_RT_DFS_ELM_MAX_SECTOR_SIZE=4096
+# CONFIG_RT_DFS_ELM_USE_ERASE is not set
+CONFIG_RT_DFS_ELM_REENTRANT=y
+CONFIG_RT_DFS_ELM_MUTEX_TIMEOUT=3000
+CONFIG_RT_USING_DFS_DEVFS=y
+# CONFIG_RT_USING_DFS_ROMFS is not set
+# CONFIG_RT_USING_DFS_RAMFS is not set
+# CONFIG_RT_USING_DFS_NFS is not set
+CONFIG_RT_USING_FAL=y
+CONFIG_FAL_DEBUG_CONFIG=y
+CONFIG_FAL_DEBUG=1
+CONFIG_FAL_PART_HAS_TABLE_CFG=y
+CONFIG_FAL_USING_SFUD_PORT=y
+CONFIG_FAL_USING_NOR_FLASH_DEV_NAME="norflash0"
+# CONFIG_RT_USING_LWP is not set
+
+#
+# Device Drivers
+#
+CONFIG_RT_USING_DEVICE_IPC=y
+CONFIG_RT_USING_SYSTEM_WORKQUEUE=y
+CONFIG_RT_SYSTEM_WORKQUEUE_STACKSIZE=2048
+CONFIG_RT_SYSTEM_WORKQUEUE_PRIORITY=23
+CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_USING_SERIAL_V1=y
+# CONFIG_RT_USING_SERIAL_V2 is not set
+CONFIG_RT_SERIAL_USING_DMA=y
+CONFIG_RT_SERIAL_RB_BUFSZ=512
+CONFIG_RT_USING_CAN=y
+# CONFIG_RT_CAN_USING_HDR is not set
+# CONFIG_RT_CAN_USING_CANFD is not set
+CONFIG_RT_USING_HWTIMER=y
+# CONFIG_RT_USING_CPUTIME is not set
+CONFIG_RT_USING_I2C=y
+# CONFIG_RT_I2C_DEBUG is not set
+CONFIG_RT_USING_I2C_BITOPS=y
+# CONFIG_RT_I2C_BITOPS_DEBUG is not set
+# CONFIG_RT_USING_PHY is not set
+CONFIG_RT_USING_PIN=y
+CONFIG_RT_USING_ADC=y
+# CONFIG_RT_USING_DAC is not set
+CONFIG_RT_USING_PWM=y
+# CONFIG_RT_USING_MTD_NOR is not set
+# CONFIG_RT_USING_MTD_NAND is not set
+# CONFIG_RT_USING_PM is not set
+CONFIG_RT_USING_RTC=y
+# CONFIG_RT_USING_ALARM is not set
+# CONFIG_RT_USING_SOFT_RTC is not set
+CONFIG_RT_USING_SDIO=y
+CONFIG_RT_SDIO_STACK_SIZE=2048
+CONFIG_RT_SDIO_THREAD_PRIORITY=15
+CONFIG_RT_MMCSD_STACK_SIZE=2048
+CONFIG_RT_MMCSD_THREAD_PREORITY=22
+CONFIG_RT_MMCSD_MAX_PARTITION=16
+CONFIG_RT_SDIO_DEBUG=y
+CONFIG_RT_USING_SPI=y
+# CONFIG_RT_USING_SPI_BITOPS is not set
+CONFIG_RT_USING_QSPI=y
+# CONFIG_RT_USING_SPI_MSD is not set
+CONFIG_RT_USING_SFUD=y
+CONFIG_RT_SFUD_USING_SFDP=y
+CONFIG_RT_SFUD_USING_FLASH_INFO_TABLE=y
+CONFIG_RT_SFUD_USING_QSPI=y
+CONFIG_RT_SFUD_SPI_MAX_HZ=50000000
+# CONFIG_RT_DEBUG_SFUD is not set
+# CONFIG_RT_USING_ENC28J60 is not set
+# CONFIG_RT_USING_SPI_WIFI is not set
+CONFIG_RT_USING_WDT=y
+CONFIG_RT_USING_AUDIO=y
+CONFIG_RT_AUDIO_REPLAY_MP_BLOCK_SIZE=4096
+CONFIG_RT_AUDIO_REPLAY_MP_BLOCK_COUNT=2
+CONFIG_RT_AUDIO_RECORD_PIPE_SIZE=2048
+CONFIG_RT_USING_SENSOR=y
+CONFIG_RT_USING_SENSOR_CMD=y
+CONFIG_RT_USING_TOUCH=y
+# CONFIG_RT_TOUCH_PIN_IRQ is not set
+CONFIG_RT_USING_HWCRYPTO=y
+CONFIG_RT_HWCRYPTO_DEFAULT_NAME="hwcryto"
+CONFIG_RT_HWCRYPTO_IV_MAX_SIZE=16
+CONFIG_RT_HWCRYPTO_KEYBIT_MAX_SIZE=256
+# CONFIG_RT_HWCRYPTO_USING_GCM is not set
+CONFIG_RT_HWCRYPTO_USING_AES=y
+CONFIG_RT_HWCRYPTO_USING_AES_ECB=y
+CONFIG_RT_HWCRYPTO_USING_AES_CBC=y
+CONFIG_RT_HWCRYPTO_USING_AES_CFB=y
+CONFIG_RT_HWCRYPTO_USING_AES_CTR=y
+CONFIG_RT_HWCRYPTO_USING_AES_OFB=y
+CONFIG_RT_HWCRYPTO_USING_DES=y
+CONFIG_RT_HWCRYPTO_USING_DES_ECB=y
+CONFIG_RT_HWCRYPTO_USING_DES_CBC=y
+CONFIG_RT_HWCRYPTO_USING_3DES=y
+CONFIG_RT_HWCRYPTO_USING_3DES_ECB=y
+CONFIG_RT_HWCRYPTO_USING_3DES_CBC=y
+# CONFIG_RT_HWCRYPTO_USING_RC4 is not set
+# CONFIG_RT_HWCRYPTO_USING_MD5 is not set
+CONFIG_RT_HWCRYPTO_USING_SHA1=y
+CONFIG_RT_HWCRYPTO_USING_SHA2=y
+CONFIG_RT_HWCRYPTO_USING_SHA2_224=y
+CONFIG_RT_HWCRYPTO_USING_SHA2_256=y
+CONFIG_RT_HWCRYPTO_USING_SHA2_384=y
+CONFIG_RT_HWCRYPTO_USING_SHA2_512=y
+CONFIG_RT_HWCRYPTO_USING_RNG=y
+CONFIG_RT_HWCRYPTO_USING_CRC=y
+CONFIG_RT_HWCRYPTO_USING_CRC_07=y
+CONFIG_RT_HWCRYPTO_USING_CRC_8005=y
+CONFIG_RT_HWCRYPTO_USING_CRC_1021=y
+# CONFIG_RT_HWCRYPTO_USING_CRC_3D65 is not set
+CONFIG_RT_HWCRYPTO_USING_CRC_04C11DB7=y
+# CONFIG_RT_HWCRYPTO_USING_BIGNUM is not set
+# CONFIG_RT_USING_PULSE_ENCODER is not set
+CONFIG_RT_USING_INPUT_CAPTURE=y
+CONFIG_RT_INPUT_CAPTURE_RB_SIZE=100
+# CONFIG_RT_USING_WIFI is not set
+
+#
+# Using USB
+#
+CONFIG_RT_USING_USB=y
+CONFIG_RT_USING_USB_HOST=y
+CONFIG_RT_USBH_MSTORAGE=y
+CONFIG_UDISK_MOUNTPOINT="/mnt/udisk"
+# CONFIG_RT_USBH_HID is not set
+CONFIG_RT_USING_USB_DEVICE=y
+CONFIG_RT_USBD_THREAD_STACK_SZ=4096
+CONFIG_USB_VENDOR_ID=0x0FFE
+CONFIG_USB_PRODUCT_ID=0x0001
+# CONFIG_RT_USB_DEVICE_COMPOSITE is not set
+# CONFIG__RT_USB_DEVICE_NONE is not set
+# CONFIG__RT_USB_DEVICE_CDC is not set
+CONFIG__RT_USB_DEVICE_MSTORAGE=y
+# CONFIG__RT_USB_DEVICE_HID is not set
+# CONFIG__RT_USB_DEVICE_RNDIS is not set
+# CONFIG__RT_USB_DEVICE_ECM is not set
+# CONFIG__RT_USB_DEVICE_WINUSB is not set
+# CONFIG__RT_USB_DEVICE_AUDIO is not set
+CONFIG_RT_USB_DEVICE_MSTORAGE=y
+CONFIG_RT_USB_MSTORAGE_DISK_NAME="sd0"
+
+#
+# C/C++ and POSIX layer
+#
+CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
+
+#
+# POSIX (Portable Operating System Interface) layer
+#
+CONFIG_RT_USING_POSIX_FS=y
+CONFIG_RT_USING_POSIX_DEVIO=y
+# CONFIG_RT_USING_POSIX_STDIO is not set
+CONFIG_RT_USING_POSIX_POLL=y
+CONFIG_RT_USING_POSIX_SELECT=y
+CONFIG_RT_USING_POSIX_SOCKET=y
+# CONFIG_RT_USING_POSIX_TERMIOS is not set
+# CONFIG_RT_USING_POSIX_AIO is not set
+# CONFIG_RT_USING_POSIX_MMAN is not set
+# CONFIG_RT_USING_POSIX_DELAY is not set
+# CONFIG_RT_USING_POSIX_CLOCK is not set
+# CONFIG_RT_USING_POSIX_TIMER is not set
+# CONFIG_RT_USING_PTHREADS is not set
+# CONFIG_RT_USING_MODULE is not set
+
+#
+# Interprocess Communication (IPC)
+#
+# CONFIG_RT_USING_POSIX_PIPE is not set
+# CONFIG_RT_USING_POSIX_MESSAGE_QUEUE is not set
+# CONFIG_RT_USING_POSIX_MESSAGE_SEMAPHORE is not set
+
+#
+# Socket is in the 'Network' category
+#
+# CONFIG_RT_USING_CPLUSPLUS is not set
+
+#
+# Network
+#
+CONFIG_RT_USING_SAL=y
+CONFIG_SAL_INTERNET_CHECK=y
+
+#
+# Docking with protocol stacks
+#
+CONFIG_SAL_USING_LWIP=y
+CONFIG_SAL_USING_AT=y
+# CONFIG_SAL_USING_TLS is not set
+CONFIG_SAL_USING_POSIX=y
+CONFIG_RT_USING_NETDEV=y
+CONFIG_NETDEV_USING_IFCONFIG=y
+CONFIG_NETDEV_USING_PING=y
+CONFIG_NETDEV_USING_NETSTAT=y
+CONFIG_NETDEV_USING_AUTO_DEFAULT=y
+# CONFIG_NETDEV_USING_IPV6 is not set
+CONFIG_NETDEV_IPV4=1
+CONFIG_NETDEV_IPV6=0
+# CONFIG_NETDEV_IPV6_SCOPES is not set
+CONFIG_RT_USING_LWIP=y
+# CONFIG_RT_USING_LWIP_LOCAL_VERSION is not set
+# CONFIG_RT_USING_LWIP141 is not set
+# CONFIG_RT_USING_LWIP203 is not set
+CONFIG_RT_USING_LWIP212=y
+# CONFIG_RT_USING_LWIP_LATEST is not set
+CONFIG_RT_USING_LWIP_VER_NUM=0x20102
+# CONFIG_RT_USING_LWIP_IPV6 is not set
+CONFIG_RT_LWIP_MEM_ALIGNMENT=4
+CONFIG_RT_LWIP_IGMP=y
+CONFIG_RT_LWIP_ICMP=y
+# CONFIG_RT_LWIP_SNMP is not set
+CONFIG_RT_LWIP_DNS=y
+CONFIG_RT_LWIP_DHCP=y
+CONFIG_IP_SOF_BROADCAST=1
+CONFIG_IP_SOF_BROADCAST_RECV=1
+
+#
+# Static IPv4 Address
+#
+CONFIG_RT_LWIP_IPADDR="192.168.31.55"
+CONFIG_RT_LWIP_GWADDR="192.168.31.1"
+CONFIG_RT_LWIP_MSKADDR="255.255.255.0"
+CONFIG_RT_LWIP_UDP=y
+CONFIG_RT_LWIP_TCP=y
+CONFIG_RT_LWIP_RAW=y
+# CONFIG_RT_LWIP_PPP is not set
+CONFIG_RT_MEMP_NUM_NETCONN=8
+CONFIG_RT_LWIP_PBUF_NUM=32
+CONFIG_RT_LWIP_RAW_PCB_NUM=4
+CONFIG_RT_LWIP_UDP_PCB_NUM=4
+CONFIG_RT_LWIP_TCP_PCB_NUM=4
+CONFIG_RT_LWIP_TCP_SEG_NUM=32
+CONFIG_RT_LWIP_TCP_SND_BUF=4096
+CONFIG_RT_LWIP_TCP_WND=10240
+CONFIG_RT_LWIP_TCPTHREAD_PRIORITY=10
+CONFIG_RT_LWIP_TCPTHREAD_MBOX_SIZE=32
+CONFIG_RT_LWIP_TCPTHREAD_STACKSIZE=2048
+# CONFIG_LWIP_NO_RX_THREAD is not set
+# CONFIG_LWIP_NO_TX_THREAD is not set
+CONFIG_RT_LWIP_ETHTHREAD_PRIORITY=12
+CONFIG_RT_LWIP_ETHTHREAD_STACKSIZE=2048
+CONFIG_RT_LWIP_ETHTHREAD_MBOX_SIZE=32
+CONFIG_RT_LWIP_REASSEMBLY_FRAG=y
+CONFIG_LWIP_NETIF_STATUS_CALLBACK=1
+CONFIG_LWIP_NETIF_LINK_CALLBACK=1
+CONFIG_SO_REUSE=1
+CONFIG_LWIP_SO_RCVTIMEO=1
+CONFIG_LWIP_SO_SNDTIMEO=1
+CONFIG_LWIP_SO_RCVBUF=1
+CONFIG_LWIP_SO_LINGER=0
+CONFIG_RT_LWIP_NETIF_LOOPBACK=y
+CONFIG_LWIP_NETIF_LOOPBACK=1
+CONFIG_RT_LWIP_STATS=y
+# CONFIG_RT_LWIP_USING_HW_CHECKSUM is not set
+CONFIG_RT_LWIP_USING_PING=y
+# CONFIG_LWIP_USING_DHCPD is not set
+# CONFIG_RT_LWIP_DEBUG is not set
+CONFIG_RT_USING_AT=y
+# CONFIG_AT_DEBUG is not set
+# CONFIG_AT_USING_SERVER is not set
+CONFIG_AT_USING_CLIENT=y
+CONFIG_AT_CLIENT_NUM_MAX=1
+CONFIG_AT_USING_SOCKET=y
+# CONFIG_AT_USING_SOCKET_SERVER is not set
+CONFIG_AT_USING_CLI=y
+# CONFIG_AT_PRINT_RAW_CMD is not set
+CONFIG_AT_CMD_MAX_LEN=128
+CONFIG_AT_SW_VERSION_NUM=0x10301
+
+#
+# Utilities
+#
+# CONFIG_RT_USING_RYM is not set
+CONFIG_RT_USING_ULOG=y
+# CONFIG_ULOG_OUTPUT_LVL_A is not set
+# CONFIG_ULOG_OUTPUT_LVL_E is not set
+# CONFIG_ULOG_OUTPUT_LVL_W is not set
+# CONFIG_ULOG_OUTPUT_LVL_I is not set
+CONFIG_ULOG_OUTPUT_LVL_D=y
+CONFIG_ULOG_OUTPUT_LVL=7
+# CONFIG_ULOG_USING_ISR_LOG is not set
+CONFIG_ULOG_ASSERT_ENABLE=y
+CONFIG_ULOG_LINE_BUF_SIZE=128
+# CONFIG_ULOG_USING_ASYNC_OUTPUT is not set
+
+#
+# log format
+#
+# CONFIG_ULOG_OUTPUT_FLOAT is not set
+CONFIG_ULOG_USING_COLOR=y
+CONFIG_ULOG_OUTPUT_TIME=y
+# CONFIG_ULOG_TIME_USING_TIMESTAMP is not set
+CONFIG_ULOG_OUTPUT_LEVEL=y
+CONFIG_ULOG_OUTPUT_TAG=y
+# CONFIG_ULOG_OUTPUT_THREAD_NAME is not set
+CONFIG_ULOG_BACKEND_USING_CONSOLE=y
+# CONFIG_ULOG_BACKEND_USING_FILE is not set
+# CONFIG_ULOG_USING_FILTER is not set
+# CONFIG_ULOG_USING_SYSLOG is not set
+CONFIG_RT_USING_UTEST=y
+CONFIG_UTEST_THR_STACK_SIZE=4096
+CONFIG_UTEST_THR_PRIORITY=20
+# CONFIG_RT_USING_VAR_EXPORT is not set
+# CONFIG_RT_USING_RT_LINK is not set
+# CONFIG_RT_USING_VBUS is not set
+
+#
+# RT-Thread Utestcases
+#
+# CONFIG_RT_USING_UTESTCASES is not set
+
+#
+# RT-Thread online packages
+#
+
+#
+# IoT - internet of things
+#
+# CONFIG_PKG_USING_LWIP is not set
+# 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_LIBMODBUS is not set
+# CONFIG_PKG_USING_FREEMODBUS is not set
+# CONFIG_PKG_USING_NANOPB is not set
+
+#
+# Wi-Fi
+#
+
+#
+# Marvell WiFi
+#
+# CONFIG_PKG_USING_WLANMARVELL is not set
+
+#
+# Wiced WiFi
+#
+# CONFIG_PKG_USING_WLAN_WICED is not set
+# CONFIG_PKG_USING_RW007 is not set
+# CONFIG_PKG_USING_COAP is not set
+# CONFIG_PKG_USING_NOPOLL is not set
+# CONFIG_PKG_USING_NETUTILS is not set
+# CONFIG_PKG_USING_CMUX is not set
+# CONFIG_PKG_USING_PPP_DEVICE is not set
+CONFIG_PKG_USING_AT_DEVICE=y
+CONFIG_PKG_AT_DEVICE_PATH="/packages/iot/at_device"
+# CONFIG_AT_DEVICE_USING_M26 is not set
+# CONFIG_AT_DEVICE_USING_EC20 is not set
+# CONFIG_AT_DEVICE_USING_ESP32 is not set
+CONFIG_AT_DEVICE_USING_ESP8266=y
+CONFIG_AT_DEVICE_ESP8266_INIT_ASYN=y
+CONFIG_AT_DEVICE_ESP8266_SOCKET=y
+CONFIG_AT_DEVICE_ESP8266_SAMPLE=y
+# CONFIG_AT_DEVICE_ESP8266_SAMPLE_BSP_TAKEOVER is not set
+CONFIG_ESP8266_SAMPLE_WIFI_SSID="NT_ZY_BUFFALO"
+CONFIG_ESP8266_SAMPLE_WIFI_PASSWORD="12345678"
+CONFIG_ESP8266_SAMPLE_CLIENT_NAME="uart2"
+CONFIG_ESP8266_SAMPLE_RECV_BUFF_LEN=2048
+# CONFIG_AT_DEVICE_USING_RW007 is not set
+# CONFIG_AT_DEVICE_USING_SIM800C is not set
+# CONFIG_AT_DEVICE_USING_SIM76XX is not set
+# CONFIG_AT_DEVICE_USING_MW31 is not set
+# CONFIG_AT_DEVICE_USING_W60X is not set
+# CONFIG_AT_DEVICE_USING_A9G is not set
+# CONFIG_AT_DEVICE_USING_BC26 is not set
+# CONFIG_AT_DEVICE_USING_AIR720 is not set
+# CONFIG_AT_DEVICE_USING_ME3616 is not set
+# CONFIG_AT_DEVICE_USING_M6315 is not set
+# CONFIG_AT_DEVICE_USING_BC28 is not set
+# CONFIG_AT_DEVICE_USING_EC200X is not set
+# CONFIG_AT_DEVICE_USING_N21 is not set
+# CONFIG_AT_DEVICE_USING_N58 is not set
+# CONFIG_AT_DEVICE_USING_M5311 is not set
+# CONFIG_AT_DEVICE_USING_L610 is not set
+# CONFIG_AT_DEVICE_USING_N720 is not set
+# CONFIG_PKG_USING_AT_DEVICE_V204 is not set
+# CONFIG_PKG_USING_AT_DEVICE_V203 is not set
+# CONFIG_PKG_USING_AT_DEVICE_V202 is not set
+# CONFIG_PKG_USING_AT_DEVICE_V201 is not set
+# CONFIG_PKG_USING_AT_DEVICE_V200 is not set
+CONFIG_PKG_USING_AT_DEVICE_LATEST_VERSION=y
+CONFIG_PKG_AT_DEVICE_VER="latest"
+CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
+# 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_EZ_IOT_OS is not set
+# CONFIG_PKG_USING_IOTSHARP_SDK is not set
+# 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_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_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
+
+#
+# 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
+
+#
+# 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
+
+#
+# XML: Extensible Markup Language
+#
+# CONFIG_PKG_USING_SIMPLE_XML is not set
+# CONFIG_PKG_USING_EZXML is not set
+# 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
+
+#
+# multimedia packages
+#
+
+#
+# LVGL: powerful and easy-to-use embedded GUI library
+#
+CONFIG_PKG_USING_LVGL=y
+CONFIG_PKG_LVGL_PATH="/packages/multimedia/LVGL/LVGL"
+CONFIG_PKG_LVGL_THREAD_PRIO=20
+CONFIG_PKG_LVGL_THREAD_STACK_SIZE=4096
+CONFIG_PKG_LVGL_DISP_REFR_PERIOD=5
+# CONFIG_PKG_LVGL_USING_EXAMPLES is not set
+CONFIG_PKG_LVGL_USING_DEMOS=y
+# CONFIG_PKG_LVGL_USING_V08020 is not set
+# CONFIG_PKG_LVGL_USING_V08030 is not set
+CONFIG_PKG_LVGL_USING_LATEST_VERSION=y
+CONFIG_PKG_LVGL_VER_NUM=0x99999
+CONFIG_PKG_LVGL_VER="latest"
+# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
+# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
+# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
+
+#
+# u8g2: a monochrome graphic library
+#
+# CONFIG_PKG_USING_U8G2_OFFICIAL is not set
+# CONFIG_PKG_USING_U8G2 is not set
+# 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
+
+#
+# PainterEngine: A cross-platform graphics application framework written in C language
+#
+# CONFIG_PKG_USING_PAINTERENGINE is not set
+# CONFIG_PKG_USING_PAINTERENGINE_AUX 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_PERSIMMON is not set
+
+#
+# tools packages
+#
+# CONFIG_PKG_USING_CMBACKTRACE 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_RDB is not set
+# CONFIG_PKG_USING_ULOG_EASYFLASH is not set
+# CONFIG_PKG_USING_ULOG_FILE 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_FIRE_PID_CURVE is not set
+# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
+
+#
+# system packages
+#
+
+#
+# enhanced kernel services
+#
+# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
+# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
+# CONFIG_PKG_USING_RT_VSNPRINTF_FULL 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
+
+#
+# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
+#
+# CONFIG_PKG_USING_CMSIS_5 is not set
+# CONFIG_PKG_USING_CMSIS_RTOS1 is not set
+# CONFIG_PKG_USING_CMSIS_RTOS2 is not set
+
+#
+# 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
+# CONFIG_PKG_USING_RTDUINO is not set
+# CONFIG_PKG_USING_FREERTOS_WRAPPER 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_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_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_CHERRYUSB 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
+
+#
+# peripheral libraries and drivers
+#
+CONFIG_PKG_USING_SENSORS_DRIVERS=y
+# CONFIG_PKG_USING_FINGERPRINT is not set
+# 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=y
+CONFIG_PKG_MPU6XXX_PATH="/packages/peripherals/sensors/mpu6xxx"
+# CONFIG_PKG_USING_MPU6XXX_V001 is not set
+# CONFIG_PKG_USING_MPU6XXX_V100 is not set
+# CONFIG_PKG_USING_MPU6XXX_V110 is not set
+CONFIG_PKG_USING_MPU6XXX_LATEST_VERSION=y
+CONFIG_PKG_MPU6XXX_VER="latest"
+CONFIG_PKG_USING_MPU6XXX_ACCE=y
+CONFIG_PKG_USING_MPU6XXX_GYRO=y
+CONFIG_PKG_USING_MPU6XXX_MAG=y
+# 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_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_MLX90393 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_REALTEK_AMEBA is not set
+# CONFIG_PKG_USING_SHT2X is not set
+# CONFIG_PKG_USING_SHT3X is not set
+# CONFIG_PKG_USING_ADT74XX is not set
+# CONFIG_PKG_USING_AS7341 is not set
+# CONFIG_PKG_USING_STM32_SDIO is not set
+# CONFIG_PKG_USING_ESP_IDF is not set
+# CONFIG_PKG_USING_ICM20608 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_NRF5X_SDK is not set
+# CONFIG_PKG_USING_NRFX is not set
+# CONFIG_PKG_USING_WM_LIBRARIES is not set
+
+#
+# Kendryte SDK
+#
+# CONFIG_PKG_USING_K210_SDK is not set
+# CONFIG_PKG_USING_KENDRYTE_SDK 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_AD7746 is not set
+# CONFIG_PKG_USING_PCA9685 is not set
+# CONFIG_PKG_USING_I2C_TOOLS is not set
+# CONFIG_PKG_USING_NRF24L01 is not set
+# CONFIG_PKG_USING_TOUCH_DRIVERS is not set
+# CONFIG_PKG_USING_MAX17048 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_EMBARC_BSP 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_PAJ7620 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_STM32WB55_SDK 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_BLUETRUM_SDK 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_BL_MCU_SDK is not set
+# CONFIG_PKG_USING_SOFT_SERIAL is not set
+# CONFIG_PKG_USING_MB85RS16 is not set
+# CONFIG_PKG_USING_CW2015 is not set
+# CONFIG_PKG_USING_RFM300 is not set
+# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
+# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
+
+#
+# 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
+
+#
+# miscellaneous packages
+#
+
+#
+# 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
+
+#
+# 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_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_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_DIGITALCTRL 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_UKAL is not set
+# CONFIG_PKG_USING_CRCLIB 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
+
+#
+# Hardware Drivers Config
+#
+
+#
+# On-chip Peripheral Drivers
+#
+CONFIG_SOC_SERIES_M460=y
+CONFIG_BSP_USE_STDDRIVER_SOURCE=y
+CONFIG_BSP_USING_PDMA=y
+CONFIG_NU_PDMA_MEMFUN_ACTOR_MAX=2
+CONFIG_NU_PDMA_SGTBL_POOL_SIZE=32
+CONFIG_BSP_USING_FMC=y
+CONFIG_BSP_USING_GPIO=y
+CONFIG_BSP_USING_EMAC=y
+CONFIG_BSP_USING_RTC=y
+# CONFIG_NU_RTC_SUPPORT_IO_RW is not set
+CONFIG_NU_RTC_SUPPORT_MSH_CMD=y
+# CONFIG_BSP_USING_CCAP is not set
+# CONFIG_BSP_USING_DAC is not set
+CONFIG_BSP_USING_EADC=y
+CONFIG_BSP_USING_EADC0=y
+# CONFIG_BSP_USING_EADC1 is not set
+# CONFIG_BSP_USING_EADC2 is not set
+CONFIG_BSP_USING_TMR=y
+CONFIG_BSP_USING_TIMER=y
+CONFIG_BSP_USING_TPWM=y
+CONFIG_BSP_USING_TIMER_CAPTURE=y
+CONFIG_BSP_USING_TMR0=y
+CONFIG_BSP_USING_TIMER0=y
+# CONFIG_BSP_USING_TPWM0 is not set
+# CONFIG_BSP_USING_TIMER0_CAPTURE is not set
+CONFIG_BSP_USING_TMR1=y
+# CONFIG_BSP_USING_TIMER1 is not set
+CONFIG_BSP_USING_TPWM1=y
+# CONFIG_BSP_USING_TIMER1_CAPTURE is not set
+CONFIG_BSP_USING_TMR2=y
+# CONFIG_BSP_USING_TIMER2 is not set
+# CONFIG_BSP_USING_TPWM2 is not set
+CONFIG_BSP_USING_TIMER2_CAPTURE=y
+CONFIG_BSP_USING_TMR3=y
+CONFIG_BSP_USING_TIMER3=y
+# CONFIG_BSP_USING_TPWM3 is not set
+# CONFIG_BSP_USING_TIMER3_CAPTURE is not set
+CONFIG_BSP_USING_UART=y
+CONFIG_BSP_USING_UART0=y
+# CONFIG_BSP_USING_UART0_TX_DMA is not set
+# CONFIG_BSP_USING_UART0_RX_DMA is not set
+CONFIG_BSP_USING_UART1=y
+CONFIG_BSP_USING_UART1_TX_DMA=y
+CONFIG_BSP_USING_UART1_RX_DMA=y
+CONFIG_BSP_USING_UART2=y
+CONFIG_BSP_USING_UART2_TX_DMA=y
+CONFIG_BSP_USING_UART2_RX_DMA=y
+# CONFIG_BSP_USING_UART3 is not set
+# CONFIG_BSP_USING_UART4 is not set
+# CONFIG_BSP_USING_UART5 is not set
+# CONFIG_BSP_USING_UART6 is not set
+# CONFIG_BSP_USING_UART7 is not set
+# CONFIG_BSP_USING_UART8 is not set
+# CONFIG_BSP_USING_UART9 is not set
+CONFIG_BSP_USING_I2C=y
+# CONFIG_BSP_USING_I2C0 is not set
+# CONFIG_BSP_USING_I2C1 is not set
+CONFIG_BSP_USING_I2C2=y
+# CONFIG_BSP_USING_I2C3 is not set
+# CONFIG_BSP_USING_I2C4 is not set
+# CONFIG_BSP_USING_USCI is not set
+CONFIG_BSP_USING_SDH=y
+CONFIG_BSP_USING_SDH0=y
+# CONFIG_BSP_USING_SDH1 is not set
+CONFIG_BSP_USING_CANFD=y
+CONFIG_BSP_USING_CANFD0=y
+# CONFIG_BSP_USING_CANFD1 is not set
+# CONFIG_BSP_USING_CANFD2 is not set
+# CONFIG_BSP_USING_CANFD3 is not set
+# CONFIG_BSP_USING_BPWM is not set
+# CONFIG_BSP_USING_EPWM is not set
+CONFIG_BSP_USING_SPI=y
+CONFIG_BSP_USING_SPI_PDMA=y
+# CONFIG_BSP_USING_SPII2S is not set
+CONFIG_BSP_USING_SPI0_NONE=y
+# CONFIG_BSP_USING_SPI0 is not set
+# CONFIG_BSP_USING_SPII2S0 is not set
+CONFIG_BSP_USING_SPI1_NONE=y
+# CONFIG_BSP_USING_SPI1 is not set
+# CONFIG_BSP_USING_SPII2S1 is not set
+# CONFIG_BSP_USING_SPI2_NONE is not set
+CONFIG_BSP_USING_SPI2=y
+# CONFIG_BSP_USING_SPII2S2 is not set
+CONFIG_BSP_USING_SPI2_PDMA=y
+CONFIG_BSP_USING_SPI3_NONE=y
+# CONFIG_BSP_USING_SPI3 is not set
+# CONFIG_BSP_USING_SPII2S3 is not set
+CONFIG_BSP_USING_SPI4_NONE=y
+# CONFIG_BSP_USING_SPI4 is not set
+# CONFIG_BSP_USING_SPII2S4 is not set
+CONFIG_BSP_USING_SPI5_NONE=y
+# CONFIG_BSP_USING_SPI5 is not set
+# CONFIG_BSP_USING_SPII2S5 is not set
+CONFIG_BSP_USING_SPI6_NONE=y
+# CONFIG_BSP_USING_SPI6 is not set
+# CONFIG_BSP_USING_SPII2S6 is not set
+CONFIG_BSP_USING_SPI7_NONE=y
+# CONFIG_BSP_USING_SPI7 is not set
+# CONFIG_BSP_USING_SPII2S7 is not set
+CONFIG_BSP_USING_SPI8_NONE=y
+# CONFIG_BSP_USING_SPI8 is not set
+# CONFIG_BSP_USING_SPII2S8 is not set
+CONFIG_BSP_USING_SPI9_NONE=y
+# CONFIG_BSP_USING_SPI9 is not set
+# CONFIG_BSP_USING_SPII2S9 is not set
+CONFIG_BSP_USING_SPI10_NONE=y
+# CONFIG_BSP_USING_SPI10 is not set
+# CONFIG_BSP_USING_SPII2S10 is not set
+# CONFIG_BSP_USING_I2S is not set
+CONFIG_BSP_USING_QSPI=y
+CONFIG_BSP_USING_QSPI0=y
+# CONFIG_BSP_USING_QSPI0_PDMA is not set
+# CONFIG_BSP_USING_QSPI1 is not set
+# CONFIG_BSP_USING_SCUART is not set
+# CONFIG_BSP_USING_ECAP is not set
+# CONFIG_BSP_USING_EQEI is not set
+CONFIG_BSP_USING_CRYPTO=y
+# CONFIG_NU_PRNG_USE_SEED is not set
+CONFIG_BSP_USING_TRNG=y
+CONFIG_BSP_USING_CRC=y
+CONFIG_NU_CRC_USE_PDMA=y
+# CONFIG_BSP_USING_SOFT_I2C is not set
+CONFIG_BSP_USING_WDT=y
+# CONFIG_BSP_USING_EBI is not set
+# CONFIG_BSP_USING_HBI is not set
+CONFIG_BSP_USING_USBD=y
+# CONFIG_BSP_USING_HSUSBD is not set
+# CONFIG_BSP_USING_USBH is not set
+CONFIG_BSP_USING_HSUSBH=y
+CONFIG_NU_USBHOST_HUB_POLLING_INTERVAL=100
+# CONFIG_BSP_USING_HSOTG is not set
+
+#
+# On-board Peripheral Drivers
+#
+CONFIG_BSP_USING_NULINKME=y
+CONFIG_BOARD_USING_RTL8201FI=y
+CONFIG_BOARD_USING_ESP8266=y
+CONFIG_BOARD_USING_STORAGE_SDCARD=y
+CONFIG_BOARD_USING_STORAGE_SPIFLASH=y
+CONFIG_BOARD_USING_CANFD0=y
+CONFIG_BOARD_USING_NCT7717U=y
+CONFIG_BOARD_USING_MPU6500=y
+CONFIG_BOARD_USING_USB_D_H=y
+# CONFIG_BOARD_USING_HSUSBD is not set
+# CONFIG_BOARD_USING_HSUSBD_USBH is not set
+# CONFIG_BOARD_USING_HSUSBH is not set
+CONFIG_BOARD_USING_HSUSBH_USBD=y
+# CONFIG_BOARD_USING_HSOTG is not set
+
+#
+# Board extended module drivers
+#
+# CONFIG_BOARD_USING_MAX31875 is not set
+CONFIG_BOARD_USING_LCD_ILI9341=y
+CONFIG_BOARD_USING_ILI9341_PIN_BACKLIGHT=21
+CONFIG_BOARD_USING_ILI9341_PIN_RESET=19
+CONFIG_BOARD_USING_ILI9341_PIN_DC=18
+
+#
+# Nuvoton Packages Config
+#
+CONFIG_NU_PKG_USING_UTILS=y
+CONFIG_NU_PKG_USING_DEMO=y
+# CONFIG_NU_PKG_USING_LVGL is not set
+# CONFIG_NU_PKG_USING_BMX055 is not set
+# CONFIG_NU_PKG_USING_MAX31875 is not set
+CONFIG_NU_PKG_USING_NCT7717U=y
+# CONFIG_NU_PKG_USING_NAU88L25 is not set
+# CONFIG_NU_PKG_USING_NAU8822 is not set
+# CONFIG_NU_PKG_USING_DA9062 is not set
+CONFIG_NU_PKG_USING_ILI9341=y
+CONFIG_NU_PKG_USING_ILI9341_SPI=y
+# CONFIG_NU_PKG_USING_ILI9341_EBI is not set
+CONFIG_NU_PKG_USING_ILI9341_SPI_CLK_FREQ=48000000
+CONFIG_NU_PKG_ILI9341_WITH_OFFSCREEN_FRAMEBUFFER=y
+CONFIG_NU_PKG_ILI9341_LINE_BUFFER_NUMBER=120
+CONFIG_NU_PKG_ILI9341_HORIZONTAL=y
+CONFIG_BSP_LCD_BPP=16
+CONFIG_BSP_LCD_WIDTH=320
+CONFIG_BSP_LCD_HEIGHT=240
+# CONFIG_NU_PKG_USING_SSD1963 is not set
+# CONFIG_NU_PKG_USING_FSA506 is not set
+# CONFIG_NU_PKG_USING_TPC is not set
+CONFIG_NU_PKG_USING_ADC_TOUCH=y
+CONFIG_NU_PKG_USING_ADC_TOUCH_SW=y
+# CONFIG_NU_PKG_USING_SPINAND is not set
+CONFIG_UTEST_CMD_PREFIX="bsp.nuvoton.utest."
+CONFIG_BOARD_USE_UTEST=y

BIN
bsp/nuvoton/numaker-iot-m467/figures/NuLinkMe_SwitchSetting.png


BIN
bsp/nuvoton/numaker-iot-m467/figures/NuMaker-IoT-M467-V1_B.png


BIN
bsp/nuvoton/numaker-iot-m467/figures/NuMaker-IoT-M467-V1_F.png


BIN
bsp/nuvoton/numaker-iot-m467/figures/NuMicro_MCU_Disk.png


BIN
bsp/nuvoton/numaker-iot-m467/figures/Sendto.png


BIN
bsp/nuvoton/numaker-iot-m467/figures/SerialSetting.png


+ 28 - 0
bsp/nuvoton/numaker-iot-m467/linking_scripts/m460_flash.icf

@@ -0,0 +1,28 @@
+/*###ICF### Section handled by ICF editor, don't touch! ****/
+/*-Editor annotation file-*/
+/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
+/*-Specials-*/
+define symbol __ICFEDIT_intvec_start__ = 0x00000000;
+/*-Memory Regions-*/
+define symbol __ICFEDIT_region_ROM_start__ = 0x00000000;
+define symbol __ICFEDIT_region_ROM_end__   = 0x000FFFFF;
+define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
+define symbol __ICFEDIT_region_RAM_end__   = 0x2007FFFF;
+/*-Sizes-*/
+define symbol __ICFEDIT_size_cstack__ = 0x0400;
+define symbol __ICFEDIT_size_heap__   = 0x0000;
+/**** End of ICF editor section. ###ICF###*/
+
+define memory mem with size = 4G;
+define region ROM_region      = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__];
+define region RAM_region      = mem:[from __ICFEDIT_region_RAM_start__   to __ICFEDIT_region_RAM_end__];
+
+define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };
+
+initialize by copy { readwrite };
+do not initialize  { section .noinit };
+
+place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
+
+place in ROM_region   { readonly };
+place in RAM_region   { readwrite, last block CSTACK};

+ 15 - 0
bsp/nuvoton/numaker-iot-m467/linking_scripts/m460_flash.sct

@@ -0,0 +1,15 @@
+; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_IROM1 0x00000000 0x00100000  {    ; load region size_region
+  ER_IROM1 0x00000000 0x00100000  {  ; load address = execution address
+   *.o (RESET, +First)
+   *(InRoot$$Sections)
+   .ANY (+RO)
+  }
+  RW_IRAM1 0x20000000 0x00080000  {  ; RW data
+   .ANY (+RW +ZI)
+  }
+}
+

+ 161 - 0
bsp/nuvoton/numaker-iot-m467/linking_scripts/m460_link.ld

@@ -0,0 +1,161 @@
+/**************************************************************************//**
+*
+* @copyright (C) 2019 Nuvoton Technology Corp. All rights reserved.
+*
+* SPDX-License-Identifier: Apache-2.0
+*
+* Change Logs:
+* Date            Author       Notes
+* 2020-1-16       Wayne        First version
+*
+******************************************************************************/
+
+/* Program Entry, set to mark it as "used" and avoid gc */
+MEMORY
+{
+    CODE (rx) : ORIGIN = 0x00000000, LENGTH = 1024k    /* 1024K flash */
+    DATA (rw) : ORIGIN = 0x20000000, LENGTH = 512k     /* 512K sram */
+}
+ENTRY(Reset_Handler)
+_system_stack_size = 0x1000;
+
+SECTIONS
+{
+    .vector :
+    {
+        . = ALIGN(4);
+        _stext = .;
+        KEEP(*(.isr_vector))            /* Startup code */
+    } > CODE = 0
+    
+    .text :
+    {
+        . = ALIGN(4);
+        *(.text)                        /* remaining code */
+        *(.text.*)                      /* remaining code */
+        *(.rodata)                      /* read-only data (constants) */
+        *(.rodata*)
+        *(.glue_7)
+        *(.glue_7t)
+        *(.gnu.linkonce.t*)
+
+        /* section information for finsh shell */
+        . = ALIGN(4);
+        __fsymtab_start = .;
+        KEEP(*(FSymTab))
+        __fsymtab_end = .;
+        . = ALIGN(4);
+        __vsymtab_start = .;
+        KEEP(*(VSymTab))
+        __vsymtab_end = .;
+        . = ALIGN(4);
+
+        /* section information for initial. */
+        . = ALIGN(4);
+        __rt_init_start = .;
+        KEEP(*(SORT(.rti_fn*)))
+        __rt_init_end = .;
+        . = ALIGN(4);
+
+        /* section information for utest */
+        . = ALIGN(4);
+        __rt_utest_tc_tab_start = .;
+        KEEP(*(UtestTcTab))
+        __rt_utest_tc_tab_end = .;
+
+        . = ALIGN(4);
+        _etext = .;
+    } > CODE = 0
+
+    /* .ARM.exidx is sorted, so has to go in its own output section.  */
+    __exidx_start = .;
+    .ARM.exidx :
+    {
+        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+
+        /* This is used by the startup in order to initialize the .data section */
+        _sidata = .;
+    } > CODE
+    __exidx_end = .;
+
+    /* .data section which is used for initialized data */
+
+    .stack : 
+    {
+        _sstack = .;
+        . = . + _system_stack_size;
+        . = ALIGN(4);
+        _estack = .;
+    } >DATA
+
+    .data : AT (_sidata)
+    {
+        . = ALIGN(4);
+        /* This is used by the startup in order to initialize the .data section */
+        _sdata = . ;
+
+        *(.data)
+        *(.data.*)
+        *(.gnu.linkonce.d*)
+
+        . = ALIGN(4);
+        /* This is used by the startup in order to initialize the .data section */
+        _edata = . ;
+    } >DATA
+
+    __bss_start = .;
+    .bss :
+    {
+        . = ALIGN(4);
+        /* This is used by the startup in order to initialize the .bss section */
+        _sbss = .;
+
+        *(.bss)
+        *(.bss.*)
+        *(COMMON)
+
+        . = ALIGN(4);
+        /* This is used by the startup in order to initialize the .bss section */
+        _ebss = . ;
+        
+        *(.bss.init)
+    } > DATA
+    __bss_end = .;
+    _end = .;
+    
+    __ram_top = ORIGIN(DATA) + LENGTH(DATA);
+
+    /* Stabs debugging sections.  */
+    .stab          0 : { *(.stab) }
+    .stabstr       0 : { *(.stabstr) }
+    .stab.excl     0 : { *(.stab.excl) }
+    .stab.exclstr  0 : { *(.stab.exclstr) }
+    .stab.index    0 : { *(.stab.index) }
+    .stab.indexstr 0 : { *(.stab.indexstr) }
+    .comment       0 : { *(.comment) }
+    /* DWARF debug sections.
+     * Symbols in the DWARF debugging sections are relative to the beginning
+     * of the section so we begin them at 0.  */
+    /* DWARF 1 */
+    .debug          0 : { *(.debug) }
+    .line           0 : { *(.line) }
+    /* GNU DWARF 1 extensions */
+    .debug_srcinfo  0 : { *(.debug_srcinfo) }
+    .debug_sfnames  0 : { *(.debug_sfnames) }
+    /* DWARF 1.1 and DWARF 2 */
+    .debug_aranges  0 : { *(.debug_aranges) }
+    .debug_pubnames 0 : { *(.debug_pubnames) }
+    /* DWARF 2 */
+    .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
+    .debug_abbrev   0 : { *(.debug_abbrev) }
+    .debug_line     0 : { *(.debug_line) }
+    .debug_frame    0 : { *(.debug_frame) }
+    .debug_str      0 : { *(.debug_str) }
+    .debug_loc      0 : { *(.debug_loc) }
+    .debug_macinfo  0 : { *(.debug_macinfo) }
+    /* SGI/MIPS DWARF 2 extensions */
+    .debug_weaknames 0 : { *(.debug_weaknames) }
+    .debug_funcnames 0 : { *(.debug_funcnames) }
+    .debug_typenames 0 : { *(.debug_typenames) }
+    .debug_varnames  0 : { *(.debug_varnames) }
+}

+ 140 - 0
bsp/nuvoton/numaker-iot-m467/rtconfig.py

@@ -0,0 +1,140 @@
+import os
+
+# toolchains options
+ARCH='arm'
+CPU='cortex-m4'
+CROSS_TOOL='gcc'
+
+if os.getenv('RTT_CC'):
+	CROSS_TOOL = os.getenv('RTT_CC')
+if os.getenv('RTT_ROOT'):
+    RTT_ROOT = os.getenv('RTT_ROOT')
+
+# cross_tool provides the cross compiler
+# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR
+
+if  CROSS_TOOL == 'gcc':
+	PLATFORM = 'gcc'
+	EXEC_PATH = r'C:\Program Files (x86)\GNU Tools ARM Embedded\6 2017-q1-update\bin'
+elif CROSS_TOOL == 'keil':
+	PLATFORM = 'armcc'
+	EXEC_PATH = r'C:\Keil_v5'
+elif CROSS_TOOL == 'iar':
+	PLATFORM = 'iccarm'
+	EXEC_PATH = r'C:\Program Files (x86)\IAR Systems\Embedded Workbench 8.2'
+
+if os.getenv('RTT_EXEC_PATH'):
+	EXEC_PATH = os.getenv('RTT_EXEC_PATH')
+
+BUILD = ''
+#BUILD = 'debug'
+
+if PLATFORM == 'gcc':
+    # toolchains
+
+    PREFIX = 'arm-none-eabi-'
+    CC = PREFIX + 'gcc'
+    AS = PREFIX + 'gcc'
+    AR = PREFIX + 'ar'
+    CXX = PREFIX + 'g++'
+    LINK = PREFIX + 'gcc'
+    TARGET_EXT = 'elf'
+    SIZE = PREFIX + 'size'
+    OBJDUMP = PREFIX + 'objdump'
+    OBJCPY = PREFIX + 'objcopy'
+
+    DEVICE = ' -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections'
+    CFLAGS = DEVICE + ' -Dgcc'
+    AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp -Wa,-mimplicit-it=thumb '
+    LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,Reset_Handler -T ./linking_scripts/m460_link.ld '
+
+    CPATH = ''
+    LPATH = ''
+
+    if BUILD == 'debug':
+        CFLAGS += ' -O0 -gdwarf-2 -g'
+        AFLAGS += ' -gdwarf-2'
+    else:
+        CFLAGS += ' -O2'
+
+    CXXFLAGS = CFLAGS 
+
+    POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n'
+
+elif PLATFORM == 'armcc':
+    # toolchains
+    CC = 'armcc'
+    AS = 'armasm'
+    AR = 'armar'
+    LINK = 'armlink'
+    TARGET_EXT = 'axf'
+
+    DEVICE = ' --cpu=cortex-m4.fp'
+    CFLAGS = DEVICE + ' --apcs=interwork'
+    AFLAGS = DEVICE
+    LFLAGS = DEVICE + ' --info sizes --info totals --info unused --info veneers --list rtthread.map --scatter ./linking_scripts/m460_flash.sct'
+
+    CFLAGS += ' --c99'
+    CFLAGS += ' -I' + EXEC_PATH + '/ARM/RV31/INC'
+    LFLAGS += ' --libpath ' + EXEC_PATH + '/ARM/RV31/LIB'
+
+    EXEC_PATH += '/arm/bin40/'
+
+    if BUILD == 'debug':
+        CFLAGS += ' -g -O0'
+        AFLAGS += ' -g'
+    else:
+        CFLAGS += ' -O2'
+
+    POST_ACTION = 'fromelf --bin $TARGET --output rtthread.bin \nfromelf -z $TARGET'
+
+elif PLATFORM == 'iccarm':
+    # toolchains
+    CC = 'iccarm'
+    AS = 'iasmarm'
+    AR = 'iarchive'
+    LINK = 'ilinkarm'
+    TARGET_EXT = 'out'
+
+    DEVICE = ' '
+
+    CFLAGS = DEVICE
+    CFLAGS += ' --diag_suppress Pa050'
+    CFLAGS += ' --no_cse' 
+    CFLAGS += ' --no_unroll' 
+    CFLAGS += ' --no_inline' 
+    CFLAGS += ' --no_code_motion' 
+    CFLAGS += ' --no_tbaa' 
+    CFLAGS += ' --no_clustering' 
+    CFLAGS += ' --no_scheduling' 
+    CFLAGS += ' --debug' 
+    CFLAGS += ' --endian=little' 
+    CFLAGS += ' --cpu=Cortex-M4' 
+    CFLAGS += ' -e' 
+    CFLAGS += ' --fpu=None'
+    CFLAGS += ' --dlib_config "' + EXEC_PATH + '/arm/INC/c/DLib_Config_Normal.h"'    
+    CFLAGS += ' -Ol'    
+    CFLAGS += ' --use_c++_inline'
+        
+    AFLAGS = ''
+    AFLAGS += ' -s+' 
+    AFLAGS += ' -w+' 
+    AFLAGS += ' -r' 
+    AFLAGS += ' --cpu Cortex-M4' 
+    AFLAGS += ' --fpu None' 
+
+    LFLAGS = ' --config ./linking_scripts/m460_flash.icf'
+    LFLAGS += ' --redirect _Printf=_PrintfTiny' 
+    LFLAGS += ' --redirect _Scanf=_ScanfSmall' 
+    LFLAGS += ' --entry __iar_program_start'    
+
+    EXEC_PATH = EXEC_PATH + '/arm/bin/'
+    POST_ACTION = ''
+
+def dist_handle(BSP_ROOT, dist_dir):
+    import sys
+    cwd_path = os.getcwd()
+    sys.path.append(os.path.join(os.path.dirname(BSP_ROOT), 'tools'))
+    from sdk_dist import dist_do_building
+    dist_do_building(BSP_ROOT, dist_dir)
+

+ 1485 - 0
bsp/nuvoton/numaker-iot-m467/template.ewd

@@ -0,0 +1,1485 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+    <fileVersion>3</fileVersion>
+    <configuration>
+        <name>Release</name>
+        <toolchain>
+            <name>ARM</name>
+        </toolchain>
+        <debug>0</debug>
+        <settings>
+            <name>C-SPY</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>30</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>CInput</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CEndian</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CProcessor</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OCVariant</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>MacOverride</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>MacFile</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>MemOverride</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>MemFile</name>
+                    <state>$TOOLKIT_DIR$\CONFIG\debugger\Nuvoton\iom480ae.ddf</state>
+                </option>
+                <option>
+                    <name>RunToEnable</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>RunToName</name>
+                    <state>main</state>
+                </option>
+                <option>
+                    <name>CExtraOptionsCheck</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CExtraOptions</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CFpuProcessor</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OCDDFArgumentProducer</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>OCDownloadSuppressDownload</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCDownloadVerifyAll</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCProductVersion</name>
+                    <state>6.21.1.52845</state>
+                </option>
+                <option>
+                    <name>OCDynDriverList</name>
+                    <state>THIRDPARTY_ID</state>
+                </option>
+                <option>
+                    <name>OCLastSavedByProductVersion</name>
+                    <state>8.32.1.18618</state>
+                </option>
+                <option>
+                    <name>UseFlashLoader</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CLowLevel</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OCBE8Slave</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>MacFile2</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CDevice</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>FlashLoadersV3</name>
+                    <state>$TOOLKIT_DIR$\config\flashloader\Nuvoton\M481_APROM.board</state>
+                </option>
+                <option>
+                    <name>OCImagesSuppressCheck1</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCImagesPath1</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>OCImagesSuppressCheck2</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCImagesPath2</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>OCImagesSuppressCheck3</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCImagesPath3</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>OverrideDefFlashBoard</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCImagesOffset1</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>OCImagesOffset2</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>OCImagesOffset3</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>OCImagesUse1</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCImagesUse2</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCImagesUse3</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCDeviceConfigMacroFile</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OCDebuggerExtraOption</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OCAllMTBOptions</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OCMulticoreNrOfCores</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OCMulticoreMaster</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCMulticorePort</name>
+                    <state>53461</state>
+                </option>
+                <option>
+                    <name>OCMulticoreWorkspace</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>OCMulticoreSlaveProject</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>OCMulticoreSlaveConfiguration</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>OCDownloadExtraImage</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OCAttachSlave</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>MassEraseBeforeFlashing</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCMulticoreNrOfCoresSlave</name>
+                    <state>1</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>ARMSIM_ID</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>1</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>OCSimDriverInfo</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OCSimEnablePSP</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCSimPspOverrideConfig</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCSimPspConfigFile</name>
+                    <state></state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>CADI_ID</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>0</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>CCadiMemory</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>Fast Model</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCADILogFileCheck</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCADILogFileEditB</name>
+                    <state>$PROJ_DIR$\cspycomm.log</state>
+                </option>
+                <option>
+                    <name>OCDriverInfo</name>
+                    <state>1</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>CMSISDAP_ID</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>4</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>CatchSFERR</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OCDriverInfo</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OCIarProbeScriptFile</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CMSISDAPResetList</name>
+                    <version>1</version>
+                    <state>10</state>
+                </option>
+                <option>
+                    <name>CMSISDAPHWResetDuration</name>
+                    <state>300</state>
+                </option>
+                <option>
+                    <name>CMSISDAPHWResetDelay</name>
+                    <state>200</state>
+                </option>
+                <option>
+                    <name>CMSISDAPDoLogfile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CMSISDAPLogFile</name>
+                    <state>$PROJ_DIR$\cspycomm.log</state>
+                </option>
+                <option>
+                    <name>CMSISDAPInterfaceRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CMSISDAPInterfaceCmdLine</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CMSISDAPMultiTargetEnable</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CMSISDAPMultiTarget</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CMSISDAPJtagSpeedList</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CMSISDAPBreakpointRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CMSISDAPRestoreBreakpointsCheck</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CMSISDAPUpdateBreakpointsEdit</name>
+                    <state>_call_main</state>
+                </option>
+                <option>
+                    <name>RDICatchReset</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>RDICatchUndef</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>RDICatchSWI</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>RDICatchData</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>RDICatchPrefetch</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>RDICatchIRQ</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>RDICatchFIQ</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CatchCORERESET</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CatchMMERR</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CatchNOCPERR</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CatchCHKERR</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CatchSTATERR</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CatchBUSERR</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CatchINTERR</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CatchHARDERR</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CatchDummy</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CMSISDAPMultiCPUEnable</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CMSISDAPMultiCPUNumber</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCProbeCfgOverride</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCProbeConfig</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CMSISDAPProbeConfigRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CMSISDAPSelectedCPUBehaviour</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>ICpuName</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>OCJetEmuParams</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCCMSISDAPUsbSerialNo</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCCMSISDAPUsbSerialNoSelect</name>
+                    <state>0</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>GDBSERVER_ID</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>0</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>OCDriverInfo</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>TCPIP</name>
+                    <state>aaa.bbb.ccc.ddd</state>
+                </option>
+                <option>
+                    <name>DoLogfile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>LogFile</name>
+                    <state>$PROJ_DIR$\cspycomm.log</state>
+                </option>
+                <option>
+                    <name>CCJTagBreakpointRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCJTagDoUpdateBreakpoints</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCJTagUpdateBreakpoints</name>
+                    <state>_call_main</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>IJET_ID</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>8</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>CatchSFERR</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OCDriverInfo</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OCIarProbeScriptFile</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IjetResetList</name>
+                    <version>1</version>
+                    <state>10</state>
+                </option>
+                <option>
+                    <name>IjetHWResetDuration</name>
+                    <state>300</state>
+                </option>
+                <option>
+                    <name>IjetHWResetDelay</name>
+                    <state>200</state>
+                </option>
+                <option>
+                    <name>IjetPowerFromProbe</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IjetPowerRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IjetDoLogfile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IjetLogFile</name>
+                    <state>$PROJ_DIR$\cspycomm.log</state>
+                </option>
+                <option>
+                    <name>IjetInterfaceRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IjetInterfaceCmdLine</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IjetMultiTargetEnable</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IjetMultiTarget</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IjetScanChainNonARMDevices</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IjetIRLength</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IjetJtagSpeedList</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IjetProtocolRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IjetSwoPin</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IjetCpuClockEdit</name>
+                    <state>72.0</state>
+                </option>
+                <option>
+                    <name>IjetSwoPrescalerList</name>
+                    <version>1</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IjetBreakpointRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IjetRestoreBreakpointsCheck</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IjetUpdateBreakpointsEdit</name>
+                    <state>_call_main</state>
+                </option>
+                <option>
+                    <name>RDICatchReset</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>RDICatchUndef</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>RDICatchSWI</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>RDICatchData</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>RDICatchPrefetch</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>RDICatchIRQ</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>RDICatchFIQ</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CatchCORERESET</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CatchMMERR</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CatchNOCPERR</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CatchCHKERR</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CatchSTATERR</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CatchBUSERR</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CatchINTERR</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CatchHARDERR</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CatchDummy</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCProbeCfgOverride</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCProbeConfig</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IjetProbeConfigRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IjetMultiCPUEnable</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IjetMultiCPUNumber</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IjetSelectedCPUBehaviour</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>ICpuName</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>OCJetEmuParams</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IjetPreferETB</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IjetTraceSettingsList</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IjetTraceSizeList</name>
+                    <version>0</version>
+                    <state>4</state>
+                </option>
+                <option>
+                    <name>FlashBoardPathSlave</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCIjetUsbSerialNo</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCIjetUsbSerialNoSelect</name>
+                    <state>0</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>JLINK_ID</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>16</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>CCCatchSFERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>JLinkSpeed</name>
+                    <state>32</state>
+                </option>
+                <option>
+                    <name>CCJLinkDoLogfile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCJLinkLogFile</name>
+                    <state>$PROJ_DIR$\cspycomm.log</state>
+                </option>
+                <option>
+                    <name>CCJLinkHWResetDelay</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCDriverInfo</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>JLinkInitialSpeed</name>
+                    <state>32</state>
+                </option>
+                <option>
+                    <name>CCDoJlinkMultiTarget</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCScanChainNonARMDevices</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCJLinkMultiTarget</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCJLinkIRLength</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCJLinkCommRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCJLinkTCPIP</name>
+                    <state>aaa.bbb.ccc.ddd</state>
+                </option>
+                <option>
+                    <name>CCJLinkSpeedRadioV2</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCUSBDevice</name>
+                    <version>1</version>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCRDICatchReset</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCRDICatchUndef</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCRDICatchSWI</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCRDICatchData</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCRDICatchPrefetch</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCRDICatchIRQ</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCRDICatchFIQ</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCJLinkBreakpointRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCJLinkDoUpdateBreakpoints</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCJLinkUpdateBreakpoints</name>
+                    <state>_call_main</state>
+                </option>
+                <option>
+                    <name>CCJLinkInterfaceRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCJLinkResetList</name>
+                    <version>6</version>
+                    <state>5</state>
+                </option>
+                <option>
+                    <name>CCJLinkInterfaceCmdLine</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCCatchCORERESET</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCCatchMMERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCCatchNOCPERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCCatchCHRERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCCatchSTATERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCCatchBUSERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCCatchINTERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCCatchHARDERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCCatchDummy</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCJLinkScriptFile</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCJLinkUsbSerialNo</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCTcpIpAlt</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCJLinkTcpIpSerialNo</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCCpuClockEdit</name>
+                    <state>72.0</state>
+                </option>
+                <option>
+                    <name>CCSwoClockAuto</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSwoClockEdit</name>
+                    <state>2000</state>
+                </option>
+                <option>
+                    <name>OCJLinkTraceSource</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCJLinkTraceSourceDummy</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OCJLinkDeviceName</name>
+                    <state>1</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>LMIFTDI_ID</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>2</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>OCDriverInfo</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>LmiftdiSpeed</name>
+                    <state>500</state>
+                </option>
+                <option>
+                    <name>CCLmiftdiDoLogfile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCLmiftdiLogFile</name>
+                    <state>$PROJ_DIR$\cspycomm.log</state>
+                </option>
+                <option>
+                    <name>CCLmiFtdiInterfaceRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCLmiFtdiInterfaceCmdLine</name>
+                    <state>0</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>NULINK_ID</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>0</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>OCDriverInfo</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>DoLogfile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>LogFile</name>
+                    <state>$PROJ_DIR$\cspycomm.log</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>PEMICRO_ID</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>3</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>OCDriverInfo</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCJPEMicroShowSettings</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>DoLogfile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>LogFile</name>
+                    <state>$PROJ_DIR$\cspycomm.log</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>STLINK_ID</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>6</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>OCDriverInfo</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCSTLinkInterfaceRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSTLinkInterfaceCmdLine</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSTLinkResetList</name>
+                    <version>3</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCCpuClockEdit</name>
+                    <state>72.0</state>
+                </option>
+                <option>
+                    <name>CCSwoClockAuto</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSwoClockEdit</name>
+                    <state>2000</state>
+                </option>
+                <option>
+                    <name>DoLogfile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>LogFile</name>
+                    <state>$PROJ_DIR$\cspycomm.log</state>
+                </option>
+                <option>
+                    <name>CCSTLinkDoUpdateBreakpoints</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSTLinkUpdateBreakpoints</name>
+                    <state>_call_main</state>
+                </option>
+                <option>
+                    <name>CCSTLinkCatchCORERESET</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSTLinkCatchMMERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSTLinkCatchNOCPERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSTLinkCatchCHRERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSTLinkCatchSTATERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSTLinkCatchBUSERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSTLinkCatchINTERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSTLinkCatchSFERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSTLinkCatchHARDERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSTLinkCatchDummy</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSTLinkUsbSerialNo</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCSTLinkUsbSerialNoSelect</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSTLinkJtagSpeedList</name>
+                    <version>2</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSTLinkDAPNumber</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCSTLinkDebugAccessPortRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSTLinkUseServerSelect</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSTLinkProbeList</name>
+                    <version>0</version>
+                    <state>1</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>THIRDPARTY_ID</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>0</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>CThirdPartyDriverDll</name>
+                    <state>$TOOLKIT_DIR$\..\..\..\Nuvoton Tools\Nu-Link_IAR\Nu-Link_IAR.dll</state>
+                </option>
+                <option>
+                    <name>CThirdPartyLogFileCheck</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CThirdPartyLogFileEditB</name>
+                    <state>$PROJ_DIR$\cspycomm.log</state>
+                </option>
+                <option>
+                    <name>OCDriverInfo</name>
+                    <state>1</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>TIFET_ID</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>1</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>OCDriverInfo</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCMSPFetResetList</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCMSPFetInterfaceRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCMSPFetInterfaceCmdLine</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCMSPFetTargetVccTypeDefault</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCMSPFetTargetVoltage</name>
+                    <state>###Uninitialized###</state>
+                </option>
+                <option>
+                    <name>CCMSPFetVCCDefault</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCMSPFetTargetSettlingtime</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCMSPFetRadioJtagSpeedType</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCMSPFetConnection</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCMSPFetUsbComPort</name>
+                    <state>Automatic</state>
+                </option>
+                <option>
+                    <name>CCMSPFetAllowAccessToBSL</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCMSPFetDoLogfile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCMSPFetLogFile</name>
+                    <state>$PROJ_DIR$\cspycomm.log</state>
+                </option>
+                <option>
+                    <name>CCMSPFetRadioEraseFlash</name>
+                    <state>1</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>XDS100_ID</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>8</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>OCDriverInfo</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>TIPackageOverride</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>TIPackage</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>BoardFile</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>DoLogfile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>LogFile</name>
+                    <state>$PROJ_DIR$\cspycomm.log</state>
+                </option>
+                <option>
+                    <name>CCXds100BreakpointRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100DoUpdateBreakpoints</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100UpdateBreakpoints</name>
+                    <state>_call_main</state>
+                </option>
+                <option>
+                    <name>CCXds100CatchReset</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100CatchUndef</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100CatchSWI</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100CatchData</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100CatchPrefetch</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100CatchIRQ</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100CatchFIQ</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100CatchCORERESET</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100CatchMMERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100CatchNOCPERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100CatchCHRERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100CatchSTATERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100CatchBUSERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100CatchINTERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100CatchSFERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100CatchHARDERR</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100CatchDummy</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100CpuClockEdit</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCXds100SwoClockAuto</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100SwoClockEdit</name>
+                    <state>1000</state>
+                </option>
+                <option>
+                    <name>CCXds100HWResetDelay</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100ResetList</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100UsbSerialNo</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCXds100UsbSerialNoSelect</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100JtagSpeedList</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100InterfaceRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100InterfaceCmdLine</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100ProbeList</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100SWOPortRadio</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXds100SWOPort</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCXDSTargetVccEnable</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCXDSTargetVoltage</name>
+                    <state>###Uninitialized###</state>
+                </option>
+                <option>
+                    <name>OCXDSDigitalStatesConfigFile</name>
+                    <state>1</state>
+                </option>
+            </data>
+        </settings>
+        <debuggerPlugins>
+            <plugin>
+                <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$TOOLKIT_DIR$\plugins\rtos\FreeRtos\FreeRtosArmPlugin.ENU.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$TOOLKIT_DIR$\plugins\rtos\HWRTOSplugin\HWRTOSplugin.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin.ENU.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$TOOLKIT_DIR$\plugins\rtos\Mbed\MbedArmPlugin2.ENU.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$TOOLKIT_DIR$\plugins\rtos\SMX\smxAwareIarArm8BE.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin</file>
+                <loadFlag>1</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$EW_DIR$\common\plugins\TargetAccessServer\TargetAccessServer.ENU.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+            <plugin>
+                <file>$EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin</file>
+                <loadFlag>0</loadFlag>
+            </plugin>
+        </debuggerPlugins>
+    </configuration>
+</project>

+ 1039 - 0
bsp/nuvoton/numaker-iot-m467/template.ewp

@@ -0,0 +1,1039 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+    <fileVersion>3</fileVersion>
+    <configuration>
+        <name>Release</name>
+        <toolchain>
+            <name>ARM</name>
+        </toolchain>
+        <debug>0</debug>
+        <settings>
+            <name>General</name>
+            <archiveVersion>3</archiveVersion>
+            <data>
+                <version>31</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>ExePath</name>
+                    <state>build\iar\Exe</state>
+                </option>
+                <option>
+                    <name>ObjPath</name>
+                    <state>build\iar\Obj</state>
+                </option>
+                <option>
+                    <name>ListPath</name>
+                    <state>build\iar\List</state>
+                </option>
+                <option>
+                    <name>GEndianMode</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>Input description</name>
+                    <state>No specifier n, no float nor long long, no scan set, no assignment suppressing, with multibyte support.</state>
+                </option>
+                <option>
+                    <name>Output description</name>
+                    <state>No specifier a, A, no specifier n, no float nor long long, with multibyte support.</state>
+                </option>
+                <option>
+                    <name>GOutputBinary</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGCoreOrChip</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>GRuntimeLibSelect</name>
+                    <version>0</version>
+                    <state>2</state>
+                </option>
+                <option>
+                    <name>GRuntimeLibSelectSlave</name>
+                    <version>0</version>
+                    <state>2</state>
+                </option>
+                <option>
+                    <name>RTDescription</name>
+                    <state>Use the full configuration of the C/C++ runtime library. Full locale interface, C locale, file descriptor support, multibytes in printf and scanf, and hex floats in strtod.</state>
+                </option>
+                <option>
+                    <name>OGProductVersion</name>
+                    <state>6.21.1.52845</state>
+                </option>
+                <option>
+                    <name>OGLastSavedByProductVersion</name>
+                    <state>8.32.1.18618</state>
+                </option>
+                <option>
+                    <name>GeneralEnableMisra</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GeneralMisraVerbose</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGChipSelectEditMenu</name>
+                    <state>M481AE series	Nuvoton M481AE series (M481AE,M482AE,M483AE,M485AE,M487AE)</state>
+                </option>
+                <option>
+                    <name>GenLowLevelInterface</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>GEndianModeBE</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OGBufferedTerminalOutput</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GenStdoutInterface</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GeneralMisraRules98</name>
+                    <version>0</version>
+                    <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+                </option>
+                <option>
+                    <name>GeneralMisraVer</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GeneralMisraRules04</name>
+                    <version>0</version>
+                    <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+                </option>
+                <option>
+                    <name>RTConfigPath2</name>
+                    <state>$TOOLKIT_DIR$\inc\c\DLib_Config_Full.h</state>
+                </option>
+                <option>
+                    <name>GBECoreSlave</name>
+                    <version>26</version>
+                    <state>39</state>
+                </option>
+                <option>
+                    <name>OGUseCmsis</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGUseCmsisDspLib</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GRuntimeLibThreads</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CoreVariant</name>
+                    <version>26</version>
+                    <state>39</state>
+                </option>
+                <option>
+                    <name>GFPUDeviceSlave</name>
+                    <state>M481AE series	Nuvoton M481AE series (M481AE,M482AE,M483AE,M485AE,M487AE)</state>
+                </option>
+                <option>
+                    <name>FPU2</name>
+                    <version>0</version>
+                    <state>4</state>
+                </option>
+                <option>
+                    <name>NrRegs</name>
+                    <version>0</version>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>NEON</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>GFPUCoreSlave2</name>
+                    <version>26</version>
+                    <state>39</state>
+                </option>
+                <option>
+                    <name>OGCMSISPackSelectDevice</name>
+                </option>
+                <option>
+                    <name>OgLibHeap</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGLibAdditionalLocale</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OGPrintfVariant</name>
+                    <version>0</version>
+                    <state>3</state>
+                </option>
+                <option>
+                    <name>OGPrintfMultibyteSupport</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OGScanfVariant</name>
+                    <version>0</version>
+                    <state>3</state>
+                </option>
+                <option>
+                    <name>OGScanfMultibyteSupport</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>GenLocaleTags</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>GenLocaleDisplayOnly</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>DSPExtension</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>TrustZone</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>TrustZoneModes</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>ICCARM</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>35</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>CCOptimizationNoSizeConstraints</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCDefines</name>
+                    <state>ARM_MATH_CM4</state>
+                </option>
+                <option>
+                    <name>CCPreprocFile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCPreprocComments</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCPreprocLine</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCListCFile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCListCMnemonics</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCListCMessages</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCListAssFile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCListAssSource</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCEnableRemarks</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCDiagSuppress</name>
+                    <state>Pa082,Pa050</state>
+                </option>
+                <option>
+                    <name>CCDiagRemark</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCDiagWarning</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCDiagError</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCObjPrefix</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCAllowList</name>
+                    <version>1</version>
+                    <state>10010100</state>
+                </option>
+                <option>
+                    <name>CCDebugInfo</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IEndianMode</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IProcessor</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IExtraOptionsCheck</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IExtraOptions</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCLangConformance</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCSignedPlainChar</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCRequirePrototypes</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCDiagWarnAreErr</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCCompilerRuntimeInfo</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IFpuProcessor</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OutputFile</name>
+                    <state>$FILE_BNAME$.o</state>
+                </option>
+                <option>
+                    <name>CCLibConfigHeader</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>PreInclude</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CompilerMisraOverride</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCIncludePath2</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CCStdIncCheck</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCCodeSection</name>
+                    <state>.text</state>
+                </option>
+                <option>
+                    <name>IProcessorMode2</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCOptLevel</name>
+                    <state>2</state>
+                </option>
+                <option>
+                    <name>CCOptStrategy</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCOptLevelSlave</name>
+                    <state>2</state>
+                </option>
+                <option>
+                    <name>CompilerMisraRules98</name>
+                    <version>0</version>
+                    <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+                </option>
+                <option>
+                    <name>CompilerMisraRules04</name>
+                    <version>0</version>
+                    <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+                </option>
+                <option>
+                    <name>CCPosIndRopi</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCPosIndRwpi</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCPosIndNoDynInit</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IccLang</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IccCDialect</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IccAllowVLA</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IccStaticDestr</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IccCppInlineSemantics</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IccCmsis</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IccFloatSemantics</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCNoLiteralPool</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCOptStrategySlave</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCGuardCalls</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCEncSource</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCEncOutput</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CCEncOutputBom</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CCEncInput</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IccExceptions2</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IccRTTI2</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OICompilerExtraOption</name>
+                    <state>1</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>AARM</name>
+            <archiveVersion>2</archiveVersion>
+            <data>
+                <version>10</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>AObjPrefix</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>AEndian</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>ACaseSensitivity</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>MacroChars</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AWarnEnable</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AWarnWhat</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AWarnOne</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>AWarnRange1</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>AWarnRange2</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>ADebug</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>AltRegisterNames</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>ADefines</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>AList</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AListHeader</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>AListing</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>Includes</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>MacDefs</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>MacExps</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>MacExec</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>OnlyAssed</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>MultiLine</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>PageLengthCheck</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>PageLength</name>
+                    <state>80</state>
+                </option>
+                <option>
+                    <name>TabSpacing</name>
+                    <state>8</state>
+                </option>
+                <option>
+                    <name>AXRef</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AXRefDefines</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AXRefInternal</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AXRefDual</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AProcessor</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>AFpuProcessor</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>AOutputFile</name>
+                    <state>$FILE_BNAME$.o</state>
+                </option>
+                <option>
+                    <name>ALimitErrorsCheck</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>ALimitErrorsEdit</name>
+                    <state>100</state>
+                </option>
+                <option>
+                    <name>AIgnoreStdInclude</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AUserIncludes</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>AExtraOptionsCheckV2</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>AExtraOptionsV2</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>AsmNoLiteralPool</name>
+                    <state>0</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>OBJCOPY</name>
+            <archiveVersion>0</archiveVersion>
+            <data>
+                <version>1</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>OOCOutputFormat</name>
+                    <version>3</version>
+                    <state>3</state>
+                </option>
+                <option>
+                    <name>OCOutputOverride</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OOCOutputFile</name>
+                    <state>rtthread.bin</state>
+                </option>
+                <option>
+                    <name>OOCCommandLineProducer</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>OOCObjCopyEnable</name>
+                    <state>1</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>CUSTOM</name>
+            <archiveVersion>3</archiveVersion>
+            <data>
+                <extensions></extensions>
+                <cmdline></cmdline>
+                <hasPrio>0</hasPrio>
+            </data>
+        </settings>
+        <settings>
+            <name>BICOMP</name>
+            <archiveVersion>0</archiveVersion>
+            <data />
+        </settings>
+        <settings>
+            <name>BUILDACTION</name>
+            <archiveVersion>1</archiveVersion>
+            <data>
+                <prebuild></prebuild>
+                <postbuild></postbuild>
+            </data>
+        </settings>
+        <settings>
+            <name>ILINK</name>
+            <archiveVersion>0</archiveVersion>
+            <data>
+                <version>22</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>IlinkLibIOConfig</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>XLinkMisraHandler</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkInputFileSlave</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkOutputFile</name>
+                    <state>Template.out</state>
+                </option>
+                <option>
+                    <name>IlinkDebugInfoEnable</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkKeepSymbols</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkRawBinaryFile</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkRawBinarySymbol</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkRawBinarySegment</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkRawBinaryAlign</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkDefines</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkConfigDefines</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkMapFile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogFile</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogInitialization</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogModule</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogSection</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogVeneer</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkIcfOverride</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkIcfFile</name>
+                    <state>$PROJ_DIR$\linking_scripts\m460_flash.icf</state>
+                </option>
+                <option>
+                    <name>IlinkIcfFileSlave</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkEnableRemarks</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkSuppressDiags</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkTreatAsRem</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkTreatAsWarn</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkTreatAsErr</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkWarningsAreErrors</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkUseExtraOptions</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkExtraOptions</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkLowLevelInterfaceSlave</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkAutoLibEnable</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkAdditionalLibs</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkOverrideProgramEntryLabel</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkProgramEntryLabelSelect</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkProgramEntryLabel</name>
+                    <state>Reset_Handler</state>
+                </option>
+                <option>
+                    <name>DoFill</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>FillerByte</name>
+                    <state>0xFF</state>
+                </option>
+                <option>
+                    <name>FillerStart</name>
+                    <state>0x0</state>
+                </option>
+                <option>
+                    <name>FillerEnd</name>
+                    <state>0x0</state>
+                </option>
+                <option>
+                    <name>CrcSize</name>
+                    <version>0</version>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CrcAlign</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CrcPoly</name>
+                    <state>0x11021</state>
+                </option>
+                <option>
+                    <name>CrcCompl</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CrcBitOrder</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>CrcInitialValue</name>
+                    <state>0x0</state>
+                </option>
+                <option>
+                    <name>DoCrc</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkBE8Slave</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkBufferedTerminalOutput</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkStdoutInterfaceSlave</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CrcFullSize</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkIElfToolPostProcess</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogAutoLibSelect</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogRedirSymbols</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkLogUnusedFragments</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkCrcReverseByteOrder</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkCrcUseAsInput</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkOptInline</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkOptExceptionsAllow</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkOptExceptionsForce</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkCmsis</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkOptMergeDuplSections</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkOptUseVfe</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkOptForceVfe</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkStackAnalysisEnable</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkStackControlFile</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkStackCallGraphFile</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>CrcAlgorithm</name>
+                    <version>1</version>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>CrcUnitSize</name>
+                    <version>0</version>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkThreadsSlave</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkLogCallGraph</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkIcfFile_AltDefault</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IlinkEncInput</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkEncOutput</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IlinkEncOutputBom</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkHeapSelect</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkLocaleSelect</name>
+                    <state>1</state>
+                </option>
+                <option>
+                    <name>IlinkTrustzoneImportLibraryOut</name>
+                    <state>###Unitialized###</state>
+                </option>
+                <option>
+                    <name>OILinkExtraOption</name>
+                    <state>1</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>IARCHIVE</name>
+            <archiveVersion>0</archiveVersion>
+            <data>
+                <version>0</version>
+                <wantNonLocal>1</wantNonLocal>
+                <debug>0</debug>
+                <option>
+                    <name>IarchiveInputs</name>
+                    <state></state>
+                </option>
+                <option>
+                    <name>IarchiveOverride</name>
+                    <state>0</state>
+                </option>
+                <option>
+                    <name>IarchiveOutput</name>
+                    <state>###Unitialized###</state>
+                </option>
+            </data>
+        </settings>
+        <settings>
+            <name>BILINK</name>
+            <archiveVersion>0</archiveVersion>
+            <data />
+        </settings>
+    </configuration>
+</project>

+ 10 - 0
bsp/nuvoton/numaker-iot-m467/template.eww

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<workspace>
+  <project>
+    <path>$WS_DIR$\Template.ewp</path>
+  </project>
+  <batchBuild/>
+</workspace>
+
+

+ 402 - 0
bsp/nuvoton/numaker-iot-m467/template.uvprojx

@@ -0,0 +1,402 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
+
+  <SchemaVersion>2.1</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Targets>
+    <Target>
+      <TargetName>rtthread-m460</TargetName>
+      <ToolsetNumber>0x4</ToolsetNumber>
+      <ToolsetName>ARM-ADS</ToolsetName>
+      <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+      <uAC6>0</uAC6>
+      <TargetOption>
+        <TargetCommonOption>
+          <Device>M467HJHAE</Device>
+          <Vendor>Nuvoton</Vendor>
+          <PackID>Nuvoton.NuMicro_DFP.1.3.13</PackID>
+          <PackURL>https://github.com/OpenNuvoton/cmsis-packs/raw/master/</PackURL>
+          <Cpu>IRAM(0x20000000,0x80000) IROM(0x00000000,0x100000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000)</Cpu>
+          <FlashUtilSpec></FlashUtilSpec>
+          <StartupFile></StartupFile>
+          <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0M460_AP_1M -FS00 -FL0100000 -FP0($$Device:M467HJHAE$Flash\M460_AP_1M.FLM))</FlashDriverDll>
+          <DeviceId>0</DeviceId>
+          <RegisterFile>$$Device:M467HJHAE$Device\M460\Include\m460.h</RegisterFile>
+          <MemoryEnv></MemoryEnv>
+          <Cmp></Cmp>
+          <Asm></Asm>
+          <Linker></Linker>
+          <OHString></OHString>
+          <InfinionOptionDll></InfinionOptionDll>
+          <SLE66CMisc></SLE66CMisc>
+          <SLE66AMisc></SLE66AMisc>
+          <SLE66LinkerMisc></SLE66LinkerMisc>
+          <SFDFile>$$Device:M467HJHAE$SVD\Nuvoton\M460.svd</SFDFile>
+          <bCustSvd>0</bCustSvd>
+          <UseEnv>0</UseEnv>
+          <BinPath></BinPath>
+          <IncludePath></IncludePath>
+          <LibPath></LibPath>
+          <RegisterFilePath></RegisterFilePath>
+          <DBRegisterFilePath></DBRegisterFilePath>
+          <TargetStatus>
+            <Error>0</Error>
+            <ExitCodeStop>0</ExitCodeStop>
+            <ButtonStop>0</ButtonStop>
+            <NotGenerated>0</NotGenerated>
+            <InvalidFlash>1</InvalidFlash>
+          </TargetStatus>
+          <OutputDirectory>.\build\keil5\</OutputDirectory>
+          <OutputName>rtthread</OutputName>
+          <CreateExecutable>1</CreateExecutable>
+          <CreateLib>0</CreateLib>
+          <CreateHexFile>1</CreateHexFile>
+          <DebugInformation>1</DebugInformation>
+          <BrowseInformation>1</BrowseInformation>
+          <ListingPath>.\build\keil5\</ListingPath>
+          <HexFormatSelection>1</HexFormatSelection>
+          <Merge32K>0</Merge32K>
+          <CreateBatchFile>0</CreateBatchFile>
+          <BeforeCompile>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopU1X>0</nStopU1X>
+            <nStopU2X>0</nStopU2X>
+          </BeforeCompile>
+          <BeforeMake>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopB1X>0</nStopB1X>
+            <nStopB2X>0</nStopB2X>
+          </BeforeMake>
+          <AfterMake>
+            <RunUserProg1>1</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name>fromelf.exe --bin --output "$L@L.bin" "$L@L.axf"</UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopA1X>0</nStopA1X>
+            <nStopA2X>0</nStopA2X>
+          </AfterMake>
+          <SelectedForBatchBuild>0</SelectedForBatchBuild>
+          <SVCSIdString></SVCSIdString>
+        </TargetCommonOption>
+        <CommonProperty>
+          <UseCPPCompiler>0</UseCPPCompiler>
+          <RVCTCodeConst>0</RVCTCodeConst>
+          <RVCTZI>0</RVCTZI>
+          <RVCTOtherData>0</RVCTOtherData>
+          <ModuleSelection>0</ModuleSelection>
+          <IncludeInBuild>1</IncludeInBuild>
+          <AlwaysBuild>0</AlwaysBuild>
+          <GenerateAssemblyFile>0</GenerateAssemblyFile>
+          <AssembleAssemblyFile>0</AssembleAssemblyFile>
+          <PublicsOnly>0</PublicsOnly>
+          <StopOnExitCode>3</StopOnExitCode>
+          <CustomArgument></CustomArgument>
+          <IncludeLibraryModules></IncludeLibraryModules>
+          <ComprImg>1</ComprImg>
+        </CommonProperty>
+        <DllOption>
+          <SimDllName>SARMCM3.DLL</SimDllName>
+          <SimDllArguments> </SimDllArguments>
+          <SimDlgDll>DCM.DLL</SimDlgDll>
+          <SimDlgDllArguments>-pCM4</SimDlgDllArguments>
+          <TargetDllName>SARMCM3.DLL</TargetDllName>
+          <TargetDllArguments></TargetDllArguments>
+          <TargetDlgDll>TCM.DLL</TargetDlgDll>
+          <TargetDlgDllArguments>-pCM4</TargetDlgDllArguments>
+        </DllOption>
+        <DebugOption>
+          <OPTHX>
+            <HexSelection>1</HexSelection>
+            <HexRangeLowAddress>0</HexRangeLowAddress>
+            <HexRangeHighAddress>0</HexRangeHighAddress>
+            <HexOffset>0</HexOffset>
+            <Oh166RecLen>16</Oh166RecLen>
+          </OPTHX>
+        </DebugOption>
+        <Utilities>
+          <Flash1>
+            <UseTargetDll>1</UseTargetDll>
+            <UseExternalTool>0</UseExternalTool>
+            <RunIndependent>0</RunIndependent>
+            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+            <Capability>1</Capability>
+            <DriverSelection>4103</DriverSelection>
+          </Flash1>
+          <bUseTDR>1</bUseTDR>
+          <Flash2>BIN\UL2CM3.DLL</Flash2>
+          <Flash3></Flash3>
+          <Flash4></Flash4>
+          <pFcarmOut></pFcarmOut>
+          <pFcarmGrp></pFcarmGrp>
+          <pFcArmRoot></pFcArmRoot>
+          <FcArmLst>0</FcArmLst>
+        </Utilities>
+        <TargetArmAds>
+          <ArmAdsMisc>
+            <GenerateListings>0</GenerateListings>
+            <asHll>1</asHll>
+            <asAsm>1</asAsm>
+            <asMacX>1</asMacX>
+            <asSyms>1</asSyms>
+            <asFals>1</asFals>
+            <asDbgD>1</asDbgD>
+            <asForm>1</asForm>
+            <ldLst>0</ldLst>
+            <ldmm>1</ldmm>
+            <ldXref>1</ldXref>
+            <BigEnd>0</BigEnd>
+            <AdsALst>1</AdsALst>
+            <AdsACrf>1</AdsACrf>
+            <AdsANop>0</AdsANop>
+            <AdsANot>0</AdsANot>
+            <AdsLLst>1</AdsLLst>
+            <AdsLmap>1</AdsLmap>
+            <AdsLcgr>1</AdsLcgr>
+            <AdsLsym>1</AdsLsym>
+            <AdsLszi>1</AdsLszi>
+            <AdsLtoi>1</AdsLtoi>
+            <AdsLsun>1</AdsLsun>
+            <AdsLven>1</AdsLven>
+            <AdsLsxf>1</AdsLsxf>
+            <RvctClst>0</RvctClst>
+            <GenPPlst>0</GenPPlst>
+            <AdsCpuType>"Cortex-M4"</AdsCpuType>
+            <RvctDeviceName></RvctDeviceName>
+            <mOS>0</mOS>
+            <uocRom>0</uocRom>
+            <uocRam>0</uocRam>
+            <hadIROM>1</hadIROM>
+            <hadIRAM>1</hadIRAM>
+            <hadXRAM>0</hadXRAM>
+            <uocXRam>0</uocXRam>
+            <RvdsVP>2</RvdsVP>
+            <RvdsMve>0</RvdsMve>
+            <hadIRAM2>0</hadIRAM2>
+            <hadIROM2>0</hadIROM2>
+            <StupSel>8</StupSel>
+            <useUlib>0</useUlib>
+            <EndSel>0</EndSel>
+            <uLtcg>0</uLtcg>
+            <nSecure>0</nSecure>
+            <RoSelD>3</RoSelD>
+            <RwSelD>3</RwSelD>
+            <CodeSel>0</CodeSel>
+            <OptFeed>0</OptFeed>
+            <NoZi1>0</NoZi1>
+            <NoZi2>0</NoZi2>
+            <NoZi3>0</NoZi3>
+            <NoZi4>0</NoZi4>
+            <NoZi5>0</NoZi5>
+            <Ro1Chk>0</Ro1Chk>
+            <Ro2Chk>0</Ro2Chk>
+            <Ro3Chk>0</Ro3Chk>
+            <Ir1Chk>1</Ir1Chk>
+            <Ir2Chk>0</Ir2Chk>
+            <Ra1Chk>0</Ra1Chk>
+            <Ra2Chk>0</Ra2Chk>
+            <Ra3Chk>0</Ra3Chk>
+            <Im1Chk>1</Im1Chk>
+            <Im2Chk>0</Im2Chk>
+            <OnChipMemories>
+              <Ocm1>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm1>
+              <Ocm2>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm2>
+              <Ocm3>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm3>
+              <Ocm4>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm4>
+              <Ocm5>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm5>
+              <Ocm6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm6>
+              <IRAM>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x80000</Size>
+              </IRAM>
+              <IROM>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x100000</Size>
+              </IROM>
+              <XRAM>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </XRAM>
+              <OCR_RVCT1>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT1>
+              <OCR_RVCT2>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT2>
+              <OCR_RVCT3>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT3>
+              <OCR_RVCT4>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x100000</Size>
+              </OCR_RVCT4>
+              <OCR_RVCT5>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT5>
+              <OCR_RVCT6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT6>
+              <OCR_RVCT7>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT7>
+              <OCR_RVCT8>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT8>
+              <OCR_RVCT9>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x80000</Size>
+              </OCR_RVCT9>
+              <OCR_RVCT10>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT10>
+            </OnChipMemories>
+            <RvctStartVector></RvctStartVector>
+          </ArmAdsMisc>
+          <Cads>
+            <interw>1</interw>
+            <Optim>3</Optim>
+            <oTime>0</oTime>
+            <SplitLS>0</SplitLS>
+            <OneElfS>0</OneElfS>
+            <Strict>0</Strict>
+            <EnumInt>0</EnumInt>
+            <PlainCh>0</PlainCh>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <wLevel>0</wLevel>
+            <uThumb>0</uThumb>
+            <uSurpInc>0</uSurpInc>
+            <uC99>0</uC99>
+            <uGnu>0</uGnu>
+            <useXO>0</useXO>
+            <v6Lang>1</v6Lang>
+            <v6LangP>1</v6LangP>
+            <vShortEn>1</vShortEn>
+            <vShortWch>1</vShortWch>
+            <v6Lto>0</v6Lto>
+            <v6WtE>0</v6WtE>
+            <v6Rtti>0</v6Rtti>
+            <VariousControls>
+              <MiscControls>--c99 --diag_suppress=66,1296,186</MiscControls>
+              <Define></Define>
+              <Undefine></Undefine>
+              <IncludePath></IncludePath>
+            </VariousControls>
+          </Cads>
+          <Aads>
+            <interw>1</interw>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <thumb>0</thumb>
+            <SplitLS>0</SplitLS>
+            <SwStkChk>0</SwStkChk>
+            <NoWarn>0</NoWarn>
+            <uSurpInc>0</uSurpInc>
+            <useXO>0</useXO>
+            <uClangAs>0</uClangAs>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define></Define>
+              <Undefine></Undefine>
+              <IncludePath></IncludePath>
+            </VariousControls>
+          </Aads>
+          <LDads>
+            <umfTarg>0</umfTarg>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <noStLib>0</noStLib>
+            <RepFail>1</RepFail>
+            <useFile>0</useFile>
+            <TextAddressRange>0x00000000</TextAddressRange>
+            <DataAddressRange>0x20000000</DataAddressRange>
+            <pXoBase></pXoBase>
+            <ScatterFile>.\linking_scripts\m460_flash.sct</ScatterFile>
+            <IncludeLibs></IncludeLibs>
+            <IncludeLibsPath></IncludeLibsPath>
+            <Misc></Misc>
+            <LinkerInputFile></LinkerInputFile>
+            <DisabledWarnings></DisabledWarnings>
+          </LDads>
+        </TargetArmAds>
+      </TargetOption>
+      <Groups>
+        <Group>
+          <GroupName>::CMSIS</GroupName>
+        </Group>
+      </Groups>
+    </Target>
+  </Targets>
+
+  <RTE>
+    <apis/>
+    <components>
+      <component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="5.4.0" condition="ARMv6_7_8-M Device">
+        <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.7.0"/>
+        <targetInfos>
+          <targetInfo name="rtthread-m460"/>
+        </targetInfos>
+      </component>
+    </components>
+    <files/>
+  </RTE>
+
+</Project>

+ 38 - 12
bsp/nuvoton/numaker-iot-m487/.config

@@ -29,7 +29,7 @@ CONFIG_IDLE_THREAD_STACK_SIZE=1024
 # CONFIG_RT_KSERVICE_USING_STDLIB is not set
 # CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set
 # CONFIG_RT_USING_TINY_FFS is not set
-# CONFIG_RT_PRINTF_LONGLONG is not set
+# CONFIG_RT_KPRINTF_USING_LONGLONG is not set
 CONFIG_RT_DEBUG=y
 CONFIG_RT_DEBUG_COLOR=y
 # CONFIG_RT_DEBUG_INIT_CONFIG is not set
@@ -78,7 +78,7 @@ CONFIG_RT_USING_DEVICE=y
 CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=256
 CONFIG_RT_CONSOLE_DEVICE_NAME="uart0"
-CONFIG_RT_VER_NUM=0x40100
+CONFIG_RT_VER_NUM=0x50000
 CONFIG_ARCH_ARM=y
 CONFIG_RT_USING_CPU_FFS=y
 CONFIG_ARCH_ARM_CORTEX_M=y
@@ -162,6 +162,7 @@ CONFIG_RT_SERIAL_USING_DMA=y
 CONFIG_RT_SERIAL_RB_BUFSZ=2048
 CONFIG_RT_USING_CAN=y
 # CONFIG_RT_CAN_USING_HDR is not set
+# CONFIG_RT_CAN_USING_CANFD is not set
 CONFIG_RT_USING_HWTIMER=y
 # CONFIG_RT_USING_CPUTIME is not set
 CONFIG_RT_USING_I2C=y
@@ -315,9 +316,11 @@ CONFIG_RT_USING_SAL=y
 CONFIG_SAL_INTERNET_CHECK=y
 
 #
-# protocol stack implement
+# Docking with protocol stacks
 #
+# CONFIG_SAL_USING_LWIP is not set
 CONFIG_SAL_USING_AT=y
+# CONFIG_SAL_USING_TLS is not set
 CONFIG_SAL_USING_POSIX=y
 CONFIG_RT_USING_NETDEV=y
 CONFIG_NETDEV_USING_IFCONFIG=y
@@ -335,6 +338,7 @@ CONFIG_RT_USING_AT=y
 CONFIG_AT_USING_CLIENT=y
 CONFIG_AT_CLIENT_NUM_MAX=1
 CONFIG_AT_USING_SOCKET=y
+# CONFIG_AT_USING_SOCKET_SERVER is not set
 CONFIG_AT_USING_CLI=y
 # CONFIG_AT_PRINT_RAW_CMD is not set
 CONFIG_AT_CMD_MAX_LEN=512
@@ -406,8 +410,12 @@ CONFIG_PKG_AT_DEVICE_PATH="/packages/iot/at_device"
 CONFIG_AT_DEVICE_USING_ESP8266=y
 CONFIG_AT_DEVICE_ESP8266_INIT_ASYN=y
 CONFIG_AT_DEVICE_ESP8266_SOCKET=y
-# CONFIG_AT_DEVICE_ESP8266_SAMPLE is not set
+CONFIG_AT_DEVICE_ESP8266_SAMPLE=y
 # CONFIG_AT_DEVICE_ESP8266_SAMPLE_BSP_TAKEOVER is not set
+CONFIG_ESP8266_SAMPLE_WIFI_SSID="NT_ZY_BUFFALO"
+CONFIG_ESP8266_SAMPLE_WIFI_PASSWORD="12345678"
+CONFIG_ESP8266_SAMPLE_CLIENT_NAME="uart1"
+CONFIG_ESP8266_SAMPLE_RECV_BUFF_LEN=2048
 # CONFIG_AT_DEVICE_USING_RW007 is not set
 # CONFIG_AT_DEVICE_USING_SIM800C is not set
 # CONFIG_AT_DEVICE_USING_SIM76XX is not set
@@ -449,6 +457,7 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
 # CONFIG_PKG_USING_JOYLINK is not set
 # CONFIG_PKG_USING_EZ_IOT_OS is not set
+# CONFIG_PKG_USING_IOTSHARP_SDK is not set
 # CONFIG_PKG_USING_NIMBLE is not set
 # CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
 # CONFIG_PKG_USING_OTA_DOWNLOADER is not set
@@ -482,12 +491,14 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # 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
 
 #
 # 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
@@ -505,6 +516,7 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # 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
 
 #
 # XML: Extensible Markup Language
@@ -516,6 +528,7 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # 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
 
 #
 # multimedia packages
@@ -527,6 +540,7 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # CONFIG_PKG_USING_LVGL is not set
 # CONFIG_PKG_USING_LITTLEVGL2RTT is not set
 # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
+# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
 
 #
 # u8g2: a monochrome graphic library
@@ -603,6 +617,8 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # 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_FIRE_PID_CURVE is not set
+# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
 
 #
 # system packages
@@ -615,14 +631,6 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
 # CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set
 
-#
-# POSIX extension functions
-#
-# CONFIG_PKG_USING_POSIX_GETLINE is not set
-# CONFIG_PKG_USING_POSIX_WCWIDTH is not set
-# CONFIG_PKG_USING_POSIX_ITOA is not set
-# CONFIG_PKG_USING_POSIX_STRINGS is not set
-
 #
 # acceleration: Assembly language or algorithmic acceleration packages
 #
@@ -634,6 +642,7 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
 #
 # CONFIG_PKG_USING_CMSIS_5 is not set
+# CONFIG_PKG_USING_CMSIS_RTOS1 is not set
 # CONFIG_PKG_USING_CMSIS_RTOS2 is not set
 
 #
@@ -646,9 +655,11 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
 # CONFIG_PKG_USING_RTDUINO is not set
+# CONFIG_PKG_USING_FREERTOS_WRAPPER 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_FLASHDB is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
@@ -677,6 +688,7 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # CONFIG_PKG_USING_CHERRYUSB 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
 
 #
 # peripheral libraries and drivers
@@ -685,8 +697,10 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # CONFIG_PKG_USING_REALTEK_AMEBA is not set
 # CONFIG_PKG_USING_SHT2X is not set
 # CONFIG_PKG_USING_SHT3X is not set
+# CONFIG_PKG_USING_ADT74XX is not set
 # CONFIG_PKG_USING_AS7341 is not set
 # CONFIG_PKG_USING_STM32_SDIO is not set
+# CONFIG_PKG_USING_ESP_IDF is not set
 # CONFIG_PKG_USING_ICM20608 is not set
 # CONFIG_PKG_USING_BUTTON is not set
 # CONFIG_PKG_USING_PCF8574 is not set
@@ -698,6 +712,11 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # CONFIG_PKG_USING_NRF5X_SDK is not set
 # CONFIG_PKG_USING_NRFX is not set
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
+
+#
+# Kendryte SDK
+#
+# CONFIG_PKG_USING_K210_SDK is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK is not set
 # CONFIG_PKG_USING_INFRARED is not set
 # CONFIG_PKG_USING_MULTI_INFRARED is not set
@@ -758,6 +777,8 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # CONFIG_PKG_USING_MB85RS16 is not set
 # CONFIG_PKG_USING_CW2015 is not set
 # CONFIG_PKG_USING_RFM300 is not set
+# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
+# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
 
 #
 # AI packages
@@ -831,6 +852,8 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # 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
 
 #
 # Hardware Drivers Config
@@ -961,13 +984,16 @@ CONFIG_BOARD_USING_HSUSBH_USBD=y
 #
 CONFIG_NU_PKG_USING_UTILS=y
 CONFIG_NU_PKG_USING_DEMO=y
+# CONFIG_NU_PKG_USING_LVGL is not set
 CONFIG_NU_PKG_USING_BMX055=y
 # CONFIG_NU_PKG_USING_MAX31875 is not set
+# CONFIG_NU_PKG_USING_NCT7717U is not set
 CONFIG_NU_PKG_USING_NAU88L25=y
 # CONFIG_NU_PKG_USING_NAU8822 is not set
 # CONFIG_NU_PKG_USING_DA9062 is not set
 # CONFIG_NU_PKG_USING_ILI9341 is not set
 # CONFIG_NU_PKG_USING_SSD1963 is not set
+# CONFIG_NU_PKG_USING_FSA506 is not set
 # CONFIG_NU_PKG_USING_TPC is not set
 # CONFIG_NU_PKG_USING_ADC_TOUCH is not set
 # CONFIG_NU_PKG_USING_SPINAND is not set

+ 1 - 1
bsp/nuvoton/numaker-iot-m487/applications/lvgl/lv_port_disp.c

@@ -70,7 +70,7 @@ void lv_port_disp_init(void)
     rt_kprintf("LVGL: Use one buffers - buf1@%08x, size: %d bytes\n", buf1, info.smem_len);
 
     /*Initialize `disp_buf` with the buffer(s).*/
-    lv_disp_draw_buf_init(&disp_buf, buf1, RT_NULL, info.smem_len/(info.bits_per_pixel/8));
+    lv_disp_draw_buf_init(&disp_buf, buf1, RT_NULL, info.smem_len / (info.bits_per_pixel / 8));
 
     result = rt_device_open(lcd_device, 0);
     if (result != RT_EOK)

+ 2 - 48
bsp/nuvoton/numaker-iot-m487/board/board_dev.c

@@ -184,64 +184,18 @@ INIT_APP_EXPORT(rt_hw_bmx055_port);
 #endif /* BOARD_USING_BMX055  */
 
 #if defined(BOARD_USING_ESP8266)
-#include <at_device_esp8266.h>
-
-#define LOG_TAG    "at.sample.esp"
-#undef DBG_TAG
-#include <at_log.h>
-
-static struct at_device_esp8266 esp0 =
-{
-    "esp0",          /* esp8266 device name */
-    "uart1",         /* esp8266 serial device name, EX: uart1, uuart1 */
-
-    "NT_ZY_BUFFALO", /* Wi-Fi SSID */
-    "12345678",      /* Wi-Fi PASSWORD */
-    1024             /* Receive buffer length */
-};
 
 static int rt_hw_esp8266_port(void)
 {
-    struct at_device_esp8266 *esp8266 = &esp0;
     rt_base_t esp_rst_pin = NU_GET_PININDEX(NU_PH, 3);
+
     /* ESP8266 reset pin PH.3 */
     rt_pin_mode(esp_rst_pin, PIN_MODE_OUTPUT);
     rt_pin_write(esp_rst_pin, 1);
 
-    return at_device_register(&(esp8266->device),
-                              esp8266->device_name,
-                              esp8266->client_name,
-                              AT_DEVICE_CLASS_ESP8266,
-                              (void *) esp8266);
+    return 0;
 }
 INIT_APP_EXPORT(rt_hw_esp8266_port);
-
-static void at_wifi_set(int argc, char **argv)
-{
-    struct at_device_ssid_pwd sATDConf;
-    struct at_device *at_dev = RT_NULL;
-
-    /* If the number of arguments less than 2 */
-    if (argc != 3)
-    {
-        rt_kprintf("\n");
-        rt_kprintf("at_wifi_set <ssid> <password>\n");
-        return ;
-    }
-
-    sATDConf.ssid     = argv[1]; //ssid
-    sATDConf.password = argv[2]; //password
-
-    if ((at_dev = at_device_get_first_initialized()) != RT_NULL)
-        at_device_control(at_dev, AT_DEVICE_CTRL_SET_WIFI_INFO, &sATDConf);
-    else
-    {
-        rt_kprintf("Can't find any initialized AT device.\n");
-    }
-}
-#ifdef FINSH_USING_MSH
-    MSH_CMD_EXPORT(at_wifi_set, AT device wifi set ssid / password function);
-#endif
 #endif /* BOARD_USING_ESP8266  */
 
 #if defined(BOARD_USING_LCD_ILI9341) && defined(NU_PKG_USING_ILI9341_SPI)

+ 10 - 96
bsp/nuvoton/numaker-m032ki/.config

@@ -31,7 +31,7 @@ CONFIG_RT_TIMER_THREAD_STACK_SIZE=512
 # CONFIG_RT_KSERVICE_USING_STDLIB is not set
 # CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set
 # CONFIG_RT_USING_TINY_FFS is not set
-# CONFIG_RT_KPRINTF_USING_LONGLONG is not set
+# CONFIG_RT_PRINTF_LONGLONG is not set
 CONFIG_RT_DEBUG=y
 # CONFIG_RT_DEBUG_COLOR is not set
 # CONFIG_RT_DEBUG_INIT_CONFIG is not set
@@ -80,7 +80,7 @@ CONFIG_RT_USING_DEVICE=y
 CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=256
 CONFIG_RT_CONSOLE_DEVICE_NAME="uart0"
-CONFIG_RT_VER_NUM=0x40101
+CONFIG_RT_VER_NUM=0x40100
 CONFIG_ARCH_ARM=y
 # CONFIG_RT_USING_CPU_FFS is not set
 CONFIG_ARCH_ARM_CORTEX_M=y
@@ -257,21 +257,11 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # CONFIG_UTEST_MAILBOX_TC is not set
 # CONFIG_UTEST_THREAD_TC is not set
 
-#
-# CPP11 Testcase
-#
-# CONFIG_UTEST_CPP11_THREAD_TC is not set
-
 #
 # Utest Serial Testcase
 #
 # CONFIG_UTEST_SERIAL_TC is not set
 
-#
-# RTT Posix Testcase
-#
-# CONFIG_RTT_POSIX_TESTCASE is not set
-
 #
 # RT-Thread online packages
 #
@@ -330,7 +320,6 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
 # CONFIG_PKG_USING_JOYLINK is not set
 # CONFIG_PKG_USING_EZ_IOT_OS is not set
-# CONFIG_PKG_USING_IOTSHARP_SDK is not set
 # CONFIG_PKG_USING_NIMBLE is not set
 # CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
 # CONFIG_PKG_USING_OTA_DOWNLOADER is not set
@@ -364,14 +353,12 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # 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
 
 #
 # 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
@@ -389,7 +376,6 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # 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
 
 #
 # XML: Extensible Markup Language
@@ -401,7 +387,6 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # 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
 
 #
 # multimedia packages
@@ -413,7 +398,6 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # CONFIG_PKG_USING_LVGL is not set
 # CONFIG_PKG_USING_LITTLEVGL2RTT is not set
 # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
-# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
 
 #
 # u8g2: a monochrome graphic library
@@ -488,9 +472,6 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # 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_FIRE_PID_CURVE is not set
-# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
 
 #
 # system packages
@@ -503,6 +484,14 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
 # CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set
 
+#
+# POSIX extension functions
+#
+# CONFIG_PKG_USING_POSIX_GETLINE is not set
+# CONFIG_PKG_USING_POSIX_WCWIDTH is not set
+# CONFIG_PKG_USING_POSIX_ITOA is not set
+# CONFIG_PKG_USING_POSIX_STRINGS is not set
+
 #
 # acceleration: Assembly language or algorithmic acceleration packages
 #
@@ -514,7 +503,6 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
 #
 # CONFIG_PKG_USING_CMSIS_5 is not set
-# CONFIG_PKG_USING_CMSIS_RTOS1 is not set
 # CONFIG_PKG_USING_CMSIS_RTOS2 is not set
 
 #
@@ -527,11 +515,9 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
 # CONFIG_PKG_USING_RTDUINO is not set
-# CONFIG_PKG_USING_FREERTOS_WRAPPER 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_FLASHDB is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
@@ -560,7 +546,6 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # CONFIG_PKG_USING_CHERRYUSB 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
 
 #
 # peripheral libraries and drivers
@@ -569,10 +554,8 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # CONFIG_PKG_USING_REALTEK_AMEBA is not set
 # CONFIG_PKG_USING_SHT2X is not set
 # CONFIG_PKG_USING_SHT3X is not set
-# CONFIG_PKG_USING_ADT74XX is not set
 # CONFIG_PKG_USING_AS7341 is not set
 # CONFIG_PKG_USING_STM32_SDIO is not set
-# CONFIG_PKG_USING_ESP_IDF is not set
 # CONFIG_PKG_USING_ICM20608 is not set
 # CONFIG_PKG_USING_BUTTON is not set
 # CONFIG_PKG_USING_PCF8574 is not set
@@ -584,11 +567,6 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # CONFIG_PKG_USING_NRF5X_SDK is not set
 # CONFIG_PKG_USING_NRFX is not set
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
-
-#
-# Kendryte SDK
-#
-# CONFIG_PKG_USING_K210_SDK is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK is not set
 # CONFIG_PKG_USING_INFRARED is not set
 # CONFIG_PKG_USING_MULTI_INFRARED is not set
@@ -649,8 +627,6 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # CONFIG_PKG_USING_MB85RS16 is not set
 # CONFIG_PKG_USING_CW2015 is not set
 # CONFIG_PKG_USING_RFM300 is not set
-# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
-# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
 
 #
 # AI packages
@@ -724,66 +700,6 @@ CONFIG_UTEST_SMALL_MEM_TC=y
 # 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
-
-#
-# Privated Packages of RealThread
-#
-# CONFIG_PKG_USING_CODEC is not set
-# CONFIG_PKG_USING_PLAYER is not set
-# CONFIG_PKG_USING_MPLAYER is not set
-# CONFIG_PKG_USING_PERSIMMON_SRC is not set
-# CONFIG_PKG_USING_JS_PERSIMMON is not set
-# CONFIG_PKG_USING_JERRYSCRIPT_WIN32 is not set
-
-#
-# Network Utilities
-#
-# CONFIG_PKG_USING_WICED is not set
-# CONFIG_PKG_USING_CLOUDSDK is not set
-# CONFIG_PKG_USING_POWER_MANAGER is not set
-# CONFIG_PKG_USING_RT_OTA is not set
-# CONFIG_PKG_USING_RTINSIGHT is not set
-# CONFIG_PKG_USING_SMARTCONFIG is not set
-# CONFIG_PKG_USING_RTX is not set
-# CONFIG_RT_USING_TESTCASE is not set
-# CONFIG_PKG_USING_NGHTTP2 is not set
-# CONFIG_PKG_USING_AVS is not set
-# CONFIG_PKG_USING_ALI_LINKKIT is not set
-# CONFIG_PKG_USING_STS is not set
-# CONFIG_PKG_USING_DLMS is not set
-# CONFIG_PKG_USING_AUDIO_FRAMEWORK is not set
-# CONFIG_PKG_USING_ZBAR is not set
-# CONFIG_PKG_USING_MCF is not set
-# CONFIG_PKG_USING_URPC is not set
-# CONFIG_PKG_USING_DCM is not set
-# CONFIG_PKG_USING_EMQ is not set
-# CONFIG_PKG_USING_CFGM is not set
-# CONFIG_PKG_USING_RT_CMSIS_DAP is not set
-# CONFIG_PKG_USING_SMODULE is not set
-# CONFIG_PKG_USING_SNFD is not set
-# CONFIG_PKG_USING_UDBD is not set
-# CONFIG_PKG_USING_BENCHMARK is not set
-# CONFIG_PKG_USING_UBJSON is not set
-# CONFIG_PKG_USING_DATATYPE is not set
-# CONFIG_PKG_USING_FASTFS is not set
-# CONFIG_PKG_USING_RIL is not set
-# CONFIG_PKG_USING_WATCH_DCM_SVC is not set
-# CONFIG_PKG_USING_WATCH_APP_FWK is not set
-# CONFIG_PKG_USING_GUI_TEST is not set
-# CONFIG_PKG_USING_PMEM is not set
-# CONFIG_PKG_USING_LWRDP is not set
-# CONFIG_PKG_USING_MASAN is not set
-# CONFIG_PKG_USING_BSDIFF_LIB is not set
-# CONFIG_PKG_USING_PRC_DIFF is not set
-
-#
-# RT-Thread Smart
-#
-# CONFIG_PKG_USING_UKERNEL is not set
-# CONFIG_PKG_USING_TRACE_AGENT is not set
 
 #
 # Hardware Drivers Config
@@ -870,7 +786,6 @@ CONFIG_BSP_USING_NULINKME=y
 #
 CONFIG_NU_PKG_USING_UTILS=y
 CONFIG_NU_PKG_USING_DEMO=y
-# CONFIG_NU_PKG_USING_LVGL is not set
 # CONFIG_NU_PKG_USING_BMX055 is not set
 # CONFIG_NU_PKG_USING_MAX31875 is not set
 # CONFIG_NU_PKG_USING_NAU88L25 is not set
@@ -878,7 +793,6 @@ CONFIG_NU_PKG_USING_DEMO=y
 # CONFIG_NU_PKG_USING_DA9062 is not set
 # CONFIG_NU_PKG_USING_ILI9341 is not set
 # CONFIG_NU_PKG_USING_SSD1963 is not set
-# CONFIG_NU_PKG_USING_FSA506 is not set
 # CONFIG_NU_PKG_USING_TPC is not set
 # CONFIG_NU_PKG_USING_ADC_TOUCH is not set
 # CONFIG_NU_PKG_USING_SPINAND is not set

+ 9 - 60
bsp/nuvoton/numaker-m2354/.config

@@ -78,7 +78,7 @@ CONFIG_RT_USING_DEVICE=y
 CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=256
 CONFIG_RT_CONSOLE_DEVICE_NAME="uart0"
-CONFIG_RT_VER_NUM=0x40101
+CONFIG_RT_VER_NUM=0x50000
 # CONFIG_RT_USING_CPU_FFS is not set
 # CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set
 
@@ -406,8 +406,12 @@ CONFIG_PKG_AT_DEVICE_PATH="/packages/iot/at_device"
 CONFIG_AT_DEVICE_USING_ESP8266=y
 CONFIG_AT_DEVICE_ESP8266_INIT_ASYN=y
 CONFIG_AT_DEVICE_ESP8266_SOCKET=y
-# CONFIG_AT_DEVICE_ESP8266_SAMPLE is not set
+CONFIG_AT_DEVICE_ESP8266_SAMPLE=y
 # CONFIG_AT_DEVICE_ESP8266_SAMPLE_BSP_TAKEOVER is not set
+CONFIG_ESP8266_SAMPLE_WIFI_SSID="NT_ZY_BUFFALO"
+CONFIG_ESP8266_SAMPLE_WIFI_PASSWORD="12345678"
+CONFIG_ESP8266_SAMPLE_CLIENT_NAME="uart4"
+CONFIG_ESP8266_SAMPLE_RECV_BUFF_LEN=2048
 # CONFIG_AT_DEVICE_USING_RW007 is not set
 # CONFIG_AT_DEVICE_USING_SIM800C is not set
 # CONFIG_AT_DEVICE_USING_SIM76XX is not set
@@ -845,64 +849,6 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # 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
-
-#
-# Privated Packages of RealThread
-#
-# CONFIG_PKG_USING_CODEC is not set
-# CONFIG_PKG_USING_PLAYER is not set
-# CONFIG_PKG_USING_MPLAYER is not set
-# CONFIG_PKG_USING_PERSIMMON_SRC is not set
-# CONFIG_PKG_USING_JS_PERSIMMON is not set
-# CONFIG_PKG_USING_JERRYSCRIPT_WIN32 is not set
-
-#
-# Network Utilities
-#
-# CONFIG_PKG_USING_WICED is not set
-# CONFIG_PKG_USING_CLOUDSDK is not set
-# CONFIG_PKG_USING_POWER_MANAGER is not set
-# CONFIG_PKG_USING_RT_OTA is not set
-# CONFIG_PKG_USING_RTINSIGHT is not set
-# CONFIG_PKG_USING_SMARTCONFIG is not set
-# CONFIG_PKG_USING_RTX is not set
-# CONFIG_RT_USING_TESTCASE is not set
-# CONFIG_PKG_USING_NGHTTP2 is not set
-# CONFIG_PKG_USING_AVS is not set
-# CONFIG_PKG_USING_ALI_LINKKIT is not set
-# CONFIG_PKG_USING_STS is not set
-# CONFIG_PKG_USING_DLMS is not set
-# CONFIG_PKG_USING_AUDIO_FRAMEWORK is not set
-# CONFIG_PKG_USING_ZBAR is not set
-# CONFIG_PKG_USING_MCF is not set
-# CONFIG_PKG_USING_URPC is not set
-# CONFIG_PKG_USING_DCM is not set
-# CONFIG_PKG_USING_EMQ is not set
-# CONFIG_PKG_USING_CFGM is not set
-# CONFIG_PKG_USING_RT_CMSIS_DAP is not set
-# CONFIG_PKG_USING_SMODULE is not set
-# CONFIG_PKG_USING_SNFD is not set
-# CONFIG_PKG_USING_UDBD is not set
-# CONFIG_PKG_USING_BENCHMARK is not set
-# CONFIG_PKG_USING_UBJSON is not set
-# CONFIG_PKG_USING_DATATYPE is not set
-# CONFIG_PKG_USING_FASTFS is not set
-# CONFIG_PKG_USING_RIL is not set
-# CONFIG_PKG_USING_WATCH_DCM_SVC is not set
-# CONFIG_PKG_USING_WATCH_APP_FWK is not set
-# CONFIG_PKG_USING_GUI_TEST is not set
-# CONFIG_PKG_USING_PMEM is not set
-# CONFIG_PKG_USING_LWRDP is not set
-# CONFIG_PKG_USING_MASAN is not set
-# CONFIG_PKG_USING_BSDIFF_LIB is not set
-# CONFIG_PKG_USING_PRC_DIFF is not set
-
-#
-# RT-Thread Smart
-#
-# CONFIG_PKG_USING_UKERNEL is not set
-# CONFIG_PKG_USING_TRACE_AGENT is not set
 
 #
 # Hardware Drivers Config
@@ -1016,6 +962,7 @@ CONFIG_NU_PKG_USING_DEMO=y
 # CONFIG_NU_PKG_USING_LVGL is not set
 # CONFIG_NU_PKG_USING_BMX055 is not set
 # CONFIG_NU_PKG_USING_MAX31875 is not set
+# CONFIG_NU_PKG_USING_NCT7717U is not set
 # CONFIG_NU_PKG_USING_NAU88L25 is not set
 # CONFIG_NU_PKG_USING_NAU8822 is not set
 # CONFIG_NU_PKG_USING_DA9062 is not set
@@ -1025,3 +972,5 @@ CONFIG_NU_PKG_USING_DEMO=y
 # CONFIG_NU_PKG_USING_TPC is not set
 # CONFIG_NU_PKG_USING_ADC_TOUCH is not set
 # CONFIG_NU_PKG_USING_SPINAND is not set
+CONFIG_UTEST_CMD_PREFIX="bsp.nuvoton.utest."
+CONFIG_BOARD_USE_UTEST=y

+ 1 - 49
bsp/nuvoton/numaker-m2354/board/board_dev.c

@@ -16,25 +16,8 @@
 
 
 #if defined(BOARD_USING_ESP8266)
-#include <at_device_esp8266.h>
-
-#define LOG_TAG     "at.sample.esp"
-#undef DBG_TAG
-#include <at_log.h>
-
-static struct at_device_esp8266 esp0 =
-{
-    "esp0",          /* esp8266 device name */
-    "uart4",         /* esp8266 serial device name, EX: uart1, uuart1 */
-
-    "NT_ZY_BUFFALO", /* Wi-Fi SSID */
-    "12345678",      /* Wi-Fi PASSWORD */
-    1024             /* Receive buffer length */
-};
-
 static int rt_hw_esp8266_port(void)
 {
-    struct at_device_esp8266 *esp8266 = &esp0;
     rt_base_t esp_rst_pin = NU_GET_PININDEX(NU_PC, 13);
     rt_base_t esp_fwupdate_pin = NU_GET_PININDEX(NU_PD, 12);
 
@@ -46,40 +29,9 @@ static int rt_hw_esp8266_port(void)
     rt_pin_mode(esp_fwupdate_pin, PIN_MODE_OUTPUT);
     rt_pin_write(esp_fwupdate_pin, 1);
 
-    return at_device_register(&(esp8266->device),
-                              esp8266->device_name,
-                              esp8266->client_name,
-                              AT_DEVICE_CLASS_ESP8266,
-                              (void *) esp8266);
+    return 0;
 }
 INIT_APP_EXPORT(rt_hw_esp8266_port);
-
-static void at_wifi_set(int argc, char **argv)
-{
-    struct at_device_ssid_pwd sATDConf;
-    struct at_device *at_dev = RT_NULL;
-
-    /* If the number of arguments less than 2 */
-    if (argc != 3)
-    {
-        rt_kprintf("\n");
-        rt_kprintf("at_wifi_set <ssid> <password>\n");
-        return ;
-    }
-
-    sATDConf.ssid     = argv[1]; //ssid
-    sATDConf.password = argv[2]; //password
-
-    if ((at_dev = at_device_get_first_initialized()) != RT_NULL)
-        at_device_control(at_dev, AT_DEVICE_CTRL_SET_WIFI_INFO, &sATDConf);
-    else
-    {
-        rt_kprintf("Can't find any initialized AT device.\n");
-    }
-}
-#ifdef FINSH_USING_MSH
-    MSH_CMD_EXPORT(at_wifi_set, AT device wifi set ssid / password function);
-#endif
 #endif /* BOARD_USING_ESP8266  */
 
 #if defined(BOARD_USING_LCD_ILI9341) && defined(NU_PKG_USING_ILI9341_SPI)

+ 13 - 91
bsp/nuvoton/numaker-pfm-m487/.config

@@ -29,7 +29,7 @@ CONFIG_IDLE_THREAD_STACK_SIZE=1024
 # CONFIG_RT_KSERVICE_USING_STDLIB is not set
 # CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set
 # CONFIG_RT_USING_TINY_FFS is not set
-# CONFIG_RT_KPRINTF_USING_LONGLONG is not set
+# CONFIG_RT_PRINTF_LONGLONG is not set
 CONFIG_RT_DEBUG=y
 CONFIG_RT_DEBUG_COLOR=y
 # CONFIG_RT_DEBUG_INIT_CONFIG is not set
@@ -78,7 +78,7 @@ CONFIG_RT_USING_DEVICE=y
 CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=256
 CONFIG_RT_CONSOLE_DEVICE_NAME="uart0"
-CONFIG_RT_VER_NUM=0x40101
+CONFIG_RT_VER_NUM=0x40100
 CONFIG_ARCH_ARM=y
 CONFIG_RT_USING_CPU_FFS=y
 CONFIG_ARCH_ARM_CORTEX_M=y
@@ -163,7 +163,6 @@ CONFIG_RT_SERIAL_USING_DMA=y
 CONFIG_RT_SERIAL_RB_BUFSZ=128
 CONFIG_RT_USING_CAN=y
 # CONFIG_RT_CAN_USING_HDR is not set
-# CONFIG_RT_CAN_USING_CANFD is not set
 CONFIG_RT_USING_HWTIMER=y
 # CONFIG_RT_USING_CPUTIME is not set
 CONFIG_RT_USING_I2C=y
@@ -318,11 +317,9 @@ CONFIG_RT_USING_SAL=y
 CONFIG_SAL_INTERNET_CHECK=y
 
 #
-# Docking with protocol stacks
+# protocol stack implement
 #
 CONFIG_SAL_USING_LWIP=y
-# CONFIG_SAL_USING_AT is not set
-# CONFIG_SAL_USING_TLS is not set
 CONFIG_SAL_USING_POSIX=y
 CONFIG_RT_USING_NETDEV=y
 CONFIG_NETDEV_USING_IFCONFIG=y
@@ -468,7 +465,6 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
 # CONFIG_PKG_USING_JOYLINK is not set
 # CONFIG_PKG_USING_EZ_IOT_OS is not set
-# CONFIG_PKG_USING_IOTSHARP_SDK is not set
 # CONFIG_PKG_USING_NIMBLE is not set
 # CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
 # CONFIG_PKG_USING_OTA_DOWNLOADER is not set
@@ -502,14 +498,12 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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
 
 #
 # 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
@@ -527,7 +521,6 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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
 
 #
 # XML: Extensible Markup Language
@@ -539,7 +532,6 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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
 
 #
 # multimedia packages
@@ -551,7 +543,6 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_LVGL is not set
 # CONFIG_PKG_USING_LITTLEVGL2RTT is not set
 # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
-# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
 
 #
 # u8g2: a monochrome graphic library
@@ -628,8 +619,6 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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_FIRE_PID_CURVE is not set
-# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
 
 #
 # system packages
@@ -642,6 +631,14 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
 # CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set
 
+#
+# POSIX extension functions
+#
+# CONFIG_PKG_USING_POSIX_GETLINE is not set
+# CONFIG_PKG_USING_POSIX_WCWIDTH is not set
+# CONFIG_PKG_USING_POSIX_ITOA is not set
+# CONFIG_PKG_USING_POSIX_STRINGS is not set
+
 #
 # acceleration: Assembly language or algorithmic acceleration packages
 #
@@ -653,7 +650,6 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CMSIS: ARM Cortex-M Microcontroller Software Interface Standard
 #
 # CONFIG_PKG_USING_CMSIS_5 is not set
-# CONFIG_PKG_USING_CMSIS_RTOS1 is not set
 # CONFIG_PKG_USING_CMSIS_RTOS2 is not set
 
 #
@@ -666,11 +662,9 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
 # CONFIG_PKG_USING_RTDUINO is not set
-# CONFIG_PKG_USING_FREERTOS_WRAPPER 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_FLASHDB is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
@@ -699,7 +693,6 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_CHERRYUSB 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
 
 #
 # peripheral libraries and drivers
@@ -708,10 +701,8 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_REALTEK_AMEBA is not set
 # CONFIG_PKG_USING_SHT2X is not set
 # CONFIG_PKG_USING_SHT3X is not set
-# CONFIG_PKG_USING_ADT74XX is not set
 # CONFIG_PKG_USING_AS7341 is not set
 # CONFIG_PKG_USING_STM32_SDIO is not set
-# CONFIG_PKG_USING_ESP_IDF is not set
 # CONFIG_PKG_USING_ICM20608 is not set
 # CONFIG_PKG_USING_BUTTON is not set
 # CONFIG_PKG_USING_PCF8574 is not set
@@ -723,11 +714,6 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_NRF5X_SDK is not set
 # CONFIG_PKG_USING_NRFX is not set
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
-
-#
-# Kendryte SDK
-#
-# CONFIG_PKG_USING_K210_SDK is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK is not set
 # CONFIG_PKG_USING_INFRARED is not set
 # CONFIG_PKG_USING_MULTI_INFRARED is not set
@@ -788,8 +774,6 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_MB85RS16 is not set
 # CONFIG_PKG_USING_CW2015 is not set
 # CONFIG_PKG_USING_RFM300 is not set
-# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
-# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
 
 #
 # AI packages
@@ -863,68 +847,6 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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
-
-#
-# Privated Packages of RealThread
-#
-# CONFIG_PKG_USING_CODEC is not set
-# CONFIG_PKG_USING_PLAYER is not set
-# CONFIG_PKG_USING_MPLAYER is not set
-# CONFIG_PKG_USING_PERSIMMON_SRC is not set
-# CONFIG_PKG_USING_JS_PERSIMMON is not set
-# CONFIG_PKG_USING_JERRYSCRIPT_WIN32 is not set
-
-#
-# Network Utilities
-#
-# CONFIG_PKG_USING_MDNS is not set
-# CONFIG_PKG_USING_UPNP is not set
-# CONFIG_PKG_USING_WICED is not set
-# CONFIG_PKG_USING_CLOUDSDK is not set
-# CONFIG_PKG_USING_POWER_MANAGER is not set
-# CONFIG_PKG_USING_RT_OTA is not set
-# CONFIG_PKG_USING_RTINSIGHT is not set
-# CONFIG_PKG_USING_SMARTCONFIG is not set
-# CONFIG_PKG_USING_RTX is not set
-# CONFIG_RT_USING_TESTCASE is not set
-# CONFIG_PKG_USING_NGHTTP2 is not set
-# CONFIG_PKG_USING_AVS is not set
-# CONFIG_PKG_USING_ALI_LINKKIT is not set
-# CONFIG_PKG_USING_STS is not set
-# CONFIG_PKG_USING_DLMS is not set
-# CONFIG_PKG_USING_AUDIO_FRAMEWORK is not set
-# CONFIG_PKG_USING_ZBAR is not set
-# CONFIG_PKG_USING_MCF is not set
-# CONFIG_PKG_USING_URPC is not set
-# CONFIG_PKG_USING_DCM is not set
-# CONFIG_PKG_USING_EMQ is not set
-# CONFIG_PKG_USING_CFGM is not set
-# CONFIG_PKG_USING_RT_CMSIS_DAP is not set
-# CONFIG_PKG_USING_SMODULE is not set
-# CONFIG_PKG_USING_SNFD is not set
-# CONFIG_PKG_USING_UDBD is not set
-# CONFIG_PKG_USING_BENCHMARK is not set
-# CONFIG_PKG_USING_UBJSON is not set
-# CONFIG_PKG_USING_DATATYPE is not set
-# CONFIG_PKG_USING_FASTFS is not set
-# CONFIG_PKG_USING_RIL is not set
-# CONFIG_PKG_USING_WATCH_DCM_SVC is not set
-# CONFIG_PKG_USING_WATCH_APP_FWK is not set
-# CONFIG_PKG_USING_GUI_TEST is not set
-# CONFIG_PKG_USING_PMEM is not set
-# CONFIG_PKG_USING_LWRDP is not set
-# CONFIG_PKG_USING_MASAN is not set
-# CONFIG_PKG_USING_BSDIFF_LIB is not set
-# CONFIG_PKG_USING_PRC_DIFF is not set
-
-#
-# RT-Thread Smart
-#
-# CONFIG_PKG_USING_UKERNEL is not set
-# CONFIG_PKG_USING_TRACE_AGENT is not set
 
 #
 # Hardware Drivers Config
@@ -1040,7 +962,6 @@ CONFIG_BOARD_USING_HSUSBH_USBD=y
 #
 CONFIG_NU_PKG_USING_UTILS=y
 CONFIG_NU_PKG_USING_DEMO=y
-# CONFIG_NU_PKG_USING_LVGL is not set
 # CONFIG_NU_PKG_USING_BMX055 is not set
 # CONFIG_NU_PKG_USING_MAX31875 is not set
 CONFIG_NU_PKG_USING_NAU88L25=y
@@ -1048,7 +969,8 @@ CONFIG_NU_PKG_USING_NAU88L25=y
 # CONFIG_NU_PKG_USING_DA9062 is not set
 # CONFIG_NU_PKG_USING_ILI9341 is not set
 # CONFIG_NU_PKG_USING_SSD1963 is not set
-# CONFIG_NU_PKG_USING_FSA506 is not set
 # CONFIG_NU_PKG_USING_TPC is not set
 # CONFIG_NU_PKG_USING_ADC_TOUCH is not set
 # CONFIG_NU_PKG_USING_SPINAND is not set
+CONFIG_UTEST_CMD_PREFIX="bsp.nuvoton.utest."
+CONFIG_BOARD_USE_UTEST=y

+ 1 - 1
bsp/nuvoton/numaker-pfm-m487/applications/lvgl/lv_port_disp.c

@@ -70,7 +70,7 @@ void lv_port_disp_init(void)
     rt_kprintf("LVGL: Use one buffers - buf1@%08x, size: %d bytes\n", buf1, info.smem_len);
 
     /*Initialize `disp_buf` with the buffer(s).*/
-    lv_disp_draw_buf_init(&disp_buf, buf1, RT_NULL, info.smem_len/(info.bits_per_pixel/8));
+    lv_disp_draw_buf_init(&disp_buf, buf1, RT_NULL, info.smem_len / (info.bits_per_pixel / 8));
 
     result = rt_device_open(lcd_device, 0);
     if (result != RT_EOK)