Skip to content

Commit 42f216f

Browse files
authored
Initial support for ESP32-C6 (#8337)
1 parent 4817553 commit 42f216f

File tree

75 files changed

+494
-91
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+494
-91
lines changed

Diff for: .github/scripts/on-push.sh

+2
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ if [ "$BUILD_PIO" -eq 0 ]; then
6868
FQBN_ESP32S2="espressif:esp32:esp32s2:PSRAM=enabled,PartitionScheme=huge_app"
6969
FQBN_ESP32S3="espressif:esp32:esp32s3:PSRAM=opi,USBMode=default,PartitionScheme=huge_app"
7070
FQBN_ESP32C3="espressif:esp32:esp32c3:PartitionScheme=huge_app"
71+
FQBN_ESP32C6="espressif:esp32:esp32c6:PartitionScheme=huge_app"
7172

7273
SKETCHES_ESP32="\
7374
$ARDUINO_ESP32_PATH/libraries/WiFiClientSecure/examples/WiFiClientSecure/WiFiClientSecure.ino\
@@ -85,6 +86,7 @@ if [ "$BUILD_PIO" -eq 0 ]; then
8586
build "esp32s3" $FQBN_ESP32S3 $CHUNK_INDEX $CHUNKS_CNT $SKETCHES_ESP32
8687
build "esp32s2" $FQBN_ESP32S2 $CHUNK_INDEX $CHUNKS_CNT $SKETCHES_ESP32XX
8788
build "esp32c3" $FQBN_ESP32C3 $CHUNK_INDEX $CHUNKS_CNT $SKETCHES_ESP32XX
89+
build "esp32c6" $FQBN_ESP32C6 $CHUNK_INDEX $CHUNKS_CNT $SKETCHES_ESP32XX
8890
build "esp32" $FQBN_ESP32 $CHUNK_INDEX $CHUNKS_CNT $SKETCHES_ESP32
8991
else
9092
source ${SCRIPTS_DIR}/install-platformio-esp32.sh

Diff for: .github/scripts/sketch_utils.sh

+4
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ function build_sketch(){ # build_sketch <ide_path> <user_path> <path-to-ino> [ex
7474
esp32s2_opts="PSRAM=enabled,PartitionScheme=huge_app"
7575
esp32s3_opts="PSRAM=opi,USBMode=default,PartitionScheme=huge_app"
7676
esp32c3_opts="PartitionScheme=huge_app"
77+
esp32c6_opts="PartitionScheme=huge_app"
7778

7879
# Select the common part of the FQBN based on the target. The rest will be
7980
# appended depending on the passed options.
@@ -91,6 +92,9 @@ function build_sketch(){ # build_sketch <ide_path> <user_path> <path-to-ino> [ex
9192
"esp32s3")
9293
fqbn="espressif:esp32:esp32s3:${options:-$esp32s3_opts}"
9394
;;
95+
"esp32c6")
96+
fqbn="espressif:esp32:esp32c6:${options:-$esp32c6_opts}"
97+
;;
9498
esac
9599

96100
# Make it look like a JSON array.

Diff for: .github/workflows/hil.yml

+3-2
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ jobs:
4747
runs-on: ubuntu-latest
4848
strategy:
4949
matrix:
50-
chip: ['esp32', 'esp32s2', 'esp32s3', 'esp32c3']
50+
chip: ['esp32', 'esp32s2', 'esp32s3', 'esp32c3', 'esp32c6']
5151
chunks: ${{fromJson(needs.gen_chunks.outputs.chunks)}}
5252
steps:
5353
- name: Checkout Repository
@@ -71,11 +71,12 @@ jobs:
7171
- ESP32-S2
7272
- ESP32-S3
7373
- ESP32-C3
74+
- ESP32-C6
7475

7576
strategy:
7677
fail-fast: false
7778
matrix:
78-
chip: ['esp32', 'esp32s2', 'esp32s3', 'esp32c3']
79+
chip: ['esp32', 'esp32s2', 'esp32s3', 'esp32c3', 'esp32c6']
7980
chunks: ${{fromJson(needs.gen_chunks.outputs.chunks)}}
8081
container:
8182
image: python:3.10.1-bullseye

Diff for: .github/workflows/lib.yml

+3
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ jobs:
3636
- esp32s2
3737
- esp32c3
3838
- esp32s3
39+
- esp32c6
3940

4041
include:
4142
- target: esp32
@@ -46,6 +47,8 @@ jobs:
4647
fqbn: espressif:esp32:esp32c3
4748
- target: esp32s3
4849
fqbn: espressif:esp32:esp32s3
50+
- target: esp32c6
51+
fqbn: espressif:esp32:esp32c6
4952

5053

5154
steps:

Diff for: .github/workflows/push.yml

+3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ jobs:
2626
name: Arduino ${{ matrix.chunk }} on ubuntu-latest
2727
runs-on: ubuntu-latest
2828
strategy:
29+
fail-fast: false
2930
matrix:
3031
chunk: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
3132

@@ -52,6 +53,7 @@ jobs:
5253
name: Arduino on ${{ matrix.os }}
5354
runs-on: ${{ matrix.os }}
5455
strategy:
56+
fail-fast: false
5557
matrix:
5658
os: [windows-latest, macOS-latest]
5759

@@ -68,6 +70,7 @@ jobs:
6870
name: PlatformIO on ${{ matrix.os }}
6971
runs-on: ${{ matrix.os }}
7072
strategy:
73+
fail-fast: false
7174
matrix:
7275
os: [ubuntu-latest, windows-latest, macOS-latest]
7376

Diff for: boards.txt

+162
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,168 @@ menu.LORAWAN_PREAMBLE_LENGTH=LoRaWan Preamble Length
2929
### DO NOT PUT BOARDS ABOVE THE OFFICIAL ESPRESSIF BOARDS! ###
3030
##############################################################
3131

32+
esp32c6.name=ESP32C6 Dev Module
33+
esp32c6.vid.0=0x303a
34+
esp32c6.pid.0=0x1001
35+
36+
esp32c6.bootloader.tool=esptool_py
37+
esp32c6.bootloader.tool.default=esptool_py
38+
39+
esp32c6.upload.tool=esptool_py
40+
esp32c6.upload.tool.default=esptool_py
41+
esp32c6.upload.tool.network=esp_ota
42+
43+
esp32c6.upload.maximum_size=1310720
44+
esp32c6.upload.maximum_data_size=327680
45+
esp32c6.upload.flags=
46+
esp32c6.upload.extra_flags=
47+
esp32c6.upload.use_1200bps_touch=false
48+
esp32c6.upload.wait_for_upload_port=false
49+
50+
esp32c6.serial.disableDTR=false
51+
esp32c6.serial.disableRTS=false
52+
53+
esp32c6.build.tarch=riscv32
54+
esp32c6.build.target=esp
55+
esp32c6.build.mcu=esp32c6
56+
esp32c6.build.core=esp32
57+
esp32c6.build.variant=esp32c6
58+
esp32c6.build.board=ESP32C6_DEV
59+
esp32c6.build.bootloader_addr=0x0
60+
61+
esp32c6.build.cdc_on_boot=0
62+
esp32c6.build.f_cpu=160000000L
63+
esp32c6.build.flash_size=4MB
64+
esp32c6.build.flash_freq=80m
65+
esp32c6.build.flash_mode=qio
66+
esp32c6.build.boot=qio
67+
esp32c6.build.partitions=default
68+
esp32c6.build.defines=
69+
70+
## IDE 2.0 Seems to not update the value
71+
esp32c6.menu.JTAGAdapter.default=Disabled
72+
esp32c6.menu.JTAGAdapter.default.build.copy_jtag_files=0
73+
esp32c6.menu.JTAGAdapter.builtin=Integrated USB JTAG
74+
esp32c6.menu.JTAGAdapter.builtin.build.openocdscript=esp32c6-builtin.cfg
75+
esp32c6.menu.JTAGAdapter.builtin.build.copy_jtag_files=1
76+
esp32c6.menu.JTAGAdapter.external=FTDI Adapter
77+
esp32c6.menu.JTAGAdapter.external.build.openocdscript=esp32c6-ftdi.cfg
78+
esp32c6.menu.JTAGAdapter.external.build.copy_jtag_files=1
79+
esp32c6.menu.JTAGAdapter.bridge=ESP USB Bridge
80+
esp32c6.menu.JTAGAdapter.bridge.build.openocdscript=esp32c6-bridge.cfg
81+
esp32c6.menu.JTAGAdapter.bridge.build.copy_jtag_files=1
82+
83+
esp32c6.menu.CDCOnBoot.default=Disabled
84+
esp32c6.menu.CDCOnBoot.default.build.cdc_on_boot=0
85+
esp32c6.menu.CDCOnBoot.cdc=Enabled
86+
esp32c6.menu.CDCOnBoot.cdc.build.cdc_on_boot=1
87+
88+
esp32c6.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
89+
esp32c6.menu.PartitionScheme.default.build.partitions=default
90+
esp32c6.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
91+
esp32c6.menu.PartitionScheme.defaultffat.build.partitions=default_ffat
92+
esp32c6.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS)
93+
esp32c6.menu.PartitionScheme.default_8MB.build.partitions=default_8MB
94+
esp32c6.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336
95+
esp32c6.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS)
96+
esp32c6.menu.PartitionScheme.minimal.build.partitions=minimal
97+
esp32c6.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)
98+
esp32c6.menu.PartitionScheme.no_ota.build.partitions=no_ota
99+
esp32c6.menu.PartitionScheme.no_ota.upload.maximum_size=2097152
100+
esp32c6.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS)
101+
esp32c6.menu.PartitionScheme.noota_3g.build.partitions=noota_3g
102+
esp32c6.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576
103+
esp32c6.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS)
104+
esp32c6.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat
105+
esp32c6.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152
106+
esp32c6.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS)
107+
esp32c6.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat
108+
esp32c6.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576
109+
esp32c6.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS)
110+
esp32c6.menu.PartitionScheme.huge_app.build.partitions=huge_app
111+
esp32c6.menu.PartitionScheme.huge_app.upload.maximum_size=3145728
112+
esp32c6.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
113+
esp32c6.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
114+
esp32c6.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
115+
esp32c6.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS)
116+
esp32c6.menu.PartitionScheme.fatflash.build.partitions=ffat
117+
esp32c6.menu.PartitionScheme.fatflash.upload.maximum_size=2097152
118+
esp32c6.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS)
119+
esp32c6.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB
120+
esp32c6.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
121+
esp32c6.menu.PartitionScheme.rainmaker=RainMaker
122+
esp32c6.menu.PartitionScheme.rainmaker.build.partitions=rainmaker
123+
esp32c6.menu.PartitionScheme.rainmaker.upload.maximum_size=3145728
124+
125+
esp32c6.menu.CPUFreq.160=160MHz (WiFi)
126+
esp32c6.menu.CPUFreq.160.build.f_cpu=160000000L
127+
esp32c6.menu.CPUFreq.80=80MHz (WiFi)
128+
esp32c6.menu.CPUFreq.80.build.f_cpu=80000000L
129+
esp32c6.menu.CPUFreq.40=40MHz
130+
esp32c6.menu.CPUFreq.40.build.f_cpu=40000000L
131+
esp32c6.menu.CPUFreq.20=20MHz
132+
esp32c6.menu.CPUFreq.20.build.f_cpu=20000000L
133+
esp32c6.menu.CPUFreq.10=10MHz
134+
esp32c6.menu.CPUFreq.10.build.f_cpu=10000000L
135+
136+
esp32c6.menu.FlashMode.qio=QIO
137+
esp32c6.menu.FlashMode.qio.build.flash_mode=dio
138+
esp32c6.menu.FlashMode.qio.build.boot=qio
139+
esp32c6.menu.FlashMode.dio=DIO
140+
esp32c6.menu.FlashMode.dio.build.flash_mode=dio
141+
esp32c6.menu.FlashMode.dio.build.boot=dio
142+
143+
esp32c6.menu.FlashFreq.80=80MHz
144+
esp32c6.menu.FlashFreq.80.build.flash_freq=80m
145+
esp32c6.menu.FlashFreq.40=40MHz
146+
esp32c6.menu.FlashFreq.40.build.flash_freq=40m
147+
148+
esp32c6.menu.FlashSize.4M=4MB (32Mb)
149+
esp32c6.menu.FlashSize.4M.build.flash_size=4MB
150+
esp32c6.menu.FlashSize.8M=8MB (64Mb)
151+
esp32c6.menu.FlashSize.8M.build.flash_size=8MB
152+
esp32c6.menu.FlashSize.8M.build.partitions=default_8MB
153+
esp32c6.menu.FlashSize.2M=2MB (16Mb)
154+
esp32c6.menu.FlashSize.2M.build.flash_size=2MB
155+
esp32c6.menu.FlashSize.2M.build.partitions=minimal
156+
esp32c6.menu.FlashSize.16M=16MB (128Mb)
157+
esp32c6.menu.FlashSize.16M.build.flash_size=16MB
158+
159+
esp32c6.menu.UploadSpeed.921600=921600
160+
esp32c6.menu.UploadSpeed.921600.upload.speed=921600
161+
esp32c6.menu.UploadSpeed.115200=115200
162+
esp32c6.menu.UploadSpeed.115200.upload.speed=115200
163+
esp32c6.menu.UploadSpeed.256000.windows=256000
164+
esp32c6.menu.UploadSpeed.256000.upload.speed=256000
165+
esp32c6.menu.UploadSpeed.230400.windows.upload.speed=256000
166+
esp32c6.menu.UploadSpeed.230400=230400
167+
esp32c6.menu.UploadSpeed.230400.upload.speed=230400
168+
esp32c6.menu.UploadSpeed.460800.linux=460800
169+
esp32c6.menu.UploadSpeed.460800.macosx=460800
170+
esp32c6.menu.UploadSpeed.460800.upload.speed=460800
171+
esp32c6.menu.UploadSpeed.512000.windows=512000
172+
esp32c6.menu.UploadSpeed.512000.upload.speed=512000
173+
174+
esp32c6.menu.DebugLevel.none=None
175+
esp32c6.menu.DebugLevel.none.build.code_debug=0
176+
esp32c6.menu.DebugLevel.error=Error
177+
esp32c6.menu.DebugLevel.error.build.code_debug=1
178+
esp32c6.menu.DebugLevel.warn=Warn
179+
esp32c6.menu.DebugLevel.warn.build.code_debug=2
180+
esp32c6.menu.DebugLevel.info=Info
181+
esp32c6.menu.DebugLevel.info.build.code_debug=3
182+
esp32c6.menu.DebugLevel.debug=Debug
183+
esp32c6.menu.DebugLevel.debug.build.code_debug=4
184+
esp32c6.menu.DebugLevel.verbose=Verbose
185+
esp32c6.menu.DebugLevel.verbose.build.code_debug=5
186+
187+
esp32c6.menu.EraseFlash.none=Disabled
188+
esp32c6.menu.EraseFlash.none.upload.erase_cmd=
189+
esp32c6.menu.EraseFlash.all=Enabled
190+
esp32c6.menu.EraseFlash.all.upload.erase_cmd=-e
191+
192+
##############################################################
193+
32194
esp32s3.name=ESP32S3 Dev Module
33195
esp32s3.vid.0=0x303a
34196
esp32s3.pid.0=0x1001

