boards: xtensa: add Olimex ESP32-EVB board definition
Add board definition for the Olimex ESP32-EVB development board. Signed-off-by: Henrik Brix Andersen <henrik@brixandersen.dk>
This commit is contained in:
parent
472d0de081
commit
1348418b34
8
boards/xtensa/olimex_esp32_evb/Kconfig.board
Normal file
8
boards/xtensa/olimex_esp32_evb/Kconfig.board
Normal file
|
@ -0,0 +1,8 @@
|
|||
# Olimex ESP32-EVB board configuration
|
||||
|
||||
# Copyright (c) 2022 Henrik Brix Andersen <henrik@brixandersen.dk>
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
config BOARD_OLIMEX_ESP32_EVB
|
||||
bool "Olimex ESP32-EVB"
|
||||
depends on SOC_ESP32
|
11
boards/xtensa/olimex_esp32_evb/Kconfig.defconfig
Normal file
11
boards/xtensa/olimex_esp32_evb/Kconfig.defconfig
Normal file
|
@ -0,0 +1,11 @@
|
|||
# Olimex ESP32-EVB board configuration
|
||||
|
||||
# Copyright (c) 2022 Henrik Brix Andersen <henrik@brixandersen.dk>
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
if BOARD_OLIMEX_ESP32_EVB
|
||||
|
||||
config BOARD
|
||||
default "olimex_esp32_evb"
|
||||
|
||||
endif # BOARD_OLIMEX_ESP32_EVB
|
9
boards/xtensa/olimex_esp32_evb/board.cmake
Normal file
9
boards/xtensa/olimex_esp32_evb/board.cmake
Normal file
|
@ -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)
|
BIN
boards/xtensa/olimex_esp32_evb/doc/ESP32-EVB.jpg
Normal file
BIN
boards/xtensa/olimex_esp32_evb/doc/ESP32-EVB.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 70 KiB |
133
boards/xtensa/olimex_esp32_evb/doc/index.rst
Normal file
133
boards/xtensa/olimex_esp32_evb/doc/index.rst
Normal file
|
@ -0,0 +1,133 @@
|
|||
.. _olimex_esp32_evb:
|
||||
|
||||
Olimex ESP32-EVB
|
||||
################
|
||||
|
||||
Overview
|
||||
********
|
||||
|
||||
The Olimex ESP32-EVB is an OSHW certified, open-source IoT board based on the
|
||||
Espressif ESP32-WROOM-32E/UE module. It has a wired 100Mbit/s Ethernet Interface,
|
||||
Bluetooth LE, WiFi, infrared remote control, and CAN connectivity. Two relays
|
||||
allows switching power appliances on and off.
|
||||
|
||||
The board can operate from a single LiPo backup battery as it has an internal
|
||||
LiPo battery charger. There is no step-up converter, so relays, CAN, and USB
|
||||
power does not work when running off battery.
|
||||
|
||||
.. figure:: ./ESP32-EVB.jpg
|
||||
:width: 540px
|
||||
:align: center
|
||||
:alt: ESP32-EVB
|
||||
|
||||
ESP32-EVB (Credit: Olimex)
|
||||
|
||||
Hardware
|
||||
********
|
||||
|
||||
- ESP32-WROOM-32E/UE module with 4MB flash.
|
||||
- On-board programmer, CH340T USB-to-UART
|
||||
- WiFi, Bluetooth LE connectivity.
|
||||
- 100Mbit/s Ethernet interface, Microchip LAN8710A PHY.
|
||||
- MicroSD card slot.
|
||||
- 2 x 10A/250VAC (15A/120VAC 15A/24VDC) relays with connectors and status LEDs.
|
||||
- CAN interface, Microchip MCP2562-E high-speed CAN transceiver.
|
||||
- IR receiver and transmitter, up to 5 meters distance.
|
||||
- BL4054B LiPo battery charger with status LEDs for stand-alone operation during
|
||||
power outages.
|
||||
- Power jack for external 5VDC power supply.
|
||||
- Univeral EXTension (UEXT) connector for connecting UEXT modules.
|
||||
- User push button.
|
||||
- 40 pin GPIO connector with all ESP32 pins.
|
||||
|
||||
For more information about the ESP32-EVB and the ESP32-WROOM-32E/UE module, see
|
||||
these reference documents:
|
||||
|
||||
- `ESP32-EVB Website`_
|
||||
- `ESP32-EVB Schematic`_
|
||||
- `ESP32-EVB GitHub Repository`_
|
||||
- `ESP32-WROOM32-E/UE Datasheet`_
|
||||
|
||||
Supported Features
|
||||
==================
|
||||
|
||||
The olimex_esp32_evb board configuration supports the following hardware
|
||||
features:
|
||||
|
||||
+-----------+------------+-------------------------------------+
|
||||
| Interface | Controller | Driver/Component |
|
||||
+===========+============+=====================================+
|
||||
| EFUSE | on-chip | hwinfo, device ID |
|
||||
+-----------+------------+-------------------------------------+
|
||||
| FLASH | module | External flash |
|
||||
+-----------+------------+-------------------------------------+
|
||||
| GPIO | on-chip | gpio |
|
||||
+-----------+------------+-------------------------------------+
|
||||
| I2C | on-chip | I2C |
|
||||
+-----------+------------+-------------------------------------+
|
||||
| INTERRUPT | on-chip | interrupt controller |
|
||||
+-----------+------------+-------------------------------------+
|
||||
| IO_MUX | on-chip | pinctrl |
|
||||
+-----------+------------+-------------------------------------+
|
||||
| SPI | on-chip | spi |
|
||||
+-----------+------------+-------------------------------------+
|
||||
| TIMG | on-chip | counter |
|
||||
+-----------+------------+-------------------------------------+
|
||||
| TRNG | on-chip | entropy |
|
||||
+-----------+------------+-------------------------------------+
|
||||
| UART | on-chip | uart |
|
||||
+-----------+------------+-------------------------------------+
|
||||
| WDT | on-chip | watchdog |
|
||||
+-----------+------------+-------------------------------------+
|
||||
| WiFi | on-chip | WiFi |
|
||||
+-----------+------------+-------------------------------------+
|
||||
|
||||
The default configuration can be found in the defconfig file:
|
||||
``boards/xtensa/olimex_esp32_evb/olimex_esp32_evb_defconfig``.
|
||||
|
||||
Other hardware features are not currently supported by the port.
|
||||
|
||||
Programming and Debugging
|
||||
*************************
|
||||
|
||||
Build and flash applications as usual (see :ref:`build_an_application` and
|
||||
:ref:`application_run` for more details).
|
||||
|
||||
Flashing
|
||||
========
|
||||
|
||||
Here is an example for the :ref:`hello_world` application.
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:zephyr-app: samples/hello_world
|
||||
:board: olimex_esp32_evb
|
||||
:goals: flash
|
||||
|
||||
Open the serial monitor using the following command:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
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! olimex_esp32_evb
|
||||
|
||||
Please see the generic :ref:`esp32` instructions for further tips on programming
|
||||
and debugging.
|
||||
|
||||
.. _ESP32-EVB Website:
|
||||
https://www.olimex.com/Products/IoT/ESP32/ESP32-EVB/open-source-hardware
|
||||
|
||||
.. _ESP32-EVB Schematic:
|
||||
https://github.com/OLIMEX/ESP32-EVB/raw/master/HARDWARE/REV-I/ESP32-EVB_Rev_I.pdf
|
||||
|
||||
.. _ESP32-EVB GitHub Repository:
|
||||
https://github.com/OLIMEX/ESP32-EVB
|
||||
|
||||
.. _ESP32-WROOM32-E/UE Datasheet:
|
||||
https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32e_esp32-wroom-32ue_datasheet_en.pdf
|
56
boards/xtensa/olimex_esp32_evb/olimex_esp32_evb-pinctrl.dtsi
Normal file
56
boards/xtensa/olimex_esp32_evb/olimex_esp32_evb-pinctrl.dtsi
Normal file
|
@ -0,0 +1,56 @@
|
|||
/*
|
||||
* Copyright (c) 2022 Henrik Brix Andersen <henrik@brixandersen.dk>
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <dt-bindings/pinctrl/esp-pinctrl-common.h>
|
||||
#include <dt-bindings/pinctrl/esp32-pinctrl.h>
|
||||
#include <dt-bindings/pinctrl/esp32-gpio-sigmap.h>
|
||||
|
||||
&pinctrl {
|
||||
uart0_tx_gpio1: uart0_tx_gpio1 {
|
||||
pinmux = <UART0_TX_GPIO1>;
|
||||
};
|
||||
|
||||
uart0_rx_gpio3: uart0_rx_gpio3 {
|
||||
pinmux = <UART0_RX_GPIO3>;
|
||||
};
|
||||
|
||||
uart1_tx_gpio4: uart1_tx_gpio4 {
|
||||
pinmux = <UART1_TX_GPIO4>;
|
||||
};
|
||||
|
||||
uart1_rx_gpio36: uart1_rx_gpio36 {
|
||||
pinmux = <UART1_RX_GPIO36>;
|
||||
};
|
||||
|
||||
i2c0_scl_gpio16: i2c0_scl_gpio16 {
|
||||
pinmux = <I2C0_SCL_GPIO16>;
|
||||
drive-open-drain;
|
||||
output-high;
|
||||
};
|
||||
|
||||
i2c0_sda_gpio13: i2c0_sda_gpio13 {
|
||||
pinmux = <I2C0_SDA_GPIO13>;
|
||||
drive-open-drain;
|
||||
output-high;
|
||||
};
|
||||
|
||||
spim2_miso_gpio15: spim2_miso_gpio15 {
|
||||
pinmux = <SPIM2_MISO_GPIO15>;
|
||||
};
|
||||
|
||||
spim2_mosi_gpio2: spim2_mosi_gpio2 {
|
||||
pinmux = <SPIM2_MOSI_GPIO2>;
|
||||
output-low;
|
||||
};
|
||||
|
||||
spim2_sclk_gpio14: spim2_sclk_gpio14 {
|
||||
pinmux = <SPIM2_SCLK_GPIO14>;
|
||||
};
|
||||
|
||||
spim2_csel_gpio17: spim2_csel_gpio17 {
|
||||
pinmux = <SPIM2_CSEL_GPIO17>;
|
||||
};
|
||||
};
|
163
boards/xtensa/olimex_esp32_evb/olimex_esp32_evb.dts
Normal file
163
boards/xtensa/olimex_esp32_evb/olimex_esp32_evb.dts
Normal file
|
@ -0,0 +1,163 @@
|
|||
/*
|
||||
* Copyright (c) 2022 Henrik Brix Andersen <henrik@brixandersen.dk>
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include <espressif/esp32.dtsi>
|
||||
#include "olimex_esp32_evb-pinctrl.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Olimex ESP32-EVB";
|
||||
compatible = "olimex,esp32-evb", "espressif,esp32-wroom-32e", "espressif,esp32";
|
||||
|
||||
chosen {
|
||||
zephyr,console = &uart0;
|
||||
zephyr,shell-uart = &uart0;
|
||||
zephyr,sram = &sram0;
|
||||
zephyr,flash = &flash0;
|
||||
};
|
||||
|
||||
aliases {
|
||||
sw0 = &button1;
|
||||
};
|
||||
|
||||
gpio_keys {
|
||||
compatible = "gpio-keys";
|
||||
button1: button1 {
|
||||
gpios = <&gpio 34 GPIO_ACTIVE_LOW>;
|
||||
label = "BUT1";
|
||||
};
|
||||
};
|
||||
|
||||
relay1: relay1 {
|
||||
compatible = "regulator-fixed";
|
||||
enable-gpios = <&gpio 32 GPIO_ACTIVE_HIGH>;
|
||||
regulator-name = "REL1";
|
||||
label = "REL1";
|
||||
startup-delay-us = <10000>;
|
||||
off-on-delay-us = <5000>;
|
||||
};
|
||||
|
||||
relay2: relay2 {
|
||||
compatible = "regulator-fixed";
|
||||
enable-gpios = <&gpio 33 GPIO_ACTIVE_HIGH>;
|
||||
regulator-name = "REL2";
|
||||
label = "REL2";
|
||||
startup-delay-us = <10000>;
|
||||
off-on-delay-us = <5000>;
|
||||
};
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
clock-frequency = <ESP32_CLK_CPU_240M>;
|
||||
};
|
||||
|
||||
&cpu1 {
|
||||
clock-frequency = <ESP32_CLK_CPU_240M>;
|
||||
};
|
||||
|
||||
uext_serial: &uart1 {};
|
||||
uext_i2c: &i2c0 {};
|
||||
uext_spi: &spi2 {};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
current-speed = <115200>;
|
||||
pinctrl-0 = <&uart0_tx_gpio1 &uart0_rx_gpio3>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
status = "okay";
|
||||
current-speed = <115200>;
|
||||
pinctrl-0 = <&uart1_tx_gpio4 &uart1_rx_gpio36>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
clock-frequency = <I2C_BITRATE_STANDARD>;
|
||||
sda-pin = <16>;
|
||||
scl-pin = <13>;
|
||||
pinctrl-0 = <&i2c0_scl_gpio16 &i2c0_sda_gpio13>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&spi2 {
|
||||
status = "okay";
|
||||
pinctrl-0 = <&spim2_miso_gpio15 &spim2_mosi_gpio2
|
||||
&spim2_sclk_gpio14 &spim2_csel_gpio17>;
|
||||
pinctrl-names = "default";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
&gpio0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&timer0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&timer1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&timer2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&timer3 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&trng0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&flash0 {
|
||||
status = "okay";
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
/* Reserve 60kB for the bootloader */
|
||||
boot_partition: partition@1000 {
|
||||
label = "mcuboot";
|
||||
reg = <0x00001000 DT_SIZE_K(60)>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
/* Reserve 1024kB for the application in slot 0 */
|
||||
slot0_partition: partition@10000 {
|
||||
label = "image-0";
|
||||
reg = <0x00010000 DT_SIZE_K(1024)>;
|
||||
};
|
||||
|
||||
/* Reserve 1024kB for the application in slot 1 */
|
||||
slot1_partition: partition@110000 {
|
||||
label = "image-1";
|
||||
reg = <0x00110000 DT_SIZE_K(1024)>;
|
||||
};
|
||||
|
||||
/* Reserve 256kB for the scratch partition */
|
||||
scratch_partition: partition@210000 {
|
||||
label = "image-scratch";
|
||||
reg = <0x00210000 DT_SIZE_K(256)>;
|
||||
};
|
||||
|
||||
storage_partition: partition@250000 {
|
||||
label = "storage";
|
||||
reg = <0x00250000 DT_SIZE_K(24)>;
|
||||
};
|
||||
};
|
||||
};
|
15
boards/xtensa/olimex_esp32_evb/olimex_esp32_evb.yaml
Normal file
15
boards/xtensa/olimex_esp32_evb/olimex_esp32_evb.yaml
Normal file
|
@ -0,0 +1,15 @@
|
|||
identifier: olimex_esp32_evb
|
||||
name: Olimex ESP32-EVB
|
||||
type: mcu
|
||||
arch: xtensa
|
||||
toolchain:
|
||||
- espressif
|
||||
supported:
|
||||
- counter
|
||||
- gpio
|
||||
- hwinfo
|
||||
- i2c
|
||||
- netif:wifi
|
||||
- spi
|
||||
- uart
|
||||
- watchdog
|
24
boards/xtensa/olimex_esp32_evb/olimex_esp32_evb_defconfig
Normal file
24
boards/xtensa/olimex_esp32_evb/olimex_esp32_evb_defconfig
Normal file
|
@ -0,0 +1,24 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
CONFIG_XTENSA_RESET_VECTOR=n
|
||||
|
||||
CONFIG_BOARD_OLIMEX_ESP32_EVB=y
|
||||
CONFIG_SOC_ESP32=y
|
||||
|
||||
CONFIG_MAIN_STACK_SIZE=2048
|
||||
|
||||
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=240000000
|
||||
|
||||
CONFIG_CONSOLE=y
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_UART_CONSOLE=y
|
||||
|
||||
CONFIG_XTENSA_USE_CORE_CRT1=n
|
||||
|
||||
CONFIG_GPIO=y
|
||||
CONFIG_GPIO_ESP32=y
|
||||
|
||||
CONFIG_GEN_ISR_TABLES=y
|
||||
CONFIG_GEN_IRQ_VECTOR_TABLE=n
|
||||
|
||||
CONFIG_CLOCK_CONTROL=y
|
5
boards/xtensa/olimex_esp32_evb/support/openocd.cfg
Normal file
5
boards/xtensa/olimex_esp32_evb/support/openocd.cfg
Normal file
|
@ -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]
|
Loading…
Reference in a new issue