Kaynağa Gözat

🎯 [libcpu/arm/cortex-a]修改arm/cortex-a启动方式,解决cortex-a开启SMP工作异常问题 (#8517)

Co-authored-by: wangzongqiang <wangzongqiang1322@phytium.com.cn>
zhangyan 1 yıl önce
ebeveyn
işleme
76202e2141

+ 43 - 5
bsp/phytium/aarch32/.config

@@ -11,8 +11,8 @@ CONFIG_RT_NAME_MAX=16
 # CONFIG_RT_USING_SMART is not set
 # CONFIG_RT_USING_NANO is not set
 # CONFIG_RT_USING_AMP is not set
-# CONFIG_RT_USING_SMP is not set
-CONFIG_RT_CPUS_NR=1
+CONFIG_RT_USING_SMP=y
+CONFIG_RT_CPUS_NR=4
 CONFIG_RT_ALIGN_SIZE=4
 # CONFIG_RT_THREAD_PRIORITY_8 is not set
 CONFIG_RT_THREAD_PRIORITY_32=y
@@ -26,6 +26,7 @@ CONFIG_RT_HOOK_USING_FUNC_PTR=y
 CONFIG_RT_USING_IDLE_HOOK=y
 CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
 CONFIG_IDLE_THREAD_STACK_SIZE=4096
+CONFIG_SYSTEM_THREAD_STACK_SIZE=4096
 CONFIG_RT_USING_TIMER_SOFT=y
 CONFIG_RT_TIMER_THREAD_PRIO=4
 CONFIG_RT_TIMER_THREAD_STACK_SIZE=4096
@@ -43,6 +44,7 @@ CONFIG_RT_DEBUGING_COLOR=y
 CONFIG_RT_DEBUGING_CONTEXT=y
 # CONFIG_RT_DEBUGING_AUTO_INIT is not set
 # CONFIG_RT_DEBUGING_PAGE_LEAK is not set
+# CONFIG_RT_DEBUGING_SPINLOCK is not set
 
 #
 # Inter-Thread communication
@@ -76,6 +78,7 @@ CONFIG_RT_USING_HEAP=y
 CONFIG_RT_USING_DEVICE=y
 # CONFIG_RT_USING_DEVICE_OPS is not set
 # CONFIG_RT_USING_INTERRUPT_INFO is not set
+# CONFIG_RT_USING_THREDSAFE_PRINTF is not set
 CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=256
 CONFIG_RT_CONSOLE_DEVICE_NAME="uart1"
@@ -436,6 +439,21 @@ CONFIG_RT_USING_ADT_REF=y
 #
 # CONFIG_PKG_USING_WLAN_WICED is not set
 # CONFIG_PKG_USING_RW007 is not set
+
+#
+# CYW43012 WiFi
+#
+# CONFIG_PKG_USING_WLAN_CYW43012 is not set
+
+#
+# BL808 WiFi
+#
+# CONFIG_PKG_USING_WLAN_BL808 is not set
+
+#
+# CYW43439 WiFi
+#
+# CONFIG_PKG_USING_WLAN_CYW43439 is not set
 # CONFIG_PKG_USING_COAP is not set
 # CONFIG_PKG_USING_NOPOLL is not set
 # CONFIG_PKG_USING_NETUTILS is not set
@@ -457,7 +475,6 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_JIOT-C-SDK is not set
 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
 # CONFIG_PKG_USING_JOYLINK is not set
-# CONFIG_PKG_USING_EZ_IOT_OS is not set
 # CONFIG_PKG_USING_IOTSHARP_SDK is not set
 # CONFIG_PKG_USING_NIMBLE is not set
 # CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
@@ -478,6 +495,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_NMEALIB is not set
 # CONFIG_PKG_USING_PDULIB is not set
 # CONFIG_PKG_USING_BTSTACK is not set
+# CONFIG_PKG_USING_BT_CYW43012 is not set
 # CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
 # CONFIG_PKG_USING_WAYZ_IOTKIT is not set
 # CONFIG_PKG_USING_MAVLINK is not set
@@ -497,6 +515,8 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_ZFTP is not set
 # CONFIG_PKG_USING_WOL is not set
 # CONFIG_PKG_USING_ZEPHYR_POLLING is not set
+# CONFIG_PKG_USING_MATTER_ADAPTATION_LAYER is not set
+# CONFIG_PKG_USING_LHC_MODBUS is not set
 
 #
 # security packages
@@ -543,7 +563,6 @@ CONFIG_RT_USING_ADT_REF=y
 # LVGL: powerful and easy-to-use embedded GUI library
 #
 # CONFIG_PKG_USING_LVGL is not set
-# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
 # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
 # CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
 
@@ -619,6 +638,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_HASH_MATCH is not set
 # CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
 # CONFIG_PKG_USING_VOFA_PLUS is not set
+# CONFIG_PKG_USING_ZDEBUG is not set
 
 #
 # system packages
@@ -655,6 +675,8 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
 # CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
+# CONFIG_PKG_USING_LITEOS_SDK is not set
+# CONFIG_PKG_USING_TZ_DATABASE is not set
 # CONFIG_PKG_USING_CAIRO is not set
 # CONFIG_PKG_USING_PIXMAN is not set
 # CONFIG_PKG_USING_PARTITION is not set
@@ -678,6 +700,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_QBOOT is not set
 # CONFIG_PKG_USING_PPOOL is not set
 # CONFIG_PKG_USING_OPENAMP is not set
+# CONFIG_PKG_USING_RPMSG_LITE is not set
 # CONFIG_PKG_USING_LPM is not set
 # CONFIG_PKG_USING_TLSF is not set
 # CONFIG_PKG_USING_EVENT_RECORDER is not set
@@ -691,6 +714,11 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_AGILE_UPGRADE is not set
 # CONFIG_PKG_USING_FLASH_BLOB is not set
 # CONFIG_PKG_USING_MLIBC is not set
+# CONFIG_PKG_USING_TASK_MSG_BUS is not set
+# CONFIG_PKG_USING_SFDB is not set
+# CONFIG_PKG_USING_RTP is not set
+# CONFIG_PKG_USING_REB is not set
+# CONFIG_PKG_USING_R_RHEALSTONE is not set
 
 #
 # peripheral libraries and drivers
@@ -755,6 +783,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_BALANCE is not set
 # CONFIG_PKG_USING_SHT2X is not set
 # CONFIG_PKG_USING_SHT3X is not set
+# CONFIG_PKG_USING_SHT4X is not set
 # CONFIG_PKG_USING_AD7746 is not set
 # CONFIG_PKG_USING_ADT74XX is not set
 # CONFIG_PKG_USING_MAX17048 is not set
@@ -855,6 +884,11 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_FINGERPRINT is not set
 # CONFIG_PKG_USING_BT_ECB02C is not set
 # CONFIG_PKG_USING_UAT is not set
+# CONFIG_PKG_USING_ST7789 is not set
+# CONFIG_PKG_USING_VS1003 is not set
+# CONFIG_PKG_USING_X9555 is not set
+# CONFIG_PKG_USING_SYSTEM_RUN_LED is not set
+# CONFIG_PKG_USING_PHYTIUM_SDK is not set
 # CONFIG_PKG_USING_SPI_TOOLS is not set
 
 #
@@ -869,6 +903,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_ULAPACK is not set
 # CONFIG_PKG_USING_QUEST is not set
 # CONFIG_PKG_USING_NAXOS is not set
+# CONFIG_PKG_USING_R_TINYMAIX is not set
 
 #
 # Signal Processing and Control Algorithm Packages
@@ -878,6 +913,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_UKAL is not set
 # CONFIG_PKG_USING_DIGITALCTRL is not set
 # CONFIG_PKG_USING_KISSFFT is not set
+# CONFIG_PKG_USING_CMSIS_DSP is not set
 
 #
 # miscellaneous packages
@@ -915,6 +951,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_MINILZO is not set
 # CONFIG_PKG_USING_QUICKLZ is not set
 # CONFIG_PKG_USING_LZMA is not set
+# CONFIG_PKG_USING_RALARAM is not set
 # CONFIG_PKG_USING_MULTIBUTTON is not set
 # CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
 # CONFIG_PKG_USING_CANFESTIVAL is not set
@@ -1099,6 +1136,7 @@ CONFIG_RT_USING_ADT_REF=y
 #
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set
 # CONFIG_PKG_USING_ARDUINO_U8G2 is not set
+# CONFIG_PKG_USING_ARDUINO_TFT_ESPI is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ST7735 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set
@@ -1107,6 +1145,7 @@ CONFIG_RT_USING_ADT_REF=y
 #
 # Timing
 #
+# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set
 # CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set
 # CONFIG_PKG_USING_ARDUINO_TICKER is not set
 # CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set
@@ -1143,7 +1182,6 @@ CONFIG_RT_USING_ADT_REF=y
 #
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set
-# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set
 
 #
 # Signal IO

+ 2 - 2
bsp/phytium/aarch32/applications/main.c

@@ -58,7 +58,7 @@ static void demo_core_thread(void *parameter)
         level = rt_cpus_lock();
         rt_kprintf("Hi, core%d \r\n", rt_hw_cpu_id());
         rt_cpus_unlock(level);
-        rt_thread_mdelay(2000000);
+        rt_thread_mdelay(200000);
     }
 }
 
@@ -87,7 +87,7 @@ void demo_core(void)
 int main(void)
 {
 #ifdef RT_USING_SMP
-    // demo_core();
+    demo_core();
 #endif
     return RT_EOK;
 }

+ 43 - 5
bsp/phytium/aarch32/configs/e2000d_demo_rtthread

@@ -11,8 +11,8 @@ CONFIG_RT_NAME_MAX=16
 # CONFIG_RT_USING_SMART is not set
 # CONFIG_RT_USING_NANO is not set
 # CONFIG_RT_USING_AMP is not set
-# CONFIG_RT_USING_SMP is not set
-CONFIG_RT_CPUS_NR=1
+CONFIG_RT_USING_SMP=y
+CONFIG_RT_CPUS_NR=2
 CONFIG_RT_ALIGN_SIZE=4
 # CONFIG_RT_THREAD_PRIORITY_8 is not set
 CONFIG_RT_THREAD_PRIORITY_32=y
@@ -26,6 +26,7 @@ CONFIG_RT_HOOK_USING_FUNC_PTR=y
 CONFIG_RT_USING_IDLE_HOOK=y
 CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
 CONFIG_IDLE_THREAD_STACK_SIZE=4096
+CONFIG_SYSTEM_THREAD_STACK_SIZE=4096
 CONFIG_RT_USING_TIMER_SOFT=y
 CONFIG_RT_TIMER_THREAD_PRIO=4
 CONFIG_RT_TIMER_THREAD_STACK_SIZE=4096
@@ -43,6 +44,7 @@ CONFIG_RT_DEBUGING_COLOR=y
 CONFIG_RT_DEBUGING_CONTEXT=y
 # CONFIG_RT_DEBUGING_AUTO_INIT is not set
 # CONFIG_RT_DEBUGING_PAGE_LEAK is not set
+# CONFIG_RT_DEBUGING_SPINLOCK is not set
 
 #
 # Inter-Thread communication
@@ -76,6 +78,7 @@ CONFIG_RT_USING_HEAP=y
 CONFIG_RT_USING_DEVICE=y
 # CONFIG_RT_USING_DEVICE_OPS is not set
 # CONFIG_RT_USING_INTERRUPT_INFO is not set
+# CONFIG_RT_USING_THREDSAFE_PRINTF is not set
 CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=256
 CONFIG_RT_CONSOLE_DEVICE_NAME="uart1"
@@ -436,6 +439,21 @@ CONFIG_RT_USING_ADT_REF=y
 #
 # CONFIG_PKG_USING_WLAN_WICED is not set
 # CONFIG_PKG_USING_RW007 is not set
+
+#
+# CYW43012 WiFi
+#
+# CONFIG_PKG_USING_WLAN_CYW43012 is not set
+
+#
+# BL808 WiFi
+#
+# CONFIG_PKG_USING_WLAN_BL808 is not set
+
+#
+# CYW43439 WiFi
+#
+# CONFIG_PKG_USING_WLAN_CYW43439 is not set
 # CONFIG_PKG_USING_COAP is not set
 # CONFIG_PKG_USING_NOPOLL is not set
 # CONFIG_PKG_USING_NETUTILS is not set
@@ -457,7 +475,6 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_JIOT-C-SDK is not set
 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
 # CONFIG_PKG_USING_JOYLINK is not set
-# CONFIG_PKG_USING_EZ_IOT_OS is not set
 # CONFIG_PKG_USING_IOTSHARP_SDK is not set
 # CONFIG_PKG_USING_NIMBLE is not set
 # CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
@@ -478,6 +495,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_NMEALIB is not set
 # CONFIG_PKG_USING_PDULIB is not set
 # CONFIG_PKG_USING_BTSTACK is not set
+# CONFIG_PKG_USING_BT_CYW43012 is not set
 # CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
 # CONFIG_PKG_USING_WAYZ_IOTKIT is not set
 # CONFIG_PKG_USING_MAVLINK is not set
@@ -497,6 +515,8 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_ZFTP is not set
 # CONFIG_PKG_USING_WOL is not set
 # CONFIG_PKG_USING_ZEPHYR_POLLING is not set
+# CONFIG_PKG_USING_MATTER_ADAPTATION_LAYER is not set
+# CONFIG_PKG_USING_LHC_MODBUS is not set
 
 #
 # security packages
@@ -543,7 +563,6 @@ CONFIG_RT_USING_ADT_REF=y
 # LVGL: powerful and easy-to-use embedded GUI library
 #
 # CONFIG_PKG_USING_LVGL is not set
-# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
 # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
 # CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
 
@@ -619,6 +638,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_HASH_MATCH is not set
 # CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
 # CONFIG_PKG_USING_VOFA_PLUS is not set
+# CONFIG_PKG_USING_ZDEBUG is not set
 
 #
 # system packages
@@ -655,6 +675,8 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
 # CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
+# CONFIG_PKG_USING_LITEOS_SDK is not set
+# CONFIG_PKG_USING_TZ_DATABASE is not set
 # CONFIG_PKG_USING_CAIRO is not set
 # CONFIG_PKG_USING_PIXMAN is not set
 # CONFIG_PKG_USING_PARTITION is not set
@@ -678,6 +700,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_QBOOT is not set
 # CONFIG_PKG_USING_PPOOL is not set
 # CONFIG_PKG_USING_OPENAMP is not set
+# CONFIG_PKG_USING_RPMSG_LITE is not set
 # CONFIG_PKG_USING_LPM is not set
 # CONFIG_PKG_USING_TLSF is not set
 # CONFIG_PKG_USING_EVENT_RECORDER is not set
@@ -691,6 +714,11 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_AGILE_UPGRADE is not set
 # CONFIG_PKG_USING_FLASH_BLOB is not set
 # CONFIG_PKG_USING_MLIBC is not set
