Target: add esp32c61 support

This commit is contained in:
liyashuai
2025-09-02 11:52:47 +08:00
parent d0faa92c93
commit f5b2c6b8d4
15 changed files with 119 additions and 18 deletions
+1 -1
View File
@@ -658,7 +658,7 @@ build_docs:
script: script:
- cd docs - cd docs
- pip install -r requirements.txt - pip install -r requirements.txt
- build-docs -bs html latex -t esp32 esp32s3 esp32c2 esp32c3 esp32c6 esp32h2 esp32p4 esp32c5 -l en - build-docs -bs html latex -t esp32 esp32s3 esp32c2 esp32c3 esp32c6 esp32h2 esp32p4 esp32c5 esp32c61 -l en
# disable link checks for now, as it is failing due to some links taking longer time to respond # disable link checks for now, as it is failing due to some links taking longer time to respond
# - build-docs -t esp32 -l en linkcheck # - build-docs -t esp32 -l en linkcheck
+1 -1
View File
@@ -31,7 +31,7 @@ section in the ESP-Matter Programming Guide.
- This SDK currently works with commit [bdc38cd772] (https://github.com/project-chip/connectedhomeip/tree/bdc38cd772) of connectedhomeip. - This SDK currently works with commit [bdc38cd772] (https://github.com/project-chip/connectedhomeip/tree/bdc38cd772) of connectedhomeip.
- For Matter projects development with this SDK, it is recommended to utilize ESP-IDF [v5.4.1](https://github.com/espressif/esp-idf/tree/v5.4.1). - For Matter projects development with this SDK, it is recommended to utilize ESP-IDF [v5.4.1](https://github.com/espressif/esp-idf/tree/v5.4.1).
- For ESP32C5, it is recommended to utilize ESP-IDF [98cd765953](https://github.com/espressif/esp-idf/commit/98cd765953dfe0e7bb1c5df8367e1b54bd966cce). - For ESP32C5 and ESP32C61, it is recommended to utilize ESP-IDF [v5.5.1](https://github.com/espressif/esp-idf/tree/v5.5.1).
## Documentation ## Documentation
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.5) cmake_minimum_required(VERSION 3.5)
if (NOT ("${IDF_TARGET}" STREQUAL "esp32c5" )) if (NOT ("${IDF_TARGET}" STREQUAL "esp32c5" ))
message(FATAL_ERROR "please set esp32c5 as the IDF_TARGET using 'idf.py --preview set-target esp32c5'") message(FATAL_ERROR "please set esp32c5 as the IDF_TARGET using 'idf.py set-target esp32c5'")
endif() endif()
SET(device_type esp32c5_devkit_c) SET(device_type esp32c5_devkit_c)
@@ -0,0 +1,42 @@
// Copyright 2025 Espressif Systems (Shanghai) CO LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License
#include <esp_log.h>
#include <iot_button.h>
#include <button_gpio.h>
#include <driver/gpio.h>
#include <led_driver.h>
#define LED_GPIO_PIN GPIO_NUM_8
#define LED_CHANNEL 0 /* RMT_CHANNEL_0 */
#define BUTTON_GPIO_PIN GPIO_NUM_9
static const char *TAG = "device";
led_driver_config_t led_driver_get_config()
{
led_driver_config_t config = {
.gpio = LED_GPIO_PIN,
.channel = LED_CHANNEL,
};
return config;
}
button_gpio_config_t button_driver_get_config()
{
button_gpio_config_t config = {
.gpio_num = BUTTON_GPIO_PIN,
.active_level = 0,
};
return config;
}
@@ -0,0 +1,11 @@
cmake_minimum_required(VERSION 3.5)
if (NOT ("${IDF_TARGET}" STREQUAL "esp32c61" ))
message(FATAL_ERROR "please set esp32c61 as the IDF_TARGET using 'idf.py set-target esp32c61'")
endif()
SET(device_type esp32c61_devkit_c)
SET(led_type gpio)
SET(button_type iot)
SET(extra_components_dirs_append "$ENV{ESP_MATTER_DEVICE_PATH}/../../led_driver"
"$ENV{ESP_MATTER_DEVICE_PATH}/../../button_driver/iot_button")
+2 -2
View File
@@ -3,14 +3,13 @@ var DOCUMENTATION_VERSIONS = {
supported_targets: [ "esp32" ] supported_targets: [ "esp32" ]
}, },
VERSIONS: [ VERSIONS: [
{ name: "latest", has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c5", "esp32c6", "esp32s3", "esp32h2", "esp32p4" ] }, { name: "latest", has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c5", "esp32c6", "esp32c61", "esp32s3", "esp32h2", "esp32p4" ] },
{ name: "release-v1.4.2", old: false, end_of_life: false, has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c5", "esp32c6", "esp32s3", "esp32h2", "esp32p4" ]}, { name: "release-v1.4.2", old: false, end_of_life: false, has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c5", "esp32c6", "esp32s3", "esp32h2", "esp32p4" ]},
{ name: "release-v1.4", old: false, end_of_life: false, has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c6", "esp32s3", "esp32h2", "esp32p4" ]}, { name: "release-v1.4", old: false, end_of_life: false, has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c6", "esp32s3", "esp32h2", "esp32p4" ]},
{ name: "release-v1.3", old: false, end_of_life: false, has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c6", "esp32h2", "esp32s3" ]}, { name: "release-v1.3", old: false, end_of_life: false, has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c6", "esp32h2", "esp32s3" ]},
{ name: "release-v1.2", old: false, end_of_life: false, has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c6", "esp32h2", "esp32s3" ]}, { name: "release-v1.2", old: false, end_of_life: false, has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c6", "esp32h2", "esp32s3" ]},
{ name: "release-v1.1", old: true, end_of_life: true, has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c6", "esp32h2", "esp32s3" ]}, { name: "release-v1.1", old: true, end_of_life: true, has_targets: true, supported_targets: [ "esp32", "esp32c2", "esp32c3", "esp32c6", "esp32h2", "esp32s3" ]},
{ name: "release-v1.0", old: true, end_of_life: true, has_targets: true, supported_targets: [ "esp32", "esp32c3", "esp32h2", "esp32s3" ]}, { name: "release-v1.0", old: true, end_of_life: true, has_targets: true, supported_targets: [ "esp32", "esp32c3", "esp32h2", "esp32s3" ]},
], ],
IDF_TARGETS: [ IDF_TARGETS: [
{ text: "ESP32", value: "esp32" }, { text: "ESP32", value: "esp32" },
@@ -19,6 +18,7 @@ var DOCUMENTATION_VERSIONS = {
{ text: "ESP32-C3", value: "esp32c3" }, { text: "ESP32-C3", value: "esp32c3" },
{ text: "ESP32-C5", value: "esp32c5" }, { text: "ESP32-C5", value: "esp32c5" },
{ text: "ESP32-C6", value: "esp32c6" }, { text: "ESP32-C6", value: "esp32c6" },
{ text: "ESP32-C61", value: "esp32c61" },
{ text: "ESP32-H2", value: "esp32h2" }, { text: "ESP32-H2", value: "esp32h2" },
{ text: "ESP32-P4", value: "esp32p4" }, { text: "ESP32-P4", value: "esp32p4" },
] ]
+1 -1
View File
@@ -2,7 +2,7 @@ from esp_docs.conf_docs import * # noqa: F403,F401
import subprocess import subprocess
languages = ['en'] languages = ['en']
idf_targets = ['esp32', 'esp32s3', 'esp32c2', 'esp32c3', 'esp32c5', 'esp32c6', 'esp32h2', 'esp32p4'] idf_targets = ['esp32', 'esp32s3', 'esp32c2', 'esp32c3', 'esp32c5', 'esp32c6', 'esp32c61', 'esp32h2', 'esp32p4']
extensions += ['sphinx_copybutton', extensions += ['sphinx_copybutton',
# Needed as a trigger for running doxygen # Needed as a trigger for running doxygen
+1 -1
View File
@@ -99,7 +99,7 @@ The option ``-n`` (count) is the number of generated binaries. In the above comm
The option ``--paa-trust-store-path`` should be added when using chip-tool to pair the device for manual tests. The option ``--paa-trust-store-path`` should be added when using chip-tool to pair the device for manual tests.
.. only:: esp32 or esp32s3 or esp32c3 or esp32c2 or esp32c6 or esp32c5 .. only:: esp32 or esp32s3 or esp32c3 or esp32c2 or esp32c6 or esp32c5 or esp32c61
:: ::
+16 -10
View File
@@ -52,16 +52,16 @@ The Prerequisites for ESP-IDF:
- Please get the `Prerequisites for ESP-IDF`_. For beginners, please check `step by step installation guide`_ for esp-idf. - Please get the `Prerequisites for ESP-IDF`_. For beginners, please check `step by step installation guide`_ for esp-idf.
.. only:: esp32c5 .. only:: esp32c5 or esp32c61
- For ``ESP32C5``, the IDF version should be `98cd765953 <https://github.com/espressif/esp-idf/commit/98cd765953dfe0e7bb1c5df8367e1b54bd966cce>`__ or newer. - For ``ESP32C5`` and ``ESP32C61``, the IDF version should be `v5.5.1 <https://github.com/espressif/esp-idf/tree/v5.5.1>`__ or newer.
.. note:: .. note::
``git clone`` command accepts the optional argument ``--jobs N``, which can significantly speed up the ``git clone`` command accepts the optional argument ``--jobs N``, which can significantly speed up the
process by parallelizing submodule cloning. Consider using this option when cloning repositories. process by parallelizing submodule cloning. Consider using this option when cloning repositories.
.. only:: not esp32c5 .. only:: not esp32c5 and not esp32c61
Cloning esp-idf: Cloning esp-idf:
@@ -72,14 +72,14 @@ The Prerequisites for ESP-IDF:
./install.sh ./install.sh
cd .. cd ..
.. only:: esp32c5 .. only:: esp32c5 or esp32c61
Cloning esp-idf: Cloning esp-idf:
:: ::
git clone --recursive https://github.com/espressif/esp-idf.git git clone --recursive https://github.com/espressif/esp-idf.git
cd esp-idf; git checkout 98cd765953; git submodule update --init --recursive; cd esp-idf; git checkout v5.5.1; git submodule update --init --recursive;
./install.sh ./install.sh
cd .. cd ..
@@ -283,7 +283,13 @@ Choose IDF target.
:: ::
idf.py --preview set-target esp32c5 idf.py set-target esp32c5
.. only:: esp32c61
::
idf.py set-target esp32c61
.. only:: esp32p4 .. only:: esp32p4
@@ -387,7 +393,7 @@ Use ``chip-tool`` in interactive mode to commission the device:
chip-tool interactive start chip-tool interactive start
.. only:: esp32 or esp32s3 or esp32c3 or esp32c2 or esp32c6 or esp32p4 or esp32c5 .. only:: esp32 or esp32s3 or esp32c3 or esp32c2 or esp32c6 or esp32p4 or esp32c5 or esp32c61
:: ::
@@ -414,7 +420,7 @@ Above method commissions the device using setup passcode and discriminator. Devi
To Commission the device using manual pairing code 34970112332 To Commission the device using manual pairing code 34970112332
.. only:: esp32 or esp32s3 or esp32c3 or esp32c2 or esp32c6 or esp32p4 or esp32c5 .. only:: esp32 or esp32s3 or esp32c3 or esp32c2 or esp32c6 or esp32p4 or esp32c5 or esp32c61
:: ::
@@ -441,7 +447,7 @@ Above default manual pairing code contains following values:
To commission the device using QR code MT:Y.K9042C00KA0648G00 To commission the device using QR code MT:Y.K9042C00KA0648G00
.. only:: esp32 or esp32s3 or esp32c3 or esp32c2 or esp32c6 or esp32p4 or esp32c5 .. only:: esp32 or esp32s3 or esp32c3 or esp32c2 or esp32c6 or esp32p4 or esp32c5 or esp32c61
:: ::
@@ -912,7 +918,7 @@ For example: Thermostat cluster has O.a+ conformance for Heating and Cooling fea
thermostat_config.features.heating.occupied_heating_setpoint = 2200; thermostat_config.features.heating.occupied_heating_setpoint = 2200;
thermostat_config.feature_flags = thermostat::feature::heating::get_id(); thermostat_config.feature_flags = thermostat::feature::heating::get_id();
cluster::thermostat::create(endpoint, &(config->thermostat_config), CLUSTER_FLAG_SERVER); cluster::thermostat::create(endpoint, &(config->thermostat_config), CLUSTER_FLAG_SERVER);
Optional features which are applicable to a cluster can also be added. Optional features which are applicable to a cluster can also be added.
- feature: taglist: Descriptor cluster: - feature: taglist: Descriptor cluster:
+1 -1
View File
@@ -59,7 +59,7 @@ DAC private needs to be protected from remote as well as physical attacks in the
Recommended ways for DAC private key protection: Recommended ways for DAC private key protection:
.. only:: esp32h2 or esp32c5 .. only:: esp32h2 or esp32c5 or esp32c61
- {IDF_TARGET_NAME} supports ECDSA hardware peripheral with the ECDSA key programmed in the eFuse. This key is software read protected (in default mode). This peripheral can help to protect the identity of the DAC private key on the device. - {IDF_TARGET_NAME} supports ECDSA hardware peripheral with the ECDSA key programmed in the eFuse. This key is software read protected (in default mode). This peripheral can help to protect the identity of the DAC private key on the device.
+2
View File
@@ -19,6 +19,8 @@ if(NOT DEFINED ENV{ESP_MATTER_DEVICE_PATH})
set(ENV{ESP_MATTER_DEVICE_PATH} $ENV{ESP_MATTER_PATH}/device_hal/device/esp32s3_devkit_c) set(ENV{ESP_MATTER_DEVICE_PATH} $ENV{ESP_MATTER_PATH}/device_hal/device/esp32s3_devkit_c)
elseif("${IDF_TARGET}" STREQUAL "esp32c6") elseif("${IDF_TARGET}" STREQUAL "esp32c6")
set(ENV{ESP_MATTER_DEVICE_PATH} $ENV{ESP_MATTER_PATH}/device_hal/device/esp32c6_devkit_c) set(ENV{ESP_MATTER_DEVICE_PATH} $ENV{ESP_MATTER_PATH}/device_hal/device/esp32c6_devkit_c)
elseif("${IDF_TARGET}" STREQUAL "esp32c61")
set(ENV{ESP_MATTER_DEVICE_PATH} $ENV{ESP_MATTER_PATH}/device_hal/device/esp32c61_devkit_c)
elseif("${IDF_TARGET}" STREQUAL "esp32c5") elseif("${IDF_TARGET}" STREQUAL "esp32c5")
set(ENV{ESP_MATTER_DEVICE_PATH} $ENV{ESP_MATTER_PATH}/device_hal/device/esp32c5_devkit_c) set(ENV{ESP_MATTER_DEVICE_PATH} $ENV{ESP_MATTER_PATH}/device_hal/device/esp32c5_devkit_c)
elseif("${IDF_TARGET}" STREQUAL "esp32p4") elseif("${IDF_TARGET}" STREQUAL "esp32p4")
@@ -0,0 +1,10 @@
CONFIG_IDF_TARGET="esp32c61"
# ESP Ringbuf
CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH=y
CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH=y
# FreeRTOS
CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=y
CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y
CONFIG_ESP_SECURE_CERT_DS_PERIPHERAL=n
@@ -0,0 +1,10 @@
CONFIG_IDF_TARGET="esp32c61"
# ESP Ringbuf
CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH=y
CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH=y
# FreeRTOS
CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=y
CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y
CONFIG_ESP_SECURE_CERT_DS_PERIPHERAL=n
@@ -0,0 +1,10 @@
CONFIG_IDF_TARGET="esp32c61"
# ESP Ringbuf
CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH=y
CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH=y
# FreeRTOS
CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=y
CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y
CONFIG_ESP_SECURE_CERT_DS_PERIPHERAL=n
@@ -0,0 +1,10 @@
CONFIG_IDF_TARGET="esp32c61"
# ESP Ringbuf
CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH=y
CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH=y
# FreeRTOS
CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=y
CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y
CONFIG_ESP_SECURE_CERT_DS_PERIPHERAL=n