From 035251d7da65d4758de174d82ae940f4e88e08af Mon Sep 17 00:00:00 2001 From: Matthias Hauser Date: Tue, 19 Nov 2024 09:56:40 +0100 Subject: [PATCH] boards: we: Add board orthosie1ev Added new board file of Wurth Electronic board Orthosie-I Signed-off-by: Matthias Hauser --- boards/we/orthosie1ev/Kconfig | 6 + boards/we/orthosie1ev/Kconfig.sysbuild | 10 + boards/we/orthosie1ev/Kconfig.we_orthosie1ev | 5 + boards/we/orthosie1ev/board.cmake | 9 + boards/we/orthosie1ev/board.yml | 6 + .../orthosie1ev/doc/img/we_orthosie1ev.webp | Bin 0 -> 37808 bytes boards/we/orthosie1ev/doc/index.rst | 251 ++++++++++++++++++ boards/we/orthosie1ev/support/openocd.cfg | 11 + .../orthosie1ev/we_orthosie1ev-pinctrl.dtsi | 66 +++++ boards/we/orthosie1ev/we_orthosie1ev.dts | 105 ++++++++ boards/we/orthosie1ev/we_orthosie1ev.yaml | 23 ++ .../we/orthosie1ev/we_orthosie1ev_defconfig | 8 + 12 files changed, 500 insertions(+) create mode 100644 boards/we/orthosie1ev/Kconfig create mode 100644 boards/we/orthosie1ev/Kconfig.sysbuild create mode 100644 boards/we/orthosie1ev/Kconfig.we_orthosie1ev create mode 100644 boards/we/orthosie1ev/board.cmake create mode 100644 boards/we/orthosie1ev/board.yml create mode 100644 boards/we/orthosie1ev/doc/img/we_orthosie1ev.webp create mode 100644 boards/we/orthosie1ev/doc/index.rst create mode 100644 boards/we/orthosie1ev/support/openocd.cfg create mode 100644 boards/we/orthosie1ev/we_orthosie1ev-pinctrl.dtsi create mode 100644 boards/we/orthosie1ev/we_orthosie1ev.dts create mode 100644 boards/we/orthosie1ev/we_orthosie1ev.yaml create mode 100644 boards/we/orthosie1ev/we_orthosie1ev_defconfig diff --git a/boards/we/orthosie1ev/Kconfig b/boards/we/orthosie1ev/Kconfig new file mode 100644 index 00000000000..acfac103f8c --- /dev/null +++ b/boards/we/orthosie1ev/Kconfig @@ -0,0 +1,6 @@ +# Copyright (c) Würth Elektronik GmbH & Co. KG +# SPDX-License-Identifier: Apache-2.0 + +config HEAP_MEM_POOL_ADD_SIZE_BOARD + int + default 4096 diff --git a/boards/we/orthosie1ev/Kconfig.sysbuild b/boards/we/orthosie1ev/Kconfig.sysbuild new file mode 100644 index 00000000000..7f06e9b17fe --- /dev/null +++ b/boards/we/orthosie1ev/Kconfig.sysbuild @@ -0,0 +1,10 @@ +# Copyright (c) 2024 Würth Elektronik GmbH & Co. KG +# 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/we/orthosie1ev/Kconfig.we_orthosie1ev b/boards/we/orthosie1ev/Kconfig.we_orthosie1ev new file mode 100644 index 00000000000..ec731e24f3f --- /dev/null +++ b/boards/we/orthosie1ev/Kconfig.we_orthosie1ev @@ -0,0 +1,5 @@ +# Copyright (c) 2024 Würth Elektronik GmbH & Co. KG +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_WE_ORTHOSIE1EV + select SOC_ESP32C3 diff --git a/boards/we/orthosie1ev/board.cmake b/boards/we/orthosie1ev/board.cmake new file mode 100644 index 00000000000..2f04d1fe886 --- /dev/null +++ b/boards/we/orthosie1ev/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/we/orthosie1ev/board.yml b/boards/we/orthosie1ev/board.yml new file mode 100644 index 00000000000..28762af893d --- /dev/null +++ b/boards/we/orthosie1ev/board.yml @@ -0,0 +1,6 @@ +board: + name: we_orthosie1ev + full_name: Orthosie-I-EV + vendor: we + socs: + - name: esp32c3 diff --git a/boards/we/orthosie1ev/doc/img/we_orthosie1ev.webp b/boards/we/orthosie1ev/doc/img/we_orthosie1ev.webp new file mode 100644 index 0000000000000000000000000000000000000000..aff718ad805e47064734a2ee69001fe15ad99c96 GIT binary patch literal 37808 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%0D>CuYmw5P-#aoyb&+rP^QM1~P zH03B%8z8fX;!o zCm8{B(3@j{a@-C2$K#9*W9O7pVRocfzC7AyBBy0}QOMv=6SNnhgV z^7vprd!ZV&vdyJGbnn_;aDpsc0FQ{!_Iy=?ylc*9$iihP&)DR_9Czdgdr^E7D*GDo zQS&qr8Z`c_|4F z+xrw%s|<5=U%os`a1JSt1)Y#*tB*hoxK(5H+Sm&{<*?-prK@gNUpmL0I)E_aMdkmTeyk!T!L~Si1obM%4j~^^9lc;>WvQVo5K!%o}a1TObWGD>) z6$hari1d3}!JG6UJ=Y_+l35m3%RyH_Hk4NSRZVnlnhbGlGHie1;K&&l?6TJSVWE^- z3H>Rn2PI6yk;L=~pwCwbwRxV!nHtXpiqr%dc?xPu#CkzdJSO0d*fjRaxL2Q`SFm+A z#~@8qzM#>cgodXMSDO-~bY`OW&o5)4jJ`#JDLdk`@#Wh&!%#|frRdX^k}6ZtM?}h7 zG1WI7*bcVY6qXh}ar?-Y{DDPN7AN|j8o`1?0j+*x0IUmuCNxn+d23@rftu%haI0Bo zdRZTKQ>~5M zM9<m0h`x+l8)-5<1?X@=wy_oA4cKG?l4Sb-Wt!ifnAd`*A7@uT^WvfQa6Wsk&8? z6$`XQq1}zCT0)4k9nm)>Z~=Xxz>AgO`MIOarDE4zW_65fytTJl*#U?$S`*-!r<{If zTdS2YAn-(@e%kWUiw3}f^Y>%70QL)C!75n zd3MVY;pEf$Sm!E}L|n zs@K-KR)mY9kO_hvgg7^K*@ICEE(%_z?>e=g=IkV**%08YmRKB(#dT!Y~>FJeCx z)WKDCgC+{>WmVS{M$<(2eyosD@r+`u1c#|p&=D8|_rJ#M?>#Yx$}%##f-|WE?Xel| zDSbgx$(XvariYBp>^?%zRkTyEi{cjw2uk;hm+n4iWGFHJsjny>OrCJ#Fe6vxX|21* zDm-DoM5NGVEU!y9>jJ00)CpBk?jqkMxNlTxG-W4|_mN9{?=0jSVPP3(-Rj?DMlhGHTZVZdhw)i3{ zfEwq!m^xwf3alsDTk9?hIE}Y=1PXc|nk)=18d_m{u6@4;h+e^+w zJf^t?5axoh+|o+bbEMBhknZiipy~$_+hL?L=$mbjC?^?;I zL(HA`Da9stfV#(97}uz@R@J-F-L*Ny<8WT_)*gzA{~RQUrAs9^=rifW*BM!Yh^o4! zkvlP(?>F8eSt{e$mIw+@XWY_6;L$F~KaHc(Ff^bh;*_dICzf?N(at10;+tTE`xVJM z<1z+}$KX0loU3Pe9w*3beDDr!EO>&yGw+u2>EGI<`2*md#U34z-Pu`K8Tov+K)`ZT zThBc!Cm5MQ$G>J{lfaIme#@+oLZ{9(NPl*7X#mFnQ9A}hTEZMlgZU@HOI2YWt~0^a z_tqEZvR$Hg==8{pM+=m1>C=0Mn6z4YY!qIk$V&8iaYHuQFs z!yP>sN1&ZGzZevysB`s??FX&%GLj0jYF~jAcDnTySpCq1D0_KXoQ)DVF z&$LlEBrwGq>~tp0$H|yb#wq%v-#(~W{^ZS#phCRr03gh0PAs?Gfxq|4ew`=me{GHD zgOd$;kPG{QY|G9Kj)&gMAPboZmj*OR5`Vodx6arFKn!=5t8DPhLXcHwVBBJk+}X5P zi2SYP?>UjPyDzkbruo6OOGD;I`ap3C1aW!>00FZ$7z6|@70N0X4W@@GuTK1CloLK! YH9|U;yeajBFaflg+3}b%0L`!f0K;rTO#lD@ literal 0 HcmV?d00001 diff --git a/boards/we/orthosie1ev/doc/index.rst b/boards/we/orthosie1ev/doc/index.rst new file mode 100644 index 00000000000..f6fdb4d5546 --- /dev/null +++ b/boards/we/orthosie1ev/doc/index.rst @@ -0,0 +1,251 @@ +.. zephyr:board:: we_orthosie1ev + +Overview +******** + +Orthosie-I-EV is an entry-level development board based on Orthosie-I, +a module named for its small size. This board integrates complete Wi-Fi and Bluetooth® Low Energy functions. +For more information, check `Orthosie-I Website`_. + +Hardware +******** + +ESP32-C3 is a single-core Wi-Fi and Bluetooth 5 (LE) microcontroller SoC, +based on the open-source RISC-V architecture. It strikes the right balance of power, +I/O capabilities and security, thus offering the optimal cost-effective +solution for connected devices. +The availability of Wi-Fi and Bluetooth 5 (LE) connectivity not only makes the device configuration easy, +but it also facilitates a variety of use-cases based on dual connectivity. + +The features include the following: + +- 32-bit core RISC-V microcontroller with a maximum clock speed of 160 MHz +- 400 KB of internal RAM +- 802.11b/g/n/e/i +- A Bluetooth LE subsystem that supports features of Bluetooth 5 and Bluetooth Mesh +- Various peripherals: + + - 12-bit ADC with up to 6 channels + - TWAI compatible with CAN bus 2.0 + - Temperature sensor + - 3x SPI + - 1x I2S + - 1x I2C + - 2x UART + - LED PWM with up to 6 channels + +- Cryptographic hardware acceleration (RNG, ECC, RSA, SHA-2, AES) + +For more information, check the datasheet at `ESP32-C3 Datasheet`_ or the technical reference +manual at `ESP32-C3 Technical Reference Manual`_. + +Supported Features +================== + +Currently Zephyr's ``we_orthosie1ev`` board target supports the following 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 | ++------------+------------+-------------------------------------+ +| Timers | on-chip | counter | ++------------+------------+-------------------------------------+ +| Watchdog | on-chip | watchdog | ++------------+------------+-------------------------------------+ +| TRNG | on-chip | entropy | ++------------+------------+-------------------------------------+ +| LEDC | on-chip | pwm | ++------------+------------+-------------------------------------+ +| SPI DMA | on-chip | spi | ++------------+------------+-------------------------------------+ +| TWAI | on-chip | can | ++------------+------------+-------------------------------------+ +| USB-CDC | on-chip | serial | ++------------+------------+-------------------------------------+ +| ADC | on-chip | adc | ++------------+------------+-------------------------------------+ +| Wi-Fi | on-chip | | ++------------+------------+-------------------------------------+ +| Bluetooth | on-chip | | ++------------+------------+-------------------------------------+ + +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 ESP32 SoC. + +To build the sample application using sysbuild use the command: + +.. zephyr-app-commands:: + :tool: west + :zephyr-app: samples/hello_world + :board: orthosie1ev + :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: orthosie1ev + :goals: build + +The usual ``flash`` target will work with the ``orthosie1ev`` board +configuration. Here is an example for the :zephyr:code-sample:`hello_world` +application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: orthosie1ev + :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! orthosie1ev + +Debugging +********* + +As with much custom hardware, the ESP32-C3 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: orthosie1ev + :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: orthosie1ev + :goals: debug + +References +********** + +.. target-notes:: + +.. _`Orthosie-I Website`: https://www.we-online.com/en/components/products/ORTHOSIE-I +.. _`ESP32-C3 Datasheet`: https://www.espressif.com/sites/default/files/documentation/esp32-c3_datasheet_en.pdf +.. _`ESP32-C3 Technical Reference Manual`: https://espressif.com/sites/default/files/documentation/esp32-c3_technical_reference_manual_en.pdf +.. _`OpenOCD ESP32`: https://github.com/espressif/openocd-esp32/releases diff --git a/boards/we/orthosie1ev/support/openocd.cfg b/boards/we/orthosie1ev/support/openocd.cfg new file mode 100644 index 00000000000..92a792fecb8 --- /dev/null +++ b/boards/we/orthosie1ev/support/openocd.cfg @@ -0,0 +1,11 @@ +set ESP_RTOS none + +# ESP32C3 has built-in JTAG interface over USB port in pins GPIO18/GPIO19 (D-/D+). +# Uncomment the line below to enable USB debugging. +# source [find interface/esp_usb_jtag.cfg] + +# Otherwise, use external JTAG programmer as ESP-Prog +source [find interface/ftdi/esp32_devkitj_v1.cfg] + +source [find target/esp32c3.cfg] +adapter speed 5000 diff --git a/boards/we/orthosie1ev/we_orthosie1ev-pinctrl.dtsi b/boards/we/orthosie1ev/we_orthosie1ev-pinctrl.dtsi new file mode 100644 index 00000000000..881f1b3808d --- /dev/null +++ b/boards/we/orthosie1ev/we_orthosie1ev-pinctrl.dtsi @@ -0,0 +1,66 @@ +/* + * Copyright (c) Würth Elektronik GmbH & Co. KG + * + * 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; + }; + }; + + i2c0_default: i2c0_default { + group1 { + pinmux = , + ; + bias-pull-up; + drive-open-drain; + output-high; + }; + }; + + i2s_default: i2s_default { + group1 { + pinmux = , + , + , + ; + output-enable; + }; + group2 { + pinmux = ; + input-enable; + }; + }; + + twai_default: twai_default { + group1 { + pinmux = , + ; + }; + }; +}; diff --git a/boards/we/orthosie1ev/we_orthosie1ev.dts b/boards/we/orthosie1ev/we_orthosie1ev.dts new file mode 100644 index 00000000000..4958bf4221c --- /dev/null +++ b/boards/we/orthosie1ev/we_orthosie1ev.dts @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2024 Würth Elektronik GmbH & Co. KG + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include "we_orthosie1ev-pinctrl.dtsi" +#include +#include + +/ { + model = "we_orthosie1ev"; + compatible = "we,we-orthosie1ev"; + + chosen { + zephyr,sram = &sram0; + zephyr,console = &uart0; + zephyr,shell-uart = &uart0; + zephyr,flash = &flash0; + zephyr,code-partition = &slot0_partition; + zephyr,bt-hci = &esp32_bt_hci; + }; + + aliases { + sw0 = &user_button1; + i2c-0 = &i2c0; + watchdog0 = &wdt0; + }; + + gpio_keys { + compatible = "gpio-keys"; + user_button1: button_1 { + label = "User SW1"; + gpios = <&gpio0 3 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; + zephyr,code = ; + }; + }; +}; + +&uart0 { + status = "okay"; + current-speed = <115200>; + pinctrl-0 = <&uart0_default>; + pinctrl-names = "default"; +}; + +&usb_serial { + /* requires resoldering of resistors on the board */ + status = "okay"; +}; + +&i2c0 { + status = "okay"; + clock-frequency = ; + pinctrl-0 = <&i2c0_default>; + pinctrl-names = "default"; +}; + +&i2s { + pinctrl-0 = <&i2s_default>; + pinctrl-names = "default"; + status = "disabled"; +}; + +&trng0 { + status = "okay"; +}; + +&spi2 { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + pinctrl-0 = <&spim2_default>; + pinctrl-names = "default"; +}; + +&gpio0 { + status = "okay"; +}; + +&wdt0 { + status = "okay"; +}; + +&timer0 { + status = "disabled"; +}; + +&timer1 { + status = "disabled"; +}; + +&twai { + /* requires external CAN transceiver or jumper on RX and TX pins for loopback testing */ + status = "disabled"; + pinctrl-0 = <&twai_default>; + pinctrl-names = "default"; +}; + +&esp32_bt_hci { + status = "okay"; +}; diff --git a/boards/we/orthosie1ev/we_orthosie1ev.yaml b/boards/we/orthosie1ev/we_orthosie1ev.yaml new file mode 100644 index 00000000000..82e60eadc32 --- /dev/null +++ b/boards/we/orthosie1ev/we_orthosie1ev.yaml @@ -0,0 +1,23 @@ +identifier: we_orthosie1ev +name: we_orthosie1ev +type: mcu +arch: riscv +toolchain: + - zephyr +supported: + - adc + - gpio + - i2c + - i2s + - watchdog + - uart + - dma + - pwm + - spi + - counter + - entropy +testing: + ignore_tags: + - net + - bluetooth +vendor: we diff --git a/boards/we/orthosie1ev/we_orthosie1ev_defconfig b/boards/we/orthosie1ev/we_orthosie1ev_defconfig new file mode 100644 index 00000000000..ef633ce56a1 --- /dev/null +++ b/boards/we/orthosie1ev/we_orthosie1ev_defconfig @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_MAIN_STACK_SIZE=2048 + +CONFIG_CONSOLE=y +CONFIG_SERIAL=y +CONFIG_UART_CONSOLE=y +CONFIG_GPIO=y