From 70f8b5d09487c839fbb4c56bf6a83a89af43950f Mon Sep 17 00:00:00 2001 From: Mario Paja Date: Tue, 29 Oct 2024 18:40:00 +0100 Subject: [PATCH] boards: seeed: add XIAO ESP32C6 support This PR adds supports for XIAO ESP32C6 Signed-off-by: Mario Paja --- boards/seeed/xiao_esp32c6/Kconfig | 6 + boards/seeed/xiao_esp32c6/Kconfig.sysbuild | 10 + .../seeed/xiao_esp32c6/Kconfig.xiao_esp32c6 | 7 + boards/seeed/xiao_esp32c6/board.cmake | 9 + boards/seeed/xiao_esp32c6/board.yml | 6 + .../xiao_esp32c6/doc/img/xiao_esp32c6.webp | Bin 0 -> 28926 bytes .../doc/img/xiao_esp32c6_pinout.webp | Bin 0 -> 41644 bytes boards/seeed/xiao_esp32c6/doc/index.rst | 233 ++++++++++++++++++ .../xiao_esp32c6/seeed_xiao_connector.dtsi | 28 +++ boards/seeed/xiao_esp32c6/support/openocd.cfg | 4 + .../xiao_esp32c6/xiao_esp32c6-pinctrl.dtsi | 34 +++ boards/seeed/xiao_esp32c6/xiao_esp32c6.dts | 71 ++++++ boards/seeed/xiao_esp32c6/xiao_esp32c6.yaml | 19 ++ .../seeed/xiao_esp32c6/xiao_esp32c6_defconfig | 7 + 14 files changed, 434 insertions(+) create mode 100644 boards/seeed/xiao_esp32c6/Kconfig create mode 100644 boards/seeed/xiao_esp32c6/Kconfig.sysbuild create mode 100644 boards/seeed/xiao_esp32c6/Kconfig.xiao_esp32c6 create mode 100644 boards/seeed/xiao_esp32c6/board.cmake create mode 100644 boards/seeed/xiao_esp32c6/board.yml create mode 100644 boards/seeed/xiao_esp32c6/doc/img/xiao_esp32c6.webp create mode 100644 boards/seeed/xiao_esp32c6/doc/img/xiao_esp32c6_pinout.webp create mode 100644 boards/seeed/xiao_esp32c6/doc/index.rst create mode 100644 boards/seeed/xiao_esp32c6/seeed_xiao_connector.dtsi create mode 100644 boards/seeed/xiao_esp32c6/support/openocd.cfg create mode 100644 boards/seeed/xiao_esp32c6/xiao_esp32c6-pinctrl.dtsi create mode 100644 boards/seeed/xiao_esp32c6/xiao_esp32c6.dts create mode 100644 boards/seeed/xiao_esp32c6/xiao_esp32c6.yaml create mode 100644 boards/seeed/xiao_esp32c6/xiao_esp32c6_defconfig diff --git a/boards/seeed/xiao_esp32c6/Kconfig b/boards/seeed/xiao_esp32c6/Kconfig new file mode 100644 index 00000000000..bc76c90de06 --- /dev/null +++ b/boards/seeed/xiao_esp32c6/Kconfig @@ -0,0 +1,6 @@ +# Copyright (c) 2024 Mario Paja +# SPDX-License-Identifier: Apache-2.0 + +config HEAP_MEM_POOL_ADD_SIZE_BOARD + int + default 4096 diff --git a/boards/seeed/xiao_esp32c6/Kconfig.sysbuild b/boards/seeed/xiao_esp32c6/Kconfig.sysbuild new file mode 100644 index 00000000000..543becaa4f6 --- /dev/null +++ b/boards/seeed/xiao_esp32c6/Kconfig.sysbuild @@ -0,0 +1,10 @@ +# Copyright (c) 2024 Mario Paja +# SPDX-License-Identifier: Apache-2.0 + +choice BOOTLOADER + default BOOTLOADER_MCUBOOT +endchoice + +choice BOOT_SIGNATURE_TYPE + default BOOT_SIGNATURE_TYPE_NONE +endchoice diff --git a/boards/seeed/xiao_esp32c6/Kconfig.xiao_esp32c6 b/boards/seeed/xiao_esp32c6/Kconfig.xiao_esp32c6 new file mode 100644 index 00000000000..34fc9fe1b5e --- /dev/null +++ b/boards/seeed/xiao_esp32c6/Kconfig.xiao_esp32c6 @@ -0,0 +1,7 @@ +# XIAO ESP32C6 board configuration + +# Copyright (c) 2024 Mario Paja +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_XIAO_ESP32C6 + select SOC_ESP32_C6_WROOM_1U_N4 diff --git a/boards/seeed/xiao_esp32c6/board.cmake b/boards/seeed/xiao_esp32c6/board.cmake new file mode 100644 index 00000000000..2f04d1fe886 --- /dev/null +++ b/boards/seeed/xiao_esp32c6/board.cmake @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: Apache-2.0 + +if(NOT "${OPENOCD}" MATCHES "^${ESPRESSIF_TOOLCHAIN_PATH}/.*") + set(OPENOCD OPENOCD-NOTFOUND) +endif() +find_program(OPENOCD openocd PATHS ${ESPRESSIF_TOOLCHAIN_PATH}/openocd-esp32/bin NO_DEFAULT_PATH) + +include(${ZEPHYR_BASE}/boards/common/esp32.board.cmake) +include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) diff --git a/boards/seeed/xiao_esp32c6/board.yml b/boards/seeed/xiao_esp32c6/board.yml new file mode 100644 index 00000000000..f7d65e65a43 --- /dev/null +++ b/boards/seeed/xiao_esp32c6/board.yml @@ -0,0 +1,6 @@ +board: + name: xiao_esp32c6 + full_name: XIAO ESP32C6 + vendor: seeed + socs: + - name: esp32c6 diff --git a/boards/seeed/xiao_esp32c6/doc/img/xiao_esp32c6.webp b/boards/seeed/xiao_esp32c6/doc/img/xiao_esp32c6.webp new file mode 100644 index 0000000000000000000000000000000000000000..739123ba9f5b58c5de3d97c8ba7261e6d49e9b17 GIT binary patch literal 28926 zcmdSAQ;;TM(=FQWY1^K*HEr9rZQHhO+qOMz+qT{Pw$6NCob&I?6Fc_RuBf`HsCqIg zD_7=PSy_q_qM|SMKtO6Dg7T{J?CQ`!KtPE94g%2s>;lsA;@N0GK)|>oHk<4V-$vxC zm(0J({2whL;rwONAFF6x*Sa9BKUOL4e{MO1V1JRVP_1qE7_M&U_;15O>}gUE5w_Z< z^%%&r!nsNXUEdhaGXM`UJaWe(y?%Wkao>3O@{UsfCTXxCkwD(g;#poj@g=Wn>ed@y z|E5e_=xUczY2hQ`hX&ib@pWt$0NY{ZUEF3T*}I`5VkdtsYUQ5&`Kj9w2s0ASx7lPJ z15F++#9-J*8uv^5A^DN`PWmK&mwU)N;``q@@%jV9-dU@6bJ03z6fpV8LT%bX`>KA$ z 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 o0000000000000000000000000000000000000000000000HMG|T>t<8 literal 0 HcmV?d00001 diff --git a/boards/seeed/xiao_esp32c6/doc/img/xiao_esp32c6_pinout.webp b/boards/seeed/xiao_esp32c6/doc/img/xiao_esp32c6_pinout.webp new file mode 100644 index 0000000000000000000000000000000000000000..3cc7232f27c4ccb355d243d63ff0b8f403fe277d GIT binary patch literal 41644 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

