From 04e60be9bfdb9c29976907087e91270663a1a2a6 Mon Sep 17 00:00:00 2001 From: Ian Morris Date: Sun, 12 Nov 2023 16:25:42 -0800 Subject: [PATCH] boards: mikroe: add initial support for Mikroe RA4M1 Clicker The RA4M1 Clicker is a basic development board for the Renesas RA4M1 Microcontroller. The board contains J-Link on board, two LEDs and push buttons and several headers for interfacing with external devices. Signed-off-by: Ian Morris --- .../Kconfig.mikroe_clicker_ra4m1 | 5 + boards/mikroe/clicker_ra4m1/board.cmake | 6 ++ boards/mikroe/clicker_ra4m1/board.yml | 8 ++ .../doc/img/mikroe_clicker_ra4m1.jpg | Bin 0 -> 26121 bytes boards/mikroe/clicker_ra4m1/doc/index.rst | 87 ++++++++++++++++ .../clicker_ra4m1/mikroe_clicker_ra4m1.dts | 95 ++++++++++++++++++ .../clicker_ra4m1/mikroe_clicker_ra4m1.yaml | 14 +++ .../mikroe_clicker_ra4m1_defconfig | 22 ++++ 8 files changed, 237 insertions(+) create mode 100644 boards/mikroe/clicker_ra4m1/Kconfig.mikroe_clicker_ra4m1 create mode 100644 boards/mikroe/clicker_ra4m1/board.cmake create mode 100644 boards/mikroe/clicker_ra4m1/board.yml create mode 100644 boards/mikroe/clicker_ra4m1/doc/img/mikroe_clicker_ra4m1.jpg create mode 100644 boards/mikroe/clicker_ra4m1/doc/index.rst create mode 100644 boards/mikroe/clicker_ra4m1/mikroe_clicker_ra4m1.dts create mode 100644 boards/mikroe/clicker_ra4m1/mikroe_clicker_ra4m1.yaml create mode 100644 boards/mikroe/clicker_ra4m1/mikroe_clicker_ra4m1_defconfig diff --git a/boards/mikroe/clicker_ra4m1/Kconfig.mikroe_clicker_ra4m1 b/boards/mikroe/clicker_ra4m1/Kconfig.mikroe_clicker_ra4m1 new file mode 100644 index 00000000000..1fe44feec08 --- /dev/null +++ b/boards/mikroe/clicker_ra4m1/Kconfig.mikroe_clicker_ra4m1 @@ -0,0 +1,5 @@ +# Copyright (c) 2024 Ian Morris +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_MIKROE_CLICKER_RA4M1 + select SOC_R7FA4M1AB3CFM diff --git a/boards/mikroe/clicker_ra4m1/board.cmake b/boards/mikroe/clicker_ra4m1/board.cmake new file mode 100644 index 00000000000..3f00aea418d --- /dev/null +++ b/boards/mikroe/clicker_ra4m1/board.cmake @@ -0,0 +1,6 @@ +# Copyright (c) 2024 Ian Morris +# SPDX-License-Identifier: Apache-2.0 + +board_runner_args(pyocd "--target=r7fa4m1ab") + +include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake) diff --git a/boards/mikroe/clicker_ra4m1/board.yml b/boards/mikroe/clicker_ra4m1/board.yml new file mode 100644 index 00000000000..1635cd26a5d --- /dev/null +++ b/boards/mikroe/clicker_ra4m1/board.yml @@ -0,0 +1,8 @@ +# Copyright (c) 2024 Ian Morris +# SPDX-License-Identifier: Apache-2.0 + +board: + name: mikroe_clicker_ra4m1 + vendor: mikroe + socs: + - name: r7fa4m1ab3cfm diff --git a/boards/mikroe/clicker_ra4m1/doc/img/mikroe_clicker_ra4m1.jpg b/boards/mikroe/clicker_ra4m1/doc/img/mikroe_clicker_ra4m1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0d9acc54989eb86fa055208c638154c21b9c241b GIT binary patch literal 26121 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 EKYFRmH2?qr literal 0 HcmV?d00001 diff --git a/boards/mikroe/clicker_ra4m1/doc/index.rst b/boards/mikroe/clicker_ra4m1/doc/index.rst new file mode 100644 index 00000000000..5af9aa1125a --- /dev/null +++ b/boards/mikroe/clicker_ra4m1/doc/index.rst @@ -0,0 +1,87 @@ +.. _mikroe_clicker_ra4m1: + +Mikroe Clicker RA4M1 +#################### + +Overview +******** + +The Mikroe Clicker RA4M1 development board contains a Renesas Cortex-M4 based +R7FA4M1AB3CFM Microcontroller operating at up to 48 MHz with 256 KB of Flash +memory and 32 KB of SRAM. + +.. figure:: img/mikroe_clicker_ra4m1.jpg + :align: center + :alt: Clicker RA4M1 + + Clicker RA4M1 (Credit: MikroElektronika d.o.o.) + +Hardware +******** + +The Clicker RA4M1 board contains a USB Type-C connector, two LEDs, two push +buttons, and a reset button. It has J-Link onboard and mikroBUS socket for +interfacing with external electronics. For more information about the +development board see the `Clicker RA4M1 website`_. + +Supported Features +================== + +The Zephyr Mikroe Clicker RA4M1 configuration supports the following hardware +features: + ++-----------+------------+-------------------------------------+ +| Interface | Controller | Driver/Component | ++===========+============+=====================================+ +| NVIC | on-chip | nested vector interrupt controller | ++-----------+------------+-------------------------------------+ +| UART | on-chip | serial port-polling | ++-----------+------------+-------------------------------------+ +| PINMUX | on-chip | pinmux | ++-----------+------------+-------------------------------------+ +| GPIO | on-chip | GPIO output | +| | | GPIO input | ++-----------+------------+-------------------------------------+ + +Other hardware features have not been enabled yet for this board. + +The default configuration can be found in the defconfig file: +:zephyr_file:`boards/mikroe/clicker_ra4m1/mikroe_clicker_ra4m1_defconfig`. + +Programming and debugging +************************* + +Building & Flashing +=================== + +You can build and flash an application in the usual way (See +:ref:`build_an_application` and +:ref:`application_run` for more details). + +Here is an example for building and flashing the :zephyr:code-sample:`blinky` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/basic/blinky + :board: mikroe_clicker_ra4m1 + :goals: build flash + +Debugging +========= + +Debugging also can be done in the usual way. +The following command is debugging the :zephyr:code-sample:`blinky` application. +Also, see the instructions specific to the debug server that you use. + +.. zephyr-app-commands:: + :zephyr-app: samples/basic/blinky + :board: mikroe_clicker_ra4m1 + :maybe-skip-config: + :goals: debug + +References +********** + +.. target-notes:: + +.. _Clicker RA4M1 website: + https://www.mikroe.com/ra4m1-clicker diff --git a/boards/mikroe/clicker_ra4m1/mikroe_clicker_ra4m1.dts b/boards/mikroe/clicker_ra4m1/mikroe_clicker_ra4m1.dts new file mode 100644 index 00000000000..b15242c5fea --- /dev/null +++ b/boards/mikroe/clicker_ra4m1/mikroe_clicker_ra4m1.dts @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2024 Ian Morris + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include +#include +#include +#include + +/ { + model = "Mikroe Clicker RA4M1"; + compatible = "renesas,r7fa4m1ab3cfm"; + + chosen { + zephyr,console = &uart0; + zephyr,shell-uart = &uart0; + zephyr,sram = &sram0; + zephyr,flash = &flash0; + }; + + leds { + compatible = "gpio-leds"; + ld1: led_1 { + gpios = <&ioport4 9 GPIO_ACTIVE_HIGH>; + label = "User LED 1"; + }; + ld2: led_2 { + gpios = <&ioport4 8 GPIO_ACTIVE_HIGH>; + label = "User LED 2"; + }; + }; + + buttons { + compatible = "gpio-keys"; + btn1: button_1 { + gpios = <&ioport3 4 GPIO_ACTIVE_LOW>; + label = "User Button 1"; + zephyr,code = ; + }; + }; + + aliases { + led0 = &ld1; + led1 = &ld2; + sw0 = &btn1; + }; +}; + +&pinctrl { + sci0_default: sci0_default { + group1 { + pinmux = , ; + }; + }; +}; + +&sci0 { + status = "okay"; + pinctrl-0 = <&sci0_default>; + pinctrl-names = "default"; + uart0: uart { + current-speed = <115200>; + status = "okay"; + }; +}; + +&ioport3 { + status = "okay"; +}; + +&ioport4 { + status = "okay"; +}; + +&fcu { + status = "okay"; +}; + +&mosc { + status = "okay"; + clock-frequency = <12000000>; +}; + +&cgc { + clock-source = <&mosc>; + iclk-div = <1>; + pclka-div = <1>; + pclkb-div = <2>; + pclkc-div = <1>; + pclkd-div = <1>; + fclk-div = <2>; +}; diff --git a/boards/mikroe/clicker_ra4m1/mikroe_clicker_ra4m1.yaml b/boards/mikroe/clicker_ra4m1/mikroe_clicker_ra4m1.yaml new file mode 100644 index 00000000000..9cc16dc9c8d --- /dev/null +++ b/boards/mikroe/clicker_ra4m1/mikroe_clicker_ra4m1.yaml @@ -0,0 +1,14 @@ +identifier: mikroe_clicker_ra4m1 +name: Mikroe Clicker RA4M1 +vendor: mikroe +type: mcu +arch: arm +toolchain: + - zephyr + - gnuarmemb + - xtools +ram: 32 +flash: 256 +supported: + - gpio + - uart diff --git a/boards/mikroe/clicker_ra4m1/mikroe_clicker_ra4m1_defconfig b/boards/mikroe/clicker_ra4m1/mikroe_clicker_ra4m1_defconfig new file mode 100644 index 00000000000..3d89bdc283d --- /dev/null +++ b/boards/mikroe/clicker_ra4m1/mikroe_clicker_ra4m1_defconfig @@ -0,0 +1,22 @@ +# Copyright (c) 2024 Ian Morris +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=12000000 + +CONFIG_BUILD_OUTPUT_HEX=y + +# enable uart driver +CONFIG_SERIAL=y + +# enable console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +# enable GPIO +CONFIG_GPIO=y + +# enable pin controller +CONFIG_PINCTRL=y + +# enable Clocks +CONFIG_CLOCK_CONTROL=y