+# CONFIG_PKG_USING_TASK_MSG_BUS is not set
+# CONFIG_PKG_USING_SFDB is not set
+# CONFIG_PKG_USING_RTP is not set
+# CONFIG_PKG_USING_REB is not set
+# CONFIG_PKG_USING_R_RHEALSTONE is not set
 
 #
 # peripheral libraries and drivers
@@ -755,6 +783,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_BALANCE is not set
 # CONFIG_PKG_USING_SHT2X is not set
 # CONFIG_PKG_USING_SHT3X is not set
+# CONFIG_PKG_USING_SHT4X is not set
 # CONFIG_PKG_USING_AD7746 is not set
 # CONFIG_PKG_USING_ADT74XX is not set
 # CONFIG_PKG_USING_MAX17048 is not set
@@ -855,6 +884,11 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_FINGERPRINT is not set
 # CONFIG_PKG_USING_BT_ECB02C is not set
 # CONFIG_PKG_USING_UAT is not set
+# CONFIG_PKG_USING_ST7789 is not set
+# CONFIG_PKG_USING_VS1003 is not set
+# CONFIG_PKG_USING_X9555 is not set
+# CONFIG_PKG_USING_SYSTEM_RUN_LED is not set
+# CONFIG_PKG_USING_PHYTIUM_SDK is not set
 # CONFIG_PKG_USING_SPI_TOOLS is not set
 
 #
@@ -869,6 +903,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_ULAPACK is not set
 # CONFIG_PKG_USING_QUEST is not set
 # CONFIG_PKG_USING_NAXOS is not set
+# CONFIG_PKG_USING_R_TINYMAIX is not set
 
 #
 # Signal Processing and Control Algorithm Packages
@@ -878,6 +913,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_UKAL is not set
 # CONFIG_PKG_USING_DIGITALCTRL is not set
 # CONFIG_PKG_USING_KISSFFT is not set
+# CONFIG_PKG_USING_CMSIS_DSP is not set
 
 #
 # miscellaneous packages
@@ -915,6 +951,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_MINILZO is not set
 # CONFIG_PKG_USING_QUICKLZ is not set
 # CONFIG_PKG_USING_LZMA is not set
+# CONFIG_PKG_USING_RALARAM is not set
 # CONFIG_PKG_USING_MULTIBUTTON is not set
 # CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
 # CONFIG_PKG_USING_CANFESTIVAL is not set
@@ -1099,6 +1136,7 @@ CONFIG_RT_USING_ADT_REF=y
 #
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set
 # CONFIG_PKG_USING_ARDUINO_U8G2 is not set
+# CONFIG_PKG_USING_ARDUINO_TFT_ESPI is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ST7735 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set
@@ -1107,6 +1145,7 @@ CONFIG_RT_USING_ADT_REF=y
 #
 # Timing
 #
+# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set
 # CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set
 # CONFIG_PKG_USING_ARDUINO_TICKER is not set
 # CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set
@@ -1143,7 +1182,6 @@ CONFIG_RT_USING_ADT_REF=y
 #
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set
-# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set
 
 #
 # Signal IO

+ 12 - 1
bsp/phytium/aarch32/configs/e2000d_demo_rtthread.h

@@ -7,7 +7,8 @@
 /* RT-Thread Kernel */
 
 #define RT_NAME_MAX 16
-#define RT_CPUS_NR 1
+#define RT_USING_SMP
+#define RT_CPUS_NR 2
 #define RT_ALIGN_SIZE 4
 #define RT_THREAD_PRIORITY_32
 #define RT_THREAD_PRIORITY_MAX 32
@@ -18,6 +19,7 @@
 #define RT_USING_IDLE_HOOK
 #define RT_IDLE_HOOK_LIST_SIZE 4
 #define IDLE_THREAD_STACK_SIZE 4096
+#define SYSTEM_THREAD_STACK_SIZE 4096
 #define RT_USING_TIMER_SOFT
 #define RT_TIMER_THREAD_PRIO 4
 #define RT_TIMER_THREAD_STACK_SIZE 4096
@@ -272,6 +274,15 @@
 /* Wiced WiFi */
 
 
+/* CYW43012 WiFi */
+
+
+/* BL808 WiFi */
+
+
+/* CYW43439 WiFi */
+
+
 /* IoT Cloud */
 
 

+ 43 - 5
bsp/phytium/aarch32/configs/e2000q_demo_rtsmart

@@ -11,8 +11,8 @@ CONFIG_RT_NAME_MAX=16
 CONFIG_RT_USING_SMART=y
 # CONFIG_RT_USING_NANO is not set
 # CONFIG_RT_USING_AMP is not set
-# CONFIG_RT_USING_SMP is not set
-CONFIG_RT_CPUS_NR=1
+CONFIG_RT_USING_SMP=y
+CONFIG_RT_CPUS_NR=4
 CONFIG_RT_ALIGN_SIZE=4
 # CONFIG_RT_THREAD_PRIORITY_8 is not set
 CONFIG_RT_THREAD_PRIORITY_32=y
@@ -26,6 +26,7 @@ CONFIG_RT_HOOK_USING_FUNC_PTR=y
 CONFIG_RT_USING_IDLE_HOOK=y
 CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
 CONFIG_IDLE_THREAD_STACK_SIZE=4096
+CONFIG_SYSTEM_THREAD_STACK_SIZE=4096
 CONFIG_RT_USING_TIMER_SOFT=y
 CONFIG_RT_TIMER_THREAD_PRIO=4
 CONFIG_RT_TIMER_THREAD_STACK_SIZE=4096
@@ -43,6 +44,7 @@ CONFIG_RT_DEBUGING_COLOR=y
 CONFIG_RT_DEBUGING_CONTEXT=y
 # CONFIG_RT_DEBUGING_AUTO_INIT is not set
 # CONFIG_RT_DEBUGING_PAGE_LEAK is not set
+# CONFIG_RT_DEBUGING_SPINLOCK is not set
 
 #
 # Inter-Thread communication
@@ -76,6 +78,7 @@ CONFIG_RT_USING_HEAP=y
 CONFIG_RT_USING_DEVICE=y
 CONFIG_RT_USING_DEVICE_OPS=y
 # CONFIG_RT_USING_INTERRUPT_INFO is not set
+CONFIG_RT_USING_THREDSAFE_PRINTF=y
 CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=256
 CONFIG_RT_CONSOLE_DEVICE_NAME="uart1"
@@ -466,6 +469,21 @@ CONFIG_RT_USING_LDSO=y
 #
 # CONFIG_PKG_USING_WLAN_WICED is not set
 # CONFIG_PKG_USING_RW007 is not set
+
+#
+# CYW43012 WiFi
+#
+# CONFIG_PKG_USING_WLAN_CYW43012 is not set
+
+#
+# BL808 WiFi
+#
+# CONFIG_PKG_USING_WLAN_BL808 is not set
+
+#
+# CYW43439 WiFi
+#
+# CONFIG_PKG_USING_WLAN_CYW43439 is not set
 # CONFIG_PKG_USING_COAP is not set
 # CONFIG_PKG_USING_NOPOLL is not set
 # CONFIG_PKG_USING_NETUTILS is not set
@@ -487,7 +505,6 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_JIOT-C-SDK is not set
 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
 # CONFIG_PKG_USING_JOYLINK is not set
-# CONFIG_PKG_USING_EZ_IOT_OS is not set
 # CONFIG_PKG_USING_IOTSHARP_SDK is not set
 # CONFIG_PKG_USING_NIMBLE is not set
 # CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
@@ -508,6 +525,7 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_NMEALIB is not set
 # CONFIG_PKG_USING_PDULIB is not set
 # CONFIG_PKG_USING_BTSTACK is not set
+# CONFIG_PKG_USING_BT_CYW43012 is not set
 # CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
 # CONFIG_PKG_USING_WAYZ_IOTKIT is not set
 # CONFIG_PKG_USING_MAVLINK is not set
@@ -527,6 +545,8 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_ZFTP is not set
 # CONFIG_PKG_USING_WOL is not set
 # CONFIG_PKG_USING_ZEPHYR_POLLING is not set
+# CONFIG_PKG_USING_MATTER_ADAPTATION_LAYER is not set
+# CONFIG_PKG_USING_LHC_MODBUS is not set
 
 #
 # security packages
@@ -573,7 +593,6 @@ CONFIG_RT_USING_LDSO=y
 # LVGL: powerful and easy-to-use embedded GUI library
 #
 # CONFIG_PKG_USING_LVGL is not set
-# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
 # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
 # CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
 
@@ -649,6 +668,7 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_HASH_MATCH is not set
 # CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
 # CONFIG_PKG_USING_VOFA_PLUS is not set
+# CONFIG_PKG_USING_ZDEBUG is not set
 
 #
 # system packages
@@ -685,6 +705,8 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
 # CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
+# CONFIG_PKG_USING_LITEOS_SDK is not set
+# CONFIG_PKG_USING_TZ_DATABASE is not set
 # CONFIG_PKG_USING_CAIRO is not set
 # CONFIG_PKG_USING_PIXMAN is not set
 # CONFIG_PKG_USING_PARTITION is not set
@@ -708,6 +730,7 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_QBOOT is not set
 # CONFIG_PKG_USING_PPOOL is not set
 # CONFIG_PKG_USING_OPENAMP is not set
+# CONFIG_PKG_USING_RPMSG_LITE is not set
 # CONFIG_PKG_USING_LPM is not set
 # CONFIG_PKG_USING_TLSF is not set
 # CONFIG_PKG_USING_EVENT_RECORDER is not set
@@ -721,6 +744,11 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_AGILE_UPGRADE is not set
 # CONFIG_PKG_USING_FLASH_BLOB is not set
 # CONFIG_PKG_USING_MLIBC is not set
+# CONFIG_PKG_USING_TASK_MSG_BUS is not set
+# CONFIG_PKG_USING_SFDB is not set
+# CONFIG_PKG_USING_RTP is not set
+# CONFIG_PKG_USING_REB is not set
+# CONFIG_PKG_USING_R_RHEALSTONE is not set
 
 #
 # peripheral libraries and drivers
@@ -785,6 +813,7 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_BALANCE is not set
 # CONFIG_PKG_USING_SHT2X is not set
 # CONFIG_PKG_USING_SHT3X is not set
+# CONFIG_PKG_USING_SHT4X is not set
 # CONFIG_PKG_USING_AD7746 is not set
 # CONFIG_PKG_USING_ADT74XX is not set
 # CONFIG_PKG_USING_MAX17048 is not set
@@ -885,6 +914,11 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_FINGERPRINT is not set
 # CONFIG_PKG_USING_BT_ECB02C is not set
 # CONFIG_PKG_USING_UAT is not set
+# CONFIG_PKG_USING_ST7789 is not set
+# CONFIG_PKG_USING_VS1003 is not set
+# CONFIG_PKG_USING_X9555 is not set
+# CONFIG_PKG_USING_SYSTEM_RUN_LED is not set
+# CONFIG_PKG_USING_PHYTIUM_SDK is not set
 # CONFIG_PKG_USING_SPI_TOOLS is not set
 
 #
@@ -899,6 +933,7 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_ULAPACK is not set
 # CONFIG_PKG_USING_QUEST is not set
 # CONFIG_PKG_USING_NAXOS is not set
+# CONFIG_PKG_USING_R_TINYMAIX is not set
 
 #
 # Signal Processing and Control Algorithm Packages
@@ -908,6 +943,7 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_UKAL is not set
 # CONFIG_PKG_USING_DIGITALCTRL is not set
 # CONFIG_PKG_USING_KISSFFT is not set
+# CONFIG_PKG_USING_CMSIS_DSP is not set
 
 #
 # miscellaneous packages
@@ -945,6 +981,7 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_MINILZO is not set
 # CONFIG_PKG_USING_QUICKLZ is not set
 # CONFIG_PKG_USING_LZMA is not set
+# CONFIG_PKG_USING_RALARAM is not set
 # CONFIG_PKG_USING_MULTIBUTTON is not set
 # CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
 # CONFIG_PKG_USING_CANFESTIVAL is not set
@@ -1129,6 +1166,7 @@ CONFIG_RT_USING_LDSO=y
 #
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set
 # CONFIG_PKG_USING_ARDUINO_U8G2 is not set
+# CONFIG_PKG_USING_ARDUINO_TFT_ESPI is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ST7735 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set
@@ -1137,6 +1175,7 @@ CONFIG_RT_USING_LDSO=y
 #
 # Timing
 #
+# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set
 # CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set
 # CONFIG_PKG_USING_ARDUINO_TICKER is not set
 # CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set
@@ -1173,7 +1212,6 @@ CONFIG_RT_USING_LDSO=y
 #
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set
-# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set
 
 #
 # Signal IO

+ 13 - 1
bsp/phytium/aarch32/configs/e2000q_demo_rtsmart.h

@@ -8,7 +8,8 @@
 
 #define RT_NAME_MAX 16
 #define RT_USING_SMART
-#define RT_CPUS_NR 1
+#define RT_USING_SMP
+#define RT_CPUS_NR 4
 #define RT_ALIGN_SIZE 4
 #define RT_THREAD_PRIORITY_32
 #define RT_THREAD_PRIORITY_MAX 32
@@ -19,6 +20,7 @@
 #define RT_USING_IDLE_HOOK
 #define RT_IDLE_HOOK_LIST_SIZE 4
 #define IDLE_THREAD_STACK_SIZE 4096
+#define SYSTEM_THREAD_STACK_SIZE 4096
 #define RT_USING_TIMER_SOFT
 #define RT_TIMER_THREAD_PRIO 4
 #define RT_TIMER_THREAD_STACK_SIZE 4096
@@ -51,6 +53,7 @@
 #define RT_USING_HEAP
 #define RT_USING_DEVICE
 #define RT_USING_DEVICE_OPS
+#define RT_USING_THREDSAFE_PRINTF
 #define RT_USING_CONSOLE
 #define RT_CONSOLEBUF_SIZE 256
 #define RT_CONSOLE_DEVICE_NAME "uart1"
@@ -298,6 +301,15 @@
 /* Wiced WiFi */
 
 
+/* CYW43012 WiFi */
+
+
+/* BL808 WiFi */
+
+
+/* CYW43439 WiFi */
+
+
 /* IoT Cloud */
 
 

+ 43 - 5
bsp/phytium/aarch32/configs/e2000q_demo_rtthread

@@ -11,8 +11,8 @@ CONFIG_RT_NAME_MAX=16
 # CONFIG_RT_USING_SMART is not set
 # CONFIG_RT_USING_NANO is not set
 # CONFIG_RT_USING_AMP is not set
-# CONFIG_RT_USING_SMP is not set
-CONFIG_RT_CPUS_NR=1
+CONFIG_RT_USING_SMP=y
+CONFIG_RT_CPUS_NR=4
 CONFIG_RT_ALIGN_SIZE=4
 # CONFIG_RT_THREAD_PRIORITY_8 is not set
 CONFIG_RT_THREAD_PRIORITY_32=y
