Pārlūkot izejas kodu

[bsp][ESP32_C3]增加ble和wifi驱动|add ble & wifi drivers (#8104)

WCX 1 gadu atpakaļ
vecāks
revīzija
61f7d483e2

+ 26 - 2
bsp/ESP32_C3/.config

@@ -117,7 +117,9 @@ CONFIG_FINSH_USING_OPTION_COMPLETION=y
 #
 #
 CONFIG_RT_USING_DEVICE_IPC=y
 CONFIG_RT_USING_DEVICE_IPC=y
 CONFIG_RT_UNAMED_PIPE_NUMBER=64
 CONFIG_RT_UNAMED_PIPE_NUMBER=64
-# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set
+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=y
 CONFIG_RT_USING_SERIAL_V1=y
 CONFIG_RT_USING_SERIAL_V1=y
 # CONFIG_RT_USING_SERIAL_V2 is not set
 # CONFIG_RT_USING_SERIAL_V2 is not set
@@ -207,6 +209,10 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_RT_USING_SAL is not set
 # CONFIG_RT_USING_SAL is not set
 # CONFIG_RT_USING_NETDEV is not set
 # CONFIG_RT_USING_NETDEV is not set
 # CONFIG_RT_USING_LWIP is not set
 # CONFIG_RT_USING_LWIP is not set
+# CONFIG_RT_USING_LWIP141 is not set
+# CONFIG_RT_USING_LWIP203 is not set
+# CONFIG_RT_USING_LWIP212 is not set
+# CONFIG_RT_USING_LWIP_LATEST is not set
 # CONFIG_RT_USING_AT is not set
 # CONFIG_RT_USING_AT is not set
 
 
 #
 #
@@ -220,6 +226,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_RT_USING_ADT is not set
 # CONFIG_RT_USING_ADT is not set
 # CONFIG_RT_USING_RT_LINK is not set
 # CONFIG_RT_USING_RT_LINK is not set
 # CONFIG_RT_USING_VBUS is not set
 # CONFIG_RT_USING_VBUS is not set
+# CONFIG_RT_USING_KTIME is not set
 
 
 #
 #
 # RT-Thread Utestcases
 # RT-Thread Utestcases
@@ -261,6 +268,11 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 #
 #
 # CONFIG_PKG_USING_WLAN_WICED is not set
 # CONFIG_PKG_USING_WLAN_WICED is not set
 # CONFIG_PKG_USING_RW007 is not set
 # CONFIG_PKG_USING_RW007 is not set
+
+#
+# CYW43012 WiFi
+#
+# CONFIG_PKG_USING_WLAN_CYW43012 is not set
 # CONFIG_PKG_USING_COAP is not set
 # CONFIG_PKG_USING_COAP is not set
 # CONFIG_PKG_USING_NOPOLL is not set
 # CONFIG_PKG_USING_NOPOLL is not set
 # CONFIG_PKG_USING_NETUTILS is not set
 # CONFIG_PKG_USING_NETUTILS is not set
@@ -303,6 +315,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_NMEALIB is not set
 # CONFIG_PKG_USING_NMEALIB is not set
 # CONFIG_PKG_USING_PDULIB is not set
 # CONFIG_PKG_USING_PDULIB is not set
 # CONFIG_PKG_USING_BTSTACK 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_LORAWAN_ED_STACK is not set
 # CONFIG_PKG_USING_WAYZ_IOTKIT is not set
 # CONFIG_PKG_USING_WAYZ_IOTKIT is not set
 # CONFIG_PKG_USING_MAVLINK is not set
 # CONFIG_PKG_USING_MAVLINK is not set
@@ -322,6 +335,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_ZFTP is not set
 # CONFIG_PKG_USING_ZFTP is not set
 # CONFIG_PKG_USING_WOL is not set
 # CONFIG_PKG_USING_WOL is not set
 # CONFIG_PKG_USING_ZEPHYR_POLLING is not set
 # CONFIG_PKG_USING_ZEPHYR_POLLING is not set
+# CONFIG_PKG_USING_MATTER_ADAPTATION_LAYER is not set
 
 
 #
 #
 # security packages
 # security packages
@@ -368,7 +382,6 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # LVGL: powerful and easy-to-use embedded GUI library
 # LVGL: powerful and easy-to-use embedded GUI library
 #
 #
 # CONFIG_PKG_USING_LVGL is not set
 # 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_LV_MUSIC_DEMO is not set
 # CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
 # CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set
 
 
@@ -443,6 +456,7 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0
 # CONFIG_PKG_USING_HASH_MATCH is not set
 # CONFIG_PKG_USING_HASH_MATCH is not set
 # CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
 # CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set
 # CONFIG_PKG_USING_VOFA_PLUS is not set
 # CONFIG_PKG_USING_VOFA_PLUS is not set
+# CONFIG_PKG_USING_ZDEBUG is not set
 
 
 #
 #
 # system packages
 # system packages
@@ -484,6 +498,8 @@ CONFIG_PKG_FREERTOS_USING_CONFIG_H=y
 # CONFIG_PKG_FREERTOS_USING_MEMMANG is not set
 # CONFIG_PKG_FREERTOS_USING_MEMMANG is not set
 CONFIG_PKG_USING_FREERTOS_WRAPPER_LATEST_VERSION=y
 CONFIG_PKG_USING_FREERTOS_WRAPPER_LATEST_VERSION=y
 CONFIG_PKG_FREERTOS_WRAPPER_VER="latest"
 CONFIG_PKG_FREERTOS_WRAPPER_VER="latest"
+# 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_CAIRO is not set
 # CONFIG_PKG_USING_PIXMAN is not set
 # CONFIG_PKG_USING_PIXMAN is not set
 # CONFIG_PKG_USING_PARTITION is not set
 # CONFIG_PKG_USING_PARTITION is not set
@@ -507,6 +523,7 @@ CONFIG_PKG_FREERTOS_WRAPPER_VER="latest"
 # CONFIG_PKG_USING_QBOOT is not set
 # CONFIG_PKG_USING_QBOOT is not set
 # CONFIG_PKG_USING_PPOOL is not set
 # CONFIG_PKG_USING_PPOOL is not set
 # CONFIG_PKG_USING_OPENAMP 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_LPM is not set
 # CONFIG_PKG_USING_TLSF is not set
 # CONFIG_PKG_USING_TLSF is not set
 # CONFIG_PKG_USING_EVENT_RECORDER is not set
 # CONFIG_PKG_USING_EVENT_RECORDER is not set
@@ -520,6 +537,8 @@ CONFIG_PKG_FREERTOS_WRAPPER_VER="latest"
 # CONFIG_PKG_USING_AGILE_UPGRADE is not set
 # CONFIG_PKG_USING_AGILE_UPGRADE is not set
 # CONFIG_PKG_USING_FLASH_BLOB is not set
 # CONFIG_PKG_USING_FLASH_BLOB is not set
 # CONFIG_PKG_USING_MLIBC 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
 
 
 #
 #
 # peripheral libraries and drivers
 # peripheral libraries and drivers
@@ -710,6 +729,7 @@ CONFIG_PKG_ESP_IDF_VER="latest"
 # CONFIG_PKG_USING_UKAL is not set
 # CONFIG_PKG_USING_UKAL is not set
 # CONFIG_PKG_USING_DIGITALCTRL is not set
 # CONFIG_PKG_USING_DIGITALCTRL is not set
 # CONFIG_PKG_USING_KISSFFT is not set
 # CONFIG_PKG_USING_KISSFFT is not set
+# CONFIG_PKG_USING_CMSIS_DSP is not set
 
 
 #
 #
 # miscellaneous packages
 # miscellaneous packages
@@ -931,6 +951,7 @@ CONFIG_PKG_ESP_IDF_VER="latest"
 #
 #
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_GFX_LIBRARY is not set
 # CONFIG_PKG_USING_ARDUINO_U8G2 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_ST7735 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SSD1306 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set
 # CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ILI9341 is not set
@@ -1015,3 +1036,6 @@ CONFIG_RT_BSP_UART_RX_PIN=20
 CONFIG_BSP_USING_GPIO=y
 CONFIG_BSP_USING_GPIO=y
 CONFIG_BSP_USING_UART=y
 CONFIG_BSP_USING_UART=y
 # CONFIG_BSP_USING_I2C0 is not set
 # CONFIG_BSP_USING_I2C0 is not set
+# CONFIG_BSP_USING_WIFI is not set
+# CONFIG_BSP_USING_BLE is not set
+# CONFIG_BSP_ENABLE_GDBSTUB is not set

+ 46 - 0
bsp/ESP32_C3/README.md

@@ -42,6 +42,52 @@ Each peripheral supporting condition for this BSP is as follows:
 | GPIO                     | Support         |                                                              |
 | GPIO                     | Support         |                                                              |
 | UART                     | Support         | Using LUATOS_ESP32C3 development board requires connecting serial port to USB chip UART0_TX and UART0_RX (such as CP2102) |
 | UART                     | Support         | Using LUATOS_ESP32C3 development board requires connecting serial port to USB chip UART0_TX and UART0_RX (such as CP2102) |
 | JTAG debug               | Support         | ESP32C3 usb-linked development boards can be debugged        |
 | JTAG debug               | Support         | ESP32C3 usb-linked development boards can be debugged        |
+| WIFI | Partial support | There are currently some problems, such as `rt_mq_recive` cannot be used in ISR, etc., and we are still trying to solve it |
+| BLE | Partially supported | There are currently some problems, such as running errors caused by the same `PC` and `SP` pointers after `NimBLE` is started for a period of time |
+| GDBStub | Support | You can use the GDB provided by ESP-IDF by turning on the `BSP_ENABLE_GDBSTUB` switch, which will enter GDB mode after a chip error |
+
+Note:
+
+1. WIFI and BLE cannot be enabled at the same time. When using the BLE driver, be sure to turn off the `RT_USING_WIFI` and `LWIP` switches in `menuconfig`. In addition, due to limited personal abilities and lack of debugging equipment, there are problems with the operation of WIFI and BLE drivers. If you can solve it, please contact me [timwcx@qq.com](mailto:timwcx@qq.com), I will be grateful.
+
+2. The BLE driver only supports `NimBLE` and is provided by the `bluetooth` component in `esp-idf`. To use the BLE driver, please refer to `bsp/ESP32_C3/packages/ESP-IDF-latest/examples/bluetooth/nimble` Sample program, please note that the `esp_timer_init()` function must be called to initialize the clock driver before calling the `NimBLE` related interface.
+
+One way to run the BLE sample is to add the sample program to `scons` compilation and call the clock initialization program and sample program entry in `bsp/ESP32_C3/main/main.c`.
+
+```c
+int main(void) {
+   ...
+#ifdef BSP_USING_BLE
+     esp_timer_init(); //Call clock initialization program
+     app_main(); //Call the BLE sample program entry
+#endif
+   ...
+}
+```
+
+3、 Regarding the use of the GDBStub component, please see [ESP-IDF official documentation on GDBStub](https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32c3/api-guides/tools/idf- monitor.html?#gdbstub-gdb), currently I have provided a debugging script `esp32c3.gdb`, the specific usage method is as follows.
+
+```sh
+wcx@tim  ~/rt-thread/bsp/ESP32_C3   esp32 ±  sudo riscv32-esp-elf-gdb # Enter gdb debugging
+GNU gdb (crosstool-NG esp-2022r1-RC1) 9.2.90.20200913-git
+Copyright (C) 2020 Free Software Foundation, Inc.
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+Type "show copying" and "show warranty" for details.
+This GDB was configured as "--host=x86_64-build_pc-linux-gnu --target=riscv32-esp-elf".
+Type "show configuration" for configuration details.
+For bug reporting instructions, please see:
+<http://www.gnu.org/software/gdb/bugs/>.
+Find the GDB manual and other documentation resources online at:
+    <http://www.gnu.org/software/gdb/documentation/>.
+
+For help, type "help".
+Type "apropos word" to search for commands related to "word".
+(gdb) source esp32c3.gpb  # Load gdb script
+0x3fca8c30 in __stack_start__ ()
+(gdb) 
+```
 
 
 ## Environment construction and compilation
 ## Environment construction and compilation
 
 

+ 47 - 0
bsp/ESP32_C3/README_ZH.md

@@ -49,6 +49,53 @@
 | GPIO              |     支持     |  |
 | GPIO              |     支持     |  |
 | UART              |     支持     | 使用LUATOS_ESP32C3开发板需要在UART0_TX和UART0_RX连接串口转USB芯片(如CP2102)|
 | UART              |     支持     | 使用LUATOS_ESP32C3开发板需要在UART0_TX和UART0_RX连接串口转USB芯片(如CP2102)|
 | JTAG调试          |     支持     | ESP32C3采用USB方式和PC链接的开发板可以调试                                |
 | JTAG调试          |     支持     | ESP32C3采用USB方式和PC链接的开发板可以调试                                |
+| WIFI              | 部分支持 | 目前存在一些问题,例如不能在ISR中使用`rt_mq_recive`等,还在尝试解决中 |
+| BLE             | 部分支持 | 目前存在一些问题,例如`NimBLE`启动一段时间后`PC`和`SP`指针相同导致运行错误 |
+| GDBStub         | 支持 | 通过开启`BSP_ENABLE_GDBSTUB`开关即可使用ESP-IDF所提供的GDB,其会在芯片出错后进入GDB模式 |
+
+注:
+
+1、WIFI和BLE不能同时启用,在使用BLE驱动时注意在`menuconfig`中关闭`RT_USING_WIFI`和`LWIP`开关。另外由于个人能力有限且缺乏调试设备,WIFI和BLE驱动运行都有问题,如果可以解决联系我[timwcx@qq.com](mailto:timwcx@qq.com),本人感激不尽。
+
+2、BLE驱动仅支持`NimBLE`,并且由`esp-idf`中的`bluetooth`组件提供,使用BLE驱动可以参考`bsp/ESP32_C3/packages/ESP-IDF-latest/examples/bluetooth/nimble`下的样例程序,注意在调用`NimBLE`相关接口之前要调用`esp_timer_init()`函数初始化时钟驱动。
+
+一种运行BLE样例的方案是将样例程序加入到`scons`编译并在`bsp/ESP32_C3/main/main.c`中调用时钟初始化程序和样例程序入口。
+
+```c
+int main(void) {
+  ...
+#ifdef BSP_USING_BLE
+    esp_timer_init(); //调用时钟初始化程序
+    app_main();   //调用BLE样例程序入口
+#endif
+  ...
+}
+```
+
+3、关于GDBStub组件的使用,文档见[ESP-IDF关于GDBStub官方文档](https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32c3/api-guides/tools/idf-monitor.html?#gdbstub-gdb),目前个人提供了一个调试脚本`esp32c3.gdb`,具体使用方法如下。
+
+```sh
+wcx@tim  ~/rt-thread/bsp/ESP32_C3   esp32 ±  sudo riscv32-esp-elf-gdb # 进入gdb调试
+GNU gdb (crosstool-NG esp-2022r1-RC1) 9.2.90.20200913-git
+Copyright (C) 2020 Free Software Foundation, Inc.
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+Type "show copying" and "show warranty" for details.
+This GDB was configured as "--host=x86_64-build_pc-linux-gnu --target=riscv32-esp-elf".
+Type "show configuration" for configuration details.
+For bug reporting instructions, please see:
+<http://www.gnu.org/software/gdb/bugs/>.
+Find the GDB manual and other documentation resources online at:
+    <http://www.gnu.org/software/gdb/documentation/>.
+
+For help, type "help".
+Type "apropos word" to search for commands related to "word".
+(gdb) source esp32c3.gpb  # 加载gdb脚本
+0x3fca8c30 in __stack_start__ ()
+(gdb) 
+```
+
 
 
 ## 环境搭建及编译
 ## 环境搭建及编译
 
 

BIN
bsp/ESP32_C3/builtin_imgs/partition-table.bin


+ 14 - 0
bsp/ESP32_C3/drivers/Kconfig

@@ -66,8 +66,22 @@ menu "On-chip Peripheral Drivers"
         bool "Enable I2C0"
         bool "Enable I2C0"
         select RT_USING_I2C
         select RT_USING_I2C
         default n        
         default n        
+    
+    config BSP_USING_WIFI
+        bool "Enable WIFI"
+        select RT_USING_WIFI
+        default n
+    
+    config BSP_USING_BLE
+        bool "Enable BLE"
+        default n
+
 endmenu
 endmenu
 
 
+config BSP_ENABLE_GDBSTUB
+    bool "Enable ESP_GDBSTUB compontent"
+    default n
+
 endmenu
 endmenu
 
 
 
 

+ 360 - 0
bsp/ESP32_C3/drivers/drv_wifi.c

@@ -0,0 +1,360 @@
+/*
+ * Copyright (c) 2019 Winner Microelectronics Co., Ltd.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author          Notes
+ * 2023-07-25     WCX1024979076   1st version
+ */
+
+#include <rtthread.h>
+#include <string.h>
+#include <rtdevice.h>
+
+#ifdef RT_USING_WIFI
+#include "drv_wifi.h"
+#include "esp_system.h"
+#include "esp_wifi.h"
+#include "esp_event.h"
+#include "esp_log.h"
+#include "esp_timer.h"
+#include "nvs_flash.h"
+#include "esp_private/wifi.h"
+
+#define DBG_LEVEL DBG_LOG
+#define LOG_TAG  "DRV.WIFI"
+#include <rtdbg.h>
+
+#define MAX_ADDR_LEN        (6)
+
+struct drv_wifi
+{
+    struct rt_wlan_device *wlan;
+    wifi_interface_t wifi_if;
+    rt_uint8_t dev_addr[MAX_ADDR_LEN];
+};
+
+static const struct rt_wlan_dev_ops ops;
+static struct drv_wifi wifi_sta;
+static struct drv_wifi wifi_ap;
+
+#define EXAMPLE_ESP_MAXIMUM_RETRY 5
+#define DEFAULT_SCAN_LIST_SIZE 3
+static int s_retry_num = 0;
+
+wifi_ap_record_t ap_info[DEFAULT_SCAN_LIST_SIZE];
+
+static rt_err_t drv_wlan_scan_stop(struct rt_wlan_device *wlan);
+
+static void wifi_event_handler(void *arg, esp_event_base_t event_base,
+                               int32_t event_id, void *event_data)
+{
+    if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_AP_START) {
+        rt_wlan_dev_indicate_event_handle(wifi_ap.wlan, RT_WLAN_DEV_EVT_AP_START, RT_NULL);
+    } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_AP_STOP) {
+        rt_wlan_dev_indicate_event_handle(wifi_ap.wlan, RT_WLAN_DEV_EVT_AP_STOP, RT_NULL);
+    } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_AP_STACONNECTED) {
+        wifi_event_ap_staconnected_t *event = (wifi_event_ap_staconnected_t *) event_data;
+        rt_wlan_dev_indicate_event_handle(wifi_ap.wlan, RT_WLAN_DEV_EVT_AP_ASSOCIATED, RT_NULL);
+    } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_AP_STADISCONNECTED) {
+        wifi_event_ap_stadisconnected_t *event = (wifi_event_ap_stadisconnected_t *) event_data;
+        rt_wlan_dev_indicate_event_handle(wifi_ap.wlan, RT_WLAN_DEV_EVT_AP_DISASSOCIATED, RT_NULL);
+    } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) {
+        esp_wifi_connect();
+    } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_CONNECTED) {
+        rt_wlan_dev_indicate_event_handle(wifi_sta.wlan, RT_WLAN_DEV_EVT_CONNECT, RT_NULL);
+    } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) {
+        if (s_retry_num < EXAMPLE_ESP_MAXIMUM_RETRY) {
+            esp_wifi_connect();
+            s_retry_num++;
+        } else {
+            rt_wlan_dev_indicate_event_handle(wifi_sta.wlan, RT_WLAN_DEV_EVT_CONNECT_FAIL, RT_NULL);
+        }
+    } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_SCAN_DONE) {
+        drv_wlan_scan_stop(RT_NULL);
+    }
+}
+
+static esp_err_t wifi_sta_receive(void *buffer, uint16_t len, void *eb)
+{
+    rt_wlan_dev_report_data(wifi_sta.wlan, buffer, len);
+    return RT_EOK;
+}
+
+static esp_err_t wifi_ap_receive(void *buffer, uint16_t len, void *eb)
+{
+    rt_wlan_dev_report_data(wifi_ap.wlan, buffer, len);
+    return RT_EOK;
+}
+
+void wifi_init_sta(void)
+{
+}
+
+void wifi_init_softap(void)
+{
+}
+
+/* Initialize Wi-Fi as sta and set scan method */
+static rt_err_t drv_wlan_scan(struct rt_wlan_device *wlan, struct rt_scan_info *scan_info)
+{
+    ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
+    ESP_ERROR_CHECK(esp_wifi_start());
+    esp_wifi_scan_start(NULL, false);
+}
+
+static rt_err_t drv_wlan_init(struct rt_wlan_device *wlan)
+{
+    // 初始化时钟以及事件处理
+    esp_timer_init();
+    esp_event_loop_create_default();
+
+    wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
+    ESP_ERROR_CHECK(esp_wifi_init(&cfg));
+
+    esp_event_handler_instance_t instance_any_id;
+    ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT,
+                                                        ESP_EVENT_ANY_ID,
+                                                        &wifi_event_handler,
+                                                        NULL,
+                                                        &instance_any_id));
+
+    // 注册收到内容回调
+    ESP_ERROR_CHECK(esp_wifi_internal_reg_rxcb(WIFI_IF_STA,  wifi_sta_receive));
+    ESP_ERROR_CHECK(esp_wifi_internal_reg_rxcb(WIFI_IF_AP,  wifi_ap_receive));
+
+    return RT_EOK;
+}
+
+static rt_err_t drv_wlan_mode(struct rt_wlan_device *wlan, rt_wlan_mode_t mode)
+{
+    if (mode == RT_WLAN_STATION) {
+        wifi_init_sta();
+    } else {
+        wifi_init_softap();
+    }
+    return RT_EOK;
+}
+
+
+static rt_err_t drv_wlan_join(struct rt_wlan_device *wlan, struct rt_sta_info *sta_info)
+{
+    wifi_config_t wifi_config = {
+        .sta = {
+            .ssid = "",
+            .password = "",
+            /* Authmode threshold resets to WPA2 as default if password matches WPA2 standards (pasword len => 8).
+             * If you want to connect the device to deprecated WEP/WPA networks, Please set the threshold value
+             * to WIFI_AUTH_WEP/WIFI_AUTH_WPA_PSK and set the password with length and format matching to
+             * WIFI_AUTH_WEP/WIFI_AUTH_WPA_PSK standards.
+             */
+            .threshold.authmode = WIFI_AUTH_WPA_WPA2_PSK,
+            .sae_pwe_h2e = WPA3_SAE_PWE_BOTH,
+        },
+    };
+    rt_memcpy(wifi_config.sta.ssid, sta_info->ssid.val, sta_info->ssid.len);
+    rt_memcpy(wifi_config.sta.password, sta_info->key.val, sta_info->key.len);
+    ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
+    ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config));
+    ESP_ERROR_CHECK(esp_wifi_start());
+    return RT_EOK;
+}
+
+static rt_err_t drv_wlan_softap(struct rt_wlan_device *wlan, struct rt_ap_info *ap_info)
+{
+    wifi_config_t wifi_config = {
+        .ap = {
+            .ssid = "",
+            .ssid_len = 0,
+            .channel = 3,
+            .password = "",
+            .max_connection = 3,
+            .authmode = WIFI_AUTH_WPA_WPA2_PSK,
+            .pmf_cfg = {
+                .required = false,
+            },
+        },
+    };
+    rt_memcpy(wifi_config.ap.ssid, ap_info->ssid.val, ap_info->ssid.len);
+    rt_memcpy(wifi_config.ap.password, ap_info->key.val, ap_info->key.len);
+    wifi_config.ap.ssid_len = ap_info->ssid.len;
+    ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP));
+    ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &wifi_config));
+    ESP_ERROR_CHECK(esp_wifi_start());
+
+    drv_wlan_scan_stop(RT_NULL);
+    return RT_EOK;
+}
+
+static rt_err_t drv_wlan_disconnect(struct rt_wlan_device *wlan)
+{
+    ESP_ERROR_CHECK(esp_wifi_disconnect());
+    return RT_EOK;
+}
+
+static rt_err_t drv_wlan_ap_stop(struct rt_wlan_device *wlan)
+{
+    return RT_EOK;
+}
+
+static rt_err_t drv_wlan_ap_deauth(struct rt_wlan_device *wlan, rt_uint8_t mac[])
+{
+    return RT_EOK;
+}
+
+static rt_err_t drv_wlan_scan_stop(struct rt_wlan_device *wlan)
+{
+    struct rt_wlan_info wlan_info;
+    struct rt_wlan_buff buff;
+    uint16_t number = DEFAULT_SCAN_LIST_SIZE;
+    uint16_t ap_count = 0;
+
+    memset(ap_info, 0, sizeof(ap_info));
+
+    ESP_ERROR_CHECK(esp_wifi_scan_get_ap_records(&number, ap_info));
+    ESP_ERROR_CHECK(esp_wifi_scan_get_ap_num(&ap_count));
+    for (int i = 0; (i < DEFAULT_SCAN_LIST_SIZE) && (i < ap_count); i++) {
+        rt_memset(&wlan_info, 0, sizeof(wlan_info));
+        rt_memcpy(&wlan_info.bssid[0], ap_info[i].bssid, 6);
+        rt_memcpy(wlan_info.ssid.val, ap_info[i].ssid , strlen(ap_info[i].ssid));
+
+        wlan_info.ssid.len = strlen(ap_info[i].ssid);
+        wlan_info.hidden = 0;
+        wlan_info.channel = (rt_int16_t)ap_info[i].primary;
+        wlan_info.rssi = -(char)(0x100 - ap_info[i].rssi);
+        wlan_info.band = RT_802_11_BAND_2_4GHZ;
+        wlan_info.security = SECURITY_UNKNOWN;
+
+        buff.data = &wlan_info;
+        buff.len = sizeof(wlan_info);
+        rt_wlan_dev_indicate_event_handle(wifi_sta.wlan, RT_WLAN_DEV_EVT_SCAN_REPORT, &buff);
+    }
+    esp_wifi_scan_stop();
+    return RT_EOK;
+}
+
+static int drv_wlan_get_rssi(struct rt_wlan_device *wlan)
+{
+    return 0;
+}
+
+static rt_err_t drv_wlan_set_powersave(struct rt_wlan_device *wlan, int level)
+{
+    return RT_EOK;
+}
+
+static int drv_wlan_get_powersave(struct rt_wlan_device *wlan)
+{
+    return 0;
+}
+
+static rt_err_t drv_wlan_cfg_promisc(struct rt_wlan_device *wlan, rt_bool_t start)
+{
+    return RT_EOK;
+}
+
+static rt_err_t drv_wlan_cfg_filter(struct rt_wlan_device *wlan, struct rt_wlan_filter *filter)
+{
+    return -RT_EINVAL;/* not support */
+}
+
+static rt_err_t drv_wlan_set_channel(struct rt_wlan_device *wlan, int channel)
+{
+    return RT_EOK;
+}
+
+static int drv_wlan_get_channel(struct rt_wlan_device *wlan)
+{
+    return 0;
+}
+
+static rt_err_t drv_wlan_set_country(struct rt_wlan_device *wlan, rt_country_code_t country_code)
+{
+    return RT_EOK;
+}
+
+static rt_country_code_t drv_wlan_get_country(struct rt_wlan_device *wlan)
+{
+    return 0;   //RT_EOK;
+}
+
+static rt_err_t drv_wlan_set_mac(struct rt_wlan_device *wlan, rt_uint8_t mac[])
+{
+    return RT_EOK;
+}
+
+static rt_err_t drv_wlan_get_mac(struct rt_wlan_device *wlan, rt_uint8_t mac[])
+{
+    return RT_EOK;
+}
+
+static int drv_wlan_recv(struct rt_wlan_device *wlan, void *buff, int len)
+{
+    return RT_EOK;
+}
+
+static int drv_wlan_send(struct rt_wlan_device *wlan, void *buff, int len)
+{
+    struct drv_wifi* wifi = wlan->user_data;
+    esp_wifi_internal_tx(wifi->wifi_if, buff, len);
+    return RT_EOK;
+}
+
+static const struct rt_wlan_dev_ops ops =
+{
+    .wlan_init              = drv_wlan_init,
+    .wlan_mode              = drv_wlan_mode,
+    .wlan_scan              = drv_wlan_scan,
+    .wlan_join              = drv_wlan_join,
+    .wlan_softap            = drv_wlan_softap,
+    .wlan_disconnect        = drv_wlan_disconnect,
+    .wlan_ap_stop           = drv_wlan_ap_stop,
+    .wlan_ap_deauth         = drv_wlan_ap_deauth,
+    .wlan_scan_stop         = drv_wlan_scan_stop,
+    .wlan_get_rssi          = drv_wlan_get_rssi,
+    .wlan_set_powersave     = drv_wlan_set_powersave,
+    .wlan_get_powersave     = drv_wlan_get_powersave,
+    .wlan_cfg_promisc       = drv_wlan_cfg_promisc,
+    .wlan_cfg_filter        = drv_wlan_cfg_filter,
+    .wlan_set_channel       = drv_wlan_set_channel,
+    .wlan_get_channel       = drv_wlan_get_channel,
+    .wlan_set_country       = drv_wlan_set_country,
+    .wlan_get_country       = drv_wlan_get_country,
+    .wlan_set_mac           = drv_wlan_set_mac,
+    .wlan_get_mac           = drv_wlan_get_mac,
+    .wlan_recv              = drv_wlan_recv,
+    .wlan_send              = drv_wlan_send,
+};
+
+int rt_hw_wifi_init(void)
+{
+    // 初始化nvs_flash
+    esp_err_t esp_ret = nvs_flash_init();
+
+    if (esp_ret == ESP_ERR_NVS_NO_FREE_PAGES || esp_ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
+        ESP_ERROR_CHECK(nvs_flash_erase());
+        esp_ret = nvs_flash_init();
+    }
+    ESP_ERROR_CHECK(esp_ret);
+
+    // 向系统注册
+    static struct rt_wlan_device wlan;
+    static struct rt_wlan_device wlan2;
+
+    rt_memset(&wifi_sta, 0, sizeof(wifi_sta));
+    wifi_sta.wifi_if = WIFI_IF_STA;
+    rt_err_t ret = rt_wlan_dev_register(&wlan, RT_WLAN_DEVICE_STA_NAME, &ops, 0, &wifi_sta);
+    wifi_sta.wlan = &wlan;
+
+    rt_memset(&wifi_ap, 0, sizeof(wifi_ap));
+    wifi_ap.wifi_if = WIFI_IF_AP;
+    ret |= rt_wlan_dev_register(&wlan2, RT_WLAN_DEVICE_AP_NAME, &ops, 0, &wifi_ap);
+    wifi_ap.wlan = &wlan2;
+
+    return ret;
+}
+
+INIT_DEVICE_EXPORT(rt_hw_wifi_init);
+
+#endif /* RT_USING_WIFI */

