boards: xtensa: add support for DOIT ESP32 DevKit V1
This patch adds support for the DOIT ESP32 DevKit V1, an entry-level
development board based on the ESP32-WROOM-32.
Main features:
- ESP32-WROOM-32 module (4 MB Flash, 520 KB SRAM)
- Dual-core Xtensa LX6 processor up to 240 MHz
- 802.11b/g/n Wi-Fi and Bluetooth v4.2 BR/EDR + BLE
- CP2102 USB-to-UART bridge
- Onboard blue LED connected to GPIO2
- All GPIO pins exposed on 2x15 pin headers
The board has been tested with the following Zephyr samples:
- samples/basic/blinky
- samples/hello_world
Signed-off-by: Siratul Islam <sirat4757@gmail.com>
diff --git a/boards/others/doit_esp32_devkit_v1/Kconfig b/boards/others/doit_esp32_devkit_v1/Kconfig
new file mode 100644
index 0000000..47e001b
--- /dev/null
+++ b/boards/others/doit_esp32_devkit_v1/Kconfig
@@ -0,0 +1,7 @@
+# Copyright (c) 2025 Siratul Islam
+# SPDX-License-Identifier: Apache-2.0
+
+config HEAP_MEM_POOL_ADD_SIZE_BOARD
+ int
+ default 4096 if BOARD_DOIT_ESP32_DEVKIT_V1_ESP32_PROCPU
+ default 256 if BOARD_DOIT_ESP32_DEVKIT_V1_ESP32_APPCPU
diff --git a/boards/others/doit_esp32_devkit_v1/Kconfig.doit_esp32_devkit_v1 b/boards/others/doit_esp32_devkit_v1/Kconfig.doit_esp32_devkit_v1
new file mode 100644
index 0000000..091b762
--- /dev/null
+++ b/boards/others/doit_esp32_devkit_v1/Kconfig.doit_esp32_devkit_v1
@@ -0,0 +1,7 @@
+# Copyright (c) 2025 Siratul Islam
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_DOIT_ESP32_DEVKIT_V1
+ select SOC_ESP32_WROOM_32UE_N4
+ select SOC_ESP32_PROCPU if BOARD_DOIT_ESP32_DEVKIT_V1_ESP32_PROCPU
+ select SOC_ESP32_APPCPU if BOARD_DOIT_ESP32_DEVKIT_V1_ESP32_APPCPU
diff --git a/boards/others/doit_esp32_devkit_v1/Kconfig.sysbuild b/boards/others/doit_esp32_devkit_v1/Kconfig.sysbuild
new file mode 100644
index 0000000..3a2d17a
--- /dev/null
+++ b/boards/others/doit_esp32_devkit_v1/Kconfig.sysbuild
@@ -0,0 +1,10 @@
+# Copyright (c) 2023 Espressif Systems (Shanghai) Co., Ltd.
+# 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/others/doit_esp32_devkit_v1/board.cmake b/boards/others/doit_esp32_devkit_v1/board.cmake
new file mode 100644
index 0000000..ad53de1
--- /dev/null
+++ b/boards/others/doit_esp32_devkit_v1/board.cmake
@@ -0,0 +1,11 @@
+# Copyright (c) 2023 Espressif Systems (Shanghai) Co., Ltd.
+# 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/others/doit_esp32_devkit_v1/board.yml b/boards/others/doit_esp32_devkit_v1/board.yml
new file mode 100644
index 0000000..fd8bb44
--- /dev/null
+++ b/boards/others/doit_esp32_devkit_v1/board.yml
@@ -0,0 +1,6 @@
+board:
+ name: doit_esp32_devkit_v1
+ full_name: DOIT ESP32-DevKit-V1
+ vendor: others
+ socs:
+ - name: esp32
diff --git a/boards/others/doit_esp32_devkit_v1/doc/img/doit_esp32_devkit_v1.webp b/boards/others/doit_esp32_devkit_v1/doc/img/doit_esp32_devkit_v1.webp
new file mode 100644
index 0000000..d3912da
--- /dev/null
+++ b/boards/others/doit_esp32_devkit_v1/doc/img/doit_esp32_devkit_v1.webp
Binary files differ
diff --git a/boards/others/doit_esp32_devkit_v1/doc/index.rst b/boards/others/doit_esp32_devkit_v1/doc/index.rst
new file mode 100644
index 0000000..b31e880
--- /dev/null
+++ b/boards/others/doit_esp32_devkit_v1/doc/index.rst
@@ -0,0 +1,49 @@
+.. zephyr:board:: doit_esp32_devkit_v1
+
+Overview
+********
+
+DOIT ESP32 DevKit V1 is an entry-level development board based on the ESP32-WROOM-32 module.
+This board integrates complete Wi-Fi and Bluetooth Low Energy functions and exposes all GPIO pins
+on standard 2.54mm headers for easy prototyping.
+
+Hardware
+********
+
+This board uses ESP32 chip revision 1.1. A blue LED is connected to GPIO2, and a BOOT
+button is connected to GPIO0. The board has a micro-USB connector for power supply and programming/debugging.
+
+.. include:: ../../../espressif/common/soc-esp32-features.rst
+ :start-after: espressif-soc-esp32-features
+
+Supported Features
+==================
+
+.. zephyr:board-supported-hw::
+
+System Requirements
+*******************
+
+.. include:: ../../../espressif/common/system-requirements.rst
+ :start-after: espressif-system-requirements
+
+Programming and Debugging
+*************************
+
+.. zephyr:board-supported-runners::
+
+.. include:: ../../../espressif/common/building-flashing.rst
+ :start-after: espressif-building-flashing
+
+Debugging
+=========
+
+.. include:: ../../../espressif/common/openocd-debugging.rst
+ :start-after: espressif-openocd-debugging
+
+References
+**********
+
+.. target-notes::
+
+.. _`DOIT ESP32 DevKit V1 Schematic`: https://embedded-systems-design.github.io/overview-of-the-esp32-devkit-doit-v1/SchematicsforESP32.pdf
diff --git a/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1-pinctrl.dtsi b/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1-pinctrl.dtsi
new file mode 100644
index 0000000..c3e0b70
--- /dev/null
+++ b/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1-pinctrl.dtsi
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2025 Siratul Islam
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#include <zephyr/dt-bindings/pinctrl/esp-pinctrl-common.h>
+#include <dt-bindings/pinctrl/esp32-pinctrl.h>
+#include <zephyr/dt-bindings/pinctrl/esp32-gpio-sigmap.h>
+
+&pinctrl {
+ uart0_default: uart0_default {
+ group1 {
+ pinmux = <UART0_TX_GPIO1>;
+ output-high;
+ };
+
+ group2 {
+ pinmux = <UART0_RX_GPIO3>;
+ bias-pull-up;
+ };
+ };
+
+ uart2_default: uart2_default {
+ group1 {
+ pinmux = <UART2_TX_GPIO17>;
+ };
+
+ group2 {
+ pinmux = <UART2_RX_GPIO16>;
+ bias-pull-up;
+ };
+ };
+
+ spim2_default: spim2_default {
+ group1 {
+ pinmux = <SPIM2_MISO_GPIO12>,
+ <SPIM2_SCLK_GPIO14>,
+ <SPIM2_CSEL_GPIO15>;
+ };
+
+ group2 {
+ pinmux = <SPIM2_MOSI_GPIO13>;
+ output-low;
+ };
+ };
+
+ spim3_default: spim3_default {
+ group1 {
+ pinmux = <SPIM3_MISO_GPIO19>,
+ <SPIM3_SCLK_GPIO18>,
+ <SPIM3_CSEL_GPIO5>;
+ };
+
+ group2 {
+ pinmux = <SPIM3_MOSI_GPIO23>;
+ output-low;
+ };
+ };
+
+ i2c0_default: i2c0_default {
+ group1 {
+ pinmux = <I2C0_SDA_GPIO21>,
+ <I2C0_SCL_GPIO22>;
+ bias-pull-up;
+ drive-open-drain;
+ output-high;
+ };
+ };
+
+ i2s0_default: i2s0_default {
+ group1 {
+ pinmux = <I2S0_O_WS_GPIO25>,
+ <I2S0_O_BCK_GPIO26>,
+ <I2S0_O_SD_GPIO27>,
+ <I2S0_I_WS_GPIO33>,
+ <I2S0_I_BCK_GPIO32>;
+ output-enable;
+ };
+
+ group2 {
+ pinmux = <I2S0_I_SD_GPIO35>;
+ input-enable;
+ };
+ };
+};
diff --git a/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1_appcpu.dts b/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1_appcpu.dts
new file mode 100644
index 0000000..f6a684e
--- /dev/null
+++ b/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1_appcpu.dts
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2025 Siratul Islam
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+/dts-v1/;
+
+#include <espressif/esp32/esp32_appcpu.dtsi>
+#include <espressif/partitions_0x1000_amp.dtsi>
+
+/ {
+ model = "DOIT ESP32-Devkit-V1 APPCPU";
+ compatible = "doit,esp32-devkit-v1";
+
+ chosen {
+ zephyr,sram = &sram1;
+ zephyr,ipc_shm = &shm0;
+ zephyr,ipc = &ipm0;
+ zephyr,flash = &flash0;
+ zephyr,code-partition = &slot0_appcpu_partition;
+ };
+};
+
+&ipm0 {
+ status = "okay";
+};
+
+&trng0 {
+ status = "okay";
+};
diff --git a/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1_appcpu.yaml b/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1_appcpu.yaml
new file mode 100644
index 0000000..6adb516
--- /dev/null
+++ b/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1_appcpu.yaml
@@ -0,0 +1,27 @@
+identifier: doit_esp32_devkit_v1/esp32/appcpu
+name: DOIT ESP32-Devkit-V1 APPCPU
+vendor: others
+type: mcu
+arch: xtensa
+toolchain:
+ - zephyr
+supported:
+ - uart
+testing:
+ ignore_tags:
+ - net
+ - bluetooth
+ - flash
+ - cpp
+ - posix
+ - watchdog
+ - logging
+ - kernel
+ - pm
+ - gpio
+ - crypto
+ - eeprom
+ - heap
+ - cmsis_rtos
+ - jwt
+ - zdsp
diff --git a/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1_appcpu_defconfig b/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1_appcpu_defconfig
new file mode 100644
index 0000000..15b838c
--- /dev/null
+++ b/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1_appcpu_defconfig
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: Apache-2.0
+
+CONFIG_CLOCK_CONTROL=y
+
+# Enable support for ESP32 chip revision 1.1
+CONFIG_ESP32_USE_UNSUPPORTED_REVISION=y
diff --git a/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1_procpu.dts b/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1_procpu.dts
new file mode 100644
index 0000000..df4c0d5
--- /dev/null
+++ b/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1_procpu.dts
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) 2025 Siratul Islam
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+/dts-v1/;
+
+#include <espressif/esp32/esp32_wroom_32ue_n4.dtsi>
+#include "doit_esp32_devkit_v1-pinctrl.dtsi"
+#include <zephyr/dt-bindings/input/input-event-codes.h>
+#include <zephyr/dt-bindings/input/esp32-touch-sensor-input.h>
+#include <espressif/partitions_0x1000_amp.dtsi>
+
+/ {
+ model = "DOIT ESP32-Devkit-V1 PROCPU";
+ compatible = "doit,esp32-devkit-v1";
+
+ aliases {
+ uart-0 = &uart0;
+ i2c-0 = &i2c0;
+ sw0 = &button0;
+ led0 = &blue_led;
+ watchdog0 = &wdt0;
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ blue_led: blue_led {
+ gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>;
+ label = "User LED";
+ };
+ };
+
+ buttons {
+ compatible = "gpio-keys";
+
+ button0: button_0 {
+ gpios = <&gpio0 0 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
+ label = "BOOT Button";
+ zephyr,code = <INPUT_KEY_0>;
+ };
+ };
+
+ chosen {
+ zephyr,sram = &sram1;
+ zephyr,console = &uart0;
+ zephyr,shell-uart = &uart0;
+ zephyr,flash = &flash0;
+ zephyr,code-partition = &slot0_partition;
+ zephyr,bt-hci = &esp32_bt_hci;
+ };
+};
+
+&uart0 {
+ status = "okay";
+ current-speed = <115200>;
+ pinctrl-0 = <&uart0_default>;
+ pinctrl-names = "default";
+};
+
+&uart2 {
+ current-speed = <115200>;
+ pinctrl-0 = <&uart2_default>;
+ pinctrl-names = "default";
+};
+
+&gpio0 {
+ status = "okay";
+};
+
+&gpio1 {
+ status = "okay";
+};
+
+&touch {
+ debounce-interval-ms = <30>;
+ href-microvolt = <2700000>;
+ lref-microvolt = <500000>;
+ href-atten-microvolt = <1000000>;
+ filter-mode = <ESP32_TOUCH_FILTER_MODE_IIR_16>;
+ filter-debounce-cnt = <1>;
+ filter-noise-thr = <ESP32_TOUCH_FILTER_NOISE_THR_4_8TH>;
+ filter-jitter-step = <4>;
+ filter-smooth-level = <ESP32_TOUCH_FILTER_SMOOTH_MODE_IIR_2>;
+};
+
+&i2c0 {
+ status = "okay";
+ clock-frequency = <I2C_BITRATE_STANDARD>;
+ sda-gpios = <&gpio0 21 GPIO_OPEN_DRAIN>;
+ scl-gpios = <&gpio0 22 GPIO_OPEN_DRAIN>;
+ pinctrl-0 = <&i2c0_default>;
+ pinctrl-names = "default";
+};
+
+&i2s0 {
+ pinctrl-0 = <&i2s0_default>;
+ pinctrl-names = "default";
+ status = "disabled";
+};
+
+&spi2 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+ pinctrl-0 = <&spim2_default>;
+ pinctrl-names = "default";
+};
+
+&spi3 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+ pinctrl-0 = <&spim3_default>;
+ pinctrl-names = "default";
+};
+
+&trng0 {
+ status = "okay";
+};
+
+&esp32_bt_hci {
+ status = "okay";
+};
+
+&wifi {
+ status = "okay";
+};
diff --git a/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1_procpu.yaml b/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1_procpu.yaml
new file mode 100644
index 0000000..aee711c
--- /dev/null
+++ b/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1_procpu.yaml
@@ -0,0 +1,20 @@
+identifier: doit_esp32_devkit_v1/esp32/procpu
+name: DOIT ESP32-Devkit-V1 PROCPU
+vendor: others
+type: mcu
+arch: xtensa
+toolchain:
+ - zephyr
+supported:
+ - adc
+ - gpio
+ - i2c
+ - i2s
+ - watchdog
+ - uart
+ - nvs
+ - pwm
+ - spi
+ - counter
+ - entropy
+ - input
diff --git a/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1_procpu_defconfig b/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1_procpu_defconfig
new file mode 100644
index 0000000..6c85cb6
--- /dev/null
+++ b/boards/others/doit_esp32_devkit_v1/doit_esp32_devkit_v1_procpu_defconfig
@@ -0,0 +1,11 @@
+# Copyright (c) 2025 Siratul Islam
+# SPDX-License-Identifier: Apache-2.0
+
+CONFIG_CONSOLE=y
+CONFIG_SERIAL=y
+CONFIG_UART_CONSOLE=y
+
+CONFIG_GPIO=y
+
+# Enable support for ESP32 chip revision 1.1
+CONFIG_ESP32_USE_UNSUPPORTED_REVISION=y
diff --git a/boards/others/doit_esp32_devkit_v1/support/openocd.cfg b/boards/others/doit_esp32_devkit_v1/support/openocd.cfg
new file mode 100644
index 0000000..338e6e4
--- /dev/null
+++ b/boards/others/doit_esp32_devkit_v1/support/openocd.cfg
@@ -0,0 +1,5 @@
+set ESP_RTOS none
+set ESP32_ONLYCPU 1
+
+source [find interface/ftdi/esp32_devkitj_v1.cfg]
+source [find target/esp32.cfg]