@@ -26,6 +26,7 @@ CONFIG_RT_HOOK_USING_FUNC_PTR=y
 CONFIG_RT_USING_IDLE_HOOK=y
 CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
 CONFIG_IDLE_THREAD_STACK_SIZE=4096
+CONFIG_SYSTEM_THREAD_STACK_SIZE=4096
 CONFIG_RT_USING_TIMER_SOFT=y
 CONFIG_RT_TIMER_THREAD_PRIO=4
 CONFIG_RT_TIMER_THREAD_STACK_SIZE=4096
@@ -43,6 +44,7 @@ CONFIG_RT_DEBUGING_COLOR=y
 CONFIG_RT_DEBUGING_CONTEXT=y
 # CONFIG_RT_DEBUGING_AUTO_INIT is not set
 # CONFIG_RT_DEBUGING_PAGE_LEAK is not set
+# CONFIG_RT_DEBUGING_SPINLOCK is not set
 
 #
 # Inter-Thread communication
@@ -76,6 +78,7 @@ CONFIG_RT_USING_HEAP=y
 CONFIG_RT_USING_DEVICE=y
 # CONFIG_RT_USING_DEVICE_OPS is not set
 # CONFIG_RT_USING_INTERRUPT_INFO is not set
+# CONFIG_RT_USING_THREDSAFE_PRINTF is not set
 CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=256
 CONFIG_RT_CONSOLE_DEVICE_NAME="uart1"
@@ -436,6 +439,21 @@ CONFIG_RT_USING_ADT_REF=y
 #
 # CONFIG_PKG_USING_WLAN_WICED is not set
 # CONFIG_PKG_USING_RW007 is not set
+
+#
+# CYW43012 WiFi
+#
+# CONFIG_PKG_USING_WLAN_CYW43012 is not set
+
+#
+# BL808 WiFi
+#
+# CONFIG_PKG_USING_WLAN_BL808 is not set
+
+#
+# CYW43439 WiFi
+#
+# CONFIG_PKG_USING_WLAN_CYW43439 is not set
 # CONFIG_PKG_USING_COAP is not set
 # CONFIG_PKG_USING_NOPOLL is not set
 # CONFIG_PKG_USING_NETUTILS is not set
@@ -457,7 +475,6 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_JIOT-C-SDK is not set
 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
 # CONFIG_PKG_USING_JOYLINK is not set
-# CONFIG_PKG_USING_EZ_IOT_OS is not set
 # CONFIG_PKG_USING_IOTSHARP_SDK is not set
 # CONFIG_PKG_USING_NIMBLE is not set
 # CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
@@ -478,6 +495,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_NMEALIB is not set
 # CONFIG_PKG_USING_PDULIB is not set
 # CONFIG_PKG_USING_BTSTACK is not set
+# CONFIG_PKG_USING_BT_CYW43012 is not set
 # CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
 # CONFIG_PKG_USING_WAYZ_IOTKIT is not set
 # CONFIG_PKG_USING_MAVLINK is not set
@@ -497,6 +515,8 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_ZFTP is not set
 # CONFIG_PKG_USING_WOL is not set
 # CONFIG_PKG_USING_ZEPHYR_POLLING is not set
+# CONFIG_PKG_USING_MATTER_ADAPTATION_LAYER is not set
+# CONFIG_PKG_USING_LHC_MODBUS is not set
 
 #
 # security packages
@@ -543,7 +563,6 @@ CONFIG_RT_USING_ADT_REF=y
 # LVGL: powerful and easy-to-use embedded GUI library
 #
 # CONFIG_PKG_USING_LVGL is not set
-# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
 # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
 # CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
 
@@ -619,6 +638,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_HASH_MATCH is not set
 # CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
 # CONFIG_PKG_USING_VOFA_PLUS is not set
+# CONFIG_PKG_USING_ZDEBUG is not set
 
 #
 # system packages
@@ -655,6 +675,8 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
 # CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
+# CONFIG_PKG_USING_LITEOS_SDK is not set
+# CONFIG_PKG_USING_TZ_DATABASE is not set
 # CONFIG_PKG_USING_CAIRO is not set
 # CONFIG_PKG_USING_PIXMAN is not set
 # CONFIG_PKG_USING_PARTITION is not set
@@ -678,6 +700,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_QBOOT is not set
 # CONFIG_PKG_USING_PPOOL is not set
 # CONFIG_PKG_USING_OPENAMP is not set
+# CONFIG_PKG_USING_RPMSG_LITE is not set
 # CONFIG_PKG_USING_LPM is not set
 # CONFIG_PKG_USING_TLSF is not set
 # CONFIG_PKG_USING_EVENT_RECORDER is not set
@@ -691,6 +714,11 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_AGILE_UPGRADE is not set
 # CONFIG_PKG_USING_FLASH_BLOB is not set
 # CONFIG_PKG_USING_MLIBC is not set
+# CONFIG_PKG_USING_TASK_MSG_BUS is not set
+# CONFIG_PKG_USING_SFDB is not set
+# CONFIG_PKG_USING_RTP is not set
+# CONFIG_PKG_USING_REB is not set
+# CONFIG_PKG_USING_R_RHEALSTONE is not set
 
 #
 # peripheral libraries and drivers
@@ -755,6 +783,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_BALANCE is not set
 # CONFIG_PKG_USING_SHT2X is not set
 # CONFIG_PKG_USING_SHT3X is not set
+# CONFIG_PKG_USING_SHT4X is not set
 # CONFIG_PKG_USING_AD7746 is not set
 # CONFIG_PKG_USING_ADT74XX is not set
 # CONFIG_PKG_USING_MAX17048 is not set
@@ -855,6 +884,11 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_FINGERPRINT is not set
 # CONFIG_PKG_USING_BT_ECB02C is not set
 # CONFIG_PKG_USING_UAT is not set
+# CONFIG_PKG_USING_ST7789 is not set
+# CONFIG_PKG_USING_VS1003 is not set
+# CONFIG_PKG_USING_X9555 is not set
+# CONFIG_PKG_USING_SYSTEM_RUN_LED is not set
+# CONFIG_PKG_USING_PHYTIUM_SDK is not set
 # CONFIG_PKG_USING_SPI_TOOLS is not set
 
 #
@@ -869,6 +903,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_ULAPACK is not set
 # CONFIG_PKG_USING_QUEST is not set
 # CONFIG_PKG_USING_NAXOS is not set
+# CONFIG_PKG_USING_R_TINYMAIX is not set
 
 #
 # Signal Processing and Control Algorithm Packages
@@ -878,6 +913,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_UKAL is not set
 # CONFIG_PKG_USING_DIGITALCTRL is not set
 # CONFIG_PKG_USING_KISSFFT is not set
+# CONFIG_PKG_USING_CMSIS_DSP is not set
 
 #
 # miscellaneous packages
@@ -915,6 +951,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_MINILZO is not set
 # CONFIG_PKG_USING_QUICKLZ is not set
 # CONFIG_PKG_USING_LZMA is not set
+# CONFIG_PKG_USING_RALARAM is not set
 # CONFIG_PKG_USING_MULTIBUTTON is not set
 # CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
 # CONFIG_PKG_USING_CANFESTIVAL is not set
@@ -1099,6 +1136,7 @@ CONFIG_RT_USING_ADT_REF=y
 #
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set
 # CONFIG_PKG_USING_ARDUINO_U8G2 is not set
+# CONFIG_PKG_USING_ARDUINO_TFT_ESPI is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ST7735 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set
@@ -1107,6 +1145,7 @@ CONFIG_RT_USING_ADT_REF=y
 #
 # Timing
 #
+# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set
 # CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set
 # CONFIG_PKG_USING_ARDUINO_TICKER is not set
 # CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set
@@ -1143,7 +1182,6 @@ CONFIG_RT_USING_ADT_REF=y
 #
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set
-# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set
 
 #
 # Signal IO

+ 12 - 1
bsp/phytium/aarch32/configs/e2000q_demo_rtthread.h

@@ -7,7 +7,8 @@
 /* RT-Thread Kernel */
 
 #define RT_NAME_MAX 16
-#define RT_CPUS_NR 1
+#define RT_USING_SMP
+#define RT_CPUS_NR 4
 #define RT_ALIGN_SIZE 4
 #define RT_THREAD_PRIORITY_32
 #define RT_THREAD_PRIORITY_MAX 32
@@ -18,6 +19,7 @@
 #define RT_USING_IDLE_HOOK
 #define RT_IDLE_HOOK_LIST_SIZE 4
 #define IDLE_THREAD_STACK_SIZE 4096
+#define SYSTEM_THREAD_STACK_SIZE 4096
 #define RT_USING_TIMER_SOFT
 #define RT_TIMER_THREAD_PRIO 4
 #define RT_TIMER_THREAD_STACK_SIZE 4096
@@ -272,6 +274,15 @@
 /* Wiced WiFi */
 
 
+/* CYW43012 WiFi */
+
+
+/* BL808 WiFi */
+
+
+/* CYW43439 WiFi */
+
+
 /* IoT Cloud */
 
 

+ 43 - 5
bsp/phytium/aarch32/configs/phytium_pi_rtsmart

@@ -11,8 +11,8 @@ CONFIG_RT_NAME_MAX=16
 CONFIG_RT_USING_SMART=y
 # CONFIG_RT_USING_NANO is not set
 # CONFIG_RT_USING_AMP is not set
-# CONFIG_RT_USING_SMP is not set
-CONFIG_RT_CPUS_NR=1
+CONFIG_RT_USING_SMP=y
+CONFIG_RT_CPUS_NR=4
 CONFIG_RT_ALIGN_SIZE=4
 # CONFIG_RT_THREAD_PRIORITY_8 is not set
 CONFIG_RT_THREAD_PRIORITY_32=y
@@ -26,6 +26,7 @@ CONFIG_RT_HOOK_USING_FUNC_PTR=y
 CONFIG_RT_USING_IDLE_HOOK=y
 CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
 CONFIG_IDLE_THREAD_STACK_SIZE=4096
+CONFIG_SYSTEM_THREAD_STACK_SIZE=4096
 CONFIG_RT_USING_TIMER_SOFT=y
 CONFIG_RT_TIMER_THREAD_PRIO=4
 CONFIG_RT_TIMER_THREAD_STACK_SIZE=4096
@@ -43,6 +44,7 @@ CONFIG_RT_DEBUGING_COLOR=y
 CONFIG_RT_DEBUGING_CONTEXT=y
 # CONFIG_RT_DEBUGING_AUTO_INIT is not set
 # CONFIG_RT_DEBUGING_PAGE_LEAK is not set
+# CONFIG_RT_DEBUGING_SPINLOCK is not set
 
 #
 # Inter-Thread communication
@@ -76,6 +78,7 @@ CONFIG_RT_USING_HEAP=y
 CONFIG_RT_USING_DEVICE=y
 CONFIG_RT_USING_DEVICE_OPS=y
 # CONFIG_RT_USING_INTERRUPT_INFO is not set
+CONFIG_RT_USING_THREDSAFE_PRINTF=y
 CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=256
 CONFIG_RT_CONSOLE_DEVICE_NAME="uart1"
@@ -466,6 +469,21 @@ CONFIG_RT_USING_LDSO=y
 #
 # CONFIG_PKG_USING_WLAN_WICED is not set
 # CONFIG_PKG_USING_RW007 is not set
+
+#
+# CYW43012 WiFi
+#
+# CONFIG_PKG_USING_WLAN_CYW43012 is not set
+
+#
+# BL808 WiFi
+#
+# CONFIG_PKG_USING_WLAN_BL808 is not set
+
+#
+# CYW43439 WiFi
+#
+# CONFIG_PKG_USING_WLAN_CYW43439 is not set
 # CONFIG_PKG_USING_COAP is not set
 # CONFIG_PKG_USING_NOPOLL is not set
 # CONFIG_PKG_USING_NETUTILS is not set
@@ -487,7 +505,6 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_JIOT-C-SDK is not set
 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
 # CONFIG_PKG_USING_JOYLINK is not set
-# CONFIG_PKG_USING_EZ_IOT_OS is not set
 # CONFIG_PKG_USING_IOTSHARP_SDK is not set
 # CONFIG_PKG_USING_NIMBLE is not set
 # CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
@@ -508,6 +525,7 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_NMEALIB is not set
 # CONFIG_PKG_USING_PDULIB is not set
 # CONFIG_PKG_USING_BTSTACK is not set
+# CONFIG_PKG_USING_BT_CYW43012 is not set
 # CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
 # CONFIG_PKG_USING_WAYZ_IOTKIT is not set
 # CONFIG_PKG_USING_MAVLINK is not set
@@ -527,6 +545,8 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_ZFTP is not set
 # CONFIG_PKG_USING_WOL is not set
 # CONFIG_PKG_USING_ZEPHYR_POLLING is not set
+# CONFIG_PKG_USING_MATTER_ADAPTATION_LAYER is not set
+# CONFIG_PKG_USING_LHC_MODBUS is not set
 
 #
 # security packages
@@ -573,7 +593,6 @@ CONFIG_RT_USING_LDSO=y
 # LVGL: powerful and easy-to-use embedded GUI library
 #
 # CONFIG_PKG_USING_LVGL is not set
-# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
 # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
 # CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
 
@@ -649,6 +668,7 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_HASH_MATCH is not set
 # CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
 # CONFIG_PKG_USING_VOFA_PLUS is not set
+# CONFIG_PKG_USING_ZDEBUG is not set
 
 #
 # system packages
@@ -685,6 +705,8 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
 # CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
+# CONFIG_PKG_USING_LITEOS_SDK is not set
+# CONFIG_PKG_USING_TZ_DATABASE is not set
 # CONFIG_PKG_USING_CAIRO is not set
 # CONFIG_PKG_USING_PIXMAN is not set
 # CONFIG_PKG_USING_PARTITION is not set
@@ -708,6 +730,7 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_QBOOT is not set
 # CONFIG_PKG_USING_PPOOL is not set
 # CONFIG_PKG_USING_OPENAMP is not set
+# CONFIG_PKG_USING_RPMSG_LITE is not set
 # CONFIG_PKG_USING_LPM is not set
 # CONFIG_PKG_USING_TLSF is not set
 # CONFIG_PKG_USING_EVENT_RECORDER is not set
@@ -721,6 +744,11 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_AGILE_UPGRADE is not set
 # CONFIG_PKG_USING_FLASH_BLOB is not set
 # CONFIG_PKG_USING_MLIBC is not set
+# CONFIG_PKG_USING_TASK_MSG_BUS is not set
+# CONFIG_PKG_USING_SFDB is not set
+# CONFIG_PKG_USING_RTP is not set
+# CONFIG_PKG_USING_REB is not set
+# CONFIG_PKG_USING_R_RHEALSTONE is not set
 
 #
 # peripheral libraries and drivers
@@ -785,6 +813,7 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_BALANCE is not set
 # CONFIG_PKG_USING_SHT2X is not set
 # CONFIG_PKG_USING_SHT3X is not set