+ 18 - 0
bsp/ESP32_C3/drivers/drv_wifi.h

@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2019 Winner Microelectronics Co., Ltd.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author          Notes
+ * 2023-07-25     WCX1024979076   1st version
+ */
+
+#ifndef __DRV_WIFI_H__
+#define __DRV_WIFI_H__
+
+#ifdef RT_USING_WIFI
+int rt_hw_wifi_init(void);
+#endif /* RT_USING_WIFI */
+
+#endif /* __DRV_WIFI_H__ */

+ 333 - 7
bsp/ESP32_C3/drivers/sdkconfig.h

@@ -2,6 +2,7 @@
  * Automatically generated file. DO NOT EDIT.
  * Automatically generated file. DO NOT EDIT.
  * Espressif IoT Development Framework (ESP-IDF) Configuration Header
  * Espressif IoT Development Framework (ESP-IDF) Configuration Header
  */
  */
+#include "rtconfig.h"
 #pragma once
 #pragma once
 #define CONFIG_SOC_ADC_SUPPORTED 1
 #define CONFIG_SOC_ADC_SUPPORTED 1
 #define CONFIG_SOC_DEDICATED_GPIO_SUPPORTED 1
 #define CONFIG_SOC_DEDICATED_GPIO_SUPPORTED 1
