Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions app/boards/esp32c6_devkitc_esp32c6_hpcore.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Target Platform & SOF Core
CONFIG_PLATFORM_ESP32C6=y
CONFIG_STATIC_PIPELINE=y
CONFIG_SOF_FULL_ZEPHYR_APPLICATION=y
CONFIG_ZEPHYR_NATIVE_DRIVERS=y
CONFIG_BUILD_OUTPUT_BIN=y

# Zephyr DAI Drivers for ESP32
CONFIG_DAI=y
CONFIG_DAI_ESPRESSIF_I2S=y
CONFIG_PINCTRL=y
CONFIG_DMA=y
CONFIG_DMA_ESP32_MAX_DESCRIPTOR_NUM=32

# Audio Processing Modules (Fixed-Point S16_LE Only - No Float / SIMD)
CONFIG_FORMAT_S16LE=y
CONFIG_COMP_VOLUME=y
CONFIG_COMP_USB_AUDIO=y
CONFIG_COMP_BT_AUDIO=n
CONFIG_FILTER_RISCV_SIMD=n
CONFIG_DRC_RISCV_SIMD=n
CONFIG_EQ_IIR_RISCV_SIMD=n
CONFIG_VOLUME_RISCV_SIMD=n
CONFIG_COMP_DRC=n
CONFIG_COMP_IIR=n
CONFIG_COMP_FIR=n
CONFIG_COMP_CROSSOVER=n
CONFIG_COMP_DCBLOCK=n
CONFIG_COMP_MULTIBAND_DRC=n
CONFIG_COMP_TDFB=n

# No Native USB UAC2 (ESP32-C6 uses USB-Serial/JTAG CDC-ACM)
CONFIG_USB_DEVICE_STACK_NEXT=n
CONFIG_USBD_AUDIO2_CLASS=n

# System Resources & Memory (SRAM Budget: 512 KB)
CONFIG_MAIN_STACK_SIZE=3072
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=3072
CONFIG_ISR_STACK_SIZE=2048
CONFIG_HW_STACK_PROTECTION=n
CONFIG_HEAP_MEM_POOL_SIZE=8192
CONFIG_TICKLESS_KERNEL=n
CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000

# Logging & USB-Serial Console
CONFIG_LOG=y
CONFIG_LOG_DEFAULT_LEVEL=3
CONFIG_LOG_MAX_LEVEL=4
CONFIG_SOF_LOG_LEVEL_INF=y
CONFIG_DAI_LOG_LEVEL_INF=y
CONFIG_LOG_MODE_DEFERRED=y
CONFIG_LOG_BUFFER_SIZE=2048
CONFIG_LOG_MODE_OVERFLOW=y
CONFIG_PRINTK=y
CONFIG_LOG_PRINTK=n
CONFIG_EARLY_CONSOLE=y

# Interactive Shell over USB-Serial/JTAG
CONFIG_SHELL=y
CONFIG_SHELL_STACK_SIZE=4096
CONFIG_SHELL_BACKENDS=y
CONFIG_SHELL_BACKEND_SERIAL=y
CONFIG_SHELL_PROMPT_UART="sof:~$ "

# SOF Low Latency Scheduler Statistics Logging (Every 1s)
CONFIG_SCHEDULE_LL_STATS_LOG=y
CONFIG_SCHEDULE_LL_STATS_LOG_EVERY_OTHER_WINDOW=n
CONFIG_SCHEDULE_LL_STATS_LOG_WINDOW_SIZE=10
34 changes: 34 additions & 0 deletions app/boards/esp32c6_devkitc_esp32c6_hpcore.overlay
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#include <zephyr/dt-bindings/interrupt-controller/esp-esp32c6-intmux.h>

/ {
chosen {
zephyr,console = &usb_serial;
zephyr,shell-uart = &usb_serial;
};

dai_i2s0: dai@6000c000 {
compatible = "espressif,esp32-dai-i2s";
status = "okay";
reg = <0x6000c000 0x1000>;
interrupt-parent = <&intc>;
interrupts = <I2S1_INTR_SOURCE IRQ_DEFAULT_PRIORITY 0>;
dai-index = <0>;
fifo-depth = <32>;
};
};

&dma {
status = "okay";
};

&usb_serial {
status = "okay";
};

&i2c0 {
status = "disabled";
};

&uart0 {
status = "disabled";
};
68 changes: 68 additions & 0 deletions app/boards/xiao_esp32c6_esp32c6_hpcore.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Target Platform & SOF Core
CONFIG_PLATFORM_ESP32C6=y
CONFIG_STATIC_PIPELINE=y
CONFIG_SOF_FULL_ZEPHYR_APPLICATION=y
CONFIG_ZEPHYR_NATIVE_DRIVERS=y
CONFIG_BUILD_OUTPUT_BIN=y