+# CONFIG_PKG_USING_SHT4X is not set
 # CONFIG_PKG_USING_AD7746 is not set
 # CONFIG_PKG_USING_ADT74XX is not set
 # CONFIG_PKG_USING_MAX17048 is not set
@@ -885,6 +914,11 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_FINGERPRINT is not set
 # CONFIG_PKG_USING_BT_ECB02C is not set
 # CONFIG_PKG_USING_UAT is not set
+# CONFIG_PKG_USING_ST7789 is not set
+# CONFIG_PKG_USING_VS1003 is not set
+# CONFIG_PKG_USING_X9555 is not set
+# CONFIG_PKG_USING_SYSTEM_RUN_LED is not set
+# CONFIG_PKG_USING_PHYTIUM_SDK is not set
 # CONFIG_PKG_USING_SPI_TOOLS is not set
 
 #
@@ -899,6 +933,7 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_ULAPACK is not set
 # CONFIG_PKG_USING_QUEST is not set
 # CONFIG_PKG_USING_NAXOS is not set
+# CONFIG_PKG_USING_R_TINYMAIX is not set
 
 #
 # Signal Processing and Control Algorithm Packages
@@ -908,6 +943,7 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_UKAL is not set
 # CONFIG_PKG_USING_DIGITALCTRL is not set
 # CONFIG_PKG_USING_KISSFFT is not set
+# CONFIG_PKG_USING_CMSIS_DSP is not set
 
 #
 # miscellaneous packages
@@ -945,6 +981,7 @@ CONFIG_RT_USING_LDSO=y
 # CONFIG_PKG_USING_MINILZO is not set
 # CONFIG_PKG_USING_QUICKLZ is not set
 # CONFIG_PKG_USING_LZMA is not set
+# CONFIG_PKG_USING_RALARAM is not set
 # CONFIG_PKG_USING_MULTIBUTTON is not set
 # CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
 # CONFIG_PKG_USING_CANFESTIVAL is not set
@@ -1129,6 +1166,7 @@ CONFIG_RT_USING_LDSO=y
 #
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set
 # CONFIG_PKG_USING_ARDUINO_U8G2 is not set
+# CONFIG_PKG_USING_ARDUINO_TFT_ESPI is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ST7735 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set
@@ -1137,6 +1175,7 @@ CONFIG_RT_USING_LDSO=y
 #
 # Timing
 #
+# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set
 # CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set
 # CONFIG_PKG_USING_ARDUINO_TICKER is not set
 # CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set
@@ -1173,7 +1212,6 @@ CONFIG_RT_USING_LDSO=y
 #
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set
-# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set
 
 #
 # Signal IO

+ 13 - 1
bsp/phytium/aarch32/configs/phytium_pi_rtsmart.h

@@ -8,7 +8,8 @@
 
 #define RT_NAME_MAX 16
 #define RT_USING_SMART
-#define RT_CPUS_NR 1
+#define RT_USING_SMP
+#define RT_CPUS_NR 4
 #define RT_ALIGN_SIZE 4
 #define RT_THREAD_PRIORITY_32
 #define RT_THREAD_PRIORITY_MAX 32
@@ -19,6 +20,7 @@
 #define RT_USING_IDLE_HOOK
 #define RT_IDLE_HOOK_LIST_SIZE 4
 #define IDLE_THREAD_STACK_SIZE 4096
+#define SYSTEM_THREAD_STACK_SIZE 4096
 #define RT_USING_TIMER_SOFT
 #define RT_TIMER_THREAD_PRIO 4
 #define RT_TIMER_THREAD_STACK_SIZE 4096
@@ -51,6 +53,7 @@
 #define RT_USING_HEAP
 #define RT_USING_DEVICE
 #define RT_USING_DEVICE_OPS
+#define RT_USING_THREDSAFE_PRINTF
 #define RT_USING_CONSOLE
 #define RT_CONSOLEBUF_SIZE 256
 #define RT_CONSOLE_DEVICE_NAME "uart1"
@@ -297,6 +300,15 @@
 /* Wiced WiFi */
 
 
+/* CYW43012 WiFi */
+
+
+/* BL808 WiFi */
+
+
+/* CYW43439 WiFi */
+
+
 /* IoT Cloud */
 
 

+ 43 - 5
bsp/phytium/aarch32/configs/phytium_pi_rtthread

@@ -11,8 +11,8 @@ CONFIG_RT_NAME_MAX=16
 # CONFIG_RT_USING_SMART is not set
 # CONFIG_RT_USING_NANO is not set
 # CONFIG_RT_USING_AMP is not set
-# CONFIG_RT_USING_SMP is not set
-CONFIG_RT_CPUS_NR=1
+CONFIG_RT_USING_SMP=y
+CONFIG_RT_CPUS_NR=4
 CONFIG_RT_ALIGN_SIZE=4
 # CONFIG_RT_THREAD_PRIORITY_8 is not set
 CONFIG_RT_THREAD_PRIORITY_32=y
@@ -26,6 +26,7 @@ CONFIG_RT_HOOK_USING_FUNC_PTR=y
 CONFIG_RT_USING_IDLE_HOOK=y
 CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
 CONFIG_IDLE_THREAD_STACK_SIZE=4096
+CONFIG_SYSTEM_THREAD_STACK_SIZE=4096
 CONFIG_RT_USING_TIMER_SOFT=y
 CONFIG_RT_TIMER_THREAD_PRIO=4
 CONFIG_RT_TIMER_THREAD_STACK_SIZE=4096
@@ -43,6 +44,7 @@ CONFIG_RT_DEBUGING_COLOR=y
 CONFIG_RT_DEBUGING_CONTEXT=y
 # CONFIG_RT_DEBUGING_AUTO_INIT is not set
 # CONFIG_RT_DEBUGING_PAGE_LEAK is not set
+# CONFIG_RT_DEBUGING_SPINLOCK is not set
 
 #
 # Inter-Thread communication
@@ -76,6 +78,7 @@ CONFIG_RT_USING_HEAP=y
 CONFIG_RT_USING_DEVICE=y
 # CONFIG_RT_USING_DEVICE_OPS is not set
 # CONFIG_RT_USING_INTERRUPT_INFO is not set
+# CONFIG_RT_USING_THREDSAFE_PRINTF is not set
 CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=256
 CONFIG_RT_CONSOLE_DEVICE_NAME="uart1"
@@ -436,6 +439,21 @@ CONFIG_RT_USING_ADT_REF=y
 #
 # CONFIG_PKG_USING_WLAN_WICED is not set
 # CONFIG_PKG_USING_RW007 is not set
+
+#
+# CYW43012 WiFi
+#
+# CONFIG_PKG_USING_WLAN_CYW43012 is not set
+
+#
+# BL808 WiFi
+#
+# CONFIG_PKG_USING_WLAN_BL808 is not set
+
+#
+# CYW43439 WiFi
+#
+# CONFIG_PKG_USING_WLAN_CYW43439 is not set
 # CONFIG_PKG_USING_COAP is not set
 # CONFIG_PKG_USING_NOPOLL is not set
 # CONFIG_PKG_USING_NETUTILS is not set
@@ -457,7 +475,6 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_JIOT-C-SDK is not set
 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
 # CONFIG_PKG_USING_JOYLINK is not set
-# CONFIG_PKG_USING_EZ_IOT_OS is not set
 # CONFIG_PKG_USING_IOTSHARP_SDK is not set
 # CONFIG_PKG_USING_NIMBLE is not set
 # CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
@@ -478,6 +495,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_NMEALIB is not set
 # CONFIG_PKG_USING_PDULIB is not set
 # CONFIG_PKG_USING_BTSTACK is not set
+# CONFIG_PKG_USING_BT_CYW43012 is not set
 # CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
 # CONFIG_PKG_USING_WAYZ_IOTKIT is not set
 # CONFIG_PKG_USING_MAVLINK is not set
@@ -497,6 +515,8 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_ZFTP is not set
 # CONFIG_PKG_USING_WOL is not set
 # CONFIG_PKG_USING_ZEPHYR_POLLING is not set
+# CONFIG_PKG_USING_MATTER_ADAPTATION_LAYER is not set
+# CONFIG_PKG_USING_LHC_MODBUS is not set
 
 #
 # security packages
@@ -543,7 +563,6 @@ CONFIG_RT_USING_ADT_REF=y
 # LVGL: powerful and easy-to-use embedded GUI library
 #
 # CONFIG_PKG_USING_LVGL is not set
-# CONFIG_PKG_USING_LITTLEVGL2RTT is not set
 # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set
 # CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
 
@@ -619,6 +638,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_HASH_MATCH is not set
 # CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
 # CONFIG_PKG_USING_VOFA_PLUS is not set
+# CONFIG_PKG_USING_ZDEBUG is not set
 
 #
 # system packages
@@ -655,6 +675,8 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_UC_COMMON is not set
 # CONFIG_PKG_USING_UC_MODBUS is not set
 # CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
+# CONFIG_PKG_USING_LITEOS_SDK is not set
+# CONFIG_PKG_USING_TZ_DATABASE is not set
 # CONFIG_PKG_USING_CAIRO is not set
 # CONFIG_PKG_USING_PIXMAN is not set
 # CONFIG_PKG_USING_PARTITION is not set
@@ -678,6 +700,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_QBOOT is not set
 # CONFIG_PKG_USING_PPOOL is not set
 # CONFIG_PKG_USING_OPENAMP is not set
+# CONFIG_PKG_USING_RPMSG_LITE is not set
 # CONFIG_PKG_USING_LPM is not set
 # CONFIG_PKG_USING_TLSF is not set
 # CONFIG_PKG_USING_EVENT_RECORDER is not set
@@ -691,6 +714,11 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_AGILE_UPGRADE is not set
 # CONFIG_PKG_USING_FLASH_BLOB is not set
 # CONFIG_PKG_USING_MLIBC is not set
+# CONFIG_PKG_USING_TASK_MSG_BUS is not set
+# CONFIG_PKG_USING_SFDB is not set
+# CONFIG_PKG_USING_RTP is not set
+# CONFIG_PKG_USING_REB is not set
+# CONFIG_PKG_USING_R_RHEALSTONE is not set
 
 #
 # peripheral libraries and drivers
@@ -755,6 +783,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_BALANCE is not set
 # CONFIG_PKG_USING_SHT2X is not set
 # CONFIG_PKG_USING_SHT3X is not set
+# CONFIG_PKG_USING_SHT4X is not set
 # CONFIG_PKG_USING_AD7746 is not set
 # CONFIG_PKG_USING_ADT74XX is not set
 # CONFIG_PKG_USING_MAX17048 is not set
@@ -855,6 +884,11 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_FINGERPRINT is not set
 # CONFIG_PKG_USING_BT_ECB02C is not set
 # CONFIG_PKG_USING_UAT is not set
+# CONFIG_PKG_USING_ST7789 is not set
+# CONFIG_PKG_USING_VS1003 is not set
+# CONFIG_PKG_USING_X9555 is not set
+# CONFIG_PKG_USING_SYSTEM_RUN_LED is not set
+# CONFIG_PKG_USING_PHYTIUM_SDK is not set
 # CONFIG_PKG_USING_SPI_TOOLS is not set
 
 #
@@ -869,6 +903,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_ULAPACK is not set
 # CONFIG_PKG_USING_QUEST is not set
 # CONFIG_PKG_USING_NAXOS is not set
+# CONFIG_PKG_USING_R_TINYMAIX is not set
 
 #
 # Signal Processing and Control Algorithm Packages
@@ -878,6 +913,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_UKAL is not set
 # CONFIG_PKG_USING_DIGITALCTRL is not set
 # CONFIG_PKG_USING_KISSFFT is not set
+# CONFIG_PKG_USING_CMSIS_DSP is not set
 
 #
 # miscellaneous packages
@@ -915,6 +951,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_MINILZO is not set
 # CONFIG_PKG_USING_QUICKLZ is not set
 # CONFIG_PKG_USING_LZMA is not set
+# CONFIG_PKG_USING_RALARAM is not set
 # CONFIG_PKG_USING_MULTIBUTTON is not set
 # CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
 # CONFIG_PKG_USING_CANFESTIVAL is not set
@@ -1099,6 +1136,7 @@ CONFIG_RT_USING_ADT_REF=y
 #
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set
 # CONFIG_PKG_USING_ARDUINO_U8G2 is not set
+# CONFIG_PKG_USING_ARDUINO_TFT_ESPI is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ST7735 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set
@@ -1107,6 +1145,7 @@ CONFIG_RT_USING_ADT_REF=y
 #
 # Timing
 #
+# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set
 # CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set
 # CONFIG_PKG_USING_ARDUINO_TICKER is not set
 # CONFIG_PKG_USING_ARDUINO_TASKSCHEDULER is not set
@@ -1143,7 +1182,6 @@ CONFIG_RT_USING_ADT_REF=y
 #
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MFRC630 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI5351 is not set
-# CONFIG_PKG_USING_ARDUINO_RTCLIB is not set
 
 #
 # Signal IO

+ 12 - 1
bsp/phytium/aarch32/configs/phytium_pi_rtthread.h

@@ -7,7 +7,8 @@
 /* RT-Thread Kernel */
 
 #define RT_NAME_MAX 16
-#define RT_CPUS_NR 1
+#define RT_USING_SMP
+#define RT_CPUS_NR 4
 #define RT_ALIGN_SIZE 4
 #define RT_THREAD_PRIORITY_32
 #define RT_THREAD_PRIORITY_MAX 32
@@ -18,6 +19,7 @@
 #define RT_USING_IDLE_HOOK
 #define RT_IDLE_HOOK_LIST_SIZE 4
 #define IDLE_THREAD_STACK_SIZE 4096
+#define SYSTEM_THREAD_STACK_SIZE 4096
 #define RT_USING_TIMER_SOFT
 #define RT_TIMER_THREAD_PRIO 4
 #define RT_TIMER_THREAD_STACK_SIZE 4096
@@ -271,6 +273,15 @@
 /* Wiced WiFi */
 
 
+/* CYW43012 WiFi */
+
+
+/* BL808 WiFi */
+
+
+/* CYW43439 WiFi */
+
+
 /* IoT Cloud */
 
 

+ 12 - 1
bsp/phytium/aarch32/rtconfig.h

@@ -7,7 +7,8 @@
 /* RT-Thread Kernel */
 
 #define RT_NAME_MAX 16
-#define RT_CPUS_NR 1
+#define RT_USING_SMP
+#define RT_CPUS_NR 4
 #define RT_ALIGN_SIZE 4
 #define RT_THREAD_PRIORITY_32
 #define RT_THREAD_PRIORITY_MAX 32
@@ -18,6 +19,7 @@
 #define RT_USING_IDLE_HOOK
 #define RT_IDLE_HOOK_LIST_SIZE 4
 #define IDLE_THREAD_STACK_SIZE 4096
+#define SYSTEM_THREAD_STACK_SIZE 4096
 #define RT_USING_TIMER_SOFT
 #define RT_TIMER_THREAD_PRIO 4
 #define RT_TIMER_THREAD_STACK_SIZE 4096
