Skip to content

toolchain: Add Espressif's ESP32 and ESP32S2 support #426

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
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
14 changes: 14 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ on:
- riscv64-zephyr-elf
- sparc-zephyr-elf
- x86_64-zephyr-elf
- xtensa-espressif_esp32_zephyr-elf
- xtensa-espressif_esp32s2_zephyr-elf
- xtensa-intel_apl_adsp_zephyr-elf
- xtensa-intel_bdw_adsp_zephyr-elf
- xtensa-intel_byt_adsp_zephyr-elf
Expand Down Expand Up @@ -121,6 +123,8 @@ jobs:
riscv64-zephyr-elf) build_target_riscv64_zephyr_elf="y";;
sparc-zephyr-elf) build_target_sparc_zephyr_elf="y";;
x86_64-zephyr-elf) build_target_x86_64_zephyr_elf="y";;
xtensa-espressif_esp32_zephyr-elf) build_target_xtensa_espressif_esp32_zephyr_elf="y";;
xtensa-espressif_esp32s2_zephyr-elf) build_target_xtensa_espressif_esp32s2_zephyr_elf="y";;
xtensa-intel_apl_adsp_zephyr-elf) build_target_xtensa_intel_apl_adsp_zephyr_elf="y";;
xtensa-intel_bdw_adsp_zephyr-elf) build_target_xtensa_intel_bdw_adsp_zephyr_elf="y";;
xtensa-intel_byt_adsp_zephyr-elf) build_target_xtensa_intel_byt_adsp_zephyr_elf="y";;
Expand Down Expand Up @@ -153,6 +157,8 @@ jobs:
build_target_riscv64_zephyr_elf="y"
build_target_sparc_zephyr_elf="y"
build_target_x86_64_zephyr_elf="y"
build_target_xtensa_espressif_esp32_zephyr_elf="y"
build_target_xtensa_espressif_esp32s2_zephyr_elf="y"
build_target_xtensa_intel_apl_adsp_zephyr_elf="y"
build_target_xtensa_intel_bdw_adsp_zephyr_elf="y"
build_target_xtensa_intel_byt_adsp_zephyr_elf="y"
Expand Down Expand Up @@ -227,6 +233,8 @@ jobs:
[ "${build_target_riscv64_zephyr_elf}" == "y" ] && MATRIX_TARGETS+='"riscv64-zephyr-elf",'
[ "${build_target_sparc_zephyr_elf}" == "y" ] && MATRIX_TARGETS+='"sparc-zephyr-elf",'
[ "${build_target_x86_64_zephyr_elf}" == "y" ] && MATRIX_TARGETS+='"x86_64-zephyr-elf",'
[ "${build_target_xtensa_espressif_esp32_zephyr_elf}" == "y" ] && MATRIX_TARGETS+='"xtensa-espressif_esp32_zephyr-elf",'
[ "${build_target_xtensa_espressif_esp32s2_zephyr_elf}" == "y" ] && MATRIX_TARGETS+='"xtensa-espressif_esp32s2_zephyr-elf",'
[ "${build_target_xtensa_intel_apl_adsp_zephyr_elf}" == "y" ] && MATRIX_TARGETS+='"xtensa-intel_apl_adsp_zephyr-elf",'
[ "${build_target_xtensa_intel_bdw_adsp_zephyr_elf}" == "y" ] && MATRIX_TARGETS+='"xtensa-intel_bdw_adsp_zephyr-elf",'
[ "${build_target_xtensa_intel_byt_adsp_zephyr_elf}" == "y" ] && MATRIX_TARGETS+='"xtensa-intel_byt_adsp_zephyr-elf",'
Expand Down Expand Up @@ -1266,6 +1274,12 @@ jobs:
PLATFORM_ARGS+="-p qemu_x86 "
PLATFORM_ARGS+="-p qemu_x86_64 "
;;
xtensa-espressif_esp32_zephyr-elf)
PLATFORM_ARGS+="-p esp32 "
;;
xtensa-espressif_esp32s2_zephyr-elf)
PLATFORM_ARGS+="-p esp32s2_saola "
;;
xtensa-intel_apl_adsp_zephyr-elf)
PLATFORM_ARGS+="-p intel_adsp_cavs15 "
;;
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ The toolchains for the following target architectures are supported:
- RISC-V (32-bit and 64-bit; RV32I, RV32E, RV64I)
- x86 (32-bit and 64-bit)
- Xtensa (sample_controller, intel_apl_adsp, intel_bdw_adsp, intel_byt_adsp,
intel_s1000, nxp_imx_adsp, nxp_imx8m_adsp)
intel_s1000, nxp_imx_adsp, nxp_imx8m_adsp, espressif_esp32, espressif_esp32s2)

The following host tools are available as part of the Zephyr SDK:

Expand Down
63 changes: 63 additions & 0 deletions configs/xtensa-espressif_esp32_zephyr-elf.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
CT_CONFIG_VERSION="3"
CT_EXPERIMENTAL=y
# CT_PREFIX_DIR_RO is not set
# CT_LOG_PROGRESS_BAR is not set
CT_TARGET_CFLAGS="-mlongcalls"
CT_ARCH_XTENSA=y
CT_XTENSA_CUSTOM=y
CT_OVERLAY_NAME="espressif_esp32"
CT_OVERLAY_LOCATION="./overlays"
CT_TARGET_VENDOR="espressif_esp32_zephyr"
CT_BINUTILS_SRC_CUSTOM=y
CT_BINUTILS_CUSTOM_LOCATION="${GITHUB_WORKSPACE}/binutils"
CT_NEWLIB_SRC_CUSTOM=y
CT_NEWLIB_CUSTOM_LOCATION="${GITHUB_WORKSPACE}/newlib"
CT_LIBC_NEWLIB_TARGET_CFLAGS="-O2"
# CT_LIBC_NEWLIB_ENABLE_TARGET_OPTSPACE is not set
CT_LIBC_NEWLIB_IO_C99FMT=y
CT_LIBC_NEWLIB_IO_LL=y
CT_LIBC_NEWLIB_IO_FLOAT=y
# CT_LIBC_NEWLIB_FSEEK_OPTIMIZATION is not set
CT_LIBC_NEWLIB_DISABLE_SUPPLIED_SYSCALLS=y
CT_LIBC_NEWLIB_GLOBAL_ATEXIT=y
CT_LIBC_NEWLIB_LITE_EXIT=y
CT_LIBC_NEWLIB_MULTITHREAD=y
CT_LIBC_NEWLIB_RETARGETABLE_LOCKING=y
# CT_LIBC_NEWLIB_WIDE_ORIENT is not set
# CT_LIBC_NEWLIB_NANO_MALLOC is not set
# CT_LIBC_NEWLIB_NANO_FORMATTED_IO is not set
CT_LIBC_NEWLIB_EXTRA_SECTIONS=y
CT_GCC_SRC_CUSTOM=y
CT_GCC_CUSTOM_LOCATION="${GITHUB_WORKSPACE}/gcc"
CT_CC_GCC_EXTRA_CONFIG_ARRAY="--with-gnu-ld --with-gnu-as --enable-initfini-array"
CT_CC_LANG_CXX=y
CT_DEBUG_GDB=y
CT_GDB_SRC_CUSTOM=y
CT_GDB_CUSTOM_LOCATION="${GITHUB_WORKSPACE}/gdb"
CT_COMP_LIBS_NEWLIB_NANO=y
CT_NEWLIB_NANO_SRC_CUSTOM=y
CT_NEWLIB_NANO_CUSTOM_LOCATION="${GITHUB_WORKSPACE}/newlib"
CT_NEWLIB_NANO_GCC_LIBSTDCXX=y
CT_NEWLIB_NANO_INSTALL_IN_TARGET=y
# CT_LIBC_NEWLIB_NANO_IO_C99FMT is not set
# CT_LIBC_NEWLIB_NANO_IO_LL is not set
CT_LIBC_NEWLIB_NANO_IO_FLOAT=y
# CT_LIBC_NEWLIB_NANO_IO_LDBL is not set
# CT_LIBC_NEWLIB_NANO_IO_POS_ARGS is not set
CT_LIBC_NEWLIB_NANO_FVWRITE_IN_STREAMIO=y
# CT_LIBC_NEWLIB_NANO_UNBUF_STREAM_OPT is not set
# CT_LIBC_NEWLIB_NANO_FSEEK_OPTIMIZATION is not set
CT_LIBC_NEWLIB_NANO_DISABLE_SUPPLIED_SYSCALLS=y
# CT_LIBC_NEWLIB_NANO_REGISTER_FINI is not set
CT_LIBC_NEWLIB_NANO_ATEXIT_DYNAMIC_ALLOC=y
CT_LIBC_NEWLIB_NANO_GLOBAL_ATEXIT=y
CT_LIBC_NEWLIB_NANO_LITE_EXIT=y
CT_LIBC_NEWLIB_NANO_REENT_SMALL=y
CT_LIBC_NEWLIB_NANO_MULTITHREAD=y
CT_LIBC_NEWLIB_NANO_RETARGETABLE_LOCKING=y
CT_LIBC_NEWLIB_NANO_EXTRA_SECTIONS=y
# CT_LIBC_NEWLIB_NANO_WIDE_ORIENT is not set
CT_LIBC_NEWLIB_NANO_ENABLE_TARGET_OPTSPACE=y
# CT_LIBC_NEWLIB_NANO_LTO is not set
CT_LIBC_NEWLIB_NANO_NANO_MALLOC=y
CT_LIBC_NEWLIB_NANO_NANO_FORMATTED_IO=y
63 changes: 63 additions & 0 deletions configs/xtensa-espressif_esp32s2_zephyr-elf.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
CT_CONFIG_VERSION="3"
CT_EXPERIMENTAL=y
# CT_PREFIX_DIR_RO is not set
# CT_LOG_PROGRESS_BAR is not set
CT_TARGET_CFLAGS="-mlongcalls"
CT_ARCH_XTENSA=y
CT_XTENSA_CUSTOM=y
CT_OVERLAY_NAME="espressif_esp32s2"
CT_OVERLAY_LOCATION="./overlays"
CT_TARGET_VENDOR="espressif_esp32s2_zephyr"
CT_BINUTILS_SRC_CUSTOM=y
CT_BINUTILS_CUSTOM_LOCATION="${GITHUB_WORKSPACE}/binutils"
CT_NEWLIB_SRC_CUSTOM=y
CT_NEWLIB_CUSTOM_LOCATION="${GITHUB_WORKSPACE}/newlib"
CT_LIBC_NEWLIB_TARGET_CFLAGS="-O2"
# CT_LIBC_NEWLIB_ENABLE_TARGET_OPTSPACE is not set
CT_LIBC_NEWLIB_IO_C99FMT=y
CT_LIBC_NEWLIB_IO_LL=y
CT_LIBC_NEWLIB_IO_FLOAT=y
# CT_LIBC_NEWLIB_FSEEK_OPTIMIZATION is not set
CT_LIBC_NEWLIB_DISABLE_SUPPLIED_SYSCALLS=y
CT_LIBC_NEWLIB_GLOBAL_ATEXIT=y
CT_LIBC_NEWLIB_LITE_EXIT=y
CT_LIBC_NEWLIB_MULTITHREAD=y
CT_LIBC_NEWLIB_RETARGETABLE_LOCKING=y
# CT_LIBC_NEWLIB_WIDE_ORIENT is not set
# CT_LIBC_NEWLIB_NANO_MALLOC is not set
# CT_LIBC_NEWLIB_NANO_FORMATTED_IO is not set
CT_LIBC_NEWLIB_EXTRA_SECTIONS=y
CT_GCC_SRC_CUSTOM=y
CT_GCC_CUSTOM_LOCATION="${GITHUB_WORKSPACE}/gcc"
CT_CC_GCC_EXTRA_CONFIG_ARRAY="--with-gnu-ld --with-gnu-as --enable-initfini-array"
CT_CC_LANG_CXX=y
CT_DEBUG_GDB=y
CT_GDB_SRC_CUSTOM=y
CT_GDB_CUSTOM_LOCATION="${GITHUB_WORKSPACE}/gdb"
CT_COMP_LIBS_NEWLIB_NANO=y
CT_NEWLIB_NANO_SRC_CUSTOM=y
CT_NEWLIB_NANO_CUSTOM_LOCATION="${GITHUB_WORKSPACE}/newlib"
CT_NEWLIB_NANO_GCC_LIBSTDCXX=y
CT_NEWLIB_NANO_INSTALL_IN_TARGET=y
# CT_LIBC_NEWLIB_NANO_IO_C99FMT is not set
# CT_LIBC_NEWLIB_NANO_IO_LL is not set
CT_LIBC_NEWLIB_NANO_IO_FLOAT=y
# CT_LIBC_NEWLIB_NANO_IO_LDBL is not set
# CT_LIBC_NEWLIB_NANO_IO_POS_ARGS is not set
CT_LIBC_NEWLIB_NANO_FVWRITE_IN_STREAMIO=y
# CT_LIBC_NEWLIB_NANO_UNBUF_STREAM_OPT is not set
# CT_LIBC_NEWLIB_NANO_FSEEK_OPTIMIZATION is not set
CT_LIBC_NEWLIB_NANO_DISABLE_SUPPLIED_SYSCALLS=y
# CT_LIBC_NEWLIB_NANO_REGISTER_FINI is not set
CT_LIBC_NEWLIB_NANO_ATEXIT_DYNAMIC_ALLOC=y
CT_LIBC_NEWLIB_NANO_GLOBAL_ATEXIT=y
CT_LIBC_NEWLIB_NANO_LITE_EXIT=y
CT_LIBC_NEWLIB_NANO_REENT_SMALL=y
CT_LIBC_NEWLIB_NANO_MULTITHREAD=y
CT_LIBC_NEWLIB_NANO_RETARGETABLE_LOCKING=y
CT_LIBC_NEWLIB_NANO_EXTRA_SECTIONS=y
# CT_LIBC_NEWLIB_NANO_WIDE_ORIENT is not set
CT_LIBC_NEWLIB_NANO_ENABLE_TARGET_OPTSPACE=y
# CT_LIBC_NEWLIB_NANO_LTO is not set
CT_LIBC_NEWLIB_NANO_NANO_MALLOC=y
CT_LIBC_NEWLIB_NANO_NANO_FORMATTED_IO=y
Binary file added overlays/xtensa_espressif_esp32.tar.gz
Binary file not shown.
Binary file added overlays/xtensa_espressif_esp32s2.tar.gz
Binary file not shown.