Repository navigation
[bsp][esp32] adapt C3/C6 to ESP-IDF v6.1 and bump RISC-V toolchain to gcc 15.2 - #11870
cms19859230182-lang wants to merge 3 commits into
Conversation
|
👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread! 为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。 🛠 操作步骤 | Steps
完成后,提交将自动更新至 如有问题欢迎联系我们,再次感谢您的贡献!💐 |
📌 Code Review Assignment🏷️ Tag: workflowReviewers: @Rbb666 @kurisaW @supperthomas Changed Files (Click to expand)
📊 Current Review Status (Last Updated: 2026-10-16 12:48 CST)
📝 Review Instructions
|
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved build compatibility and driver regressions prevent reliable operation / 尚未解决的构建兼容性及驱动回归问题影响可靠运行。
8 open findings
Forward try-critical calls to the two-argument macro · New Apply v6.1 configuration to C3 shared headers · New Migrate C6 SPI build hooks to v6.1 · New Reuse ADC unit handles across enabled channels · New Return raw ADC counts consistently · New Reject unsupported SPI word widths · New Preserve requested SPI mode · New Return the SPI transferred length · New
What changed in this PR
Adapts RT-Thread’s ESP32-C3/C6 BSPs to the companion ESP-IDF v6.1 package and GCC 15.2.
适配配套 ESP-IDF v6.1 软件包及 GCC 15.2 工具链。
Changes / 变更:
- Updates compatibility headers, linker sections, and compiler settings. / 更新兼容头文件、链接段和编译配置。
- Adds C6-local drivers and configuration, including ADC API migration. / 添加 C6 本地驱动与配置,并迁移 ADC 接口。
- Synchronizes toolchain downloads across CI, Docker, and documentation. / 同步 CI、Docker 和文档中的工具链下载配置。
| File | Description |
|---|---|
| tools/ci/toolchain.sh | Updates toolchain URL / 更新工具链地址 |
| tools/ci/toolchain_bsp.yml | Updates BSP toolchain mapping / 更新 BSP 工具链映射 |
| tools/ci/bsp_detail.py | Updates toolchain metadata / 更新工具链元数据 |
| bsp/ESP/libraries/drivers/drv_spi.c | Adds explicit FreeRTOS include / 显式包含 FreeRTOS 头文件 |
| bsp/ESP/libraries/drivers/drv_adc.c | Handles attenuation rename / 适配衰减枚举更名 |
| bsp/ESP/ESP32_C6/rtconfig.py | Updates compiler and ROM linking / 更新编译器及 ROM 链接配置 |
| bsp/ESP/ESP32_C6/README.md | Updates compiler instructions / 更新编译器说明 |
| bsp/ESP/ESP32_C6/libraries/drivers/sdkconfig.h | Adds local IDF configuration / 添加本地 IDF 配置 |
| bsp/ESP/ESP32_C6/libraries/drivers/sdkconfig_c6.h | Adds C6 configuration / 添加 C6 配置 |
| bsp/ESP/ESP32_C6/libraries/drivers/SConscript | Selects local drivers and includes / 配置本地驱动及头文件路径 |
| bsp/ESP/ESP32_C6/libraries/drivers/Kconfig | Adds local configuration options / 添加本地配置选项 |
| bsp/ESP/ESP32_C6/libraries/drivers/drv_wifi.h | Adds Wi-Fi declarations / 添加 Wi-Fi 声明 |
| bsp/ESP/ESP32_C6/libraries/drivers/drv_wifi.c | Adds local Wi-Fi implementation / 添加本地 Wi-Fi 实现 |
| bsp/ESP/ESP32_C6/libraries/drivers/drv_uart.h | Adds UART declarations / 添加 UART 声明 |
| bsp/ESP/ESP32_C6/libraries/drivers/drv_uart.c | Adds local UART implementation / 添加本地 UART 实现 |
| bsp/ESP/ESP32_C6/libraries/drivers/drv_timer.h | Adds timer declarations / 添加定时器声明 |
| bsp/ESP/ESP32_C6/libraries/drivers/drv_timer.c | Adds local timer implementation / 添加本地定时器实现 |
| bsp/ESP/ESP32_C6/libraries/drivers/drv_spi.h | Adds SPI declarations / 添加 SPI 声明 |
| bsp/ESP/ESP32_C6/libraries/drivers/drv_spi.c | Adds local SPI implementation / 添加本地 SPI 实现 |
| bsp/ESP/ESP32_C6/libraries/drivers/drv_pwm.h | Adds PWM declarations / 添加 PWM 声明 |
| bsp/ESP/ESP32_C6/libraries/drivers/drv_pwm.c | Adds local PWM implementation / 添加本地 PWM 实现 |
| bsp/ESP/ESP32_C6/libraries/drivers/drv_hw_i2c.h | Adds I2C declarations / 添加 I2C 声明 |
| bsp/ESP/ESP32_C6/libraries/drivers/drv_hw_i2c.c | Adds local I2C implementation / 添加本地 I2C 实现 |
| bsp/ESP/ESP32_C6/libraries/drivers/drv_gpio.h | Adds GPIO declarations / 添加 GPIO 声明 |
| bsp/ESP/ESP32_C6/libraries/drivers/drv_gpio.c | Adds local GPIO implementation / 添加本地 GPIO 实现 |
| bsp/ESP/ESP32_C6/libraries/drivers/drv_adc.h | Adds ADC declarations / 添加 ADC 声明 |
| bsp/ESP/ESP32_C6/libraries/drivers/drv_adc.c | Migrates C6 to IDF oneshot ADC / 迁移 C6 至 IDF 单次采样接口 |
| bsp/ESP/ESP32_C6/libraries/drivers/board.h | Adds board declarations / 添加板级声明 |
| bsp/ESP/ESP32_C6/libraries/drivers/board.c | Adds board initialization and timing / 添加板级初始化与计时实现 |
| bsp/ESP/ESP32_C6/idf_port/src/port.c | Removes obsolete include / 移除旧头文件引用 |
| bsp/ESP/ESP32_C6/idf_port/ld/sections.ld | Retains new IDF sections / 保留新增 IDF 链接段 |
| bsp/ESP/ESP32_C6/idf_port/include/freertos/portmacro.h | Adds compatibility definitions / 添加兼容定义 |
| bsp/ESP/ESP32_C6/docker/Dockerfile | Installs GCC 15.2 / 安装 GCC 15.2 |
| bsp/ESP/ESP32_C3/rtconfig.py | Updates compiler path and flags / 更新编译器路径及参数 |
| bsp/ESP/ESP32_C3/README.md | Updates toolchain documentation / 更新工具链文档 |
| bsp/ESP/ESP32_C3/README_ZH.md | Updates Chinese instructions / 更新中文说明 |
| bsp/ESP/ESP32_C3/main/main.c | Adds timer API include / 添加定时器接口头文件 |
| bsp/ESP/ESP32_C3/idf_port/src/port.c | Removes obsolete include / 移除旧头文件引用 |
| bsp/ESP/ESP32_C3/idf_port/ld/sections.ld | Adds IDF memory sections / 添加 IDF 内存段 |
| bsp/ESP/ESP32_C3/idf_port/include/freertos/portmacro.h | Adds compatibility definitions / 添加兼容定义 |
| bsp/ESP/ESP32_C3/docker/Dockerfile | Installs GCC 15.2 / 安装 GCC 15.2 |
| .github/workflows/membrowse-report.yml | Updates reporting toolchain / 更新报告工作流工具链 |
| .github/workflows/membrowse-onboard.yml | Updates onboarding toolchain / 更新接入工作流工具链 |
| .github/workflows/manual_trigger_update_all.yml | Updates toolchain installation / 更新工具链安装 |
| .github/workflows/manual_trigger_scons_except_STM32_all.yml | Updates SCons CI toolchain / 更新 SCons CI 工具链 |
| .github/workflows/manual_bsp_build.yml | Updates manual build toolchain / 更新手动构建工具链 |
| .github/workflows/bsp_buildings.yml | Updates BSP CI toolchain / 更新 BSP CI 工具链 |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| } \ | ||
| }) | ||
| #define portTRY_ENTER_CRITICAL_SAFE(mux, timeout) portTRY_ENTER_CRITICAL(mux, timeout) | ||
| #define portTRY_ENTER_CRITICAL_SAFE(mux, timeout) portENTER_CRITICAL_SAFE(mux, timeout) |
| #define CONFIG_LIBC_NEWLIB 1 | ||
| /* new in ESP-IDF v6.1 (components/esp_libc/Kconfig), default 200 */ | ||
| #define CONFIG_LIBC_ASSERT_BUFFER_SIZE 200 | ||
| /* ESP-IDF v6.1 split esp_log into V1/V2 variants (components/log/Kconfig). */ | ||
| #define CONFIG_LOG_VERSION 1 |
| if GetDepend('BSP_USING_SPI'): | ||
| src += ['drv_spi.c'] |
| adc_oneshot_unit_init_cfg_t init_config = { | ||
| .unit_id = _adc->adc_id, | ||
| }; | ||
| ESP_ERROR_CHECK(adc_oneshot_new_unit(&init_config, &_adc->handle)); |
| if (_adc->do_calibration1) | ||
| { | ||
| ESP_ERROR_CHECK(adc_cali_raw_to_voltage(_adc->cali_handle, adc_raw, value)); | ||
| } | ||
| else | ||
| { | ||
| *value = adc_raw; | ||
| } |
| esp_err_t err = spi_bus_initialize(SPI2_HOST, &buscfg, SPI_DMA_CH_AUTO); | ||
| ESP_ERROR_CHECK(err); | ||
|
|
||
| static spi_device_interface_config_t devcfg; | ||
| if(configuration->data_width == 8) | ||
| { | ||
| size_t length; /*/< Total data length, in bits*/ | ||
| size_t rxlength; /*/< Total data length received, should be not greater than ``length`` in full-duplex mode (0 defaults this to the value of ``length``)*/ | ||
| } |
| switch (configuration->mode) | ||
| { | ||
| case RT_SPI_MODE_0: /*!< CPOL = 0, CPHA = 0 */ | ||
| devcfg.mode = 0; | ||
| case RT_SPI_MODE_1: /*!< CPOL = 0, CPHA = 1 */ | ||
| devcfg.mode = 1; | ||
| case RT_SPI_MODE_2: /*!< CPOL = 1, CPHA = 0 */ | ||
| devcfg.mode = 2; | ||
| case RT_SPI_MODE_3: /*!< CPOL = 1, CPHA = 1 */ | ||
| devcfg.mode = 3; | ||
| default: | ||
| devcfg.mode = 0; | ||
| } |
| spi_device_release_bus(spi); | ||
|
|
||
| ESP_ERROR_CHECK(err); | ||
| return RT_EOK; |


背景
配合 esp-idf #18(包内 ESP-IDF 升到 v6.1 + scons 适配),主仓 BSP / CI 需要同步改动,否则 C3/C6 的 scons 构建对不上 6.1。
本 PR 不包含 FreeRTOS-Wrapper 改动(见 FreeRTOS-Wrapper #46,另行处理)。
做了什么
portmacro.hFreeRTOS V11 兼容声明、sections.ld、port.c、main.c、rtconfig.py、ADC/SPI 驱动小改)。libraries/drivers等 BSP 侧文件)。esp-15.2.0_20251204),同步改 CI workflow、docker、README、tools/ci/*。未纳入:ESP32-S3 移植(本地已能链接,另开 PR)。
测试
请审阅
请帮忙看一下 C3/C6 对 6.1 的适配面和工具链升级是否合适。上板结果稍后补。
感谢!