From 7638952f0342524e2e0d1d84d126cf9ea86ed95a Mon Sep 17 00:00:00 2001 From: Quy Tran Date: Tue, 11 Jun 2024 07:15:35 +0000 Subject: [PATCH] boards: renesas: Add initial support for EK-RA4M2 Initial commit to support Renesas EK-RA4M2 board Signed-off-by: Quy Tran Signed-off-by: Duy Phuong Hoang. Nguyen --- boards/renesas/ek_ra4m2/Kconfig.ek_ra4m2 | 5 + boards/renesas/ek_ra4m2/board.cmake | 6 + boards/renesas/ek_ra4m2/board.yml | 5 + .../renesas/ek_ra4m2/doc/ek-ra4m2-board.webp | Bin 0 -> 29318 bytes boards/renesas/ek_ra4m2/doc/index.rst | 163 ++++++++++++++++++ .../ek_ra4m2/doc/ra4m2-block-diagram.webp | Bin 0 -> 39288 bytes boards/renesas/ek_ra4m2/ek_ra4m2-pinctrl.dtsi | 14 ++ boards/renesas/ek_ra4m2/ek_ra4m2.dts | 75 ++++++++ boards/renesas/ek_ra4m2/ek_ra4m2.yaml | 12 ++ boards/renesas/ek_ra4m2/ek_ra4m2_defconfig | 17 ++ .../uart_async_api/boards/ek_ra4m2.overlay | 24 +++ 11 files changed, 321 insertions(+) create mode 100644 boards/renesas/ek_ra4m2/Kconfig.ek_ra4m2 create mode 100644 boards/renesas/ek_ra4m2/board.cmake create mode 100644 boards/renesas/ek_ra4m2/board.yml create mode 100644 boards/renesas/ek_ra4m2/doc/ek-ra4m2-board.webp create mode 100644 boards/renesas/ek_ra4m2/doc/index.rst create mode 100644 boards/renesas/ek_ra4m2/doc/ra4m2-block-diagram.webp create mode 100644 boards/renesas/ek_ra4m2/ek_ra4m2-pinctrl.dtsi create mode 100644 boards/renesas/ek_ra4m2/ek_ra4m2.dts create mode 100644 boards/renesas/ek_ra4m2/ek_ra4m2.yaml create mode 100644 boards/renesas/ek_ra4m2/ek_ra4m2_defconfig create mode 100644 tests/drivers/uart/uart_async_api/boards/ek_ra4m2.overlay diff --git a/boards/renesas/ek_ra4m2/Kconfig.ek_ra4m2 b/boards/renesas/ek_ra4m2/Kconfig.ek_ra4m2 new file mode 100644 index 00000000000..bd762fb2bd9 --- /dev/null +++ b/boards/renesas/ek_ra4m2/Kconfig.ek_ra4m2 @@ -0,0 +1,5 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_EK_RA4M2 + select SOC_R7FA4M2AD3CFP diff --git a/boards/renesas/ek_ra4m2/board.cmake b/boards/renesas/ek_ra4m2/board.cmake new file mode 100644 index 00000000000..f0faf6c179a --- /dev/null +++ b/boards/renesas/ek_ra4m2/board.cmake @@ -0,0 +1,6 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +board_runner_args(jlink "--device=R7FA4M2AD") + +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/renesas/ek_ra4m2/board.yml b/boards/renesas/ek_ra4m2/board.yml new file mode 100644 index 00000000000..c19484eff8a --- /dev/null +++ b/boards/renesas/ek_ra4m2/board.yml @@ -0,0 +1,5 @@ +board: + name: ek_ra4m2 + vendor: renesas + socs: + - name: r7fa4m2ad3cfp diff --git a/boards/renesas/ek_ra4m2/doc/ek-ra4m2-board.webp b/boards/renesas/ek_ra4m2/doc/ek-ra4m2-board.webp new file mode 100644 index 0000000000000000000000000000000000000000..6f83ef7274aff524ec73c749eee4ba2a052833e7 GIT binary patch literal 29318 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 F0030~6dV8m literal 0 HcmV?d00001 diff --git a/boards/renesas/ek_ra4m2/doc/index.rst b/boards/renesas/ek_ra4m2/doc/index.rst new file mode 100644 index 00000000000..6fabd2116aa --- /dev/null +++ b/boards/renesas/ek_ra4m2/doc/index.rst @@ -0,0 +1,163 @@ +.. _ek_ra4m2: + +RA4M2 Evaluation Kit +#################### + +Overview +******** + +The Renesas RA4M2 group of 32-bit microcontrollers (MCUs) uses the high-performance Arm +Cortex®-M33 core. In concert with the secure crypto engine, it offers secure element +functionality. The RA4M2 is built on a highly efficient 40nm process, built on FreeRTOS—and +is expandable to use other RTOSes and middleware. The RA4M2 is suitable for IoT applications +requiring vast communication options, future proof security, large embedded RAM, and low +active power consumption down to 81µA/MHz running the CoreMark® algorithm from Flash. + +The MCU in this series incorporates a high-performance Arm Cortex®-M33 core running up to +100 MHz with the following features: + +**Renesas RA4M2 Microcontroller Group** +- R7FA4M2AD3CFP +- 100-pin LQFP package +- 100 MHz Arm® Cortex®-M33 core +- 512 kB Code Flash, 128 KB SRAM +- Native pin access through 4 x 28-pin male headers +- MCU current measurement points for precision current consumption measurement +- Multiple clock sources - RA MCU oscillator and sub-clock oscillator crystals, providing +precision 24.000 MHz and 32,768 Hz reference clock. Additional low-precision clocks are +available internal to the RA MCU + +**System Control and Ecosystem Access** +- USB Full Speed Host and Device (micro AB connector) +- Three 5 V input sources + + - USB (Debug, Full Speed) + - External power supply (using surface mount clamp test points and power input vias) + +- Three Debug modes + + - Debug on-board (SWD) + - Debug in (ETM, SWD, and JTAG) + - Debug out (SWD) + +- User LEDs and buttons + + - Three User LEDs (red, blue, green) + - Power LED (white) indicating availability of regulated power + - Debug LED (yellow) indicating the debug connection + - Two User buttons + - One Reset button + +- Five most popular ecosystems expansions + + - 2 Seeed Grove® system (I2C/Analog) connectors + - SparkFun® Qwiic® connector + - 2 Digilent PmodTM (SPI and UART) connectors + - ArduinoTM (Uno R3) connector + - MikroElektronikaTM mikroBUS connector + +- MCU boot configuration jumper + +**Special Feature Access** +- 32 MB (256 Mb) External Quad-SPI Flash + +.. figure:: ek-ra4m2-board.webp + :align: center + :alt: RA4M2 Evaluation Kit + + EK-RA4M2 Board Functional Area Definitions (Credit: Renesas Electronics Corporation) + +Hardware +******** +Detail Hardware feature for the RA4M2 MCU group can be found at `RA4M2 Group User's Manual Hardware`_ + +.. figure:: ra4m2-block-diagram.webp + :width: 442px + :align: center + :alt: RA4M2 MCU group feature + + RA4M2 Block diagram (Credit: Renesas Electronics Corporation) + +Detail Hardware feature for the EK-RA4M2 MCU can be found at `EK-RA4M2 - User's Manual`_ + +Supported Features +================== + +The below features are currently supported on Zephyr OS for EK-RA4M2 board: + ++-----------+------------+----------------------+ +| Interface | Controller | Driver/Component | ++===========+============+======================+ +| GPIO | on-chip | gpio | ++-----------+------------+----------------------+ +| MPU | on-chip | arch/arm | ++-----------+------------+----------------------+ +| NVIC | on-chip | arch/arm | ++-----------+------------+----------------------+ +| UART | on-chip | serial | ++-----------+------------+----------------------+ + +Other hardware features are currently not supported by the port. + +Programming and Debugging +************************* + +Applications for the ``ek_ra4m2`` board target configuration can be +built, flashed, and debugged in the usual way. See +:ref:`build_an_application` and :ref:`application_run` for more details on +building and running. + +Flashing +======== + +Program can be flashed to EK-RA4M2 via the on-board SEGGER J-Link debugger. +SEGGER J-link's drivers are avaialbe at https://www.segger.com/downloads/jlink/ + +To flash the program to board + + 1. Connect to J-Link OB via USB port to host PC + + 2. Make sure J-Link OB jumper is in default configuration as describe in `EK-RA4M2 - User's Manual`_ + + 3. Execute west command + + .. code-block:: console + + west flash -r jlink + +Debugging +========= + +You can use Segger Ozone (`Segger Ozone Download`_) for a visual debug interface + +Once downloaded and installed, open Segger Ozone and configure the debug project +like so: + +* Target Device: R7FA4M2AD +* Target Interface: SWD +* Target Interface Speed: 4 MHz +* Host Interface: USB +* Program File: + +**Note:** It's verified that we can debug OK on Segger Ozone v3.30d so please use this or later +version of Segger Ozone + +References +********** +- `EK-RA4M2 Website`_ +- `RA4M2 MCU group Website`_ + +.. _EK-RA4M2 Website: + https://www.renesas.com/us/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra4m2-evaluation-kit-ra4m2-mcu-group + +.. _RA4M2 MCU group Website: + https://www.renesas.com/us/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ra4m2-100mhz-arm-cortex-m33-trustzone-high-integration-lowest-active-power-consumption + +.. _EK-RA4M2 - User's Manual: + https://www.renesas.com/us/en/document/mat/ek-ra4m2-v1-users-manual + +.. _RA4M2 Group User's Manual Hardware: + https://www.renesas.com/us/en/document/man/ra4m2-group-users-manual-hardware + +.. _Segger Ozone Download: + https://www.segger.com/downloads/jlink#Ozone diff --git a/boards/renesas/ek_ra4m2/doc/ra4m2-block-diagram.webp b/boards/renesas/ek_ra4m2/doc/ra4m2-block-diagram.webp new file mode 100644 index 0000000000000000000000000000000000000000..c902d3d4d3fbbb39a77d1872f553c18bc9222dfa GIT binary patch literal 39288 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, + ; + }; + }; +}; diff --git a/boards/renesas/ek_ra4m2/ek_ra4m2.dts b/boards/renesas/ek_ra4m2/ek_ra4m2.dts new file mode 100644 index 00000000000..a513c7a3ca1 --- /dev/null +++ b/boards/renesas/ek_ra4m2/ek_ra4m2.dts @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include +#include "ek_ra4m2-pinctrl.dtsi" + +/ { + model = "Renesas EK-RA4M2"; + compatible = "renesas,ra4m2", "renesas,ra"; + + chosen { + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,console = &uart0; + zephyr,shell-uart = &uart0; + }; + + leds { + compatible = "gpio-leds"; + led1: led1 { + gpios = <&ioport4 15 GPIO_ACTIVE_HIGH>; + label = "LED1"; + }; + led2: led2 { + gpios = <&ioport4 4 GPIO_ACTIVE_HIGH>; + label = "LED2"; + }; + led3: led3 { + gpios = <&ioport4 5 GPIO_ACTIVE_HIGH>; + label = "LED3"; + }; + }; + + aliases { + led0 = &led1; + }; +}; + +&xtal { + clock-frequency = ; + mosel = <0>; + #clock-cells = <0>; + status = "okay"; +}; + +&subclk { + status = "okay"; +}; + +&pll { + source = ; + div = ; + mul = <25 0>; + freq = ; + status = "okay"; +}; + +&sci0 { + pinctrl-0 = <&sci0_default>; + pinctrl-names = "default"; + status = "okay"; + uart0: uart { + current-speed = <115200>; + status = "okay"; + }; +}; + +&ioport4 { + status = "okay"; +}; diff --git a/boards/renesas/ek_ra4m2/ek_ra4m2.yaml b/boards/renesas/ek_ra4m2/ek_ra4m2.yaml new file mode 100644 index 00000000000..d61c6bf05fe --- /dev/null +++ b/boards/renesas/ek_ra4m2/ek_ra4m2.yaml @@ -0,0 +1,12 @@ +identifier: ek_ra4m2 +name: Renesas EK-RA4M2 +type: mcu +arch: arm +ram: 128 +flash: 512 +toolchain: + - zephyr + - gnuarmemb +supported: + - gpio + - uart diff --git a/boards/renesas/ek_ra4m2/ek_ra4m2_defconfig b/boards/renesas/ek_ra4m2/ek_ra4m2_defconfig new file mode 100644 index 00000000000..79943a76109 --- /dev/null +++ b/boards/renesas/ek_ra4m2/ek_ra4m2_defconfig @@ -0,0 +1,17 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=100000000 + +# Enable GPIO +CONFIG_GPIO=y +CONFIG_PINCTRL=y + +# Enable Console +CONFIG_SERIAL=y +CONFIG_UART_INTERRUPT_DRIVEN=y +CONFIG_UART_CONSOLE=y +CONFIG_CONSOLE=y + +CONFIG_BUILD_OUTPUT_HEX=y +CONFIG_BUILD_NO_GAP_FILL=y diff --git a/tests/drivers/uart/uart_async_api/boards/ek_ra4m2.overlay b/tests/drivers/uart/uart_async_api/boards/ek_ra4m2.overlay new file mode 100644 index 00000000000..21e0f0f9141 --- /dev/null +++ b/tests/drivers/uart/uart_async_api/boards/ek_ra4m2.overlay @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + sci2_default: sci2_default { + group1 { + /* tx rx */ + psels = , + ; + }; + }; +}; + +&sci2 { + pinctrl-0 = <&sci2_default>; + pinctrl-names = "default"; + status = "okay"; + dut: uart { + current-speed = <115200>; + status = "okay"; + }; +};