# Zephyr DAI Drivers for ESP32
CONFIG_DAI=y
CONFIG_DAI_ESPRESSIF_I2S=y
CONFIG_PINCTRL=y
CONFIG_DMA=y
CONFIG_DMA_ESP32_MAX_DESCRIPTOR_NUM=32

# Audio Processing Modules (Fixed-Point S16_LE Only - No Float / SIMD)
CONFIG_FORMAT_S16LE=y
CONFIG_COMP_VOLUME=y
CONFIG_COMP_USB_AUDIO=y
CONFIG_COMP_BT_AUDIO=n
CONFIG_FILTER_RISCV_SIMD=n
CONFIG_DRC_RISCV_SIMD=n
CONFIG_EQ_IIR_RISCV_SIMD=n
CONFIG_VOLUME_RISCV_SIMD=n
CONFIG_COMP_DRC=n
CONFIG_COMP_IIR=n
CONFIG_COMP_FIR=n
CONFIG_COMP_CROSSOVER=n
CONFIG_COMP_DCBLOCK=n
CONFIG_COMP_MULTIBAND_DRC=n
CONFIG_COMP_TDFB=n

# No Native USB UAC2 (ESP32-C6 uses USB-Serial/JTAG CDC-ACM)
CONFIG_USB_DEVICE_STACK_NEXT=n
CONFIG_USBD_AUDIO2_CLASS=n

# System Resources & Memory (SRAM Budget: 512 KB)
CONFIG_MAIN_STACK_SIZE=3072
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=3072
CONFIG_ISR_STACK_SIZE=2048
CONFIG_HW_STACK_PROTECTION=n
CONFIG_HEAP_MEM_POOL_SIZE=8192
CONFIG_TICKLESS_KERNEL=n
CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000

# Logging & USB-Serial Console
CONFIG_LOG=y
CONFIG_LOG_DEFAULT_LEVEL=3
CONFIG_LOG_MAX_LEVEL=4
CONFIG_SOF_LOG_LEVEL_INF=y
CONFIG_DAI_LOG_LEVEL_INF=y
CONFIG_LOG_MODE_DEFERRED=y
CONFIG_LOG_BUFFER_SIZE=2048
CONFIG_LOG_MODE_OVERFLOW=y
CONFIG_PRINTK=y
CONFIG_LOG_PRINTK=n
CONFIG_EARLY_CONSOLE=y

# Interactive Shell over USB-Serial/JTAG
CONFIG_SHELL=y
CONFIG_SHELL_STACK_SIZE=4096
CONFIG_SHELL_BACKENDS=y
CONFIG_SHELL_BACKEND_SERIAL=y
CONFIG_SHELL_PROMPT_UART="sof:~$ "

# SOF Low Latency Scheduler Statistics Logging (Every 1s)
CONFIG_SCHEDULE_LL_STATS_LOG=y
CONFIG_SCHEDULE_LL_STATS_LOG_EVERY_OTHER_WINDOW=n
CONFIG_SCHEDULE_LL_STATS_LOG_WINDOW_SIZE=10
38 changes: 38 additions & 0 deletions app/boards/xiao_esp32c6_esp32c6_hpcore.overlay
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#include <zephyr/dt-bindings/interrupt-controller/esp-esp32c6-intmux.h>

/ {
chosen {
zephyr,console = &usb_serial;
zephyr,shell-uart = &usb_serial;
};

dai_i2s0: dai@6000c000 {
compatible = "espressif,esp32-dai-i2s";
status = "okay";
reg = <0x6000c000 0x1000>;
interrupt-parent = <&intc>;
interrupts = <I2S1_INTR_SOURCE IRQ_DEFAULT_PRIORITY 0>;
dai-index = <0>;
fifo-depth = <32>;
};
};

&dma {
status = "okay";
};

&usb_serial {
status = "okay";
};

&i2c0 {
status = "disabled";
};

&spi2 {
status = "disabled";
};

&uart0 {
status = "disabled";
};
11 changes: 11 additions & 0 deletions app/src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@
#include <sof/boot_test.h>
#include <zephyr/logging/log.h>

#if defined(CONFIG_PLATFORM_ESP32C6)
#include <rtos/sof.h>
#include <sof/audio/pipeline/sof_static_pipeline.h>
#endif

LOG_MODULE_REGISTER(main, LOG_LEVEL_DBG);

/* define qemu boot tests if any qemu target is defined, add targets to end */
Expand Down Expand Up @@ -41,6 +46,12 @@ static int sof_app_main(void)

LOG_INF("SOF initialized");

#if defined(CONFIG_PLATFORM_ESP32C6)
/* Initialize static audio pipelines */
sof_static_pipelines_init(sof_get());
LOG_INF("ESP32-C6 SOF static pipelines started (I2S loopback ready)");
#endif

#ifdef CONFIG_ARCH_POSIX_LIBFUZZER
/* Workaround for an apparent timing bug in libfuzzer+asan.
* If the initial/main thread is allowed to return, ASAN will
Expand Down
Loading
Loading