@@ -271,6 +273,15 @@
 /* Wiced WiFi */
 
 
+/* CYW43012 WiFi */
+
+
+/* BL808 WiFi */
+
+
+/* CYW43439 WiFi */
+
+
 /* IoT Cloud */
 
 

+ 34 - 23
bsp/phytium/aarch64/.config

@@ -11,8 +11,8 @@ CONFIG_RT_NAME_MAX=16
 # CONFIG_RT_USING_SMART is not set
 # CONFIG_RT_USING_NANO is not set
 # CONFIG_RT_USING_AMP is not set
-# CONFIG_RT_USING_SMP is not set
-CONFIG_RT_CPUS_NR=1
+CONFIG_RT_USING_SMP=y
+CONFIG_RT_CPUS_NR=2
 CONFIG_RT_ALIGN_SIZE=4
 # CONFIG_RT_THREAD_PRIORITY_8 is not set
 CONFIG_RT_THREAD_PRIORITY_32=y
@@ -26,6 +26,7 @@ CONFIG_RT_HOOK_USING_FUNC_PTR=y
 CONFIG_RT_USING_IDLE_HOOK=y
 CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
 CONFIG_IDLE_THREAD_STACK_SIZE=8192
+CONFIG_SYSTEM_THREAD_STACK_SIZE=8192
 CONFIG_RT_USING_TIMER_SOFT=y
 CONFIG_RT_TIMER_THREAD_PRIO=4
 CONFIG_RT_TIMER_THREAD_STACK_SIZE=8192
@@ -43,6 +44,7 @@ CONFIG_RT_DEBUGING_COLOR=y
 CONFIG_RT_DEBUGING_CONTEXT=y
 # CONFIG_RT_DEBUGING_AUTO_INIT is not set
 # CONFIG_RT_DEBUGING_PAGE_LEAK is not set
+# CONFIG_RT_DEBUGING_SPINLOCK is not set
 
 #
 # Inter-Thread communication
@@ -186,7 +188,7 @@ CONFIG_RT_USING_SERIAL_V1=y
 CONFIG_RT_SERIAL_USING_DMA=y
 CONFIG_RT_SERIAL_RB_BUFSZ=64
 CONFIG_RT_USING_CAN=y
-# CONFIG_RT_CAN_USING_HDR is not set
+CONFIG_RT_CAN_USING_HDR=y
 CONFIG_RT_CAN_USING_CANFD=y
 # CONFIG_RT_USING_HWTIMER is not set
 # CONFIG_RT_USING_CPUTIME is not set
@@ -1205,7 +1207,11 @@ CONFIG_RT_USING_SPIM0=y
 CONFIG_RT_USING_SPIM1=y
 CONFIG_RT_USING_SPIM2=y
 CONFIG_RT_USING_SPIM3=y
-# CONFIG_BSP_USING_CAN is not set
+CONFIG_BSP_USING_CAN=y
+CONFIG_RT_USING_CANFD=y
+# CONFIG_RT_USING_FILTER is not set
+CONFIG_RT_USING_CAN0=y
+# CONFIG_RT_USING_CAN1 is not set
 CONFIG_BSP_USING_GPIO=y
 CONFIG_BSP_USING_QSPI=y
 CONFIG_RT_USING_QSPI0=y
@@ -1216,17 +1222,17 @@ CONFIG_RT_LWIP_PBUF_POOL_BUFSIZE=1700
 CONFIG_BSP_USING_PWM=y
 # CONFIG_RT_USING_PWM0 is not set
 # CONFIG_RT_USING_PWM1 is not set
-CONFIG_RT_USING_PWM2=y
+# CONFIG_RT_USING_PWM2 is not set
 # CONFIG_RT_USING_PWM3 is not set
 # CONFIG_RT_USING_PWM4 is not set
 # CONFIG_RT_USING_PWM5 is not set
-# CONFIG_RT_USING_PWM6 is not set
+CONFIG_RT_USING_PWM6=y
 # CONFIG_RT_USING_PWM7 is not set
 CONFIG_BSP_USING_I2C=y
 CONFIG_I2C_USE_MIO=y
-CONFIG_RT_USING_MIO0=y
-CONFIG_RT_USING_MIO1=y
-CONFIG_RT_USING_MIO2=y
+# CONFIG_RT_USING_MIO0 is not set
+# CONFIG_RT_USING_MIO1 is not set
+# CONFIG_RT_USING_MIO2 is not set
 # CONFIG_RT_USING_MIO3 is not set
 # CONFIG_RT_USING_MIO4 is not set
 # CONFIG_RT_USING_MIO5 is not set
@@ -1234,17 +1240,20 @@ CONFIG_RT_USING_MIO2=y
 # CONFIG_RT_USING_MIO7 is not set
 # CONFIG_RT_USING_MIO8 is not set
 # CONFIG_RT_USING_MIO9 is not set
-CONFIG_RT_USING_MIO10=y
+# CONFIG_RT_USING_MIO10 is not set
 # CONFIG_RT_USING_MIO11 is not set
 # CONFIG_RT_USING_MIO12 is not set
 # CONFIG_RT_USING_MIO13 is not set
 # CONFIG_RT_USING_MIO14 is not set
-# CONFIG_RT_USING_MIO15 is not set
+CONFIG_RT_USING_MIO15=y
 # CONFIG_I2C_USE_CONTROLLER is not set
 # CONFIG_BSP_USING_SDIF is not set
+# CONFIG_USING_SDIF0 is not set
+# CONFIG_USING_SDIF1 is not set
+# CONFIG_USING_EMMC is not set
 CONFIG_BSP_USING_DC=y
 # CONFIG_RT_USING_DC_CHANNEL0 is not set
-# CONFIG_RT_USING_DC_CHANNEL1 is not set
+CONFIG_RT_USING_DC_CHANNEL1=y
 # CONFIG_BSP_USING_XHCI is not set
 # CONFIG_BSP_USING_PUSB2 is not set
 
@@ -1254,7 +1263,7 @@ CONFIG_BSP_USING_DC=y
 CONFIG_BSP_USING_GIC=y
 CONFIG_BSP_USING_GICV3=y
 CONFIG_PHYTIUM_ARCH_AARCH64=y
-CONFIG_ARM_SPI_BIND_CPU_ID=2
+CONFIG_ARM_SPI_BIND_CPU_ID=0
 
 #
 # Standalone Setting
@@ -1264,14 +1273,15 @@ CONFIG_TARGET_ARMV8_AARCH64=y
 #
 # Soc configuration
 #
-CONFIG_TARGET_PHYTIUMPI=y
+# CONFIG_TARGET_PHYTIUMPI is not set
 # CONFIG_TARGET_E2000Q is not set
-# CONFIG_TARGET_E2000D is not set
+CONFIG_TARGET_E2000D=y
 # CONFIG_TARGET_E2000S is not set
 # CONFIG_TARGET_FT2004 is not set
 # CONFIG_TARGET_D2000 is not set
-CONFIG_SOC_NAME="phytiumpi"
-CONFIG_SOC_CORE_NUM=4
+CONFIG_SOC_NAME="e2000"
+CONFIG_TARGET_TYPE_NAME="d"
+CONFIG_SOC_CORE_NUM=2
 CONFIG_F32BIT_MEMORY_ADDRESS=0x80000000
 CONFIG_F32BIT_MEMORY_LENGTH=0x80000000
 CONFIG_F64BIT_MEMORY_ADDRESS=0x2000000000
@@ -1285,21 +1295,22 @@ CONFIG_DEFAULT_DEBUG_PRINT_UART1=y
 #
 # Board Configuration
 #
-CONFIG_BOARD_NAME="firefly"
+CONFIG_E2000D_DEMO_BOARD=y
+CONFIG_BOARD_NAME="demo"
+
+#
+# IO mux configuration when board start up
+#
 # CONFIG_USE_SPI_IOPAD is not set
 # CONFIG_USE_GPIO_IOPAD is not set
 # CONFIG_USE_CAN_IOPAD is not set
 # CONFIG_USE_QSPI_IOPAD is not set
 # CONFIG_USE_PWM_IOPAD is not set
+# CONFIG_USE_ADC_IOPAD is not set
 # CONFIG_USE_MIO_IOPAD is not set
 # CONFIG_USE_TACHO_IOPAD is not set
 # CONFIG_USE_UART_IOPAD is not set
 # CONFIG_USE_THIRD_PARTY_IOPAD is not set
-CONFIG_FIREFLY_DEMO_BOARD=y
-
-#
-# IO mux configuration when board start up
-#
 # CONFIG_CUS_DEMO_BOARD is not set
 
 #

+ 2 - 2
bsp/phytium/aarch64/README.md

@@ -21,7 +21,7 @@ tar jxvf aarch64-linux-musleabi_for_x86_64-pc-linux-gnu_stable.tar.bz2
 
 ![tar_toolschain](./figures/tar_toolschain.png)
 
-- 返回`aarch32`目录,运行smart-env.sh脚本,生效环境变量
+- 返回`aarch64`目录,运行smart-env.sh脚本,生效环境变量
 ```shell
 source ./smart-env.sh
 ```
@@ -30,7 +30,7 @@ source ./smart-env.sh
 
 ![aarch64_env](./figures/aarch64_env.png)
 
-- 输入以下指令进行编译,初次编译会拉取`phytium_standalone_sdk工具包`,请确保当前环境下网络畅通
+- 输入以下指令进行编译,初次编译会拉取`phytium_standalone_sdk`工具包,请确保当前环境下网络畅通
 ```shell
 scons -j8
 ```

+ 17 - 12
bsp/phytium/aarch64/rtconfig.h

@@ -7,7 +7,8 @@
 /* RT-Thread Kernel */
 
 #define RT_NAME_MAX 16
-#define RT_CPUS_NR 1
+#define RT_USING_SMP
+#define RT_CPUS_NR 2
 #define RT_ALIGN_SIZE 4
 #define RT_THREAD_PRIORITY_32
 #define RT_THREAD_PRIORITY_MAX 32
@@ -18,6 +19,7 @@
 #define RT_USING_IDLE_HOOK
 #define RT_IDLE_HOOK_LIST_SIZE 4
 #define IDLE_THREAD_STACK_SIZE 8192
+#define SYSTEM_THREAD_STACK_SIZE 8192
 #define RT_USING_TIMER_SOFT
 #define RT_TIMER_THREAD_PRIO 4
 #define RT_TIMER_THREAD_STACK_SIZE 8192
@@ -130,6 +132,7 @@
 #define RT_SERIAL_USING_DMA
 #define RT_SERIAL_RB_BUFSZ 64
 #define RT_USING_CAN
+#define RT_CAN_USING_HDR
 #define RT_CAN_USING_CANFD
 #define RT_USING_I2C
 #define RT_USING_I2C_BITOPS
@@ -384,6 +387,9 @@
 #define RT_USING_SPIM1
 #define RT_USING_SPIM2
 #define RT_USING_SPIM3
+#define BSP_USING_CAN
+#define RT_USING_CANFD
+#define RT_USING_CAN0
 #define BSP_USING_GPIO
 #define BSP_USING_QSPI
 #define RT_USING_QSPI0
@@ -391,21 +397,19 @@
 #define BSP_USING_ETH
 #define RT_LWIP_PBUF_POOL_BUFSIZE 1700
 #define BSP_USING_PWM
-#define RT_USING_PWM2
+#define RT_USING_PWM6
 #define BSP_USING_I2C
 #define I2C_USE_MIO
-#define RT_USING_MIO0
-#define RT_USING_MIO1
-#define RT_USING_MIO2
-#define RT_USING_MIO10
+#define RT_USING_MIO15
 #define BSP_USING_DC
+#define RT_USING_DC_CHANNEL1
 
 /* Board extended module Drivers */
 
 #define BSP_USING_GIC
 #define BSP_USING_GICV3
 #define PHYTIUM_ARCH_AARCH64
-#define ARM_SPI_BIND_CPU_ID 2
+#define ARM_SPI_BIND_CPU_ID 0
 
 /* Standalone Setting */
 
@@ -413,9 +417,10 @@
 
 /* Soc configuration */
 
-#define TARGET_PHYTIUMPI
-#define SOC_NAME "phytiumpi"
-#define SOC_CORE_NUM 4
+#define TARGET_E2000D
+#define SOC_NAME "e2000"
+#define TARGET_TYPE_NAME "d"
+#define SOC_CORE_NUM 2
 #define F32BIT_MEMORY_ADDRESS 0x80000000
 #define F32BIT_MEMORY_LENGTH 0x80000000
 #define F64BIT_MEMORY_ADDRESS 0x2000000000
@@ -425,8 +430,8 @@
 
 /* Board Configuration */
 
-#define BOARD_NAME "firefly"
-#define FIREFLY_DEMO_BOARD
+#define E2000D_DEMO_BOARD
+#define BOARD_NAME "demo"
 
 /* IO mux configuration when board start up */
 

+ 11 - 9
bsp/phytium/board/board.c

@@ -189,27 +189,29 @@ void rt_hw_board_aarch64_init(void)
 }
 #else
 
+#if defined(TARGET_E2000D)
+#define FT_GIC_REDISTRUBUTIOR_OFFSET 2
+#endif
+
 void rt_hw_board_aarch32_init(void)
 {
 
 #if defined(RT_USING_SMART)
-
+    rt_uint32_t mmutable_p = 0;
     /* set io map range is 0xf0000000 ~ 0x10000000  , Memory Protection start address is 0xf0000000  - rt_mpr_size */
     rt_hw_mmu_map_init(&rt_kernel_space, (void *)0xf0000000, 0x10000000, MMUTable, PV_OFFSET);
-
+    rt_hw_init_mmu_table(platform_mem_desc,platform_mem_desc_size) ;
+    mmutable_p = (rt_uint32_t)MMUTable + (rt_uint32_t)PV_OFFSET ;
+    rt_hw_mmu_switch(mmutable_p) ;
     rt_page_init(init_page_region);
-
     /* rt_kernel_space 在start_gcc.S 中被初始化,此函数将iomap 空间放置在kernel space 上 */
     rt_hw_mmu_ioremap_init(&rt_kernel_space, (void *)0xf0000000, 0x10000000);
-    /*  */
     arch_kuser_init(&rt_kernel_space, (void *)0xffff0000);
 #else
-    /*
-       map kernel space memory (totally 1GB = 0x10000000), pv_offset = 0 if not RT_SMART:
-         0x80000000 ~ 0x80100000: kernel stack
-         0x80100000 ~ __bss_end: kernel code and data
-    */
+
     rt_hw_mmu_map_init(&rt_kernel_space, (void *)0x80000000, 0x10000000, MMUTable, 0);
+    rt_hw_init_mmu_table(platform_mem_desc,platform_mem_desc_size) ;
+    rt_hw_mmu_init();
     rt_hw_mmu_ioremap_init(&rt_kernel_space, (void *)0x80000000, 0x10000000);
 #endif
 

+ 3 - 2
bsp/phytium/board/phytium_cpu_id.S

@@ -12,11 +12,12 @@
  */
 
 #include "fparameters.h"
+#include "rtconfig.h"
 
 #ifndef __aarch64__
 .globl cpu_id_mapping
 cpu_id_mapping:
-#if defined(TARGET_E2000Q)
+#if defined(TARGET_E2000Q) || defined(TARGET_PHYTIUMPI)
 cmp r0, #0 // compare cpu_id with 0
 beq map_cpu_id_0
 cmp r0, #1 // compare cpu_id with 1
@@ -121,7 +122,7 @@ return:
 
 .globl cpu_id_mapping
 cpu_id_mapping:
-#if defined(TARGET_E2000Q)
+#if defined(TARGET_E2000Q) || defined(TARGET_PHYTIUMPI)
 cmp x0, #0 // compare cpu_id with 0
 beq map_cpu_id_0
 cmp x0, #1 // compare cpu_id with 1

+ 13 - 1
bsp/phytium/board/secondary_cpu.c

@@ -90,13 +90,21 @@ void rt_hw_secondary_cpu_up(void)
         __DSB();
 #else
         /* code */
-        FPsciCpuMaskOn(cpu_mask, (uintptr)rt_secondary_cpu_entry);
+        char *entry = (char *)rt_secondary_cpu_entry;
+        entry += PV_OFFSET;
+        FPsciCpuMaskOn(cpu_mask, (uintptr)entry);
         __asm__ volatile("dsb" ::: "memory");
 #endif
 
     }
 }
 
