From 7da73c8f01f79a885e053c91dbb510be5d170625 Mon Sep 17 00:00:00 2001 From: wcx1024979076 Date: Fri, 20 Oct 2023 12:22:28 +0800 Subject: [PATCH] =?UTF-8?q?[bsp]=20[ESP32=5FC3]=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E6=97=A0=E7=94=A8=E7=9A=84=E6=96=87=E4=BB=B6=20|=20remove=20us?= =?UTF-8?q?eless=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/ESP32_C3/.config | 24 +- bsp/ESP32_C3/.vscode/launch.json | 10 - bsp/ESP32_C3/.vscode/settings.json | 26 - bsp/ESP32_C3/.vscode/tasks.json | 300 -------- bsp/ESP32_C3/CMakeLists.txt | 5 - bsp/ESP32_C3/Makefile | 8 - bsp/ESP32_C3/README.md | 6 +- bsp/ESP32_C3/README_ZH.md | 6 +- bsp/ESP32_C3/images/build.png | Bin 12872 -> 0 bytes bsp/ESP32_C3/images/burn.png | Bin 16469 -> 0 bytes bsp/ESP32_C3/images/burn_en.png | Bin 19933 -> 0 bytes bsp/ESP32_C3/main/CMakeLists.txt | 50 -- bsp/ESP32_C3/main/main.c | 11 +- bsp/ESP32_C3/rtconfig.h | 9 +- bsp/ESP32_C3/rtt.patch | 600 ---------------- bsp/ESP32_C3/sdkconfig | 1017 ---------------------------- 16 files changed, 28 insertions(+), 2044 deletions(-) delete mode 100644 bsp/ESP32_C3/.vscode/launch.json delete mode 100644 bsp/ESP32_C3/.vscode/settings.json delete mode 100644 bsp/ESP32_C3/.vscode/tasks.json delete mode 100644 bsp/ESP32_C3/CMakeLists.txt delete mode 100644 bsp/ESP32_C3/Makefile delete mode 100644 bsp/ESP32_C3/images/build.png delete mode 100644 bsp/ESP32_C3/images/burn.png delete mode 100644 bsp/ESP32_C3/images/burn_en.png delete mode 100644 bsp/ESP32_C3/main/CMakeLists.txt delete mode 100644 bsp/ESP32_C3/rtt.patch delete mode 100644 bsp/ESP32_C3/sdkconfig diff --git a/bsp/ESP32_C3/.config b/bsp/ESP32_C3/.config index fe3cb4b015..5ea4613ab6 100644 --- a/bsp/ESP32_C3/.config +++ b/bsp/ESP32_C3/.config @@ -10,6 +10,7 @@ CONFIG_RT_NAME_MAX=8 # CONFIG_RT_USING_ARCH_DATA_TYPE is not set # CONFIG_RT_USING_AMP is not set # CONFIG_RT_USING_SMP is not set +CONFIG_RT_CPUS_NR=1 CONFIG_RT_ALIGN_SIZE=8 # CONFIG_RT_THREAD_PRIORITY_8 is not set CONFIG_RT_THREAD_PRIORITY_32=y @@ -62,18 +63,13 @@ CONFIG_RT_USING_SMALL_MEM_AS_HEAP=y # CONFIG_RT_USING_MEMTRACE is not set # CONFIG_RT_USING_HEAP_ISR is not set CONFIG_RT_USING_HEAP=y - -# -# Kernel Device Object -# CONFIG_RT_USING_DEVICE=y # CONFIG_RT_USING_DEVICE_OPS is not set -# CONFIG_RT_USING_DM is not set # CONFIG_RT_USING_INTERRUPT_INFO is not set CONFIG_RT_USING_CONSOLE=y CONFIG_RT_CONSOLEBUF_SIZE=256 CONFIG_RT_CONSOLE_DEVICE_NAME="uart" -CONFIG_RT_VER_NUM=0x50002 +CONFIG_RT_VER_NUM=0x50100 # CONFIG_RT_USING_STDC_ATOMIC is not set # CONFIG_RT_USING_CACHE is not set # CONFIG_RT_USING_HW_ATOMIC is not set @@ -115,6 +111,7 @@ CONFIG_FINSH_USING_OPTION_COMPLETION=y # # Device Drivers # +# CONFIG_RT_USING_DM is not set CONFIG_RT_USING_DEVICE_IPC=y CONFIG_RT_UNAMED_PIPE_NUMBER=64 CONFIG_RT_USING_SYSTEM_WORKQUEUE=y @@ -140,7 +137,6 @@ CONFIG_RT_USING_PIN=y # CONFIG_RT_USING_MTD_NOR is not set # CONFIG_RT_USING_MTD_NAND is not set # CONFIG_RT_USING_PM is not set -# CONFIG_RT_USING_FDT is not set # CONFIG_RT_USING_RTC is not set # CONFIG_RT_USING_SDIO is not set # CONFIG_RT_USING_SPI is not set @@ -209,10 +205,6 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_RT_USING_SAL is not set # CONFIG_RT_USING_NETDEV 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 # @@ -226,7 +218,11 @@ CONFIG_RT_LIBC_TZ_DEFAULT_SEC=0 # CONFIG_RT_USING_ADT is not set # CONFIG_RT_USING_RT_LINK is not set # CONFIG_RT_USING_VBUS is not set -# CONFIG_RT_USING_KTIME is not set + +# +# Memory management +# +# CONFIG_RT_USING_MEMBLOCK is not set # # RT-Thread Utestcases @@ -603,6 +599,7 @@ CONFIG_PKG_FREERTOS_WRAPPER_VER="latest" # 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 @@ -706,6 +703,7 @@ CONFIG_PKG_ESP_IDF_VER="latest" # 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_SPI_TOOLS is not set # @@ -960,6 +958,7 @@ CONFIG_PKG_ESP_IDF_VER="latest" # # 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 @@ -996,7 +995,6 @@ CONFIG_PKG_ESP_IDF_VER="latest" # # 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 diff --git a/bsp/ESP32_C3/.vscode/launch.json b/bsp/ESP32_C3/.vscode/launch.json deleted file mode 100644 index 6d2236f737..0000000000 --- a/bsp/ESP32_C3/.vscode/launch.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "type": "espidf", - "name": "Launch", - "request": "launch" - } - ] -} \ No newline at end of file diff --git a/bsp/ESP32_C3/.vscode/settings.json b/bsp/ESP32_C3/.vscode/settings.json deleted file mode 100644 index 0fdac30c98..0000000000 --- a/bsp/ESP32_C3/.vscode/settings.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "C_Cpp.intelliSenseEngine": "Tag Parser", - "idf.adapterTargetName": "esp32c3", - "idf.openOcdConfigs": [ - "board/esp32c3-builtin.cfg" - ], - "idf.portWin": "COM7", - "idf.flashType": "UART", - "files.associations": { - "panic_internal.h": "c", - "rtthread.h": "c", - "bitset": "c", - "chrono": "c", - "algorithm": "c", - "rtdebug.h": "c", - "rtservice.h": "c", - "rtdef.h": "c", - "rtconfig.h": "c", - "thread": "c", - "rthw.h": "c", - "typeinfo": "c", - "serial.h": "c", - "timer.h": "c" - }, - "RTT_Studio.Build.Parallel_Jobs": "4" -} diff --git a/bsp/ESP32_C3/.vscode/tasks.json b/bsp/ESP32_C3/.vscode/tasks.json deleted file mode 100644 index 3a649a6c69..0000000000 --- a/bsp/ESP32_C3/.vscode/tasks.json +++ /dev/null @@ -1,300 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "label": "Build - Build project", - "type": "shell", - "command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py build", - "windows": { - "command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py build", - "options": { - "env": { - "PATH": "${env:PATH};${config:idf.customExtraPaths}" - } - } - }, - "options": { - "env": { - "PATH": "${env:PATH}:${config:idf.customExtraPaths}" - } - }, - "problemMatcher": [ - { - "owner": "cpp", - "fileLocation": [ - "relative", - "${workspaceFolder}" - ], - "pattern": { - "regexp": "^\\.\\.(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", - "file": 1, - "line": 2, - "column": 3, - "severity": 4, - "message": 5 - } - }, - { - "owner": "cpp", - "fileLocation": "absolute", - "pattern": { - "regexp": "^[^\\.](.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", - "file": 1, - "line": 2, - "column": 3, - "severity": 4, - "message": 5 - } - } - ], - "group": { - "kind": "build", - "isDefault": true - } - }, - { - "label": "Set ESP-IDF Target", - "type": "shell", - "command": "${command:espIdf.setTarget}", - "problemMatcher": { - "owner": "cpp", - "fileLocation": "absolute", - "pattern": { - "regexp": "^(.*):(//d+):(//d+)://s+(warning|error)://s+(.*)$", - "file": 1, - "line": 2, - "column": 3, - "severity": 4, - "message": 5 - } - } - }, - { - "label": "Clean - Clean the project", - "type": "shell", - "command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py fullclean", - "windows": { - "command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py fullclean", - "options": { - "env": { - "PATH": "${env:PATH};${config:idf.customExtraPaths}" - } - } - }, - "options": { - "env": { - "PATH": "${env:PATH}:${config:idf.customExtraPaths}" - } - }, - "problemMatcher": [ - { - "owner": "cpp", - "fileLocation": [ - "relative", - "${workspaceFolder}" - ], - "pattern": { - "regexp": "^\\.\\.(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", - "file": 1, - "line": 2, - "column": 3, - "severity": 4, - "message": 5 - } - }, - { - "owner": "cpp", - "fileLocation": "absolute", - "pattern": { - "regexp": "^[^\\.](.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", - "file": 1, - "line": 2, - "column": 3, - "severity": 4, - "message": 5 - } - } - ] - }, - { - "label": "Flash - Flash the device", - "type": "shell", - "command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py -p ${config:idf.port} -b ${config:idf.flashBaudRate} flash", - "windows": { - "command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py flash -p ${config:idf.portWin} -b ${config:idf.flashBaudRate}", - "options": { - "env": { - "PATH": "${env:PATH};${config:idf.customExtraPaths}" - } - } - }, - "options": { - "env": { - "PATH": "${env:PATH}:${config:idf.customExtraPaths}" - } - }, - "problemMatcher": [ - { - "owner": "cpp", - "fileLocation": [ - "relative", - "${workspaceFolder}" - ], - "pattern": { - "regexp": "^\\.\\.(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", - "file": 1, - "line": 2, - "column": 3, - "severity": 4, - "message": 5 - } - }, - { - "owner": "cpp", - "fileLocation": "absolute", - "pattern": { - "regexp": "^[^\\.](.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", - "file": 1, - "line": 2, - "column": 3, - "severity": 4, - "message": 5 - } - } - ] - }, - { - "label": "Monitor: Start the monitor", - "type": "shell", - "command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py -p ${config:idf.port} monitor", - "windows": { - "command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py -p ${config:idf.portWin} monitor", - "options": { - "env": { - "PATH": "${env:PATH};${config:idf.customExtraPaths}" - } - } - }, - "options": { - "env": { - "PATH": "${env:PATH}:${config:idf.customExtraPaths}" - } - }, - "problemMatcher": [ - { - "owner": "cpp", - "fileLocation": [ - "relative", - "${workspaceFolder}" - ], - "pattern": { - "regexp": "^\\.\\.(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", - "file": 1, - "line": 2, - "column": 3, - "severity": 4, - "message": 5 - } - }, - { - "owner": "cpp", - "fileLocation": "absolute", - "pattern": { - "regexp": "^[^\\.](.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", - "file": 1, - "line": 2, - "column": 3, - "severity": 4, - "message": 5 - } - } - ], - "dependsOn": "Flash - Flash the device" - }, - { - "label": "OpenOCD: Start openOCD", - "type": "shell", - "presentation": { - "echo": true, - "reveal": "never", - "focus": false, - "panel": "new" - }, - "command": "openocd -s ${command:espIdf.getOpenOcdScriptValue} ${command:espIdf.getOpenOcdConfigs}", - "windows": { - "command": "openocd.exe -s ${command:espIdf.getOpenOcdScriptValue} ${command:espIdf.getOpenOcdConfigs}", - "options": { - "env": { - "PATH": "${env:PATH};${config:idf.customExtraPaths}" - } - } - }, - "options": { - "env": { - "PATH": "${env:PATH}:${config:idf.customExtraPaths}" - } - }, - "problemMatcher": { - "owner": "cpp", - "fileLocation": "absolute", - "pattern": { - "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", - "file": 1, - "line": 2, - "column": 3, - "severity": 4, - "message": 5 - } - } - }, - { - "label": "adapter", - "type": "shell", - "command": "${config:idf.pythonBinPath}", - "isBackground": true, - "options": { - "env": { - "PATH": "${env:PATH}:${config:idf.customExtraPaths}", - "PYTHONPATH": "${command:espIdf.getExtensionPath}/esp_debug_adapter/debug_adapter" - } - }, - "problemMatcher": { - "background": { - "beginsPattern": "\bDEBUG_ADAPTER_STARTED\b", - "endsPattern": "DEBUG_ADAPTER_READY2CONNECT", - "activeOnStart": true - }, - "pattern": { - "regexp": "(\\d+)-(\\d+)-(\\d+)\\s(\\d+):(\\d+):(\\d+),(\\d+)\\s-(.+)\\s(ERROR)", - "file": 8, - "line": 2, - "column": 3, - "severity": 4, - "message": 9 - } - }, - "args": [ - "${command:espIdf.getExtensionPath}/esp_debug_adapter/debug_adapter_main.py", - "-e", - "${workspaceFolder}/build/${command:espIdf.getProjectName}.elf", - "-s", - "${command:espIdf.getOpenOcdScriptValue}", - "-ip", - "localhost", - "-dn", - "${config:idf.adapterTargetName}", - "-om", - "connect_to_instance" - ], - "windows": { - "command": "${config:idf.pythonBinPathWin}", - "options": { - "env": { - "PATH": "${env:PATH};${config:idf.customExtraPaths}", - "PYTHONPATH": "${command:espIdf.getExtensionPath}/esp_debug_adapter/debug_adapter" - } - } - } - } - ] -} \ No newline at end of file diff --git a/bsp/ESP32_C3/CMakeLists.txt b/bsp/ESP32_C3/CMakeLists.txt deleted file mode 100644 index 8e74c5b76a..0000000000 --- a/bsp/ESP32_C3/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -cmake_minimum_required(VERSION 3.16) -set(COMPONENTS esptool_py main) -include($ENV{IDF_PATH}/tools/cmake/project.cmake) -set(freertos_root /Users/tangyi/rt-thread/bsp/ESP32_C3/packages/FreeRTOS_Wrapper-latest/FreeRTOS) -project(rtthread) diff --git a/bsp/ESP32_C3/Makefile b/bsp/ESP32_C3/Makefile deleted file mode 100644 index fdb56fa395..0000000000 --- a/bsp/ESP32_C3/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# -# This is a project Makefile. It is assumed the directory this Makefile resides in is a -# project subdirectory. -# - -PROJECT_NAME := rtthread - -include $(IDF_PATH)/make/project.mk diff --git a/bsp/ESP32_C3/README.md b/bsp/ESP32_C3/README.md index 054d141674..8fd8164ab1 100644 --- a/bsp/ESP32_C3/README.md +++ b/bsp/ESP32_C3/README.md @@ -42,13 +42,13 @@ Each peripheral supporting condition for this BSP is as follows: | GPIO | Support | | | 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 | -| 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 | +| WIFI | Partial support | There are currently some problems, such as `rt_mq_recive` cannot be used in ISR, etc. | +| BLE | Partially supported | There are currently some problems, such as `NimBLE` running errors after starting for a while | | 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. +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 capabilities and lack of debugging equipment, there are problems with WIFI and BLE driver operation. If it can be solved, please contact [timwcx@qq.com](mailto:timwcx@qq.com). 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. diff --git a/bsp/ESP32_C3/README_ZH.md b/bsp/ESP32_C3/README_ZH.md index 90cc449d62..d57ea24c1c 100644 --- a/bsp/ESP32_C3/README_ZH.md +++ b/bsp/ESP32_C3/README_ZH.md @@ -49,13 +49,13 @@ | GPIO | 支持 | | | UART | 支持 | 使用LUATOS_ESP32C3开发板需要在UART0_TX和UART0_RX连接串口转USB芯片(如CP2102)| | JTAG调试 | 支持 | ESP32C3采用USB方式和PC链接的开发板可以调试 | -| WIFI | 部分支持 | 目前存在一些问题,例如不能在ISR中使用`rt_mq_recive`等,还在尝试解决中 | -| BLE | 部分支持 | 目前存在一些问题,例如`NimBLE`启动一段时间后`PC`和`SP`指针相同导致运行错误 | +| WIFI | 部分支持 | 目前存在一些问题,例如不能在ISR中使用`rt_mq_recive`等 | +| BLE | 部分支持 | 目前存在一些问题,例如`NimBLE`启动一段时间后运行错误 | | 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),本人感激不尽。 +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()`函数初始化时钟驱动。 diff --git a/bsp/ESP32_C3/images/build.png b/bsp/ESP32_C3/images/build.png deleted file mode 100644 index 252b1129c455281af690ad8cc667e80bb0ce6166..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12872 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 diff --git a/bsp/ESP32_C3/images/burn_en.png b/bsp/ESP32_C3/images/burn_en.png deleted file mode 100644 index 3f8b7187dca6657f37da253a33c5c17e17162b94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19933 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 gOl)Ji|D)*t0kn3y?pi)Xy#N3J07*qoM6N<$f @@ -21,8 +22,8 @@ int main(void) #ifdef BSP_USING_BLE extern void app_main(void); esp_timer_init(); - app_main(); //该函数为esp-wifi样例程序入口 -#endif + app_main(); //该函数为nimble样例程序入口 +#endif /* BSP_USING_BLE */ #ifdef RT_USING_WIFI /* set wifi work mode */ diff --git a/bsp/ESP32_C3/rtconfig.h b/bsp/ESP32_C3/rtconfig.h index 93cb8126b4..cbeb07d78e 100644 --- a/bsp/ESP32_C3/rtconfig.h +++ b/bsp/ESP32_C3/rtconfig.h @@ -7,6 +7,7 @@ /* RT-Thread Kernel */ #define RT_NAME_MAX 8 +#define RT_CPUS_NR 1 #define RT_ALIGN_SIZE 8 #define RT_THREAD_PRIORITY_32 #define RT_THREAD_PRIORITY_MAX 32 @@ -36,14 +37,11 @@ #define RT_USING_SMALL_MEM #define RT_USING_SMALL_MEM_AS_HEAP #define RT_USING_HEAP - -/* Kernel Device Object */ - #define RT_USING_DEVICE #define RT_USING_CONSOLE #define RT_CONSOLEBUF_SIZE 256 #define RT_CONSOLE_DEVICE_NAME "uart" -#define RT_VER_NUM 0x50002 +#define RT_VER_NUM 0x50100 /* RT-Thread Components */ @@ -110,6 +108,9 @@ /* Utilities */ +/* Memory management */ + + /* RT-Thread Utestcases */ diff --git a/bsp/ESP32_C3/rtt.patch b/bsp/ESP32_C3/rtt.patch deleted file mode 100644 index 7f583abd2b..0000000000 --- a/bsp/ESP32_C3/rtt.patch +++ /dev/null @@ -1,600 +0,0 @@ -From 92402217b821c8da7e2a188352f095caaf0818d1 Mon Sep 17 00:00:00 2001 -From: tangzz98 -Date: Tue, 13 Sep 2022 18:05:44 -0400 -Subject: [PATCH 1/2] Add config for RT-Thread - ---- - Kconfig | 4 + - components/driver/deprecated/i2s_legacy.c | 4 + - components/driver/uart.c | 4 + - components/esp_system/crosscore_int.c | 5 +- - .../esp_system/ld/esp32c3/sections.ld.in | 37 ++++ - .../port/arch/riscv/expression_with_stack.c | 8 + - components/esp_system/startup.c | 9 + - components/esp_system/task_wdt.c | 4 + - components/esp_timer/src/esp_timer.c | 2 + - components/freertos/CMakeLists.txt | 50 ++++- - .../freertos_tasks_c_additions.h | 6 +- - components/riscv/vectors.S | 179 ++++++++++++++++++ - 12 files changed, 309 insertions(+), 3 deletions(-) - -diff --git a/Kconfig b/Kconfig -index c86ebeaaef..56d062b2db 100644 ---- a/Kconfig -+++ b/Kconfig -@@ -101,6 +101,10 @@ mainmenu "Espressif IoT Development Framework Configuration" - bool - default "y" if IDF_TARGET="linux" - -+ config IDF_RTOS_RTTHREAD -+ bool "RT-THREAD SELECT" -+ default "n" -+ - config IDF_FIRMWARE_CHIP_ID - hex - default 0x0000 if IDF_TARGET_ESP32 -diff --git a/components/driver/deprecated/i2s_legacy.c b/components/driver/deprecated/i2s_legacy.c -index 2e36ab2608..92edf9d2bb 100644 ---- a/components/driver/deprecated/i2s_legacy.c -+++ b/components/driver/deprecated/i2s_legacy.c -@@ -1600,7 +1600,11 @@ esp_err_t i2s_driver_install(i2s_port_t i2s_num, const i2s_config_t *i2s_config, - i2s_obj->i2s_queue = xQueueCreate(queue_size, sizeof(i2s_event_t)); - ESP_GOTO_ON_FALSE(i2s_obj->i2s_queue, ESP_ERR_NO_MEM, err, TAG, "I2S queue create failed"); - *((QueueHandle_t *) i2s_queue) = i2s_obj->i2s_queue; -+#if !defined CONFIG_IDF_RTOS_RTTHREAD - ESP_LOGD(TAG, "queue free spaces: %d", uxQueueSpacesAvailable(i2s_obj->i2s_queue)); -+#else -+ ESP_LOGD(TAG, "queue free spaces: %lu", uxQueueSpacesAvailable(i2s_obj->i2s_queue)); -+#endif - } else { - i2s_obj->i2s_queue = NULL; - } -diff --git a/components/driver/uart.c b/components/driver/uart.c -index b68b2900e1..63c9841380 100644 ---- a/components/driver/uart.c -+++ b/components/driver/uart.c -@@ -1603,7 +1603,11 @@ esp_err_t uart_driver_install(uart_port_t uart_num, int rx_buffer_size, int tx_b - uart_pattern_queue_reset(uart_num, UART_PATTERN_DET_QLEN_DEFAULT); - if (uart_queue) { - *uart_queue = p_uart_obj[uart_num]->event_queue; -+#if !defined CONFIG_IDF_RTOS_RTTHREAD - ESP_LOGI(UART_TAG, "queue free spaces: %d", uxQueueSpacesAvailable(p_uart_obj[uart_num]->event_queue)); -+#else -+ ESP_LOGI(UART_TAG, "queue free spaces: %lu", uxQueueSpacesAvailable(p_uart_obj[uart_num]->event_queue)); -+#endif - } - } else { - ESP_LOGE(UART_TAG, "UART driver already installed"); -diff --git a/components/esp_system/crosscore_int.c b/components/esp_system/crosscore_int.c -index 4aae2a2540..8a9079de64 100644 ---- a/components/esp_system/crosscore_int.c -+++ b/components/esp_system/crosscore_int.c -@@ -95,13 +95,14 @@ static void IRAM_ATTR esp_crosscore_isr(void *arg) { - if (my_reason_val & REASON_PRINT_BACKTRACE) { - esp_backtrace_print(100); - } -- -+#ifdef CONFIG_ESP_TASK_WDT - if (my_reason_val & REASON_TWDT_ABORT) { - extern void task_wdt_timeout_abort_xtensa(bool); - /* Called from a crosscore interrupt, thus, we are not the core that received - * the TWDT interrupt, call the function with `false` as a parameter. */ - task_wdt_timeout_abort_xtensa(false); - } -+#endif - #endif // CONFIG_IDF_TARGET_ARCH_XTENSA - } - -@@ -171,7 +172,9 @@ void IRAM_ATTR esp_crosscore_int_send_print_backtrace(int core_id) - esp_crosscore_int_send(core_id, REASON_PRINT_BACKTRACE); - } - -+#ifdef CONFIG_ESP_TASK_WDT - void IRAM_ATTR esp_crosscore_int_send_twdt_abort(int core_id) { - esp_crosscore_int_send(core_id, REASON_TWDT_ABORT); - } - #endif -+#endif -diff --git a/components/esp_system/ld/esp32c3/sections.ld.in b/components/esp_system/ld/esp32c3/sections.ld.in -index d6670bf759..1d51ffeea0 100644 ---- a/components/esp_system/ld/esp32c3/sections.ld.in -+++ b/components/esp_system/ld/esp32c3/sections.ld.in -@@ -178,6 +178,26 @@ SECTIONS - _noinit_end = ABSOLUTE(.); - } > dram0_0_seg - -+ .stack : -+ { -+ . = ALIGN(8); -+ __STACKSIZE__ = 40960; -+ __stack_start__ = .; -+ *(.stack*) -+ . += __STACKSIZE__; -+ __stack_cpu0 = .; -+ __stack_end__ = .; -+ } > dram0_0_seg -+ PROVIDE( __rt_rvstack = __stack_end__); -+ -+ .heap : -+ { -+ . = ALIGN(8); -+ __HEAPSIZE__ = 40960; -+ __heap_start__ = .; -+ . += __HEAPSIZE__; -+ __heap_end__ = .; -+ } > dram0_0_seg -+ - /* Shared RAM */ - .dram0.bss (NOLOAD) : - { -@@ -218,6 +238,17 @@ SECTIONS - *(.fini) - *(.gnu.version) - -+ /* section information for finsh shell */ -+ . = ALIGN(8); -+ __fsymtab_start = .; -+ KEEP(*(FSymTab)) -+ __fsymtab_end = .; -+ . = ALIGN(8); -+ __vsymtab_start = .; -+ KEEP(*(VSymTab)) -+ __vsymtab_end = .; -+ . = ALIGN(8); -+ - /** CPU will try to prefetch up to 16 bytes of - * of instructions. This means that any configuration (e.g. MMU, PMS) must allow - * safe access to up to 16 bytes after the last real instruction, add -@@ -318,6 +349,12 @@ SECTIONS - _esp_system_init_fn_array_start = ABSOLUTE(.); - KEEP (*(SORT_BY_INIT_PRIORITY(.esp_system_init_fn.*))) - _esp_system_init_fn_array_end = ABSOLUTE(.); -+ /* section information for initial. */ -+ . = ALIGN(4); -+ __rt_init_start = .; -+ KEEP(*(SORT(.rti_fn*))) -+ __rt_init_end = .; -+ . = ALIGN(4); - _rodata_end = ABSOLUTE(.); - /* Literals are also RO data. */ - _lit4_start = ABSOLUTE(.); -diff --git a/components/esp_system/port/arch/riscv/expression_with_stack.c b/components/esp_system/port/arch/riscv/expression_with_stack.c -index 07d22bf3aa..5eac5a88f8 100644 ---- a/components/esp_system/port/arch/riscv/expression_with_stack.c -+++ b/components/esp_system/port/arch/riscv/expression_with_stack.c -@@ -18,6 +18,8 @@ - #include "freertos/FreeRTOS.h" - #include "freertos/portmacro.h" - -+#if !defined CONFIG_IDF_RTOS_RTTHREAD -+ - static portMUX_TYPE shared_stack_spinlock = portMUX_INITIALIZER_UNLOCKED; - static void *current_task_stack = NULL; - -@@ -46,9 +48,12 @@ static StackType_t *esp_switch_stack_setup(StackType_t *stack, size_t stack_size - return ((StackType_t *)adjusted_top_of_stack); - } - -+#endif -+ - - void esp_execute_shared_stack_function(SemaphoreHandle_t lock, void *stack, size_t stack_size, shared_stack_function function) - { -+#if !defined CONFIG_IDF_RTOS_RTTHREAD - assert(lock); - assert(stack); - assert(stack_size > 0 && stack_size >= CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE); -@@ -70,4 +75,7 @@ void esp_execute_shared_stack_function(SemaphoreHandle_t lock, void *stack, size - portEXIT_CRITICAL(&shared_stack_spinlock); - - xSemaphoreGive(lock); -+#else -+ function(); -+#endif - } -diff --git a/components/esp_system/startup.c b/components/esp_system/startup.c -index 0feda4e9f5..b1752d91a0 100644 ---- a/components/esp_system/startup.c -+++ b/components/esp_system/startup.c -@@ -72,6 +72,10 @@ - #include "esp_psram.h" - #include "esp_private/esp_psram_extram.h" - #endif -+ -+#if CONFIG_IDF_RTOS_RTTHREAD -+#include "rtthread.h" -+#endif - /***********************************************/ - - #include "esp_private/startup_internal.h" -@@ -266,6 +270,11 @@ static void do_core_init(void) - app CPU, and when that is not up yet, the memory will be inaccessible and heap_caps_init may - fail initializing it properly. */ - heap_caps_init(); -+#if CONFIG_IDF_RTOS_RTTHREAD && defined RT_USING_HEAP -+ extern int __heap_start__; -+ extern int __heap_end__; -+ rt_system_heap_init((void *)&__heap_start__, (void *)&__heap_end__); -+#endif - - // When apptrace module is enabled, there will be SEGGER_SYSVIEW calls in the newlib init. - // SEGGER_SYSVIEW relies on apptrace module -diff --git a/components/esp_system/task_wdt.c b/components/esp_system/task_wdt.c -index 58d1247bf0..60330edf8a 100644 ---- a/components/esp_system/task_wdt.c -+++ b/components/esp_system/task_wdt.c -@@ -29,6 +29,8 @@ - #include "esp_private/eh_frame_parser.h" - #endif // CONFIG_ESP_SYSTEM_USE_EH_FRAME - -+#if CONFIG_ESP_TASK_WDT -+ - #if CONFIG_IDF_TARGET_ARCH_RISCV && !CONFIG_ESP_SYSTEM_USE_EH_FRAME - /* Function used to print all the registers pointed by the given frame .*/ - extern void panic_print_registers(const void *frame, int core); -@@ -784,3 +786,5 @@ esp_err_t esp_task_wdt_status(TaskHandle_t task_handle) - - return ret; - } -+ -+#endif -diff --git a/components/esp_timer/src/esp_timer.c b/components/esp_timer/src/esp_timer.c -index 3ca19f642f..78779a08b3 100644 ---- a/components/esp_timer/src/esp_timer.c -+++ b/components/esp_timer/src/esp_timer.c -@@ -460,10 +460,12 @@ out: - return ESP_ERR_NO_MEM; - } - -+#if !defined CONFIG_IDF_RTOS_RTTHREAD - ESP_SYSTEM_INIT_FN(esp_timer_startup_init, BIT(0), 100) - { - return esp_timer_init(); - } -+#endif - - esp_err_t esp_timer_deinit(void) - { -diff --git a/components/freertos/CMakeLists.txt b/components/freertos/CMakeLists.txt -index 78a8e4ae4e..5cd54494f6 100644 ---- a/components/freertos/CMakeLists.txt -+++ b/components/freertos/CMakeLists.txt -@@ -6,7 +6,36 @@ endif() - - idf_build_get_property(target IDF_TARGET) - --if(CONFIG_FREERTOS_SMP) -+if(CONFIG_IDF_RTOS_RTTHREAD) -+ set(freertos_root "../../../FreeRTOS_Wrapper-latest/FreeRTOS") -+ set(srcs -+ "${freertos_root}/portable/esp-idf/riscv/port.c") -+ -+ set(include_dirs -+ "${freertos_root}/include" -+ esp_additions/include -+ esp_additions/include/freertos -+ "${freertos_root}/portable/esp-idf/riscv/include") -+ -+ set(private_include_dirs -+ "${freertos_root}/portable/esp-idf/riscv/include/freertos") -+ -+ list(APPEND srcs -+ "${freertos_root}/portable/esp-idf/port_common.c" -+ "${freertos_root}/portable/esp-idf/port_rt.c" -+ "${freertos_root}/event_groups.c" -+ "${freertos_root}/queue.c" -+ "${freertos_root}/tasks.c" -+ "${freertos_root}/timers.c" -+ "${freertos_root}/list.c" -+ "FreeRTOS-openocd.c" -+ "esp_additions/freertos_v8_compat.c") -+ -+ list(APPEND private_include_dirs -+ "${freertos_root}/include/freertos" -+ "esp_additions/private_include") -+ -+elseif(CONFIG_FREERTOS_SMP) - set(ldfragments linker_smp.lf) - if(CONFIG_IDF_TARGET_ARCH_XTENSA) - set(srcs -@@ -133,11 +162,19 @@ else() - endif() - endif() - -+if(CONFIG_IDF_RTOS_RTTHREAD) -+idf_component_register(SRCS "${srcs}" -+ INCLUDE_DIRS ${include_dirs} -+ PRIV_INCLUDE_DIRS ${private_include_dirs} -+ PRIV_REQUIRES soc esp_pm) -+else() - idf_component_register(SRCS "${srcs}" - INCLUDE_DIRS ${include_dirs} - PRIV_INCLUDE_DIRS ${private_include_dirs} - LDFRAGMENTS "${ldfragments}" -+ REQUIRES main - PRIV_REQUIRES soc esp_pm) -+endif() - - idf_component_get_property(COMPONENT_DIR freertos COMPONENT_DIR) - -@@ -153,6 +190,16 @@ if(CONFIG_FREERTOS_DEBUG_OCDAWARE) - idf_build_set_property(COMPILE_OPTIONS "-DconfigENABLE_FREERTOS_DEBUG_OCDAWARE=1" APPEND) - endif() - -+if(CONFIG_IDF_RTOS_RTTHREAD) -+set_source_files_properties( -+ tasks.c -+ event_groups.c -+ timers.c -+ queue.c -+ PROPERTIES COMPILE_DEFINITIONS -+ _ESP_FREERTOS_INTERNAL -+ ) -+else() - set_source_files_properties( - tasks.c - event_groups.c -@@ -162,6 +209,7 @@ set_source_files_properties( - PROPERTIES COMPILE_DEFINITIONS - _ESP_FREERTOS_INTERNAL - ) -+endif() - - # The freertos component provides the `start_app` and `start_app_other_cores` - # if it is included in the build. It then calls `app_main` -diff --git a/components/freertos/esp_additions/private_include/freertos_tasks_c_additions.h b/components/freertos/esp_additions/private_include/freertos_tasks_c_additions.h -index f5ecdbb5a9..96fc4f73ce 100644 ---- a/components/freertos/esp_additions/private_include/freertos_tasks_c_additions.h -+++ b/components/freertos/esp_additions/private_include/freertos_tasks_c_additions.h -@@ -34,8 +34,9 @@ - struct _reent *__getreent(void) - { - // No lock needed because if this changes, we won't be running anymore. -- TCB_t *pxCurTask = xTaskGetCurrentTaskHandle(); - struct _reent *ret; -+#if !defined CONFIG_IDF_RTOS_RTTHREAD -+ TCB_t *pxCurTask = xTaskGetCurrentTaskHandle(); - if (pxCurTask == NULL) { - // No task running. Return global struct. - ret = _GLOBAL_REENT; -@@ -43,6 +44,9 @@ struct _reent *__getreent(void) - // We have a task; return its reentrant struct. - ret = &pxCurTask->xNewLib_reent; - } -+#else -+ ret = _GLOBAL_REENT; -+#endif - return ret; - } - #endif // configUSE_NEWLIB_REENTRANT == 1 -diff --git a/components/riscv/vectors.S b/components/riscv/vectors.S -index 9b868280db..23236f3d8d 100644 ---- a/components/riscv/vectors.S -+++ b/components/riscv/vectors.S -@@ -10,6 +10,9 @@ - #include "soc/soc_caps.h" - #include "sdkconfig.h" - -+#define STORE sw -+#define LOAD lw -+#define REGBYTES 4 - - .equ SAVE_REGS, 32 - .equ CONTEXT_SIZE, (SAVE_REGS * 4) -@@ -210,6 +213,8 @@ _return_from_exception: - */ - .global _interrupt_handler - .type _interrupt_handler, @function -+#ifndef CONFIG_IDF_RTOS_RTTHREAD -+ - _interrupt_handler: - /* Start by saving the general purpose registers and the PC value before - * the interrupt happened. */ -@@ -308,3 +313,177 @@ _interrupt_handler: - /* exit, this will also re-enable the interrupts */ - mret - .size _interrupt_handler, .-_interrupt_handler -+#else -+_interrupt_handler: -+ /* 此时CPU的sp = from_thread->sp */ -+ /* 注意: 在这里,并没有将mepc的值赋值为from_thread栈中的epc,但后面会赋值 */ -+ addi sp, sp, -32 * REGBYTES /* sp = sp - 32 * 4 栈指针向下偏移32个寄存器长度,用来将CPU的寄存器保存到from_thread的栈中*/ -+ STORE x1, 1 * REGBYTES(sp) /* 将CPU的x1寄存器,即ra寄存器,保存到from_thread->栈中 */ -+ -+ li t0, 0x80 /* t0 = 0x80 */ -+ STORE t0, 2 * REGBYTES(sp) /* mstatus = t0, 即关闭全局中断 */ -+ -+ /* 将 CPU 的其他寄存器的值,保存到from_thread的任务栈中 */ -+ STORE x4, 4 * REGBYTES(sp) -+ STORE x5, 5 * REGBYTES(sp) -+ STORE x6, 6 * REGBYTES(sp) -+ STORE x7, 7 * REGBYTES(sp) -+ STORE x8, 8 * REGBYTES(sp) -+ STORE x9, 9 * REGBYTES(sp) -+ STORE x10, 10 * REGBYTES(sp) -+ STORE x11, 11 * REGBYTES(sp) -+ STORE x12, 12 * REGBYTES(sp) -+ STORE x13, 13 * REGBYTES(sp) -+ STORE x14, 14 * REGBYTES(sp) -+ STORE x15, 15 * REGBYTES(sp) -+ STORE x16, 16 * REGBYTES(sp) -+ STORE x17, 17 * REGBYTES(sp) -+ STORE x18, 18 * REGBYTES(sp) -+ STORE x19, 19 * REGBYTES(sp) -+ STORE x20, 20 * REGBYTES(sp) -+ STORE x21, 21 * REGBYTES(sp) -+ STORE x22, 22 * REGBYTES(sp) -+ STORE x23, 23 * REGBYTES(sp) -+ STORE x24, 24 * REGBYTES(sp) -+ STORE x25, 25 * REGBYTES(sp) -+ STORE x26, 26 * REGBYTES(sp) -+ STORE x27, 27 * REGBYTES(sp) -+ STORE x28, 28 * REGBYTES(sp) -+ STORE x29, 29 * REGBYTES(sp) -+ STORE x30, 30 * REGBYTES(sp) -+ STORE x31, 31 * REGBYTES(sp) -+ -+ /* 备份 CPU 的 sp (这时,CPU的sp其实就是from thread的sp指针) 寄存器的值到 s0 寄存器中,下面会使用s0,恢复 CPU 的寄存器 */ -+ move s0, sp /* s0 = sp */ -+ -+ /* 在中断函数中,中断函数中调用的C函数,需要使用 sp, 这里,在中断函数中,使用的 sp 为,系统的栈资源 */ -+ /* switch to interrupt stack */ -+ la sp, __stack_end__ /* sp = _sp */ -+ -+ /* interrupt handle */ -+ /* 注意: 在调用C函数之前,比如sp的值为0x30001000, 在执行完C函数后,sp的值还是会变成 0x30001000 */ -+ call rt_interrupt_enter /* 执行所有的中断函数前,调用该函数 */ -+ -+ csrr s1, mcause -+ csrr s2, mstatus -+ -+ /* Save the interrupt threshold level */ -+ la t0, INTERRUPT_CORE0_CPU_INT_THRESH_REG -+ lw s3, 0(t0) -+ -+ li t2, 0x7fffffff -+ and t1, s1, t2 /* t1 = mcause & mask */ -+ slli t1, t1, 2 /* t1 = mcause * 4 */ -+ la t2, INTC_INT_PRIO_REG(0) -+ add t1, t2, t1 /* t1 = INTC_INT_PRIO_REG + 4 * mcause */ -+ lw t2, 0(t1) /* t2 = INTC_INT_PRIO_REG[mcause] */ -+ addi t2, t2, 1 /* t2 = t2 +1 */ -+ sw t2, 0(t0) /* INTERRUPT_CORE0_CPU_INT_THRESH_REG = t2 */ -+ fence -+ -+ li t0, 0x8 -+ csrrs t0, mstatus, t0 -+ -+ /* call the C dispatcher */ -+ mv a0, sp /* argument 1, stack pointer */ -+ mv a1, s1 /* argument 2, interrupt number (mcause) */ -+ /* mask off the interrupt flag of mcause */ -+ li t0, 0x7fffffff -+ and a1, a1, t0 -+ jal _global_interrupt_handler -+ -+ li t0, 0x8 -+ csrrc t0, mstatus, t0 -+ -+ /* restore the interrupt threshold level */ -+ la t0, INTERRUPT_CORE0_CPU_INT_THRESH_REG -+ sw s3, 0(t0) -+ fence -+ -+ call rt_interrupt_leave /* 执行所有的中断函数后,调用该函数 */ -+ -+ /* 上面,将保存执行中断服务函数之前的CPU的sp寄存器到了s0所指向的位置处,当执行完中断服务函数,需要将之前的CPU寄存器,恢复一下,此时sp又变成了from thread的sp了 */ -+ move sp, s0 /* sp = s0 */ -+ -+ /* 下面两句话,相当于将 rt_thread_switch_interrupt_flag 值,赋值给了s2 */ -+ /* 将 rt_thread_switch_interrupt_flag 的地址值,赋值给 s0 寄存器*/ -+ la s0, rt_thread_switch_interrupt_flag /* s0 = &rt_thread_switch_interrupt_flag */ -+ /* 将 s0 所指向的地址处的内容,取出来,赋值给 s2 寄存器,其实就是将 rt_thread_switch_interrupt_flag 的值,赋值给了 s2 寄存器*/ -+ lw s2, 0(s0) /* s2 = *s0 = rt_thread_switch_interrupt_flag */ -+ -+ /* 如果 s2的值,即 rt_thread_switch_interrupt_flag 值,如果不为0,则需要继续执行下一条指令,如果为0,则需要跳转到 spurious_interrupt 标号处 执行 */ -+ /* 如果 s2的值等于0,rt_thread_switch_interrupt_flag等于0, 则不需要在中断处理函数中,进行上下文切换,反之则需要 */ -+ /* 如果不需要上下文切换, */ -+ -+ /* 在这里,跳转到 spurious_interrupt的话,是不会进行上下文切换的,因为,此时CPU的sp指针还是from线程的*/ -+ beqz s2, spurious_interrupt /* if (s2 == 0) goto spurious_interrupt; else 执行下一条语句*/ -+ -+ /* 需要上下文切换: 主要目的是将CPU的sp指针,赋值为to_thread的sp */ -+ -+ /* 将 s0 所执向的地址的内容设置为0, 也就是,将变量 rt_thread_switch_interrupt_flag 赋值为了 0 */ -+ /* s0存放的值是 rt_thread_switch_interrupt_flag 变量的地址*/ -+ sw zero, 0(s0) /* *s0 = 0; 也就是 rt_thread_switch_interrupt_flag = 0 */ -+ /* 将 mepc 的值,赋值给 a0 寄存器,mepc 的值是,跳转到中断函数执行之前的 PC 指针 */ -+ /* 这时的mpec其实,还是from线程,在跳转到中断执行前的一个PC地址 */ -+ csrr a0, mepc /* a0 = mepc */ -+ -+ /* 将 mpec 的值写回到freom thread任务栈中的 epc 中,待后续,恢复from线程时,使用 */ -+ STORE a0, 0 * REGBYTES(sp) /* from_thread->sp->epc = a0 ,中断入口处*/ -+ -+ /* 将from_thread的sp指针,赋值为CPU的sp指针 */ -+ la s0, rt_interrupt_from_thread /* s0 = &rt_interrupt_from_thread 注意: rt_interrupt_from_thread = &(from_thread->sp) */ -+ LOAD s1, 0(s0) /* s1 = rt_interrupt_from_thread,也就是s1 = &(from_thread->sp) */ -+ STORE sp, 0(s1) /* from_thread->sp = sp*/ -+ -+ /* 接下来,需要开始恢复CPU的sp为to_thread的sp了 */ -+ la s0, rt_interrupt_to_thread /* s0 = &rt_interrupt_to_thread 注意: rt_interrupt_to_thread = &(to_thred->sp)*/ -+ LOAD s1, 0(s0) /* s1 = rt_interrupt_to_thread, 也就是s1 = &(to_thred->sp) */ -+ LOAD sp, 0(s1) /* sp = (to_thred->sp)*/ -+ -+ /* 将CPU的 mepc设置为to_thred的mepc,待中断退出,执行mret指令后,将从该地址开始执行 */ -+ LOAD a0, 0 * REGBYTES(sp) /* a0 = to_thread的mepc的值*/ -+ csrw mepc, a0 /* mepc = a0 */ -+ -+ -+spurious_interrupt: -+ LOAD x1, 1 * REGBYTES(sp) -+ -+ /* Remain in M-mode after mret */ -+ li t0, 0x00001800 -+ csrs mstatus, t0 -+ LOAD t0, 2 * REGBYTES(sp) -+ csrs mstatus, t0 -+ -+ LOAD x4, 4 * REGBYTES(sp) -+ LOAD x5, 5 * REGBYTES(sp) -+ LOAD x6, 6 * REGBYTES(sp) -+ LOAD x7, 7 * REGBYTES(sp) -+ LOAD x8, 8 * REGBYTES(sp) -+ LOAD x9, 9 * REGBYTES(sp) -+ LOAD x10, 10 * REGBYTES(sp) -+ LOAD x11, 11 * REGBYTES(sp) -+ LOAD x12, 12 * REGBYTES(sp) -+ LOAD x13, 13 * REGBYTES(sp) -+ LOAD x14, 14 * REGBYTES(sp) -+ LOAD x15, 15 * REGBYTES(sp) -+ LOAD x16, 16 * REGBYTES(sp) -+ LOAD x17, 17 * REGBYTES(sp) -+ LOAD x18, 18 * REGBYTES(sp) -+ LOAD x19, 19 * REGBYTES(sp) -+ LOAD x20, 20 * REGBYTES(sp) -+ LOAD x21, 21 * REGBYTES(sp) -+ LOAD x22, 22 * REGBYTES(sp) -+ LOAD x23, 23 * REGBYTES(sp) -+ LOAD x24, 24 * REGBYTES(sp) -+ LOAD x25, 25 * REGBYTES(sp) -+ LOAD x26, 26 * REGBYTES(sp) -+ LOAD x27, 27 * REGBYTES(sp) -+ LOAD x28, 28 * REGBYTES(sp) -+ LOAD x29, 29 * REGBYTES(sp) -+ LOAD x30, 30 * REGBYTES(sp) -+ LOAD x31, 31 * REGBYTES(sp) -+ -+ addi sp, sp, 32 * REGBYTES -+ mret -+ .size _interrupt_handler, .-_interrupt_handler -+#endif -\ No newline at end of file --- -2.32.0 (Apple Git-132) - - -From 394259fb2164e513abd4f0d23d88da92c2a2ac9e Mon Sep 17 00:00:00 2001 -From: tangzz98 -Date: Fri, 23 Sep 2022 00:12:13 -0400 -Subject: [PATCH 2/2] Specify freertos_root in project CMakeLists.txt - ---- - components/freertos/CMakeLists.txt | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/components/freertos/CMakeLists.txt b/components/freertos/CMakeLists.txt -index 5cd54494f6..33c901c187 100644 ---- a/components/freertos/CMakeLists.txt -+++ b/components/freertos/CMakeLists.txt -@@ -7,7 +7,7 @@ endif() - idf_build_get_property(target IDF_TARGET) - - if(CONFIG_IDF_RTOS_RTTHREAD) -- set(freertos_root "../../../FreeRTOS_Wrapper-latest/FreeRTOS") -+ message(${freertos_root}) - set(srcs - "${freertos_root}/portable/esp-idf/riscv/port.c") - --- -2.32.0 (Apple Git-132) - diff --git a/bsp/ESP32_C3/sdkconfig b/bsp/ESP32_C3/sdkconfig deleted file mode 100644 index dd189b63cf..0000000000 --- a/bsp/ESP32_C3/sdkconfig +++ /dev/null @@ -1,1017 +0,0 @@ -# -# Automatically generated file. DO NOT EDIT. -# Espressif IoT Development Framework (ESP-IDF) Project Configuration -# -CONFIG_SOC_ADC_SUPPORTED=y -CONFIG_SOC_DEDICATED_GPIO_SUPPORTED=y -CONFIG_SOC_GDMA_SUPPORTED=y -CONFIG_SOC_TWAI_SUPPORTED=y -CONFIG_SOC_BT_SUPPORTED=y -CONFIG_SOC_ASYNC_MEMCPY_SUPPORTED=y -CONFIG_SOC_USB_SERIAL_JTAG_SUPPORTED=y -CONFIG_SOC_TEMP_SENSOR_SUPPORTED=y -CONFIG_SOC_XT_WDT_SUPPORTED=y -CONFIG_SOC_WIFI_SUPPORTED=y -CONFIG_SOC_SUPPORTS_SECURE_DL_MODE=y -CONFIG_SOC_EFUSE_KEY_PURPOSE_FIELD=y -CONFIG_SOC_EFUSE_HAS_EFUSE_RST_BUG=y -CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y -CONFIG_SOC_RTC_MEM_SUPPORTED=y -CONFIG_SOC_I2S_SUPPORTED=y -CONFIG_SOC_RMT_SUPPORTED=y -CONFIG_SOC_SDM_SUPPORTED=y -CONFIG_SOC_SYSTIMER_SUPPORTED=y -CONFIG_SOC_SUPPORT_COEXISTENCE=y -CONFIG_SOC_AES_SUPPORTED=y -CONFIG_SOC_MPI_SUPPORTED=y -CONFIG_SOC_SHA_SUPPORTED=y -CONFIG_SOC_HMAC_SUPPORTED=y -CONFIG_SOC_DIG_SIGN_SUPPORTED=y -CONFIG_SOC_FLASH_ENC_SUPPORTED=y -CONFIG_SOC_SECURE_BOOT_SUPPORTED=y -CONFIG_SOC_MEMPROT_SUPPORTED=y -CONFIG_SOC_XTAL_SUPPORT_40M=y -CONFIG_SOC_AES_SUPPORT_DMA=y -CONFIG_SOC_AES_GDMA=y -CONFIG_SOC_AES_SUPPORT_AES_128=y -CONFIG_SOC_AES_SUPPORT_AES_256=y -CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y -CONFIG_SOC_ADC_ARBITER_SUPPORTED=y -CONFIG_SOC_ADC_FILTER_SUPPORTED=y -CONFIG_SOC_ADC_MONITOR_SUPPORTED=y -CONFIG_SOC_ADC_DMA_SUPPORTED=y -CONFIG_SOC_ADC_PERIPH_NUM=2 -CONFIG_SOC_ADC_MAX_CHANNEL_NUM=5 -CONFIG_SOC_ADC_ATTEN_NUM=4 -CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=1 -CONFIG_SOC_ADC_PATT_LEN_MAX=8 -CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=12 -CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 -CONFIG_SOC_ADC_DIGI_RESULT_BYTES=4 -CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 -CONFIG_SOC_ADC_DIGI_FILTER_NUM=2 -CONFIG_SOC_ADC_DIGI_MONITOR_NUM=2 -CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=83333 -CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=611 -CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=12 -CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 -CONFIG_SOC_ADC_CALIBRATION_V1_SUPPORTED=y -CONFIG_SOC_APB_BACKUP_DMA=y -CONFIG_SOC_BROWNOUT_RESET_SUPPORTED=y -CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y -CONFIG_SOC_CACHE_MEMORY_IBANK_SIZE=0x4000 -CONFIG_SOC_CPU_CORES_NUM=1 -CONFIG_SOC_CPU_INTR_NUM=32 -CONFIG_SOC_CPU_HAS_FLEXIBLE_INTC=y -CONFIG_SOC_CPU_BREAKPOINTS_NUM=8 -CONFIG_SOC_CPU_WATCHPOINTS_NUM=8 -CONFIG_SOC_CPU_WATCHPOINT_SIZE=0x80000000 -CONFIG_SOC_DS_SIGNATURE_MAX_BIT_LEN=3072 -CONFIG_SOC_DS_KEY_PARAM_MD_IV_LENGTH=16 -CONFIG_SOC_DS_KEY_CHECK_MAX_WAIT_US=1100 -CONFIG_SOC_GDMA_GROUPS=1 -CONFIG_SOC_GDMA_PAIRS_PER_GROUP=3 -CONFIG_SOC_GDMA_TX_RX_SHARE_INTERRUPT=y -CONFIG_SOC_GPIO_PORT=1 -CONFIG_SOC_GPIO_PIN_COUNT=22 -CONFIG_SOC_GPIO_SUPPORTS_RTC_INDEPENDENT=y -CONFIG_SOC_GPIO_SUPPORT_FORCE_HOLD=y -CONFIG_SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP=y -CONFIG_SOC_GPIO_DEEP_SLEEP_WAKE_VALID_GPIO_MASK=0 -CONFIG_SOC_GPIO_SUPPORT_SLP_SWITCH=y -CONFIG_SOC_DEDIC_GPIO_OUT_CHANNELS_NUM=8 -CONFIG_SOC_DEDIC_GPIO_IN_CHANNELS_NUM=8 -CONFIG_SOC_DEDIC_PERIPH_ALWAYS_ENABLE=y -CONFIG_SOC_I2C_NUM=1 -CONFIG_SOC_I2C_FIFO_LEN=32 -CONFIG_SOC_I2C_SUPPORT_SLAVE=y -CONFIG_SOC_I2C_SUPPORT_HW_CLR_BUS=y -CONFIG_SOC_I2C_SUPPORT_XTAL=y -CONFIG_SOC_I2C_SUPPORT_RTC=y -CONFIG_SOC_I2S_NUM=y -CONFIG_SOC_I2S_HW_VERSION_2=y -CONFIG_SOC_I2S_SUPPORTS_PCM=y -CONFIG_SOC_I2S_SUPPORTS_PDM=y -CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y -CONFIG_SOC_I2S_SUPPORTS_PDM_CODEC=y -CONFIG_SOC_I2S_SUPPORTS_TDM=y -CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y -CONFIG_SOC_LEDC_SUPPORT_XTAL_CLOCK=y -CONFIG_SOC_LEDC_CHANNEL_NUM=6 -CONFIG_SOC_LEDC_TIMER_BIT_WIDE_NUM=14 -CONFIG_SOC_LEDC_SUPPORT_FADE_STOP=y -CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 -CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 -CONFIG_SOC_RMT_GROUPS=1 -CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=2 -CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=2 -CONFIG_SOC_RMT_CHANNELS_PER_GROUP=4 -CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=48 -CONFIG_SOC_RMT_SUPPORT_RX_PINGPONG=y -CONFIG_SOC_RMT_SUPPORT_RX_DEMODULATION=y -CONFIG_SOC_RMT_SUPPORT_TX_ASYNC_STOP=y -CONFIG_SOC_RMT_SUPPORT_TX_LOOP_COUNT=y -CONFIG_SOC_RMT_SUPPORT_TX_SYNCHRO=y -CONFIG_SOC_RMT_SUPPORT_TX_CARRIER_DATA_ONLY=y -CONFIG_SOC_RMT_SUPPORT_XTAL=y -CONFIG_SOC_RMT_SUPPORT_APB=y -CONFIG_SOC_RMT_SUPPORT_RC_FAST=y -CONFIG_SOC_RTC_CNTL_CPU_PD_DMA_BUS_WIDTH=128 -CONFIG_SOC_RTC_CNTL_CPU_PD_REG_FILE_NUM=108 -CONFIG_SOC_RTC_SLOW_CLOCK_SUPPORT_8MD256=y -CONFIG_SOC_RTCIO_PIN_COUNT=0 -CONFIG_SOC_RSA_MAX_BIT_LEN=3072 -CONFIG_SOC_SHA_DMA_MAX_BUFFER_SIZE=3968 -CONFIG_SOC_SHA_SUPPORT_DMA=y -CONFIG_SOC_SHA_SUPPORT_RESUME=y -CONFIG_SOC_SHA_GDMA=y -CONFIG_SOC_SHA_SUPPORT_SHA1=y -CONFIG_SOC_SHA_SUPPORT_SHA224=y -CONFIG_SOC_SHA_SUPPORT_SHA256=y -CONFIG_SOC_SDM_GROUPS=1 -CONFIG_SOC_SDM_CHANNELS_PER_GROUP=4 -CONFIG_SOC_SPI_PERIPH_NUM=2 -CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 -CONFIG_SOC_SPI_SUPPORT_DDRCLK=y -CONFIG_SOC_SPI_SLAVE_SUPPORT_SEG_TRANS=y -CONFIG_SOC_SPI_SUPPORT_CD_SIG=y -CONFIG_SOC_SPI_SUPPORT_CONTINUOUS_TRANS=y -CONFIG_SOC_SPI_SUPPORT_SLAVE_HD_VER2=y -CONFIG_SOC_SPI_PERIPH_SUPPORT_CONTROL_DUMMY_OUT=y -CONFIG_SOC_MEMSPI_IS_INDEPENDENT=y -CONFIG_SOC_SPI_MAX_PRE_DIVIDER=16 -CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE=y -CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND=y -CONFIG_SOC_SPI_MEM_SUPPORT_AUTO_RESUME=y -CONFIG_SOC_SPI_MEM_SUPPORT_IDLE_INTR=y -CONFIG_SOC_SPI_MEM_SUPPORT_SW_SUSPEND=y -CONFIG_SOC_SPI_MEM_SUPPORT_CHECK_SUS=y -CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y -CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y -CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y -CONFIG_SOC_MEMSPI_SRC_FREQ_26M_SUPPORTED=y -CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y -CONFIG_SOC_SYSTIMER_COUNTER_NUM=2 -CONFIG_SOC_SYSTIMER_ALARM_NUM=3 -CONFIG_SOC_SYSTIMER_BIT_WIDTH_LO=32 -CONFIG_SOC_SYSTIMER_BIT_WIDTH_HI=20 -CONFIG_SOC_SYSTIMER_FIXED_DIVIDER=y -CONFIG_SOC_SYSTIMER_INT_LEVEL=y -CONFIG_SOC_SYSTIMER_ALARM_MISS_COMPENSATE=y -CONFIG_SOC_TIMER_GROUPS=2 -CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=1 -CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=54 -CONFIG_SOC_TIMER_GROUP_SUPPORT_XTAL=y -CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y -CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=2 -CONFIG_SOC_TWAI_BRP_MIN=2 -CONFIG_SOC_TWAI_BRP_MAX=16384 -CONFIG_SOC_TWAI_SUPPORTS_RX_STATUS=y -CONFIG_SOC_SECURE_BOOT_V2_RSA=y -CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=3 -CONFIG_SOC_EFUSE_REVOKE_BOOT_KEY_DIGESTS=y -CONFIG_SOC_SUPPORT_SECURE_BOOT_REVOKE_KEY=y -CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=32 -CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES=y -CONFIG_SOC_FLASH_ENCRYPTION_XTS_AES_128=y -CONFIG_SOC_MEMPROT_CPU_PREFETCH_PAD_SIZE=16 -CONFIG_SOC_MEMPROT_MEM_ALIGN_SIZE=512 -CONFIG_SOC_UART_NUM=2 -CONFIG_SOC_UART_FIFO_LEN=128 -CONFIG_SOC_UART_BITRATE_MAX=5000000 -CONFIG_SOC_UART_SUPPORT_APB_CLK=y -CONFIG_SOC_UART_SUPPORT_RTC_CLK=y -CONFIG_SOC_UART_SUPPORT_XTAL_CLK=y -CONFIG_SOC_UART_SUPPORT_WAKEUP_INT=y -CONFIG_SOC_UART_REQUIRE_CORE_RESET=y -CONFIG_SOC_UART_SUPPORT_FSM_TX_WAIT_SEND=y -CONFIG_SOC_COEX_HW_PTI=y -CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 -CONFIG_SOC_MAC_BB_PD_MEM_SIZE=192 -CONFIG_SOC_WIFI_LIGHT_SLEEP_CLK_WIDTH=12 -CONFIG_SOC_PM_SUPPORT_WIFI_WAKEUP=y -CONFIG_SOC_PM_SUPPORT_BT_WAKEUP=y -CONFIG_SOC_PM_SUPPORT_CPU_PD=y -CONFIG_SOC_PM_SUPPORT_WIFI_PD=y -CONFIG_SOC_PM_SUPPORT_BT_PD=y -CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_FAST_RC=y -CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_XTAL=y -CONFIG_SOC_WIFI_HW_TSF=y -CONFIG_SOC_WIFI_FTM_SUPPORT=y -CONFIG_SOC_WIFI_GCMP_SUPPORT=y -CONFIG_SOC_WIFI_WAPI_SUPPORT=y -CONFIG_SOC_WIFI_CSI_SUPPORT=y -CONFIG_SOC_WIFI_MESH_SUPPORT=y -CONFIG_SOC_BLE_SUPPORTED=y -CONFIG_IDF_CMAKE=y -CONFIG_IDF_TARGET_ARCH_RISCV=y -CONFIG_IDF_TARGET_ARCH="riscv" -CONFIG_IDF_TARGET="esp32c3" -CONFIG_IDF_TARGET_ESP32C3=y -CONFIG_IDF_RTOS_RTTHREAD=y -CONFIG_IDF_FIRMWARE_CHIP_ID=0x0005 - -# -# Build type -# -CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y -# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set -CONFIG_APP_BUILD_GENERATE_BINARIES=y -CONFIG_APP_BUILD_BOOTLOADER=y -CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y -# CONFIG_APP_REPRODUCIBLE_BUILD is not set -# CONFIG_APP_NO_BLOBS is not set -# end of Build type - -# -# Bootloader config -# -CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x0 -CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y -# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set -# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set -# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set -# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set -# CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set -# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set -CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y -# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set -# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set -CONFIG_BOOTLOADER_LOG_LEVEL=3 -CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y -# CONFIG_BOOTLOADER_FACTORY_RESET is not set -# CONFIG_BOOTLOADER_APP_TEST is not set -CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y -CONFIG_BOOTLOADER_WDT_ENABLE=y -# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set -CONFIG_BOOTLOADER_WDT_TIME_MS=9000 -# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set -# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set -# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set -# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set -CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 -# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set -CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y -# end of Bootloader config - -# -# Security features -# -CONFIG_SECURE_BOOT_V2_RSA_SUPPORTED=y -CONFIG_SECURE_BOOT_V2_PREFERRED=y -# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set -# CONFIG_SECURE_BOOT is not set -# CONFIG_SECURE_FLASH_ENC_ENABLED is not set -CONFIG_SECURE_ROM_DL_MODE_ENABLED=y -# end of Security features - -# -# Application manager -# -CONFIG_APP_COMPILE_TIME_DATE=y -# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set -# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set -# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set -CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16 -# end of Application manager - -CONFIG_ESP_ROM_HAS_CRC_LE=y -CONFIG_ESP_ROM_HAS_CRC_BE=y -CONFIG_ESP_ROM_HAS_JPEG_DECODE=y -CONFIG_ESP_ROM_UART_CLK_IS_XTAL=y -CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=3 -CONFIG_ESP_ROM_HAS_RETARGETABLE_LOCKING=y -CONFIG_ESP_ROM_HAS_ERASE_0_REGION_BUG=y -CONFIG_ESP_ROM_GET_CLK_FREQ=y -CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y - -# -# Boot ROM Behavior -# -CONFIG_BOOT_ROM_LOG_ALWAYS_ON=y -# CONFIG_BOOT_ROM_LOG_ALWAYS_OFF is not set -# CONFIG_BOOT_ROM_LOG_ON_GPIO_HIGH is not set -# CONFIG_BOOT_ROM_LOG_ON_GPIO_LOW is not set -# end of Boot ROM Behavior - -# -# Serial flasher config -# -# CONFIG_ESPTOOLPY_NO_STUB is not set -# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set -# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set -CONFIG_ESPTOOLPY_FLASHMODE_DIO=y -# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set -CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y -CONFIG_ESPTOOLPY_FLASHMODE="dio" -CONFIG_ESPTOOLPY_FLASHFREQ_80M=y -# CONFIG_ESPTOOLPY_FLASHFREQ_40M is not set -# CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set -# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set -CONFIG_ESPTOOLPY_FLASHFREQ="80m" -# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set -# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set -CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y -# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set -# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set -# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set -# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set -# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set -CONFIG_ESPTOOLPY_FLASHSIZE="4MB" -# CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set -CONFIG_ESPTOOLPY_BEFORE_RESET=y -# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set -CONFIG_ESPTOOLPY_BEFORE="default_reset" -CONFIG_ESPTOOLPY_AFTER_RESET=y -# CONFIG_ESPTOOLPY_AFTER_NORESET is not set -CONFIG_ESPTOOLPY_AFTER="hard_reset" -CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 -# end of Serial flasher config - -# -# Partition Table -# -CONFIG_PARTITION_TABLE_SINGLE_APP=y -# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set -# CONFIG_PARTITION_TABLE_TWO_OTA is not set -# CONFIG_PARTITION_TABLE_CUSTOM is not set -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" -CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" -CONFIG_PARTITION_TABLE_OFFSET=0x8000 -CONFIG_PARTITION_TABLE_MD5=y -# end of Partition Table - -# -# Compiler options -# -CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y -# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set -# CONFIG_COMPILER_OPTIMIZATION_PERF is not set -# CONFIG_COMPILER_OPTIMIZATION_NONE is not set -CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y -# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set -# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set -CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y -CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 -# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set -CONFIG_COMPILER_HIDE_PATHS_MACROS=y -# CONFIG_COMPILER_CXX_EXCEPTIONS is not set -# CONFIG_COMPILER_CXX_RTTI is not set -CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y -# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set -# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set -# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set -# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set -# CONFIG_COMPILER_SAVE_RESTORE_LIBCALLS is not set -# CONFIG_COMPILER_DUMP_RTL_FILES is not set -# end of Compiler options - -# -# Component config -# - -# -# Driver Configurations -# - -# -# Legacy ADC Configuration -# -# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set - -# -# Legacy ADC Calibration Configuration -# -# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set -# end of Legacy ADC Calibration Configuration -# end of Legacy ADC Configuration - -# -# SPI Configuration -# -# CONFIG_SPI_MASTER_IN_IRAM is not set -CONFIG_SPI_MASTER_ISR_IN_IRAM=y -# CONFIG_SPI_SLAVE_IN_IRAM is not set -CONFIG_SPI_SLAVE_ISR_IN_IRAM=y -# end of SPI Configuration - -# -# TWAI Configuration -# -# CONFIG_TWAI_ISR_IN_IRAM is not set -# end of TWAI Configuration - -# -# Temperature sensor Configuration -# -# CONFIG_TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN is not set -# CONFIG_TEMP_SENSOR_ENABLE_DEBUG_LOG is not set -# end of Temperature sensor Configuration - -# -# UART Configuration -# -# CONFIG_UART_ISR_IN_IRAM is not set -# end of UART Configuration - -# -# GPIO Configuration -# -# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set -# end of GPIO Configuration - -# -# Sigma Delta Modulator Configuration -# -# CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set -# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set -# CONFIG_SDM_ENABLE_DEBUG_LOG is not set -# end of Sigma Delta Modulator Configuration - -# -# GPTimer Configuration -# -# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set -# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set -# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set -# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set -# end of GPTimer Configuration - -# -# RMT Configuration -# -# CONFIG_RMT_ISR_IRAM_SAFE is not set -# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set -# CONFIG_RMT_ENABLE_DEBUG_LOG is not set -# end of RMT Configuration - -# -# I2S Configuration -# -# CONFIG_I2S_ISR_IRAM_SAFE is not set -# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set -# CONFIG_I2S_ENABLE_DEBUG_LOG is not set -# end of I2S Configuration -# end of Driver Configurations - -# -# eFuse Bit Manager -# -# CONFIG_EFUSE_CUSTOM_TABLE is not set -# CONFIG_EFUSE_VIRTUAL is not set -CONFIG_EFUSE_MAX_BLK_LEN=256 -# end of eFuse Bit Manager - -# -# Common ESP-related -# -CONFIG_ESP_ERR_TO_NAME_LOOKUP=y -# end of Common ESP-related - -# -# Hardware Settings -# - -# -# MAC Config -# -CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y -CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y -CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y -CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y -# CONFIG_ESP32C3_UNIVERSAL_MAC_ADDRESSES_TWO is not set -CONFIG_ESP32C3_UNIVERSAL_MAC_ADDRESSES_FOUR=y -CONFIG_ESP32C3_UNIVERSAL_MAC_ADDRESSES=4 -# end of MAC Config - -# -# Sleep Config -# -CONFIG_ESP_SLEEP_POWER_DOWN_FLASH=y -CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y -# CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND is not set -# end of Sleep Config - -# -# RTC Clock Config -# -CONFIG_RTC_CLK_SRC_INT_RC=y -# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set -# CONFIG_RTC_CLK_SRC_EXT_OSC is not set -# CONFIG_RTC_CLK_SRC_INT_8MD256 is not set -CONFIG_RTC_CLK_CAL_CYCLES=1024 -CONFIG_RTC_CLOCK_BBPLL_POWER_ON_WITH_USB=y -# end of RTC Clock Config - -# -# Peripheral Control -# -# CONFIG_PERIPH_CTRL_FUNC_IN_IRAM is not set -# end of Peripheral Control - -# -# MMU Config -# -CONFIG_MMU_PAGE_SIZE_64KB=y -CONFIG_MMU_PAGE_MODE="64KB" -CONFIG_MMU_PAGE_SIZE=0x10000 -# end of MMU Config - -# CONFIG_ESP32C3_REV_MIN_0 is not set -# CONFIG_ESP32C3_REV_MIN_1 is not set -# CONFIG_ESP32C3_REV_MIN_2 is not set -CONFIG_ESP32C3_REV_MIN_3=y -# CONFIG_ESP32C3_REV_MIN_4 is not set -CONFIG_ESP32C3_REV_MIN=3 - -# -# GDMA Configuration -# -# CONFIG_GDMA_CTRL_FUNC_IN_IRAM is not set -# CONFIG_GDMA_ISR_IRAM_SAFE is not set -# end of GDMA Configuration - -# -# Main XTAL Config -# -CONFIG_XTAL_FREQ_40=y -CONFIG_XTAL_FREQ=40 -# end of Main XTAL Config -# end of Hardware Settings - -# -# Power Management -# -# CONFIG_PM_ENABLE is not set -CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=y -# end of Power Management - -# -# ESP Ringbuf -# -# CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set -# CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH is not set -# end of ESP Ringbuf - -# -# ESP System Settings -# -# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set -CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y -CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 -# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set -CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y -# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set -# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set -# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set -CONFIG_ESP_SYSTEM_SINGLE_CORE_MODE=y -CONFIG_ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK=y -CONFIG_ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP=y -# CONFIG_ESP_SYSTEM_USE_EH_FRAME is not set - -# -# Memory protection -# -CONFIG_ESP_SYSTEM_MEMPROT_FEATURE=y -CONFIG_ESP_SYSTEM_MEMPROT_FEATURE_LOCK=y -# end of Memory protection - -CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 -CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 -CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 -CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y -# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set -CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 -CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 -CONFIG_ESP_CONSOLE_UART_DEFAULT=y -# CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG is not set -# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set -# CONFIG_ESP_CONSOLE_NONE is not set -# CONFIG_ESP_CONSOLE_SECONDARY_NONE is not set -CONFIG_ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG=y -CONFIG_ESP_CONSOLE_UART=y -CONFIG_ESP_CONSOLE_UART_NUM=0 -CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 -# CONFIG_ESP_INT_WDT is not set -# CONFIG_ESP_TASK_WDT is not set -# CONFIG_ESP_PANIC_HANDLER_IRAM is not set -# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set -# CONFIG_ESP_DEBUG_OCDAWARE is not set -CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y - -# -# Brownout Detector -# -CONFIG_ESP_BROWNOUT_DET=y -CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7=y -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set -# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set -CONFIG_ESP_BROWNOUT_DET_LVL=7 -# end of Brownout Detector - -CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y -# end of ESP System Settings - -# -# IPC (Inter-Processor Call) -# -CONFIG_ESP_IPC_TASK_STACK_SIZE=1536 -# end of IPC (Inter-Processor Call) - -# -# High resolution timer (esp_timer) -# -# CONFIG_ESP_TIMER_PROFILING is not set -CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y -CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y -CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 -CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 -# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set -CONFIG_ESP_TIMER_IMPL_SYSTIMER=y -# end of High resolution timer (esp_timer) - -# -# FreeRTOS -# - -# -# Kernel -# -# CONFIG_FREERTOS_SMP is not set -CONFIG_FREERTOS_UNICORE=y -CONFIG_FREERTOS_HZ=1000 -CONFIG_FREERTOS_OPTIMIZED_SCHEDULER=y -CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE=y -# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set -# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY is not set -CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 -CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 -# CONFIG_FREERTOS_USE_IDLE_HOOK is not set -# CONFIG_FREERTOS_USE_TICK_HOOK is not set -CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 -# CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY is not set -CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 -CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 -CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 -CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 -# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set -# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set -# end of Kernel - -# -# Port -# -CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y -# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set -# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set -CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y -CONFIG_FREERTOS_ISR_STACKSIZE=1536 -CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y -CONFIG_FREERTOS_TICK_SUPPORT_SYSTIMER=y -CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL1=y -# CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL3 is not set -CONFIG_FREERTOS_SYSTICK_USES_SYSTIMER=y -# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set -# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set -CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y -# CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT is not set -# end of Port - -CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF -CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y -# end of FreeRTOS - -# -# Hardware Abstraction Layer (HAL) and Low Level (LL) -# -CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y -# CONFIG_HAL_ASSERTION_DISABLE is not set -# CONFIG_HAL_ASSERTION_SILENT is not set -# CONFIG_HAL_ASSERTION_ENABLE is not set -CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 -# end of Hardware Abstraction Layer (HAL) and Low Level (LL) - -# -# Heap memory debugging -# -CONFIG_HEAP_POISONING_DISABLED=y -# CONFIG_HEAP_POISONING_LIGHT is not set -# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set -CONFIG_HEAP_TRACING_OFF=y -# CONFIG_HEAP_TRACING_STANDALONE is not set -# CONFIG_HEAP_TRACING_TOHOST is not set -# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set -# end of Heap memory debugging - -# -# Log output -# -# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set -# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set -# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set -CONFIG_LOG_DEFAULT_LEVEL_INFO=y -# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set -# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set -CONFIG_LOG_DEFAULT_LEVEL=3 -CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y -# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set -# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set -CONFIG_LOG_MAXIMUM_LEVEL=3 -CONFIG_LOG_COLORS=y -CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y -# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set -# end of Log output - -# -# mbedTLS -# -CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y -# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set -# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set -CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y -CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 -CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 -# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set -# CONFIG_MBEDTLS_DEBUG is not set - -# -# mbedTLS v3.x related -# -# CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set -# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set -# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set -# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set -CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y -# end of mbedTLS v3.x related - -# -# Certificate Bundle -# -CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y -CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y -# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set -# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set -# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set -CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 -# end of Certificate Bundle - -# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set -# CONFIG_MBEDTLS_CMAC_C is not set -CONFIG_MBEDTLS_HARDWARE_AES=y -CONFIG_MBEDTLS_AES_USE_INTERRUPT=y -CONFIG_MBEDTLS_HARDWARE_MPI=y -CONFIG_MBEDTLS_MPI_USE_INTERRUPT=y -CONFIG_MBEDTLS_HARDWARE_SHA=y -CONFIG_MBEDTLS_ROM_MD5=y -# CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set -# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set -CONFIG_MBEDTLS_HAVE_TIME=y -# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set -# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set -CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y -CONFIG_MBEDTLS_SHA512_C=y -CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y -# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set -# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set -# CONFIG_MBEDTLS_TLS_DISABLED is not set -CONFIG_MBEDTLS_TLS_SERVER=y -CONFIG_MBEDTLS_TLS_CLIENT=y -CONFIG_MBEDTLS_TLS_ENABLED=y - -# -# TLS Key Exchange Methods -# -# CONFIG_MBEDTLS_PSK_MODES is not set -CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y -CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y -CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y -CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y -CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y -CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y -# end of TLS Key Exchange Methods - -CONFIG_MBEDTLS_SSL_RENEGOTIATION=y -CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y -# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set -# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set -CONFIG_MBEDTLS_SSL_ALPN=y -CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y -CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y - -# -# Symmetric Ciphers -# -CONFIG_MBEDTLS_AES_C=y -# CONFIG_MBEDTLS_CAMELLIA_C is not set -# CONFIG_MBEDTLS_DES_C is not set -# CONFIG_MBEDTLS_BLOWFISH_C is not set -# CONFIG_MBEDTLS_XTEA_C is not set -CONFIG_MBEDTLS_CCM_C=y -CONFIG_MBEDTLS_GCM_C=y -# CONFIG_MBEDTLS_NIST_KW_C is not set -# end of Symmetric Ciphers - -# CONFIG_MBEDTLS_RIPEMD160_C is not set - -# -# Certificates -# -CONFIG_MBEDTLS_PEM_PARSE_C=y -CONFIG_MBEDTLS_PEM_WRITE_C=y -CONFIG_MBEDTLS_X509_CRL_PARSE_C=y -CONFIG_MBEDTLS_X509_CSR_PARSE_C=y -# end of Certificates - -CONFIG_MBEDTLS_ECP_C=y -# CONFIG_MBEDTLS_DHM_C is not set -CONFIG_MBEDTLS_ECDH_C=y -CONFIG_MBEDTLS_ECDSA_C=y -# CONFIG_MBEDTLS_ECJPAKE_C is not set -CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y -CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y -CONFIG_MBEDTLS_ECP_NIST_OPTIM=y -# CONFIG_MBEDTLS_POLY1305_C is not set -# CONFIG_MBEDTLS_CHACHA20_C is not set -# CONFIG_MBEDTLS_HKDF_C is not set -# CONFIG_MBEDTLS_THREADING_C is not set -CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI=y -# CONFIG_MBEDTLS_SECURITY_RISKS is not set -# end of mbedTLS - -# -# Newlib -# -CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y -# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set -# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set -# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set -# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set -CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y -# CONFIG_NEWLIB_NANO_FORMAT is not set -CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y -# CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set -# CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set -# CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set -# end of Newlib - -# -# PThreads -# -CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 -CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 -CONFIG_PTHREAD_STACK_MIN=768 -CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 -CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" -# end of PThreads - -# -# SPI Flash driver -# -# CONFIG_SPI_FLASH_VERIFY_WRITE is not set -# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set -CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y -CONFIG_SPI_FLASH_HAS_ROM_IMPL=y -# CONFIG_SPI_FLASH_ROM_IMPL is not set -CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y -# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set -# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set -# CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set -# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set -CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y -CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 -CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 -# CONFIG_SPI_FLASH_AUTO_SUSPEND is not set -CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 -# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set -# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set -# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set - -# -# SPI Flash behavior when brownout -# -CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y -CONFIG_SPI_FLASH_BROWNOUT_RESET=y -# end of SPI Flash behavior when brownout - -# -# Auto-detect flash chips -# -CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y -CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y -CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y -CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y -CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP=y -CONFIG_SPI_FLASH_SUPPORT_TH_CHIP=y -# end of Auto-detect flash chips - -CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y -# end of SPI Flash driver -# end of Component config - -# Deprecated options for backward compatibility -# CONFIG_NO_BLOBS is not set -# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set -# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set -# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set -CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y -# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set -# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set -CONFIG_LOG_BOOTLOADER_LEVEL=3 -# CONFIG_APP_ROLLBACK_ENABLE is not set -# CONFIG_FLASH_ENCRYPTION_ENABLED is not set -# CONFIG_FLASHMODE_QIO is not set -# CONFIG_FLASHMODE_QOUT is not set -CONFIG_FLASHMODE_DIO=y -# CONFIG_FLASHMODE_DOUT is not set -CONFIG_MONITOR_BAUD=115200 -CONFIG_OPTIMIZATION_LEVEL_DEBUG=y -CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y -# CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set -# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set -CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y -# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set -# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set -CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2 -# CONFIG_CXX_EXCEPTIONS is not set -CONFIG_STACK_CHECK_NONE=y -# CONFIG_STACK_CHECK_NORM is not set -# CONFIG_STACK_CHECK_STRONG is not set -# CONFIG_STACK_CHECK_ALL is not set -# CONFIG_WARN_WRITE_STRINGS is not set -CONFIG_ESP_SYSTEM_PD_FLASH=y -CONFIG_ESP32C3_LIGHTSLEEP_GPIO_RESET_WORKAROUND=y -CONFIG_ESP32C3_RTC_CLK_SRC_INT_RC=y -# CONFIG_ESP32C3_RTC_CLK_SRC_EXT_CRYS is not set -# CONFIG_ESP32C3_RTC_CLK_SRC_EXT_OSC is not set -# CONFIG_ESP32C3_RTC_CLK_SRC_INT_8MD256 is not set -CONFIG_ESP32C3_RTC_CLK_CAL_CYCLES=1024 -CONFIG_ESP_SYSTEM_PM_POWER_DOWN_CPU=y -# CONFIG_ESP32C3_DEFAULT_CPU_FREQ_80 is not set -CONFIG_ESP32C3_DEFAULT_CPU_FREQ_160=y -CONFIG_ESP32C3_DEFAULT_CPU_FREQ_MHZ=160 -CONFIG_ESP32C3_MEMPROT_FEATURE=y -CONFIG_ESP32C3_MEMPROT_FEATURE_LOCK=y -CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 -CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 -CONFIG_MAIN_TASK_STACK_SIZE=3584 -CONFIG_CONSOLE_UART_DEFAULT=y -# CONFIG_CONSOLE_UART_CUSTOM is not set -# CONFIG_CONSOLE_UART_NONE is not set -# CONFIG_ESP_CONSOLE_UART_NONE is not set -CONFIG_CONSOLE_UART=y -CONFIG_CONSOLE_UART_NUM=0 -CONFIG_CONSOLE_UART_BAUDRATE=115200 -# CONFIG_INT_WDT is not set -# CONFIG_TASK_WDT is not set -# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set -# CONFIG_ESP32C3_DEBUG_OCDAWARE is not set -CONFIG_BROWNOUT_DET=y -CONFIG_ESP32C3_BROWNOUT_DET=y -CONFIG_ESP32C3_BROWNOUT_DET=y -CONFIG_BROWNOUT_DET_LVL_SEL_7=y -CONFIG_ESP32C3_BROWNOUT_DET_LVL_SEL_7=y -# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set -# CONFIG_ESP32C3_BROWNOUT_DET_LVL_SEL_6 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set -# CONFIG_ESP32C3_BROWNOUT_DET_LVL_SEL_5 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set -# CONFIG_ESP32C3_BROWNOUT_DET_LVL_SEL_4 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set -# CONFIG_ESP32C3_BROWNOUT_DET_LVL_SEL_3 is not set -# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set -# CONFIG_ESP32C3_BROWNOUT_DET_LVL_SEL_2 is not set -CONFIG_BROWNOUT_DET_LVL=7 -CONFIG_ESP32C3_BROWNOUT_DET_LVL=7 -CONFIG_IPC_TASK_STACK_SIZE=1536 -CONFIG_TIMER_TASK_STACK_SIZE=3584 -CONFIG_TIMER_TASK_PRIORITY=1 -CONFIG_TIMER_TASK_STACK_DEPTH=2048 -CONFIG_TIMER_QUEUE_LENGTH=10 -# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set -# CONFIG_HAL_ASSERTION_SILIENT is not set -CONFIG_ESP32C3_TIME_SYSCALL_USE_RTC_SYSTIMER=y -# CONFIG_ESP32C3_TIME_SYSCALL_USE_RTC is not set -# CONFIG_ESP32C3_TIME_SYSCALL_USE_SYSTIMER is not set -# CONFIG_ESP32C3_TIME_SYSCALL_USE_NONE is not set -CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 -CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 -CONFIG_ESP32_PTHREAD_STACK_MIN=768 -CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 -CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" -CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y -# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set -# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set -# End of deprecated options