From 601a0dd61cbaeec9a23c3350495ddcd852666d7b Mon Sep 17 00:00:00 2001 From: Quy Tran Date: Tue, 11 Jun 2024 03:48:50 +0000 Subject: [PATCH 1/9] soc: renesas: Add initial support for RA4E2 soc Initial commit to support Renesas RA4E2 SoC Signed-off-by: Quy Tran --- dts/arm/renesas/ra/ra4/r7fa4e2b93cfm.dtsi | 169 ++++++++++++++++++++ dts/arm/renesas/ra/ra4/ra4-cm33-common.dtsi | 165 +++++++++++++++++++ soc/renesas/ra/ra4e2/CMakeLists.txt | 12 ++ soc/renesas/ra/ra4e2/Kconfig | 14 ++ soc/renesas/ra/ra4e2/Kconfig.defconfig | 12 ++ soc/renesas/ra/ra4e2/Kconfig.soc | 20 +++ soc/renesas/ra/ra4e2/sections.ld | 84 ++++++++++ soc/renesas/ra/ra4e2/soc.c | 69 ++++++++ soc/renesas/ra/ra4e2/soc.h | 16 ++ soc/renesas/ra/soc.yml | 3 + 10 files changed, 564 insertions(+) create mode 100644 dts/arm/renesas/ra/ra4/r7fa4e2b93cfm.dtsi create mode 100644 dts/arm/renesas/ra/ra4/ra4-cm33-common.dtsi create mode 100644 soc/renesas/ra/ra4e2/CMakeLists.txt create mode 100644 soc/renesas/ra/ra4e2/Kconfig create mode 100644 soc/renesas/ra/ra4e2/Kconfig.defconfig create mode 100644 soc/renesas/ra/ra4e2/Kconfig.soc create mode 100644 soc/renesas/ra/ra4e2/sections.ld create mode 100644 soc/renesas/ra/ra4e2/soc.c create mode 100644 soc/renesas/ra/ra4e2/soc.h diff --git a/dts/arm/renesas/ra/ra4/r7fa4e2b93cfm.dtsi b/dts/arm/renesas/ra/ra4/r7fa4e2b93cfm.dtsi new file mode 100644 index 0000000000000..e4bbe31e0a8c6 --- /dev/null +++ b/dts/arm/renesas/ra/ra4/r7fa4e2b93cfm.dtsi @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include + +/ { + soc { + sram0: memory@20000000 { + compatible = "mmio-sram"; + reg = <0x20000000 DT_SIZE_K(40)>; + }; + + ioport8: gpio@40080100 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x40080100 0x20>; + port = <8>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + flash-controller@407e0000 { + reg = <0x407e0000 0x10000>; + #address-cells = <1>; + #size-cells = <1>; + flash0: flash@0 { + compatible = "soc-nv-flash"; + reg = <0x0 DT_SIZE_K(128)>; + }; + }; + + id_code: id_code@100a120 { + compatible = "zephyr,memory-region"; + reg = <0x0100a120 0x10>; + zephyr,memory-region = "ID_CODE"; + status = "okay"; + }; + }; + + clocks: clocks { + xtal: clock-xtal { + compatible = "renesas,ra-cgc-external-clock"; + clock-frequency = ; + #clock-cells = <0>; + status = "disabled"; + }; + + hoco: clock-hoco { + compatible = "fixed-clock"; + clock-frequency = ; + #clock-cells = <0>; + }; + + moco: clock-moco { + compatible = "fixed-clock"; + clock-frequency = ; + #clock-cells = <0>; + }; + + loco: clock-loco { + compatible = "fixed-clock"; + clock-frequency = <32768>; + #clock-cells = <0>; + }; + + subclk: clock-subclk { + compatible = "renesas,ra-cgc-subclk"; + clock-frequency = <32768>; + #clock-cells = <0>; + status = "disabled"; + }; + + pll: pll { + compatible = "renesas,ra-cgc-pll"; + #clock-cells = <0>; + + /* PLL */ + source = ; + div = ; + mul = <10 0>; + freq = ; + status = "disabled"; + }; + + pclkblock: pclkblock { + compatible = "renesas,ra-cgc-pclk-block"; + #clock-cells = <0>; + sysclock-src = ; + status = "okay"; + + iclk: iclk { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + pclka: pclka { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + pclkb: pclkb { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + pclkc: pclkc { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + pclkd: pclkd { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + fclk: fclk { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + clkout: clkout { + compatible = "renesas,ra-cgc-pclk"; + #clock-cells = <2>; + status = "disabled"; + }; + + uclk: uclk { + compatible = "renesas,ra-cgc-pclk"; + #clock-cells = <2>; + status = "disabled"; + }; + + canfdclk: canfdclk { + compatible = "renesas,ra-cgc-pclk"; + #clock-cells = <2>; + status = "disabled"; + }; + + i3cclk: i3cclk { + compatible = "renesas,ra-cgc-pclk"; + #clock-cells = <2>; + status = "disabled"; + }; + + cecclk: cecclk { + compatible = "renesas,ra-cgc-pclk"; + #clock-cells = <2>; + status = "disabled"; + }; + }; + }; +}; diff --git a/dts/arm/renesas/ra/ra4/ra4-cm33-common.dtsi b/dts/arm/renesas/ra/ra4/ra4-cm33-common.dtsi new file mode 100644 index 0000000000000..f7959fc898d9e --- /dev/null +++ b/dts/arm/renesas/ra/ra4/ra4-cm33-common.dtsi @@ -0,0 +1,165 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include + +/ { + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-m33"; + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + + mpu: mpu@e000ed90 { + compatible = "arm,armv8m-mpu"; + reg = <0xe000ed90 0x40>; + }; + }; + }; + + soc { + interrupt-parent = <&nvic>; + + system: system@4001e000 { + compatible = "renesas,ra-system"; + reg = <0x4001e000 0x1000>; + status = "okay"; + }; + + flash-controller@407e0000 { + reg = <0x407e0000 0x10000>; + #address-cells = <1>; + #size-cells = <1>; + }; + + ioport0: gpio@40080000 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x40080000 0x20>; + port = <0>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + ioport1: gpio@40080020 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x40080020 0x20>; + port = <1>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + ioport2: gpio@40080040 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x40080040 0x20>; + port = <2>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + ioport3: gpio@40080060 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x40080060 0x20>; + port = <3>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + ioport4: gpio@40080080 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x40080080 0x20>; + port = <4>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + ioport5: gpio@400800a0 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x400800a0 0x20>; + port = <5>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + pinctrl: pin-controller@40080800 { + compatible = "renesas,ra-pinctrl-pfs"; + reg = <0x40080800 0x3c0>; + status = "okay"; + }; + + sci0: sci0@40118000 { + compatible = "renesas,ra-sci"; + interrupts = <0 1>, <1 1>, <2 1>, <3 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; + reg = <0x40118000 0x100>; + clocks = <&pclka MSTPB 31>; + status = "disabled"; + uart { + compatible = "renesas,ra-sci-uart"; + channel = <0>; + status = "disabled"; + }; + }; + + sci9: sci9@40118900 { + compatible = "renesas,ra-sci"; + interrupts = <36 1>, <37 1>, <38 1>, <39 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; + reg = <0x40118900 0x100>; + clocks = <&pclka MSTPB 22>; + status = "disabled"; + uart { + compatible = "renesas,ra-sci-uart"; + channel = <9>; + status = "disabled"; + }; + }; + + option_setting_ofs: option_setting_ofs@100a100 { + compatible = "zephyr,memory-region"; + reg = <0x0100a100 0x18>; + zephyr,memory-region = "OPTION_SETTING_OFS"; + status = "okay"; + }; + + option_setting_sas: option_setting_sas@100a134 { + compatible = "zephyr,memory-region"; + reg = <0x0100a134 0xcc>; + zephyr,memory-region = "OPTION_SETTING_SAS"; + status = "okay"; + }; + + option_setting_s: option_setting_s@100a200 { + compatible = "zephyr,memory-region"; + reg = <0x0100a200 0x100>; + zephyr,memory-region = "OPTION_SETTING_S"; + status = "okay"; + }; + }; +}; + +&nvic { + arm,num-irq-priority-bits = <4>; +}; diff --git a/soc/renesas/ra/ra4e2/CMakeLists.txt b/soc/renesas/ra/ra4e2/CMakeLists.txt new file mode 100644 index 0000000000000..1c7457569ef3e --- /dev/null +++ b/soc/renesas/ra/ra4e2/CMakeLists.txt @@ -0,0 +1,12 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +zephyr_include_directories(.) + +zephyr_sources( + soc.c +) + +zephyr_linker_sources(SECTIONS sections.ld) + +set(SOC_LINKER_SCRIPT ${ZEPHYR_BASE}/include/zephyr/arch/arm/cortex_m/scripts/linker.ld CACHE INTERNAL "") diff --git a/soc/renesas/ra/ra4e2/Kconfig b/soc/renesas/ra/ra4e2/Kconfig new file mode 100644 index 0000000000000..731d163105606 --- /dev/null +++ b/soc/renesas/ra/ra4e2/Kconfig @@ -0,0 +1,14 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +config SOC_SERIES_RA4E2 + select ARM + select CPU_HAS_ARM_MPU + select CPU_CORTEX_M33 + select HAS_RENESAS_RA_FSP + select CPU_CORTEX_M_HAS_DWT + select ARMV8_M_DSP + select CPU_HAS_FPU + select FPU + select HAS_SWO + select XIP diff --git a/soc/renesas/ra/ra4e2/Kconfig.defconfig b/soc/renesas/ra/ra4e2/Kconfig.defconfig new file mode 100644 index 0000000000000..985e17502d705 --- /dev/null +++ b/soc/renesas/ra/ra4e2/Kconfig.defconfig @@ -0,0 +1,12 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +if SOC_SERIES_RA4E2 + +config NUM_IRQS + default 96 + +config PINCTRL + default y + +endif # SOC_SERIES_RA4E2 diff --git a/soc/renesas/ra/ra4e2/Kconfig.soc b/soc/renesas/ra/ra4e2/Kconfig.soc new file mode 100644 index 0000000000000..38ec2b3af06e8 --- /dev/null +++ b/soc/renesas/ra/ra4e2/Kconfig.soc @@ -0,0 +1,20 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +config SOC_SERIES_RA4E2 + bool + select SOC_FAMILY_RENESAS_RA + help + Renesas RA4E2 series + +config SOC_R7FA4E2B93CFM + bool + select SOC_SERIES_RA4E2 + help + R7FA4E2B93CFM + +config SOC_SERIES + default "ra4e2" if SOC_SERIES_RA4E2 + +config SOC + default "r7fa4e2b93cfm" if SOC_R7FA4E2B93CFM diff --git a/soc/renesas/ra/ra4e2/sections.ld b/soc/renesas/ra/ra4e2/sections.ld new file mode 100644 index 0000000000000..511ad0854a26a --- /dev/null +++ b/soc/renesas/ra/ra4e2/sections.ld @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +.code_in_ram : +{ + . = ALIGN(4); + __Code_In_RAM_Start = .; + KEEP(*(.code_in_ram*)) + __Code_In_RAM_End = .; +} > RAMABLE_REGION + +SECTION_DATA_PROLOGUE(.fsp_dtc_vector_table,(NOLOAD),) +{ + /* If DTC is used, put the DTC vector table at the start of SRAM. + This avoids memory holes due to 1K alignment required by it. */ + *(.fsp_dtc_vector_table) +} GROUP_DATA_LINK_IN(RAMABLE_REGION, RAMABLE_REGION) + +SECTION_PROLOGUE(.option_setting_ofs,,) +{ + __OPTION_SETTING_OFS_Start = .; + KEEP(*(.option_setting_ofs0)) + . = __OPTION_SETTING_OFS_Start + 0x04; + KEEP(*(.option_setting_ofs2)) + . = __OPTION_SETTING_OFS_Start + 0x10; + KEEP(*(.option_setting_dualsel)) + __OPTION_SETTING_OFS_End = .; +} GROUP_LINK_IN(OPTION_SETTING_OFS) = 0xFF + +SECTION_PROLOGUE(.option_setting_sas,,) +{ + __OPTION_SETTING_SAS_Start = .; + KEEP(*(.option_setting_sas)) + __OPTION_SETTING_SAS_End = .; +} GROUP_LINK_IN(OPTION_SETTING_SAS) = 0xFF + +SECTION_PROLOGUE(.option_setting_s,,) +{ + __OPTION_SETTING_S_Start = .; + KEEP(*(.option_setting_ofs1_sec)) + . = __OPTION_SETTING_S_Start + 0x04; + KEEP(*(.option_setting_ofs3_sec)) + . = __OPTION_SETTING_S_Start + 0x10; + KEEP(*(.option_setting_banksel_sec)) + . = __OPTION_SETTING_S_Start + 0x40; + KEEP(*(.option_setting_bps_sec0)) + . = __OPTION_SETTING_S_Start + 0x44; + KEEP(*(.option_setting_bps_sec1)) + . = __OPTION_SETTING_S_Start + 0x48; + KEEP(*(.option_setting_bps_sec2)) + . = __OPTION_SETTING_S_Start + 0x4C; + KEEP(*(.option_setting_bps_sec3)) + . = __OPTION_SETTING_S_Start + 0x60; + KEEP(*(.option_setting_pbps_sec0)) + . = __OPTION_SETTING_S_Start + 0x64; + KEEP(*(.option_setting_pbps_sec1)) + . = __OPTION_SETTING_S_Start + 0x68; + KEEP(*(.option_setting_pbps_sec2)) + . = __OPTION_SETTING_S_Start + 0x6C; + KEEP(*(.option_setting_pbps_sec3)) + . = __OPTION_SETTING_S_Start + 0x80; + KEEP(*(.option_setting_ofs1_sel)) + . = __OPTION_SETTING_S_Start + 0x84; + KEEP(*(.option_setting_ofs3_sel)) + . = __OPTION_SETTING_S_Start + 0x90; + KEEP(*(.option_setting_banksel_sel)) + . = __OPTION_SETTING_S_Start + 0xC0; + KEEP(*(.option_setting_bps_sel0)) + . = __OPTION_SETTING_S_Start + 0xC4; + KEEP(*(.option_setting_bps_sel1)) + . = __OPTION_SETTING_S_Start + 0xC8; + KEEP(*(.option_setting_bps_sel2)) + . = __OPTION_SETTING_S_Start + 0xCC; + KEEP(*(.option_setting_bps_sel3)) + __OPTION_SETTING_S_End = .; +} GROUP_LINK_IN(OPTION_SETTING_S) = 0xFF + +SECTION_PROLOGUE(.id_code,,) +{ + KEEP(*(.id_code*)) +} GROUP_LINK_IN(ID_CODE) diff --git a/soc/renesas/ra/ra4e2/soc.c b/soc/renesas/ra/ra4e2/soc.c new file mode 100644 index 0000000000000..d44791262e208 --- /dev/null +++ b/soc/renesas/ra/ra4e2/soc.c @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief System/hardware module for Renesas RA4E2 family processor + */ + +#include +#include +#include +#include +#include +#include +#include +#include +LOG_MODULE_REGISTER(soc, CONFIG_SOC_LOG_LEVEL); + +#include "bsp_cfg.h" +#include + +uint32_t SystemCoreClock BSP_SECTION_EARLY_INIT; + +volatile uint32_t g_protect_pfswe_counter BSP_SECTION_EARLY_INIT; + +/** + * @brief Perform basic hardware initialization at boot. + * + * This needs to be run from the very beginning. + * So the init priority has to be 0 (zero). + * + * @return 0 + */ +static int renesas_ra4e2_init(void) +{ + extern volatile uint16_t g_protect_counters[]; + for (uint32_t i = 0; i < 4; i++) { + g_protect_counters[i] = 0; + } + +#if FSP_PRIV_TZ_USE_SECURE_REGS + /* Disable protection using PRCR register. */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_SAR); + + /* Initialize peripherals to secure mode for flat projects */ + R_PSCU->PSARB = 0; + R_PSCU->PSARC = 0; + R_PSCU->PSARD = 0; + R_PSCU->PSARE = 0; + + R_CPSCU->ICUSARG = 0; + R_CPSCU->ICUSARH = 0; + R_CPSCU->ICUSARI = 0; + + /* Enable protection using PRCR register. */ + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_SAR); +#endif + + SystemCoreClock = BSP_MOCO_HZ; + g_protect_pfswe_counter = 0; + bsp_clock_init(); + + return 0; +} + +SYS_INIT(renesas_ra4e2_init, PRE_KERNEL_1, 0); diff --git a/soc/renesas/ra/ra4e2/soc.h b/soc/renesas/ra/ra4e2/soc.h new file mode 100644 index 0000000000000..9f9c812d0f95d --- /dev/null +++ b/soc/renesas/ra/ra4e2/soc.h @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file SoC configuration macros for the Renesas RA4E2 family MCU + */ + +#ifndef ZEPHYR_SOC_RENESAS_RA4E2_SOC_H_ +#define ZEPHYR_SOC_RENESAS_RA4E2_SOC_H_ + +#include + +#endif /* ZEPHYR_SOC_RENESAS_RA4_SOC_H_ */ diff --git a/soc/renesas/ra/soc.yml b/soc/renesas/ra/soc.yml index cf3c90523bc07..d0a11f689eae5 100644 --- a/soc/renesas/ra/soc.yml +++ b/soc/renesas/ra/soc.yml @@ -4,6 +4,9 @@ family: - name: ra2a1 socs: - name: r7fa2a1ab3cfm + - name: ra4e2 + socs: + - name: r7fa4e2b93cfm - name: ra4m1 socs: - name: r7fa4m1ab3cfm From 89089256b82c11f26226d5f1c9859fa93bc1bb3d Mon Sep 17 00:00:00 2001 From: Quy Tran Date: Tue, 11 Jun 2024 04:27:20 +0000 Subject: [PATCH 2/9] boards: renesas: Add initial support for EK-RA4E2 board Initial commit to support Renesas EK-RA4E2 board Signed-off-by: Quy Tran Signed-off-by: Duy Phuong Hoang. Nguyen --- boards/renesas/ek_ra4e2/Kconfig.ek_ra4e2 | 5 + boards/renesas/ek_ra4e2/board.cmake | 6 + boards/renesas/ek_ra4e2/board.yml | 5 + .../renesas/ek_ra4e2/doc/ek-ra4e2-board.webp | Bin 0 -> 22374 bytes boards/renesas/ek_ra4e2/doc/index.rst | 163 ++++++++++++++++++ .../ek_ra4e2/doc/ra4e2-block-diagram.webp | Bin 0 -> 45710 bytes boards/renesas/ek_ra4e2/ek_ra4e2-pinctrl.dtsi | 14 ++ boards/renesas/ek_ra4e2/ek_ra4e2.dts | 79 +++++++++ boards/renesas/ek_ra4e2/ek_ra4e2.yaml | 12 ++ boards/renesas/ek_ra4e2/ek_ra4e2_defconfig | 17 ++ .../uart_async_api/boards/ek_ra4e2.overlay | 24 +++ 11 files changed, 325 insertions(+) create mode 100644 boards/renesas/ek_ra4e2/Kconfig.ek_ra4e2 create mode 100644 boards/renesas/ek_ra4e2/board.cmake create mode 100644 boards/renesas/ek_ra4e2/board.yml create mode 100644 boards/renesas/ek_ra4e2/doc/ek-ra4e2-board.webp create mode 100644 boards/renesas/ek_ra4e2/doc/index.rst create mode 100644 boards/renesas/ek_ra4e2/doc/ra4e2-block-diagram.webp create mode 100644 boards/renesas/ek_ra4e2/ek_ra4e2-pinctrl.dtsi create mode 100644 boards/renesas/ek_ra4e2/ek_ra4e2.dts create mode 100644 boards/renesas/ek_ra4e2/ek_ra4e2.yaml create mode 100644 boards/renesas/ek_ra4e2/ek_ra4e2_defconfig create mode 100644 tests/drivers/uart/uart_async_api/boards/ek_ra4e2.overlay diff --git a/boards/renesas/ek_ra4e2/Kconfig.ek_ra4e2 b/boards/renesas/ek_ra4e2/Kconfig.ek_ra4e2 new file mode 100644 index 0000000000000..418e3597cd7d6 --- /dev/null +++ b/boards/renesas/ek_ra4e2/Kconfig.ek_ra4e2 @@ -0,0 +1,5 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_EK_RA4E2 + select SOC_R7FA4E2B93CFM diff --git a/boards/renesas/ek_ra4e2/board.cmake b/boards/renesas/ek_ra4e2/board.cmake new file mode 100644 index 0000000000000..18c2bdf71e930 --- /dev/null +++ b/boards/renesas/ek_ra4e2/board.cmake @@ -0,0 +1,6 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +board_runner_args(jlink "--device=R7FA4E2B9") + +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/renesas/ek_ra4e2/board.yml b/boards/renesas/ek_ra4e2/board.yml new file mode 100644 index 0000000000000..8baa0819ff2d5 --- /dev/null +++ b/boards/renesas/ek_ra4e2/board.yml @@ -0,0 +1,5 @@ +board: + name: ek_ra4e2 + vendor: renesas + socs: + - name: r7fa4e2b93cfm diff --git a/boards/renesas/ek_ra4e2/doc/ek-ra4e2-board.webp b/boards/renesas/ek_ra4e2/doc/ek-ra4e2-board.webp new file mode 100644 index 0000000000000000000000000000000000000000..4b3e56075c339cb49e45f8789975ec82e69d96e8 GIT binary patch literal 22374 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 dl?maM)DQpw00000000000000000000008arVN(DA literal 0 HcmV?d00001 diff --git a/boards/renesas/ek_ra4e2/doc/index.rst b/boards/renesas/ek_ra4e2/doc/index.rst new file mode 100644 index 0000000000000..910abfe71ea0a --- /dev/null +++ b/boards/renesas/ek_ra4e2/doc/index.rst @@ -0,0 +1,163 @@ +.. _ek_ra4e2: + +RA4E2 Evaluation Kit +#################### + +Overview +******** + +The RA4E2 Group delivers up to 100 MHz of CPU performance using an Arm® Cortex®-M33 core +with 128 KB of code flash memory, 4 KB of data flash memory, and 40 KB of SRAM. RA4E2 MCUs +offer high-performance and optimized peripheral functions along with the smallest package +options, including space-saving 36-pin BGA and 32-pin QFN packages. The RA4E2 +Group offers a wide set of peripherals, including USB Full Speed, CANFD, I3C, and ADC. + +The MCU in this series incorporates a high-performance Arm Cortex®-M33 core running up to +100 MHz with the following features: + +**MCU Native Pin Access** +- R7FA4E2B93CFM MCU (referred to as RA MCU) +- 100 MHz, Arm® Cortex®-M33 core +- 128 kB Code Flash, 40 kB SRAM +- 64 pins, LQFP package +- Native pin access through 2 x 14-pin and 1 x 40-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 +20.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 Device (micro-AB connector) +- Three 5 V input sources + + - USB (Debug, Full Speed) + - External power supply (using surface mount clamp test points and J31 through holes) + +- Three Debug modes + + - Debug on-board (SWD) + - Debug in (SWD) + - Debug out (JTAG, 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 (I3C/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** + +- CAN FD (3-pin header) + +.. figure:: ek-ra4e2-board.webp + :align: center + :alt: RA4E2 Evaluation Kit + + EK-RA4E2 Board Functional Area Definitions (Credit: Renesas Electronics Corporation) + +Hardware +******** +Detail Hardware feature for the RA4E2 MCU group can be found at `RA4E2 Group User's Manual Hardware`_ + +.. figure:: ra4e2-block-diagram.webp + :width: 442px + :align: center + :alt: RA4E2 MCU group feature + + RA4E2 Block diagram (Credit: Renesas Electronics Corporation) + +Detail Hardware feature for the EK-RA4E2 MCU can be found at `EK-RA4E2 - User's Manual`_ + +Supported Features +================== + +The below features are currently supported on Zephyr OS for EK-RA4E2 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_ra4e2`` 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-RA4E2 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-RA4E2 - 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: R7FA4E2B9 +* 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-RA4E2 Website`_ +- `RA4E2 MCU group Website`_ + +.. _EK-RA4E2 Website: + https://www.renesas.com/us/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra4e2-evaluation-kit-ra4e2-mcu-group + +.. _RA4E2 MCU group Website: + https://www.renesas.com/us/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ra4e2-entry-line-100mhz-arm-cortex-m33-general-purpose-microcontroller + +.. _EK-RA4E2 - User's Manual: + https://www.renesas.com/us/en/document/mat/ek-ra4e2-v1-users-manual + +.. _RA4E2 Group User's Manual Hardware: + https://www.renesas.com/us/en/document/mah/ra4e2-group-users-manual-hardware + +.. _Segger Ozone Download: + https://www.segger.com/downloads/jlink#Ozone diff --git a/boards/renesas/ek_ra4e2/doc/ra4e2-block-diagram.webp b/boards/renesas/ek_ra4e2/doc/ra4e2-block-diagram.webp new file mode 100644 index 0000000000000000000000000000000000000000..d214ac7dba802e8d4713f29e663832e5665b2c45 GIT binary patch literal 45710 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

$d;`0DrT35|Ac@31FG2_i|> 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 TE4&wg=}%Aq00000000002`Qx* literal 0 HcmV?d00001 diff --git a/boards/renesas/ek_ra4e2/ek_ra4e2-pinctrl.dtsi b/boards/renesas/ek_ra4e2/ek_ra4e2-pinctrl.dtsi new file mode 100644 index 0000000000000..851d8543beea0 --- /dev/null +++ b/boards/renesas/ek_ra4e2/ek_ra4e2-pinctrl.dtsi @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + sci0_default: sci0_default { + group1 { + /* tx rx */ + psels = , + ; + }; + }; +}; diff --git a/boards/renesas/ek_ra4e2/ek_ra4e2.dts b/boards/renesas/ek_ra4e2/ek_ra4e2.dts new file mode 100644 index 0000000000000..626a5096d1c5e --- /dev/null +++ b/boards/renesas/ek_ra4e2/ek_ra4e2.dts @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include +#include "ek_ra4e2-pinctrl.dtsi" + +/ { + model = "Renesas EK-RA4E2"; + compatible = "renesas,ra4e2", "renesas,ra"; + + chosen { + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,console = &uart0; + zephyr,shell-uart = &uart0; + }; + + leds { + compatible = "gpio-leds"; + led1: led1 { + gpios = <&ioport2 7 GPIO_ACTIVE_HIGH>; + label = "LED1"; + }; + led2: led2 { + gpios = <&ioport1 4 GPIO_ACTIVE_HIGH>; + label = "LED2"; + }; + led3: led3 { + gpios = <&ioport1 12 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 = <10 0>; + freq = ; + status = "okay"; +}; + +&sci0 { + pinctrl-0 = <&sci0_default>; + pinctrl-names = "default"; + status = "okay"; + uart0: uart { + current-speed = <115200>; + status = "okay"; + }; +}; + +&ioport1 { + status = "okay"; +}; + +&ioport2 { + status = "okay"; +}; diff --git a/boards/renesas/ek_ra4e2/ek_ra4e2.yaml b/boards/renesas/ek_ra4e2/ek_ra4e2.yaml new file mode 100644 index 0000000000000..bceab6ca960ac --- /dev/null +++ b/boards/renesas/ek_ra4e2/ek_ra4e2.yaml @@ -0,0 +1,12 @@ +identifier: ek_ra4e2 +name: Renesas EK-RA4E2 +type: mcu +arch: arm +ram: 40 +flash: 128 +toolchain: + - zephyr + - gnuarmemb +supported: + - gpio + - uart diff --git a/boards/renesas/ek_ra4e2/ek_ra4e2_defconfig b/boards/renesas/ek_ra4e2/ek_ra4e2_defconfig new file mode 100644 index 0000000000000..79943a7610930 --- /dev/null +++ b/boards/renesas/ek_ra4e2/ek_ra4e2_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_ra4e2.overlay b/tests/drivers/uart/uart_async_api/boards/ek_ra4e2.overlay new file mode 100644 index 0000000000000..10121b5ad9ee9 --- /dev/null +++ b/tests/drivers/uart/uart_async_api/boards/ek_ra4e2.overlay @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + sci9_default: sci9_default { + group1 { + /* tx rx */ + psels = , + ; + }; + }; +}; + +&sci9 { + pinctrl-0 = <&sci9_default>; + pinctrl-names = "default"; + status = "okay"; + dut: uart { + current-speed = <115200>; + status = "okay"; + }; +}; From 4568561230a70bf41d3180a3bfa4190c14b4ba5a Mon Sep 17 00:00:00 2001 From: Quy Tran Date: Tue, 11 Jun 2024 06:54:51 +0000 Subject: [PATCH 3/9] soc: renesas: Add initial support for RA4M2 SoC Initial commit to support Renesas RA4M2 Soc Signed-off-by: Quy Tran --- dts/arm/renesas/ra/ra4/r7fa4m2ad3cfp.dtsi | 22 +++ dts/arm/renesas/ra/ra4/r7fa4m2ax.dtsi | 211 ++++++++++++++++++++++ soc/renesas/ra/ra4m2/CMakeLists.txt | 12 ++ soc/renesas/ra/ra4m2/Kconfig | 14 ++ soc/renesas/ra/ra4m2/Kconfig.defconfig | 12 ++ soc/renesas/ra/ra4m2/Kconfig.soc | 20 ++ soc/renesas/ra/ra4m2/sections.ld | 79 ++++++++ soc/renesas/ra/ra4m2/soc.c | 69 +++++++ soc/renesas/ra/ra4m2/soc.h | 16 ++ soc/renesas/ra/soc.yml | 3 + 10 files changed, 458 insertions(+) create mode 100644 dts/arm/renesas/ra/ra4/r7fa4m2ad3cfp.dtsi create mode 100644 dts/arm/renesas/ra/ra4/r7fa4m2ax.dtsi create mode 100644 soc/renesas/ra/ra4m2/CMakeLists.txt create mode 100644 soc/renesas/ra/ra4m2/Kconfig create mode 100644 soc/renesas/ra/ra4m2/Kconfig.defconfig create mode 100644 soc/renesas/ra/ra4m2/Kconfig.soc create mode 100644 soc/renesas/ra/ra4m2/sections.ld create mode 100644 soc/renesas/ra/ra4m2/soc.c create mode 100644 soc/renesas/ra/ra4m2/soc.h diff --git a/dts/arm/renesas/ra/ra4/r7fa4m2ad3cfp.dtsi b/dts/arm/renesas/ra/ra4/r7fa4m2ad3cfp.dtsi new file mode 100644 index 0000000000000..37b1961111c73 --- /dev/null +++ b/dts/arm/renesas/ra/ra4/r7fa4m2ad3cfp.dtsi @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include + +/ { + soc { + flash-controller@407e0000 { + reg = <0x407e0000 0x1000>; + #address-cells = <1>; + #size-cells = <1>; + flash0: flash@0 { + compatible = "soc-nv-flash"; + reg = <0x0 DT_SIZE_K(512)>; + }; + }; + }; +}; diff --git a/dts/arm/renesas/ra/ra4/r7fa4m2ax.dtsi b/dts/arm/renesas/ra/ra4/r7fa4m2ax.dtsi new file mode 100644 index 0000000000000..293fef836688c --- /dev/null +++ b/dts/arm/renesas/ra/ra4/r7fa4m2ax.dtsi @@ -0,0 +1,211 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include + +/ { + soc { + sram0: memory@20000000 { + compatible = "mmio-sram"; + reg = <0x20000000 DT_SIZE_K(128)>; + }; + + ioport6: gpio@400800c0 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x400800c0 0x20>; + port = <6>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + ioport7: gpio@400800e0 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x400800e0 0x20>; + port = <7>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + sci1: sci1@40118100 { + compatible = "renesas,ra-sci"; + interrupts = <4 1>, <5 1>, <6 1>, <7 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; + reg = <0x40118100 0x100>; + clocks = <&pclka MSTPB 30>; + status = "disabled"; + uart { + compatible = "renesas,ra-sci-uart"; + channel = <1>; + status = "disabled"; + }; + }; + + sci2: sci2@40118200 { + compatible = "renesas,ra-sci"; + interrupts = <8 1>, <9 1>, <10 1>, <11 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; + reg = <0x40118200 0x100>; + clocks = <&pclka MSTPB 29>; + status = "disabled"; + uart { + compatible = "renesas,ra-sci-uart"; + channel = <2>; + status = "disabled"; + }; + }; + + sci3: sci3@40118300 { + compatible = "renesas,ra-sci"; + interrupts = <12 1>, <13 1>, <14 1>, <15 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; + reg = <0x40118300 0x100>; + clocks = <&pclka MSTPB 28>; + status = "disabled"; + uart { + compatible = "renesas,ra-sci-uart"; + channel = <3>; + status = "disabled"; + }; + }; + + sci4: sci4@40118400 { + compatible = "renesas,ra-sci"; + interrupts = <16 1>, <17 1>, <18 1>, <19 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; + reg = <0x40118400 0x100>; + clocks = <&pclka MSTPB 27>; + status = "disabled"; + uart { + compatible = "renesas,ra-sci-uart"; + channel = <4>; + status = "disabled"; + }; + }; + }; + + clocks: clocks { + xtal: clock-xtal { + compatible = "renesas,ra-cgc-external-clock"; + clock-frequency = ; + #clock-cells = <0>; + status = "disabled"; + }; + + hoco: clock-hoco { + compatible = "fixed-clock"; + clock-frequency = ; + #clock-cells = <0>; + }; + + moco: clock-moco { + compatible = "fixed-clock"; + clock-frequency = ; + #clock-cells = <0>; + }; + + loco: clock-loco { + compatible = "fixed-clock"; + clock-frequency = <32768>; + #clock-cells = <0>; + }; + + subclk: clock-subclk { + compatible = "renesas,ra-cgc-subclk"; + clock-frequency = <32768>; + #clock-cells = <0>; + status = "disabled"; + }; + + pll: pll { + compatible = "renesas,ra-cgc-pll"; + #clock-cells = <0>; + + /* PLL */ + source = ; + div = ; + mul = <25 0>; + status = "disabled"; + freq = ; + }; + + pll2: pll2 { + compatible = "renesas,ra-cgc-pll"; + #clock-cells = <0>; + + /* PLL */ + source = ; + div = ; + mul = <20 0>; + status = "disabled"; + }; + + pclkblock: pclkblock { + compatible = "renesas,ra-cgc-pclk-block"; + #clock-cells = <0>; + sysclock-src = ; + status = "okay"; + + iclk: iclk { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + pclka: pclka { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + pclkb: pclkb { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + pclkc: pclkc { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + pclkd: pclkd { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + fclk: fclk { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + clkout: clkout { + compatible = "renesas,ra-cgc-pclk"; + #clock-cells = <2>; + status = "disabled"; + }; + + uclk: uclk { + compatible = "renesas,ra-cgc-pclk"; + #clock-cells = <2>; + status = "disabled"; + }; + }; + }; +}; diff --git a/soc/renesas/ra/ra4m2/CMakeLists.txt b/soc/renesas/ra/ra4m2/CMakeLists.txt new file mode 100644 index 0000000000000..1c7457569ef3e --- /dev/null +++ b/soc/renesas/ra/ra4m2/CMakeLists.txt @@ -0,0 +1,12 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +zephyr_include_directories(.) + +zephyr_sources( + soc.c +) + +zephyr_linker_sources(SECTIONS sections.ld) + +set(SOC_LINKER_SCRIPT ${ZEPHYR_BASE}/include/zephyr/arch/arm/cortex_m/scripts/linker.ld CACHE INTERNAL "") diff --git a/soc/renesas/ra/ra4m2/Kconfig b/soc/renesas/ra/ra4m2/Kconfig new file mode 100644 index 0000000000000..b10a0fc72eca9 --- /dev/null +++ b/soc/renesas/ra/ra4m2/Kconfig @@ -0,0 +1,14 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +config SOC_SERIES_RA4M2 + select ARM + select CPU_HAS_ARM_MPU + select CPU_CORTEX_M33 + select HAS_RENESAS_RA_FSP + select CPU_CORTEX_M_HAS_DWT + select ARMV8_M_DSP + select CPU_HAS_FPU + select FPU + select HAS_SWO + select XIP diff --git a/soc/renesas/ra/ra4m2/Kconfig.defconfig b/soc/renesas/ra/ra4m2/Kconfig.defconfig new file mode 100644 index 0000000000000..4d0b12330b0c5 --- /dev/null +++ b/soc/renesas/ra/ra4m2/Kconfig.defconfig @@ -0,0 +1,12 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +if SOC_SERIES_RA4M2 + +config NUM_IRQS + default 96 + +config PINCTRL + default y + +endif # SOC_SERIES_RA4M2 diff --git a/soc/renesas/ra/ra4m2/Kconfig.soc b/soc/renesas/ra/ra4m2/Kconfig.soc new file mode 100644 index 0000000000000..9878de8da67a6 --- /dev/null +++ b/soc/renesas/ra/ra4m2/Kconfig.soc @@ -0,0 +1,20 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +config SOC_SERIES_RA4M2 + bool + select SOC_FAMILY_RENESAS_RA + help + Renesas RA4M2 series + +config SOC_R7FA4M2AD3CFP + bool + select SOC_SERIES_RA4M2 + help + R7FA4M2AD3CFP + +config SOC_SERIES + default "ra4m2" if SOC_SERIES_RA4M2 + +config SOC + default "r7fa4m2ad3cfp" if SOC_R7FA4M2AD3CFP diff --git a/soc/renesas/ra/ra4m2/sections.ld b/soc/renesas/ra/ra4m2/sections.ld new file mode 100644 index 0000000000000..cfc81aeec00b5 --- /dev/null +++ b/soc/renesas/ra/ra4m2/sections.ld @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +.code_in_ram : +{ + . = ALIGN(4); + __Code_In_RAM_Start = .; + KEEP(*(.code_in_ram*)) + __Code_In_RAM_End = .; +} > RAMABLE_REGION + +SECTION_DATA_PROLOGUE(.fsp_dtc_vector_table,(NOLOAD),) +{ + /* If DTC is used, put the DTC vector table at the start of SRAM. + This avoids memory holes due to 1K alignment required by it. */ + *(.fsp_dtc_vector_table) +} GROUP_DATA_LINK_IN(RAMABLE_REGION, RAMABLE_REGION) + +SECTION_PROLOGUE(.option_setting_ofs,,) +{ + __OPTION_SETTING_OFS_Start = .; + KEEP(*(.option_setting_ofs0)) + . = __OPTION_SETTING_OFS_Start + 0x04; + KEEP(*(.option_setting_ofs2)) + . = __OPTION_SETTING_OFS_Start + 0x10; + KEEP(*(.option_setting_dualsel)) + __OPTION_SETTING_OFS_End = .; +} GROUP_LINK_IN(OPTION_SETTING_OFS) = 0xFF + +SECTION_PROLOGUE(.option_setting_sas,,) +{ + __OPTION_SETTING_SAS_Start = .; + KEEP(*(.option_setting_sas)) + __OPTION_SETTING_SAS_End = .; +} GROUP_LINK_IN(OPTION_SETTING_SAS) = 0xFF + +SECTION_PROLOGUE(.option_setting_s,,) +{ + __OPTION_SETTING_S_Start = .; + KEEP(*(.option_setting_ofs1_sec)) + . = __OPTION_SETTING_S_Start + 0x04; + KEEP(*(.option_setting_ofs3_sec)) + . = __OPTION_SETTING_S_Start + 0x10; + KEEP(*(.option_setting_banksel_sec)) + . = __OPTION_SETTING_S_Start + 0x40; + KEEP(*(.option_setting_bps_sec0)) + . = __OPTION_SETTING_S_Start + 0x44; + KEEP(*(.option_setting_bps_sec1)) + . = __OPTION_SETTING_S_Start + 0x48; + KEEP(*(.option_setting_bps_sec2)) + . = __OPTION_SETTING_S_Start + 0x4C; + KEEP(*(.option_setting_bps_sec3)) + . = __OPTION_SETTING_S_Start + 0x60; + KEEP(*(.option_setting_pbps_sec0)) + . = __OPTION_SETTING_S_Start + 0x64; + KEEP(*(.option_setting_pbps_sec1)) + . = __OPTION_SETTING_S_Start + 0x68; + KEEP(*(.option_setting_pbps_sec2)) + . = __OPTION_SETTING_S_Start + 0x6C; + KEEP(*(.option_setting_pbps_sec3)) + . = __OPTION_SETTING_S_Start + 0x80; + KEEP(*(.option_setting_ofs1_sel)) + . = __OPTION_SETTING_S_Start + 0x84; + KEEP(*(.option_setting_ofs3_sel)) + . = __OPTION_SETTING_S_Start + 0x90; + KEEP(*(.option_setting_banksel_sel)) + . = __OPTION_SETTING_S_Start + 0xC0; + KEEP(*(.option_setting_bps_sel0)) + . = __OPTION_SETTING_S_Start + 0xC4; + KEEP(*(.option_setting_bps_sel1)) + . = __OPTION_SETTING_S_Start + 0xC8; + KEEP(*(.option_setting_bps_sel2)) + . = __OPTION_SETTING_S_Start + 0xCC; + KEEP(*(.option_setting_bps_sel3)) + __OPTION_SETTING_S_End = .; +} GROUP_LINK_IN(OPTION_SETTING_S) = 0xFF diff --git a/soc/renesas/ra/ra4m2/soc.c b/soc/renesas/ra/ra4m2/soc.c new file mode 100644 index 0000000000000..3350f93f43894 --- /dev/null +++ b/soc/renesas/ra/ra4m2/soc.c @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief System/hardware module for Renesas RA4M2 family processor + */ + +#include +#include +#include +#include +#include +#include +#include +#include +LOG_MODULE_REGISTER(soc, CONFIG_SOC_LOG_LEVEL); + +#include "bsp_cfg.h" +#include + +uint32_t SystemCoreClock BSP_SECTION_EARLY_INIT; + +volatile uint32_t g_protect_pfswe_counter BSP_SECTION_EARLY_INIT; + +/** + * @brief Perform basic hardware initialization at boot. + * + * This needs to be run from the very beginning. + * So the init priority has to be 0 (zero). + * + * @return 0 + */ +static int renesas_ra4m2_init(void) +{ + extern volatile uint16_t g_protect_counters[]; + for (uint32_t i = 0; i < 4; i++) { + g_protect_counters[i] = 0; + } + +#if FSP_PRIV_TZ_USE_SECURE_REGS + /* Disable protection using PRCR register. */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_SAR); + + /* Initialize peripherals to secure mode for flat projects */ + R_PSCU->PSARB = 0; + R_PSCU->PSARC = 0; + R_PSCU->PSARD = 0; + R_PSCU->PSARE = 0; + + R_CPSCU->ICUSARG = 0; + R_CPSCU->ICUSARH = 0; + R_CPSCU->ICUSARI = 0; + + /* Enable protection using PRCR register. */ + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_SAR); +#endif + + SystemCoreClock = BSP_MOCO_HZ; + g_protect_pfswe_counter = 0; + bsp_clock_init(); + + return 0; +} + +SYS_INIT(renesas_ra4m2_init, PRE_KERNEL_1, 0); diff --git a/soc/renesas/ra/ra4m2/soc.h b/soc/renesas/ra/ra4m2/soc.h new file mode 100644 index 0000000000000..99cefaf34758c --- /dev/null +++ b/soc/renesas/ra/ra4m2/soc.h @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file SoC configuration macros for the Renesas RA4M2 family MCU + */ + +#ifndef ZEPHYR_SOC_RENESAS_RA4M2_SOC_H_ +#define ZEPHYR_SOC_RENESAS_RA4M2_SOC_H_ + +#include + +#endif /* ZEPHYR_SOC_RENESAS_RA4M2_SOC_H_ */ diff --git a/soc/renesas/ra/soc.yml b/soc/renesas/ra/soc.yml index d0a11f689eae5..27aba194fa4e4 100644 --- a/soc/renesas/ra/soc.yml +++ b/soc/renesas/ra/soc.yml @@ -10,6 +10,9 @@ family: - name: ra4m1 socs: - name: r7fa4m1ab3cfm + - name: ra4m2 + socs: + - name: r7fa4m2ad3cfp - name: ra6m1 socs: - name: r7fa6m1ad3cfp From 5250af1b5aa707d89e35b5c54c43e4a062c8f03c Mon Sep 17 00:00:00 2001 From: Quy Tran Date: Tue, 11 Jun 2024 07:15:35 +0000 Subject: [PATCH 4/9] 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 0000000000000..bd762fb2bd9a5 --- /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 0000000000000..f0faf6c179ab1 --- /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 0000000000000..c19484eff8a9f --- /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 0000000000000..6fabd2116aa8f --- /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 0000000000000..a513c7a3ca14b --- /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 0000000000000..d61c6bf05fe82 --- /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 0000000000000..79943a7610930 --- /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 0000000000000..21e0f0f9141cc --- /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"; + }; +}; From cf0948f3738d8fc7b86dd0eaa73490b94899cefe Mon Sep 17 00:00:00 2001 From: Quy Tran Date: Tue, 11 Jun 2024 08:26:18 +0000 Subject: [PATCH 5/9] soc: renesas: Add initial support for RA4M3 SOC Initial commit to support Renesas RA4M3 SOC Signed-off-by: Quy Tran --- dts/arm/renesas/ra/ra4/r7fa4m3af3cfb.dtsi | 22 +++ dts/arm/renesas/ra/ra4/r7fa4m3ax.dtsi | 219 ++++++++++++++++++++++ soc/renesas/ra/ra4m3/CMakeLists.txt | 12 ++ soc/renesas/ra/ra4m3/Kconfig | 14 ++ soc/renesas/ra/ra4m3/Kconfig.defconfig | 12 ++ soc/renesas/ra/ra4m3/Kconfig.soc | 20 ++ soc/renesas/ra/ra4m3/sections.ld | 79 ++++++++ soc/renesas/ra/ra4m3/soc.c | 69 +++++++ soc/renesas/ra/ra4m3/soc.h | 16 ++ soc/renesas/ra/soc.yml | 3 + 10 files changed, 466 insertions(+) create mode 100644 dts/arm/renesas/ra/ra4/r7fa4m3af3cfb.dtsi create mode 100644 dts/arm/renesas/ra/ra4/r7fa4m3ax.dtsi create mode 100644 soc/renesas/ra/ra4m3/CMakeLists.txt create mode 100644 soc/renesas/ra/ra4m3/Kconfig create mode 100644 soc/renesas/ra/ra4m3/Kconfig.defconfig create mode 100644 soc/renesas/ra/ra4m3/Kconfig.soc create mode 100644 soc/renesas/ra/ra4m3/sections.ld create mode 100644 soc/renesas/ra/ra4m3/soc.c create mode 100644 soc/renesas/ra/ra4m3/soc.h diff --git a/dts/arm/renesas/ra/ra4/r7fa4m3af3cfb.dtsi b/dts/arm/renesas/ra/ra4/r7fa4m3af3cfb.dtsi new file mode 100644 index 0000000000000..7d0d8b908d51c --- /dev/null +++ b/dts/arm/renesas/ra/ra4/r7fa4m3af3cfb.dtsi @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include + +/ { + soc { + flash-controller@407e0000 { + reg = <0x407e0000 0x1000>; + #address-cells = <1>; + #size-cells = <1>; + flash0: flash@0 { + compatible = "soc-nv-flash"; + reg = <0x0 DT_SIZE_M(1)>; + }; + }; + }; +}; diff --git a/dts/arm/renesas/ra/ra4/r7fa4m3ax.dtsi b/dts/arm/renesas/ra/ra4/r7fa4m3ax.dtsi new file mode 100644 index 0000000000000..01678b545c506 --- /dev/null +++ b/dts/arm/renesas/ra/ra4/r7fa4m3ax.dtsi @@ -0,0 +1,219 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include + +/ { + soc { + sram0: memory@20000000 { + compatible = "mmio-sram"; + reg = <0x20000000 DT_SIZE_K(128)>; + }; + + ioport6: gpio@400800c0 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x400800c0 0x20>; + port = <6>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + ioport7: gpio@400800e0 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x400800e0 0x20>; + port = <7>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + ioport8: gpio@40080100 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x40080100 0x20>; + port = <8>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + sci1: sci1@40118100 { + compatible = "renesas,ra-sci"; + interrupts = <4 1>, <5 1>, <6 1>, <7 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; + reg = <0x40118100 0x100>; + clocks = <&pclka MSTPB 30>; + status = "disabled"; + uart { + compatible = "renesas,ra-sci-uart"; + channel = <1>; + status = "disabled"; + }; + }; + + sci2: sci2@40118200 { + compatible = "renesas,ra-sci"; + interrupts = <8 1>, <9 1>, <10 1>, <11 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; + reg = <0x40118200 0x100>; + clocks = <&pclka MSTPB 29>; + status = "disabled"; + uart { + compatible = "renesas,ra-sci-uart"; + channel = <2>; + status = "disabled"; + }; + }; + + sci3: sci3@40118300 { + compatible = "renesas,ra-sci"; + interrupts = <12 1>, <13 1>, <14 1>, <15 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; + reg = <0x40118300 0x100>; + clocks = <&pclka MSTPB 28>; + status = "disabled"; + uart { + compatible = "renesas,ra-sci-uart"; + channel = <3>; + status = "disabled"; + }; + }; + + sci4: sci4@40118400 { + compatible = "renesas,ra-sci"; + interrupts = <16 1>, <17 1>, <18 1>, <19 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; + reg = <0x40118400 0x100>; + clocks = <&pclka MSTPB 27>; + status = "disabled"; + uart { + compatible = "renesas,ra-sci-uart"; + channel = <4>; + status = "disabled"; + }; + }; + }; + + clocks: clocks { + xtal: clock-xtal { + compatible = "renesas,ra-cgc-external-clock"; + clock-frequency = ; + #clock-cells = <0>; + status = "disabled"; + }; + + hoco: clock-hoco { + compatible = "fixed-clock"; + clock-frequency = ; + #clock-cells = <0>; + }; + + moco: clock-moco { + compatible = "fixed-clock"; + clock-frequency = ; + #clock-cells = <0>; + }; + + loco: clock-loco { + compatible = "fixed-clock"; + clock-frequency = <32768>; + #clock-cells = <0>; + }; + + subclk: clock-subclk { + compatible = "renesas,ra-cgc-subclk"; + clock-frequency = <32768>; + #clock-cells = <0>; + status = "disabled"; + }; + + pll: pll { + compatible = "renesas,ra-cgc-pll"; + #clock-cells = <0>; + + /* PLL */ + source = ; + div = ; + mul = <25 0>; + status = "disabled"; + freq = ; + }; + + pll2: pll2 { + compatible = "renesas,ra-cgc-pll"; + #clock-cells = <0>; + source = ; + div = ; + mul = <20 0>; + status = "disabled"; + }; + + pclkblock: pclkblock { + compatible = "renesas,ra-cgc-pclk-block"; + #clock-cells = <0>; + sysclock-src = ; + status = "okay"; + + iclk: iclk { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + pclka: pclka { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + pclkb: pclkb { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + pclkc: pclkc { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + pclkd: pclkd { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + fclk: fclk { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + clkout: clkout { + compatible = "renesas,ra-cgc-pclk"; + #clock-cells = <2>; + status = "disabled"; + }; + + uclk: uclk { + compatible = "renesas,ra-cgc-pclk"; + #clock-cells = <2>; + status = "disabled"; + }; + }; + }; +}; diff --git a/soc/renesas/ra/ra4m3/CMakeLists.txt b/soc/renesas/ra/ra4m3/CMakeLists.txt new file mode 100644 index 0000000000000..1c7457569ef3e --- /dev/null +++ b/soc/renesas/ra/ra4m3/CMakeLists.txt @@ -0,0 +1,12 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +zephyr_include_directories(.) + +zephyr_sources( + soc.c +) + +zephyr_linker_sources(SECTIONS sections.ld) + +set(SOC_LINKER_SCRIPT ${ZEPHYR_BASE}/include/zephyr/arch/arm/cortex_m/scripts/linker.ld CACHE INTERNAL "") diff --git a/soc/renesas/ra/ra4m3/Kconfig b/soc/renesas/ra/ra4m3/Kconfig new file mode 100644 index 0000000000000..b5bb4e0372deb --- /dev/null +++ b/soc/renesas/ra/ra4m3/Kconfig @@ -0,0 +1,14 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +config SOC_SERIES_RA4M3 + select ARM + select CPU_HAS_ARM_MPU + select CPU_CORTEX_M33 + select HAS_RENESAS_RA_FSP + select CPU_CORTEX_M_HAS_DWT + select ARMV8_M_DSP + select CPU_HAS_FPU + select FPU + select HAS_SWO + select XIP diff --git a/soc/renesas/ra/ra4m3/Kconfig.defconfig b/soc/renesas/ra/ra4m3/Kconfig.defconfig new file mode 100644 index 0000000000000..a93ed41ee240f --- /dev/null +++ b/soc/renesas/ra/ra4m3/Kconfig.defconfig @@ -0,0 +1,12 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +if SOC_SERIES_RA4M3 + +config NUM_IRQS + default 96 + +config PINCTRL + default y + +endif # SOC_SERIES_RA4M3 diff --git a/soc/renesas/ra/ra4m3/Kconfig.soc b/soc/renesas/ra/ra4m3/Kconfig.soc new file mode 100644 index 0000000000000..7b32bdd622555 --- /dev/null +++ b/soc/renesas/ra/ra4m3/Kconfig.soc @@ -0,0 +1,20 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +config SOC_SERIES_RA4M3 + bool + select SOC_FAMILY_RENESAS_RA + help + Renesas RA4M3 series + +config SOC_R7FA4M3AF3CFB + bool + select SOC_SERIES_RA4M3 + help + R7FA4M3AF3CFB + +config SOC_SERIES + default "ra4m3" if SOC_SERIES_RA4M3 + +config SOC + default "r7fa4m3af3cfb" if SOC_R7FA4M3AF3CFB diff --git a/soc/renesas/ra/ra4m3/sections.ld b/soc/renesas/ra/ra4m3/sections.ld new file mode 100644 index 0000000000000..cfc81aeec00b5 --- /dev/null +++ b/soc/renesas/ra/ra4m3/sections.ld @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +.code_in_ram : +{ + . = ALIGN(4); + __Code_In_RAM_Start = .; + KEEP(*(.code_in_ram*)) + __Code_In_RAM_End = .; +} > RAMABLE_REGION + +SECTION_DATA_PROLOGUE(.fsp_dtc_vector_table,(NOLOAD),) +{ + /* If DTC is used, put the DTC vector table at the start of SRAM. + This avoids memory holes due to 1K alignment required by it. */ + *(.fsp_dtc_vector_table) +} GROUP_DATA_LINK_IN(RAMABLE_REGION, RAMABLE_REGION) + +SECTION_PROLOGUE(.option_setting_ofs,,) +{ + __OPTION_SETTING_OFS_Start = .; + KEEP(*(.option_setting_ofs0)) + . = __OPTION_SETTING_OFS_Start + 0x04; + KEEP(*(.option_setting_ofs2)) + . = __OPTION_SETTING_OFS_Start + 0x10; + KEEP(*(.option_setting_dualsel)) + __OPTION_SETTING_OFS_End = .; +} GROUP_LINK_IN(OPTION_SETTING_OFS) = 0xFF + +SECTION_PROLOGUE(.option_setting_sas,,) +{ + __OPTION_SETTING_SAS_Start = .; + KEEP(*(.option_setting_sas)) + __OPTION_SETTING_SAS_End = .; +} GROUP_LINK_IN(OPTION_SETTING_SAS) = 0xFF + +SECTION_PROLOGUE(.option_setting_s,,) +{ + __OPTION_SETTING_S_Start = .; + KEEP(*(.option_setting_ofs1_sec)) + . = __OPTION_SETTING_S_Start + 0x04; + KEEP(*(.option_setting_ofs3_sec)) + . = __OPTION_SETTING_S_Start + 0x10; + KEEP(*(.option_setting_banksel_sec)) + . = __OPTION_SETTING_S_Start + 0x40; + KEEP(*(.option_setting_bps_sec0)) + . = __OPTION_SETTING_S_Start + 0x44; + KEEP(*(.option_setting_bps_sec1)) + . = __OPTION_SETTING_S_Start + 0x48; + KEEP(*(.option_setting_bps_sec2)) + . = __OPTION_SETTING_S_Start + 0x4C; + KEEP(*(.option_setting_bps_sec3)) + . = __OPTION_SETTING_S_Start + 0x60; + KEEP(*(.option_setting_pbps_sec0)) + . = __OPTION_SETTING_S_Start + 0x64; + KEEP(*(.option_setting_pbps_sec1)) + . = __OPTION_SETTING_S_Start + 0x68; + KEEP(*(.option_setting_pbps_sec2)) + . = __OPTION_SETTING_S_Start + 0x6C; + KEEP(*(.option_setting_pbps_sec3)) + . = __OPTION_SETTING_S_Start + 0x80; + KEEP(*(.option_setting_ofs1_sel)) + . = __OPTION_SETTING_S_Start + 0x84; + KEEP(*(.option_setting_ofs3_sel)) + . = __OPTION_SETTING_S_Start + 0x90; + KEEP(*(.option_setting_banksel_sel)) + . = __OPTION_SETTING_S_Start + 0xC0; + KEEP(*(.option_setting_bps_sel0)) + . = __OPTION_SETTING_S_Start + 0xC4; + KEEP(*(.option_setting_bps_sel1)) + . = __OPTION_SETTING_S_Start + 0xC8; + KEEP(*(.option_setting_bps_sel2)) + . = __OPTION_SETTING_S_Start + 0xCC; + KEEP(*(.option_setting_bps_sel3)) + __OPTION_SETTING_S_End = .; +} GROUP_LINK_IN(OPTION_SETTING_S) = 0xFF diff --git a/soc/renesas/ra/ra4m3/soc.c b/soc/renesas/ra/ra4m3/soc.c new file mode 100644 index 0000000000000..3f0c31b630a4f --- /dev/null +++ b/soc/renesas/ra/ra4m3/soc.c @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief System/hardware module for Renesas RA4M3 family processor + */ + +#include +#include +#include +#include +#include +#include +#include +#include +LOG_MODULE_REGISTER(soc, CONFIG_SOC_LOG_LEVEL); + +#include "bsp_cfg.h" +#include + +uint32_t SystemCoreClock BSP_SECTION_EARLY_INIT; + +volatile uint32_t g_protect_pfswe_counter BSP_SECTION_EARLY_INIT; + +/** + * @brief Perform basic hardware initialization at boot. + * + * This needs to be run from the very beginning. + * So the init priority has to be 0 (zero). + * + * @return 0 + */ +static int renesas_ra4m3_init(void) +{ + extern volatile uint16_t g_protect_counters[]; + for (uint32_t i = 0; i < 4; i++) { + g_protect_counters[i] = 0; + } + +#if FSP_PRIV_TZ_USE_SECURE_REGS + /* Disable protection using PRCR register. */ + R_BSP_RegisterProtectDisable(BSP_REG_PROTECT_SAR); + + /* Initialize peripherals to secure mode for flat projects */ + R_PSCU->PSARB = 0; + R_PSCU->PSARC = 0; + R_PSCU->PSARD = 0; + R_PSCU->PSARE = 0; + + R_CPSCU->ICUSARG = 0; + R_CPSCU->ICUSARH = 0; + R_CPSCU->ICUSARI = 0; + + /* Enable protection using PRCR register. */ + R_BSP_RegisterProtectEnable(BSP_REG_PROTECT_SAR); +#endif + + SystemCoreClock = BSP_MOCO_HZ; + g_protect_pfswe_counter = 0; + bsp_clock_init(); + + return 0; +} + +SYS_INIT(renesas_ra4m3_init, PRE_KERNEL_1, 0); diff --git a/soc/renesas/ra/ra4m3/soc.h b/soc/renesas/ra/ra4m3/soc.h new file mode 100644 index 0000000000000..7910a06c96a78 --- /dev/null +++ b/soc/renesas/ra/ra4m3/soc.h @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file SoC configuration macros for the Renesas RA4M3 family MCU + */ + +#ifndef ZEPHYR_SOC_RENESAS_RA4M3_SOC_H_ +#define ZEPHYR_SOC_RENESAS_RA4M3_SOC_H_ + +#include + +#endif /* ZEPHYR_SOC_RENESAS_RA4M3_SOC_H_ */ diff --git a/soc/renesas/ra/soc.yml b/soc/renesas/ra/soc.yml index 27aba194fa4e4..c8fbc6476f3e7 100644 --- a/soc/renesas/ra/soc.yml +++ b/soc/renesas/ra/soc.yml @@ -13,6 +13,9 @@ family: - name: ra4m2 socs: - name: r7fa4m2ad3cfp + - name: ra4m3 + socs: + - name: r7fa4m3af3cfb - name: ra6m1 socs: - name: r7fa6m1ad3cfp From 91a97377dd5e3f9d984b400569cb88da77ac842f Mon Sep 17 00:00:00 2001 From: Quy Tran Date: Tue, 11 Jun 2024 08:48:27 +0000 Subject: [PATCH 6/9] boards: renesas: Add initial support for EK-RA4M3 board Initial commit to support Renesas EK-RA4M3 board Signed-off-by: Quy Tran Signed-off-by: Duy Phuong Hoang. Nguyen --- boards/renesas/ek_ra4m3/Kconfig.ek_ra4m3 | 5 + boards/renesas/ek_ra4m3/board.cmake | 6 + boards/renesas/ek_ra4m3/board.yml | 5 + .../renesas/ek_ra4m3/doc/ek-ra4m3-board.webp | Bin 0 -> 52290 bytes boards/renesas/ek_ra4m3/doc/index.rst | 165 ++++++++++++++++++ .../ek_ra4m3/doc/ra4m3-block-diagram.webp | Bin 0 -> 56614 bytes boards/renesas/ek_ra4m3/ek_ra4m3-pinctrl.dtsi | 14 ++ boards/renesas/ek_ra4m3/ek_ra4m3.dts | 75 ++++++++ boards/renesas/ek_ra4m3/ek_ra4m3.yaml | 12 ++ boards/renesas/ek_ra4m3/ek_ra4m3_defconfig | 17 ++ .../uart_async_api/boards/ek_ra4m3.overlay | 24 +++ 11 files changed, 323 insertions(+) create mode 100644 boards/renesas/ek_ra4m3/Kconfig.ek_ra4m3 create mode 100644 boards/renesas/ek_ra4m3/board.cmake create mode 100644 boards/renesas/ek_ra4m3/board.yml create mode 100644 boards/renesas/ek_ra4m3/doc/ek-ra4m3-board.webp create mode 100644 boards/renesas/ek_ra4m3/doc/index.rst create mode 100644 boards/renesas/ek_ra4m3/doc/ra4m3-block-diagram.webp create mode 100644 boards/renesas/ek_ra4m3/ek_ra4m3-pinctrl.dtsi create mode 100644 boards/renesas/ek_ra4m3/ek_ra4m3.dts create mode 100644 boards/renesas/ek_ra4m3/ek_ra4m3.yaml create mode 100644 boards/renesas/ek_ra4m3/ek_ra4m3_defconfig create mode 100644 tests/drivers/uart/uart_async_api/boards/ek_ra4m3.overlay diff --git a/boards/renesas/ek_ra4m3/Kconfig.ek_ra4m3 b/boards/renesas/ek_ra4m3/Kconfig.ek_ra4m3 new file mode 100644 index 0000000000000..5060f6a325e4a --- /dev/null +++ b/boards/renesas/ek_ra4m3/Kconfig.ek_ra4m3 @@ -0,0 +1,5 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_EK_RA4M3 + select SOC_R7FA4M3AF3CFB diff --git a/boards/renesas/ek_ra4m3/board.cmake b/boards/renesas/ek_ra4m3/board.cmake new file mode 100644 index 0000000000000..98f1f87f5b721 --- /dev/null +++ b/boards/renesas/ek_ra4m3/board.cmake @@ -0,0 +1,6 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +board_runner_args(jlink "--device=R7FA4M3AF") + +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/renesas/ek_ra4m3/board.yml b/boards/renesas/ek_ra4m3/board.yml new file mode 100644 index 0000000000000..30b3b39ac4e34 --- /dev/null +++ b/boards/renesas/ek_ra4m3/board.yml @@ -0,0 +1,5 @@ +board: + name: ek_ra4m3 + vendor: renesas + socs: + - name: r7fa4m3af3cfb diff --git a/boards/renesas/ek_ra4m3/doc/ek-ra4m3-board.webp b/boards/renesas/ek_ra4m3/doc/ek-ra4m3-board.webp new file mode 100644 index 0000000000000000000000000000000000000000..998092d81716a664131bb65af57c5f984dd5c19d GIT binary patch literal 52290 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 + +**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-RA4M3 Website`_ +- `RA4M3 MCU group Website`_ + +.. _EK-RA4M3 Website: + https://www.renesas.com/us/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra4m3-evaluation-kit-ra4m3-mcu-group + +.. _RA4M3 MCU group Website: + https://www.renesas.com/us/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ra4m3-100mhz-arm-cortex-m33-trustzone-high-integration-rich-connectivity + +.. _EK-RA4M3 - User's Manual: + https://www.renesas.com/us/en/document/mat/ek-ra4m3-v1-users-manual + +.. _RA4M3 Group User's Manual Hardware: + https://www.renesas.com/us/en/document/man/ra4m3-group-users-manual-hardware + +.. _Segger Ozone Download: + https://www.segger.com/downloads/jlink#Ozone diff --git a/boards/renesas/ek_ra4m3/doc/ra4m3-block-diagram.webp b/boards/renesas/ek_ra4m3/doc/ra4m3-block-diagram.webp new file mode 100644 index 0000000000000000000000000000000000000000..d3d70ebcd38bbfd463dd5cdbceda089f49c156b7 GIT binary patch literal 56614 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 TEi51a00aORyD, + ; + }; + }; +}; diff --git a/boards/renesas/ek_ra4m3/ek_ra4m3.dts b/boards/renesas/ek_ra4m3/ek_ra4m3.dts new file mode 100644 index 0000000000000..024aefd0223bd --- /dev/null +++ b/boards/renesas/ek_ra4m3/ek_ra4m3.dts @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include +#include "ek_ra4m3-pinctrl.dtsi" + +/ { + model = "Renesas EK-RA4M3"; + compatible = "renesas,ra4m3", "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 0 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_ra4m3/ek_ra4m3.yaml b/boards/renesas/ek_ra4m3/ek_ra4m3.yaml new file mode 100644 index 0000000000000..e05b8e804da78 --- /dev/null +++ b/boards/renesas/ek_ra4m3/ek_ra4m3.yaml @@ -0,0 +1,12 @@ +identifier: ek_ra4m3 +name: Renesas EK-RA4M3 +type: mcu +arch: arm +ram: 128 +flash: 1024 +toolchain: + - zephyr + - gnuarmemb +supported: + - gpio + - uart diff --git a/boards/renesas/ek_ra4m3/ek_ra4m3_defconfig b/boards/renesas/ek_ra4m3/ek_ra4m3_defconfig new file mode 100644 index 0000000000000..79943a7610930 --- /dev/null +++ b/boards/renesas/ek_ra4m3/ek_ra4m3_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_ra4m3.overlay b/tests/drivers/uart/uart_async_api/boards/ek_ra4m3.overlay new file mode 100644 index 0000000000000..dbef642d32d9e --- /dev/null +++ b/tests/drivers/uart/uart_async_api/boards/ek_ra4m3.overlay @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + sci9_default: sci9_default { + group1 { + /* tx rx */ + psels = , + ; + }; + }; +}; + +&sci9 { + pinctrl-0 = <&sci9_default>; + pinctrl-names = "default"; + status = "okay"; + dut: uart { + current-speed = <115200>; + status = "okay"; + }; +}; From 893d699ba4ed802030355ad573ecb7b6d2ba7719 Mon Sep 17 00:00:00 2001 From: Quy Tran Date: Tue, 11 Jun 2024 10:14:06 +0000 Subject: [PATCH 7/9] soc: renesas: Add initial support for RA4W1 SOC Initial commit to support Renesas RA4W1 SOC Signed-off-by: Quy Tran --- dts/arm/renesas/ra/ra4/r7fa4w1ad2cng.dtsi | 146 +++++++++++++++++ dts/arm/renesas/ra/ra4/ra4-cm4-common.dtsi | 174 +++++++++++++++++++++ soc/renesas/ra/ra4w1/CMakeLists.txt | 14 ++ soc/renesas/ra/ra4w1/Kconfig | 13 ++ soc/renesas/ra/ra4w1/Kconfig.defconfig | 12 ++ soc/renesas/ra/ra4w1/Kconfig.soc | 20 +++ soc/renesas/ra/ra4w1/opt_set_mem.ld | 11 ++ soc/renesas/ra/ra4w1/sections.ld | 25 +++ soc/renesas/ra/ra4w1/soc.c | 46 ++++++ soc/renesas/ra/ra4w1/soc.h | 16 ++ soc/renesas/ra/soc.yml | 3 + 11 files changed, 480 insertions(+) create mode 100644 dts/arm/renesas/ra/ra4/r7fa4w1ad2cng.dtsi create mode 100644 dts/arm/renesas/ra/ra4/ra4-cm4-common.dtsi create mode 100644 soc/renesas/ra/ra4w1/CMakeLists.txt create mode 100644 soc/renesas/ra/ra4w1/Kconfig create mode 100644 soc/renesas/ra/ra4w1/Kconfig.defconfig create mode 100644 soc/renesas/ra/ra4w1/Kconfig.soc create mode 100644 soc/renesas/ra/ra4w1/opt_set_mem.ld create mode 100644 soc/renesas/ra/ra4w1/sections.ld create mode 100644 soc/renesas/ra/ra4w1/soc.c create mode 100644 soc/renesas/ra/ra4w1/soc.h diff --git a/dts/arm/renesas/ra/ra4/r7fa4w1ad2cng.dtsi b/dts/arm/renesas/ra/ra4/r7fa4w1ad2cng.dtsi new file mode 100644 index 0000000000000..a798029576fa7 --- /dev/null +++ b/dts/arm/renesas/ra/ra4/r7fa4w1ad2cng.dtsi @@ -0,0 +1,146 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include + +/ { + soc { + sram0: memory@20000000 { + compatible = "mmio-sram"; + reg = <0x20000000 DT_SIZE_K(96)>; + }; + + flash-controller@407e0000 { + flash0: flash@0 { + compatible = "soc-nv-flash"; + reg = <0x0 DT_SIZE_K(512)>; + }; + }; + + sci4: sci4@40070080 { + compatible = "renesas,ra-sci"; + interrupts = <16 1>, <17 1>, <18 1>, <19 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; + reg = <0x40070080 0x20>; + clocks = <&pclka MSTPB 26>; + status = "disabled"; + uart { + compatible = "renesas,ra-sci-uart"; + channel = <4>; + status = "disabled"; + }; + }; + }; + + clocks: clocks { + xtal: clock-xtal { + compatible = "renesas,ra-cgc-external-clock"; + clock-frequency = ; + #clock-cells = <0>; + status = "disabled"; + }; + + hoco: clock-hoco { + compatible = "fixed-clock"; + clock-frequency = ; + #clock-cells = <0>; + }; + + moco: clock-moco { + compatible = "fixed-clock"; + clock-frequency = ; + #clock-cells = <0>; + }; + + loco: clock-loco { + compatible = "fixed-clock"; + clock-frequency = <32768>; + #clock-cells = <0>; + }; + + subclk: clock-subclk { + compatible = "renesas,ra-cgc-subclk"; + clock-frequency = <32768>; + #clock-cells = <0>; + status = "disabled"; + }; + + pll: pll { + compatible = "renesas,ra-cgc-pll"; + #clock-cells = <0>; + + /* PLL */ + source = ; + div = ; + mul = <12 0>; + freq = ; + status = "disabled"; + }; + + pclkblock: pclkblock { + compatible = "renesas,ra-cgc-pclk-block"; + #clock-cells = <0>; + sysclock-src = ; + status = "okay"; + + iclk: iclk { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + pclka: pclka { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + pclkb: pclkb { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + pclkc: pclkc { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + pclkd: pclkd { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + fclk: fclk { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + + clkout: clkout { + compatible = "renesas,ra-cgc-pclk"; + #clock-cells = <2>; + status = "disabled"; + }; + + uclk: uclk { + compatible = "renesas,ra-cgc-pclk"; + clk_div = ; + #clock-cells = <2>; + status = "okay"; + }; + }; + }; +}; diff --git a/dts/arm/renesas/ra/ra4/ra4-cm4-common.dtsi b/dts/arm/renesas/ra/ra4/ra4-cm4-common.dtsi new file mode 100644 index 0000000000000..69a90813f1e53 --- /dev/null +++ b/dts/arm/renesas/ra/ra4/ra4-cm4-common.dtsi @@ -0,0 +1,174 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include + +/ { + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-m4"; + reg = <0>; + #address-cells = <1>; + #size-cells = <1>; + + mpu: mpu@e000ed90 { + compatible = "arm,armv7m-mpu"; + reg = <0xe000ed90 0x40>; + }; + + }; + }; + + soc { + system: system@4001e000 { + compatible = "renesas,ra-system"; + reg = <0x4001e000 0x1000>; + status = "okay"; + }; + + flash-controller@407e0000 { + reg = <0x407e0000 0x10000>; + #address-cells = <1>; + #size-cells = <1>; + }; + + ioport0: gpio@40040000 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x40040000 0x20>; + port = <0>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + ioport1: gpio@40040020 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x40040020 0x20>; + port = <1>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + ioport2: gpio@40040040 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x40040040 0x20>; + port = <2>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + ioport3: gpio@40040060 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x40040060 0x20>; + port = <3>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + ioport4: gpio@40040080 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x40040080 0x20>; + port = <4>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + ioport5: gpio@400400a0 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x400400a0 0x20>; + port = <5>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + ioport9: gpio@40040120 { + compatible = "renesas,ra-gpio-ioport"; + reg = <0x40040120 0x20>; + port = <9>; + gpio-controller; + #gpio-cells = <2>; + ngpios = <16>; + status = "disabled"; + }; + + pinctrl: pin-controller@40040800 { + compatible = "renesas,ra-pinctrl-pfs"; + reg = <0x40040800 0x3c0>; + status = "okay"; + }; + + sci0: sci0@40070000 { + compatible = "renesas,ra-sci"; + interrupts = <0 1>, <1 1>, <2 1>, <3 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; + reg = <0x40070000 0x20>; + clocks = <&pclka MSTPB 31>; + status = "disabled"; + uart { + compatible = "renesas,ra-sci-uart"; + channel = <0>; + status = "disabled"; + }; + }; + + sci1: sci1@40070020 { + compatible = "renesas,ra-sci"; + interrupts = <4 1>, <5 1>, <6 1>, <7 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; + reg = <0x40070020 0x20>; + clocks = <&pclka MSTPB 30>; + status = "disabled"; + uart { + compatible = "renesas,ra-sci-uart"; + channel = <1>; + status = "disabled"; + }; + }; + + sci9: sci9@40070120 { + compatible = "renesas,ra-sci"; + interrupts = <36 1>, <37 1>, <38 1>, <39 1>; + interrupt-names = "rxi", "txi", "tei", "eri"; + reg = <0x40070120 0x20>; + clocks = <&pclka MSTPB 22>; + status = "disabled"; + uart { + compatible = "renesas,ra-sci-uart"; + channel = <9>; + status = "disabled"; + }; + }; + + id_code: id_code@1010018 { + compatible = "zephyr,memory-region"; + reg = <0x01010018 0x20>; + zephyr,memory-region = "ID_CODE"; + status = "okay"; + }; + }; +}; + +&nvic { + arm,num-irq-priority-bits = <4>; +}; diff --git a/soc/renesas/ra/ra4w1/CMakeLists.txt b/soc/renesas/ra/ra4w1/CMakeLists.txt new file mode 100644 index 0000000000000..ccc5f9899ae8c --- /dev/null +++ b/soc/renesas/ra/ra4w1/CMakeLists.txt @@ -0,0 +1,14 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +zephyr_include_directories(.) + +zephyr_sources( + soc.c +) + +zephyr_linker_sources(ROM_START opt_set_mem.ld) + +zephyr_linker_sources(SECTIONS sections.ld) + +set(SOC_LINKER_SCRIPT ${ZEPHYR_BASE}/include/zephyr/arch/arm/cortex_m/scripts/linker.ld CACHE INTERNAL "") diff --git a/soc/renesas/ra/ra4w1/Kconfig b/soc/renesas/ra/ra4w1/Kconfig new file mode 100644 index 0000000000000..79a0c8c31d38d --- /dev/null +++ b/soc/renesas/ra/ra4w1/Kconfig @@ -0,0 +1,13 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +config SOC_SERIES_RA4W1 + select ARM + select CPU_HAS_ARM_MPU + select CPU_CORTEX_M4 + select HAS_RENESAS_RA_FSP + select CPU_CORTEX_M_HAS_DWT + select CPU_HAS_FPU + select FPU + select HAS_SWO + select XIP diff --git a/soc/renesas/ra/ra4w1/Kconfig.defconfig b/soc/renesas/ra/ra4w1/Kconfig.defconfig new file mode 100644 index 0000000000000..c73bab8b0975f --- /dev/null +++ b/soc/renesas/ra/ra4w1/Kconfig.defconfig @@ -0,0 +1,12 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +if SOC_SERIES_RA4W1 + +config NUM_IRQS + default 32 + +config PINCTRL + default y + +endif # SOC_SERIES_RA4W1 diff --git a/soc/renesas/ra/ra4w1/Kconfig.soc b/soc/renesas/ra/ra4w1/Kconfig.soc new file mode 100644 index 0000000000000..a406dd97eaecc --- /dev/null +++ b/soc/renesas/ra/ra4w1/Kconfig.soc @@ -0,0 +1,20 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +config SOC_SERIES_RA4W1 + bool + select SOC_FAMILY_RENESAS_RA + help + Renesas RA4W1 series + +config SOC_R7FA4W1AD2CNG + bool + select SOC_SERIES_RA4W1 + help + R7FA4W1AD2CNG + +config SOC_SERIES + default "ra4w1" if SOC_SERIES_RA4W1 + +config SOC + default "r7fa4w1ad2cng" if SOC_R7FA4W1AD2CNG diff --git a/soc/renesas/ra/ra4w1/opt_set_mem.ld b/soc/renesas/ra/ra4w1/opt_set_mem.ld new file mode 100644 index 0000000000000..07aef9e92d838 --- /dev/null +++ b/soc/renesas/ra/ra4w1/opt_set_mem.ld @@ -0,0 +1,11 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/* ROM Registers start at address 0x00000400 */ +. = 0x400; +KEEP(*(.rom_registers*)) +/* Reserving 0x100 bytes of space for ROM registers. */ +. = 0x500; diff --git a/soc/renesas/ra/ra4w1/sections.ld b/soc/renesas/ra/ra4w1/sections.ld new file mode 100644 index 0000000000000..b850a64f64374 --- /dev/null +++ b/soc/renesas/ra/ra4w1/sections.ld @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +.code_in_ram : +{ + . = ALIGN(4); + __Code_In_RAM_Start = .; + KEEP(*(.code_in_ram*)) + __Code_In_RAM_End = .; +} > RAMABLE_REGION + +SECTION_DATA_PROLOGUE(.fsp_dtc_vector_table,(NOLOAD),) +{ + /* If DTC is used, put the DTC vector table at the start of SRAM. + This avoids memory holes due to 1K alignment required by it. */ + *(.fsp_dtc_vector_table) +} GROUP_DATA_LINK_IN(RAMABLE_REGION, RAMABLE_REGION) + +SECTION_PROLOGUE(.id_code,,) +{ + KEEP(*(.id_code*)) +} GROUP_LINK_IN(ID_CODE) diff --git a/soc/renesas/ra/ra4w1/soc.c b/soc/renesas/ra/ra4w1/soc.c new file mode 100644 index 0000000000000..2e7ea86c4571f --- /dev/null +++ b/soc/renesas/ra/ra4w1/soc.c @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief System/hardware module for Renesas RA4W1 family processor + */ + +#include +#include +#include +#include +#include +#include +#include +#include +LOG_MODULE_REGISTER(soc, CONFIG_SOC_LOG_LEVEL); + +#include "bsp_cfg.h" +#include + +uint32_t SystemCoreClock BSP_SECTION_EARLY_INIT; + +volatile uint32_t g_protect_pfswe_counter BSP_SECTION_EARLY_INIT; + +/** + * @brief Perform basic hardware initialization at boot. + * + * This needs to be run from the very beginning. + * So the init priority has to be 0 (zero). + * + * @return 0 + */ +static int renesas_ra4w1_init(void) +{ + SystemCoreClock = BSP_MOCO_HZ; + g_protect_pfswe_counter = 0; + bsp_clock_init(); + + return 0; +} + +SYS_INIT(renesas_ra4w1_init, PRE_KERNEL_1, 0); diff --git a/soc/renesas/ra/ra4w1/soc.h b/soc/renesas/ra/ra4w1/soc.h new file mode 100644 index 0000000000000..7646360c58bbf --- /dev/null +++ b/soc/renesas/ra/ra4w1/soc.h @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file SoC configuration macros for the Renesas RA4W1 family MCU + */ + +#ifndef ZEPHYR_SOC_RENESAS_RA4W1_SOC_H_ +#define ZEPHYR_SOC_RENESAS_RA4W1_SOC_H_ + +#include + +#endif /* ZEPHYR_SOC_RENESAS_RA4W1_SOC_H_ */ diff --git a/soc/renesas/ra/soc.yml b/soc/renesas/ra/soc.yml index c8fbc6476f3e7..6e7887b098a3c 100644 --- a/soc/renesas/ra/soc.yml +++ b/soc/renesas/ra/soc.yml @@ -16,6 +16,9 @@ family: - name: ra4m3 socs: - name: r7fa4m3af3cfb + - name: ra4w1 + socs: + - name: r7fa4w1ad2cng - name: ra6m1 socs: - name: r7fa6m1ad3cfp From 8688c4bb003ddc45ce1568cf22d72b4b80369cdc Mon Sep 17 00:00:00 2001 From: Quy Tran Date: Tue, 11 Jun 2024 10:52:12 +0000 Subject: [PATCH 8/9] boards: renesas: Add initial support for EK-RA4W1 board Initial commit to support Renesas EK-RA4W1 board Signed-off-by: Quy Tran Signed-off-by: Duy Phuong Hoang. Nguyen --- boards/renesas/ek_ra4w1/Kconfig.ek_ra4w1 | 5 + boards/renesas/ek_ra4w1/board.cmake | 6 + boards/renesas/ek_ra4w1/board.yml | 5 + .../renesas/ek_ra4w1/doc/ek-ra4w1-board.webp | Bin 0 -> 32514 bytes boards/renesas/ek_ra4w1/doc/index.rst | 155 ++++++++++++++++++ .../ek_ra4w1/doc/ra4w1-block-diagram.webp | Bin 0 -> 59140 bytes boards/renesas/ek_ra4w1/ek_ra4w1-pinctrl.dtsi | 14 ++ boards/renesas/ek_ra4w1/ek_ra4w1.dts | 61 +++++++ boards/renesas/ek_ra4w1/ek_ra4w1.yaml | 12 ++ boards/renesas/ek_ra4w1/ek_ra4w1_defconfig | 17 ++ .../uart_async_api/boards/ek_ra4w1.overlay | 24 +++ 11 files changed, 299 insertions(+) create mode 100644 boards/renesas/ek_ra4w1/Kconfig.ek_ra4w1 create mode 100644 boards/renesas/ek_ra4w1/board.cmake create mode 100644 boards/renesas/ek_ra4w1/board.yml create mode 100644 boards/renesas/ek_ra4w1/doc/ek-ra4w1-board.webp create mode 100644 boards/renesas/ek_ra4w1/doc/index.rst create mode 100644 boards/renesas/ek_ra4w1/doc/ra4w1-block-diagram.webp create mode 100644 boards/renesas/ek_ra4w1/ek_ra4w1-pinctrl.dtsi create mode 100644 boards/renesas/ek_ra4w1/ek_ra4w1.dts create mode 100644 boards/renesas/ek_ra4w1/ek_ra4w1.yaml create mode 100644 boards/renesas/ek_ra4w1/ek_ra4w1_defconfig create mode 100644 tests/drivers/uart/uart_async_api/boards/ek_ra4w1.overlay diff --git a/boards/renesas/ek_ra4w1/Kconfig.ek_ra4w1 b/boards/renesas/ek_ra4w1/Kconfig.ek_ra4w1 new file mode 100644 index 0000000000000..a2f855a2b3c6f --- /dev/null +++ b/boards/renesas/ek_ra4w1/Kconfig.ek_ra4w1 @@ -0,0 +1,5 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_EK_RA4W1 + select SOC_R7FA4W1AD2CNG diff --git a/boards/renesas/ek_ra4w1/board.cmake b/boards/renesas/ek_ra4w1/board.cmake new file mode 100644 index 0000000000000..6a1b1617cb802 --- /dev/null +++ b/boards/renesas/ek_ra4w1/board.cmake @@ -0,0 +1,6 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +board_runner_args(jlink "--device=R7FA4W1AD") + +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/renesas/ek_ra4w1/board.yml b/boards/renesas/ek_ra4w1/board.yml new file mode 100644 index 0000000000000..709a8435475f3 --- /dev/null +++ b/boards/renesas/ek_ra4w1/board.yml @@ -0,0 +1,5 @@ +board: + name: ek_ra4w1 + vendor: renesas + socs: + - name: r7fa4w1ad2cng diff --git a/boards/renesas/ek_ra4w1/doc/ek-ra4w1-board.webp b/boards/renesas/ek_ra4w1/doc/ek-ra4w1-board.webp new file mode 100644 index 0000000000000000000000000000000000000000..9a1e2b9be439bc202dd52f7b48aa8e6a16c2371c GIT binary patch literal 32514 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 literal 0 HcmV?d00001 diff --git a/boards/renesas/ek_ra4w1/doc/index.rst b/boards/renesas/ek_ra4w1/doc/index.rst new file mode 100644 index 0000000000000..48eadcc2d9d11 --- /dev/null +++ b/boards/renesas/ek_ra4w1/doc/index.rst @@ -0,0 +1,155 @@ +.. _ek_ra4w1: + +RA4W1 Evaluation Kit +#################### + +Overview +******** + +The Renesas RA4W1 is the first Bluetooth® 5.0 Low Energy fully compliant with 2Mbit High-Throughput +(HT) and Long Range support in a single chip MCU of Renesas RA4 product series for IoT applications +that require a high-performance Arm® Cortex®-M4 core at a very attractive price point. The RA4W1 MCU +has full function support for Bluetooth 5.0 Low Energy long-range and mesh networking, and provides +excellent reception performance. RA4W1 is geared towards IoT application requiring Security, large +embedded RAM and low power consumption. + +**MCU Native Pin Access** +- R7FA4W1AD2CNG +- QFN-56 package +- On-chip memory: 512-KB ROM, 96-KB RAM, 8-KB data flash memory + +**Power-supply voltage** +- USB connector: 5-V input +- Power-supply IC: 5-V input, 3.3-V output +- External power-supply header*1: 3.3-V input, 2 pins x 1 + +**Main clock** +- Crystal oscillator (surface-mount technology (SMT)) for the main system clock +- Crystal oscillator or ceramic resonator (lead type) for the main system clock + +**Sub-clock** +- Crystal oscillator (SMT) for the sub-clock + +**Bluetooth Low Energy** +- Bluetooth Low Energy (BLE) circuit x1 +- Range of frequency: 2402 to 2480 MHz +- Maximum transmission output power: 4 dBm (in 4-dBm output mode) +- Output variation: +2 dB + +**Push switches** +- Reset switch x 1 +- User switch x 1 + +**LED** +- Power indicator: green x 1 +- User: green x 2 +- ACT LED: green x 1 + +**Conetivity** +- Connector for an on-board emulator: USB Micro-B +- Connector for a USB serial-conversion interface: USB Micro-B +- Pmod™ connector: Angle type, 12 pins +- Arduino™ UNO connectors + +- Emulator reset switch + +.. figure:: ek-ra4w1-board.webp + :align: center + :alt: RA4W1 Evaluation Kit + + EK-RA4W1 Board Functional Area Definitions (Credit: Renesas Electronics Corporation) + +Hardware +******** +Detail Hardware feature for the RA4W1 MCU group can be found at `RA4W1 Group User's Manual Hardware`_ + +.. figure:: ra4w1-block-diagram.webp + :width: 442px + :align: center + :alt: RA4W1 MCU group feature + + RA4W1 Block diagram (Credit: Renesas Electronics Corporation) + +Detail Hardware feature for the EK-RA4W1 MCU can be found at `EK-RA4W1 - User's Manual`_ + +Supported Features +================== + +The below features are currently supported on Zephyr OS for EK-RA4W1 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_ra4w1`` 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-RA4W1 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-RA4W1 - 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: R7FA4W1AD +* 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-RA4W1 Website`_ +- `RA4W1 MCU group Website`_ + +.. _EK-RA4W1 Website: + https://www.renesas.com/us/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra4w1-evaluation-kit-ra4w1-mcu-group + +.. _RA4W1 MCU group Website: + https://www.renesas.com/us/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ra4w1-low-energy-single-chip-32-bit-microcontrollers-48mhz-bluetooth-50 + +.. _EK-RA4W1 - User's Manual: + https://www.renesas.com/us/en/document/man/ek-ra4w1-users-manual + +.. _RA4W1 Group User's Manual Hardware: + https://www.renesas.com/us/en/document/man/renesas-ra4w1-group-users-manual-hardware + +.. _Segger Ozone Download: + https://www.segger.com/downloads/jlink#Ozone diff --git a/boards/renesas/ek_ra4w1/doc/ra4w1-block-diagram.webp b/boards/renesas/ek_ra4w1/doc/ra4w1-block-diagram.webp new file mode 100644 index 0000000000000000000000000000000000000000..d569b021488f141a07c95e140506f90b784ce19e GIT binary patch literal 59140 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

    B@h^2fZi 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 literal 0 HcmV?d00001 diff --git a/boards/renesas/ek_ra4w1/ek_ra4w1-pinctrl.dtsi b/boards/renesas/ek_ra4w1/ek_ra4w1-pinctrl.dtsi new file mode 100644 index 0000000000000..3c01cb6bec4cf --- /dev/null +++ b/boards/renesas/ek_ra4w1/ek_ra4w1-pinctrl.dtsi @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + sci0_default: sci0_default { + group1 { + /* tx rx */ + psels = , + ; + }; + }; +}; diff --git a/boards/renesas/ek_ra4w1/ek_ra4w1.dts b/boards/renesas/ek_ra4w1/ek_ra4w1.dts new file mode 100644 index 0000000000000..7d764631e034b --- /dev/null +++ b/boards/renesas/ek_ra4w1/ek_ra4w1.dts @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include +#include "ek_ra4w1-pinctrl.dtsi" + +/ { + model = "Renesas EK-RA4W1"; + compatible = "renesas,ra4w1", "renesas,ra"; + + chosen { + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,console = &uart0; + zephyr,shell-uart = &uart0; + }; + + leds { + compatible = "gpio-leds"; + led1: led1 { + gpios = <&ioport1 6 GPIO_ACTIVE_HIGH>; + label = "LED1"; + }; + + led2: led2 { + gpios = <&ioport4 4 GPIO_ACTIVE_HIGH>; + label = "LED2"; + }; + }; + + aliases { + led0 = &led1; + }; +}; + +&subclk { + status = "okay"; +}; + +&sci0 { + pinctrl-0 = <&sci0_default>; + pinctrl-names = "default"; + status = "okay"; + uart0: uart { + current-speed = <115200>; + status = "okay"; + }; +}; + +&ioport1 { + status = "okay"; +}; + +&ioport4 { + status = "okay"; +}; diff --git a/boards/renesas/ek_ra4w1/ek_ra4w1.yaml b/boards/renesas/ek_ra4w1/ek_ra4w1.yaml new file mode 100644 index 0000000000000..f31bcd0a7bc88 --- /dev/null +++ b/boards/renesas/ek_ra4w1/ek_ra4w1.yaml @@ -0,0 +1,12 @@ +identifier: ek_ra4w1 +name: Renesas EK-RA4W1 +type: mcu +arch: arm +ram: 96 +flash: 512 +toolchain: + - zephyr + - gnuarmemb +supported: + - gpio + - uart diff --git a/boards/renesas/ek_ra4w1/ek_ra4w1_defconfig b/boards/renesas/ek_ra4w1/ek_ra4w1_defconfig new file mode 100644 index 0000000000000..99d88edca44bf --- /dev/null +++ b/boards/renesas/ek_ra4w1/ek_ra4w1_defconfig @@ -0,0 +1,17 @@ +# Copyright (c) 2024 Renesas Electronics Corporation +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=32000000 + +# 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_ra4w1.overlay b/tests/drivers/uart/uart_async_api/boards/ek_ra4w1.overlay new file mode 100644 index 0000000000000..238c284fa2d9b --- /dev/null +++ b/tests/drivers/uart/uart_async_api/boards/ek_ra4w1.overlay @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +&pinctrl { + sci1_default: sci1_default { + group1 { + /* tx rx */ + psels = , + ; + }; + }; +}; + +&sci1 { + pinctrl-0 = <&sci1_default>; + pinctrl-names = "default"; + status = "okay"; + dut: uart { + current-speed = <115200>; + status = "okay"; + }; +}; From 62de5424e9808517e37e1f04acab6d331951fdf0 Mon Sep 17 00:00:00 2001 From: Quy Tran Date: Thu, 20 Jun 2024 09:49:31 +0000 Subject: [PATCH 9/9] dts: bindings: clock: Change clock control binding for Renesas RA Background of this modification is to make clock control driver code provided by Renesas vendor to support for Renesas MCU on Zephyr. Signed-off-by: Quy Tran --- boards/renesas/ek_ra4e2/doc/index.rst | 2 ++ boards/renesas/ek_ra4e2/ek_ra4e2.dts | 1 - boards/renesas/ek_ra4e2/ek_ra4e2_defconfig | 1 + boards/renesas/ek_ra4m2/doc/index.rst | 2 ++ boards/renesas/ek_ra4m2/ek_ra4m2.dts | 1 - boards/renesas/ek_ra4m2/ek_ra4m2_defconfig | 1 + boards/renesas/ek_ra4m3/doc/index.rst | 2 ++ boards/renesas/ek_ra4m3/ek_ra4m3.dts | 1 - boards/renesas/ek_ra4m3/ek_ra4m3_defconfig | 1 + boards/renesas/ek_ra4w1/doc/index.rst | 2 ++ boards/renesas/ek_ra4w1/ek_ra4w1_defconfig | 1 + dts/arm/renesas/ra/ra4/r7fa4e2b93cfm.dtsi | 1 - dts/arm/renesas/ra/ra4/r7fa4m2ax.dtsi | 1 - dts/arm/renesas/ra/ra4/r7fa4m3ax.dtsi | 1 - dts/arm/renesas/ra/ra4/r7fa4w1ad2cng.dtsi | 1 - soc/renesas/ra/ra4e2/Kconfig | 1 + soc/renesas/ra/ra4e2/soc.c | 2 +- soc/renesas/ra/ra4e2/soc.h | 2 +- soc/renesas/ra/ra4m2/Kconfig | 1 + soc/renesas/ra/ra4m2/soc.c | 2 +- soc/renesas/ra/ra4m3/Kconfig | 1 + soc/renesas/ra/ra4m3/soc.c | 2 +- soc/renesas/ra/ra4w1/Kconfig | 1 + soc/renesas/ra/ra4w1/soc.c | 1 - 24 files changed, 20 insertions(+), 12 deletions(-) diff --git a/boards/renesas/ek_ra4e2/doc/index.rst b/boards/renesas/ek_ra4e2/doc/index.rst index 910abfe71ea0a..0bf90ed5464e0 100644 --- a/boards/renesas/ek_ra4e2/doc/index.rst +++ b/boards/renesas/ek_ra4e2/doc/index.rst @@ -96,6 +96,8 @@ The below features are currently supported on Zephyr OS for EK-RA4E2 board: +-----------+------------+----------------------+ | UART | on-chip | serial | +-----------+------------+----------------------+ +| CLOCK | on-chip | clock control | ++-----------+------------+----------------------+ Other hardware features are currently not supported by the port. diff --git a/boards/renesas/ek_ra4e2/ek_ra4e2.dts b/boards/renesas/ek_ra4e2/ek_ra4e2.dts index 626a5096d1c5e..e371198e6ed53 100644 --- a/boards/renesas/ek_ra4e2/ek_ra4e2.dts +++ b/boards/renesas/ek_ra4e2/ek_ra4e2.dts @@ -56,7 +56,6 @@ source = ; div = ; mul = <10 0>; - freq = ; status = "okay"; }; diff --git a/boards/renesas/ek_ra4e2/ek_ra4e2_defconfig b/boards/renesas/ek_ra4e2/ek_ra4e2_defconfig index 79943a7610930..ceaa9b32580a3 100644 --- a/boards/renesas/ek_ra4e2/ek_ra4e2_defconfig +++ b/boards/renesas/ek_ra4e2/ek_ra4e2_defconfig @@ -15,3 +15,4 @@ CONFIG_CONSOLE=y CONFIG_BUILD_OUTPUT_HEX=y CONFIG_BUILD_NO_GAP_FILL=y +CONFIG_CLOCK_CONTROL=y diff --git a/boards/renesas/ek_ra4m2/doc/index.rst b/boards/renesas/ek_ra4m2/doc/index.rst index 6fabd2116aa8f..833768d6d16f7 100644 --- a/boards/renesas/ek_ra4m2/doc/index.rst +++ b/boards/renesas/ek_ra4m2/doc/index.rst @@ -96,6 +96,8 @@ The below features are currently supported on Zephyr OS for EK-RA4M2 board: +-----------+------------+----------------------+ | UART | on-chip | serial | +-----------+------------+----------------------+ +| CLOCK | on-chip | clock control | ++-----------+------------+----------------------+ Other hardware features are currently not supported by the port. diff --git a/boards/renesas/ek_ra4m2/ek_ra4m2.dts b/boards/renesas/ek_ra4m2/ek_ra4m2.dts index a513c7a3ca14b..49f35db2e8340 100644 --- a/boards/renesas/ek_ra4m2/ek_ra4m2.dts +++ b/boards/renesas/ek_ra4m2/ek_ra4m2.dts @@ -56,7 +56,6 @@ source = ; div = ; mul = <25 0>; - freq = ; status = "okay"; }; diff --git a/boards/renesas/ek_ra4m2/ek_ra4m2_defconfig b/boards/renesas/ek_ra4m2/ek_ra4m2_defconfig index 79943a7610930..ceaa9b32580a3 100644 --- a/boards/renesas/ek_ra4m2/ek_ra4m2_defconfig +++ b/boards/renesas/ek_ra4m2/ek_ra4m2_defconfig @@ -15,3 +15,4 @@ CONFIG_CONSOLE=y CONFIG_BUILD_OUTPUT_HEX=y CONFIG_BUILD_NO_GAP_FILL=y +CONFIG_CLOCK_CONTROL=y diff --git a/boards/renesas/ek_ra4m3/doc/index.rst b/boards/renesas/ek_ra4m3/doc/index.rst index 1bfb48c28b581..07db2061617b7 100644 --- a/boards/renesas/ek_ra4m3/doc/index.rst +++ b/boards/renesas/ek_ra4m3/doc/index.rst @@ -98,6 +98,8 @@ The below features are currently supported on Zephyr OS for EK-RA4M3 board: +-----------+------------+----------------------+ | UART | on-chip | serial | +-----------+------------+----------------------+ +| CLOCK | on-chip | clock control | ++-----------+------------+----------------------+ Other hardware features are currently not supported by the port. diff --git a/boards/renesas/ek_ra4m3/ek_ra4m3.dts b/boards/renesas/ek_ra4m3/ek_ra4m3.dts index 024aefd0223bd..f076510018e93 100644 --- a/boards/renesas/ek_ra4m3/ek_ra4m3.dts +++ b/boards/renesas/ek_ra4m3/ek_ra4m3.dts @@ -56,7 +56,6 @@ source = ; div = ; mul = <25 0>; - freq = ; status = "okay"; }; diff --git a/boards/renesas/ek_ra4m3/ek_ra4m3_defconfig b/boards/renesas/ek_ra4m3/ek_ra4m3_defconfig index 79943a7610930..ceaa9b32580a3 100644 --- a/boards/renesas/ek_ra4m3/ek_ra4m3_defconfig +++ b/boards/renesas/ek_ra4m3/ek_ra4m3_defconfig @@ -15,3 +15,4 @@ CONFIG_CONSOLE=y CONFIG_BUILD_OUTPUT_HEX=y CONFIG_BUILD_NO_GAP_FILL=y +CONFIG_CLOCK_CONTROL=y diff --git a/boards/renesas/ek_ra4w1/doc/index.rst b/boards/renesas/ek_ra4w1/doc/index.rst index 48eadcc2d9d11..d20c5c27390bc 100644 --- a/boards/renesas/ek_ra4w1/doc/index.rst +++ b/boards/renesas/ek_ra4w1/doc/index.rst @@ -88,6 +88,8 @@ The below features are currently supported on Zephyr OS for EK-RA4W1 board: +-----------+------------+----------------------+ | UART | on-chip | serial | +-----------+------------+----------------------+ +| CLOCK | on-chip | clock control | ++-----------+------------+----------------------+ Other hardware features are currently not supported by the port. diff --git a/boards/renesas/ek_ra4w1/ek_ra4w1_defconfig b/boards/renesas/ek_ra4w1/ek_ra4w1_defconfig index 99d88edca44bf..92542b8ab9c11 100644 --- a/boards/renesas/ek_ra4w1/ek_ra4w1_defconfig +++ b/boards/renesas/ek_ra4w1/ek_ra4w1_defconfig @@ -15,3 +15,4 @@ CONFIG_CONSOLE=y CONFIG_BUILD_OUTPUT_HEX=y CONFIG_BUILD_NO_GAP_FILL=y +CONFIG_CLOCK_CONTROL=y diff --git a/dts/arm/renesas/ra/ra4/r7fa4e2b93cfm.dtsi b/dts/arm/renesas/ra/ra4/r7fa4e2b93cfm.dtsi index e4bbe31e0a8c6..f6f3074a005b3 100644 --- a/dts/arm/renesas/ra/ra4/r7fa4e2b93cfm.dtsi +++ b/dts/arm/renesas/ra/ra4/r7fa4e2b93cfm.dtsi @@ -83,7 +83,6 @@ source = ; div = ; mul = <10 0>; - freq = ; status = "disabled"; }; diff --git a/dts/arm/renesas/ra/ra4/r7fa4m2ax.dtsi b/dts/arm/renesas/ra/ra4/r7fa4m2ax.dtsi index 293fef836688c..8ce2e86e7a46a 100644 --- a/dts/arm/renesas/ra/ra4/r7fa4m2ax.dtsi +++ b/dts/arm/renesas/ra/ra4/r7fa4m2ax.dtsi @@ -133,7 +133,6 @@ div = ; mul = <25 0>; status = "disabled"; - freq = ; }; pll2: pll2 { diff --git a/dts/arm/renesas/ra/ra4/r7fa4m3ax.dtsi b/dts/arm/renesas/ra/ra4/r7fa4m3ax.dtsi index 01678b545c506..116e1f5b05f80 100644 --- a/dts/arm/renesas/ra/ra4/r7fa4m3ax.dtsi +++ b/dts/arm/renesas/ra/ra4/r7fa4m3ax.dtsi @@ -143,7 +143,6 @@ div = ; mul = <25 0>; status = "disabled"; - freq = ; }; pll2: pll2 { diff --git a/dts/arm/renesas/ra/ra4/r7fa4w1ad2cng.dtsi b/dts/arm/renesas/ra/ra4/r7fa4w1ad2cng.dtsi index a798029576fa7..d485e4c1f76d4 100644 --- a/dts/arm/renesas/ra/ra4/r7fa4w1ad2cng.dtsi +++ b/dts/arm/renesas/ra/ra4/r7fa4w1ad2cng.dtsi @@ -77,7 +77,6 @@ source = ; div = ; mul = <12 0>; - freq = ; status = "disabled"; }; diff --git a/soc/renesas/ra/ra4e2/Kconfig b/soc/renesas/ra/ra4e2/Kconfig index 731d163105606..6c3c2b8746865 100644 --- a/soc/renesas/ra/ra4e2/Kconfig +++ b/soc/renesas/ra/ra4e2/Kconfig @@ -6,6 +6,7 @@ config SOC_SERIES_RA4E2 select CPU_HAS_ARM_MPU select CPU_CORTEX_M33 select HAS_RENESAS_RA_FSP + select CLOCK_CONTROL_RENESAS_RA_CGC if CLOCK_CONTROL select CPU_CORTEX_M_HAS_DWT select ARMV8_M_DSP select CPU_HAS_FPU diff --git a/soc/renesas/ra/ra4e2/soc.c b/soc/renesas/ra/ra4e2/soc.c index d44791262e208..74b0e8c76410a 100644 --- a/soc/renesas/ra/ra4e2/soc.c +++ b/soc/renesas/ra/ra4e2/soc.c @@ -37,6 +37,7 @@ volatile uint32_t g_protect_pfswe_counter BSP_SECTION_EARLY_INIT; static int renesas_ra4e2_init(void) { extern volatile uint16_t g_protect_counters[]; + for (uint32_t i = 0; i < 4; i++) { g_protect_counters[i] = 0; } @@ -61,7 +62,6 @@ static int renesas_ra4e2_init(void) SystemCoreClock = BSP_MOCO_HZ; g_protect_pfswe_counter = 0; - bsp_clock_init(); return 0; } diff --git a/soc/renesas/ra/ra4e2/soc.h b/soc/renesas/ra/ra4e2/soc.h index 9f9c812d0f95d..cdf8331dac62a 100644 --- a/soc/renesas/ra/ra4e2/soc.h +++ b/soc/renesas/ra/ra4e2/soc.h @@ -13,4 +13,4 @@ #include -#endif /* ZEPHYR_SOC_RENESAS_RA4_SOC_H_ */ +#endif /* ZEPHYR_SOC_RENESAS_RA4E2_SOC_H_ */ diff --git a/soc/renesas/ra/ra4m2/Kconfig b/soc/renesas/ra/ra4m2/Kconfig index b10a0fc72eca9..1231924935df5 100644 --- a/soc/renesas/ra/ra4m2/Kconfig +++ b/soc/renesas/ra/ra4m2/Kconfig @@ -7,6 +7,7 @@ config SOC_SERIES_RA4M2 select CPU_CORTEX_M33 select HAS_RENESAS_RA_FSP select CPU_CORTEX_M_HAS_DWT + select CLOCK_CONTROL_RENESAS_RA_CGC if CLOCK_CONTROL select ARMV8_M_DSP select CPU_HAS_FPU select FPU diff --git a/soc/renesas/ra/ra4m2/soc.c b/soc/renesas/ra/ra4m2/soc.c index 3350f93f43894..e6e846ab088f1 100644 --- a/soc/renesas/ra/ra4m2/soc.c +++ b/soc/renesas/ra/ra4m2/soc.c @@ -37,6 +37,7 @@ volatile uint32_t g_protect_pfswe_counter BSP_SECTION_EARLY_INIT; static int renesas_ra4m2_init(void) { extern volatile uint16_t g_protect_counters[]; + for (uint32_t i = 0; i < 4; i++) { g_protect_counters[i] = 0; } @@ -61,7 +62,6 @@ static int renesas_ra4m2_init(void) SystemCoreClock = BSP_MOCO_HZ; g_protect_pfswe_counter = 0; - bsp_clock_init(); return 0; } diff --git a/soc/renesas/ra/ra4m3/Kconfig b/soc/renesas/ra/ra4m3/Kconfig index b5bb4e0372deb..00eb8c9a7abe6 100644 --- a/soc/renesas/ra/ra4m3/Kconfig +++ b/soc/renesas/ra/ra4m3/Kconfig @@ -6,6 +6,7 @@ config SOC_SERIES_RA4M3 select CPU_HAS_ARM_MPU select CPU_CORTEX_M33 select HAS_RENESAS_RA_FSP + select CLOCK_CONTROL_RENESAS_RA_CGC if CLOCK_CONTROL select CPU_CORTEX_M_HAS_DWT select ARMV8_M_DSP select CPU_HAS_FPU diff --git a/soc/renesas/ra/ra4m3/soc.c b/soc/renesas/ra/ra4m3/soc.c index 3f0c31b630a4f..f62cd1da28cfb 100644 --- a/soc/renesas/ra/ra4m3/soc.c +++ b/soc/renesas/ra/ra4m3/soc.c @@ -37,6 +37,7 @@ volatile uint32_t g_protect_pfswe_counter BSP_SECTION_EARLY_INIT; static int renesas_ra4m3_init(void) { extern volatile uint16_t g_protect_counters[]; + for (uint32_t i = 0; i < 4; i++) { g_protect_counters[i] = 0; } @@ -61,7 +62,6 @@ static int renesas_ra4m3_init(void) SystemCoreClock = BSP_MOCO_HZ; g_protect_pfswe_counter = 0; - bsp_clock_init(); return 0; } diff --git a/soc/renesas/ra/ra4w1/Kconfig b/soc/renesas/ra/ra4w1/Kconfig index 79a0c8c31d38d..358633bb8950d 100644 --- a/soc/renesas/ra/ra4w1/Kconfig +++ b/soc/renesas/ra/ra4w1/Kconfig @@ -6,6 +6,7 @@ config SOC_SERIES_RA4W1 select CPU_HAS_ARM_MPU select CPU_CORTEX_M4 select HAS_RENESAS_RA_FSP + select CLOCK_CONTROL_RENESAS_RA_CGC if CLOCK_CONTROL select CPU_CORTEX_M_HAS_DWT select CPU_HAS_FPU select FPU diff --git a/soc/renesas/ra/ra4w1/soc.c b/soc/renesas/ra/ra4w1/soc.c index 2e7ea86c4571f..d3f9b351d24ba 100644 --- a/soc/renesas/ra/ra4w1/soc.c +++ b/soc/renesas/ra/ra4w1/soc.c @@ -38,7 +38,6 @@ static int renesas_ra4w1_init(void) { SystemCoreClock = BSP_MOCO_HZ; g_protect_pfswe_counter = 0; - bsp_clock_init(); return 0; }