From daaf340cb7b4fd2d9bb2255c9a629da74a2b684c Mon Sep 17 00:00:00 2001 From: Jonas Remmert Date: Tue, 8 Oct 2024 18:57:35 +0200 Subject: [PATCH] boards: phytec: add support for phyBOARD-Nash (imx93) Add basic support for the phyBOARD-Nash, a SBC based on the phyCORE-i.MX93. Both CPU types (Cortex-A55, Cortex-M33) are supported. Signed-off-by: Jonas Remmert --- .../phyboard_nash/Kconfig.phyboard_nash | 7 + boards/phytec/phyboard_nash/board.cmake | 8 + boards/phytec/phyboard_nash/board.yml | 5 + .../phyboard_nash/doc/img/phyboard_nash.webp | Bin 0 -> 64380 bytes boards/phytec/phyboard_nash/doc/index.rst | 178 ++++++++++++++++++ .../phyboard_nash/phyboard_nash-pinctrl.dtsi | 19 ++ .../phyboard_nash/phyboard_nash_a55.dts | 40 ++++ .../phyboard_nash/phyboard_nash_a55.yaml | 18 ++ .../phyboard_nash/phyboard_nash_a55_defconfig | 24 +++ .../phyboard_nash/phyboard_nash_m33.dts | 31 +++ .../phyboard_nash/phyboard_nash_m33.yaml | 15 ++ .../phyboard_nash/phyboard_nash_m33_defconfig | 9 + 12 files changed, 354 insertions(+) create mode 100644 boards/phytec/phyboard_nash/Kconfig.phyboard_nash create mode 100644 boards/phytec/phyboard_nash/board.cmake create mode 100644 boards/phytec/phyboard_nash/board.yml create mode 100644 boards/phytec/phyboard_nash/doc/img/phyboard_nash.webp create mode 100644 boards/phytec/phyboard_nash/doc/index.rst create mode 100644 boards/phytec/phyboard_nash/phyboard_nash-pinctrl.dtsi create mode 100644 boards/phytec/phyboard_nash/phyboard_nash_a55.dts create mode 100644 boards/phytec/phyboard_nash/phyboard_nash_a55.yaml create mode 100644 boards/phytec/phyboard_nash/phyboard_nash_a55_defconfig create mode 100644 boards/phytec/phyboard_nash/phyboard_nash_m33.dts create mode 100644 boards/phytec/phyboard_nash/phyboard_nash_m33.yaml create mode 100644 boards/phytec/phyboard_nash/phyboard_nash_m33_defconfig diff --git a/boards/phytec/phyboard_nash/Kconfig.phyboard_nash b/boards/phytec/phyboard_nash/Kconfig.phyboard_nash new file mode 100644 index 00000000000000..4640f4aaee03ea --- /dev/null +++ b/boards/phytec/phyboard_nash/Kconfig.phyboard_nash @@ -0,0 +1,7 @@ +# Copyright 2024 PHYTEC Messtechnik GmbH +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_PHYBOARD_NASH + select SOC_MIMX9352_A55 if BOARD_PHYBOARD_NASH_MIMX9352_A55 + select SOC_MIMX9352_M33 if BOARD_PHYBOARD_NASH_MIMX9352_M33 + select SOC_PART_NUMBER_MIMX9352CVVXM diff --git a/boards/phytec/phyboard_nash/board.cmake b/boards/phytec/phyboard_nash/board.cmake new file mode 100644 index 00000000000000..37a788d10d847d --- /dev/null +++ b/boards/phytec/phyboard_nash/board.cmake @@ -0,0 +1,8 @@ +# Copyright (c) 2024, PHYTEC Messtechnik GmbH +# SPDX-License-Identifier: Apache-2.0 + +board_set_debugger_ifnset(jlink) +board_set_flasher_ifnset(jlink) + +board_runner_args(jlink "--device=MIMX9352_M33") +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/phytec/phyboard_nash/board.yml b/boards/phytec/phyboard_nash/board.yml new file mode 100644 index 00000000000000..e64828c1309e6e --- /dev/null +++ b/boards/phytec/phyboard_nash/board.yml @@ -0,0 +1,5 @@ +board: + name: phyboard_nash + vendor: phytec + socs: + - name: mimx9352 diff --git a/boards/phytec/phyboard_nash/doc/img/phyboard_nash.webp b/boards/phytec/phyboard_nash/doc/img/phyboard_nash.webp new file mode 100644 index 0000000000000000000000000000000000000000..05d4e30c56a8f86cb4298dedcf67d49efac8b369 GIT binary patch literal 64380 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 a1Z@K1Uk}1m8^;vcGc4Me&}kd;pa1~>VYGYz literal 0 HcmV?d00001 diff --git a/boards/phytec/phyboard_nash/doc/index.rst b/boards/phytec/phyboard_nash/doc/index.rst new file mode 100644 index 00000000000000..16c281e9962971 --- /dev/null +++ b/boards/phytec/phyboard_nash/doc/index.rst @@ -0,0 +1,178 @@ +.. _phyboard_nash: + +phyBOARD-Nash i.MX93 +#################### + +Overview +******** + +The phyBOARD-Nash is based on the phyCORE-i.MX93 SoM is based on the NXP i.MX93 +SoC. It features common industrial interfaces and can be used as a reference for +development or in the final product. It is an entry-level development board, +which helps developers to get familiar with the module before investing a large +amount of resources in more specific designs. + +i.MX93 MPU is composed of one cluster of 2x Cortex-A55 cores and a single +Cortex-M33 core. Zephyr OS is ported to run on one of the Cortex-A55 core as +well as the Cortex-M33 core. + +- Memory: + + - RAM: 512 MB - 2GB LPDDR4 + - EEPROM: 4 kB - 32 kB + - eMMC: 8 GB - 256 GB + +- Interfaces: + + - Ethernet: 2x 10/100BASE-T (1x TSN Support) + - USB: 2x 2.0 Host / OTG + - Serial: 1x RS232 / RS485 Full Duplex / Half Duplex + - CAN: 1x CAN FD + - Digital I/O: via Expansion Connector + - MMX/SD/SDIO: microSD slot + - Display: LVDS(1x4 or 1x8), MIPI DSI(1x4), HDMI + - Audio: SAI + - Camera: 1x MIPI CSI-2 (phyCAM-M), 1x Parallel + - Expansion Bus: I2C, SPI, SDIO, UART, USB + +- Debug: + + - JTAG 10-pin connector + - USB-C for UART debug, 2x serial ports for A55 and M33 + + +.. image:: img/phyboard_nash.webp + :width: 720px + :align: center + :height: 405px + :alt: phyBOARD-Nash + +More information about the board can be found at the `PHYTEC website`_. + +Supported Features +================== + +The ``phyboard_nash/mimx9352/a55`` board target supports the following hardware +features: + ++-----------+------------+-------------------------------------+ +| Interface | Controller | Driver/Component | ++===========+============+=====================================+ +| GIC-v4 | on-chip | interrupt controller | ++-----------+------------+-------------------------------------+ +| ARM TIMER | on-chip | system clock | ++-----------+------------+-------------------------------------+ +| CLOCK | on-chip | clock_control | ++-----------+------------+-------------------------------------+ +| PINMUX | on-chip | pinmux | ++-----------+------------+-------------------------------------+ +| UART | on-chip | serial port | ++-----------+------------+-------------------------------------+ +| TPM | on-chip | TPM Counter | ++-----------+------------+-------------------------------------+ + +The ``phyboard_nash/mimx9352/m33`` board target supports the following hardware +features: + ++-----------+------------+-------------------------------------+ +| Interface | Controller | Driver/Component | ++===========+============+=====================================+ +| NVIC | on-chip | interrupt controller | ++-----------+------------+-------------------------------------+ +| SYSTICK | on-chip | systick | ++-----------+------------+-------------------------------------+ +| CLOCK | on-chip | clock_control | ++-----------+------------+-------------------------------------+ +| PINMUX | on-chip | pinmux | ++-----------+------------+-------------------------------------+ +| UART | on-chip | serial port | ++-----------+------------+-------------------------------------+ + +Devices +======== +System Clock +------------ + +This board configuration uses a system clock frequency of 24 MHz. Cortex-A55 +Core runs up to 1.7 GHz. Cortex-M33 Core runs up to 200MHz in which SYSTICK runs +on same frequency. + +Serial Port +----------- + +This board configuration uses a single serial communication channel with the +CPU's UART2 for A55 core and M33 core. The u-boot bootloader or Linux use the +second serial port for debug output. + +Programming and Debugging (A55) +******************************* + +Copy the compiled ``zephyr.bin`` to the ``BOOT`` partition of the SD card and +plug the SD card into the board. Power it up and stop the u-boot execution at +prompt. + +Use U-Boot to load and execute zephyr.bin on Cortex-A55 Core0: + +.. code-block:: console + + fatload mmc 1:1 0xd0000000 zephyr.bin; dcache flush; icache flush; dcache off; icache off; go 0xd0000000 + + +Use this configuration to run basic Zephyr applications and kernel tests, +for example: + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: phyboard_nash/mimx9352/a55 + :goals: build + +Use this configuration to run basic Zephyr applications, for example: + +.. code-block:: console + + *** Booting Zephyr OS build v3.7.0-848-gb4d99b124c6d *** + Hello World! phyboard_nash/mimx9352/a55 + +Programming and Debugging (M33) +******************************* + +Copy the compiled ``zephyr.bin`` to the ``BOOT`` partition of the SD card and +plug the SD card into the board. Power it up and stop the u-boot execution at +prompt. + +Use U-Boot to load and kick zephyr.bin to Cortex-M33 Core: + +.. code-block:: console + + load mmc 1:1 0x80000000 zephyr.bin;cp.b 0x80000000 0x201e0000 0x30000;bootaux 0x1ffe0000 0 + +Use this configuration to run basic Zephyr applications, for example: + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: phyboard_nash/mimx9352/m33 + :goals: build + +This will build an image with the synchronization sample app, boot it and +display the following console output: + +.. code-block:: console + + *** Booting Zephyr OS build v3.7.0-848-gb4d99b124c6d *** + Hello World! phyboard_nash/mimx9352/m33 + +Starting the M7-Core from U-Boot and Linux +========================================== + +Loading binaries and starting the M33-Core is supported from Linux via +remoteproc. Please check the `phyCORE-i.MX93 BSP Manual`_ for more information. + +References +========== + +For more information refer to the `PHYTEC website`_. + +.. _PHYTEC website: + https://www.phytec.eu/en/produkte/development-kits/phyboard-nash/ +.. _phyCORE-i.MX93 BSP Manual: + https://phytec.github.io/doc-bsp-yocto/bsp/imx9/imx93/imx93.html diff --git a/boards/phytec/phyboard_nash/phyboard_nash-pinctrl.dtsi b/boards/phytec/phyboard_nash/phyboard_nash-pinctrl.dtsi new file mode 100644 index 00000000000000..b9bfda29c04e3f --- /dev/null +++ b/boards/phytec/phyboard_nash/phyboard_nash-pinctrl.dtsi @@ -0,0 +1,19 @@ +/* + * Copyright 2024 PHYTEC Messtechnik GmbH + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +&pinctrl { + uart2_default: uart2_default { + group0 { + pinmux = <&iomuxc1_uart2_rxd_lpuart_rx_lpuart2_rx>, + <&iomuxc1_uart2_txd_lpuart_tx_lpuart2_tx>; + bias-pull-up; + slew-rate = "slightly_fast"; + drive-strength = "x5"; + }; + }; +}; diff --git a/boards/phytec/phyboard_nash/phyboard_nash_a55.dts b/boards/phytec/phyboard_nash/phyboard_nash_a55.dts new file mode 100644 index 00000000000000..0c6c67ad7ac78a --- /dev/null +++ b/boards/phytec/phyboard_nash/phyboard_nash_a55.dts @@ -0,0 +1,40 @@ +/* + * Copyright 2022,2024 NXP + * Copyright 2024 PHYTEC Messtechnik GmbH + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include "phyboard_nash-pinctrl.dtsi" + +/ { + model = "PHYTEC phyBOARD-Nash i.MX93"; + compatible = "phytec,phyboard_nash"; + + chosen { + zephyr,console = &lpuart2; + zephyr,shell-uart = &lpuart2; + zephyr,sram = &sram0; + }; + + cpus { + cpu@0 { + status = "disabled"; + }; + }; + + sram0: memory@d0000000 { + reg = <0xd0000000 DT_SIZE_M(1)>; + }; +}; + +&lpuart2 { + status = "okay"; + current-speed = <115200>; + /* clocks = <&ccm IMX_CCM_UART4_CLK 0x6c 24>; */ + pinctrl-0 = <&uart2_default>; + pinctrl-names = "default"; +}; diff --git a/boards/phytec/phyboard_nash/phyboard_nash_a55.yaml b/boards/phytec/phyboard_nash/phyboard_nash_a55.yaml new file mode 100644 index 00000000000000..b48692ee9e7104 --- /dev/null +++ b/boards/phytec/phyboard_nash/phyboard_nash_a55.yaml @@ -0,0 +1,18 @@ +# Copyright 2024 PHYTEC Messtechnik GmbH +# SPDX-License-Identifier: Apache-2.0 + +identifier: phyboard_nash/mimx9352/a55 +name: PHYTEC phyBOARD-Nash i.MX93 A55 +type: mcu +arch: arm64 +toolchain: + - zephyr + - cross-compile +ram: 1024 +supported: + - uart +testing: + ignore_tags: + - net + - bluetooth +vendor: phytec diff --git a/boards/phytec/phyboard_nash/phyboard_nash_a55_defconfig b/boards/phytec/phyboard_nash/phyboard_nash_a55_defconfig new file mode 100644 index 00000000000000..c714bcaac772b9 --- /dev/null +++ b/boards/phytec/phyboard_nash/phyboard_nash_a55_defconfig @@ -0,0 +1,24 @@ +# Copyright 2024 PHYTEC Messtechnik GmbH +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_CLOCK_CONTROL=y +CONFIG_SERIAL=y +CONFIG_UART_CONSOLE=y +CONFIG_UART_INTERRUPT_DRIVEN=y +CONFIG_CONSOLE=y + +# ARM Options +CONFIG_AARCH64_IMAGE_HEADER=y +CONFIG_ARMV8_A_NS=y + +# MMU Options +CONFIG_MAX_XLAT_TABLES=64 + +# Cache Options +CONFIG_CACHE_MANAGEMENT=y +CONFIG_DCACHE_LINE_SIZE_DETECT=y +CONFIG_ICACHE_LINE_SIZE_DETECT=y + +# Zephyr Kernel Configuration +CONFIG_XIP=n +CONFIG_KERNEL_DIRECT_MAP=y diff --git a/boards/phytec/phyboard_nash/phyboard_nash_m33.dts b/boards/phytec/phyboard_nash/phyboard_nash_m33.dts new file mode 100644 index 00000000000000..e1fcbe244b0140 --- /dev/null +++ b/boards/phytec/phyboard_nash/phyboard_nash_m33.dts @@ -0,0 +1,31 @@ +/* + * Copyright 2024 PHYTEC Messtechnik GmbH + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include "phyboard_nash-pinctrl.dtsi" + +/ { + model = "PHYTEC phyBOARD-Nash i.MX93"; + compatible = "phytec,phyboard_nash"; + + chosen { + /* TCM */ + zephyr,flash = &itcm; + zephyr,sram = &dtcm; + + zephyr,console = &lpuart2; + zephyr,shell-uart = &lpuart2; + }; +}; + +&lpuart2 { + status = "okay"; + current-speed = <115200>; + pinctrl-0 = <&uart2_default>; + pinctrl-names = "default"; +}; diff --git a/boards/phytec/phyboard_nash/phyboard_nash_m33.yaml b/boards/phytec/phyboard_nash/phyboard_nash_m33.yaml new file mode 100644 index 00000000000000..3927ba8d1dbcb1 --- /dev/null +++ b/boards/phytec/phyboard_nash/phyboard_nash_m33.yaml @@ -0,0 +1,15 @@ +# Copyright 2024 PHYTEC Messtechnik GmbH +# SPDX-License-Identifier: Apache-2.0 + +identifier: phyboard_nash/mimx9352/m33 +name: PHYTEC phyBOARD Nash (i.MX93) M33 +type: mcu +arch: arm +toolchain: + - zephyr + - cross-compile +ram: 128 +flash: 128 +supported: + - uart +vendor: phytec diff --git a/boards/phytec/phyboard_nash/phyboard_nash_m33_defconfig b/boards/phytec/phyboard_nash/phyboard_nash_m33_defconfig new file mode 100644 index 00000000000000..5538854b5995a2 --- /dev/null +++ b/boards/phytec/phyboard_nash/phyboard_nash_m33_defconfig @@ -0,0 +1,9 @@ +# Copyright 2024 PHYTEC Messtechnik GmbH +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_CLOCK_CONTROL=y +CONFIG_SERIAL=y +CONFIG_UART_CONSOLE=y +CONFIG_UART_INTERRUPT_DRIVEN=y +CONFIG_CONSOLE=y +CONFIG_XIP=y