From 4bcc18497a7ffba0bc48e90424bd9f361b661824 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Cab=C3=A9?= Date: Wed, 25 Oct 2023 18:39:59 +0200 Subject: [PATCH] boards: esp32: Add support for M5Stack AtomS3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This introduces support for the ESP32S3 based M5Stack AtomS3. Signed-off-by: Benjamin Cabé --- boards/xtensa/m5stack_atoms3/Kconfig.board | 12 ++ .../xtensa/m5stack_atoms3/Kconfig.defconfig | 29 +++ boards/xtensa/m5stack_atoms3/board.cmake | 9 + .../doc/img/m5stack_atoms3.webp | Bin 0 -> 20380 bytes boards/xtensa/m5stack_atoms3/doc/index.rst | 136 +++++++++++++ .../m5stack_atoms3/grove_connectors.dtsi | 17 ++ .../m5stack_atoms3-pinctrl.dtsi | 54 +++++ .../xtensa/m5stack_atoms3/m5stack_atoms3.dts | 186 ++++++++++++++++++ .../xtensa/m5stack_atoms3/m5stack_atoms3.yaml | 21 ++ .../m5stack_atoms3/m5stack_atoms3_defconfig | 18 ++ .../xtensa/m5stack_atoms3/support/openocd.cfg | 7 + 11 files changed, 489 insertions(+) create mode 100644 boards/xtensa/m5stack_atoms3/Kconfig.board create mode 100644 boards/xtensa/m5stack_atoms3/Kconfig.defconfig create mode 100644 boards/xtensa/m5stack_atoms3/board.cmake create mode 100644 boards/xtensa/m5stack_atoms3/doc/img/m5stack_atoms3.webp create mode 100644 boards/xtensa/m5stack_atoms3/doc/index.rst create mode 100644 boards/xtensa/m5stack_atoms3/grove_connectors.dtsi create mode 100644 boards/xtensa/m5stack_atoms3/m5stack_atoms3-pinctrl.dtsi create mode 100644 boards/xtensa/m5stack_atoms3/m5stack_atoms3.dts create mode 100644 boards/xtensa/m5stack_atoms3/m5stack_atoms3.yaml create mode 100644 boards/xtensa/m5stack_atoms3/m5stack_atoms3_defconfig create mode 100644 boards/xtensa/m5stack_atoms3/support/openocd.cfg diff --git a/boards/xtensa/m5stack_atoms3/Kconfig.board b/boards/xtensa/m5stack_atoms3/Kconfig.board new file mode 100644 index 000000000000000..726e31773e223fa --- /dev/null +++ b/boards/xtensa/m5stack_atoms3/Kconfig.board @@ -0,0 +1,12 @@ +# M5Stack AtomS3 board configuration + +# Copyright (c) 2023 Benjamin Cabé +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_M5STACK_ATOMS3 + bool "M5Stack AtomS3 Development Board" + depends on SOC_SERIES_ESP32S3 + +choice SOC_PART_NUMBER + default SOC_ESP32S3_FN8 +endchoice diff --git a/boards/xtensa/m5stack_atoms3/Kconfig.defconfig b/boards/xtensa/m5stack_atoms3/Kconfig.defconfig new file mode 100644 index 000000000000000..b9bd2641458f886 --- /dev/null +++ b/boards/xtensa/m5stack_atoms3/Kconfig.defconfig @@ -0,0 +1,29 @@ +# M5Stack AtomS3 board configuration +# Copyright (c) 2023 Benjamin Cabé +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_M5STACK_ATOMS3 + +config BOARD + default "m5stack_atoms3" + depends on BOARD_M5STACK_ATOMS3 + +config ENTROPY_GENERATOR + default y + +config HEAP_MEM_POOL_SIZE + default 98304 if WIFI + default 65536 if BT + default 4096 + +config KERNEL_MEM_POOL + default y + +choice BT_HCI_BUS_TYPE + default BT_ESP32 if BT +endchoice + +config LV_COLOR_16_SWAP + default y if LVGL + +endif # BOARD_M5STACK_ATOMS3 diff --git a/boards/xtensa/m5stack_atoms3/board.cmake b/boards/xtensa/m5stack_atoms3/board.cmake new file mode 100644 index 000000000000000..2f04d1fe8861ea6 --- /dev/null +++ b/boards/xtensa/m5stack_atoms3/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/xtensa/m5stack_atoms3/doc/img/m5stack_atoms3.webp b/boards/xtensa/m5stack_atoms3/doc/img/m5stack_atoms3.webp new file mode 100644 index 0000000000000000000000000000000000000000..b4b964069b4159da55ee04a2a0c113a2bb24be9d GIT binary patch literal 20380 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 Tk0jSdS{ni>0fYd=_3!-;A|r<= literal 0 HcmV?d00001 diff --git a/boards/xtensa/m5stack_atoms3/doc/index.rst b/boards/xtensa/m5stack_atoms3/doc/index.rst new file mode 100644 index 000000000000000..2dd229be436455c --- /dev/null +++ b/boards/xtensa/m5stack_atoms3/doc/index.rst @@ -0,0 +1,136 @@ +.. _m5stack_atoms3: + +M5Stack AtomS3 +############## + +Overview +******** + +M5Stack AtomS3 is an ESP32-based development board from M5Stack. + +It features the following integrated components: + +- ESP32-S3FN8 chip (240MHz dual core, Wi-Fi/BLE 5.0) +- 512KB of SRAM +- 384KB of ROM +- 8MB of Flash +- LCD IPS TFT 0.85", 128x128 px screen (ST7789 compatible) +- 6-axis IMU MPU6886 +- Infrared emitter + + +.. figure:: img/m5stack_atoms3.webp + :align: center + :alt: M5Stack AtomS3 + + M5Stack AtomS3 + + +Supported Features +================== + +The Zephyr m5stack_atoms3 board configuration supports the following hardware features: + ++-----------+------------+-------------------------------------+ +| Interface | Controller | Driver/Component | ++===========+============+=====================================+ +| NVIC | on-chip | nested vector interrupt controller | ++-----------+------------+-------------------------------------+ +| UART | on-chip | serial port-polling; | +| | | serial port-interrupt | ++-----------+------------+-------------------------------------+ +| PINMUX | on-chip | pinmux | ++-----------+------------+-------------------------------------+ +| GPIO | on-chip | gpio | ++-----------+------------+-------------------------------------+ +| I2C | on-chip | i2c | ++-----------+------------+-------------------------------------+ +| SPI | on-chip | spi | ++-----------+------------+-------------------------------------+ +| CLOCK | on-chip | reset and clock control | ++-----------+------------+-------------------------------------+ +| COUNTER | on-chip | rtc | ++-----------+------------+-------------------------------------+ +| WATCHDOG | on-chip | independent watchdog | ++-----------+------------+-------------------------------------+ +| PWM | on-chip | pwm | ++-----------+------------+-------------------------------------+ +| ADC | on-chip | adc | ++-----------+------------+-------------------------------------+ +| DAC | on-chip | dac | ++-----------+------------+-------------------------------------+ +| die-temp | on-chip | die temperature sensor | ++-----------+------------+-------------------------------------+ + + +Start Application Development +***************************** + +Before powering up your M5Stack AtomS3, please make sure that the board is in good +condition with no obvious signs of damage. + +System requirements +=================== + +Prerequisites +------------- + +Espressif HAL requires WiFi and Bluetooth binary blobs in order work. Run the command +below to retrieve those files. + +.. code-block:: shell + + west blobs fetch hal_espressif + +.. note:: + + It is recommended running the command above after :file:`west update`. + +Building & Flashing +------------------- + +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: m5stack_atoms3 + :goals: build + +The usual ``flash`` target will work with the ``m5stack_atoms3`` board +configuration. Here is an example for the :ref:`hello_world` +application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: m5stack_atoms3 + :goals: flash + +The baud rate of 921600bps is set by default. If experiencing issues when flashing, +try using different values by using ``--esp-baud-rate `` option during +``west flash`` (e.g. ``west flash --esp-baud-rate 115200``). + +You can also 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! m5stack_atoms3 + +Debugging +--------- + +M5Stack AtomS3 debugging is not supported due to pinout limitations. + +Related Documents +***************** + +- `M5Stack AtomS3 schematic `_ +- `ESP32S3 Datasheet `_ diff --git a/boards/xtensa/m5stack_atoms3/grove_connectors.dtsi b/boards/xtensa/m5stack_atoms3/grove_connectors.dtsi new file mode 100644 index 000000000000000..798c40cf2961daa --- /dev/null +++ b/boards/xtensa/m5stack_atoms3/grove_connectors.dtsi @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2023 Benjamin Cabé + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + grove_header: grove_header { + compatible = "grove-header"; + #gpio-cells = <2>; + gpio-map-mask = <0xffffffff 0xffffffc0>; + gpio-map-pass-thru = <0 0x3f>; + gpio-map = <0 0 &gpio0 1 0>, + <1 0 &gpio0 2 0>; + }; +}; + +grove_i2c1: &i2c1 {}; diff --git a/boards/xtensa/m5stack_atoms3/m5stack_atoms3-pinctrl.dtsi b/boards/xtensa/m5stack_atoms3/m5stack_atoms3-pinctrl.dtsi new file mode 100644 index 000000000000000..0f59b0bc6a82520 --- /dev/null +++ b/boards/xtensa/m5stack_atoms3/m5stack_atoms3-pinctrl.dtsi @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2023 Benjamin Cabé + * + * SPDX-License-Identifier: Apache-2.0 + */ + + #include + #include + #include + +&pinctrl { + uart0_default: uart0_default { + group1 { + pinmux = ; + output-high; + }; + group2 { + pinmux = ; + bias-pull-up; + }; + }; + + i2c0_default: i2c0_default { + group1 { + pinmux = , + ; + bias-pull-up; + drive-open-drain; + output-high; + }; + }; + + i2c1_default: i2c1_default { + group1 { + pinmux = , + ; + bias-pull-up; + drive-open-drain; + output-high; + }; + }; + + spim2_default: spim2_default { + group1 { + pinmux = , + ; + }; + group2 { + pinmux = ; + output-low; + }; + + }; +}; diff --git a/boards/xtensa/m5stack_atoms3/m5stack_atoms3.dts b/boards/xtensa/m5stack_atoms3/m5stack_atoms3.dts new file mode 100644 index 000000000000000..6d58b746bc8d8ed --- /dev/null +++ b/boards/xtensa/m5stack_atoms3/m5stack_atoms3.dts @@ -0,0 +1,186 @@ +/* + * Copyright (c) 2023 Benjamin Cabé + * + * SPDX-License-Identifier: Apache-2.0 + */ +/dts-v1/; + +#include +#include "m5stack_atoms3-pinctrl.dtsi" +#include "grove_connectors.dtsi" +#include + +/ { + model = "esp32"; + compatible = "espressif,esp32"; + + chosen { + zephyr,sram = &sram0; + zephyr,console = &usb_serial; + zephyr,shell-uart = &usb_serial; + zephyr,flash = &flash0; + zephyr,display = &st7789v; + }; + + aliases { + sw0 = &user_button_0; + watchdog0 = &wdt0; + accel0 = &mpu6886; + }; + + gpio_keys { + compatible = "gpio-keys"; + + /* This is the button that's underneath the LCD display */ + user_button_0: button_0 { + label = "User button 0"; + gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; // G42 + zephyr,code = ; + }; + }; + + /* Regulators */ + lcd_backlight_en { + compatible = "regulator-fixed"; + regulator-name = "lcd_backlight_enable"; + enable-gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>; + regulator-boot-on; + }; + +}; + +&cpu0 { + clock-frequency = ; +}; + +&cpu1 { + clock-frequency = ; +}; + +&usb_serial { + status = "okay"; +}; + +&uart0 { + status = "okay"; + current-speed = <115200>; + pinctrl-0 = <&uart0_default>; + pinctrl-names = "default"; +}; + +&i2c0 { + status = "okay"; + clock-frequency = ; + pinctrl-0 = <&i2c0_default>; + pinctrl-names = "default"; + + mpu6886: mpu6886@68 { + compatible = "invensense,mpu6050"; + reg = <0x68>; + status = "okay"; + }; +}; + +&i2c1 { + status = "okay"; + clock-frequency = ; + pinctrl-0 = <&i2c1_default>; + pinctrl-names = "default"; +}; + +&trng0 { + status = "okay"; +}; + +&spi2 { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + pinctrl-0 = <&spim2_default>; + pinctrl-names = "default"; + + st7789v: st7789v@0 { + compatible = "sitronix,st7789v"; + reg = <0>; + spi-max-frequency = <27000000>; + cmd-data-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>; /* G33 */ + reset-gpios = <&gpio1 2 GPIO_ACTIVE_LOW>; /* G34 */ + + width = <128>; + height = <128>; + x-offset = <2>; + y-offset = <1>; + + vcom = <0x28>; + gctrl = <0x35>; + vrhs = <0x10>; + vdvs = <0x20>; + mdac = <0x00>; + gamma = <0x01>; + colmod = <0x55>; + lcm = <0x0c>; + porch-param = [0c 0c 00 33 33]; + cmd2en-param = [5a 69 02 00]; + pwctrl1-param = [a4 a1]; + pvgam-param = [d0 00 02 07 0a 28 32 44 42 06 0e 12 14 17]; + nvgam-param = [d0 00 02 07 0a 28 31 54 47 0e 1c 17 1b 1e]; + ram-param = [00 E0]; + rgb-param = [40 02 14]; + }; + +}; + +&gpio0 { + status = "okay"; +}; + +&gpio1 { + status = "okay"; +}; + +&wdt0 { + status = "okay"; +}; + +&timer0 { + status = "okay"; +}; + +&timer1 { + status = "okay"; +}; + +&flash0 { + status = "okay"; + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + boot_partition: partition@0 { + label = "mcuboot"; + reg = <0x00000000 0x0000F000>; + read-only; + }; + + slot0_partition: partition@10000 { + label = "image-0"; + reg = <0x00010000 0x00100000>; + }; + + slot1_partition: partition@110000 { + label = "image-1"; + reg = <0x00110000 0x00100000>; + }; + + scratch_partition: partition@210000 { + label = "image-scratch"; + reg = <0x00210000 0x00040000>; + }; + + storage_partition: partition@250000 { + label = "storage"; + reg = <0x00250000 0x00006000>; + }; + }; +}; diff --git a/boards/xtensa/m5stack_atoms3/m5stack_atoms3.yaml b/boards/xtensa/m5stack_atoms3/m5stack_atoms3.yaml new file mode 100644 index 000000000000000..7e050377daef8c9 --- /dev/null +++ b/boards/xtensa/m5stack_atoms3/m5stack_atoms3.yaml @@ -0,0 +1,21 @@ +identifier: m5stack_atoms3 +name: M5Stack AtomS3 +type: mcu +arch: xtensa +toolchain: + - zephyr +supported: + - gpio + - i2c + - spi + - watchdog + - regulator + - uart + - pinmux + - nvs + - display +testing: + ignore_tags: + - net + - bluetooth +vendor: espressif diff --git a/boards/xtensa/m5stack_atoms3/m5stack_atoms3_defconfig b/boards/xtensa/m5stack_atoms3/m5stack_atoms3_defconfig new file mode 100644 index 000000000000000..dbbfee6f2996d55 --- /dev/null +++ b/boards/xtensa/m5stack_atoms3/m5stack_atoms3_defconfig @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_BOARD_M5STACK_ATOMS3=y +CONFIG_SOC_SERIES_ESP32S3=y + +CONFIG_MAIN_STACK_SIZE=2048 + +CONFIG_ESP_HEAP_MEM_POOL_REGION_1_SIZE=0 + +CONFIG_GPIO=y +CONFIG_REGULATOR=y # for LCD backlight + +CONFIG_CONSOLE=y +CONFIG_SERIAL=y +CONFIG_UART_CONSOLE=y + +# for debugging +CONFIG_SHELL=y diff --git a/boards/xtensa/m5stack_atoms3/support/openocd.cfg b/boards/xtensa/m5stack_atoms3/support/openocd.cfg new file mode 100644 index 000000000000000..2f740b4a36ab1f4 --- /dev/null +++ b/boards/xtensa/m5stack_atoms3/support/openocd.cfg @@ -0,0 +1,7 @@ +set ESP_RTOS none +set ESP32_ONLYCPU 1 + +# Source the JTAG interface configuration file +source [find interface/esp_usb_jtag.cfg] +# Source the ESP32-S3 configuration file +source [find target/esp32s3.cfg]