+/**
+ * This function will initialize board
+ */
+extern size_t MMUTable[];
+
+
 void rt_hw_secondary_cpu_bsp_start(void)
 {
     /*  spin lock init */
@@ -106,6 +114,10 @@ void rt_hw_secondary_cpu_bsp_start(void)
 #if defined(TARGET_ARMV8_AARCH64)
     extern unsigned long MMUTable[];
     rt_hw_mmu_ktbl_set((unsigned long)MMUTable);
+#else
+    rt_uint32_t mmutable_p;
+    mmutable_p = (rt_uint32_t)MMUTable + (rt_uint32_t)PV_OFFSET ;
+    rt_hw_mmu_switch(mmutable_p) ;
 #endif
 
     /* vector init */

+ 3 - 3
bsp/qemu-vexpress-a9/drivers/automac.h

@@ -8,8 +8,8 @@
 #define AUTOMAC0  0x52
 #define AUTOMAC1  0x54
 #define AUTOMAC2  0x00
-#define AUTOMAC3  0x78
-#define AUTOMAC4  0xe7
-#define AUTOMAC5  0x23
+#define AUTOMAC3  0x60
+#define AUTOMAC4  0x47
+#define AUTOMAC5  0x90
 
 #endif

+ 6 - 2
bsp/qemu-vexpress-a9/drivers/board.c

@@ -62,14 +62,18 @@ rt_region_t init_page_region = {
 void rt_hw_board_init(void)
 {
 #ifdef RT_USING_SMART
+    rt_uint32_t mmutable_p = 0;
     rt_hw_mmu_map_init(&rt_kernel_space, (void*)0xf0000000, 0x10000000, MMUTable, PV_OFFSET);
-
+    rt_hw_init_mmu_table(platform_mem_desc,platform_mem_desc_size);
+    mmutable_p = (rt_uint32_t)MMUTable + (rt_uint32_t)PV_OFFSET ;
+    rt_hw_mmu_switch((void*)mmutable_p);
     rt_page_init(init_page_region);
     rt_hw_mmu_ioremap_init(&rt_kernel_space, (void*)0xf0000000, 0x10000000);
-
     arch_kuser_init(&rt_kernel_space, (void*)0xffff0000);
 #else
     rt_hw_mmu_map_init(&rt_kernel_space, (void*)0x80000000, 0x10000000, MMUTable, 0);
+    rt_hw_init_mmu_table(platform_mem_desc,platform_mem_desc_size);
+    rt_hw_mmu_init();
     rt_hw_mmu_ioremap_init(&rt_kernel_space, (void*)0x80000000, 0x10000000);
 #endif
 

+ 4 - 4
bsp/qemu-vexpress-a9/drivers/secondary_cpu.c

@@ -49,21 +49,21 @@ void rt_hw_secondary_cpu_up(void)
     rt_hw_dsb();
     rt_hw_ipi_send(0, RT_CPU_MASK ^ (1 << rt_hw_cpu_id()));
 }
-
+extern size_t MMUTable[];
 /* Interface */
 void rt_hw_secondary_cpu_bsp_start(void)
 {
     rt_hw_vector_init();
 
     rt_hw_spin_lock(&_cpus_lock);
-
+    rt_uint32_t mmutable_p;
+    mmutable_p = (rt_uint32_t)MMUTable + (rt_uint32_t)PV_OFFSET ;
+    rt_hw_mmu_switch((void*)mmutable_p) ;
     arm_gic_cpu_init(0, 0);
     arm_gic_set_cpu(0, IRQ_PBA8_TIMER0_1, 0x2);
-
     timer_init(0, 10000);
     rt_hw_interrupt_install(IRQ_PBA8_TIMER0_1, rt_hw_timer2_isr, RT_NULL, "tick");
     rt_hw_interrupt_umask(IRQ_PBA8_TIMER0_1);
-
     rt_system_scheduler_start();
 }
 

+ 34 - 80
bsp/raspberry-pi/raspi4-32/.config

@@ -9,6 +9,7 @@
 CONFIG_RT_NAME_MAX=8
 # CONFIG_RT_USING_ARCH_DATA_TYPE is not set
 # CONFIG_RT_USING_SMART is not set
+# CONFIG_RT_USING_NANO is not set
 # CONFIG_RT_USING_AMP is not set
 # CONFIG_RT_USING_SMP is not set
 CONFIG_RT_CPUS_NR=1
@@ -21,6 +22,7 @@ CONFIG_RT_TICK_PER_SECOND=1000
 CONFIG_RT_USING_OVERFLOW_CHECK=y
 CONFIG_RT_USING_HOOK=y
 CONFIG_RT_HOOK_USING_FUNC_PTR=y
+# CONFIG_RT_USING_HOOKLIST is not set
 CONFIG_RT_USING_IDLE_HOOK=y
 CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
 CONFIG_IDLE_THREAD_STACK_SIZE=2048
@@ -71,6 +73,7 @@ CONFIG_RT_USING_HEAP=y
 CONFIG_RT_USING_DEVICE=y
 # CONFIG_RT_USING_DEVICE_OPS is not set
 # CONFIG_RT_USING_INTERRUPT_INFO is not set
+# CONFIG_RT_USING_THREDSAFE_PRINTF is not set
 CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=128
 CONFIG_RT_CONSOLE_DEVICE_NAME="uart1"
@@ -230,7 +233,6 @@ CONFIG_RT_USING_KTIME=y
 #
 # C/C++ and POSIX layer
 #
-# CONFIG_RT_USING_INTERNAL_LIBC_ONLY is not set
 
 #
 # ISO-ANSI C layer
@@ -290,7 +292,6 @@ CONFIG_SAL_USING_LWIP=y
 # CONFIG_SAL_USING_AT is not set
 # CONFIG_SAL_USING_TLS is not set
 CONFIG_SAL_USING_POSIX=y
-# CONFIG_SAL_USING_AF_UNIX is not set
 CONFIG_RT_USING_NETDEV=y
 CONFIG_NETDEV_USING_IFCONFIG=y
 CONFIG_NETDEV_USING_PING=y
@@ -346,6 +347,7 @@ CONFIG_RT_LWIP_ETHTHREAD_MBOX_SIZE=8
 # CONFIG_RT_LWIP_REASSEMBLY_FRAG is not set
 CONFIG_LWIP_NETIF_STATUS_CALLBACK=1
 CONFIG_LWIP_NETIF_LINK_CALLBACK=1
+CONFIG_RT_LWIP_NETIF_NAMESIZE=6
 CONFIG_SO_REUSE=1
 CONFIG_LWIP_SO_RCVTIMEO=1
 CONFIG_LWIP_SO_SNDTIMEO=1
@@ -360,6 +362,12 @@ CONFIG_RT_LWIP_USING_PING=y
 # CONFIG_RT_LWIP_DEBUG is not set
 # CONFIG_RT_USING_AT is not set
 
+#
+# Memory protection
+#
+# CONFIG_RT_USING_MEM_PROTECTION is not set
+# CONFIG_RT_USING_HW_STACK_GUARD is not set
+
 #
 # Utilities
 #
@@ -376,17 +384,6 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_RT_USING_RT_LINK is not set
 # CONFIG_RT_USING_VBUS is not set
 
-#
-# Memory management
-#
-# CONFIG_RT_USING_MEMBLOCK is not set
-
-#
-# Memory protection
-#
-# CONFIG_RT_USING_MEM_PROTECTION is not set
-# CONFIG_RT_USING_HW_STACK_GUARD is not set
-
 #
 # RT-Thread Utestcases
 #
@@ -432,6 +429,16 @@ CONFIG_RT_USING_ADT_REF=y
 # CYW43012 WiFi
 #
 # CONFIG_PKG_USING_WLAN_CYW43012 is not set
+
+#
+# BL808 WiFi
+#
+# CONFIG_PKG_USING_WLAN_BL808 is not set
+
+#
+# CYW43439 WiFi
+#
+# CONFIG_PKG_USING_WLAN_CYW43439 is not set
 # CONFIG_PKG_USING_COAP is not set
 # CONFIG_PKG_USING_NOPOLL is not set
 # CONFIG_PKG_USING_NETUTILS is not set
@@ -453,7 +460,6 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_JIOT-C-SDK is not set
 # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set
 # CONFIG_PKG_USING_JOYLINK is not set
-# CONFIG_PKG_USING_EZ_IOT_OS is not set
 # CONFIG_PKG_USING_IOTSHARP_SDK is not set
 # CONFIG_PKG_USING_NIMBLE is not set
 # CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set
@@ -474,6 +480,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_NMEALIB is not set
 # CONFIG_PKG_USING_PDULIB is not set
 # CONFIG_PKG_USING_BTSTACK is not set
+# CONFIG_PKG_USING_BT_CYW43012 is not set
 # CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
 # CONFIG_PKG_USING_WAYZ_IOTKIT is not set
 # CONFIG_PKG_USING_MAVLINK is not set
@@ -493,6 +500,8 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_ZFTP is not set
 # CONFIG_PKG_USING_WOL is not set
 # CONFIG_PKG_USING_ZEPHYR_POLLING is not set
+# CONFIG_PKG_USING_MATTER_ADAPTATION_LAYER is not set
+# CONFIG_PKG_USING_LHC_MODBUS is not set
 
 #
 # security packages
@@ -675,6 +684,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_QBOOT is not set
 # CONFIG_PKG_USING_PPOOL is not set
 # CONFIG_PKG_USING_OPENAMP is not set
+# CONFIG_PKG_USING_RPMSG_LITE is not set
 # CONFIG_PKG_USING_LPM is not set
 # CONFIG_PKG_USING_TLSF is not set
 # CONFIG_PKG_USING_EVENT_RECORDER is not set
@@ -690,6 +700,9 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_MLIBC is not set
 # CONFIG_PKG_USING_TASK_MSG_BUS is not set
 # CONFIG_PKG_USING_SFDB is not set
+# CONFIG_PKG_USING_RTP is not set
+# CONFIG_PKG_USING_REB is not set
+# CONFIG_PKG_USING_R_RHEALSTONE is not set
 
 #
 # peripheral libraries and drivers
@@ -856,6 +869,10 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_BT_ECB02C is not set
 # CONFIG_PKG_USING_UAT is not set
 # CONFIG_PKG_USING_ST7789 is not set
+# CONFIG_PKG_USING_VS1003 is not set
+# CONFIG_PKG_USING_X9555 is not set
+# CONFIG_PKG_USING_SYSTEM_RUN_LED is not set
+# CONFIG_PKG_USING_PHYTIUM_SDK is not set
 # CONFIG_PKG_USING_SPI_TOOLS is not set
 
 #
@@ -871,6 +888,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_QUEST is not set
 # CONFIG_PKG_USING_NAXOS is not set
 # CONFIG_PKG_USING_NCNN is not set
+# CONFIG_PKG_USING_R_TINYMAIX is not set
 
 #
 # Signal Processing and Control Algorithm Packages
@@ -880,7 +898,6 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_UKAL is not set
 # CONFIG_PKG_USING_DIGITALCTRL is not set
 # CONFIG_PKG_USING_KISSFFT is not set
-# CONFIG_PKG_USING_CMSIS_DSP is not set
 
 #
 # miscellaneous packages
@@ -918,6 +935,7 @@ CONFIG_RT_USING_ADT_REF=y
 # CONFIG_PKG_USING_MINILZO is not set
 # CONFIG_PKG_USING_QUICKLZ is not set
 # CONFIG_PKG_USING_LZMA is not set
+# CONFIG_PKG_USING_RALARAM is not set
 # CONFIG_PKG_USING_MULTIBUTTON is not set
 # CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
 # CONFIG_PKG_USING_CANFESTIVAL is not set
@@ -1164,67 +1182,6 @@ CONFIG_RT_USING_ADT_REF=y
 #
 # Uncategorized
 #
-
-#
-# Privated Packages of RealThread
-#
-# CONFIG_PKG_USING_CODEC is not set
-# CONFIG_PKG_USING_PLAYER is not set
-# CONFIG_PKG_USING_MPLAYER is not set
-# CONFIG_PKG_USING_PERSIMMON_SRC is not set
-# CONFIG_PKG_USING_JS_PERSIMMON is not set
-# CONFIG_PKG_USING_JERRYSCRIPT_WIN32 is not set
-
-#
-# Network Utilities
-#
-# CONFIG_PKG_USING_MDNS is not set
-# CONFIG_PKG_USING_UPNP is not set
-# CONFIG_PKG_USING_WICED is not set
-# CONFIG_PKG_USING_CLOUDSDK is not set
-# CONFIG_PKG_USING_POWER_MANAGER is not set
-# CONFIG_PKG_USING_RT_OTA is not set
-# CONFIG_PKG_USING_RTINSIGHT is not set
-# CONFIG_PKG_USING_SMARTCONFIG is not set
-# CONFIG_PKG_USING_RTX is not set
-# CONFIG_RT_USING_TESTCASE is not set
-# CONFIG_PKG_USING_NGHTTP2 is not set
-# CONFIG_PKG_USING_AVS is not set
-# CONFIG_PKG_USING_ALI_LINKKIT is not set
-# CONFIG_PKG_USING_STS is not set
-# CONFIG_PKG_USING_DLMS is not set
-# CONFIG_PKG_USING_AUDIO_FRAMEWORK is not set
-# CONFIG_PKG_USING_ZBAR is not set
-# CONFIG_PKG_USING_MCF is not set
-# CONFIG_PKG_USING_URPC is not set
-# CONFIG_PKG_USING_DCM is not set
-# CONFIG_PKG_USING_EMQ is not set
-# CONFIG_PKG_USING_CFGM is not set
-# CONFIG_PKG_USING_RT_CMSIS_DAP is not set
-# CONFIG_PKG_USING_SMODULE is not set
-# CONFIG_PKG_USING_SNFD is not set
-# CONFIG_PKG_USING_UDBD is not set
-# CONFIG_PKG_USING_BENCHMARK is not set
-# CONFIG_PKG_USING_UBJSON is not set
-# CONFIG_PKG_USING_DATATYPE is not set
-# CONFIG_PKG_USING_FASTFS is not set
-# CONFIG_PKG_USING_RIL is not set
-# CONFIG_PKG_USING_WATCH_DCM_SVC is not set
-# CONFIG_PKG_USING_WATCH_APP_FWK is not set
-# CONFIG_PKG_USING_GUI_TEST is not set
-# CONFIG_PKG_USING_PMEM is not set
-# CONFIG_PKG_USING_LWRDP is not set
-# CONFIG_PKG_USING_MASAN is not set
-# CONFIG_PKG_USING_BSDIFF_LIB is not set
-# CONFIG_PKG_USING_PRC_DIFF is not set
-
-#
-# RT-Thread Smart
-#
-# CONFIG_PKG_USING_UKERNEL is not set
-# CONFIG_PKG_USING_TRACE_AGENT is not set
-# CONFIG_PKG_USING_DLOG is not set
-# CONFIG_PKG_USING_EXT4 is not set
 CONFIG_BCM2711_SOC=y
 # CONFIG_BSP_SUPPORT_FPU is not set
 
@@ -1268,10 +1225,7 @@ CONFIG_BSP_USING_SDIO0=y
 #
 # Board Peripheral Drivers
 #
-CONFIG_BSP_USING_LCD=y
-# CONFIG_BSP_USING_HDMI_DISPLAY is not set
-CONFIG_BSP_USING_DSI_DISPLAY=y
-# CONFIG_BSP_USING_ILI9486 is not set
+# CONFIG_BSP_USING_LCD is not set
 CONFIG_BSP_USING_TOUCH=y
 CONFIG_BSP_USING_DSI_TOUCH_DEV=y
 # CONFIG_BSP_USING_XPT_TOUCH_DEV is not set

+ 2 - 0
bsp/raspberry-pi/raspi4-32/driver/board.c

@@ -70,6 +70,8 @@ void idle_wfi(void)
  */
 void rt_hw_board_init(void)
 {
+    rt_hw_init_mmu_table(platform_mem_desc,platform_mem_desc_size);
+    rt_hw_mmu_init();
     /* initialize hardware interrupt */
     rt_hw_interrupt_init();
     /* initialize uart */

+ 10 - 17
bsp/raspberry-pi/raspi4-32/rtconfig.h

@@ -134,7 +134,6 @@
 
 /* C/C++ and POSIX layer */
 
-
 /* ISO-ANSI C layer */
 
 /* Timezone and Daylight Saving Time */
@@ -208,6 +207,7 @@
 #define RT_LWIP_ETHTHREAD_MBOX_SIZE 8
 #define LWIP_NETIF_STATUS_CALLBACK 1
 #define LWIP_NETIF_LINK_CALLBACK 1
+#define RT_LWIP_NETIF_NAMESIZE 6
 #define SO_REUSE 1
 #define LWIP_SO_RCVTIMEO 1
 #define LWIP_SO_SNDTIMEO 1
@@ -216,6 +216,9 @@
 #define LWIP_NETIF_LOOPBACK 0
 #define RT_LWIP_USING_PING
 
+/* Memory protection */
+
+
 /* Utilities */
 
 #define RT_USING_ADT
@@ -224,12 +227,6 @@
 #define RT_USING_ADT_HASHMAP
 #define RT_USING_ADT_REF
 
-/* Memory management */
-
-
-/* Memory protection */
-
-
 /* RT-Thread Utestcases */
 
 
@@ -249,6 +246,12 @@
 /* CYW43012 WiFi */
 
 
+/* BL808 WiFi */
+
+
+/* CYW43439 WiFi */
+
+
 /* IoT Cloud */
 
 
@@ -349,14 +352,6 @@
 
 /* Uncategorized */
 
-/* Privated Packages of RealThread */
-
-
-/* Network Utilities */
-
-
-/* RT-Thread Smart */
-
 #define BCM2711_SOC
 
 /* Hardware Drivers Config */
@@ -385,8 +380,6 @@
 
 /* Board Peripheral Drivers */
 
-#define BSP_USING_LCD
-#define BSP_USING_DSI_DISPLAY
 #define BSP_USING_TOUCH
 #define BSP_USING_DSI_TOUCH_DEV
 

+ 62 - 24
libcpu/arm/cortex-a/mmu.c

@@ -58,6 +58,67 @@ void rt_hw_mmu_setmtt(rt_uint32_t vaddrStart, rt_uint32_t vaddrEnd,
     }
 }
 
+void init_mm_setup(unsigned int *mtbl, unsigned int size, unsigned int pv_off)
+{
+    unsigned int va;
+
+    for (va = 0; va < 0x1000; va++)
+    {
+        unsigned int vaddr = (va << 20);
+
+        if (vaddr >= KERNEL_VADDR_START && vaddr - KERNEL_VADDR_START < size)
+        {
+            mtbl[va] = ((va << 20) + pv_off) | NORMAL_MEM;
+        }
+        else if (vaddr >= (KERNEL_VADDR_START + pv_off) && vaddr - (KERNEL_VADDR_START + pv_off) < size)
+        {
+            mtbl[va] = (va << 20) | NORMAL_MEM;
+        }
+        else
+        {
+            mtbl[va] = 0;
+        }
+    }
+}
+
+#ifndef RT_USING_SMART
+static void _init_map_section(rt_uint32_t *mmu_table, rt_uint32_t va,
+                        rt_uint32_t size,rt_uint32_t pa, rt_uint32_t attr)
+{
+    volatile rt_uint32_t *ptt;
+    volatile int i, num_section;
+    ptt  = (rt_uint32_t *)mmu_table + (va >> ARCH_SECTION_SHIFT);
+    num_section = size >> ARCH_SECTION_SHIFT;
+    for(i = 0; i <= num_section; i++)
+    {
+        *ptt = attr | (((pa >> ARCH_SECTION_SHIFT) + i) << ARCH_SECTION_SHIFT);
+        ptt++;
+    }
+}
+#endif
+
+void rt_hw_mem_setup_early(rt_uint32_t *early_mmu_talbe,
+                            rt_uint32_t pv_off)
+{
+    rt_uint32_t size  = 0;
+
+    size = 0x100000 +  (rt_uint32_t)&__bss_end;
+    size &= ~(0x100000 - 1);
+#ifdef RT_USING_SMART
+    size -= KERNEL_VADDR_START;
+    init_mm_setup(early_mmu_talbe, size, pv_off);
+#else
+    rt_uint32_t normal_attr = NORMAL_MEM;
+    extern unsigned char _reset;
+    rt_uint32_t va = (rt_uint32_t) &_reset;
+    /* The starting virtual address is aligned along 0x1000000. */
+    va &= (0x1000000 - 1);
+    size -= va;
+    _init_map_section(early_mmu_talbe, va, size, va + pv_off, normal_attr);
+#endif
+
+}
+
 void rt_hw_init_mmu_table(struct mem_desc *mdesc, rt_uint32_t size)
 {
     void *vaddr;
@@ -147,7 +208,7 @@ int rt_hw_mmu_map_init(struct rt_aspace *aspace, void* v_address, size_t size, s
     rt_ioremap_size = size;
     rt_mpr_start = rt_ioremap_start - rt_mpr_size;
 #else
-    rt_mpr_start = (void *)0 - rt_mpr_size;
+    rt_mpr_start = (void *)((rt_size_t)0 - rt_mpr_size);
 #endif
 
     return 0;
@@ -363,29 +424,6 @@ void rt_hw_aspace_switch(rt_aspace_t aspace)
     }
 }
 
-void init_mm_setup(unsigned int *mtbl, unsigned int size, unsigned int pv_off)
-{
-    unsigned int va;
-
-    for (va = 0; va < 0x1000; va++)
-    {
-        unsigned int vaddr = (va << 20);
-
-        if (vaddr >= KERNEL_VADDR_START && vaddr - KERNEL_VADDR_START < size)
-        {
-            mtbl[va] = ((va << 20) + pv_off) | NORMAL_MEM;
-        }
-        else if (vaddr >= (KERNEL_VADDR_START + pv_off) && vaddr - (KERNEL_VADDR_START + pv_off) < size)
-        {
-            mtbl[va] = (va << 20) | NORMAL_MEM;
-        }
-        else
-        {
-            mtbl[va] = 0;
-        }
-    }
-}
-
 void *rt_hw_mmu_v2p(rt_aspace_t aspace, void* v_addr)
 {
     size_t l1_off, l2_off;

+ 1 - 1
libcpu/arm/cortex-a/mmu.h

@@ -112,7 +112,7 @@ int rt_hw_mmu_ioremap_init(struct rt_aspace *aspace, void *v_address, size_t siz
 void rt_hw_init_mmu_table(struct mem_desc *mdesc, rt_uint32_t size);
 
 void rt_hw_mmu_setup(struct rt_aspace *aspace, struct mem_desc *mdesc, int desc_nr);
-
+void rt_hw_mmu_init(void);
 int rt_hw_mmu_map_init(struct rt_aspace *aspace, void *v_address, size_t size, size_t *vtable, size_t pv_off);
 void *rt_hw_mmu_map(struct rt_aspace *aspace, void *v_addr, void *p_addr, size_t size, size_t attr);
 void rt_hw_mmu_unmap(struct rt_aspace *aspace, void *v_addr, size_t size);

+ 211 - 244
libcpu/arm/cortex-a/start_gcc.S

@@ -8,9 +8,14 @@
  * 2013-07-05     Bernard      the first version
  * 2018-11-22     Jesven       in the interrupt context, use rt_scheduler_do_irq_switch checks
  *                             and switches to a new thread
+ * 2024-01-16     huanghe      restructure this code section following the aarch64 architectural style
  */
 
 #include "rtconfig.h"
+
+#define ARM_CPU_STACK_SIZE_OFFSET   12
+#define ARM_CPU_STACK_SIZE  (1<<ARM_CPU_STACK_SIZE_OFFSET)
+
 .equ Mode_USR,        0x10
 .equ Mode_FIQ,        0x11
 .equ Mode_IRQ,        0x12
@@ -22,17 +27,73 @@
 .equ I_Bit,           0x80   /* when I bit is set, IRQ is disabled */
 .equ F_Bit,           0x40   /* when F bit is set, FIQ is disabled */
 
-#ifdef RT_USING_SMART
-.data
-.align 14
-init_mtbl:
-    .space 16*1024
-#endif
+/*Load the physical address of a symbol into a register. 
+  Through pv_off calculates the offset of the physical address */
+.macro get_phy, reg, symbol, _pvoff
+    ldr \reg, =\symbol
+    add \reg, \_pvoff
+.endm
+/*Calculate the offset between the physical address and the virtual address of the "_reset".*/
+.macro get_pvoff, tmp, out
+    ldr     \tmp, =_reset
+    adr     \out, _reset
+    sub     \out, \out, \tmp
+.endm
+
+pv_off       .req r11 /* Used to store the offset between physical address and the virtual address */
+cpu_id       .req r10 /* Used to store the cpu id */
 
-.text
 /* reset entry */
-.globl _reset
+    .globl _reset
 _reset:
+    /* Calculate the offset between the physical address and the virtual address */
+    get_pvoff r0, pv_off
+
+    /* exit hyp mode  */
+    bl init_cpu_mode
+    /* clear bss section */
+    bl init_kernel_bss
+    /* Initializes the assembly environment stack  */
+    bl init_cpu_stack_early
+
+    /* init mmu  */
+    b init_mmu_early
+
+init_cpu_stack_early:
+
+    cps #Mode_SVC
+    
+    get_phy r0, svc_stack_top, pv_off
+    mov     sp, r0
+
+#ifdef RT_USING_FPU
+    mov r4, #0xfffffff
+    mcr p15, 0, r4, c1, c0, 2
+#endif
+
+    mov pc, lr
+
+init_kernel_bss:
+
+    /* enable I cache + branch prediction */
+    mrc p15, 0, r0, c1, c0, 0
+    orr     r0, r0, #(1<<12)
+    orr     r0, r0, #(1<<11)
+    mcr p15, 0, r0, c1, c0, 0
+
+    mov r0,#0                   /* get a zero      */
+    get_phy r1, __bss_start, pv_off
+    get_phy r2, __bss_end, pv_off
+
+bss_loop:
+    cmp r1,r2                   /* check if data to clear           */
+    strlo r0,[r1],#4            /* clear 4 bytes                    */
+    blo bss_loop                /* loop until done                  */
+
+    mov pc, lr
+
+init_cpu_mode:
+
 #ifdef ARCH_ARMV8
     /* Check for HYP mode */
     mrs r0, cpsr_all
@@ -40,20 +101,26 @@ _reset:
     mov r8, #0x1A
     cmp r0, r8
     beq overHyped
-    b continue
+    b continue_exit
 
 overHyped: /* Get out of HYP mode */
-    adr r1, continue
+    mov r9, lr 
+    /* HYP mode has a dedicated register, called ELR_hyp, 
+    to store the exception return address.
+    The lr register needs to be temporarily saved,
+    otherwise "mov pc lr" cannot be used after switching modes. */
+    adr r1, continue_exit
     msr ELR_hyp, r1
     mrs r1, cpsr_all
-    and r1, r1, #0x1f    /* CPSR_MODE_MASK */
-    orr r1, r1, #0x13    /* CPSR_MODE_SUPERVISOR */
+    and r1, r1, #0xFFFFFFE0    /* CPSR_MODE_MASK */
+    orr r1, r1, #0x13          /* CPSR_MODE_SUPERVISOR */
     msr SPSR_hyp, r1
     eret
 
-continue:
+continue_exit:
+    mov lr ,r9
+    
 #endif
-
 #ifdef SOC_BCM283x
     /* Suspend the other cpu cores */
     mrc p15, 0, r0, c0, c0, 5
@@ -69,23 +136,30 @@ continue:
     mov r8, #0x1A
     cmp r0, r8
     beq overHyped
-    b continue
+    b continue_exit
 
 overHyped: /* Get out of HYP mode */
-    adr r1, continue
+    mov r9, lr 
+    /* HYP mode has a dedicated register, called ELR_hyp, 
+    to store the exception return address.
+    The lr register needs to be temporarily saved,
+    otherwise "mov pc lr" cannot be used after switching modes. */
+    adr r1, continue_exit
     msr ELR_hyp, r1
     mrs r1, cpsr_all
-    and r1, r1, #0x1f    /* CPSR_MODE_MASK */
-    orr r1, r1, #0x13    /* CPSR_MODE_SUPERVISOR */
+    and r1, r1, #0xFFFFFFE0    /* CPSR_MODE_MASK */
+    orr r1, r1, #0x13          /* CPSR_MODE_SUPERVISOR */
     msr SPSR_hyp, r1
     eret
 
-continue:
+continue_exit:
+    mov lr ,r9
     /* set the cpu to SVC32 mode and disable interrupt */
     mrs r0, cpsr
     bic r0, r0, #0x1f
     orr r0, r0, #0x13
     msr cpsr_c, r0
+    
 #endif
 
     /* invalid tlb before enable mmu */
@@ -94,6 +168,7 @@ continue:
     mcr p15, 0, r0, c1, c0, 0
     dsb
     isb
+
     mov r0, #0
     mcr p15, 0, r0, c8, c7, 0
     mcr p15, 0, r0, c7, c5, 0    /* iciallu */
@@ -101,78 +176,31 @@ continue:
     dsb
     isb
 
-#ifdef RT_USING_SMART
-    /* load r5 with PV_OFFSET */
-    ldr r7, =_reset
-    adr r5, _reset
-    sub r5, r5, r7
-
-    mov r7, #0x100000
-    sub r7, #1
-    mvn r8, r7
-
-
-    ldr r9, =KERNEL_VADDR_START
-
-    ldr r6, =__bss_end
-    add r6, r7
-    and r6, r8    /* r6 end vaddr align up to 1M */
-    sub r6, r9    /* r6 is size */
-
-    ldr sp, =svc_stack_n_limit
-    add sp, r5    /* use paddr */
-
-    ldr r0, =init_mtbl
-    add r0, r5
-    mov r1, r6
-    mov r2, r5
-    bl init_mm_setup
-
-    ldr lr, =after_enable_mmu
-    ldr r0, =init_mtbl
-    add r0, r5
-    b enable_mmu
-
-after_enable_mmu:
-#endif
-#ifndef SOC_BCM283x
-    /* set the cpu to SVC32 mode and disable interrupt */
-    cps #Mode_SVC
-#endif
+    mov pc, lr
 
-#ifdef RT_USING_FPU
-    mov r4, #0xfffffff
-    mcr p15, 0, r4, c1, c0, 2
-#endif
+init_mmu_early:
+    get_phy r0, init_mtbl, pv_off
+    mov r1, pv_off
+    bl rt_hw_mem_setup_early
 
-    /* disable the data alignment check */
-    mrc p15, 0, r1, c1, c0, 0
-    bic r1, #(1<<1)             /* Disable Alignment fault checking */
-#ifndef RT_USING_SMART
-    bic r1, #(1<<0)             /* Disable MMU */
-    bic r1, #(1<<2)             /* Disable data cache */
-    bic r1, #(1<<11)            /* Disable program flow prediction */
-    bic r1, #(1<<12)            /* Disable instruction cache */
-    bic r1, #(3<<19)            /* bit[20:19] must be zero */
-#endif /* RT_USING_SMART */
-    mcr p15, 0, r1, c1, c0, 0
-
-#ifndef RT_USING_SMART
-#ifdef RT_USING_SMP
-    /* Use spin-table to start secondary cores */
-    @ get cpu id, and subtract the offset from the stacks base address
+    /* get cpu id */
     bl rt_hw_cpu_id
-    mov r5, r0
+    mov cpu_id ,r0
+    /* enable_mmu_early is changed to master_core_startup */
+    ldr     lr, =master_core_startup
+    
+    cmp cpu_id, #0
+    beq enable_mmu_early
 
-    cmp     r5, #0              @ cpu id == 0
-    beq     normal_setup
 
-    @ cpu id > 0, stop or wait
+#ifdef RT_USING_SMP
 #ifdef RT_SMP_AUTO_BOOT
+    /* if cpu id > 0, stop or wait */
     ldr r0, =secondary_cpu_entry
     mov r1, #0
     str r1, [r0] /* clean secondary_cpu_entry */
-#endif /* RT_SMP_AUTO_BOOT */
+#endif
+#endif
 
 secondary_loop:
     @ cpu core 1 goes into sleep until core 0 wakeup it
@@ -184,115 +212,46 @@ secondary_loop:
     blxne r0 /* if(secondary_cpu_entry) secondary_cpu_entry(); */
 #endif /* RT_SMP_AUTO_BOOT */
     b secondary_loop
+    
+enable_mmu_early:
+    /* init TTBR0  */
+    get_phy r0, init_mtbl, pv_off
+    mcr     p15, #0, r0, c2, c0, #0
+    dmb
+    
+    ldr     r0,=#0x55555555
+    mcr     p15, #0, r0, c3, c0, #0
+
+    /* disable ttbr1 */
+    mov r0, #(1 << 5)            /* PD1=1 */
+    mcr p15, 0, r0, c2, c0, 2    /* ttbcr */
 
-normal_setup:
-#endif /* RT_USING_SMP */
-#endif /* RT_USING_SMART */
-
-    /* enable I cache + branch prediction */
-    mrc p15, 0, r0, c1, c0, 0
-    orr     r0, r0, #(1<<12)
-    orr     r0, r0, #(1<<11)
-    mcr p15, 0, r0, c1, c0, 0
-
-    /* setup stack */
-    bl  stack_setup
-
-    /* clear .bss */
-    mov r0,#0                   /* get a zero                       */
-    ldr r1,=__bss_start         /* bss start                        */
-    ldr r2,=__bss_end           /* bss end                          */
-
-bss_loop:
-    cmp r1,r2                   /* check if data to clear           */
-    strlo r0,[r1],#4            /* clear 4 bytes                    */
-    blo bss_loop                /* loop until done                  */
-
-    mov r0, r5
-    bl rt_kmem_pvoff_set
-
-#ifdef RT_USING_SMP
-    mrc p15, 0, r1, c1, c0, 1
-    mov r0, #(1<<6)
-    orr r1, r0
-    mcr p15, 0, r1, c1, c0, 1   /* enable smp */
-#endif
-
-    /**
-     * void rt_hw_init_mmu_table(struct mem_desc *mdesc, rt_uint32_t size)
-     * initialize the mmu table and enable mmu
-     */
-    ldr r0, =platform_mem_desc
-    ldr r1, =platform_mem_desc_size
-    ldr r1, [r1]
-    bl rt_hw_init_mmu_table
-
-#ifdef RT_USING_SMART
-    ldr r0, =MMUTable     /* vaddr    */
-    add r0, r5            /* to paddr */
-    bl  rt_hw_mmu_switch
-#else
-    bl rt_hw_mmu_init
-#endif
-
-    /* start RT-Thread Kernel */
-    ldr     pc, _rtthread_startup
-_rtthread_startup:
-    .word rtthread_startup
-
-.weak rt_asm_cpu_id
-rt_asm_cpu_id:
-    mrc p15, 0, r0, c0, c0, 5
-    and r0, r0, #0xf
-    mov pc, lr
-
-stack_setup:
-
-#ifdef RT_USING_SMP
-    /* cpu id */
-    mov r10, lr
-    bl rt_asm_cpu_id
-    mov lr, r10
-    add r0, r0, #1
-
-#else
-    mov r0, #1
-#endif
-
+    
+    /*  init stack for cpu mod */
     cps #Mode_UND
-    ldr r1, =und_stack_n
-    add sp, r1, r0, asl #12
+    ldr r1,=und_stack_top
+    sub sp, r1, cpu_id, asl #ARM_CPU_STACK_SIZE_OFFSET
+
 
     cps #Mode_IRQ
-    ldr r1, =irq_stack_n
-    add sp, r1, r0, asl #12
+    ldr r1, =irq_stack_top
+    sub sp, r1, cpu_id, asl #ARM_CPU_STACK_SIZE_OFFSET
+
 
     cps #Mode_FIQ
-    ldr r1, =irq_stack_n
-    add sp, r1, r0, asl #12
+    ldr r1, =irq_stack_top
+    sub sp, r1, cpu_id, asl #ARM_CPU_STACK_SIZE_OFFSET
 
-    cps #Mode_ABT
-    ldr r1, =abt_stack_n
-    add sp, r1, r0, asl #12
 
-    cps #Mode_SVC
-    ldr r1, =svc_stack_n
-    add sp, r1, r0, asl #12
-
-    bx      lr
+    cps #Mode_ABT
+    ldr r1, =abt_stack_top
+    sub sp, r1, cpu_id, asl #ARM_CPU_STACK_SIZE_OFFSET
 
-#ifdef RT_USING_SMART
-.align 2
-.global enable_mmu
-enable_mmu:
-    orr r0, #0x18
-    mcr p15, 0, r0, c2, c0, 0    /* ttbr0 */
 
-    mov r0, #(1 << 5)            /* PD1=1 */
-    mcr p15, 0, r0, c2, c0, 2    /* ttbcr */
+    cps #Mode_SVC
+    ldr r1, =svc_stack_top
+    sub sp, r1, cpu_id, asl #ARM_CPU_STACK_SIZE_OFFSET
 
-    mov r0, #1
-    mcr p15, 0, r0, c3, c0, 0    /* dacr */
 
     /* invalid tlb before enable mmu */
     mov r0, #0
@@ -306,28 +265,14 @@ enable_mmu:
     mcr p15, 0, r0, c1, c0, 0
     dsb
     isb
-    mov pc, lr
 
-.global rt_hw_set_process_id
-rt_hw_set_process_id:
-    LSL r0, r0, #8
-    MCR p15, 0, r0, c13, c0, 1
     mov pc, lr
 
-#endif
-.global rt_hw_mmu_switch
-rt_hw_mmu_switch:
-    orr r0, #0x18
-    mcr p15, 0, r0, c2, c0, 0       // ttbr0
-
-                                    //invalid tlb
-    mov r0, #0
-    mcr p15, 0, r0, c8, c7, 0
-    mcr p15, 0, r0, c7, c5, 0       //iciallu
-    mcr p15, 0, r0, c7, c5, 6       //bpiall
+master_core_startup :
+    mov r0 ,pv_off
+    bl rt_kmem_pvoff_set
 
-    dsb
-    isb
+    ldr     lr, =rtthread_startup
     mov pc, lr
 
 .global rt_hw_mmu_tbl_get
@@ -336,53 +281,29 @@ rt_hw_mmu_tbl_get:
     bic r0, #0x18
     mov pc, lr
 
-_halt:
-    wfe
-    b _halt
+.weak rt_hw_cpu_id
+rt_hw_cpu_id:
+    mrc p15, 0, r0, c0, c0, 5
+    and r0, r0, #0xf
+    mov pc, lr
 
 #ifdef RT_USING_SMP
-
 .global rt_secondary_cpu_entry
 rt_secondary_cpu_entry:
-#ifdef RT_USING_SMART
-    ldr     r0, =_reset
-    adr     r5, _reset
-    sub     r5, r5, r0
-
-    ldr     lr, =after_enable_mmu_n
-    ldr     r0, =init_mtbl
-    add     r0, r5
-    b       enable_mmu
-
-after_enable_mmu_n:
-    ldr     r0, =MMUTable
-    add     r0, r5
-    bl      rt_hw_mmu_switch
-#endif
-
-#ifdef RT_USING_FPU
-    mov r4, #0xfffffff
-    mcr p15, 0, r4, c1, c0, 2
-#endif
-
-    mrc p15, 0, r1, c1, c0, 1
-    mov r0, #(1<<6)
-    orr r1, r0
-    mcr p15, 0, r1, c1, c0, 1    /* enable smp */
+    ldr r0, =_reset
+    adr pv_off, _reset
+    sub pv_off, pv_off, r0
 
-    mrc p15, 0, r0, c1, c0, 0
-    bic r0, #(1<<13)
-    mcr p15, 0, r0, c1, c0, 0
+    bl init_cpu_stack_early
 
-    bl stack_setup
+    /* init mmu  */
+    bl rt_hw_cpu_id
+    mov cpu_id ,r0
 
-    /* initialize the mmu table and enable mmu */
-#ifndef RT_USING_SMART
-    bl rt_hw_mmu_init
+    ldr lr ,= rt_hw_secondary_cpu_bsp_start
+    b enable_mmu_early
 #endif
 
-    b rt_hw_secondary_cpu_bsp_start
-#endif
 
 /* exception handlers: undef, swi, padt, dabt, resv, irq, fiq */
 .section .text.isr, "ax"
@@ -698,9 +619,6 @@ rt_hw_clz:
     clz r0, r0
     bx lr
 
-#ifndef RT_CPUS_NR
-#define RT_CPUS_NR 1
-#endif
 
 #include "asm-generic.h"
 
@@ -711,17 +629,66 @@ START_POINT(_thread_start)
     b       .   /* never here */
 START_POINT_END(_thread_start)
 
+.data
+.align 14
+init_mtbl:
+    .space  (4*4096) /* The  L1 translation table therefore contains 4096 32-bit (word-sized) entries.  */
+
+.global rt_hw_mmu_switch
+rt_hw_mmu_switch:
+    orr r0, #0x18
+    mcr p15, 0, r0, c2, c0, 0       // ttbr0
+                                    //invalid tlb
+    mov r0, #0
+    mcr p15, 0, r0, c8, c7, 0
+    mcr p15, 0, r0, c7, c5, 0       //iciallu
+    mcr p15, 0, r0, c7, c5, 6       //bpiall
+
+    dsb
+    isb
+    mov pc, lr
+
+
+.global rt_hw_set_process_id
+rt_hw_set_process_id:
+    LSL r0, r0, #8
+    MCR p15, 0, r0, c13, c0, 1
+    mov pc, lr
+
+
 .bss
 .align 3     /* align to  2~3=8 */
+
+.cpus_stack:
 svc_stack_n:
-    .space (RT_CPUS_NR << 12)
-svc_stack_n_limit:
+#if defined(RT_USING_SMP) && (RT_CPUS_NR > 1)
+    .space ((RT_CPUS_NR - 1) * ARM_CPU_STACK_SIZE)
+#endif
+    .space (ARM_CPU_STACK_SIZE)
+svc_stack_top:
 
 irq_stack_n:
-    .space (RT_CPUS_NR << 12)
+#if defined(RT_USING_SMP) && (RT_CPUS_NR > 1)
+    .space ((RT_CPUS_NR - 1) * ARM_CPU_STACK_SIZE)
+#endif
+    .space (ARM_CPU_STACK_SIZE)
+irq_stack_top:
+
 
 und_stack_n:
-    .space (RT_CPUS_NR << 12)
+#if defined(RT_USING_SMP) && (RT_CPUS_NR > 1)
+    .space ((RT_CPUS_NR - 1) * ARM_CPU_STACK_SIZE)
+#endif
+    .space (ARM_CPU_STACK_SIZE)
+und_stack_top:
 
 abt_stack_n:
-    .space (RT_CPUS_NR << 12)
+#if defined(RT_USING_SMP) && (RT_CPUS_NR > 1)
+    .space ((RT_CPUS_NR - 1) * ARM_CPU_STACK_SIZE)
+#endif
+    .space (ARM_CPU_STACK_SIZE)
+abt_stack_top:
+
+
+
+