From fa135031ca1094d919072376df29472a74ec9347 Mon Sep 17 00:00:00 2001 From: Prashanth S Date: Wed, 31 May 2023 11:53:22 +0530 Subject: [PATCH 1/3] soc: ti_k3: Add TI J721E SoC R5 Add initial SoC support for the TI J721E SoC series Cortex-R5 core. TRM for J721e https://www.ti.com/lit/zip/spruil1 File: spruil1c.pdf Signed-off-by: Prashanth S Signed-off-by: Andrew Davis --- dts/arm/ti/j721e_main_r5.dtsi | 85 +++++++++++++++++++ .../dt-bindings/pinctrl/ti-k3-pinctrl.h | 5 ++ soc/ti/k3/am6x/CMakeLists.txt | 11 +++ soc/ti/k3/am6x/Kconfig | 11 +++ soc/ti/k3/am6x/Kconfig.defconfig | 8 ++ soc/ti/k3/am6x/Kconfig.soc | 11 +++ soc/ti/k3/am6x/r5/linker.ld | 17 ++++ soc/ti/k3/am6x/r5/soc.c | 49 +++++++++++ soc/ti/k3/am6x/r5/soc.h | 12 +++ soc/ti/k3/soc.yml | 3 + 10 files changed, 212 insertions(+) create mode 100644 dts/arm/ti/j721e_main_r5.dtsi create mode 100644 soc/ti/k3/am6x/r5/linker.ld create mode 100644 soc/ti/k3/am6x/r5/soc.c create mode 100644 soc/ti/k3/am6x/r5/soc.h diff --git a/dts/arm/ti/j721e_main_r5.dtsi b/dts/arm/ti/j721e_main_r5.dtsi new file mode 100644 index 000000000000..7b8f72ba5aed --- /dev/null +++ b/dts/arm/ti/j721e_main_r5.dtsi @@ -0,0 +1,85 @@ +/* Copyright (C) 2023 BeagleBoard.org Foundation + * Copyright (C) 2023 S Prashanth + * Copyright (c) 2024 Texas Instruments Incorporated + * Andrew Davis + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include + +/ { + #address-cells = <1>; + #size-cells = <1>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu0: cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-r5"; + reg = <0>; + }; + }; + + atcm: memory@0 { + device_type = "memory"; + compatible = "zephyr,memory-region", "mmio-sram"; + reg = <0x00000000 DT_SIZE_K(32)>; + zephyr,memory-region = "ATCM"; + }; + + btcm: memory@41010000 { + device_type = "memory"; + compatible = "zephyr,memory-region", "mmio-sram"; + reg = <0x41010000 DT_SIZE_K(32)>; + zephyr,memory-region = "BTCM"; + }; + + vim: interrupt-controller@ff80000 { + #address-cells = <1>; + compatible = "ti,vim"; + reg = <0x0ff80000 0x2800>; + interrupt-controller; + #interrupt-cells = <4>; /* {IRQ/FIQ, IRQ_NUM, IRQ_TYPE, IRQ_PRIO} */ + status = "okay"; + }; + + pinctrl: pinctrl@11c000 { + compatible = "ti,k3-pinctrl"; + reg = <0x0011c000 0x2b4>; + status = "okay"; + }; + + uart1: uart@2810000 { + compatible = "ns16550"; + reg = <0x02810000 0x100>; + clock-frequency = <48000000>; + interrupts = <0 159 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>; + interrupt-parent = <&vim>; + reg-shift = <2>; + status = "disabled"; + }; + + uart2: uart@2820000 { + compatible = "ns16550"; + reg = <0x02820000 0x100>; + clock-frequency = <48000000>; + interrupts = <0 160 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>; + interrupt-parent = <&vim>; + reg-shift = <2>; + status = "disabled"; + }; + + systick_timer: timer@24c0000 { + compatible = "ti,am654-timer"; + reg = <0x24c0000 0x70>; + interrupts = <0 168 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>; + interrupt-parent = <&vim>; + status = "disabled"; + }; +}; diff --git a/include/zephyr/dt-bindings/pinctrl/ti-k3-pinctrl.h b/include/zephyr/dt-bindings/pinctrl/ti-k3-pinctrl.h index b50e784625db..a830187b492f 100644 --- a/include/zephyr/dt-bindings/pinctrl/ti-k3-pinctrl.h +++ b/include/zephyr/dt-bindings/pinctrl/ti-k3-pinctrl.h @@ -39,6 +39,11 @@ #define MUX_MODE_7 7 #define MUX_MODE_8 8 #define MUX_MODE_9 9 +#define MUX_MODE_10 10 +#define MUX_MODE_11 11 +#define MUX_MODE_12 12 +#define MUX_MODE_13 13 +#define MUX_MODE_14 14 #define K3_PINMUX(offset, value, mux_mode) (((offset) & 0x1fff)) ((value) | (mux_mode)) diff --git a/soc/ti/k3/am6x/CMakeLists.txt b/soc/ti/k3/am6x/CMakeLists.txt index 993d8d8d95b6..d5e88b78e25a 100644 --- a/soc/ti/k3/am6x/CMakeLists.txt +++ b/soc/ti/k3/am6x/CMakeLists.txt @@ -18,4 +18,15 @@ elseif(CONFIG_SOC_SERIES_AM6X_M4) endif() set(SOC_LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/m4/linker.ld CACHE INTERNAL "") +elseif(CONFIG_SOC_SERIES_AM6X_R5) + zephyr_sources(r5/soc.c) + + zephyr_include_directories(r5) + + if(CONFIG_OPENAMP_RSC_TABLE) + zephyr_linker_section(NAME .resource_table GROUP ROM_REGION NOINPUT) + zephyr_linker_section_configure(SECTION .resource_table KEEP INPUT ".resource_table*") + endif() + + set(SOC_LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/r5/linker.ld CACHE INTERNAL "") endif() diff --git a/soc/ti/k3/am6x/Kconfig b/soc/ti/k3/am6x/Kconfig index 76fd90d457d1..a28996cc3058 100644 --- a/soc/ti/k3/am6x/Kconfig +++ b/soc/ti/k3/am6x/Kconfig @@ -19,7 +19,18 @@ config SOC_SERIES_AM6X_M4 select MM_TI_RAT select SOC_EARLY_INIT_HOOK +config SOC_SERIES_AM6X_R5 + select ARM + select CPU_CORTEX_R5 + select CPU_HAS_ARM_MPU + select ARM_CUSTOM_INTERRUPT_CONTROLLER + select VIM + select TI_DM_TIMER + select OPENAMP_RSC_TABLE + select UART_NS16550_ACCESS_WORD_ONLY if UART_NS16550 + config SOC_PART_NUMBER default "AM6234" if SOC_AM6234_A53 default "AM6234" if SOC_AM6234_M4 default "AM6442" if SOC_AM6442_M4 + default "J721e" if SOC_J721E_MAIN_R5F0_0 diff --git a/soc/ti/k3/am6x/Kconfig.defconfig b/soc/ti/k3/am6x/Kconfig.defconfig index 2d9794413e4a..9555905beecd 100644 --- a/soc/ti/k3/am6x/Kconfig.defconfig +++ b/soc/ti/k3/am6x/Kconfig.defconfig @@ -3,6 +3,9 @@ if SOC_SERIES_AM6X +config KERNEL_ENTRY + default "_vector_table" + # Workaround for not being able to have commas in macro arguments DT_CHOSEN_Z_FLASH := zephyr,flash @@ -16,11 +19,13 @@ config NUM_IRQS int default 64 if SOC_SERIES_AM6X_M4 default 280 if SOC_SERIES_AM6X_A53 + default 512 if SOC_SERIES_AM6X_R5 config SYS_CLOCK_HW_CYCLES_PER_SEC int default 400000000 if SOC_SERIES_AM6X_M4 default 200000000 if SOC_SERIES_AM6X_A53 + default 19200000 if SOC_SERIES_AM6X_R5 config PINCTRL default y @@ -32,6 +37,7 @@ config UART_NS16550 config UART_NS16550_TI_K3 default y if SOC_SERIES_AM6X_M4 + default y if SOC_SERIES_AM6X_R5 choice UART_NS16550_VARIANT default UART_NS16550_VARIANT_NS16750 @@ -41,8 +47,10 @@ endif # SERIAL config BUILD_OUTPUT_BIN default n if SOC_SERIES_AM6X_M4 + default n if SOC_SERIES_AM6X_R5 config BUILD_NO_GAP_FILL default y if SOC_SERIES_AM6X_M4 + default y if SOC_SERIES_AM6X_R5 endif # SOC_SERIES_AM6X diff --git a/soc/ti/k3/am6x/Kconfig.soc b/soc/ti/k3/am6x/Kconfig.soc index df9805f92d4c..2f76accd255f 100644 --- a/soc/ti/k3/am6x/Kconfig.soc +++ b/soc/ti/k3/am6x/Kconfig.soc @@ -17,6 +17,12 @@ config SOC_SERIES_AM6X_M4 help Enable support for AM62X M4 Series. +config SOC_SERIES_AM6X_R5 + bool + select SOC_SERIES_AM6X + help + Enable support for AM6X R5 Series. + config SOC_AM6234_A53 bool select SOC_SERIES_AM6X_A53 @@ -29,9 +35,14 @@ config SOC_AM6442_M4 bool select SOC_SERIES_AM6X_M4 +config SOC_J721E_MAIN_R5F0_0 + bool + select SOC_SERIES_AM6X_R5 + config SOC_SERIES default "am6x" if SOC_SERIES_AM6X config SOC default "am6234" if SOC_AM6234_M4 || SOC_AM6234_A53 default "am6442" if SOC_AM6442_M4 + default "j721e" if SOC_J721E_MAIN_R5F0_0 diff --git a/soc/ti/k3/am6x/r5/linker.ld b/soc/ti/k3/am6x/r5/linker.ld new file mode 100644 index 000000000000..79e941b6ddeb --- /dev/null +++ b/soc/ti/k3/am6x/r5/linker.ld @@ -0,0 +1,17 @@ +/* Copyright (C) 2023 BeagleBoard.org Foundation + * Copyright (C) 2023 S Prashanth + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +SECTIONS +{ +#ifdef CONFIG_OPENAMP_RSC_TABLE + SECTION_PROLOGUE(.resource_table,, SUBALIGN(4)) + { + KEEP(*(.resource_table*)) + } GROUP_LINK_IN(RSC_TABLE) +#endif +} diff --git a/soc/ti/k3/am6x/r5/soc.c b/soc/ti/k3/am6x/r5/soc.c new file mode 100644 index 000000000000..8190f43353fc --- /dev/null +++ b/soc/ti/k3/am6x/r5/soc.c @@ -0,0 +1,49 @@ +/* Copyright (C) 2023 BeagleBoard.org Foundation + * Copyright (C) 2023 S Prashanth + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include + +#include "soc.h" + +unsigned int z_soc_irq_get_active(void) +{ + return z_vim_irq_get_active(); +} + +void z_soc_irq_eoi(unsigned int irq) +{ + z_vim_irq_eoi(irq); +} + +void z_soc_irq_init(void) +{ + z_vim_irq_init(); +} + +void z_soc_irq_priority_set(unsigned int irq, unsigned int prio, uint32_t flags) +{ + /* Configure interrupt type and priority */ + z_vim_irq_priority_set(irq, prio, flags); +} + +void z_soc_irq_enable(unsigned int irq) +{ + /* Enable interrupt */ + z_vim_irq_enable(irq); +} + +void z_soc_irq_disable(unsigned int irq) +{ + /* Disable interrupt */ + z_vim_irq_disable(irq); +} + +int z_soc_irq_is_enabled(unsigned int irq) +{ + /* Check if interrupt is enabled */ + return z_vim_irq_is_enabled(irq); +} diff --git a/soc/ti/k3/am6x/r5/soc.h b/soc/ti/k3/am6x/r5/soc.h new file mode 100644 index 000000000000..beb51f2d0ab5 --- /dev/null +++ b/soc/ti/k3/am6x/r5/soc.h @@ -0,0 +1,12 @@ +/* Copyright (C) 2023 BeagleBoard.org Foundation + * Copyright (C) 2023 S Prashanth + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef _TI_K3_J721E_R5_SOC_H_ +#define _TI_K3_J721E_R5_SOC_H_ + +#include + +#endif /* _TI_K3_J721E_R5_SOC_H_ */ diff --git a/soc/ti/k3/soc.yml b/soc/ti/k3/soc.yml index 3065ab13d426..b8832d4f6b4c 100644 --- a/soc/ti/k3/soc.yml +++ b/soc/ti/k3/soc.yml @@ -10,3 +10,6 @@ family: - name: am6442 cpuclusters: - name: m4 + - name: j721e + cpuclusters: + - name: main_r5f0_0 From da3b2e17a17ce708e31730e5aaebb44bbbd51ee6 Mon Sep 17 00:00:00 2001 From: Prashanth S Date: Wed, 31 May 2023 12:42:50 +0530 Subject: [PATCH 2/3] boards: beaglebone_ai64: Add BeagleBone AI-64 Add initial BeagleBone AI-64 support. BeagleBone AI-64: https://www.beagleboard.org/boards/beaglebone-ai-64 Signed-off-by: Prashanth S Signed-off-by: Andrew Davis --- .../beaglebone_ai64/Kconfig.beaglebone_ai64 | 7 + ...lebone_ai64_j721e_main_r5f0_0-pinctrl.dtsi | 21 +++ .../beaglebone_ai64_j721e_main_r5f0_0.dts | 57 ++++++++ .../beaglebone_ai64_j721e_main_r5f0_0.yaml | 17 +++ ...eaglebone_ai64_j721e_main_r5f0_0_defconfig | 15 ++ boards/beagle/beaglebone_ai64/board.yml | 5 + .../beaglebone_ai64/doc/assets/bbai_64.webp | Bin 0 -> 63888 bytes boards/beagle/beaglebone_ai64/doc/index.rst | 129 ++++++++++++++++++ 8 files changed, 251 insertions(+) create mode 100644 boards/beagle/beaglebone_ai64/Kconfig.beaglebone_ai64 create mode 100644 boards/beagle/beaglebone_ai64/beaglebone_ai64_j721e_main_r5f0_0-pinctrl.dtsi create mode 100644 boards/beagle/beaglebone_ai64/beaglebone_ai64_j721e_main_r5f0_0.dts create mode 100644 boards/beagle/beaglebone_ai64/beaglebone_ai64_j721e_main_r5f0_0.yaml create mode 100644 boards/beagle/beaglebone_ai64/beaglebone_ai64_j721e_main_r5f0_0_defconfig create mode 100644 boards/beagle/beaglebone_ai64/board.yml create mode 100644 boards/beagle/beaglebone_ai64/doc/assets/bbai_64.webp create mode 100644 boards/beagle/beaglebone_ai64/doc/index.rst diff --git a/boards/beagle/beaglebone_ai64/Kconfig.beaglebone_ai64 b/boards/beagle/beaglebone_ai64/Kconfig.beaglebone_ai64 new file mode 100644 index 000000000000..08b2561528dd --- /dev/null +++ b/boards/beagle/beaglebone_ai64/Kconfig.beaglebone_ai64 @@ -0,0 +1,7 @@ +# Copyright (C) 2023 BeagleBoard.org Foundation +# Copyright (C) 2023 S Prashanth +# +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_BEAGLEBONE_AI64 + select SOC_J721E_MAIN_R5F0_0 if BOARD_BEAGLEBONE_AI64_J721E_MAIN_R5F0_0 diff --git a/boards/beagle/beaglebone_ai64/beaglebone_ai64_j721e_main_r5f0_0-pinctrl.dtsi b/boards/beagle/beaglebone_ai64/beaglebone_ai64_j721e_main_r5f0_0-pinctrl.dtsi new file mode 100644 index 000000000000..dfc744b72e4a --- /dev/null +++ b/boards/beagle/beaglebone_ai64/beaglebone_ai64_j721e_main_r5f0_0-pinctrl.dtsi @@ -0,0 +1,21 @@ +/* Copyright (C) 2023 BeagleBoard.org Foundation + * Copyright (C) 2023 S Prashanth + * Copyright (c) 2024 Texas Instruments Incorporated + * Andrew Davis + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +&pinctrl { + uart2_tx_default: uart2_tx_default { + /* 0x1c is address of padconfig register of p8.34 and 14 is mux mode */ + pinmux = ; + }; + + uart2_rx_default: uart2_rx_default { + /* 0x14 is address of padconfig register of p8.22 and 14 is mux mode */ + pinmux = ; + }; +}; diff --git a/boards/beagle/beaglebone_ai64/beaglebone_ai64_j721e_main_r5f0_0.dts b/boards/beagle/beaglebone_ai64/beaglebone_ai64_j721e_main_r5f0_0.dts new file mode 100644 index 000000000000..8c4c8f0e8e4c --- /dev/null +++ b/boards/beagle/beaglebone_ai64/beaglebone_ai64_j721e_main_r5f0_0.dts @@ -0,0 +1,57 @@ +/* Copyright (C) 2023 BeagleBoard.org Foundation + * Copyright (C) 2023 S Prashanth + * Copyright (c) 2024 Texas Instruments Incorporated + * Andrew Davis + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include "beaglebone_ai64_j721e_main_r5f0_0-pinctrl.dtsi" +#include + +/ { + model = "BeagleBoard.org BeagleBone AI-64"; + compatible = "beagle,beaglebone-ai64"; + + chosen { + zephyr,sram = &atcm; + zephyr,console = &uart2; + }; + + cpus { + cpu@0 { + status = "okay"; + }; + }; + + ddr0: memory@a2000000 { + compatible = "mmio-sram"; + reg = <0xa2000000 DT_SIZE_M(1)>; + }; + + rsc_table: memory@a2100000 { + compatible = "zephyr,memory-region", "mmio-sram"; + reg = <0xa2100000 DT_SIZE_M(1)>; + zephyr,memory-region = "RSC_TABLE"; + }; + + ddr1: memory@a2200000 { + compatible = "zephyr,memory-region", "mmio-sram"; + reg = <0xa2200000 DT_SIZE_M(14)>; + zephyr,memory-region = "DRAM"; + }; +}; + +&uart2 { + status = "okay"; + pinctrl-0 = <&uart2_tx_default &uart2_rx_default>; + pinctrl-names = "default"; + current-speed = <115200>; +}; + +&systick_timer { + status = "okay"; +}; diff --git a/boards/beagle/beaglebone_ai64/beaglebone_ai64_j721e_main_r5f0_0.yaml b/boards/beagle/beaglebone_ai64/beaglebone_ai64_j721e_main_r5f0_0.yaml new file mode 100644 index 000000000000..0adaeddf82f4 --- /dev/null +++ b/boards/beagle/beaglebone_ai64/beaglebone_ai64_j721e_main_r5f0_0.yaml @@ -0,0 +1,17 @@ +# Copyright (C) 2023 BeagleBoard.org Foundation +# Copyright (C) 2023 S Prashanth +# +# SPDX-License-Identifier: Apache-2.0 + +identifier: beaglebone_ai64/j721e/main_r5f0_0 +name: BeagleBone-AI64 R5 +type: mcu +arch: arm +ram: 32 +toolchain: + - zephyr + - gnuarmemb + - xtools +supported: + - uart +vendor: beagle diff --git a/boards/beagle/beaglebone_ai64/beaglebone_ai64_j721e_main_r5f0_0_defconfig b/boards/beagle/beaglebone_ai64/beaglebone_ai64_j721e_main_r5f0_0_defconfig new file mode 100644 index 000000000000..244755fe3c96 --- /dev/null +++ b/boards/beagle/beaglebone_ai64/beaglebone_ai64_j721e_main_r5f0_0_defconfig @@ -0,0 +1,15 @@ +# Copyright (C) 2023 BeagleBoard.org Foundation +# Copyright (C) 2023 S Prashanth +# +# SPDX-License-Identifier: Apache-2.0 + +# Zephyr Kernel Configuration +CONFIG_XIP=n + +# Serial Driver +CONFIG_SERIAL=y +CONFIG_UART_INTERRUPT_DRIVEN=y + +# Enable Console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y diff --git a/boards/beagle/beaglebone_ai64/board.yml b/boards/beagle/beaglebone_ai64/board.yml new file mode 100644 index 000000000000..f16d9a2d2487 --- /dev/null +++ b/boards/beagle/beaglebone_ai64/board.yml @@ -0,0 +1,5 @@ +board: + name: beaglebone_ai64 + vendor: beagle + socs: + - name: j721e diff --git a/boards/beagle/beaglebone_ai64/doc/assets/bbai_64.webp b/boards/beagle/beaglebone_ai64/doc/assets/bbai_64.webp new file mode 100644 index 0000000000000000000000000000000000000000..f513626e0e2731550bee45c537ebeff566ff13eb GIT binary patch literal 63888 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 literal 0 HcmV?d00001 diff --git a/boards/beagle/beaglebone_ai64/doc/index.rst b/boards/beagle/beaglebone_ai64/doc/index.rst new file mode 100644 index 000000000000..b5c69a818f30 --- /dev/null +++ b/boards/beagle/beaglebone_ai64/doc/index.rst @@ -0,0 +1,129 @@ +.. _beaglebone_ai64: + +BeagleBone AI-64 +################ + +Overview +******** + +BeagleBone AI-64 is a computational platform powered by TI J721E SoC, which is +targeted for automotive applications. + +.. figure:: assets/bbai_64.webp + :align: center + :width: 600px + :alt: BeagleBoard.org BeagleBone AI-64 + +Hardware +******** + +BeagleBone AI-64 is powered by TI J721E SoC, which has three domains (MAIN, +MCU, WKUP). This document gives overview of Zephyr running on Cortex R5's +in the MAIN domain. + +L1 Memory System +---------------- + +* 16 KB instruction cache. +* 16 KB data cache. +* 64 KB TCM. + +Region Address Translation +-------------------------- + +The RAT module performs a region based address translation. It translates a +32-bit input address into a 48-bit output address. Any input transaction that +starts inside of a programmed region will have its address translated, if the +region is enabled. + +VIM Interrupt Controller +------------------------ + +The VIM aggregates device interrupts and sends them to the R5F CPU(s). The VIM +module supports 512 interrupt inputs per R5F core. Each interrupt can be either +a level or a pulse (both active-high). The VIM has two interrupt outputs per core +IRQ and FIQ. + +Supported Features +****************** + +The board configuration supports, + ++-----------+------------+-----------------------+ +| Interface | Controller | Driver/Component | ++===========+============+=======================+ +| UART | on-chip | serial port-polling | +| | | serial port-interrupt | ++-----------+------------+-----------------------+ + +Other hardwares features are currently not supported. + +Running Zephyr +************** + +The J721E does not have a separate flash for the R5 cores. Because of this +the A72 core has to load the program for the R5 cores to the right memory +address, set the PC and start the processor. +This can be done from Linux on the A72 core via remoteproc. + +By default the R5's Memory Protection Unit (MPU) only allows for execution of +instructions in the ATCM/BTCM. There is also a couple regions of DRAM memory +carved out for each R5 by Linux. These can be used for IPC (DDR0) and for +data (DDR1). DDR1 can also be used for executable regions after programming +the MPU. + +This is the memory mapping from A72 to the memory usable by the R5. Note that +the R5 cores always see their local ATCM at address 0x00000000 and their BTCM +at address 0x41010000. The ATCM/BTCM locations are fixed in hardware, but the +DDR regions are by convention. If you would like to use different DRAM +locations or sizes, you must also update for the same on the A72 software. +(For Linux as the A72 host, this would be changed in Device Tree). + ++------------+--------------+--------------+--------------+--------------+--------+ +| Region | R5FSS0 Core0 | R5FSS0 Core1 | R5FSS1 Core0 | R5FSS1 Core1 | Size | ++============+==============+==============+==============+==============+========+ +| ATCM | 0x05c00000 | 0x05d00000 | 0x05e00000 | 0x05f00000 | 32KB | ++------------+--------------+--------------+--------------+--------------+--------+ +| BTCM | 0x05c10000 | 0x05d10000 | 0x05e10000 | 0x05f00000 | 32KB | ++------------+--------------+--------------+--------------+--------------+--------+ +| DDR0 | 0xA2000000 | 0xA3000000 | 0xA4000000 | 0xA5000000 | 1MB | ++------------+--------------+--------------+--------------+--------------+--------+ +| DDR1 | 0xA2100000 | 0xA3000000 | 0xA4100000 | 0xA5000000 | 15MB | ++------------+--------------+--------------+--------------+--------------+--------+ + +Steps to build and run an image +------------------------------- + +Here is an example for the :zephyr:code-sample:`hello_world` application +targeting one of the Cortex R5F on BeagleBone AI-64: + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: beaglebone_ai64/j721e/main_r5f0_0 + :goals: build + +To load the image: + +| Copy Zephyr image to the /lib/firmware/ directory. +| ``cp build/zephyr/zephyr.elf /lib/firmware/`` +| +| Ensure the core is not running. +| ``echo stop > /dev/remoteproc/j7-main-r5f0_0/state`` +| +| Configuring the image name to the remoteproc module. +| ``echo zephyr.elf > /dev/remoteproc/j7-main-r5f0_0/firmware`` +| +| Once the image name is configured, send the start command. +| ``echo start > /dev/remoteproc/j7-main-r5f0_0/state`` + +Console +------- + +Zephyr on BeagleBone AI-64 J721E Cortex R5 uses UART 2 (Rx p8.22, Tx p8.34) +as console. + +References +********** + +* `BeagleBone AI-64 Homepage `_ +* `J721E TRM `_ From 54e13d64365075476edda2a6fcd14f2922397673 Mon Sep 17 00:00:00 2001 From: Andrew Davis Date: Thu, 10 Oct 2024 10:25:32 -0500 Subject: [PATCH 3/3] soc: ti: k3: Select PINCTRL in UART driver not Kconfig.defconfig The default configuration for PINCTRL should not be set with the other default configurations in .defconfig, instead select a default value as part of defining the UART driver. Signed-off-by: Andrew Davis --- boards/ti/sk_am62/sk_am62_am6234_m4_defconfig | 3 --- drivers/serial/Kconfig.ns16550 | 1 + soc/ti/k3/am6x/Kconfig.defconfig | 3 --- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/boards/ti/sk_am62/sk_am62_am6234_m4_defconfig b/boards/ti/sk_am62/sk_am62_am6234_m4_defconfig index 8ed54c6554e0..329040d31bdf 100644 --- a/boards/ti/sk_am62/sk_am62_am6234_m4_defconfig +++ b/boards/ti/sk_am62/sk_am62_am6234_m4_defconfig @@ -11,9 +11,6 @@ CONFIG_CORTEX_M_SYSTICK=y # Zephyr Kernel Configuration CONFIG_XIP=n -# Enable Pinctrl -CONFIG_PINCTRL=y - # Serial Driver CONFIG_SERIAL=y diff --git a/drivers/serial/Kconfig.ns16550 b/drivers/serial/Kconfig.ns16550 index 12e803449b3e..ced8d4cb69eb 100644 --- a/drivers/serial/Kconfig.ns16550 +++ b/drivers/serial/Kconfig.ns16550 @@ -69,6 +69,7 @@ config UART_NS16550_ACCESS_WORD_ONLY config UART_NS16550_TI_K3 bool "Add support for NS16550 variant specific to TI K3 SoCs" + select PINCTRL help Enabling this configuration allows the users to use the UART port in Texas Instruments K3 SoCs by enabling a vendor specific extended register diff --git a/soc/ti/k3/am6x/Kconfig.defconfig b/soc/ti/k3/am6x/Kconfig.defconfig index 9555905beecd..3183487e2e37 100644 --- a/soc/ti/k3/am6x/Kconfig.defconfig +++ b/soc/ti/k3/am6x/Kconfig.defconfig @@ -27,9 +27,6 @@ config SYS_CLOCK_HW_CYCLES_PER_SEC default 200000000 if SOC_SERIES_AM6X_A53 default 19200000 if SOC_SERIES_AM6X_R5 -config PINCTRL - default y - if SERIAL config UART_NS16550