D=H#N-1Pf&gw#U7n> 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

P_bK zBgc5`U|*$=-^m#*mVmNUOhYkZg86)0ZbH?!T2eByR!fZ+{9oBGo(ocu!%7UYq$O+n z>0?}ng#)bCt=F+ROC+u!)U}o{GbYq6W+2Mk4y1eyQ__h=zYkbf&bL~si_oI0$`N^& z;v)dC(&agkR!a-}t(K+|)38=cFz8@-G4o!w=Q)r0#d#)g;KxX|G>&2c#-=FU8w2%Ll^7p3~$KRv>>2Grd2#^o*a;>4= z61bb3H45IU=oN-E11m+Bb)B5o!_1}60ZL$DVQI^`de+cc|y`5Y4D6mo- zCpoen1*V_RJ@qM-1!4;17)aLt%QBix>tXT6WmujrQNwl``Mr#1ptsHOKa{` z^)g;DQAkd{j3{t_{|Mv32i|=5Eh0I0J`C6JXN#rHS+uXe z!+hrB3&P%uJ!?rHg+0)(tUEiu{1uDc=p%};+}YzP+Sfp1ilJyx+rRdkcG~&|}cA`hEf0RnJUIUuHeVJ@L|$90_UqrOVem+B#al>H_9Y8bwPw zziZDOW9Fu znk-=MmccZ8V_Z_7RoUa_1Q~A>-~R{+G}D(3z7?kuEafE`n8cfO5}07*IbiM)ug|5+ zu6Y!gqe5cr3PNJ+DvewL=CY6&yVjZC9S*o9{a)a?o5I>*XeQuCGi$yr$xPy&a_>cq z{_DMnk@;1ke+C!4KYaJWgo}~O0*;7XoD@NFVfq#Y4inM%668D>u HGj~Mv;tDiq literal 0 HcmV?d00001 diff --git a/boards/seeed/xiao_esp32c6/doc/index.rst b/boards/seeed/xiao_esp32c6/doc/index.rst new file mode 100644 index 00000000000..123869ae84b --- /dev/null +++ b/boards/seeed/xiao_esp32c6/doc/index.rst @@ -0,0 +1,233 @@ +.. zephyr:board:: xiao_esp32c6 + +Overview +******** + +Seeed Studio XIAO ESP32C6 is powered by the highly-integrated ESP32-C6 SoC. +It consists of a high-performance (HP) 32-bit RISC-V processor, which can be clocked up to 160 MHz, +and a low-power (LP) 32-bit RISC-V processor, which can be clocked up to 20 MHz. +It has a 320KB ROM, a 512KB SRAM, and works with external flash. +This board integrates complete Wi-Fi, Bluetooth LE, Zigbee, and Thread functions. +For more information, check `Seeed Studio XIAO ESP32C6`_ . + +Hardware +******** + +This board is based on the ESP32-C6 with 4MB of flash, integrating 2.4 GHz Wi-Fi 6, +Bluetooth 5.3 (LE) and the 802.15.4 protocol. It has an USB-C port for programming +and debugging, integrated battery charging and an U.FL external antenna connector. +It is based on a standard XIAO 14 pin pinout. + +Supported Features +================== + +The Zephyr ``xiao_esp32c6`` board target supports the following hardware features: + ++------------+------------+-------------------------------------+ +| Interface | Controller | Driver/Component | ++============+============+=====================================+ +| UART | on-chip | serial port | ++------------+------------+-------------------------------------+ +| GPIO | on-chip | gpio | ++------------+------------+-------------------------------------+ +| PINMUX | on-chip | pinmux | ++------------+------------+-------------------------------------+ +| USB-JTAG | on-chip | hardware interface | ++------------+------------+-------------------------------------+ +| SPI Master | on-chip | spi | ++------------+------------+-------------------------------------+ +| Watchdog | on-chip | watchdog | ++------------+------------+-------------------------------------+ +| LEDC | on-chip | pwm | ++------------+------------+-------------------------------------+ +| SPI DMA | on-chip | spi | ++------------+------------+-------------------------------------+ +| GDMA | on-chip | dma | ++------------+------------+-------------------------------------+ +| TRNG | on-chip | entropy | ++------------+------------+-------------------------------------+ +| USB-CDC | on-chip | serial | ++------------+------------+-------------------------------------+ +| Wi-Fi | on-chip | | ++------------+------------+-------------------------------------+ + +The board uses a standard XIAO pinout, the default pin mapping is the following: + +.. figure:: img/xiao_esp32c6_pinout.webp + :align: center + :alt: XIAO ESP32C6 Pinout + + XIAO ESP32C6 Pinout + +System requirements +******************* + +Prerequisites +============= + +Espressif HAL requires WiFi and Bluetooth binary blobs in order work. Run the command +below to retrieve those files. + +.. code-block:: console + + west blobs fetch hal_espressif + +.. note:: + + It is recommended running the command above after :file:`west update`. + +Building & Flashing +******************* + +Simple boot +=========== + +The board could be loaded using the single binary image, without 2nd stage bootloader. +It is the default option when building the application without additional configuration. + +.. note:: + + Simple boot does not provide any security features nor OTA updates. + +MCUboot bootloader +================== + +User may choose to use MCUboot bootloader instead. In that case the bootloader +must be built (and flashed) at least once. + +There are two options to be used when building an application: + +1. Sysbuild +2. Manual build + +.. note:: + + User can select the MCUboot bootloader by adding the following line + to the board default configuration file. + + .. code:: cfg + + CONFIG_BOOTLOADER_MCUBOOT=y + +Sysbuild +======== + +The sysbuild makes possible to build and flash all necessary images needed to +bootstrap the board with the EPS32 SoC. + +To build the sample application using sysbuild use the command: + +.. zephyr-app-commands:: + :tool: west + :zephyr-app: samples/hello_world + :board: xiao_esp32c6 + :goals: build + :west-args: --sysbuild + :compact: + +By default, the ESP32 sysbuild creates bootloader (MCUboot) and application +images. But it can be configured to create other kind of images. + +Build directory structure created by sysbuild is different from traditional +Zephyr build. Output is structured by the domain subdirectories: + +.. code-block:: + + build/ + ├── hello_world + │   └── zephyr + │   ├── zephyr.elf + │   └── zephyr.bin + ├── mcuboot + │ └── zephyr + │ ├── zephyr.elf + │ └── zephyr.bin + └── domains.yaml + +.. note:: + + With ``--sysbuild`` option the bootloader will be re-build and re-flash + every time the pristine build is used. + +For more information about the system build please read the :ref:`sysbuild` documentation. + +Manual build +============ + +During the development cycle, it is intended to build & flash as quickly possible. +For that reason, images can be built one at a time using traditional build. + +The instructions following are relevant for both manual build and sysbuild. +The only difference is the structure of the build directory. + +.. note:: + + Remember that bootloader (MCUboot) needs to be flash at least once. + +Build and flash applications as usual (see :ref:`build_an_application` and +:ref:`application_run` for more details). + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: xiao_esp32c6 + :goals: build + +The usual ``flash`` target will work with the ``xiao_esp32c6`` board +configuration. Here is an example for the :zephyr:code-sample:`hello_world` +application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: xiao_esp32c6 + :goals: flash + +Since the Zephyr console is by default on the ``usb_serial`` device, we use +the espressif monitor to view. + +.. code-block:: console + + $ west espressif monitor + +After the board has automatically reset and booted, you should see the following +message in the monitor: + +.. code-block:: console + + ***** Booting Zephyr OS vx.x.x-xxx-gxxxxxxxxxxxx ***** + Hello World! xiao_esp32c6/esp32c6 + +Debugging +********* + +As with much custom hardware, the ESP32-C6 modules require patches to +OpenOCD that are not upstreamed yet. Espressif maintains their own fork of +the project. The custom OpenOCD can be obtained at `OpenOCD ESP32`_. + +The Zephyr SDK uses a bundled version of OpenOCD by default. You can overwrite that behavior by adding the +``-DOPENOCD= -DOPENOCD_DEFAULT_PATH=`` +parameter when building. + +Here is an example for building the :zephyr:code-sample:`hello_world` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: xiao_esp32c6 + :goals: build flash + :gen-args: -DOPENOCD= -DOPENOCD_DEFAULT_PATH= + +You can debug an application in the usual way. Here is an example for the :zephyr:code-sample:`hello_world` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: xiao_esp32c6 + :goals: debug + +References +********** + +.. target-notes:: + +.. _`Seeed Studio XIAO ESP32C6`: https://wiki.seeedstudio.com/xiao_esp32c6_getting_started/ +.. _`ESP32-C6 Datasheet`: https://www.espressif.com/sites/default/files/documentation/esp32-c6_datasheet_en.pdf +.. _`ESP32-C6 Technical Reference Manual`: https://espressif.com/sites/default/files/documentation/esp32-c6_technical_reference_manual_en.pdf +.. _`OpenOCD ESP32`: https://github.com/espressif/openocd-esp32/releases diff --git a/boards/seeed/xiao_esp32c6/seeed_xiao_connector.dtsi b/boards/seeed/xiao_esp32c6/seeed_xiao_connector.dtsi new file mode 100644 index 00000000000..9fcac7e7b67 --- /dev/null +++ b/boards/seeed/xiao_esp32c6/seeed_xiao_connector.dtsi @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2024 Mario Paja + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + xiao_d: connector { + compatible = "seeed,xiao-gpio"; + #gpio-cells = <2>; + gpio-map-mask = <0xffffffff 0xffffffc0>; + gpio-map-pass-thru = <0 0x3f>; + gpio-map = <0 0 &gpio0 0 0>, /* D0 */ + <1 0 &gpio0 1 0>, /* D1 */ + <2 0 &gpio0 2 0>, /* D2 */ + <3 0 &gpio0 21 0>, /* D3 */ + <4 0 &gpio0 22 0>, /* D4 */ + <5 0 &gpio0 23 0>, /* D5 */ + <6 0 &gpio0 16 0>, /* D6 */ + <7 0 &gpio0 17 0>, /* D7 */ + <8 0 &gpio0 19 0>, /* D8 */ + <9 0 &gpio0 20 0>, /* D9 */ + <10 0 &gpio0 18 0>; /* D10 */ + }; +}; + +xiao_spi: &spi2 {}; +xiao_serial: &uart0 {}; diff --git a/boards/seeed/xiao_esp32c6/support/openocd.cfg b/boards/seeed/xiao_esp32c6/support/openocd.cfg new file mode 100644 index 00000000000..d86a5517a4c --- /dev/null +++ b/boards/seeed/xiao_esp32c6/support/openocd.cfg @@ -0,0 +1,4 @@ +# ESP32C6 has built-in JTAG interface over USB port in pins GPIO13/GPIO12 (D-/D+). +set ESP_RTOS none + +source [find board/esp32c6-builtin.cfg] diff --git a/boards/seeed/xiao_esp32c6/xiao_esp32c6-pinctrl.dtsi b/boards/seeed/xiao_esp32c6/xiao_esp32c6-pinctrl.dtsi new file mode 100644 index 00000000000..061a21eb2c0 --- /dev/null +++ b/boards/seeed/xiao_esp32c6/xiao_esp32c6-pinctrl.dtsi @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024 Mario Paja + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include + +&pinctrl { + + uart0_default: uart0_default { + group1 { + pinmux = ; + output-high; + }; + group2 { + pinmux = ; + bias-pull-up; + }; + }; + + spim2_default: spim2_default { + group1 { + pinmux = , + ; + }; + group2 { + pinmux = ; + output-low; + }; + }; +}; diff --git a/boards/seeed/xiao_esp32c6/xiao_esp32c6.dts b/boards/seeed/xiao_esp32c6/xiao_esp32c6.dts new file mode 100644 index 00000000000..0e46e01c655 --- /dev/null +++ b/boards/seeed/xiao_esp32c6/xiao_esp32c6.dts @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2024 Mario Paja + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include "xiao_esp32c6-pinctrl.dtsi" +#include +#include +#include "seeed_xiao_connector.dtsi" + +/ { + model = "Seeed XIAO ESP32C6"; + compatible = "seeed,xiao-esp32c6"; + + chosen { + zephyr,sram = &sram0; + zephyr,console = &usb_serial; + zephyr,shell-uart = &usb_serial; + zephyr,flash = &flash0; + zephyr,code-partition = &slot0_partition; + }; + + leds: leds { + compatible = "gpio-leds"; + yellow_led: led_0 { + gpios = <&gpio0 15 GPIO_ACTIVE_LOW>; + label = "User LED1"; + }; + }; + + aliases { + led0 = &yellow_led; + watchdog0 = &wdt0; + }; + +}; + +&trng0 { + status = "okay"; +}; + +&gpio0 { + status = "okay"; +}; + +&wdt0 { + status = "okay"; +}; + +&usb_serial { + status = "okay"; +}; + +&spi2 { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + pinctrl-0 = <&spim2_default>; + pinctrl-names = "default"; +}; + +&uart0 { + status = "okay"; + current-speed = <115200>; + pinctrl-0 = <&uart0_default>; + pinctrl-names = "default"; +}; diff --git a/boards/seeed/xiao_esp32c6/xiao_esp32c6.yaml b/boards/seeed/xiao_esp32c6/xiao_esp32c6.yaml new file mode 100644 index 00000000000..c626ac54870 --- /dev/null +++ b/boards/seeed/xiao_esp32c6/xiao_esp32c6.yaml @@ -0,0 +1,19 @@ +identifier: xiao_esp32c6 +name: XIAO ESP32C6 +type: mcu +arch: riscv +toolchain: + - zephyr +supported: + - gpio + - watchdog + - uart + - dma + - spi + - entropy +testing: + ignore_tags: + - net + - bluetooth + - tracing +vendor: seeed diff --git a/boards/seeed/xiao_esp32c6/xiao_esp32c6_defconfig b/boards/seeed/xiao_esp32c6/xiao_esp32c6_defconfig new file mode 100644 index 00000000000..6539bd42e59 --- /dev/null +++ b/boards/seeed/xiao_esp32c6/xiao_esp32c6_defconfig @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_MAIN_STACK_SIZE=2048 +CONFIG_CONSOLE=y +CONFIG_SERIAL=y +CONFIG_UART_CONSOLE=y +CONFIG_GPIO=y