@@ -245,8 +246,8 @@
 #define CONFIG_ESPTOOLPY_FLASHMODE "dio"
 #define CONFIG_ESPTOOLPY_FLASHMODE "dio"
 #define CONFIG_ESPTOOLPY_FLASHFREQ_80M 1
 #define CONFIG_ESPTOOLPY_FLASHFREQ_80M 1
 #define CONFIG_ESPTOOLPY_FLASHFREQ "80m"
 #define CONFIG_ESPTOOLPY_FLASHFREQ "80m"
-#define CONFIG_ESPTOOLPY_FLASHSIZE_4MB 1
-#define CONFIG_ESPTOOLPY_FLASHSIZE "4MB"
+#define CONFIG_ESPTOOLPY_FLASHSIZE_2MB 1
+#define CONFIG_ESPTOOLPY_FLASHSIZE "2MB"
 #define CONFIG_ESPTOOLPY_BEFORE_RESET 1
 #define CONFIG_ESPTOOLPY_BEFORE_RESET 1
 #define CONFIG_ESPTOOLPY_BEFORE "default_reset"
 #define CONFIG_ESPTOOLPY_BEFORE "default_reset"
 #define CONFIG_ESPTOOLPY_AFTER_RESET 1
 #define CONFIG_ESPTOOLPY_AFTER_RESET 1
