瀏覽代碼

Support LVGLv81 RTT music demo for N9H30 and NUC980.

Wayne Lin 3 年之前
父節點
當前提交
9966f195b4
共有 35 個文件被更改,包括 1984 次插入457 次删除
  1. 74 74
      bsp/nuvoton/libraries/m480/StdDriver/src/nu_can.c
  2. 4 0
      bsp/nuvoton/libraries/m480/StdDriver/src/nu_qspi.c
  3. 3 0
      bsp/nuvoton/libraries/n9h30/Driver/Include/nu_lcd.h
  4. 56 0
      bsp/nuvoton/libraries/n9h30/Driver/Source/nu_lcd.c
  5. 4 0
      bsp/nuvoton/libraries/n9h30/Driver/Source/nu_sdh.c
  6. 1 1
      bsp/nuvoton/libraries/n9h30/rtt_port/drv_adc_touch.c
  7. 52 38
      bsp/nuvoton/libraries/n9h30/rtt_port/drv_ge2d.c
  8. 86 8
      bsp/nuvoton/libraries/n9h30/rtt_port/drv_vpost.c
  9. 16 2
      bsp/nuvoton/libraries/nu_packages/ILI9341/lcd_ili9341.c
  10. 11 1
      bsp/nuvoton/nk-980iot/applications/SConscript
  11. 17 0
      bsp/nuvoton/nk-980iot/applications/lvgl/SConscript
  12. 10 0
      bsp/nuvoton/nk-980iot/applications/lvgl/port/SConscript
  13. 31 0
      bsp/nuvoton/nk-980iot/applications/lvgl/port/lv_conf.h
  14. 50 0
      bsp/nuvoton/nk-980iot/applications/lvgl/port/lv_demo.c
  15. 105 0
      bsp/nuvoton/nk-980iot/applications/lvgl/port/lv_port_disp.c
  16. 23 0
      bsp/nuvoton/nk-980iot/applications/lvgl/port/lv_port_disp.h
  17. 58 0
      bsp/nuvoton/nk-980iot/applications/lvgl/port/lv_port_indev.c
  18. 28 0
      bsp/nuvoton/nk-980iot/applications/lvgl/port/lv_port_indev.h
  19. 133 87
      bsp/nuvoton/nk-n9h30/.config
  20. 11 1
      bsp/nuvoton/nk-n9h30/applications/SConscript
  21. 17 0
      bsp/nuvoton/nk-n9h30/applications/lvgl/SConscript
  22. 10 0
      bsp/nuvoton/nk-n9h30/applications/lvgl/port/SConscript
  23. 32 0
      bsp/nuvoton/nk-n9h30/applications/lvgl/port/lv_conf.h
  24. 51 0
      bsp/nuvoton/nk-n9h30/applications/lvgl/port/lv_demo.c
  25. 133 0
      bsp/nuvoton/nk-n9h30/applications/lvgl/port/lv_port_disp.c
  26. 23 0
      bsp/nuvoton/nk-n9h30/applications/lvgl/port/lv_port_disp.h
  27. 59 0
      bsp/nuvoton/nk-n9h30/applications/lvgl/port/lv_port_indev.c
  28. 28 0
      bsp/nuvoton/nk-n9h30/applications/lvgl/port/lv_port_indev.h
  29. 1 6
      bsp/nuvoton/nk-n9h30/board/board_dev.c
  30. 257 62
      bsp/nuvoton/numaker-iot-m487/.config
  31. 146 54
      bsp/nuvoton/numaker-m032ki/.config
  32. 189 72
      bsp/nuvoton/numaker-m2354/.config
  33. 253 49
      bsp/nuvoton/numaker-pfm-m487/.config
  34. 11 1
      bsp/nuvoton/numaker-pfm-m487/applications/SConscript
  35. 1 1
      bsp/nuvoton/numaker-pfm-m487/board/board_dev.c

+ 74 - 74
bsp/nuvoton/libraries/m480/StdDriver/src/nu_can.c