Diff for: cores/esp32/Esp.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ extern "C" {
5151
#elif CONFIG_IDF_TARGET_ESP32C3
5252
#include "esp32c3/rom/spi_flash.h"
5353
#define ESP_FLASH_IMAGE_BASE 0x0000 // Esp32c3 is located at 0x0000
54+
#elif CONFIG_IDF_TARGET_ESP32C6
55+
#include "esp32c6/rom/spi_flash.h"
56+
#define ESP_FLASH_IMAGE_BASE 0x0000 // Esp32c6 is located at 0x0000
5457
#else
5558
#error Target CONFIG_IDF_TARGET is not supported
5659
#endif

Diff for: cores/esp32/HWCDC.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414
#include "USB.h"
15-
#if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32S3
15+
#if SOC_USB_SERIAL_JTAG_SUPPORTED
1616

1717
#include "esp32-hal.h"
1818
#include "esp32-hal-periman.h"
@@ -435,4 +435,4 @@ HWCDC USBSerial;
435435
#endif
436436
#endif
437437

438-
#endif /* CONFIG_TINYUSB_CDC_ENABLED */
438+
#endif /* SOC_USB_SERIAL_JTAG_SUPPORTED */

Diff for: cores/esp32/HWCDC.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
#pragma once
1515

1616
#include "sdkconfig.h"
17-
#if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32S3
17+
#include "soc/soc_caps.h"
18+
19+
#if SOC_USB_SERIAL_JTAG_SUPPORTED
1820

1921
#include <inttypes.h>
2022
#include "esp_event.h"

Diff for: cores/esp32/HardwareSerial.cpp

+8
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
#define SOC_RX0 44
2929
#elif CONFIG_IDF_TARGET_ESP32C3
3030
#define SOC_RX0 20
31+
#elif CONFIG_IDF_TARGET_ESP32C6
32+
#define SOC_RX0 17
3133
#endif
3234
#endif
3335

@@ -38,6 +40,8 @@
3840
#define SOC_TX0 43
3941
#elif CONFIG_IDF_TARGET_ESP32C3
4042
#define SOC_TX0 21
43+
#elif CONFIG_IDF_TARGET_ESP32C6
44+
#define SOC_TX0 16
4145
#endif
4246
#endif
4347

@@ -55,6 +59,8 @@ void serialEvent(void) {}
5559
#define RX1 18
5660
#elif CONFIG_IDF_TARGET_ESP32S3
5761
#define RX1 15
62+
#elif CONFIG_IDF_TARGET_ESP32C6
63+
#define RX1 5
5864
#endif
5965
#endif
6066

@@ -67,6 +73,8 @@ void serialEvent(void) {}
6773
#define TX1 19
6874
#elif CONFIG_IDF_TARGET_ESP32S3
6975
#define TX1 16
76+
#elif CONFIG_IDF_TARGET_ESP32C6
77+
#define TX1 4
7078
#endif
7179
#endif
7280

Diff for: cores/esp32/USB.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
// limitations under the License.
1414
#pragma once
1515

16-
#include "sdkconfig.h"
16+
#include "soc/soc_caps.h"
1717

18-
#if CONFIG_TINYUSB_ENABLED
18+
#if SOC_USB_OTG_SUPPORTED
1919

2020
#include "esp_event.h"
2121
#include "USBCDC.h"
@@ -116,4 +116,4 @@ class ESPUSB {
116116

117117
extern ESPUSB USB;
118118

119-
#endif /* CONFIG_TINYUSB_ENABLED */
119+
#endif /* SOC_USB_OTG_SUPPORTED */

Diff for: cores/esp32/esp32-hal-adc.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ esp_err_t __analogChannelConfig(adc_bitwidth_t width, adc_attenuation_t atten, i
9191
log_e("adc_cali_create_scheme_curve_fitting failed with error: %d", err);
9292
return err;
9393
}
94-
#else //ADC_CALI_SCHEME_LINE_FITTING_SUPPORTED
94+
#elif !defined(CONFIG_IDF_TARGET_ESP32C6) //ADC_CALI_SCHEME_LINE_FITTING_SUPPORTED
9595
log_d("Deleting ADC_UNIT_%d line cali handle",adc_unit);
9696
err = adc_cali_delete_scheme_line_fitting(adc_cali_handle[adc_unit]);
9797
if(err != ESP_OK){
@@ -278,7 +278,7 @@ uint32_t __analogReadMilliVolts(uint8_t pin){
278278
.bitwidth = __analogWidth,
279279
};
280280
err = adc_cali_create_scheme_curve_fitting(&cali_config, &adc_cali_handle[adc_unit]);
281-
#else //ADC_CALI_SCHEME_LINE_FITTING_SUPPORTED
281+
#elif !defined(CONFIG_IDF_TARGET_ESP32C6) //ADC_CALI_SCHEME_LINE_FITTING_SUPPORTED
282282
adc_cali_line_fitting_config_t cali_config = {
283283
.unit_id = adc_unit,
284284
.bitwidth = __analogWidth,

0 commit comments

Comments
 (0)