@@ -257,24 +258,131 @@
 #define CONFIG_PARTITION_TABLE_FILENAME "partitions_singleapp.csv"
 #define CONFIG_PARTITION_TABLE_FILENAME "partitions_singleapp.csv"
 #define CONFIG_PARTITION_TABLE_OFFSET 0x8000
 #define CONFIG_PARTITION_TABLE_OFFSET 0x8000
 #define CONFIG_PARTITION_TABLE_MD5 1
 #define CONFIG_PARTITION_TABLE_MD5 1
+#if defined(BSP_USING_WIFI) || defined(BSP_USING_BLE)
+#define CONFIG_ESP_WIFI_SSID "myssid"
+#define CONFIG_ESP_WIFI_PASSWORD "mypassword"
+#define CONFIG_ESP_MAXIMUM_RETRY 5
+#define CONFIG_ESP_WIFI_AUTH_WPA2_PSK 1
+#endif
 #define CONFIG_COMPILER_OPTIMIZATION_DEFAULT 1
 #define CONFIG_COMPILER_OPTIMIZATION_DEFAULT 1
 #define CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE 1
 #define CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE 1
 #define CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB 1
 #define CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB 1
 #define CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL 2
 #define CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL 2
 #define CONFIG_COMPILER_HIDE_PATHS_MACROS 1
 #define CONFIG_COMPILER_HIDE_PATHS_MACROS 1
 #define CONFIG_COMPILER_STACK_CHECK_MODE_NONE 1
 #define CONFIG_COMPILER_STACK_CHECK_MODE_NONE 1
+#if defined(BSP_USING_WIFI) || defined(BSP_USING_BLE)
+#define CONFIG_APPTRACE_DEST_NONE 1
+#define CONFIG_APPTRACE_DEST_UART_NONE 1
+#define CONFIG_APPTRACE_UART_TASK_PRIO 1
+#define CONFIG_APPTRACE_LOCK_ENABLE 1
+#endif
+#ifdef BSP_USING_BLE
+#define CONFIG_BT_ENABLED 1
+#define CONFIG_BT_NIMBLE_ENABLED 1
+#define CONFIG_BT_CONTROLLER_ENABLED 1
+#define CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_INTERNAL 1
+#define CONFIG_BT_NIMBLE_LOG_LEVEL_INFO 1
+#define CONFIG_BT_NIMBLE_LOG_LEVEL 1
+#define CONFIG_BT_NIMBLE_MAX_CONNECTIONS 3
+#define CONFIG_BT_NIMBLE_MAX_BONDS 3
+#define CONFIG_BT_NIMBLE_MAX_CCCDS 8
+#define CONFIG_BT_NIMBLE_L2CAP_COC_MAX_NUM 0
+#define CONFIG_BT_NIMBLE_PINNED_TO_CORE 0
+#define CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE 4096
+#define CONFIG_BT_NIMBLE_ROLE_CENTRAL 1
+#define CONFIG_BT_NIMBLE_ROLE_PERIPHERAL 1
+#define CONFIG_BT_NIMBLE_ROLE_BROADCASTER 1
+#define CONFIG_BT_NIMBLE_ROLE_OBSERVER 1
+#define CONFIG_BT_NIMBLE_SECURITY_ENABLE 1
+#define CONFIG_BT_NIMBLE_SM_LEGACY 1
+#define CONFIG_BT_NIMBLE_SM_SC 1
+#define CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_ENCRYPTION 1
+#define CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME "nimble"
+#define CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN 31
+#define CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU 256
+#define CONFIG_BT_NIMBLE_SVC_GAP_APPEARANCE 0x0
+#define CONFIG_BT_NIMBLE_MSYS_1_BLOCK_COUNT 12
+#define CONFIG_BT_NIMBLE_MSYS_1_BLOCK_SIZE 256
+#define CONFIG_BT_NIMBLE_MSYS_2_BLOCK_COUNT 24
+#define CONFIG_BT_NIMBLE_MSYS_2_BLOCK_SIZE 320
+#define CONFIG_BT_NIMBLE_ACL_BUF_COUNT 24
+#define CONFIG_BT_NIMBLE_ACL_BUF_SIZE 255
+#define CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE 70
+#define CONFIG_BT_NIMBLE_HCI_EVT_HI_BUF_COUNT 30
+#define CONFIG_BT_NIMBLE_HCI_EVT_LO_BUF_COUNT 8
+#define CONFIG_BT_NIMBLE_GATT_MAX_PROCS 4
+#define CONFIG_BT_NIMBLE_RPA_TIMEOUT 900
+#define CONFIG_BT_NIMBLE_CRYPTO_STACK_MBEDTLS 1
+#define CONFIG_BT_NIMBLE_HS_STOP_TIMEOUT_MS 2000
+#define CONFIG_BT_NIMBLE_ENABLE_CONN_REATTEMPT 1
+#define CONFIG_BT_NIMBLE_MAX_CONN_REATTEMPT 3
+#define CONFIG_BT_NIMBLE_50_FEATURE_SUPPORT 1
+#define CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_2M_PHY 1
+#define CONFIG_BT_NIMBLE_LL_CFG_FEAT_LE_CODED_PHY 1
+#define CONFIG_BT_NIMBLE_MAX_PERIODIC_SYNCS 0
+#define CONFIG_BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_DIS 1
+#define CONFIG_BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_EFF 0
+#define CONFIG_BT_NIMBLE_WHITELIST_SIZE 12
+#define CONFIG_BT_NIMBLE_USE_ESP_TIMER 1
+#define CONFIG_BT_NIMBLE_LEGACY_VHCI_ENABLE 1
+#define CONFIG_BT_CTRL_MODE_EFF 1
+#define CONFIG_BT_CTRL_BLE_MAX_ACT 10
+#define CONFIG_BT_CTRL_BLE_MAX_ACT_EFF 10
+#define CONFIG_BT_CTRL_BLE_STATIC_ACL_TX_BUF_NB 0
+#define CONFIG_BT_CTRL_PINNED_TO_CORE 0
+#define CONFIG_BT_CTRL_HCI_MODE_VHCI 1
+#define CONFIG_BT_CTRL_HCI_TL 1
+#define CONFIG_BT_CTRL_ADV_DUP_FILT_MAX 30
+#define CONFIG_BT_CTRL_HW_CCA_VAL 20
+#define CONFIG_BT_CTRL_HW_CCA_EFF 0
+#define CONFIG_BT_CTRL_CE_LENGTH_TYPE_ORIG 1
+#define CONFIG_BT_CTRL_CE_LENGTH_TYPE_EFF 0
+#define CONFIG_BT_CTRL_TX_ANTENNA_INDEX_0 1
+#define CONFIG_BT_CTRL_TX_ANTENNA_INDEX_EFF 0
+#define CONFIG_BT_CTRL_RX_ANTENNA_INDEX_0 1
+#define CONFIG_BT_CTRL_RX_ANTENNA_INDEX_EFF 0
+#define CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_P3 1
+#define CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_EFF 9
+#define CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP 1
+#define CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_NUM 100
+#define CONFIG_BT_CTRL_BLE_ADV_REPORT_DISCARD_THRSHOLD 20
+#define CONFIG_BT_CTRL_BLE_SCAN_DUPL 1
+#define CONFIG_BT_CTRL_SCAN_DUPL_TYPE_DEVICE 1
+#define CONFIG_BT_CTRL_SCAN_DUPL_TYPE 0
+#define CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE 100
+#define CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_DIS 1
+#define CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EFF 0
+#define CONFIG_BT_CTRL_SLEEP_MODE_EFF 0
+#define CONFIG_BT_CTRL_SLEEP_CLOCK_EFF 0
+#define CONFIG_BT_CTRL_HCI_TL_EFF 1
+#endif
 #define CONFIG_SPI_MASTER_ISR_IN_IRAM 1
 #define CONFIG_SPI_MASTER_ISR_IN_IRAM 1
 #define CONFIG_SPI_SLAVE_ISR_IN_IRAM 1
 #define CONFIG_SPI_SLAVE_ISR_IN_IRAM 1
 #define CONFIG_EFUSE_MAX_BLK_LEN 256
 #define CONFIG_EFUSE_MAX_BLK_LEN 256
+#if defined(BSP_USING_WIFI) || defined(BSP_USING_BLE)
+#define CONFIG_ESP_TLS_USING_MBEDTLS 1
+#define CONFIG_ESP_TLS_USE_DS_PERIPHERAL 1
+#endif
 #define CONFIG_ESP_ERR_TO_NAME_LOOKUP 1
 #define CONFIG_ESP_ERR_TO_NAME_LOOKUP 1
+#if defined(BSP_USING_WIFI) || defined(BSP_USING_BLE)
+#define CONFIG_ETH_ENABLED 1
+#define CONFIG_ETH_USE_SPI_ETHERNET 1
+#define CONFIG_ESP_EVENT_POST_FROM_ISR 1
+#define CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR 1
+#define CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS 1
+#define CONFIG_HTTPD_MAX_REQ_HDR_LEN 512
+#define CONFIG_HTTPD_MAX_URI_LEN 512
+#define CONFIG_HTTPD_ERR_RESP_NO_DELAY 1
+#define CONFIG_HTTPD_PURGE_BUF_LEN 32
+#endif
 #define CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA 1
 #define CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA 1
 #define CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP 1
 #define CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP 1
 #define CONFIG_ESP_MAC_ADDR_UNIVERSE_BT 1
 #define CONFIG_ESP_MAC_ADDR_UNIVERSE_BT 1
 #define CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH 1
 #define CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH 1
 #define CONFIG_ESP32C3_UNIVERSAL_MAC_ADDRESSES_FOUR 1
 #define CONFIG_ESP32C3_UNIVERSAL_MAC_ADDRESSES_FOUR 1
 #define CONFIG_ESP32C3_UNIVERSAL_MAC_ADDRESSES 4
 #define CONFIG_ESP32C3_UNIVERSAL_MAC_ADDRESSES 4
-#define CONFIG_ESP_SLEEP_POWER_DOWN_FLASH 1
 #define CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND 1
 #define CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND 1
+#define CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND 1
 #define CONFIG_RTC_CLK_SRC_INT_RC 1
 #define CONFIG_RTC_CLK_SRC_INT_RC 1
 #define CONFIG_RTC_CLK_CAL_CYCLES 1024
 #define CONFIG_RTC_CLK_CAL_CYCLES 1024
 #define CONFIG_RTC_CLOCK_BBPLL_POWER_ON_WITH_USB 1
 #define CONFIG_RTC_CLOCK_BBPLL_POWER_ON_WITH_USB 1