@@ -60,19 +60,19 @@ static int can_update_spt(int sampl_pt, int tseg, int *tseg1, int *tseg2);
   */
 static uint32_t LockIF(CAN_T *tCAN)
 {
-    uint32_t u32CanNo;
+    uint32_t u32CanNo = 0ul;
     uint32_t u32FreeIfNo;
     uint32_t u32IntMask;
 
 #if defined(CAN1)
-    if(tCAN == CAN0)
+    if (tCAN == CAN0)
         u32CanNo = 0ul;
-    else if(tCAN == CAN1)
+    else if (tCAN == CAN1)
         u32CanNo = 1ul;
-    #if defined(CAN2)
-    else if(tCAN == CAN2)
+#if defined(CAN2)
+    else if (tCAN == CAN2)
         u32CanNo = 2ul;
-    #endif
+#endif
 #else /* defined(CAN0) || defined(CAN) */
     u32CanNo = 0ul;
 #endif
@@ -84,9 +84,9 @@ static uint32_t LockIF(CAN_T *tCAN)
     tCAN->CON = tCAN->CON & ~(CAN_CON_IE_Msk | CAN_CON_SIE_Msk | CAN_CON_EIE_Msk);
 
     /* Check interface 1 is available or not */
-    if((tCAN->IF[0ul].CREQ & CAN_IF_CREQ_BUSY_Msk) == 0ul)
+    if ((tCAN->IF[0ul].CREQ & CAN_IF_CREQ_BUSY_Msk) == 0ul)
     {
-        if(gu8LockCanIf[u32CanNo][0ul] == 0ul)
+        if (gu8LockCanIf[u32CanNo][0ul] == 0ul)
         {
             gu8LockCanIf[u32CanNo][0ul] = 1u;
             u32FreeIfNo = 0ul;
@@ -100,11 +100,11 @@ static uint32_t LockIF(CAN_T *tCAN)
     }
 
     /* Or check interface 2 is available or not */
-    if(u32FreeIfNo == 2ul)
+    if (u32FreeIfNo == 2ul)
     {
-        if((tCAN->IF[1ul].CREQ & CAN_IF_CREQ_BUSY_Msk) == 0ul)
+        if ((tCAN->IF[1ul].CREQ & CAN_IF_CREQ_BUSY_Msk) == 0ul)
         {
-            if(gu8LockCanIf[u32CanNo][1ul] == 0ul)
+            if (gu8LockCanIf[u32CanNo][1ul] == 0ul)
             {
                 gu8LockCanIf[u32CanNo][1ul] = 1u;
                 u32FreeIfNo = 1ul;
@@ -142,9 +142,9 @@ static uint32_t LockIF_TL(CAN_T *tCAN)
     uint32_t u32Count;
     uint32_t u32FreeIfNo;
 
-    for(u32Count = 0ul; u32Count < RETRY_COUNTS; u32Count++)
+    for (u32Count = 0ul; u32Count < RETRY_COUNTS; u32Count++)
     {
-        if((u32FreeIfNo = LockIF(tCAN)) != 2ul)
+        if ((u32FreeIfNo = LockIF(tCAN)) != 2ul)
         {
             break;
         }
@@ -166,22 +166,22 @@ static uint32_t LockIF_TL(CAN_T *tCAN)
 static void ReleaseIF(CAN_T *tCAN, uint32_t u32IfNo)
 {
     uint32_t u32IntMask;
-    uint32_t u32CanNo;
+    uint32_t u32CanNo = 0ul;
 
-    if(u32IfNo >= 2ul)
+    if (u32IfNo >= 2ul)
     {
     }
     else
     {
 #if defined(CAN1)
-    if(tCAN == CAN0)
-        u32CanNo = 0ul;
-    else if(tCAN == CAN1)
-        u32CanNo = 1ul;
-    #if defined(CAN2)
-    else if(tCAN == CAN2)
-        u32CanNo = 2ul;
-    #endif
+        if (tCAN == CAN0)
+            u32CanNo = 0ul;
+        else if (tCAN == CAN1)
+            u32CanNo = 1ul;
+#if defined(CAN2)
+        else if (tCAN == CAN2)
+            u32CanNo = 2ul;
+#endif
 #else /* defined(CAN0) || defined(CAN) */
         u32CanNo = 0ul;
 #endif
@@ -261,7 +261,7 @@ void CAN_EnterInitMode(CAN_T *tCAN, uint8_t u8Mask)
 void CAN_LeaveInitMode(CAN_T *tCAN)
 {
     tCAN->CON &= (~(CAN_CON_INIT_Msk | CAN_CON_CCE_Msk));
-    while(tCAN->CON & CAN_CON_INIT_Msk)
+    while (tCAN->CON & CAN_CON_INIT_Msk)
     {
         /* Check INIT bit is released */
     }
@@ -278,9 +278,9 @@ void CAN_WaitMsg(CAN_T *tCAN)
 {
     tCAN->STATUS = 0x0ul; /* clr status */
 
-    while(1)
+    while (1)
     {
-        if(tCAN->IF[1].MCON & CAN_IF_MCON_NEWDAT_Msk)   /* check new data */
+        if (tCAN->IF[1].MCON & CAN_IF_MCON_NEWDAT_Msk)  /* check new data */
         {
             /* New Data IN */
             break;
@@ -289,7 +289,7 @@ void CAN_WaitMsg(CAN_T *tCAN)
         {
         }
 
-        if(tCAN->STATUS & CAN_STATUS_RXOK_Msk)
+        if (tCAN->STATUS & CAN_STATUS_RXOK_Msk)
         {
             /* Rx OK */
         }
@@ -297,7 +297,7 @@ void CAN_WaitMsg(CAN_T *tCAN)
         {
         }
 
-        if(tCAN->STATUS & CAN_STATUS_LEC_Msk)
+        if (tCAN->STATUS & CAN_STATUS_LEC_Msk)
         {
             /* Error */
         }
@@ -382,18 +382,18 @@ uint32_t CAN_IsNewDataReceived(CAN_T *tCAN, uint8_t u8MsgObj)
   *          the user should be call CAN_EnterTestMode(CAN_TEST_BASIC) and let CAN controller enter
   *          basic mode of test mode. Please notice IF1 Registers used as Tx Buffer in basic mode.
   */
-int32_t CAN_BasicSendMsg(CAN_T *tCAN, STR_CANMSG_T* pCanMsg)
+int32_t CAN_BasicSendMsg(CAN_T *tCAN, STR_CANMSG_T *pCanMsg)
 {
     uint32_t i = 0ul;
     int32_t rev = 1l;
 
-    while(tCAN->IF[0].CREQ & CAN_IF_CREQ_BUSY_Msk)
+    while (tCAN->IF[0].CREQ & CAN_IF_CREQ_BUSY_Msk)
     {
     }
 
     tCAN->STATUS &= (~CAN_STATUS_TXOK_Msk);
 
-    if(pCanMsg->IdType == CAN_STD_ID)
+    if (pCanMsg->IdType == CAN_STD_ID)
     {
         /* standard ID*/
         tCAN->IF[0].ARB1 = 0ul;
@@ -407,7 +407,7 @@ int32_t CAN_BasicSendMsg(CAN_T *tCAN, STR_CANMSG_T* pCanMsg)
 
     }
 
-    if(pCanMsg->FrameType)
+    if (pCanMsg->FrameType)
     {
         tCAN->IF[0].ARB2 |= CAN_IF_ARB2_DIR_Msk;
     }
@@ -424,7 +424,7 @@ int32_t CAN_BasicSendMsg(CAN_T *tCAN, STR_CANMSG_T* pCanMsg)
 
     /* request transmission*/
     tCAN->IF[0].CREQ &= (~CAN_IF_CREQ_BUSY_Msk);
-    if(tCAN->IF[0].CREQ & CAN_IF_CREQ_BUSY_Msk)
+    if (tCAN->IF[0].CREQ & CAN_IF_CREQ_BUSY_Msk)
     {
         /* Cannot clear busy for sending ...*/
         rev = 0l; /* return FALSE */
@@ -433,9 +433,9 @@ int32_t CAN_BasicSendMsg(CAN_T *tCAN, STR_CANMSG_T* pCanMsg)
     {
         tCAN->IF[0].CREQ |= CAN_IF_CREQ_BUSY_Msk;  /* sending */
 
-        for(i = 0ul; i < 0xFFFFFul; i++)
+        for (i = 0ul; i < 0xFFFFFul; i++)
         {
-            if((tCAN->IF[0].CREQ & CAN_IF_CREQ_BUSY_Msk) == 0ul)
+            if ((tCAN->IF[0].CREQ & CAN_IF_CREQ_BUSY_Msk) == 0ul)
             {
                 break;
             }
@@ -444,7 +444,7 @@ int32_t CAN_BasicSendMsg(CAN_T *tCAN, STR_CANMSG_T* pCanMsg)
             }
         }
 
-        if(i >= 0xFFFFFul)
+        if (i >= 0xFFFFFul)
         {
             /* Cannot send out... */
             rev = 0l; /* return FALSE */
@@ -467,11 +467,11 @@ int32_t CAN_BasicSendMsg(CAN_T *tCAN, STR_CANMSG_T* pCanMsg)
   *         TRUE Receive a message success.
   *
   */
-int32_t CAN_BasicReceiveMsg(CAN_T *tCAN, STR_CANMSG_T* pCanMsg)
+int32_t CAN_BasicReceiveMsg(CAN_T *tCAN, STR_CANMSG_T *pCanMsg)
 {
     int32_t rev = 1l;
 
-    if((tCAN->IF[1].MCON & CAN_IF_MCON_NEWDAT_Msk) == 0ul)
+    if ((tCAN->IF[1].MCON & CAN_IF_MCON_NEWDAT_Msk) == 0ul)
     {
         /* In basic mode, receive data always save in IF2 */
         rev = 0; /* return FALSE */
@@ -486,7 +486,7 @@ int32_t CAN_BasicReceiveMsg(CAN_T *tCAN, STR_CANMSG_T* pCanMsg)
                             | CAN_IF_CMASK_DATAA_Msk
                             | CAN_IF_CMASK_DATAB_Msk;
 
-        if((tCAN->IF[1].ARB2 & CAN_IF_ARB2_XTD_Msk) == 0ul)
+        if ((tCAN->IF[1].ARB2 & CAN_IF_ARB2_XTD_Msk) == 0ul)
         {
             /* standard ID*/
             pCanMsg->IdType = CAN_STD_ID;
@@ -541,7 +541,7 @@ int32_t CAN_SetRxMsgObjAndMsk(CAN_T *tCAN, uint8_t u8MsgObj, uint8_t u8idType, u
     uint32_t u32MsgIfNum;
 
     /* Get and lock a free interface */
-    if((u32MsgIfNum = LockIF_TL(tCAN)) == 2ul)
+    if ((u32MsgIfNum = LockIF_TL(tCAN)) == 2ul)
     {
         rev = 0; /* return FALSE */
     }
@@ -551,7 +551,7 @@ int32_t CAN_SetRxMsgObjAndMsk(CAN_T *tCAN, uint8_t u8MsgObj, uint8_t u8idType, u
         tCAN->IF[u32MsgIfNum].CMASK = CAN_IF_CMASK_WRRD_Msk | CAN_IF_CMASK_MASK_Msk | CAN_IF_CMASK_ARB_Msk |
                                       CAN_IF_CMASK_CONTROL_Msk | CAN_IF_CMASK_DATAA_Msk | CAN_IF_CMASK_DATAB_Msk;
 
-        if(u8idType == CAN_STD_ID)    /* According STD/EXT ID format,Configure Mask and Arbitration register */
+        if (u8idType == CAN_STD_ID)   /* According STD/EXT ID format,Configure Mask and Arbitration register */
         {
             tCAN->IF[u32MsgIfNum].ARB1 = 0ul;
             tCAN->IF[u32MsgIfNum].ARB2 = CAN_IF_ARB2_MSGVAL_Msk | (u32id & 0x7FFul) << 2;
@@ -567,7 +567,7 @@ int32_t CAN_SetRxMsgObjAndMsk(CAN_T *tCAN, uint8_t u8MsgObj, uint8_t u8idType, u
 
         /* tCAN->IF[u32MsgIfNum].MCON |= CAN_IF_MCON_UMASK_Msk | CAN_IF_MCON_RXIE_Msk; */
         tCAN->IF[u32MsgIfNum].MCON = CAN_IF_MCON_UMASK_Msk | CAN_IF_MCON_RXIE_Msk;
-        if(u8singleOrFifoLast)
+        if (u8singleOrFifoLast)
         {
             tCAN->IF[u32MsgIfNum].MCON |= CAN_IF_MCON_EOB_Msk;
         }
@@ -611,7 +611,7 @@ int32_t CAN_SetRxMsgObj(CAN_T *tCAN, uint8_t u8MsgObj, uint8_t u8idType, uint32_
     uint32_t u32MsgIfNum;
 
     /* Get and lock a free interface */
-    if((u32MsgIfNum = LockIF_TL(tCAN)) == 2ul)
+    if ((u32MsgIfNum = LockIF_TL(tCAN)) == 2ul)
     {
         rev = 0; /* return FALSE */
     }
@@ -621,7 +621,7 @@ int32_t CAN_SetRxMsgObj(CAN_T *tCAN, uint8_t u8MsgObj, uint8_t u8idType, uint32_
         tCAN->IF[u32MsgIfNum].CMASK = CAN_IF_CMASK_WRRD_Msk | CAN_IF_CMASK_MASK_Msk | CAN_IF_CMASK_ARB_Msk |
                                       CAN_IF_CMASK_CONTROL_Msk | CAN_IF_CMASK_DATAA_Msk | CAN_IF_CMASK_DATAB_Msk;
 
-        if(u8idType == CAN_STD_ID)    /* According STD/EXT ID format,Configure Mask and Arbitration register */
+        if (u8idType == CAN_STD_ID)   /* According STD/EXT ID format,Configure Mask and Arbitration register */
         {
             tCAN->IF[u32MsgIfNum].ARB1 = 0ul;
             tCAN->IF[u32MsgIfNum].ARB2 = CAN_IF_ARB2_MSGVAL_Msk | (u32id & 0x7FFul) << 2;
@@ -634,7 +634,7 @@ int32_t CAN_SetRxMsgObj(CAN_T *tCAN, uint8_t u8MsgObj, uint8_t u8idType, uint32_
 
         /* tCAN->IF[u8MsgIfNum].MCON |= CAN_IF_MCON_UMASK_Msk | CAN_IF_MCON_RXIE_Msk; */
         tCAN->IF[u32MsgIfNum].MCON = CAN_IF_MCON_UMASK_Msk | CAN_IF_MCON_RXIE_Msk;
-        if(u8singleOrFifoLast)
+        if (u8singleOrFifoLast)
         {
             tCAN->IF[u32MsgIfNum].MCON |= CAN_IF_MCON_EOB_Msk;
         }
@@ -668,19 +668,19 @@ int32_t CAN_SetRxMsgObj(CAN_T *tCAN, uint8_t u8MsgObj, uint8_t u8idType, uint32_
   * @retval FALSE No any message received
   * @details Gets the message, if received.
   */
-int32_t CAN_ReadMsgObj(CAN_T *tCAN, uint8_t u8MsgObj, uint8_t u8Release, STR_CANMSG_T* pCanMsg)
+int32_t CAN_ReadMsgObj(CAN_T *tCAN, uint8_t u8MsgObj, uint8_t u8Release, STR_CANMSG_T *pCanMsg)
 {
     int32_t rev = 1l;
     uint32_t u32MsgIfNum;
 
-    if(!CAN_IsNewDataReceived(tCAN, u8MsgObj))
+    if (!CAN_IsNewDataReceived(tCAN, u8MsgObj))
     {
         rev = 0; /* return FALSE */
     }
     else
     {
         /* Get and lock a free interface */
-        if((u32MsgIfNum = LockIF_TL(tCAN)) == 2ul)
+        if ((u32MsgIfNum = LockIF_TL(tCAN)) == 2ul)
         {
             rev = 0; /* return FALSE */
         }
@@ -699,12 +699,12 @@ int32_t CAN_ReadMsgObj(CAN_T *tCAN, uint8_t u8MsgObj, uint8_t u8Release, STR_CAN
 
             tCAN->IF[u32MsgIfNum].CREQ = 1ul + u8MsgObj;
 
-            while(tCAN->IF[u32MsgIfNum].CREQ & CAN_IF_CREQ_BUSY_Msk)
+            while (tCAN->IF[u32MsgIfNum].CREQ & CAN_IF_CREQ_BUSY_Msk)
             {
                 /*Wait*/
             }
 
-            if((tCAN->IF[u32MsgIfNum].ARB2 & CAN_IF_ARB2_XTD_Msk) == 0ul)
+            if ((tCAN->IF[u32MsgIfNum].ARB2 & CAN_IF_ARB2_XTD_Msk) == 0ul)
             {
                 /* standard ID*/
                 pCanMsg->IdType = CAN_STD_ID;
@@ -758,12 +758,12 @@ uint32_t CAN_SetBaudRate(CAN_T *tCAN, uint32_t u32BaudRate)
     CAN_EnterInitMode(tCAN, (uint8_t)0);
 
     SystemCoreClockUpdate();
-    if((tCAN == CAN0) || (tCAN == CAN2))
+    if ((tCAN == CAN0) || (tCAN == CAN2))
     {
         u64PCLK_DIV = (uint64_t)(CLK->PCLKDIV & CLK_PCLKDIV_APB0DIV_Msk);
         u64PCLK_DIV = (uint64_t)(1 << u64PCLK_DIV);
     }
-    else if(tCAN == CAN1)
+    else if (tCAN == CAN1)
     {
         u64PCLK_DIV = (uint64_t)((CLK->PCLKDIV & CLK_PCLKDIV_APB1DIV_Msk) >> CLK_PCLKDIV_APB1DIV_Pos);
         u64PCLK_DIV = (uint64_t)(1 << u64PCLK_DIV);
@@ -771,7 +771,7 @@ uint32_t CAN_SetBaudRate(CAN_T *tCAN, uint32_t u32BaudRate)
 
     clock_freq = SystemCoreClock / u64PCLK_DIV;
 
-    if(u32BaudRate >= (uint32_t)1000000)
+    if (u32BaudRate >= (uint32_t)1000000)
     {
         u32BaudRate = (uint32_t)1000000;
     }
@@ -901,7 +901,7 @@ uint32_t CAN_Open(CAN_T *tCAN, uint32_t u32BaudRate, uint32_t u32Mode)
 
     u32CurrentBitRate = CAN_SetBaudRate(tCAN, u32BaudRate);
 
-    if(u32Mode == CAN_BASIC_MODE)
+    if (u32Mode == CAN_BASIC_MODE)
     {
         CAN_EnterTestMode(tCAN, (uint8_t)CAN_TEST_BASIC_Msk);
     }
@@ -925,12 +925,12 @@ uint32_t CAN_Open(CAN_T *tCAN, uint32_t u32BaudRate, uint32_t u32Mode)
   * @details The two sets of interface registers (IF1 and IF2) control the software access to the Message RAM.
   *          They buffer the data to be transferred to and from the RAM, avoiding conflicts between software accesses and message reception/transmission.
   */
-int32_t CAN_SetTxMsg(CAN_T *tCAN, uint32_t u32MsgNum, STR_CANMSG_T* pCanMsg)
+int32_t CAN_SetTxMsg(CAN_T *tCAN, uint32_t u32MsgNum, STR_CANMSG_T *pCanMsg)
 {
     int32_t rev = 1l;
     uint32_t u32MsgIfNum;
 
-    if((u32MsgIfNum = LockIF_TL(tCAN)) == 2ul)
+    if ((u32MsgIfNum = LockIF_TL(tCAN)) == 2ul)
     {
         rev = 0; /* return FALSE */
     }
@@ -940,7 +940,7 @@ int32_t CAN_SetTxMsg(CAN_T *tCAN, uint32_t u32MsgNum, STR_CANMSG_T* pCanMsg)
         tCAN->IF[u32MsgIfNum].CMASK = CAN_IF_CMASK_WRRD_Msk | CAN_IF_CMASK_MASK_Msk | CAN_IF_CMASK_ARB_Msk |
                                       CAN_IF_CMASK_CONTROL_Msk | CAN_IF_CMASK_DATAA_Msk  | CAN_IF_CMASK_DATAB_Msk;
 
-        if(pCanMsg->IdType == CAN_STD_ID)
+        if (pCanMsg->IdType == CAN_STD_ID)
         {
             /* standard ID*/
             tCAN->IF[u32MsgIfNum].ARB1 = 0ul;
@@ -954,7 +954,7 @@ int32_t CAN_SetTxMsg(CAN_T *tCAN, uint32_t u32MsgNum, STR_CANMSG_T* pCanMsg)
                                          CAN_IF_ARB2_DIR_Msk | CAN_IF_ARB2_XTD_Msk | CAN_IF_ARB2_MSGVAL_Msk;
         }
 
-        if(pCanMsg->FrameType)
+        if (pCanMsg->FrameType)
         {
             tCAN->IF[u32MsgIfNum].ARB2 |=   CAN_IF_ARB2_DIR_Msk;
         }
@@ -992,7 +992,7 @@ int32_t CAN_TriggerTxMsg(CAN_T  *tCAN, uint32_t u32MsgNum)
     int32_t rev = 1l;
     uint32_t u32MsgIfNum;
 
-    if((u32MsgIfNum = LockIF_TL(tCAN)) == 2ul)
+    if ((u32MsgIfNum = LockIF_TL(tCAN)) == 2ul)
     {
         rev = 0; /* return FALSE */
     }
@@ -1006,7 +1006,7 @@ int32_t CAN_TriggerTxMsg(CAN_T  *tCAN, uint32_t u32MsgNum)
 
         tCAN->IF[u32MsgIfNum].CREQ = 1ul + u32MsgNum;
 
-        while(tCAN->IF[u32MsgIfNum].CREQ & CAN_IF_CREQ_BUSY_Msk)
+        while (tCAN->IF[u32MsgIfNum].CREQ & CAN_IF_CREQ_BUSY_Msk)
         {
             /*Wait*/
         }
@@ -1076,9 +1076,9 @@ int32_t CAN_SetRxMsg(CAN_T *tCAN, uint32_t u32MsgNum, uint32_t u32IDType, uint32
     int32_t rev = (int32_t)TRUE;
     uint32_t u32TimeOutCount = 0ul;
 
-    while(CAN_SetRxMsgObj(tCAN, (uint8_t)u32MsgNum, (uint8_t)u32IDType, u32ID, (uint8_t)TRUE) == (int32_t)FALSE)
+    while (CAN_SetRxMsgObj(tCAN, (uint8_t)u32MsgNum, (uint8_t)u32IDType, u32ID, (uint8_t)TRUE) == (int32_t)FALSE)
     {
-        if(++u32TimeOutCount >= RETRY_COUNTS)
+        if (++u32TimeOutCount >= RETRY_COUNTS)
         {
             rev = (int32_t)(FALSE); /* return FALSE */
             break;
@@ -1113,9 +1113,9 @@ int32_t CAN_SetRxMsgAndMsk(CAN_T *tCAN, uint32_t u32MsgNum, uint32_t u32IDType,
     int32_t  rev = (int32_t)TRUE;
     uint32_t u32TimeOutCount = 0ul;
 
-    while(CAN_SetRxMsgObjAndMsk(tCAN, (uint8_t)u32MsgNum, (uint8_t)u32IDType, u32ID, u32IDMask, (uint8_t)TRUE) == (int32_t)FALSE)
+    while (CAN_SetRxMsgObjAndMsk(tCAN, (uint8_t)u32MsgNum, (uint8_t)u32IDType, u32ID, u32IDMask, (uint8_t)TRUE) == (int32_t)FALSE)
     {
-        if(++u32TimeOutCount >= RETRY_COUNTS)
+        if (++u32TimeOutCount >= RETRY_COUNTS)
         {
             rev = (int32_t)FALSE;
             break;
@@ -1152,13 +1152,13 @@ int32_t CAN_SetMultiRxMsg(CAN_T *tCAN, uint32_t u32MsgNum, uint32_t u32MsgCount,
     uint32_t u32TimeOutCount;
     uint32_t u32EOB_Flag = 0ul;
 
-    for(i = 1ul; i <= u32MsgCount; i++)
+    for (i = 1ul; i <= u32MsgCount; i++)
     {
         u32TimeOutCount = 0ul;
 
         u32MsgNum += (i - 1ul);
 
-        if(i == u32MsgCount)
+        if (i == u32MsgCount)
         {
             u32EOB_Flag = 1ul;
         }
@@ -1166,9 +1166,9 @@ int32_t CAN_SetMultiRxMsg(CAN_T *tCAN, uint32_t u32MsgNum, uint32_t u32MsgCount,
         {
         }
 
-        while(CAN_SetRxMsgObj(tCAN, (uint8_t)u32MsgNum, (uint8_t)u32IDType, u32ID, (uint8_t)u32EOB_Flag) == (int32_t)FALSE)
+        while (CAN_SetRxMsgObj(tCAN, (uint8_t)u32MsgNum, (uint8_t)u32IDType, u32ID, (uint8_t)u32EOB_Flag) == (int32_t)FALSE)
         {
-            if(++u32TimeOutCount >= RETRY_COUNTS)
+            if (++u32TimeOutCount >= RETRY_COUNTS)
             {
                 rev = (int32_t)FALSE;
                 break;
@@ -1196,20 +1196,20 @@ int32_t CAN_SetMultiRxMsg(CAN_T *tCAN, uint32_t u32MsgNum, uint32_t u32MsgCount,
   * @details The receive/transmit priority for the Message Objects is attached to the message number.
   *          Message Object 1 has the highest priority, while Message Object 32 has the lowest priority.
   */
-int32_t CAN_Transmit(CAN_T *tCAN, uint32_t u32MsgNum, STR_CANMSG_T* pCanMsg)
+int32_t CAN_Transmit(CAN_T *tCAN, uint32_t u32MsgNum, STR_CANMSG_T *pCanMsg)
 {
     int32_t rev = (int32_t)TRUE;
     uint32_t u32Tmp;
 
     u32Tmp = (tCAN->TEST & CAN_TEST_BASIC_Msk);
 
-    if((tCAN->CON & CAN_CON_TEST_Msk) && u32Tmp)
+    if ((tCAN->CON & CAN_CON_TEST_Msk) && u32Tmp)
     {
         rev = CAN_BasicSendMsg(tCAN, pCanMsg);
     }
     else
     {
-        if(CAN_SetTxMsg(tCAN, u32MsgNum, pCanMsg) == FALSE)
+        if (CAN_SetTxMsg(tCAN, u32MsgNum, pCanMsg) == FALSE)
         {
             rev = (int32_t)FALSE;
         }
@@ -1235,14 +1235,14 @@ int32_t CAN_Transmit(CAN_T *tCAN, uint32_t u32MsgNum, STR_CANMSG_T* pCanMsg)
   * @details The Interface Registers avoid conflict between the CPU accesses to the Message RAM and CAN message reception
   *          and transmission by buffering the data to be transferred.
   */
-int32_t CAN_Receive(CAN_T *tCAN, uint32_t u32MsgNum, STR_CANMSG_T* pCanMsg)
+int32_t CAN_Receive(CAN_T *tCAN, uint32_t u32MsgNum, STR_CANMSG_T *pCanMsg)
 {
     int32_t rev = (int32_t)TRUE;
     uint32_t u32Tmp;
 
     u32Tmp = (tCAN->TEST & CAN_TEST_BASIC_Msk);
 
-    if((tCAN->CON & CAN_CON_TEST_Msk) && u32Tmp)
+    if ((tCAN->CON & CAN_CON_TEST_Msk) && u32Tmp)
     {
         rev = CAN_BasicReceiveMsg(tCAN, pCanMsg);
     }
@@ -1267,7 +1267,7 @@ void CAN_CLR_INT_PENDING_BIT(CAN_T *tCAN, uint8_t u32MsgNum)
 {
     uint32_t u32MsgIfNum;
 
-    if((u32MsgIfNum = LockIF_TL(tCAN)) == 2ul)
+    if ((u32MsgIfNum = LockIF_TL(tCAN)) == 2ul)
     {
         u32MsgIfNum = 0ul;
     }

+ 4 - 0
bsp/nuvoton/libraries/m480/StdDriver/src/nu_qspi.c

@@ -322,6 +322,10 @@ uint32_t QSPI_SetBusClock(QSPI_T *qspi, uint32_t u32BusClock)
             u32ClkSrc = __HIRC; /* Clock source is HIRC */
         }
     }
+    else
+    {
+        return 0;
+    }
 
     if (u32BusClock >= u32HCLKFreq)
     {

+ 3 - 0
bsp/nuvoton/libraries/n9h30/Driver/Include/nu_lcd.h

@@ -231,6 +231,9 @@ void vpostMPUWriteAddr(uint16_t uscmd);
 void vpostMPUWriteData(uint16_t usdata);
 uint32_t vpostMPUReadData(void);
 VPOST_T *vpostLCMGetInstance(uint32_t u32DisplayPanelID);
+void vpostSetFrameBuffer(uint8_t *pu8BufPtr);
+void vpostSetOSDBuffer(uint8_t *pu8BufPtr);
+uint8_t *vpostGetMultiOSDBuffer(uint32_t u32Cnt);
 
 /*@}*/ /* end of group N9H30_LCD_EXPORTED_FUNCTIONS */
 

+ 56 - 0
bsp/nuvoton/libraries/n9h30/Driver/Source/nu_lcd.c

@@ -234,6 +234,12 @@ uint8_t *vpostGetFrameBuffer(void)
     return (uint8_t *)((uint32_t)u8BufPtr | 0x80000000);
 }
 
+void vpostSetFrameBuffer(uint8_t *pu8BufPtr)
+{
+    outpw(REG_LCM_VA_BADDR0, (uint32_t)((uint32_t)pu8BufPtr | 0x80000000));
+    outpw(REG_LCM_VA_FBCTRL, inpw(REG_LCM_VA_FBCTRL) & ~(1 << 30) & ~VPOSTB_DB_EN);
+}
+
 
 /**
   * @brief Get the pointer of frame buffer
@@ -535,6 +541,56 @@ uint8_t *vpostGetOSDBuffer(void)
     return (uint8_t *)((uint32_t)u8BufPtr | 0x80000000);
 }
 
+/**
+  * @brief Get the pointer of OSD buffer
+  * @param[in] u32Cnt is the frame buffer count to allocate. Min value is 1.
+  * @return pointer of frame buffer
+  * @retval NULL fail.
+  * @note before calling this function, display width, height and source format must be set first.
+  */
+uint8_t *vpostGetMultiOSDBuffer(uint32_t u32Cnt)
+{
+    uint32_t u32BytePerPixel;
+    uint8_t *u8BufPtr;
+
+    if ((curOSDDev.nOSDWidth == 0) || (curOSDDev.nOSDHeight == 0))
+    {
+        return NULL;
+    }
+
+    switch (curOSDDev.ucOSDSrcFormat)
+    {
+    case OSD_SRC_YUV422:
+    case OSD_SRC_YCBCR422:
+    case OSD_SRC_RGB565:
+        u32BytePerPixel = 2;
+        break;
+
+    case OSD_SRC_RGB666:
+    case OSD_SRC_RGB888:
+        u32BytePerPixel = 4;
+        break;
+
+    default:
+        u32BytePerPixel = 2;
+    }
+
+    u8BufPtr = (uint8_t *)malloc((curOSDDev.nOSDWidth * curOSDDev.nOSDHeight * u32BytePerPixel) * u32Cnt + 32);
+    if (u8BufPtr == NULL)
+        return NULL;
+    u8BufPtr = (uint8_t *)shift_pointer((uint32_t)u8BufPtr, 32);
+
+    outpw(REG_LCM_OSD_BADDR, (uint32_t)((uint32_t)u8BufPtr | 0x80000000));
+
+    return (uint8_t *)((uint32_t)u8BufPtr | 0x80000000);
+
+}
+
+void vpostSetOSDBuffer(uint8_t *u8BufPtr)
+{
+    outpw(REG_LCM_OSD_BADDR, (uint32_t)((uint32_t)u8BufPtr | 0x80000000));
+}
+
 /**
   * @brief Enable OSD function
   * @param none

+ 4 - 0
bsp/nuvoton/libraries/n9h30/Driver/Source/nu_sdh.c

@@ -283,6 +283,10 @@ uint32_t SDH_CardDetection(SDH_T *sdh, SDH_INFO_T *pSD, uint32_t card_num)
         u32INTSTS_CDSTS_Msk = SDH_INTSTS_CDSTS1_Msk;
         u32CTL_CLKKEEP_Msk = SDH_CTL_CLKKEEP1_Msk;
     }
+    else
+    {
+        return FALSE;
+    }
 
     if ((sdh->INTEN & u32INTEN_CDSRC_Msk) == u32INTEN_CDSRC_Msk)   /* Card detect pin from GPIO */
     {

+ 1 - 1
bsp/nuvoton/libraries/n9h30/rtt_port/drv_adc_touch.c

@@ -216,7 +216,7 @@ static void adc_touch_entry(void *parameter)
                     || touch_point.event == RT_TOUCH_EVENT_UP
                     || touch_point.event == RT_TOUCH_EVENT_MOVE)
             {
-#if defined(PKG_USING_LITTLEVGL2RTT)
+#if defined(PKG_USING_LITTLEVGL2RTT) || defined(PKG_USING_LVGL)
                 extern void littlevgl2rtt_send_input_event(rt_int16_t x, rt_int16_t y, rt_uint8_t state);
                 littlevgl2rtt_send_input_event(touch_point.x_coordinate, touch_point.y_coordinate, touch_point.event);
 #endif

+ 52 - 38
bsp/nuvoton/libraries/n9h30/rtt_port/drv_ge2d.c

@@ -8,11 +8,16 @@
 *****************************************************************************/
 #include "rtthread.h"
 
+#include <rtdevice.h>
+#include <rthw.h>
+
 #include "NuMicro.h"
 #include <drv_sys.h>
+#include <rtdevice.h>
+#include <rthw.h>
 
 //#define DEBUG
-#define DEF_COND_WAIT 1
+#define DEF_COND_WAIT
 
 static unsigned int GFX_BPP;
 static unsigned int GFX_WIDTH;
@@ -32,7 +37,6 @@ static unsigned int GFX_HEIGHT;
 #define  PP   4  // Quadrant 4
 
 #define ABS(x)      (((x)>0)?(x):-(x))
-#define MAX(a,b)    (((a)>(b))?(a):(b))
 
 /* octant code of line drawing */
 
@@ -595,7 +599,7 @@ struct nu_ge2d
 
     rt_mutex_t           lock;
 #if defined(DEF_COND_WAIT)
-    rt_sem_t             signal;
+    struct rt_completion signal;
 #endif
 };
 typedef struct nu_ge2d *nu_ge2d_t;
@@ -619,14 +623,21 @@ static struct nu_ge2d g_sNuGe2d =
                           }
 
 #if defined(DEF_COND_WAIT)
+#define NU_GE2D_GO()        { \
+                                rt_completion_init(&(g_sNuGe2d.signal)); \
+                                outpw(REG_GE2D_TRG, 1); \
+                            }
+
 #define NU_GE2D_COND_WAIT() { \
-                                  rt_err_t result = rt_sem_take(g_sNuGe2d.signal, RT_WAITING_FOREVER); \
-                                RT_ASSERT(result == RT_EOK); \
+                                                          if( (inpw(REG_GE2D_INTSTS) & 0x01) == 0 ) \
+                                                          { \
+                                                              rt_thread_mdelay(1); \
+                                    rt_completion_wait(&g_sNuGe2d.signal, 100); \
+                                                        } \
                             }
 
 #define NU_GE2D_SIGNAL()  { \
-                                rt_err_t result = rt_sem_release(g_sNuGe2d.signal); \
-                              RT_ASSERT(result == RT_EOK); \
+                                rt_completion_done(&g_sNuGe2d.signal); \
                           }
 /* Interrupt Service Routine for GE2D */
 static void nu_ge2d_isr(int vector, void *param)
@@ -638,6 +649,10 @@ static void nu_ge2d_isr(int vector, void *param)
     NU_GE2D_SIGNAL();
 }
 #else
+#define NU_GE2D_GO()        { \
+                                 outpw(REG_GE2D_TRG, 1); \
+                            }
+
 #define NU_GE2D_COND_WAIT() { \
                                  while ((inpw(REG_GE2D_INTSTS) & 0x01) == 0); \
                                  outpw(REG_GE2D_INTSTS, 1); \
@@ -692,7 +707,7 @@ void ge2dClearScreen(int color)
     dest_dimension = GFX_HEIGHT << 16 | GFX_WIDTH;
     outpw(REG_GE2D_RTGLSZ, dest_dimension);
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -785,7 +800,7 @@ void ge2dInit(int bpp, int width, int height, void *destination)
             uint32_t u32Size = (8 * 8 * (GFX_BPP / 8)) * 2;
             GFX_PAT_ADDR = (void *)rt_malloc_align(u32Size, u32Size);
             RT_ASSERT(GFX_PAT_ADDR != RT_NULL);
-            sysprintf("[%s] Allocated %d@0x%08x.\n", __func__, u32Size, GFX_PAT_ADDR);
+            //sysprintf("[%s] Allocated %d@0x%08x.\n", __func__, u32Size, GFX_PAT_ADDR);
         }
     }
 
@@ -1016,7 +1031,7 @@ void ge2dBitblt_ScreenToScreen(int srcx, int srcy, int destx, int desty, int wid
         outpw(REG_GE2D_MISCTL, data32);
     }
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -1155,7 +1170,7 @@ void ge2dBitblt_ScreenToScreenRop(int srcx, int srcy, int destx, int desty, int
         outpw(REG_GE2D_CTL, cmd32);
     }
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -1279,7 +1294,7 @@ void ge2dBitblt_SourceToDestination(int srcx, int srcy, int destx, int desty, in
         outpw(REG_GE2D_MISCTL, data32);
     }
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -1402,7 +1417,7 @@ void ge2dDrawFrame(int x1, int y1, int x2, int y2, int color, int opt)
 
     outpw(REG_GE2D_MISCTL, inpw(REG_GE2D_MISCTL)); // address caculation
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -1509,7 +1524,7 @@ void ge2dLine_DrawSolidLine(int x1, int y1, int x2, int y2, int color)
         outpw(REG_GE2D_CLPBBR, _ClipBR);
     }
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -1616,7 +1631,7 @@ void ge2dLine_DrawSolidLine_RGB565(int x1, int y1, int x2, int y2, int color)
         outpw(REG_GE2D_CLPBBR, _ClipBR);
     }
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -1731,7 +1746,7 @@ void ge2dLine_DrawStyledLine(int x1, int y1, int x2, int y2, int style, int fgco
 
     outpw(REG_GE2D_MISCTL, temp32); // address caculation
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -1845,7 +1860,7 @@ void ge2dLine_DrawStyledLine_RGB565(int x1, int y1, int x2, int y2, int style, i
 
     outpw(REG_GE2D_MISCTL, temp32); // address caculation
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -1900,7 +1915,7 @@ void ge2dFill_Solid(int dx, int dy, int width, int height, int color)
 
     outpw(REG_GE2D_CTL, cmd32);
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -1954,7 +1969,7 @@ void ge2dFill_Solid_RGB565(int dx, int dy, int width, int height, int color)
 
     outpw(REG_GE2D_CTL, cmd32);
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -2010,7 +2025,7 @@ void ge2dFill_SolidBackground(int dx, int dy, int width, int height, int color)
 
     outpw(REG_GE2D_CTL, cmd32);
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -2061,7 +2076,7 @@ void ge2dFill_ColorPattern(int dx, int dy, int width, int height)
         outpw(REG_GE2D_CLPBBR, _ClipBR);
     }
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -2115,7 +2130,7 @@ void ge2dFill_MonoPattern(int dx, int dy, int width, int height, int opt)
         outpw(REG_GE2D_CLPBBR, _ClipBR);
     }
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -2166,7 +2181,7 @@ void ge2dFill_ColorPatternROP(int sx, int sy, int width, int height, int rop)
         outpw(REG_GE2D_CLPBBR, _ClipBR);
     }
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -2221,7 +2236,7 @@ void ge2dFill_MonoPatternROP(int sx, int sy, int width, int height, int rop, int
         outpw(REG_GE2D_CLPBBR, _ClipBR);
     }
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -2286,7 +2301,7 @@ void ge2dFill_TileBlt(int srcx, int srcy, int destx, int desty, int width, int h
     tile_ctl = (y_count << 8) | (x_count);
     outpw(REG_GE2D_TCNTVHSF, tile_ctl);
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -2327,7 +2342,7 @@ void ge2dHostBlt_Write(int x, int y, int width, int height, void *buf)
     dest_dimension = height << 16 | width;
     outpw(REG_GE2D_RTGLSZ, dest_dimension);
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     ptr32 = (UINT32 *)buf;
     for (i = 0; i < height; i++) // 120
@@ -2394,7 +2409,7 @@ void ge2dHostBlt_Read(int x, int y, int width, int height, void *buf)
     dest_dimension = height << 16 | width;
     outpw(REG_GE2D_RTGLSZ, dest_dimension);
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     ptr32 = (UINT32 *)buf;
     for (i = 0; i < height; i++)
@@ -2498,7 +2513,7 @@ void ge2dHostBlt_Sprite(int x, int y, int width, int height, void *buf)
         outpw(REG_GE2D_MISCTL, data32);
     }
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     ptr32 = (UINT32 *)buf;
     for (i = 0; i < height; i++)
@@ -2598,7 +2613,7 @@ void ge2dRotation(int srcx, int srcy, int destx, int desty, int width, int heigh
     /* set rotation reference point xy register, then nothing happened */
     outpw(REG_GE2D_CTL, cmd32);
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -2688,7 +2703,7 @@ void ge2dSpriteBlt_Screen(int destx, int desty, int sprite_width, int sprite_hei
 
     outpw(REG_GE2D_CTL, cmd32);
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -2778,7 +2793,7 @@ void ge2dSpriteBltx_Screen(int x, int y, int sprite_sx, int sprite_sy, int width
         outpw(REG_GE2D_MISCTL, data32);
     }
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -2876,7 +2891,7 @@ void ge2dSpriteBlt_ScreenRop(int x, int y, int sprite_width, int sprite_height,
         outpw(REG_GE2D_CTL, cmd32);
     }
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -2978,7 +2993,7 @@ void ge2dSpriteBltx_ScreenRop(int x, int y, int sprite_sx, int sprite_sy, int wi
         outpw(REG_GE2D_CTL, cmd32);
     }
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -3044,7 +3059,7 @@ void ge2dColorExpansionBlt(int x, int y, int width, int height, int fore_color,
         outpw(REG_GE2D_CLPBBR, _ClipBR);
     }
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -3094,7 +3109,7 @@ void ge2dHostColorExpansionBlt(int x, int y, int width, int height, int fore_col
     dest_dimension = height << 16 | width;
     outpw(REG_GE2D_RTGLSZ, dest_dimension);
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     ptr32 = (UINT32 *)buf;
     for (i = 0; i < height; i++)
@@ -3411,7 +3426,7 @@ void ge2dFont_PutChar(int x, int y, char asc_code, int fore_color, int back_colo
     dest_dimension = height << 16 | width;
     outpw(REG_GE2D_RTGLSZ, dest_dimension);
 
-    outpw(REG_GE2D_TRG, 1);
+    NU_GE2D_GO();
 
     NU_GE2D_COND_WAIT();
 
@@ -3453,8 +3468,7 @@ int rt_hw_ge2d_init(void)
 
 #if defined(DEF_COND_WAIT)
     rt_kprintf("with_cond_wait\n");
-    g_sNuGe2d.signal = rt_sem_create("ge2d_wait", 0, RT_IPC_FLAG_FIFO);
-    RT_ASSERT(g_sNuGe2d.signal != RT_NULL);
+    rt_completion_init(&(g_sNuGe2d.signal));
 
     /* Install ISR & Respond the IRQ */
     rt_hw_interrupt_install(g_sNuGe2d.irqn, nu_ge2d_isr, &g_sNuGe2d, g_sNuGe2d.name);

+ 86 - 8
bsp/nuvoton/libraries/n9h30/rtt_port/drv_vpost.c

@@ -22,6 +22,8 @@
 
 /* Private typedef --------------------------------------------------------------*/
 
+#define DEF_VPOST_BUFFER_NUMBER 2
+
 typedef enum
 {
     eVpost_LCD,
@@ -43,6 +45,10 @@ struct nu_vpost
 };
 typedef struct nu_vpost *nu_vpost_t;
 
+static volatile uint32_t g_u32VSyncBlank = 0;
+static volatile uint32_t g_u32VSyncLastCommit = 0;
+static struct rt_completion vsync_wq;
+
 static struct nu_vpost nu_fbdev[eVpost_Cnt] =
 {
     {
@@ -151,6 +157,43 @@ static rt_err_t vpost_layer_control(rt_device_t dev, int cmd, void *args)
     }
     break;
 
+    /* FBIO_PANDISPLAY + WAIT_VSYNC Mechanism */
+    case RTGRAPHIC_CTRL_RECT_UPDATE:
+    {
+        if (args != RT_NULL)
+        {
+            uint8_t *pu8BufPtr = (uint8_t *)args;
+            g_u32VSyncLastCommit = g_u32VSyncBlank;
+
+            /* Pan display */
+            switch (psVpost->layer)
+            {
+            case eVpost_LCD:
+                vpostSetFrameBuffer(pu8BufPtr);
+                break;
+
+#if defined(BSP_USING_VPOST_OSD)
+            case eVpost_OSD:
+                vpostSetOSDBuffer(pu8BufPtr);
+                break;
+#endif
+
+            default:
+                return -RT_ERROR;
+            }
+
+            /*Wait sync*/
+            while (g_u32VSyncLastCommit == g_u32VSyncBlank)
+            {
+                rt_completion_init(&vsync_wq);
+                rt_completion_wait(&vsync_wq, RT_TICK_PER_SECOND / 60);
+            }
+        }
+        else
+            return -RT_ERROR;
+    }
+    break;
+
     default:
         break;
     }
@@ -166,9 +209,43 @@ static rt_err_t vpost_layer_init(rt_device_t dev)
     /* Enable VPOST engine clock. */
     nu_sys_ipclk_enable(LCDCKEN);
 
+    rt_completion_init(&vsync_wq);
+    outpw(REG_LCM_INT_CS, VPOSTB_UNDERRUN_EN | VPOSTB_DISP_F_EN);
+    outpw(REG_LCM_DCCS, (inpw(REG_LCM_DCCS) | (1 << 4)));
+
     return RT_EOK;
 }
 
+static void nu_vpost_isr(int vector, void *param)
+{
+    /*
+    #define VPOSTB_DISP_F_INT           ((UINT32)1<<31)
+    #define VPOSTB_DISP_F_STATUS        (1<<30)
+    #define VPOSTB_UNDERRUN_INT         (1<<29)
+    #define VPOSTB_BUS_ERROR_INT        (1<<28)
+    #define VPOSTB_FLY_ERR              (1<<27)
+    #define VPOSTB_UNDERRUN_EN          (1<<1)
+    #define VPOSTB_DISP_F_EN            (1)
+    */
+
+    uint32_t u32VpostIRQStatus = inpw(REG_LCM_INT_CS);
+    if (u32VpostIRQStatus & VPOSTB_DISP_F_STATUS)
+    {
+        outpw(REG_LCM_INT_CS, inpw(REG_LCM_INT_CS) | VPOSTB_DISP_F_STATUS);
+
+        g_u32VSyncBlank++;
+        rt_completion_done(&vsync_wq);
+    }
+    else if (u32VpostIRQStatus & VPOSTB_UNDERRUN_INT)
+    {
+        outpw(REG_LCM_INT_CS, inpw(REG_LCM_INT_CS) | VPOSTB_UNDERRUN_INT);
+    }
+    else if (u32VpostIRQStatus & VPOSTB_BUS_ERROR_INT)
+    {
+        outpw(REG_LCM_INT_CS, inpw(REG_LCM_INT_CS) | VPOSTB_BUS_ERROR_INT);
+    }
+}
+
 int rt_hw_vpost_init(void)
 {
     int i = -1;
@@ -177,13 +254,8 @@ int rt_hw_vpost_init(void)
     VPOST_T *psVpostLcmInst = vpostLCMGetInstance(VPOST_USING_LCD_IDX);
     RT_ASSERT(psVpostLcmInst != RT_NULL);
 
-#if (LCM_USING_BPP==4 )
-    /* LCD clock is selected from UPLL and divide to 30MHz */
-    outpw(REG_CLK_DIVCTL1, (inpw(REG_CLK_DIVCTL1) & ~0xff1f) | 0x918);
-#else
     /* LCD clock is selected from UPLL and divide to 20MHz */
     outpw(REG_CLK_DIVCTL1, (inpw(REG_CLK_DIVCTL1) & ~0xff1f) | 0xE18);
-#endif
 
     /* Initial LCM */
     vpostLCMInit(VPOST_USING_LCD_IDX);
@@ -213,7 +285,7 @@ int rt_hw_vpost_init(void)
 #else
             vpostSetVASrc(VA_SRC_RGB565);
 #endif
-            psVpost->info.framebuffer = (rt_uint8_t *)vpostGetFrameBuffer();
+            psVpost->info.framebuffer = (rt_uint8_t *)vpostGetMultiFrameBuffer(DEF_VPOST_BUFFER_NUMBER);
         }
 #if defined(BSP_USING_VPOST_OSD)
         else if (psVpost->layer == eVpost_OSD)
@@ -225,7 +297,7 @@ int rt_hw_vpost_init(void)
 #else
             vpostSetOSDSrc(OSD_SRC_RGB565);
 #endif
-            psVpost->info.framebuffer = (rt_uint8_t *)vpostGetOSDBuffer();
+            psVpost->info.framebuffer = (rt_uint8_t *)vpostGetMultiOSDBuffer(DEF_VPOST_BUFFER_NUMBER);
         }
 #endif
 
@@ -242,10 +314,16 @@ int rt_hw_vpost_init(void)
         psVpost->dev.close = vpost_layer_close;
         psVpost->dev.control = vpost_layer_control;
 
-        /* register graphic device driver */
+        /* Register graphic device driver */
         ret = rt_device_register(&psVpost->dev, psVpost->name, RT_DEVICE_FLAG_RDWR);
         RT_ASSERT(ret == RT_EOK);
 
+        if (psVpost->layer == eVpost_LCD)
+        {
+            rt_hw_interrupt_install(psVpost->irqn, nu_vpost_isr,  psVpost, psVpost->name);
+            rt_hw_interrupt_umask(psVpost->irqn);
+        }
+
         rt_kprintf("%s's fbmem at 0x%08x.\n", psVpost->name, psVpost->info.framebuffer);
     }
 

+ 16 - 2
bsp/nuvoton/libraries/nu_packages/ILI9341/lcd_ili9341.c

@@ -17,6 +17,10 @@
 #include <rtdevice.h>
 #include <lcd_ili9341.h>
 
+#if defined(NU_PKG_ILI9341_WITH_OFFSCREEN_FRAMEBUFFER)
+    #define DEF_VRAM_BUFFER_NUMBER  2
+#endif
+
 static struct rt_device_graphic_info g_Ili9341Info =
 {
     .bits_per_pixel = 16,
@@ -270,8 +274,18 @@ static rt_err_t ili9341_lcd_control(rt_device_t dev, int cmd, void *args)
     case RTGRAPHIC_CTRL_RECT_UPDATE:
     {
 #if defined(NU_PKG_ILI9341_WITH_OFFSCREEN_FRAMEBUFFER)
+        struct rt_device_rect_info *psRectInfo = args;
+        rt_uint16_t *pixels  = (rt_uint16_t *)g_Ili9341Info.framebuffer;
         RT_ASSERT(args != RT_NULL);
-        ili9341_fillrect((uint16_t *)g_Ili9341Info.framebuffer, (struct rt_device_rect_info *) args);
+
+        if (psRectInfo->y >= g_Ili9341Info.height)
+        {
+            int buf_id = psRectInfo->y / g_Ili9341Info.height;
+            pixels += g_Ili9341Info.width * g_Ili9341Info.height * buf_id;
+            psRectInfo->y %= g_Ili9341Info.height;
+        }
+
+        ili9341_fillrect(pixels, psRectInfo);
 #else
         /* nothong to be done */
 #endif
@@ -310,7 +324,7 @@ int rt_hw_lcd_ili9341_init(void)
     lcd_device.user_data = &ili9341_ops;
 
 #if defined(NU_PKG_ILI9341_WITH_OFFSCREEN_FRAMEBUFFER)
-    g_Ili9341Info.framebuffer = rt_malloc_align(g_Ili9341Info.bits_per_pixel / 2 * g_Ili9341Info.height * g_Ili9341Info.width, 32);
+    g_Ili9341Info.framebuffer = rt_malloc_align((DEF_VRAM_BUFFER_NUMBER * g_Ili9341Info.width * g_Ili9341Info.height * (g_Ili9341Info.bits_per_pixel / 8)) + 32, 32);
     RT_ASSERT(g_Ili9341Info.framebuffer != RT_NULL);
 #endif
 

+ 11 - 1
bsp/nuvoton/nk-980iot/applications/SConscript

@@ -3,9 +3,19 @@
 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)
 
-Return('group')
+objs = objs + group
+
+Return('objs')
+

+ 17 - 0
bsp/nuvoton/nk-980iot/applications/lvgl/SConscript

@@ -0,0 +1,17 @@
+Import('RTT_ROOT')
+from building import *
+
+import os
+
+objs = []
+
+if GetDepend('PKG_USING_LVGL'):
+    cwd = GetCurrentDir()
+    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')
+

+ 10 - 0
bsp/nuvoton/nk-980iot/applications/lvgl/port/SConscript

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

+ 31 - 0
bsp/nuvoton/nk-980iot/applications/lvgl/port/lv_conf.h

@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author        Notes
+ * 2021-10-18     Meco Man      First version
+ */
+
+#ifndef LV_CONF_H
+#define LV_CONF_H
+
+//#define LV_USE_EXTERNAL_RENDERER  1
+
+#define LV_USE_PERF_MONITOR     1
+#define LV_COLOR_DEPTH          16
+
+#define LV_HOR_RES_MAX          (320)
+#define LV_VER_RES_MAX          (240)
+
+
+#define LV_USE_DEMO_RTT_MUSIC           1
+#define LV_USE_DEMO_MUSIC               1
+#define LV_FONT_MONTSERRAT_12           1
+#define LV_FONT_MONTSERRAT_16           1
+#define LV_DEMO_MUSIC_AUTO_PLAY         1
+#define LV_DEMO_RTT_MUSIC_AUTO_PLAY     1
+
+//#define CONFIG_LV_LOG_LEVEL LV_LOG_LEVEL_TRACE
+#endif

+ 50 - 0
bsp/nuvoton/nk-980iot/applications/lvgl/port/lv_demo.c

@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author        Notes
+ * 2021-10-17     Meco Man      First version
+ */
+#include <rtthread.h>
+#include <lvgl.h>
+#include <lv_port_indev.h>
+#define DBG_TAG    "LVGL"
+#define DBG_LVL    DBG_INFO
+#include <rtdbg.h>
+
+#ifndef LV_THREAD_STACK_SIZE
+    #define LV_THREAD_STACK_SIZE 10240
+#endif
+
+#ifndef LV_THREAD_PRIO
+    #define LV_THREAD_PRIO 20
+#endif
+
+static void lvgl_thread(void *parameter)
+{
+    extern void lv_demo_music(void);
+    lv_demo_music();
+
+    while (1)
+    {
+        lv_task_handler();
+        rt_thread_mdelay(1);
+    }
+}
+
+static int lvgl_demo_init(void)
+{
+    rt_thread_t tid;
+
+    tid = rt_thread_create("LVGL", lvgl_thread, RT_NULL, LV_THREAD_STACK_SIZE, LV_THREAD_PRIO, 10);
+    if (tid == RT_NULL)
+    {
+        LOG_E("Fail to create 'LVGL' thread");
+    }
+    rt_thread_startup(tid);
+
+    return 0;
+}
+INIT_APP_EXPORT(lvgl_demo_init);

+ 105 - 0
bsp/nuvoton/nk-980iot/applications/lvgl/port/lv_port_disp.c

@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2006-2021, 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;
+
+    if ((uint32_t)info.framebuffer != (uint32_t)color_p)
+    {
+        rect.y += info.height;
+    }
+
+    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 *buf_1 = 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)
+    {
+        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);
+
+    buf_1 = (void *)info.framebuffer;
+    rt_kprintf("lv buf_1=%08x\n", buf_1);
+
+    /*Initialize `disp_buf` with the buffer(s).*/
+    lv_disp_draw_buf_init(&disp_buf, buf_1, NULL, info.width * info.height);
+
+    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;
+    //disp_drv.full_refresh = 1;
+
+    /*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/nk-980iot/applications/lvgl/port/lv_port_disp.h

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

+ 58 - 0
bsp/nuvoton/nk-980iot/applications/lvgl/port/lv_port_indev.c

@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2021-10-18     Meco Man     The first version
+ */
+#include <lvgl.h>
+#include <stdbool.h>
+#include <rtdevice.h>
+#include "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 littlevgl2rtt_send_input_event(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_DOWN:
+        last_x = x;
+        last_y = y;
+        last_state = LV_INDEV_STATE_PRESSED;
+        break;
+    case RT_TOUCH_EVENT_MOVE:
+        last_x = x;
+        last_y = y;
+        break;
+    }
+}
+
+
+lv_indev_t *button_indev;
+
+void lv_port_indev_init(void)
+{
+    static lv_indev_drv_t indev_drv;
+
+    lv_indev_drv_init(&indev_drv);      /*Basic initialization*/
+    indev_drv.type = LV_INDEV_TYPE_POINTER;
+    indev_drv.read_cb = input_read;
+
+    /*Register the driver in LVGL and save the created input device object*/
+    button_indev = lv_indev_drv_register(&indev_drv);
+}

+ 28 - 0
bsp/nuvoton/nk-980iot/applications/lvgl/port/lv_port_indev.h

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

+ 133 - 87
bsp/nuvoton/nk-n9h30/.config

@@ -415,6 +415,7 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_AT_DEVICE is not set
 # CONFIG_PKG_USING_ATSRV_SOCKET is not set
 # CONFIG_PKG_USING_WIZNET is not set
+# CONFIG_PKG_USING_ZB_COORDINATOR is not set
 
 #
 # IoT Cloud
@@ -455,12 +456,18 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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
 
 #
 # security packages
 #
 # CONFIG_PKG_USING_MBEDTLS is not set
-# CONFIG_PKG_USING_libsodium is not set
+# CONFIG_PKG_USING_LIBSODIUM 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
@@ -471,36 +478,51 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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
 
 #
 # 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_ENABLE_LOG is not set
+# CONFIG_PKG_USING_LVGL_LATEST_VERSION is not set
+CONFIG_PKG_USING_LVGL_V810=y
+CONFIG_PKG_LVGL_VER="v8.1.0"
+# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
+CONFIG_PKG_USING_LV_MUSIC_DEMO=y
+CONFIG_PKG_LV_MUSIC_DEMO_PATH="/packages/multimedia/LVGL/lv_music_demo"
+CONFIG_PKG_USING_LV_MUSIC_DEMO_LATEST_VERSION=y
+CONFIG_PKG_LV_MUSIC_DEMO_VER="latest"
+
+#
+# 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=y
-CONFIG_PKG_WAVPLAYER_PATH="/packages/multimedia/wavplayer"
-CONFIG_PKG_WP_USING_PLAY=y
-CONFIG_PKG_WP_PLAY_DEVICE="sound0"
-CONFIG_PKG_WP_USING_RECORD=y
-CONFIG_PKG_WP_RECORD_DEVICE="sound0"
-# CONFIG_PKG_USING_WAVPLAYER_V020 is not set
-CONFIG_PKG_USING_WAVPLAYER_LATEST_VERSION=y
-CONFIG_PKG_WAVPLAYER_VER="latest"
+# 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=y
-CONFIG_PKG_NUEMWIN_PATH="/packages/multimedia/NUemWin"
-CONFIG_PKG_NUEMWIN_MEM_SIZE=4
-CONFIG_PKG_USING_NUEMWIN_EXAMPLE=y
-CONFIG_PKG_USING_NUEMWIN_GUIDEMO=y
-# CONFIG_PKG_USING_NUEMWIN_SIMPLEDEMO is not set
-CONFIG_PKG_USING_NUEMWIN_LATEST_VERSION=y
-CONFIG_PKG_NUEMWIN_VER="latest"
-CONFIG_PKG_NUEMWIN_VER_NUM=0x99999
+# 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
 
 #
 # tools packages
@@ -509,6 +531,7 @@ CONFIG_PKG_NUEMWIN_VER_NUM=0x99999
 # 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_QRCODE is not set
 # CONFIG_PKG_USING_ULOG_EASYFLASH is not set
@@ -524,10 +547,60 @@ CONFIG_PKG_NUEMWIN_VER_NUM=0x99999
 # 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
 
 #
 # 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_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_RT_USING_ARDUINO is not set
 # CONFIG_PKG_USING_GUIENGINE is not set
 # CONFIG_PKG_USING_PERSIMMON is not set
 # CONFIG_PKG_USING_CAIRO is not set
@@ -551,32 +624,6 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # CONFIG_PKG_USING_FLASHDB is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
-CONFIG_PKG_USING_LITTLEVGL2RTT=y
-CONFIG_PKG_LITTLEVGL2RTT_PATH="/packages/system/LittlevGL2RTT"
-CONFIG_PKG_USING_LITTLEVGL2RTT_V001=y
-# CONFIG_PKG_USING_LITTLEVGL2RTT_LATEST_VERSION is not set
-CONFIG_PKG_LITTLEVGL2RTT_VER="v0.0.1"
-
-#
-# LittlevGL2RTT Options
-#
-# CONFIG_LV_MEM_STATIC is not set
-CONFIG_LV_MEM_DYNAMIC=y
-CONFIG_LV_MEM_CUSTOM=1
-# CONFIG_LV_COLOR_DEPTH_1 is not set
-# CONFIG_LV_COLOR_DEPTH_8 is not set
-# CONFIG_LV_COLOR_DEPTH_16 is not set
-# CONFIG_LV_COLOR_DEPTH_24 is not set
-CONFIG_LV_COLOR_DEPTH_32=y
-CONFIG_LV_COLOR_DEPTH=32
-CONFIG_LV_HOR_RES=800
-CONFIG_LV_VER_RES=480
-CONFIG_LV_DPI=50
-CONFIG_LV_GC_DISABLE=y
-# CONFIG_LV_GC_ENABLE is not set
-CONFIG_LV_ENABLE_GC=0
-CONFIG_LITTLEVGL2RTT_USING_DEMO=y
-# CONFIG_PKG_USING_CMSIS is not set
 # CONFIG_PKG_USING_DFS_YAFFS is not set
 # CONFIG_PKG_USING_LITTLEFS is not set
 # CONFIG_PKG_USING_DFS_JFFS2 is not set
@@ -595,26 +642,16 @@ CONFIG_PKG_USING_RAMDISK_LATEST_VERSION=y
 CONFIG_PKG_RAMDISK_VER="latest"
 # CONFIG_PKG_USING_MININI is not set
 # CONFIG_PKG_USING_QBOOT 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_PPOOL is not set
 # CONFIG_PKG_USING_OPENAMP is not set
-# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
-# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
-# 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
 # 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_WCWIDTH is not set
+# CONFIG_PKG_USING_MCUBOOT is not set
+# CONFIG_PKG_USING_TINYUSB is not set
+# CONFIG_PKG_USING_USB_STACK is not set
 
 #
 # peripheral libraries and drivers
@@ -626,7 +663,6 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # CONFIG_PKG_USING_AS7341 is not set
 # CONFIG_PKG_USING_STM32_SDIO is not set
 # CONFIG_PKG_USING_ICM20608 is not set
-# CONFIG_PKG_USING_U8G2 is not set
 # CONFIG_PKG_USING_BUTTON is not set
 # CONFIG_PKG_USING_PCF8574 is not set
 # CONFIG_PKG_USING_SX12XX is not set
@@ -639,7 +675,6 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK is not set
 # CONFIG_PKG_USING_INFRARED is not set
-# CONFIG_PKG_USING_ROSSERIAL is not set
 # CONFIG_PKG_USING_AGILE_BUTTON is not set
 # CONFIG_PKG_USING_AGILE_LED is not set
 # CONFIG_PKG_USING_AT24CXX is not set
@@ -683,6 +718,16 @@ CONFIG_PKG_RAMDISK_VER="latest"
 # 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_BL_MCU_SDK is not set
+# CONFIG_PKG_USING_SOFT_SERIAL is not set
+# CONFIG_PKG_USING_MB85RS16 is not set
 
 #
 # AI packages
@@ -700,12 +745,29 @@ CONFIG_PKG_RAMDISK_VER="latest"
 #
 # miscellaneous packages
 #
+
+#
+# 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_LIBCSV is not set
-CONFIG_PKG_USING_OPTPARSE=y
-CONFIG_PKG_OPTPARSE_PATH="/packages/misc/optparse"
-CONFIG_PKG_USING_OPTPARSE_LATEST_VERSION=y
-CONFIG_PKG_OPTPARSE_VER="latest"
-# CONFIG_OPTPARSE_USING_DEMO 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
@@ -714,42 +776,25 @@ CONFIG_PKG_OPTPARSE_VER="latest"
 # 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_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
-
-#
-# samples: kernel and components samples
-#
-# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
-# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
-# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
-# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
 # CONFIG_PKG_USING_HELLO is not set
 # CONFIG_PKG_USING_VI is not set
-# CONFIG_PKG_USING_VI_LATEST_VERSION is not set
 # CONFIG_PKG_USING_KI is not set
 # CONFIG_PKG_USING_ARMv7M_DWT is not set
 # CONFIG_PKG_USING_VT100 is not set
 # CONFIG_PKG_USING_UKAL is not set
 # CONFIG_PKG_USING_CRCLIB is not set
-
-#
-# entertainment: terminal games and other interesting software packages
-#
-# 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_ACLOCK is not set
 # CONFIG_PKG_USING_LWGPS is not set
 # CONFIG_PKG_USING_STATE_MACHINE is not set
 # CONFIG_PKG_USING_MCURSES is not set
 # CONFIG_PKG_USING_COWSAY is not set
+# CONFIG_PKG_USING_TERMBOX is not set
 
 #
 # Nuvoton Packages Config
@@ -821,7 +866,8 @@ CONFIG_BSP_USING_I2C=y
 CONFIG_BSP_USING_I2C0=y
 # CONFIG_BSP_USING_I2C1 is not set
 CONFIG_BSP_USING_SDH=y
-# CONFIG_BSP_USING_SDH0 is not set
+# CONFIG_BSP_USING_EMMC is not set
+CONFIG_BSP_USING_SDH0=y
 CONFIG_BSP_USING_SDH1=y
 CONFIG_NU_SDH_HOTPLUG=y
 # CONFIG_NU_SDH_MOUNT_ON_ROOT is not set

+ 11 - 1
bsp/nuvoton/nk-n9h30/applications/SConscript

@@ -3,9 +3,19 @@
 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)
 
-Return('group')
+objs = objs + group
+
+Return('objs')
+

+ 17 - 0
bsp/nuvoton/nk-n9h30/applications/lvgl/SConscript

@@ -0,0 +1,17 @@
+Import('RTT_ROOT')
+from building import *
+
+import os
+
+objs = []
+
+if GetDepend('PKG_USING_LVGL'):
+    cwd = GetCurrentDir()
+    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')
+

+ 10 - 0
bsp/nuvoton/nk-n9h30/applications/lvgl/port/SConscript

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

+ 32 - 0
bsp/nuvoton/nk-n9h30/applications/lvgl/port/lv_conf.h

@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author        Notes
+ * 2021-10-18     Meco Man      First version
+ */
+
+#ifndef LV_CONF_H
+#define LV_CONF_H
+
+//#define LV_USE_EXTERNAL_RENDERER  1
+#define LV_USE_GPU_N9H30_GE2D   1
+
+//#define LV_USE_PERF_MONITOR     1
+#define LV_COLOR_DEPTH          32
+
+#define LV_HOR_RES_MAX          (800)
+#define LV_VER_RES_MAX          (480)
+
+
+#define LV_USE_DEMO_RTT_MUSIC           1
+#define LV_USE_DEMO_MUSIC               1
+#define LV_FONT_MONTSERRAT_12           1
+#define LV_FONT_MONTSERRAT_16           1
+#define LV_DEMO_MUSIC_AUTO_PLAY         1
+#define LV_DEMO_RTT_MUSIC_AUTO_PLAY     1
+
+//#define CONFIG_LV_LOG_LEVEL LV_LOG_LEVEL_TRACE
+#endif

+ 51 - 0
bsp/nuvoton/nk-n9h30/applications/lvgl/port/lv_demo.c

@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author        Notes
+ * 2021-10-17     Meco Man      First version
+ */
+#include <rtthread.h>
+#include <lvgl.h>
+#include <lv_port_indev.h>
+#define DBG_TAG    "LVGL"
+#define DBG_LVL    DBG_INFO
+#include <rtdbg.h>
+
+#ifndef LV_THREAD_STACK_SIZE
+    #define LV_THREAD_STACK_SIZE 10240
+#endif
+
+#ifndef LV_THREAD_PRIO
+    #define LV_THREAD_PRIO 20
+#endif
+
+static void lvgl_thread(void *parameter)
+{
+    extern void lv_demo_music(void);
+    lv_demo_music();
+
+    while (1)
+    {
+        lv_task_handler();
+        rt_thread_mdelay(1);
+    }
+}
+
+static int lvgl_demo(void)
+{
+    rt_thread_t tid;
+
+    tid = rt_thread_create("LVGL", lvgl_thread, RT_NULL, LV_THREAD_STACK_SIZE, LV_THREAD_PRIO, 10);
+    if (tid == RT_NULL)
+    {
+        LOG_E("Fail to create 'LVGL' thread");
+    }
+    rt_thread_startup(tid);
+
+    return 0;
+}
+INIT_APP_EXPORT(lvgl_demo);
+//MSH_CMD_EXPORT(lvgl_demo, start lvgl music demo);

+ 133 - 0
bsp/nuvoton/nk-n9h30/applications/lvgl/port/lv_port_disp.c

@@ -0,0 +1,133 @@
+/*
+ * Copyright (c) 2006-2021, 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 rt_device_t lcd_device = 0;
+static struct rt_device_graphic_info info;
+static lv_disp_drv_t disp_drv;  /*Descriptor of a display driver*/
+
+extern void ge2dInit(int bpp, int width, int height, void *destination);
+extern void ge2dSpriteBlt_Screen(int destx, int desty, int sprite_width, int sprite_height, void *buf);
+extern int ge2dBitblt_SetAlphaMode(int opt, int ks, int kd);
+extern void ge2dSpriteBltx_Screen(int x, int y, int sprite_sx, int sprite_sy, int width, int height, int sprite_width, int sprite_height, void *buf);
+extern void ge2dClip_SetClip(int x1, int y1, int x2, int y2);
+extern void ge2dFill_Solid_RGB565(int dx, int dy, int width, int height, int color);
+extern void ge2dFill_Solid(int dx, int dy, int width, int height, int color);
+
+static void lcd_fb_flush(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p)
+{
+    /* Use ping-pong buffer updating without memory-copy. */
+    rt_device_control(lcd_device, RTGRAPHIC_CTRL_RECT_UPDATE, color_p);
+
+    lv_disp_flush_ready(disp_drv);
+}
+
+void ge2d_fill_cb(struct _lv_disp_drv_t *disp_drv, lv_color_t *dest_buf, lv_coord_t dest_width,
+                  const lv_area_t *fill_area, lv_color_t color)
+{
+    int32_t act_x1 = fill_area->x1 < 0 ? 0 : fill_area->x1;
+    int32_t act_y1 = fill_area->y1 < 0 ? 0 : fill_area->y1;
+    int32_t act_x2 = fill_area->x2 > info.width - 1 ? info.width - 1 : fill_area->x2;
+    int32_t act_y2 = fill_area->y2 > info.height - 1 ? info.height - 1 : fill_area->y2;
+    int32_t fill_area_w = act_x2 - act_x1 + 1;
+    int32_t fill_area_h = act_y2 - act_y1 + 1;
+
+    // Enter GE2D ->
+    ge2dInit(sizeof(lv_color_t) * 8, info.width, info.height, (void *)dest_buf);
+    ge2dClip_SetClip(act_x1, act_y1, act_x2, act_y2);
+    if (sizeof(lv_color_t) == 4)
+    {
+        ge2dFill_Solid(act_x1, act_y1, fill_area_w, fill_area_h, color.full);
+    }
+    else if (sizeof(lv_color_t) == 2)
+    {
+        ge2dFill_Solid_RGB565(act_x1, act_y1, fill_area_w, fill_area_h, color.full);
+    }
+    ge2dClip_SetClip(-1, 0, 0, 0);
+    // -> Leave GE2D
+}
+
+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 *buf_1 = RT_NULL;
+    void *buf_2 = 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)
+    {
+        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);
+
+    buf_1 = (void *)info.framebuffer;
+    rt_kprintf("lv buf_1=%08x\n", buf_1);
+
+    buf_2 = (void *)((uint32_t)info.framebuffer + info.height * info.width * info.bits_per_pixel / 8);
+    rt_kprintf("lv buf_2=%08x\n", buf_2);
+
+    /*Initialize `disp_buf` with the buffer(s).*/
+    lv_disp_draw_buf_init(&disp_buf, buf_1, buf_2, info.width * info.height);
+
+    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;
+    disp_drv.full_refresh = 1;
+
+    /*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;
+
+    /*Fill a memory with a color (GPU only)*/
+    disp_drv.gpu_fill_cb = ge2d_fill_cb;
+
+    /* 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/nk-n9h30/applications/lvgl/port/lv_port_disp.h

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

+ 59 - 0
bsp/nuvoton/nk-n9h30/applications/lvgl/port/lv_port_indev.c

@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2021-10-18     Meco Man     The first version
+ * 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 littlevgl2rtt_send_input_event(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_DOWN:
+        last_x = x;
+        last_y = y;
+        last_state = LV_INDEV_STATE_PRESSED;
+        break;
+    case RT_TOUCH_EVENT_MOVE:
+        last_x = x;
+        last_y = y;
+        break;
+    }
+}
+
+
+lv_indev_t *button_indev;
+
+void lv_port_indev_init(void)
+{
+    static lv_indev_drv_t indev_drv;
+
+    lv_indev_drv_init(&indev_drv);      /*Basic initialization*/
+    indev_drv.type = LV_INDEV_TYPE_POINTER;
+    indev_drv.read_cb = input_read;
+
+    /*Register the driver in LVGL and save the created input device object*/
+    button_indev = lv_indev_drv_register(&indev_drv);
+}

+ 28 - 0
bsp/nuvoton/nk-n9h30/applications/lvgl/port/lv_port_indev.h

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

+ 1 - 6
bsp/nuvoton/nk-n9h30/board/board_dev.c

@@ -259,12 +259,7 @@ int rt_hw_lcm_port(void)
     }
 #endif
 
-#if defined(RT_USING_PIN)
-    /* set LCM_BLEN pin mode to output */
-    rt_pin_mode(LCM_BLEN, PIN_MODE_OUTPUT);
-    rt_pin_write(LCM_BLEN, PIN_HIGH);
-#endif
-
+    /* Use PWM to control backlight. */
     LCMLightOn();
 
     return 0;

+ 257 - 62
bsp/nuvoton/numaker-iot-m487/.config

@@ -7,6 +7,7 @@
 # RT-Thread Kernel
 #
 CONFIG_RT_NAME_MAX=8
+# CONFIG_RT_USING_BIG_ENDIAN is not set
 # CONFIG_RT_USING_ARCH_DATA_TYPE is not set
 # CONFIG_RT_USING_SMP is not set
 CONFIG_RT_ALIGN_SIZE=4
@@ -21,6 +22,13 @@ 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_ASM_MEMCPY is not set
 CONFIG_RT_DEBUG=y
 CONFIG_RT_DEBUG_COLOR=y
 # CONFIG_RT_DEBUG_INIT_CONFIG is not set
@@ -52,6 +60,7 @@ CONFIG_RT_USING_MEMPOOL=y
 # CONFIG_RT_USING_NOHEAP is not set
 CONFIG_RT_USING_SMALL_MEM=y
 # CONFIG_RT_USING_SLAB is not set
+# CONFIG_RT_USING_USERHEAP is not set
 # CONFIG_RT_USING_MEMTRACE is not set
 CONFIG_RT_USING_HEAP=y
 
@@ -64,7 +73,8 @@ 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=0x40002
+# CONFIG_RT_PRINTF_LONGLONG is not set
+CONFIG_RT_VER_NUM=0x40004
 CONFIG_ARCH_ARM=y
 CONFIG_RT_USING_CPU_FFS=y
 CONFIG_ARCH_ARM_CORTEX_M=y
@@ -88,19 +98,19 @@ CONFIG_RT_MAIN_THREAD_PRIORITY=10
 # Command shell
 #
 CONFIG_RT_USING_FINSH=y
+CONFIG_RT_USING_MSH=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_THREAD_PRIORITY=20
-CONFIG_FINSH_THREAD_STACK_SIZE=2048
-CONFIG_FINSH_CMD_SIZE=80
 # CONFIG_FINSH_USING_AUTH is not set
-CONFIG_FINSH_USING_MSH=y
-CONFIG_FINSH_USING_MSH_DEFAULT=y
-# CONFIG_FINSH_USING_MSH_ONLY is not set
 CONFIG_FINSH_ARG_MAX=10
 
 #
@@ -124,16 +134,20 @@ CONFIG_RT_DFS_ELM_WORD_ACCESS=y
 # 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_UFFS is not set
-# CONFIG_RT_USING_DFS_JFFS2 is not set
 
 #
 # Device Drivers
@@ -144,6 +158,8 @@ 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=2048
 CONFIG_RT_USING_CAN=y
@@ -154,8 +170,10 @@ 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
@@ -163,9 +181,6 @@ CONFIG_RT_USING_PM=y
 CONFIG_RT_USING_RTC=y
 # CONFIG_RT_USING_ALARM is not set
 # CONFIG_RT_USING_SOFT_RTC is not set
-CONFIG_RTC_SYNC_USING_NTP=y
-CONFIG_RTC_NTP_FIRST_SYNC_DELAY=30
-CONFIG_RTC_NTP_SYNC_PERIOD=3600
 # CONFIG_RT_USING_SDIO is not set
 CONFIG_RT_USING_SPI=y
 CONFIG_RT_USING_QSPI=y
@@ -226,9 +241,11 @@ CONFIG_RT_HWCRYPTO_USING_CRC_04C11DB7=y
 #
 # 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
@@ -250,12 +267,16 @@ CONFIG_RT_USB_DEVICE_HID_MOUSE=y
 # POSIX layer and C standard library
 #
 CONFIG_RT_USING_LIBC=y
+CONFIG_RT_LIBC_USING_TIME=y
+# CONFIG_RT_LIBC_USING_FILEIO is not set
+# CONFIG_RT_USING_MODULE is not set
+CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_RT_USING_PTHREADS is not set
 CONFIG_RT_USING_POSIX=y
 # CONFIG_RT_USING_POSIX_MMAP is not set
 # CONFIG_RT_USING_POSIX_TERMIOS is not set
+# CONFIG_RT_USING_POSIX_GETLINE is not set
 # CONFIG_RT_USING_POSIX_AIO is not set
-# CONFIG_RT_USING_MODULE is not set
 
 #
 # Network
@@ -265,6 +286,7 @@ CONFIG_RT_USING_POSIX=y
 # Socket abstraction layer
 #
 CONFIG_RT_USING_SAL=y
+CONFIG_SAL_INTERNET_CHECK=y
 
 #
 # protocol stack implement
@@ -302,7 +324,7 @@ CONFIG_AT_USING_SOCKET=y
 CONFIG_AT_USING_CLI=y
 # CONFIG_AT_PRINT_RAW_CMD is not set
 CONFIG_AT_CMD_MAX_LEN=512
-CONFIG_AT_SW_VERSION_NUM=0x10300
+CONFIG_AT_SW_VERSION_NUM=0x10301
 
 #
 # VBUS(Virtual Software BUS)
@@ -317,8 +339,15 @@ CONFIG_AT_SW_VERSION_NUM=0x10300
 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_LWP is not set
 
+#
+# RT-Thread Utestcases
+#
+# CONFIG_RT_USING_UTESTCASES is not set
+
 #
 # RT-Thread online packages
 #
@@ -326,6 +355,7 @@ CONFIG_UTEST_THR_PRIORITY=20
 #
 # IoT - internet of things
 #
+# CONFIG_PKG_USING_LORAWAN_DRIVER is not set
 # CONFIG_PKG_USING_PAHOMQTT is not set
 # CONFIG_PKG_USING_UMQTT is not set
 # CONFIG_PKG_USING_WEBCLIENT is not set
@@ -359,20 +389,10 @@ 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 is not set
-CONFIG_PKG_NETUTILS_IPERF=y
-CONFIG_PKG_NETUTILS_NTP=y
-CONFIG_NETUTILS_NTP_TIMEZONE=8
-CONFIG_NETUTILS_NTP_HOSTNAME="cn.ntp.org.cn"
-CONFIG_NETUTILS_NTP_HOSTNAME2="ntp.rt-thread.org"
-CONFIG_NETUTILS_NTP_HOSTNAME3="edu.ntp.org.cn"
-# CONFIG_PKG_NETUTILS_TELNET is not set
-# CONFIG_PKG_USING_NETUTILS_V110 is not set
-# CONFIG_PKG_USING_NETUTILS_V100 is not set
-CONFIG_PKG_USING_NETUTILS_LATEST_VERSION=y
-CONFIG_PKG_NETUTILS_VER="latest"
+# CONFIG_PKG_USING_NETUTILS is not set
+# CONFIG_PKG_USING_NETUTILS_LATEST_VERSION is not set
+# CONFIG_PKG_USING_NETUTILS_V131 is not set
+# CONFIG_PKG_USING_NETUTILS_V130 is not set
 # CONFIG_PKG_USING_CMUX is not set
 # CONFIG_PKG_USING_PPP_DEVICE is not set
 CONFIG_PKG_USING_AT_DEVICE=y
@@ -397,6 +417,10 @@ CONFIG_AT_DEVICE_ESP8266_INIT_ASYN=y
 # 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
@@ -406,6 +430,7 @@ 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
@@ -414,7 +439,7 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # 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_IOTHUB 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
@@ -426,8 +451,6 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # 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_ONNX_PARSER is not set
-# CONFIG_PKG_USING_ONNX_BACKEND 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
@@ -436,6 +459,24 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # CONFIG_PKG_USING_CAPNP is not set
 # CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
 # CONFIG_PKG_USING_AGILE_TELNET is not set
+# CONFIG_PKG_USING_NMEALIB is not set
+# CONFIG_PKG_USING_AGILE_JSMN 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_RAPIDJSON 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
 
 #
 # security packages
@@ -444,6 +485,7 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # CONFIG_PKG_USING_libsodium 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
@@ -451,23 +493,44 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # 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
 
 #
 # 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
+
+#
+# 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=y
-CONFIG_PKG_WAVPLAYER_PATH="/packages/multimedia/wavplayer"
-CONFIG_PKG_WP_USING_PLAY=y
-CONFIG_PKG_WP_PLAY_DEVICE="sound0"
-CONFIG_PKG_WP_USING_RECORD=y
-CONFIG_PKG_WP_RECORD_DEVICE="sound0"
+# CONFIG_PKG_USING_WAVPLAYER is not set
 # CONFIG_PKG_USING_WAVPLAYER_V020 is not set
-CONFIG_PKG_USING_WAVPLAYER_LATEST_VERSION=y
-CONFIG_PKG_WAVPLAYER_VER="latest"
+# CONFIG_PKG_USING_WAVPLAYER_LATEST_VERSION 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
 
 #
 # tools packages
@@ -476,26 +539,80 @@ CONFIG_PKG_WAVPLAYER_VER="latest"
 # 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_QRCODE 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
 
 #
 # system packages
 #
+
+#
+# rt_kprintf: enhanced rt_kprintf packages
+#
+# 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_RT_MEMCPY_CM is not set
+# 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_5_AUX 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_GUIENGINE is not set
 # CONFIG_PKG_USING_PERSIMMON is not set
 # CONFIG_PKG_USING_CAIRO is not set
 # CONFIG_PKG_USING_PIXMAN is not set
-# CONFIG_PKG_USING_LWEXT4 is not set
 # CONFIG_PKG_USING_PARTITION is not set
 CONFIG_PKG_USING_FAL=y
 CONFIG_PKG_FAL_PATH="/packages/system/fal"
@@ -514,16 +631,30 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # CONFIG_PKG_USING_FLASHDB is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
-# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
-# CONFIG_PKG_USING_CMSIS is not set
 # CONFIG_PKG_USING_DFS_YAFFS is not set
 # CONFIG_PKG_USING_LITTLEFS is not set
+# CONFIG_PKG_USING_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_WCWIDTH is not set
+# CONFIG_PKG_USING_MCUBOOT is not set
+# CONFIG_PKG_USING_TINYUSB is not set
+# CONFIG_PKG_USING_USB_STACK is not set
 
 #
 # peripheral libraries and drivers
@@ -532,9 +663,9 @@ CONFIG_PKG_FAL_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_AS7341 is not set
 # CONFIG_PKG_USING_STM32_SDIO is not set
 # CONFIG_PKG_USING_ICM20608 is not set
-# CONFIG_PKG_USING_U8G2 is not set
 # CONFIG_PKG_USING_BUTTON is not set
 # CONFIG_PKG_USING_PCF8574 is not set
 # CONFIG_PKG_USING_SX12XX is not set
@@ -547,7 +678,6 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK is not set
 # CONFIG_PKG_USING_INFRARED is not set
-# CONFIG_PKG_USING_ROSSERIAL is not set
 # CONFIG_PKG_USING_AGILE_BUTTON is not set
 # CONFIG_PKG_USING_AGILE_LED is not set
 # CONFIG_PKG_USING_AT24CXX is not set
@@ -561,6 +691,7 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # 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
@@ -569,47 +700,105 @@ CONFIG_PKG_FAL_VER_NUM=0x99999
 # 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_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_BL_MCU_SDK is not set
+# CONFIG_PKG_USING_SOFT_SERIAL is not set
+# CONFIG_PKG_USING_MB85RS16 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
 #
+
+#
+# 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_LIBCSV is not set
-CONFIG_PKG_USING_OPTPARSE=y
-CONFIG_PKG_OPTPARSE_PATH="/packages/misc/optparse"
-CONFIG_PKG_USING_OPTPARSE_V100=y
+# CONFIG_PKG_USING_OPTPARSE is not set
 # CONFIG_PKG_USING_OPTPARSE_LATEST_VERSION is not set
-CONFIG_PKG_OPTPARSE_VER="v1.0.0"
-# CONFIG_OPTPARSE_USING_DEMO 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_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
-
-#
-# samples: kernel and components samples
-#
-# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
-# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
-# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
-# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
 # CONFIG_PKG_USING_HELLO is not set
 # CONFIG_PKG_USING_VI is not set
-# CONFIG_PKG_USING_NNOM is not set
-# CONFIG_PKG_USING_LIBANN is not set
-# CONFIG_PKG_USING_ELAPACK is not set
+# CONFIG_PKG_USING_KI is not set
 # CONFIG_PKG_USING_ARMv7M_DWT is not set
 # CONFIG_PKG_USING_VT100 is not set
-# CONFIG_PKG_USING_ULAPACK 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_MCURSES is not set
+# CONFIG_PKG_USING_COWSAY is not set
+# CONFIG_PKG_USING_TERMBOX is not set
 
 #
 # Nuvoton Packages Config
@@ -619,7 +808,10 @@ CONFIG_NU_PKG_USING_DEMO=y
 CONFIG_NU_PKG_USING_BMX055=y
 # CONFIG_NU_PKG_USING_MAX31875 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_SPINAND is not set
 
 #
 # Hardware Drivers Config
@@ -629,9 +821,10 @@ CONFIG_NU_PKG_USING_NAU88L25=y
 # On-chip Peripheral Drivers
 #
 CONFIG_SOC_SERIES_M480=y
-# CONFIG_BSP_USE_STDDRIVER_SOURCE is not set
+CONFIG_BSP_USE_STDDRIVER_SOURCE=y
 CONFIG_BSP_USING_PDMA=y
 CONFIG_NU_PDMA_MEMFUN_ACTOR_MAX=2
+CONFIG_NU_PDMA_SGTBL_POOL_SIZE=16
 CONFIG_BSP_USING_FMC=y
 CONFIG_BSP_USING_GPIO=y
 CONFIG_BSP_USING_CLK=y
@@ -679,6 +872,7 @@ CONFIG_BSP_USING_SDH0=y
 # CONFIG_BSP_USING_SDH1 is not set
 CONFIG_NU_SDH_USING_PDMA=y
 CONFIG_NU_SDH_HOTPLUG=y
+# CONFIG_NU_SDH_MOUNT_ON_ROOT is not set
 # CONFIG_BSP_USING_CAN is not set
 # CONFIG_BSP_USING_BPWM is not set
 # CONFIG_BSP_USING_EPWM is not set
@@ -720,6 +914,7 @@ 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
 
 #

+ 146 - 54
bsp/nuvoton/numaker-m032ki/.config

@@ -7,6 +7,7 @@
 # RT-Thread Kernel
 #
 CONFIG_RT_NAME_MAX=8
+# CONFIG_RT_USING_BIG_ENDIAN is not set
 # CONFIG_RT_USING_ARCH_DATA_TYPE is not set
 # CONFIG_RT_USING_SMP is not set
 CONFIG_RT_ALIGN_SIZE=4
@@ -29,6 +30,7 @@ CONFIG_RT_TIMER_THREAD_STACK_SIZE=512
 #
 # CONFIG_RT_KSERVICE_USING_STDLIB is not set
 # CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set
+# CONFIG_RT_USING_ASM_MEMCPY is not set
 CONFIG_RT_DEBUG=y
 # CONFIG_RT_DEBUG_COLOR is not set
 # CONFIG_RT_DEBUG_INIT_CONFIG is not set
@@ -73,6 +75,7 @@ CONFIG_RT_USING_DEVICE=y
 CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=256
 CONFIG_RT_CONSOLE_DEVICE_NAME="uart0"
+# CONFIG_RT_PRINTF_LONGLONG is not set
 CONFIG_RT_VER_NUM=0x40004
 CONFIG_ARCH_ARM=y
 # CONFIG_RT_USING_CPU_FFS is not set
@@ -97,19 +100,19 @@ CONFIG_RT_MAIN_THREAD_PRIORITY=10
 # Command shell
 #
 CONFIG_RT_USING_FINSH=y
+CONFIG_RT_USING_MSH=y
+CONFIG_FINSH_USING_MSH=y
 CONFIG_FINSH_THREAD_NAME="tshell"
+CONFIG_FINSH_THREAD_PRIORITY=20
+CONFIG_FINSH_THREAD_STACK_SIZE=4096
 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_THREAD_PRIORITY=20
-CONFIG_FINSH_THREAD_STACK_SIZE=4096
-CONFIG_FINSH_CMD_SIZE=80
 # CONFIG_FINSH_USING_AUTH is not set
-CONFIG_FINSH_USING_MSH=y
-CONFIG_FINSH_USING_MSH_DEFAULT=y
-# CONFIG_FINSH_USING_MSH_ONLY is not set
 CONFIG_FINSH_ARG_MAX=10
 
 #
@@ -133,6 +136,8 @@ CONFIG_RT_USING_DEVICE_IPC=y
 CONFIG_RT_PIPE_BUFSZ=512
 # CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set
 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=64
 # CONFIG_RT_USING_CAN is not set
@@ -164,18 +169,13 @@ CONFIG_RT_USING_WDT=y
 #
 # Using USB
 #
+CONFIG_RT_USING_USB=y
 # CONFIG_RT_USING_USB_HOST 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=y
-# CONFIG__RT_USB_DEVICE_NONE is not set
-# CONFIG__RT_USB_DEVICE_CDC is not set
-# CONFIG__RT_USB_DEVICE_MSTORAGE is not set
-# CONFIG__RT_USB_DEVICE_HID is not set
-# CONFIG__RT_USB_DEVICE_WINUSB is not set
-# CONFIG__RT_USB_DEVICE_AUDIO is not set
 # CONFIG_RT_USB_DEVICE_CDC is not set
 CONFIG_RT_USB_DEVICE_NONE=y
 # CONFIG_RT_USB_DEVICE_MSTORAGE is not set
@@ -191,14 +191,16 @@ CONFIG_RT_USB_DEVICE_HID_MOUSE=y
 # POSIX layer and C standard library
 #
 CONFIG_RT_USING_LIBC=y
+CONFIG_RT_LIBC_USING_TIME=y
+# CONFIG_RT_LIBC_USING_FILEIO is not set
+# CONFIG_RT_USING_MODULE is not set
+CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_RT_USING_PTHREADS is not set
 CONFIG_RT_USING_POSIX=y
 # CONFIG_RT_USING_POSIX_MMAP is not set
 # CONFIG_RT_USING_POSIX_TERMIOS is not set
 # CONFIG_RT_USING_POSIX_GETLINE is not set
 # CONFIG_RT_USING_POSIX_AIO is not set
-# CONFIG_RT_USING_MODULE is not set
-CONFIG_RT_LIBC_FIXED_TIMEZONE=8
 
 #
 # Network
@@ -237,12 +239,37 @@ CONFIG_RT_LIBC_FIXED_TIMEZONE=8
 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_LWP is not set
 
 #
 # RT-Thread Utestcases
 #
-# CONFIG_RT_USING_UTESTCASES is not set
+CONFIG_RT_USING_UTESTCASES=y
+
+#
+# Utest Self Testcase
+#
+CONFIG_UTEST_SELF_PASS_TC=y
+
+#
+# Kernel Testcase
+#
+# CONFIG_UTEST_IRQ_TC is not set
+# CONFIG_UTEST_SEMAPHORE_TC is not set
+# CONFIG_UTEST_EVENT_TC is not set
+# CONFIG_UTEST_TIMER_TC is not set
+# CONFIG_UTEST_MESSAGEQUEUE_TC is not set
+# CONFIG_UTEST_SIGNAL_TC is not set
+# CONFIG_UTEST_MUTEX_TC is not set
+# CONFIG_UTEST_MAILBOX_TC is not set
+# CONFIG_UTEST_THREAD_TC is not set
+
+#
+# Utest Serial Testcase
+#
+# CONFIG_UTEST_SERIAL_TC is not set
 
 #
 # RT-Thread online packages
@@ -291,6 +318,7 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_AT_DEVICE is not set
 # CONFIG_PKG_USING_ATSRV_SOCKET is not set
 # CONFIG_PKG_USING_WIZNET is not set
+# CONFIG_PKG_USING_ZB_COORDINATOR is not set
 
 #
 # IoT Cloud
@@ -331,12 +359,18 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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
 
 #
 # security packages
 #
 # CONFIG_PKG_USING_MBEDTLS is not set
-# CONFIG_PKG_USING_libsodium is not set
+# CONFIG_PKG_USING_LIBSODIUM 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
@@ -347,10 +381,24 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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
 
 #
 # 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
+
+#
+# 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
@@ -361,6 +409,15 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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
 
 #
 # tools packages
@@ -369,6 +426,7 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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_QRCODE is not set
 # CONFIG_PKG_USING_ULOG_EASYFLASH is not set
@@ -402,10 +460,42 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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
 
 #
 # 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_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_RT_USING_ARDUINO is not set
 # CONFIG_PKG_USING_GUIENGINE is not set
 # CONFIG_PKG_USING_CAIRO is not set
 # CONFIG_PKG_USING_PIXMAN is not set
@@ -414,8 +504,6 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_FLASHDB is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
-# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
-# CONFIG_PKG_USING_CMSIS is not set
 # CONFIG_PKG_USING_DFS_YAFFS is not set
 # CONFIG_PKG_USING_LITTLEFS is not set
 # CONFIG_PKG_USING_DFS_JFFS2 is not set
@@ -430,26 +518,16 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_RAMDISK is not set
 # CONFIG_PKG_USING_MININI is not set
 # CONFIG_PKG_USING_QBOOT 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_PPOOL is not set
 # CONFIG_PKG_USING_OPENAMP is not set
-# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
-# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
-# 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
 # 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_WCWIDTH is not set
+# CONFIG_PKG_USING_MCUBOOT is not set
+# CONFIG_PKG_USING_TINYUSB is not set
+# CONFIG_PKG_USING_USB_STACK is not set
 
 #
 # peripheral libraries and drivers
@@ -461,7 +539,6 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_AS7341 is not set
 # CONFIG_PKG_USING_STM32_SDIO is not set
 # CONFIG_PKG_USING_ICM20608 is not set
-# CONFIG_PKG_USING_U8G2 is not set
 # CONFIG_PKG_USING_BUTTON is not set
 # CONFIG_PKG_USING_PCF8574 is not set
 # CONFIG_PKG_USING_SX12XX is not set
@@ -474,7 +551,6 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK is not set
 # CONFIG_PKG_USING_INFRARED is not set
-# CONFIG_PKG_USING_ROSSERIAL is not set
 # CONFIG_PKG_USING_AGILE_BUTTON is not set
 # CONFIG_PKG_USING_AGILE_LED is not set
 # CONFIG_PKG_USING_AT24CXX is not set
@@ -518,6 +594,16 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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_BL_MCU_SDK is not set
+# CONFIG_PKG_USING_SOFT_SERIAL is not set
+# CONFIG_PKG_USING_MB85RS16 is not set
 
 #
 # AI packages
@@ -535,6 +621,27 @@ CONFIG_UTEST_THR_PRIORITY=20
 #
 # miscellaneous packages
 #
+
+#
+# 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_LIBCSV is not set
 # CONFIG_PKG_USING_OPTPARSE is not set
 # CONFIG_PKG_USING_FASTLZ is not set
@@ -545,20 +652,13 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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_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
-
-#
-# samples: kernel and components samples
-#
-# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
-# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
-# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
-# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
 # CONFIG_PKG_USING_HELLO is not set
 # CONFIG_PKG_USING_VI is not set
 # CONFIG_PKG_USING_KI is not set
@@ -566,20 +666,11 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_VT100 is not set
 # CONFIG_PKG_USING_UKAL is not set
 # CONFIG_PKG_USING_CRCLIB is not set
-
-#
-# entertainment: terminal games and other interesting software packages
-#
-# 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_ACLOCK is not set
 # CONFIG_PKG_USING_LWGPS is not set
 # CONFIG_PKG_USING_STATE_MACHINE is not set
 # CONFIG_PKG_USING_MCURSES is not set
 # CONFIG_PKG_USING_COWSAY is not set
+# CONFIG_PKG_USING_TERMBOX is not set
 
 #
 # Nuvoton Packages Config
@@ -590,6 +681,7 @@ CONFIG_NU_PKG_USING_DEMO=y
 # CONFIG_NU_PKG_USING_MAX31875 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
 # CONFIG_NU_PKG_USING_ILI9341 is not set
 # CONFIG_NU_PKG_USING_SPINAND is not set
 
@@ -601,7 +693,7 @@ CONFIG_NU_PKG_USING_DEMO=y
 # On-chip Peripheral Drivers
 #
 CONFIG_SOC_SERIES_M032=y
-# CONFIG_BSP_USE_STDDRIVER_SOURCE is not set
+CONFIG_BSP_USE_STDDRIVER_SOURCE=y
 CONFIG_BSP_USING_PDMA=y
 CONFIG_NU_PDMA_MEMFUN_ACTOR_MAX=4
 CONFIG_NU_PDMA_SGTBL_POOL_SIZE=16

+ 189 - 72
bsp/nuvoton/numaker-m2354/.config

@@ -7,6 +7,7 @@
 # RT-Thread Kernel
 #
 CONFIG_RT_NAME_MAX=8
+# CONFIG_RT_USING_BIG_ENDIAN is not set
 # CONFIG_RT_USING_ARCH_DATA_TYPE is not set
 # CONFIG_RT_USING_SMP is not set
 CONFIG_RT_ALIGN_SIZE=4
@@ -21,6 +22,13 @@ CONFIG_RT_USING_IDLE_HOOK=y
 CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
 CONFIG_IDLE_THREAD_STACK_SIZE=2048
 # 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_ASM_MEMCPY is not set
 CONFIG_RT_DEBUG=y
 CONFIG_RT_DEBUG_COLOR=y
 # CONFIG_RT_DEBUG_INIT_CONFIG is not set
@@ -65,7 +73,8 @@ 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=0x40003
+# CONFIG_RT_PRINTF_LONGLONG is not set
+CONFIG_RT_VER_NUM=0x40004
 # CONFIG_RT_USING_CPU_FFS is not set
 # CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set
 
@@ -86,19 +95,19 @@ CONFIG_RT_MAIN_THREAD_PRIORITY=10
 # Command shell
 #
 CONFIG_RT_USING_FINSH=y
+CONFIG_RT_USING_MSH=y
+CONFIG_FINSH_USING_MSH=y
 CONFIG_FINSH_THREAD_NAME="tshell"
+CONFIG_FINSH_THREAD_PRIORITY=20
+CONFIG_FINSH_THREAD_STACK_SIZE=4096
 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_THREAD_PRIORITY=20
-CONFIG_FINSH_THREAD_STACK_SIZE=4096
-CONFIG_FINSH_CMD_SIZE=80
 # CONFIG_FINSH_USING_AUTH is not set
-CONFIG_FINSH_USING_MSH=y
-CONFIG_FINSH_USING_MSH_DEFAULT=y
-# CONFIG_FINSH_USING_MSH_ONLY is not set
 CONFIG_FINSH_ARG_MAX=10
 
 #
@@ -132,11 +141,10 @@ CONFIG_RT_DFS_ELM_DRIVES=2
 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_UFFS is not set
-# CONFIG_RT_USING_DFS_JFFS2 is not set
 
 #
 # Device Drivers
@@ -147,6 +155,8 @@ 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=2048
 CONFIG_RT_USING_CAN=y
@@ -168,9 +178,6 @@ CONFIG_RT_USING_PM=y
 CONFIG_RT_USING_RTC=y
 # CONFIG_RT_USING_ALARM is not set
 # CONFIG_RT_USING_SOFT_RTC is not set
-CONFIG_RTC_SYNC_USING_NTP=y
-CONFIG_RTC_NTP_FIRST_SYNC_DELAY=30
-CONFIG_RTC_NTP_SYNC_PERIOD=3600
 # CONFIG_RT_USING_SDIO is not set
 CONFIG_RT_USING_SPI=y
 CONFIG_RT_USING_QSPI=y
@@ -231,9 +238,11 @@ CONFIG_RT_HWCRYPTO_USING_CRC_04C11DB7=y
 #
 # Using USB
 #
+CONFIG_RT_USING_USB=y
 CONFIG_RT_USING_USB_HOST=y
 CONFIG_RT_USBH_MSTORAGE=y
 CONFIG_UDISK_MOUNTPOINT="/"
+# 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
@@ -255,13 +264,16 @@ CONFIG_RT_USB_DEVICE_HID_MOUSE=y
 # POSIX layer and C standard library
 #
 CONFIG_RT_USING_LIBC=y
+CONFIG_RT_LIBC_USING_TIME=y
+# CONFIG_RT_LIBC_USING_FILEIO is not set
+# CONFIG_RT_USING_MODULE is not set
+CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_RT_USING_PTHREADS is not set
 CONFIG_RT_USING_POSIX=y
 # CONFIG_RT_USING_POSIX_MMAP is not set
 # CONFIG_RT_USING_POSIX_TERMIOS is not set
 # CONFIG_RT_USING_POSIX_GETLINE is not set
 # CONFIG_RT_USING_POSIX_AIO is not set
-# CONFIG_RT_USING_MODULE is not set
 
 #
 # Network
@@ -324,6 +336,13 @@ CONFIG_AT_SW_VERSION_NUM=0x10301
 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
+
+#
+# RT-Thread Utestcases
+#
+# CONFIG_RT_USING_UTESTCASES is not set
 
 #
 # RT-Thread online packages
@@ -366,21 +385,10 @@ 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 is not set
-CONFIG_PKG_NETUTILS_IPERF=y
-CONFIG_PKG_NETUTILS_NTP=y
-CONFIG_NETUTILS_NTP_TIMEZONE=8
-CONFIG_NETUTILS_NTP_HOSTNAME="time.stdtime.gov.tw"
-CONFIG_NETUTILS_NTP_HOSTNAME2="ntp.rt-thread.org"
-CONFIG_NETUTILS_NTP_HOSTNAME3="edu.ntp.org.cn"
-# CONFIG_PKG_NETUTILS_TELNET is not set
-# CONFIG_PKG_USING_NETUTILS_V120 is not set
-# CONFIG_PKG_USING_NETUTILS_V110 is not set
-# CONFIG_PKG_USING_NETUTILS_V100 is not set
-CONFIG_PKG_USING_NETUTILS_LATEST_VERSION=y
-CONFIG_PKG_NETUTILS_VER="latest"
+# CONFIG_PKG_USING_NETUTILS is not set
+# CONFIG_PKG_USING_NETUTILS_LATEST_VERSION is not set
+# CONFIG_PKG_USING_NETUTILS_V131 is not set
+# CONFIG_PKG_USING_NETUTILS_V130 is not set
 # CONFIG_PKG_USING_CMUX is not set
 # CONFIG_PKG_USING_PPP_DEVICE is not set
 CONFIG_PKG_USING_AT_DEVICE=y
@@ -408,11 +416,17 @@ CONFIG_AT_DEVICE_ESP8266_INIT_ASYN=y
 # 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
@@ -433,8 +447,6 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # 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_ONNX_PARSER is not set
-# CONFIG_PKG_USING_ONNX_BACKEND 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
@@ -449,6 +461,18 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # 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_RAPIDJSON 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
 
 #
 # security packages
@@ -465,18 +489,42 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # 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
 
 #
 # 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
+
+#
+# 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
 
 #
 # tools packages
@@ -485,6 +533,7 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # 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_QRCODE is not set
 # CONFIG_PKG_USING_ULOG_EASYFLASH is not set
@@ -507,14 +556,56 @@ CONFIG_PKG_AT_DEVICE_VER_NUM=0x99999
 # 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
 
 #
 # system packages
 #
+
+#
+# rt_kprintf: enhanced rt_kprintf packages
+#
+# 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_RT_MEMCPY_CM is not set
+# 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_5_AUX 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_GUIENGINE is not set
 # CONFIG_PKG_USING_CAIRO is not set
 # CONFIG_PKG_USING_PIXMAN is not set
-# CONFIG_PKG_USING_LWEXT4 is not set
 # CONFIG_PKG_USING_PARTITION is not set
 CONFIG_PKG_USING_FAL=y
 CONFIG_PKG_FAL_PATH="/packages/system/fal"
@@ -533,10 +624,11 @@ CONFIG_PKG_FAL_VER_NUM=0x00500
 # CONFIG_PKG_USING_FLASHDB is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
-# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
-# CONFIG_PKG_USING_CMSIS is not set
 # CONFIG_PKG_USING_DFS_YAFFS is not set
 # CONFIG_PKG_USING_LITTLEFS is not set
+# CONFIG_PKG_USING_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
@@ -546,23 +638,16 @@ CONFIG_PKG_FAL_VER_NUM=0x00500
 # CONFIG_PKG_USING_RAMDISK is not set
 # CONFIG_PKG_USING_MININI is not set
 # CONFIG_PKG_USING_QBOOT 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_PPOOL is not set
 # CONFIG_PKG_USING_OPENAMP is not set
-# CONFIG_PKG_USING_RT_PRINTF is not set
-# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
-# 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
+# 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_WCWIDTH is not set
+# CONFIG_PKG_USING_MCUBOOT is not set
+# CONFIG_PKG_USING_TINYUSB is not set
+# CONFIG_PKG_USING_USB_STACK is not set
 
 #
 # peripheral libraries and drivers
@@ -574,7 +659,6 @@ CONFIG_PKG_FAL_VER_NUM=0x00500
 # CONFIG_PKG_USING_AS7341 is not set
 # CONFIG_PKG_USING_STM32_SDIO is not set
 # CONFIG_PKG_USING_ICM20608 is not set
-# CONFIG_PKG_USING_U8G2 is not set
 # CONFIG_PKG_USING_BUTTON is not set
 # CONFIG_PKG_USING_PCF8574 is not set
 # CONFIG_PKG_USING_SX12XX is not set
@@ -587,7 +671,6 @@ CONFIG_PKG_FAL_VER_NUM=0x00500
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK is not set
 # CONFIG_PKG_USING_INFRARED is not set
-# CONFIG_PKG_USING_ROSSERIAL is not set
 # CONFIG_PKG_USING_AGILE_BUTTON is not set
 # CONFIG_PKG_USING_AGILE_LED is not set
 # CONFIG_PKG_USING_AT24CXX is not set
@@ -625,10 +708,60 @@ CONFIG_PKG_FAL_VER_NUM=0x00500
 # 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_BL_MCU_SDK is not set
+# CONFIG_PKG_USING_SOFT_SERIAL is not set
+# CONFIG_PKG_USING_MB85RS16 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
 #
+
+#
+# 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_LIBCSV is not set
 # CONFIG_PKG_USING_OPTPARSE is not set
 # CONFIG_PKG_USING_FASTLZ is not set
@@ -639,42 +772,25 @@ CONFIG_PKG_FAL_VER_NUM=0x00500
 # 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_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
-
-#
-# samples: kernel and components samples
-#
-# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
-# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
-# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
-# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
 # CONFIG_PKG_USING_HELLO is not set
 # CONFIG_PKG_USING_VI is not set
 # CONFIG_PKG_USING_KI is not set
-# CONFIG_PKG_USING_NNOM is not set
-# CONFIG_PKG_USING_LIBANN is not set
-# CONFIG_PKG_USING_ELAPACK is not set
 # CONFIG_PKG_USING_ARMv7M_DWT is not set
 # CONFIG_PKG_USING_VT100 is not set
-# CONFIG_PKG_USING_ULAPACK is not set
 # CONFIG_PKG_USING_UKAL is not set
 # CONFIG_PKG_USING_CRCLIB is not set
-
-#
-# games: games run on RT-Thread console
-#
-# 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_LWGPS is not set
-# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set
 # CONFIG_PKG_USING_STATE_MACHINE is not set
+# CONFIG_PKG_USING_MCURSES is not set
+# CONFIG_PKG_USING_COWSAY is not set
+# CONFIG_PKG_USING_TERMBOX is not set
 
 #
 # Nuvoton Packages Config
@@ -685,6 +801,7 @@ CONFIG_NU_PKG_USING_DEMO=y
 # CONFIG_NU_PKG_USING_MAX31875 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
 # CONFIG_NU_PKG_USING_ILI9341 is not set
 # CONFIG_NU_PKG_USING_SPINAND is not set
 
@@ -696,7 +813,7 @@ CONFIG_NU_PKG_USING_DEMO=y
 # On-chip Peripheral Drivers
 #
 CONFIG_SOC_SERIES_M2354=y
-# CONFIG_BSP_USE_STDDRIVER_SOURCE is not set
+CONFIG_BSP_USE_STDDRIVER_SOURCE=y
 CONFIG_BSP_USING_PDMA=y
 CONFIG_NU_PDMA_MEMFUN_ACTOR_MAX=2
 CONFIG_NU_PDMA_SGTBL_POOL_SIZE=16

+ 253 - 49
bsp/nuvoton/numaker-pfm-m487/.config

@@ -7,6 +7,7 @@
 # RT-Thread Kernel
 #
 CONFIG_RT_NAME_MAX=8
+# CONFIG_RT_USING_BIG_ENDIAN is not set
 # CONFIG_RT_USING_ARCH_DATA_TYPE is not set
 # CONFIG_RT_USING_SMP is not set
 CONFIG_RT_ALIGN_SIZE=4
@@ -21,6 +22,13 @@ 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_ASM_MEMCPY is not set
 CONFIG_RT_DEBUG=y
 CONFIG_RT_DEBUG_COLOR=y
 # CONFIG_RT_DEBUG_INIT_CONFIG is not set
@@ -52,6 +60,7 @@ CONFIG_RT_USING_MEMPOOL=y
 # CONFIG_RT_USING_NOHEAP is not set
 CONFIG_RT_USING_SMALL_MEM=y
 # CONFIG_RT_USING_SLAB is not set
+# CONFIG_RT_USING_USERHEAP is not set
 # CONFIG_RT_USING_MEMTRACE is not set
 CONFIG_RT_USING_HEAP=y
 
@@ -64,7 +73,8 @@ 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=0x40002
+# CONFIG_RT_PRINTF_LONGLONG is not set
+CONFIG_RT_VER_NUM=0x40004
 CONFIG_ARCH_ARM=y
 CONFIG_RT_USING_CPU_FFS=y
 CONFIG_ARCH_ARM_CORTEX_M=y
@@ -88,19 +98,19 @@ CONFIG_RT_MAIN_THREAD_PRIORITY=10
 # Command shell
 #
 CONFIG_RT_USING_FINSH=y
+CONFIG_RT_USING_MSH=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_THREAD_PRIORITY=20
-CONFIG_FINSH_THREAD_STACK_SIZE=2048
-CONFIG_FINSH_CMD_SIZE=80
 # CONFIG_FINSH_USING_AUTH is not set
-CONFIG_FINSH_USING_MSH=y
-CONFIG_FINSH_USING_MSH_DEFAULT=y
-# CONFIG_FINSH_USING_MSH_ONLY is not set
 CONFIG_FINSH_ARG_MAX=10
 
 #
@@ -124,16 +134,20 @@ CONFIG_RT_DFS_ELM_WORD_ACCESS=y
 # 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_UFFS is not set
-# CONFIG_RT_USING_DFS_JFFS2 is not set
 # CONFIG_RT_USING_DFS_NFS is not set
 
 #
@@ -145,6 +159,8 @@ 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=128
 CONFIG_RT_USING_CAN=y
@@ -155,8 +171,10 @@ 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
@@ -223,9 +241,11 @@ CONFIG_RT_HWCRYPTO_USING_CRC_04C11DB7=y
 #
 # 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
@@ -249,12 +269,16 @@ CONFIG_RT_USB_DEVICE_HID_MOUSE=y
 # POSIX layer and C standard library
 #
 CONFIG_RT_USING_LIBC=y
+CONFIG_RT_LIBC_USING_TIME=y
+# CONFIG_RT_LIBC_USING_FILEIO is not set
+# CONFIG_RT_USING_MODULE is not set
+CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 # CONFIG_RT_USING_PTHREADS is not set
 CONFIG_RT_USING_POSIX=y
 # CONFIG_RT_USING_POSIX_MMAP is not set
 # CONFIG_RT_USING_POSIX_TERMIOS is not set
+# CONFIG_RT_USING_POSIX_GETLINE is not set
 # CONFIG_RT_USING_POSIX_AIO is not set
-# CONFIG_RT_USING_MODULE is not set
 
 #
 # Network
@@ -264,6 +288,7 @@ CONFIG_RT_USING_POSIX=y
 # Socket abstraction layer
 #
 CONFIG_RT_USING_SAL=y
+CONFIG_SAL_INTERNET_CHECK=y
 
 #
 # protocol stack implement
@@ -291,8 +316,10 @@ CONFIG_NETDEV_IPV6=0
 CONFIG_RT_USING_LWIP=y
 # CONFIG_RT_USING_LWIP141 is not set
 CONFIG_RT_USING_LWIP202=y
-# CONFIG_RT_USING_LWIP210 is not set
+# CONFIG_RT_USING_LWIP203 is not set
+# CONFIG_RT_USING_LWIP212 is not set
 # 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
@@ -334,6 +361,7 @@ 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 is not set
 CONFIG_LWIP_NETIF_LOOPBACK=0
 # CONFIG_RT_LWIP_STATS is not set
@@ -360,8 +388,15 @@ CONFIG_RT_LWIP_USING_PING=y
 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_LWP is not set
 
+#
+# RT-Thread Utestcases
+#
+# CONFIG_RT_USING_UTESTCASES is not set
+
 #
 # RT-Thread online packages
 #
@@ -369,6 +404,7 @@ CONFIG_UTEST_THR_PRIORITY=20
 #
 # IoT - internet of things
 #
+# CONFIG_PKG_USING_LORAWAN_DRIVER is not set
 # CONFIG_PKG_USING_PAHOMQTT is not set
 # CONFIG_PKG_USING_UMQTT is not set
 # CONFIG_PKG_USING_WEBCLIENT is not set
@@ -408,6 +444,7 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_AT_DEVICE is not set
 # CONFIG_PKG_USING_ATSRV_SOCKET is not set
 # CONFIG_PKG_USING_WIZNET is not set
+# CONFIG_PKG_USING_ZB_COORDINATOR is not set
 
 #
 # IoT Cloud
@@ -416,7 +453,7 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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_IOTHUB 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
@@ -428,8 +465,6 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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_ONNX_PARSER is not set
-# CONFIG_PKG_USING_ONNX_BACKEND 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
@@ -438,6 +473,24 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_CAPNP is not set
 # CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
 # CONFIG_PKG_USING_AGILE_TELNET is not set
+# CONFIG_PKG_USING_NMEALIB is not set
+# CONFIG_PKG_USING_AGILE_JSMN 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_RAPIDJSON 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
 
 #
 # security packages
@@ -446,6 +499,7 @@ CONFIG_UTEST_THR_PRIORITY=20
 # CONFIG_PKG_USING_libsodium 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
@@ -453,23 +507,44 @@ CONFIG_UTEST_THR_PRIORITY=20
 # 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
 
 #
 # 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
+
+#
+# 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=y
-CONFIG_PKG_WAVPLAYER_PATH="/packages/multimedia/wavplayer"
-CONFIG_PKG_WP_USING_PLAY=y
-CONFIG_PKG_WP_PLAY_DEVICE="sound0"
-CONFIG_PKG_WP_USING_RECORD=y
-CONFIG_PKG_WP_RECORD_DEVICE="sound0"
+# CONFIG_PKG_USING_WAVPLAYER is not set
 # CONFIG_PKG_USING_WAVPLAYER_V020 is not set
-CONFIG_PKG_USING_WAVPLAYER_LATEST_VERSION=y
-CONFIG_PKG_WAVPLAYER_VER="latest"
+# CONFIG_PKG_USING_WAVPLAYER_LATEST_VERSION 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
 
 #
 # tools packages
@@ -478,26 +553,80 @@ CONFIG_PKG_WAVPLAYER_VER="latest"
 # 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_QRCODE 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
 
 #
 # system packages
 #
+
+#
+# rt_kprintf: enhanced rt_kprintf packages
+#
+# 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_RT_MEMCPY_CM is not set
+# 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_5_AUX 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_GUIENGINE is not set
 # CONFIG_PKG_USING_PERSIMMON is not set
 # CONFIG_PKG_USING_CAIRO is not set
 # CONFIG_PKG_USING_PIXMAN is not set
-# CONFIG_PKG_USING_LWEXT4 is not set
 # CONFIG_PKG_USING_PARTITION is not set
 CONFIG_PKG_USING_FAL=y
 CONFIG_PKG_FAL_PATH="/packages/system/fal"
@@ -516,16 +645,30 @@ CONFIG_PKG_FAL_VER_NUM=0x00400
 # CONFIG_PKG_USING_FLASHDB is not set
 # CONFIG_PKG_USING_SQLITE is not set
 # CONFIG_PKG_USING_RTI is not set
-# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
-# CONFIG_PKG_USING_CMSIS is not set
 # CONFIG_PKG_USING_DFS_YAFFS is not set
 # CONFIG_PKG_USING_LITTLEFS is not set
+# CONFIG_PKG_USING_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_WCWIDTH is not set
+# CONFIG_PKG_USING_MCUBOOT is not set
+# CONFIG_PKG_USING_TINYUSB is not set
+# CONFIG_PKG_USING_USB_STACK is not set
 
 #
 # peripheral libraries and drivers
@@ -534,9 +677,9 @@ CONFIG_PKG_FAL_VER_NUM=0x00400
 # 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_AS7341 is not set
 # CONFIG_PKG_USING_STM32_SDIO is not set
 # CONFIG_PKG_USING_ICM20608 is not set
-# CONFIG_PKG_USING_U8G2 is not set
 # CONFIG_PKG_USING_BUTTON is not set
 # CONFIG_PKG_USING_PCF8574 is not set
 # CONFIG_PKG_USING_SX12XX is not set
@@ -549,7 +692,6 @@ CONFIG_PKG_FAL_VER_NUM=0x00400
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK is not set
 # CONFIG_PKG_USING_INFRARED is not set
-# CONFIG_PKG_USING_ROSSERIAL is not set
 # CONFIG_PKG_USING_AGILE_BUTTON is not set
 # CONFIG_PKG_USING_AGILE_LED is not set
 # CONFIG_PKG_USING_AT24CXX is not set
@@ -563,6 +705,7 @@ CONFIG_PKG_FAL_VER_NUM=0x00400
 # 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
@@ -571,47 +714,105 @@ CONFIG_PKG_FAL_VER_NUM=0x00400
 # 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_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_BL_MCU_SDK is not set
+# CONFIG_PKG_USING_SOFT_SERIAL is not set
+# CONFIG_PKG_USING_MB85RS16 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
 #
+
+#
+# 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_LIBCSV is not set
-CONFIG_PKG_USING_OPTPARSE=y
-CONFIG_PKG_OPTPARSE_PATH="/packages/misc/optparse"
-CONFIG_PKG_USING_OPTPARSE_V100=y
+# CONFIG_PKG_USING_OPTPARSE is not set
 # CONFIG_PKG_USING_OPTPARSE_LATEST_VERSION is not set
-CONFIG_PKG_OPTPARSE_VER="v1.0.0"
-# CONFIG_OPTPARSE_USING_DEMO 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_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
-
-#
-# samples: kernel and components samples
-#
-# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
-# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
-# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
-# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
 # CONFIG_PKG_USING_HELLO is not set
 # CONFIG_PKG_USING_VI is not set
-# CONFIG_PKG_USING_NNOM is not set
-# CONFIG_PKG_USING_LIBANN is not set
-# CONFIG_PKG_USING_ELAPACK is not set
+# CONFIG_PKG_USING_KI is not set
 # CONFIG_PKG_USING_ARMv7M_DWT is not set
 # CONFIG_PKG_USING_VT100 is not set
-# CONFIG_PKG_USING_ULAPACK 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_MCURSES is not set
+# CONFIG_PKG_USING_COWSAY is not set
+# CONFIG_PKG_USING_TERMBOX is not set
 
 #
 # Nuvoton Packages Config
@@ -621,7 +822,10 @@ CONFIG_NU_PKG_USING_DEMO=y
 # CONFIG_NU_PKG_USING_BMX055 is not set
 # CONFIG_NU_PKG_USING_MAX31875 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_SPINAND is not set
 
 #
 # Hardware Drivers Config
@@ -631,9 +835,10 @@ CONFIG_NU_PKG_USING_NAU88L25=y
 # On-chip Peripheral Drivers
 #
 CONFIG_SOC_SERIES_M480=y
-# CONFIG_BSP_USE_STDDRIVER_SOURCE is not set
+CONFIG_BSP_USE_STDDRIVER_SOURCE=y
 CONFIG_BSP_USING_PDMA=y
 CONFIG_NU_PDMA_MEMFUN_ACTOR_MAX=2
+CONFIG_NU_PDMA_SGTBL_POOL_SIZE=16
 CONFIG_BSP_USING_FMC=y
 CONFIG_BSP_USING_GPIO=y
 CONFIG_BSP_USING_CLK=y
@@ -665,19 +870,17 @@ CONFIG_BSP_USING_I2C=y
 CONFIG_BSP_USING_I2C1=y
 CONFIG_BSP_USING_I2C2=y
 # CONFIG_BSP_USING_USCI is not set
-# CONFIG_BSP_USING_UUART0 is not set
-# CONFIG_BSP_USING_UI2C0 is not set
-# CONFIG_BSP_USING_USPI0 is not set
 CONFIG_BSP_USING_SDH=y
 CONFIG_BSP_USING_SDH0=y
 # CONFIG_BSP_USING_SDH1 is not set
 CONFIG_NU_SDH_USING_PDMA=y
 CONFIG_NU_SDH_HOTPLUG=y
+# CONFIG_NU_SDH_MOUNT_ON_ROOT is not set
 # CONFIG_BSP_USING_CAN 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 is not set
+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
@@ -713,6 +916,7 @@ 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
 
 #

+ 11 - 1
bsp/nuvoton/numaker-pfm-m487/applications/SConscript

@@ -3,9 +3,19 @@
 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)
 
-Return('group')
+objs = objs + group
+
+Return('objs')
+

+ 1 - 1
bsp/nuvoton/numaker-pfm-m487/board/board_dev.c

@@ -153,7 +153,7 @@ INIT_COMPONENT_EXPORT(rt_hw_spiflash_init);
 #if defined(BOARD_USING_SRAM0_AS_MEMHEAP)
 /*
 In Advance board design, SRAM address bus A16/A17/A18 are GPIO-controlled by SW, not EBI.
-So we just remap 128KB only to RTT memory heap, due to it is out of controll.
+So we just remap 128KB only to RTT memory heap, due to it is out of control.
 AD0~AD15: 2^16*16bit = 128KB
 */
 #include <drv_ebi.h>