@@ -285,13 +393,30 @@
 #define CONFIG_ESP32C3_REV_MIN 3
 #define CONFIG_ESP32C3_REV_MIN 3
 #define CONFIG_XTAL_FREQ_40 1
 #define CONFIG_XTAL_FREQ_40 1
 #define CONFIG_XTAL_FREQ 40
 #define CONFIG_XTAL_FREQ 40
+#if defined(BSP_USING_WIFI) || defined(BSP_USING_BLE)
+#define CONFIG_LCD_PANEL_IO_FORMAT_BUF_SIZE 32
+#define CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL 120
+#define CONFIG_ESP_NETIF_TCPIP_LWIP 1
+#define CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE 1
+#define CONFIG_ESP_PHY_MAX_WIFI_TX_POWER 20
+#define CONFIG_ESP_PHY_MAX_TX_POWER 20
+#define CONFIG_ESP_PHY_REDUCE_TX_POWER 1
+#define CONFIG_ESP_PHY_ENABLE_USB 1
+#endif
 #define CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP 1
 #define CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP 1
 #define CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160 1
 #define CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160 1
 #define CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ 160
 #define CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ 160
+#ifdef BSP_ENABLE_GDBSTUB
+#define CONFIG_ESP_SYSTEM_PANIC_GDBSTUB 1
+#else
 #define CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT 1
 #define CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT 1
+#endif
 #define CONFIG_ESP_SYSTEM_SINGLE_CORE_MODE 1
 #define CONFIG_ESP_SYSTEM_SINGLE_CORE_MODE 1
 #define CONFIG_ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK 1
 #define CONFIG_ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK 1
 #define CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP 1
 #define CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP 1
+#if defined(BSP_USING_WIFI) || defined(BSP_USING_BLE)
+#define CONFIG_ESP_SYSTEM_USE_EH_FRAME 1
+#endif
 #define CONFIG_ESP_SYSTEM_MEMPROT_FEATURE 1
 #define CONFIG_ESP_SYSTEM_MEMPROT_FEATURE 1
 #define CONFIG_ESP_SYSTEM_MEMPROT_FEATURE_LOCK 1
 #define CONFIG_ESP_SYSTEM_MEMPROT_FEATURE_LOCK 1
 #define CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE 32
 #define CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE 32
@@ -310,14 +435,47 @@
 #define CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7 1
 #define CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7 1
 #define CONFIG_ESP_BROWNOUT_DET_LVL 7
 #define CONFIG_ESP_BROWNOUT_DET_LVL 7
 #define CONFIG_ESP_SYSTEM_BROWNOUT_INTR 1
 #define CONFIG_ESP_SYSTEM_BROWNOUT_INTR 1
-#define CONFIG_ESP_IPC_TASK_STACK_SIZE 1536
+#if defined(BSP_USING_WIFI) || defined(BSP_USING_BLE)
+#define CONFIG_ESP_IPC_TASK_STACK_SIZE 1024
+#endif
 #define CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER 1
 #define CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER 1
 #define CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER 1
 #define CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER 1
 #define CONFIG_ESP_TIMER_TASK_STACK_SIZE 3584
 #define CONFIG_ESP_TIMER_TASK_STACK_SIZE 3584
 #define CONFIG_ESP_TIMER_INTERRUPT_LEVEL 1
 #define CONFIG_ESP_TIMER_INTERRUPT_LEVEL 1
 #define CONFIG_ESP_TIMER_IMPL_SYSTIMER 1
 #define CONFIG_ESP_TIMER_IMPL_SYSTIMER 1
+#if defined(BSP_USING_WIFI) || defined(BSP_USING_BLE)
+#define CONFIG_ESP32_WIFI_ENABLED 1
+#define CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM 10
+#define CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM 32
+#define CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER 1
+#define CONFIG_ESP32_WIFI_TX_BUFFER_TYPE 1
+#define CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM 32
+#define CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED 1
+#define CONFIG_ESP32_WIFI_TX_BA_WIN 6
+#define CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED 1
+#define CONFIG_ESP32_WIFI_RX_BA_WIN 6
+#define CONFIG_ESP32_WIFI_NVS_ENABLED 1
+#define CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN 752
+#define CONFIG_ESP32_WIFI_MGMT_SBUF_NUM 32
+#define CONFIG_ESP32_WIFI_IRAM_OPT 1
+#define CONFIG_ESP32_WIFI_RX_IRAM_OPT 1
+#define CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE 1
+#define CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA 1
+#define CONFIG_ESP_WIFI_SOFTAP_SUPPORT 1
+#define CONFIG_ESP_COREDUMP_ENABLE_TO_NONE 1
+#define CONFIG_FATFS_VOLUME_COUNT 2
+#define CONFIG_FATFS_SECTOR_4096 1
+#define CONFIG_FATFS_SECTORS_PER_CLUSTER_1 1
+#define CONFIG_FATFS_CODEPAGE_437 1
+#define CONFIG_FATFS_AUTO_TYPE 1
+#define CONFIG_FATFS_CODEPAGE 437
+#define CONFIG_FATFS_LFN_NONE 1
+#define CONFIG_FATFS_FS_LOCK 0
+#define CONFIG_FATFS_TIMEOUT_MS 10000
+#define CONFIG_FATFS_PER_FILE_CACHE 1
+#endif
 #define CONFIG_FREERTOS_UNICORE 1
 #define CONFIG_FREERTOS_UNICORE 1
-#define CONFIG_FREERTOS_HZ 1000
+#define CONFIG_FREERTOS_HZ 100
 #define CONFIG_FREERTOS_OPTIMIZED_SCHEDULER 1
 #define CONFIG_FREERTOS_OPTIMIZED_SCHEDULER 1
 #define CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE 1
 #define CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE 1
 #define CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS 1
 #define CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS 1
@@ -347,14 +505,74 @@
 #define CONFIG_LOG_MAXIMUM_LEVEL 3
 #define CONFIG_LOG_MAXIMUM_LEVEL 3
 #define CONFIG_LOG_COLORS 1
 #define CONFIG_LOG_COLORS 1
 #define CONFIG_LOG_TIMESTAMP_SOURCE_RTOS 1
 #define CONFIG_LOG_TIMESTAMP_SOURCE_RTOS 1
+#if defined(BSP_USING_WIFI) || defined(BSP_USING_BLE)
+#define CONFIG_LWIP_LOCAL_HOSTNAME "espressif"
+#define CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES 1
+#define CONFIG_LWIP_TIMERS_ONDEMAND 1
+#define CONFIG_LWIP_MAX_SOCKETS 10
+#define CONFIG_LWIP_SO_REUSE 1
+#define CONFIG_LWIP_SO_REUSE_RXTOALL 1
+#define CONFIG_LWIP_IP4_FRAG 1
+#define CONFIG_LWIP_IP6_FRAG 1
+#define CONFIG_LWIP_ESP_GRATUITOUS_ARP 1
+#define CONFIG_LWIP_GARP_TMR_INTERVAL 60
+#define CONFIG_LWIP_TCPIP_RECVMBOX_SIZE 32
+#define CONFIG_LWIP_DHCP_DOES_ARP_CHECK 1
+#define CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID 1
+#define CONFIG_LWIP_DHCP_OPTIONS_LEN 68
+#define CONFIG_LWIP_NUM_NETIF_CLIENT_DATA 0
+#define CONFIG_LWIP_DHCPS 1
+#define CONFIG_LWIP_DHCPS_LEASE_UNIT 60
+#define CONFIG_LWIP_DHCPS_MAX_STATION_NUM 8
+#define CONFIG_LWIP_IPV6 1
+#define CONFIG_LWIP_IPV6_NUM_ADDRESSES 3
+#define CONFIG_LWIP_NETIF_LOOPBACK 1
+#define CONFIG_LWIP_LOOPBACK_MAX_PBUFS 8
+#define CONFIG_LWIP_MAX_ACTIVE_TCP 16
+#define CONFIG_LWIP_MAX_LISTENING_TCP 16
+#define CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION 1
+#define CONFIG_LWIP_TCP_MAXRTX 12
+#define CONFIG_LWIP_TCP_SYNMAXRTX 12
+#define CONFIG_LWIP_TCP_MSS 1440
+#define CONFIG_LWIP_TCP_TMR_INTERVAL 250
+#define CONFIG_LWIP_TCP_MSL 60000
+#define CONFIG_LWIP_TCP_SND_BUF_DEFAULT 5744
+#define CONFIG_LWIP_TCP_WND_DEFAULT 5744
+#define CONFIG_LWIP_TCP_RECVMBOX_SIZE 6
+#define CONFIG_LWIP_TCP_QUEUE_OOSEQ 1
+#define CONFIG_LWIP_TCP_OVERSIZE_MSS 1
+#define CONFIG_LWIP_TCP_RTO_TIME 1500
+#define CONFIG_LWIP_MAX_UDP_PCBS 16
+#define CONFIG_LWIP_UDP_RECVMBOX_SIZE 6
+#define CONFIG_LWIP_CHECKSUM_CHECK_ICMP 1
+#define CONFIG_LWIP_TCPIP_TASK_STACK_SIZE 3072
+#define CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY 1
+#define CONFIG_LWIP_TCPIP_TASK_AFFINITY 0x7FFFFFFF
+#define CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE 3
+#define CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS 5
+#define CONFIG_LWIP_ICMP 1
+#define CONFIG_LWIP_MAX_RAW_PCBS 16
+#define CONFIG_LWIP_SNTP_MAX_SERVERS 1
+#define CONFIG_LWIP_SNTP_UPDATE_DELAY 3600000
+#define CONFIG_LWIP_BRIDGEIF_MAX_PORTS 7
+#define CONFIG_LWIP_ESP_LWIP_ASSERT 1
+#define CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT 1
+#define CONFIG_LWIP_HOOK_IP6_ROUTE_NONE 1
+#define CONFIG_LWIP_HOOK_ND6_GET_GW_NONE 1
+#define CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE 1
+#define CONFIG_LWIP_HOOK_IP6_INPUT_NONE 1
+#endif
 #define CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC 1
 #define CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC 1
 #define CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN 1
 #define CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN 1
 #define CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN 16384
 #define CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN 16384
 #define CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN 4096
 #define CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN 4096
+#define CONFIG_MBEDTLS_ECDH_LEGACY_CONTEXT 1
 #define CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE 1
 #define CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE 1
 #define CONFIG_MBEDTLS_CERTIFICATE_BUNDLE 1
 #define CONFIG_MBEDTLS_CERTIFICATE_BUNDLE 1
 #define CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL 1
 #define CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL 1
 #define CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS 200
 #define CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS 200
+#define CONFIG_MBEDTLS_ECP_RESTARTABLE 1
+#define CONFIG_MBEDTLS_CMAC_C 1
 #define CONFIG_MBEDTLS_HARDWARE_AES 1
 #define CONFIG_MBEDTLS_HARDWARE_AES 1
 #define CONFIG_MBEDTLS_AES_USE_INTERRUPT 1
 #define CONFIG_MBEDTLS_AES_USE_INTERRUPT 1
 #define CONFIG_MBEDTLS_HARDWARE_MPI 1
 #define CONFIG_MBEDTLS_HARDWARE_MPI 1
@@ -406,6 +624,10 @@
 #define CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF 1
 #define CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF 1
 #define CONFIG_NEWLIB_STDIN_LINE_ENDING_CR 1
 #define CONFIG_NEWLIB_STDIN_LINE_ENDING_CR 1
 #define CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT 1
 #define CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT 1
+#if defined(BSP_USING_WIFI) || defined(BSP_USING_BLE)
+#define CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0 1
+#define CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1 1
+#endif
 #define CONFIG_PTHREAD_TASK_PRIO_DEFAULT 5
 #define CONFIG_PTHREAD_TASK_PRIO_DEFAULT 5
 #define CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT 3072
 #define CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT 3072
 #define CONFIG_PTHREAD_STACK_MIN 768
 #define CONFIG_PTHREAD_STACK_MIN 768
@@ -427,11 +649,47 @@
 #define CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP 1
 #define CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP 1
 #define CONFIG_SPI_FLASH_SUPPORT_TH_CHIP 1
 #define CONFIG_SPI_FLASH_SUPPORT_TH_CHIP 1
 #define CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE 1
 #define CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE 1
-
+#if defined(BSP_USING_WIFI) || defined(BSP_USING_BLE)
+#define CONFIG_SPIFFS_MAX_PARTITIONS 3
+#define CONFIG_SPIFFS_CACHE 1
+#define CONFIG_SPIFFS_CACHE_WR 1
+#define CONFIG_SPIFFS_PAGE_CHECK 1
+#define CONFIG_SPIFFS_GC_MAX_RUNS 10
+#define CONFIG_SPIFFS_PAGE_SIZE 256
+#define CONFIG_SPIFFS_OBJ_NAME_LEN 32
+#define CONFIG_SPIFFS_USE_MAGIC 1
+#define CONFIG_SPIFFS_USE_MAGIC_LENGTH 1
+#define CONFIG_SPIFFS_META_LENGTH 4
+#define CONFIG_SPIFFS_USE_MTIME 1
+#define CONFIG_WS_TRANSPORT 1
+#define CONFIG_WS_BUFFER_SIZE 1024
+#define CONFIG_UNITY_ENABLE_FLOAT 1
+#define CONFIG_UNITY_ENABLE_DOUBLE 1
+#define CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER 1
+#ifdef BSP_USING_BLE
+#define CONFIG_VFS_SUPPORT_IO 1
+#define CONFIG_VFS_SUPPORT_DIR 1
+#define CONFIG_VFS_SUPPORT_SELECT 1
+#define CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT 1
+#define CONFIG_VFS_SUPPORT_TERMIOS 1
+#define CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS 1
+#endif
+#define CONFIG_WL_SECTOR_SIZE_4096 1
+#define CONFIG_WL_SECTOR_SIZE 4096
+#define CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES 16
+#define CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT 30
+#define CONFIG_WIFI_PROV_BLE_FORCE_ENCRYPTION 1
+#define CONFIG_WPA_MBEDTLS_CRYPTO 1
+#define CONFIG_WPA_MBEDTLS_TLS_CLIENT 1
+#endif
 /* List of deprecated options */
 /* List of deprecated options */
 #define CONFIG_BROWNOUT_DET CONFIG_ESP_BROWNOUT_DET
 #define CONFIG_BROWNOUT_DET CONFIG_ESP_BROWNOUT_DET
 #define CONFIG_BROWNOUT_DET_LVL CONFIG_ESP_BROWNOUT_DET_LVL
 #define CONFIG_BROWNOUT_DET_LVL CONFIG_ESP_BROWNOUT_DET_LVL
 #define CONFIG_BROWNOUT_DET_LVL_SEL_7 CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7
 #define CONFIG_BROWNOUT_DET_LVL_SEL_7 CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7
+#if defined(BSP_USING_WIFI) || defined(BSP_USING_BLE)
+#define CONFIG_BT_NIMBLE_MSYS1_BLOCK_COUNT CONFIG_BT_NIMBLE_MSYS_1_BLOCK_COUNT
+#define CONFIG_BT_NIMBLE_TASK_STACK_SIZE CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE
+#endif
 #define CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG CONFIG_COMPILER_OPTIMIZATION_DEFAULT
 #define CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG CONFIG_COMPILER_OPTIMIZATION_DEFAULT
 #define CONFIG_CONSOLE_UART CONFIG_ESP_CONSOLE_UART
 #define CONFIG_CONSOLE_UART CONFIG_ESP_CONSOLE_UART
 #define CONFIG_CONSOLE_UART_BAUDRATE CONFIG_ESP_CONSOLE_UART_BAUDRATE
 #define CONFIG_CONSOLE_UART_BAUDRATE CONFIG_ESP_CONSOLE_UART_BAUDRATE
@@ -440,6 +698,7 @@
 #define CONFIG_ESP32C3_BROWNOUT_DET CONFIG_ESP_BROWNOUT_DET
 #define CONFIG_ESP32C3_BROWNOUT_DET CONFIG_ESP_BROWNOUT_DET
 #define CONFIG_ESP32C3_BROWNOUT_DET_LVL CONFIG_ESP_BROWNOUT_DET_LVL
 #define CONFIG_ESP32C3_BROWNOUT_DET_LVL CONFIG_ESP_BROWNOUT_DET_LVL
 #define CONFIG_ESP32C3_BROWNOUT_DET_LVL_SEL_7 CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7
 #define CONFIG_ESP32C3_BROWNOUT_DET_LVL_SEL_7 CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7
+#define CONFIG_ESP32C3_DEBUG_OCDAWARE CONFIG_ESP_DEBUG_OCDAWARE
 #define CONFIG_ESP32C3_DEFAULT_CPU_FREQ_160 CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160
 #define CONFIG_ESP32C3_DEFAULT_CPU_FREQ_160 CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160
 #define CONFIG_ESP32C3_DEFAULT_CPU_FREQ_MHZ CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ
 #define CONFIG_ESP32C3_DEFAULT_CPU_FREQ_MHZ CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ
 #define CONFIG_ESP32C3_LIGHTSLEEP_GPIO_RESET_WORKAROUND CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND
 #define CONFIG_ESP32C3_LIGHTSLEEP_GPIO_RESET_WORKAROUND CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND
@@ -448,27 +707,94 @@
 #define CONFIG_ESP32C3_RTC_CLK_CAL_CYCLES CONFIG_RTC_CLK_CAL_CYCLES
 #define CONFIG_ESP32C3_RTC_CLK_CAL_CYCLES CONFIG_RTC_CLK_CAL_CYCLES
 #define CONFIG_ESP32C3_RTC_CLK_SRC_INT_RC CONFIG_RTC_CLK_SRC_INT_RC
 #define CONFIG_ESP32C3_RTC_CLK_SRC_INT_RC CONFIG_RTC_CLK_SRC_INT_RC
 #define CONFIG_ESP32C3_TIME_SYSCALL_USE_RTC_SYSTIMER CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT
 #define CONFIG_ESP32C3_TIME_SYSCALL_USE_RTC_SYSTIMER CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT
+#if defined(BSP_USING_WIFI) || defined(BSP_USING_BLE)
+#define CONFIG_ESP32_APPTRACE_DEST_NONE CONFIG_APPTRACE_DEST_NONE
+#define CONFIG_ESP32_APPTRACE_LOCK_ENABLE CONFIG_APPTRACE_LOCK_ENABLE
+#define CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE CONFIG_ESP_COREDUMP_ENABLE_TO_NONE
+#define CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE
+#define CONFIG_ESP32_PHY_MAX_TX_POWER CONFIG_ESP_PHY_MAX_TX_POWER
+#define CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER CONFIG_ESP_PHY_MAX_WIFI_TX_POWER
+#endif
 #define CONFIG_ESP32_PTHREAD_STACK_MIN CONFIG_PTHREAD_STACK_MIN
 #define CONFIG_ESP32_PTHREAD_STACK_MIN CONFIG_PTHREAD_STACK_MIN
 #define CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT CONFIG_PTHREAD_TASK_CORE_DEFAULT
 #define CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT CONFIG_PTHREAD_TASK_CORE_DEFAULT
 #define CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT CONFIG_PTHREAD_TASK_NAME_DEFAULT
 #define CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT CONFIG_PTHREAD_TASK_NAME_DEFAULT
 #define CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT CONFIG_PTHREAD_TASK_PRIO_DEFAULT
 #define CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT CONFIG_PTHREAD_TASK_PRIO_DEFAULT
 #define CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT
 #define CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT
-#define CONFIG_ESP_SYSTEM_PD_FLASH CONFIG_ESP_SLEEP_POWER_DOWN_FLASH
+#define CONFIG_ESP32_REDUCE_PHY_TX_POWER CONFIG_ESP_PHY_REDUCE_TX_POWER
+#define CONFIG_ESP_GRATUITOUS_ARP CONFIG_LWIP_ESP_GRATUITOUS_ARP
 #define CONFIG_ESP_SYSTEM_PM_POWER_DOWN_CPU CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP
 #define CONFIG_ESP_SYSTEM_PM_POWER_DOWN_CPU CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP
 #define CONFIG_FLASHMODE_DIO CONFIG_ESPTOOLPY_FLASHMODE_DIO
 #define CONFIG_FLASHMODE_DIO CONFIG_ESPTOOLPY_FLASHMODE_DIO
+#define CONFIG_GARP_TMR_INTERVAL CONFIG_LWIP_GARP_TMR_INTERVAL
+#define CONFIG_INT_WDT CONFIG_ESP_INT_WDT
+#define CONFIG_INT_WDT_TIMEOUT_MS CONFIG_ESP_INT_WDT_TIMEOUT_MS
 #define CONFIG_IPC_TASK_STACK_SIZE CONFIG_ESP_IPC_TASK_STACK_SIZE
 #define CONFIG_IPC_TASK_STACK_SIZE CONFIG_ESP_IPC_TASK_STACK_SIZE
 #define CONFIG_LOG_BOOTLOADER_LEVEL CONFIG_BOOTLOADER_LOG_LEVEL
 #define CONFIG_LOG_BOOTLOADER_LEVEL CONFIG_BOOTLOADER_LOG_LEVEL
 #define CONFIG_LOG_BOOTLOADER_LEVEL_INFO CONFIG_BOOTLOADER_LOG_LEVEL_INFO
 #define CONFIG_LOG_BOOTLOADER_LEVEL_INFO CONFIG_BOOTLOADER_LOG_LEVEL_INFO
 #define CONFIG_MAIN_TASK_STACK_SIZE CONFIG_ESP_MAIN_TASK_STACK_SIZE
 #define CONFIG_MAIN_TASK_STACK_SIZE CONFIG_ESP_MAIN_TASK_STACK_SIZE
 #define CONFIG_MONITOR_BAUD CONFIG_ESPTOOLPY_MONITOR_BAUD
 #define CONFIG_MONITOR_BAUD CONFIG_ESPTOOLPY_MONITOR_BAUD
+#ifdef BSP_USING_BLE
+#define CONFIG_NIMBLE_ACL_BUF_COUNT CONFIG_BT_NIMBLE_ACL_BUF_COUNT
+#define CONFIG_NIMBLE_ACL_BUF_SIZE CONFIG_BT_NIMBLE_ACL_BUF_SIZE
+#define CONFIG_NIMBLE_ATT_PREFERRED_MTU CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU
+#define CONFIG_NIMBLE_CRYPTO_STACK_MBEDTLS CONFIG_BT_NIMBLE_CRYPTO_STACK_MBEDTLS
+#define CONFIG_NIMBLE_ENABLED CONFIG_BT_NIMBLE_ENABLED
+#define CONFIG_NIMBLE_GAP_DEVICE_NAME_MAX_LEN CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN
+#define CONFIG_NIMBLE_HCI_EVT_BUF_SIZE CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE
+#define CONFIG_NIMBLE_HCI_EVT_HI_BUF_COUNT CONFIG_BT_NIMBLE_HCI_EVT_HI_BUF_COUNT
+#define CONFIG_NIMBLE_HCI_EVT_LO_BUF_COUNT CONFIG_BT_NIMBLE_HCI_EVT_LO_BUF_COUNT
+#define CONFIG_NIMBLE_L2CAP_COC_MAX_NUM CONFIG_BT_NIMBLE_L2CAP_COC_MAX_NUM
+#define CONFIG_NIMBLE_MAX_BONDS CONFIG_BT_NIMBLE_MAX_BONDS
+#define CONFIG_NIMBLE_MAX_CCCDS CONFIG_BT_NIMBLE_MAX_CCCDS
+#define CONFIG_NIMBLE_MAX_CONNECTIONS CONFIG_BT_NIMBLE_MAX_CONNECTIONS
+#define CONFIG_NIMBLE_MEM_ALLOC_MODE_INTERNAL CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_INTERNAL
+#define CONFIG_NIMBLE_PINNED_TO_CORE CONFIG_BT_NIMBLE_PINNED_TO_CORE
+#define CONFIG_NIMBLE_ROLE_BROADCASTER CONFIG_BT_NIMBLE_ROLE_BROADCASTER
+#define CONFIG_NIMBLE_ROLE_CENTRAL CONFIG_BT_NIMBLE_ROLE_CENTRAL
+#define CONFIG_NIMBLE_ROLE_OBSERVER CONFIG_BT_NIMBLE_ROLE_OBSERVER
+#define CONFIG_NIMBLE_ROLE_PERIPHERAL CONFIG_BT_NIMBLE_ROLE_PERIPHERAL
+#define CONFIG_NIMBLE_RPA_TIMEOUT CONFIG_BT_NIMBLE_RPA_TIMEOUT
+#define CONFIG_NIMBLE_SM_LEGACY CONFIG_BT_NIMBLE_SM_LEGACY
+#define CONFIG_NIMBLE_SM_SC CONFIG_BT_NIMBLE_SM_SC
+#define CONFIG_NIMBLE_SVC_GAP_APPEARANCE CONFIG_BT_NIMBLE_SVC_GAP_APPEARANCE
+#define CONFIG_NIMBLE_SVC_GAP_DEVICE_NAME CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME
+#define CONFIG_NIMBLE_TASK_STACK_SIZE CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE
+#endif
 #define CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE
 #define CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE
 #define CONFIG_OPTIMIZATION_ASSERTION_LEVEL CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL
 #define CONFIG_OPTIMIZATION_ASSERTION_LEVEL CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL
 #define CONFIG_OPTIMIZATION_LEVEL_DEBUG CONFIG_COMPILER_OPTIMIZATION_DEFAULT
 #define CONFIG_OPTIMIZATION_LEVEL_DEBUG CONFIG_COMPILER_OPTIMIZATION_DEFAULT
+#if defined(BSP_USING_WIFI) || defined(BSP_USING_BLE)
+#define CONFIG_POST_EVENTS_FROM_IRAM_ISR CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR
+#define CONFIG_POST_EVENTS_FROM_ISR CONFIG_ESP_EVENT_POST_FROM_ISR
+#define CONFIG_REDUCE_PHY_TX_POWER CONFIG_ESP_PHY_REDUCE_TX_POWER
+#define CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS
+#endif
 #define CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS
 #define CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS
 #define CONFIG_STACK_CHECK_NONE CONFIG_COMPILER_STACK_CHECK_MODE_NONE
 #define CONFIG_STACK_CHECK_NONE CONFIG_COMPILER_STACK_CHECK_MODE_NONE
+#if defined(BSP_USING_WIFI) || defined(BSP_USING_BLE)
+#define CONFIG_SUPPORT_TERMIOS CONFIG_VFS_SUPPORT_TERMIOS
+#define CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT
+#endif
 #define CONFIG_SYSTEM_EVENT_QUEUE_SIZE CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE
 #define CONFIG_SYSTEM_EVENT_QUEUE_SIZE CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE
 #define CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE
 #define CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE
+#if defined(BSP_USING_WIFI) || defined(BSP_USING_BLE)
+#define CONFIG_TCPIP_RECVMBOX_SIZE CONFIG_LWIP_TCPIP_RECVMBOX_SIZE
+#define CONFIG_TCPIP_TASK_AFFINITY CONFIG_LWIP_TCPIP_TASK_AFFINITY
+#define CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY
+#define CONFIG_TCPIP_TASK_STACK_SIZE CONFIG_LWIP_TCPIP_TASK_STACK_SIZE
+#define CONFIG_TCP_MAXRTX CONFIG_LWIP_TCP_MAXRTX
+#define CONFIG_TCP_MSL CONFIG_LWIP_TCP_MSL
+#define CONFIG_TCP_MSS CONFIG_LWIP_TCP_MSS
+#define CONFIG_TCP_OVERSIZE_MSS CONFIG_LWIP_TCP_OVERSIZE_MSS
+#define CONFIG_TCP_QUEUE_OOSEQ CONFIG_LWIP_TCP_QUEUE_OOSEQ
+#define CONFIG_TCP_RECVMBOX_SIZE CONFIG_LWIP_TCP_RECVMBOX_SIZE
+#define CONFIG_TCP_SND_BUF_DEFAULT CONFIG_LWIP_TCP_SND_BUF_DEFAULT
+#define CONFIG_TCP_SYNMAXRTX CONFIG_LWIP_TCP_SYNMAXRTX
+#define CONFIG_TCP_WND_DEFAULT CONFIG_LWIP_TCP_WND_DEFAULT
+#endif
 #define CONFIG_TIMER_QUEUE_LENGTH CONFIG_FREERTOS_TIMER_QUEUE_LENGTH
 #define CONFIG_TIMER_QUEUE_LENGTH CONFIG_FREERTOS_TIMER_QUEUE_LENGTH
 #define CONFIG_TIMER_TASK_PRIORITY CONFIG_FREERTOS_TIMER_TASK_PRIORITY
 #define CONFIG_TIMER_TASK_PRIORITY CONFIG_FREERTOS_TIMER_TASK_PRIORITY
 #define CONFIG_TIMER_TASK_STACK_DEPTH CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH
 #define CONFIG_TIMER_TASK_STACK_DEPTH CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH
 #define CONFIG_TIMER_TASK_STACK_SIZE CONFIG_ESP_TIMER_TASK_STACK_SIZE
 #define CONFIG_TIMER_TASK_STACK_SIZE CONFIG_ESP_TIMER_TASK_STACK_SIZE
+#if defined(BSP_USING_WIFI) || defined(BSP_USING_BLE)
+#define CONFIG_UDP_RECVMBOX_SIZE CONFIG_LWIP_UDP_RECVMBOX_SIZE
+#endif

+ 15 - 0
bsp/ESP32_C3/esp32c3.gpb

@@ -0,0 +1,15 @@
+set remote hardware-breakpoint-limit 1
+set remote hardware-watchpoint-limit 1
+set remote interrupt-on-connect on
+set remote kill-packet off
+set remote symbol-lookup-packet off
+set remote verbose-resume-packet off
+mem 0x20000000 0x3fefffff ro cache
+mem 0x3ff00000 0x3fffffff rw
+mem 0x40000000 0x400fffff ro cache
+mem 0x40100000 0x4013ffff rw cache
+mem 0x40140000 0x5fffffff ro cache
+mem 0x60000000 0x60001fff rw
+set serial baud 115200
+file ./rtthread.elf
+target remote /dev/ttyACM0

+ 3 - 6
bsp/ESP32_C3/idf_port/include/freertos/portmacro.h

@@ -51,6 +51,7 @@
 #include "esp_heap_caps.h"
 #include "esp_heap_caps.h"
 #include "esp_system.h"             /* required by esp_get_...() functions in portable.h. [refactor-todo] Update portable.h */
 #include "esp_system.h"             /* required by esp_get_...() functions in portable.h. [refactor-todo] Update portable.h */
 #include "esp_newlib.h"
 #include "esp_newlib.h"
+#include "rtthread.h"
 
 
 /* [refactor-todo] These includes are not directly used in this file. They are kept into to prevent a breaking change. Remove these. */
 /* [refactor-todo] These includes are not directly used in this file. They are kept into to prevent a breaking change. Remove these. */
 #include <limits.h>
 #include <limits.h>
@@ -325,12 +326,8 @@ FORCE_INLINE_ATTR BaseType_t xPortGetCoreID(void)
 
 
 FORCE_INLINE_ATTR bool xPortCanYield(void)
 FORCE_INLINE_ATTR bool xPortCanYield(void)
 {
 {
-    uint32_t threshold = REG_READ(INTERRUPT_CORE0_CPU_INT_THRESH_REG);
-    /* when enter critical code, FreeRTOS will mask threshold to RVHAL_EXCM_LEVEL
-     * and exit critical code, will recover threshold value (1). so threshold <= 1
-     * means not in critical code
-     */
-    return (threshold <= 1);
+    rt_base_t level = rt_interrupt_get_nest();
+    return (level == 0);
 }
 }
 
 
 #define FREERTOS_PRIORITY_TO_RTTHREAD(priority)    ( configMAX_PRIORITIES - 1 - ( priority ) )
 #define FREERTOS_PRIORITY_TO_RTTHREAD(priority)    ( configMAX_PRIORITIES - 1 - ( priority ) )

+ 3 - 3
bsp/ESP32_C3/idf_port/include/freertos/task_snapshot.h

@@ -38,7 +38,7 @@ typedef struct xTASK_SNAPSHOT
  * - This function is only available when CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT is set to 1.
  * - This function is only available when CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT is set to 1.
  *
  *
  * @note This function should only be called when FreeRTOS is no longer running (e.g., during a panic) as this function
  * @note This function should only be called when FreeRTOS is no longer running (e.g., during a panic) as this function
- * 		 does not acquire any locks.
+ *       does not acquire any locks.
  * @param pxTask Handle of the previous task (or NULL on the first call of this function)
  * @param pxTask Handle of the previous task (or NULL on the first call of this function)
  * @return TaskHandle_t Handle of the next task (or NULL when all tasks have been iterated over)
  * @return TaskHandle_t Handle of the next task (or NULL when all tasks have been iterated over)
  */
  */
@@ -51,7 +51,7 @@ TaskHandle_t pxTaskGetNext( TaskHandle_t pxTask );
  * - This function is only available when CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT is set to 1.
  * - This function is only available when CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT is set to 1.
  *
  *
  * @note This function should only be called when FreeRTOS is no longer running (e.g., during a panic) as this function
  * @note This function should only be called when FreeRTOS is no longer running (e.g., during a panic) as this function
- * 		 does not acquire any locks.
+ *       does not acquire any locks.
  * @param[in] pxTask Task's handle
  * @param[in] pxTask Task's handle
  * @param[out] pxTaskSnapshot Snapshot of the task
  * @param[out] pxTaskSnapshot Snapshot of the task
  * @return pdTRUE if operation was successful else pdFALSE
  * @return pdTRUE if operation was successful else pdFALSE
@@ -65,7 +65,7 @@ BaseType_t vTaskGetSnapshot( TaskHandle_t pxTask, TaskSnapshot_t *pxTaskSnapshot
  * - This function is only available when CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT is set to 1.
  * - This function is only available when CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT is set to 1.
  *
  *
  * @note This function should only be called when FreeRTOS is no longer running (e.g., during a panic) as this function
  * @note This function should only be called when FreeRTOS is no longer running (e.g., during a panic) as this function
- * 		 does not acquire any locks.
+ *       does not acquire any locks.
  * @param[out] pxTaskSnapshotArray Array of TaskSnapshot_t structures filled by this function
  * @param[out] pxTaskSnapshotArray Array of TaskSnapshot_t structures filled by this function
  * @param[in] uxArrayLength Length of the provided array
  * @param[in] uxArrayLength Length of the provided array
  * @param[out] pxTCBSize Size of the a task's TCB structure
  * @param[out] pxTCBSize Size of the a task's TCB structure

+ 2 - 0
bsp/ESP32_C3/idf_port/ld/memory.ld

@@ -82,3 +82,5 @@ REGION_ALIAS("rtc_data_location", rtc_iram_seg );
  */
  */
   ASSERT(_flash_rodata_dummy_start == ORIGIN(default_rodata_seg),
   ASSERT(_flash_rodata_dummy_start == ORIGIN(default_rodata_seg),
          ".flash_rodata_dummy section must be placed at the beginning of the rodata segment.")
          ".flash_rodata_dummy section must be placed at the beginning of the rodata segment.")
+    ASSERT ((__eh_frame_end > __eh_frame), "Error: eh_frame size is null!");
+    ASSERT ((__eh_frame_hdr_end > __eh_frame_hdr), "Error: eh_frame_hdr size is null!");

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 61 - 9
bsp/ESP32_C3/idf_port/ld/sections.ld


+ 4 - 0
bsp/ESP32_C3/idf_port/src/rt-thread_balance_stub.c

@@ -1,4 +1,5 @@
 #include <math.h>
 #include <math.h>
+#include "rtconfig.h"
 double ceil(double i)
 double ceil(double i)
 {
 {
     i=i;
     i=i;
@@ -24,6 +25,7 @@ void _edata(void)
 }
 }
 
 
 
 
+#ifndef BSP_USING_BLE // 由于BLE组件使用了VFS组件,而VFS组件提供了这些函数导致了冲突
 void opendir(void)
 void opendir(void)
 {
 {
     return;
     return;
@@ -46,3 +48,5 @@ void select(void)
 {
 {
     return;
     return;
 }
 }
+
+#endif /* BSP_USING_BLE */

+ 13 - 0
bsp/ESP32_C3/main/main.c

@@ -17,6 +17,19 @@ int main(void)
 {
 {
     rt_kprintf("Hello!RT-THREAD!\r\n");
     rt_kprintf("Hello!RT-THREAD!\r\n");
     rt_pin_mode(RT_BSP_LED_PIN, PIN_MODE_OUTPUT);
     rt_pin_mode(RT_BSP_LED_PIN, PIN_MODE_OUTPUT);
+
+#ifdef BSP_USING_BLE
+    extern void app_main(void);
+    esp_timer_init();
+    app_main(); //该函数为esp-wifi样例程序入口
+#endif
+
+#ifdef RT_USING_WIFI
+    /* set wifi work mode */
+    rt_wlan_set_mode(RT_WLAN_DEVICE_STA_NAME, RT_WLAN_STATION);
+    rt_wlan_set_mode(RT_WLAN_DEVICE_AP_NAME, RT_WLAN_AP);
+#endif /* RT_USING_WIFI */
+
     while (1)
     while (1)
     {
     {
         rt_pin_write(RT_BSP_LED_PIN, PIN_HIGH);
         rt_pin_write(RT_BSP_LED_PIN, PIN_HIGH);

+ 6 - 0
bsp/ESP32_C3/rtconfig.h

@@ -73,6 +73,9 @@
 
 
 #define RT_USING_DEVICE_IPC
 #define RT_USING_DEVICE_IPC
 #define RT_UNAMED_PIPE_NUMBER 64
 #define RT_UNAMED_PIPE_NUMBER 64
+#define RT_USING_SYSTEM_WORKQUEUE
+#define RT_SYSTEM_WORKQUEUE_STACKSIZE 2048
+#define RT_SYSTEM_WORKQUEUE_PRIORITY 23
 #define RT_USING_SERIAL
 #define RT_USING_SERIAL
 #define RT_USING_SERIAL_V1
 #define RT_USING_SERIAL_V1
 #define RT_SERIAL_RB_BUFSZ 64
 #define RT_SERIAL_RB_BUFSZ 64
@@ -123,6 +126,9 @@
 /* Wiced WiFi */
 /* Wiced WiFi */
 
 
 
 
+/* CYW43012 WiFi */
+
+
 /* IoT Cloud */
 /* IoT Cloud */
 
 
 
 

+ 3 - 3
bsp/ESP32_C3/rtconfig.py

@@ -34,10 +34,10 @@ if PLATFORM == 'gcc':
     OBJCPY = PREFIX + 'objcopy'
     OBJCPY = PREFIX + 'objcopy'
     STRIP = PREFIX + 'strip'
     STRIP = PREFIX + 'strip'
 
 
-    DEVICE  = ' -nostartfiles -march=rv32imc --specs=nosys.specs '
-    CFLAGS = DEVICE + '-gdwarf-4 -ggdb -Os '
+    DEVICE  = ' -nostartfiles -march=rv32imc --specs=nosys.specs -fasynchronous-unwind-tables '
+    CFLAGS = DEVICE + '-gdwarf-4 -ggdb -Og '
     AFLAGS =  ' -c' + DEVICE + ' -x assembler-with-cpp'
     AFLAGS =  ' -c' + DEVICE + ' -x assembler-with-cpp'
-    LFLAGS = DEVICE + ' -Wl,--cref -Wl,--defsym=IDF_TARGET_ESP32C3=0 -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,_start -T idf_port/ld/memory.ld -T idf_port/ld/sections.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.api.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.libgcc.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.newlib.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.version.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.eco3.ld -T packages/ESP-IDF-latest/components/soc/esp32c3/ld/esp32c3.peripherals.ld  -Wl,--wrap=_Unwind_SetEnableExceptionFdeSorting -Wl,--wrap=__register_frame_info_bases -Wl,--wrap=__register_frame_info -Wl,--wrap=__register_frame -Wl,--wrap=__register_frame_info_table_bases -Wl,--wrap=__register_frame_info_table -Wl,--wrap=__register_frame_table -Wl,--wrap=__deregister_frame_info_bases -Wl,--wrap=__deregister_frame_info -Wl,--wrap=_Unwind_Find_FDE -Wl,--wrap=_Unwind_GetGR -Wl,--wrap=_Unwind_GetCFA -Wl,--wrap=_Unwind_GetIP -Wl,--wrap=_Unwind_GetIPInfo -Wl,--wrap=_Unwind_GetRegionStart -Wl,--wrap=_Unwind_GetDataRelBase -Wl,--wrap=_Unwind_GetTextRelBase -Wl,--wrap=_Unwind_SetIP -Wl,--wrap=_Unwind_SetGR -Wl,--wrap=_Unwind_GetLanguageSpecificData -Wl,--wrap=_Unwind_FindEnclosingFunction -Wl,--wrap=_Unwind_Resume -Wl,--wrap=_Unwind_RaiseException -Wl,--wrap=_Unwind_DeleteException -Wl,--wrap=_Unwind_ForcedUnwind -Wl,--wrap=_Unwind_Resume_or_Rethrow -Wl,--wrap=_Unwind_Backtrace -Wl,--wrap=__cxa_call_unexpected -Wl,--wrap=__gxx_personality_v0  -Wl,--cref -Wl,--defsym=IDF_TARGET_ESP32C3=0'
+    LFLAGS = DEVICE + ' -Wl,--cref -Wl,--defsym=IDF_TARGET_ESP32C3=0 -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,_start -T idf_port/ld/memory.ld -T idf_port/ld/sections.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.api.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.libgcc.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.newlib.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.version.ld -T packages/ESP-IDF-latest/components/esp_rom/esp32c3/ld/esp32c3.rom.eco3.ld -T packages/ESP-IDF-latest/components/soc/esp32c3/ld/esp32c3.peripherals.ld  -Wl,--wrap=_Unwind_SetEnableExceptionFdeSorting -Wl,--wrap=__register_frame_info_bases -Wl,--wrap=__register_frame_info -Wl,--wrap=__register_frame -Wl,--wrap=__register_frame_info_table_bases -Wl,--wrap=__register_frame_info_table -Wl,--wrap=__register_frame_table -Wl,--wrap=__deregister_frame_info_bases -Wl,--wrap=__deregister_frame_info -Wl,--wrap=_Unwind_Find_FDE -Wl,--wrap=_Unwind_GetGR -Wl,--wrap=_Unwind_GetCFA -Wl,--wrap=_Unwind_GetIP -Wl,--wrap=_Unwind_GetIPInfo -Wl,--wrap=_Unwind_GetRegionStart -Wl,--wrap=_Unwind_GetDataRelBase -Wl,--wrap=_Unwind_GetTextRelBase -Wl,--wrap=_Unwind_SetIP -Wl,--wrap=_Unwind_SetGR -Wl,--wrap=_Unwind_GetLanguageSpecificData -Wl,--wrap=_Unwind_FindEnclosingFunction -Wl,--wrap=_Unwind_Resume -Wl,--wrap=_Unwind_RaiseException -Wl,--wrap=_Unwind_DeleteException -Wl,--wrap=_Unwind_ForcedUnwind -Wl,--wrap=_Unwind_Resume_or_Rethrow -Wl,--wrap=_Unwind_Backtrace -Wl,--wrap=__cxa_call_unexpected -Wl,--eh-frame-hdr -Wl,--wrap=__gxx_personality_v0  -Wl,--cref -Wl,--defsym=IDF_TARGET_ESP32C3=0'
     CXXFLAGS = CFLAGS 
     CXXFLAGS = CFLAGS 
 
 
     POST_ACTION = OBJCPY + ' -Oihex $TARGET rtthread.hex\n' + SIZE + ' $TARGET \n'
     POST_ACTION = OBJCPY + ' -Oihex $TARGET rtthread.hex\n' + SIZE + ' $TARGET \n'

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels