From 1fbb4e87f220c77d0b0de654df41e48d74fe2220 Mon Sep 17 00:00:00 2001 From: Andre Morishita Date: Tue, 25 Feb 2025 19:29:24 -0300 Subject: [PATCH] boards: variscite: Add Variscite VAR-SOM-MX93 board Add Variscite VAR-SOM-MX93 board support. This SoM is based on NXP's i.MX93 SoC. It includes Cortex-A55 and Cortex-M33 support. Signed-off-by: Andre Morishita --- .../imx93_var_som/Kconfig.imx93_var_som | 8 + boards/variscite/imx93_var_som/board.cmake | 10 + boards/variscite/imx93_var_som/board.yml | 6 + .../imx93_var_som/doc/imx93_var_som.webp | Bin 0 -> 49678 bytes boards/variscite/imx93_var_som/doc/index.rst | 214 ++++++++++++++++++ .../imx93_var_som-m33-common.dtsi | 19 ++ .../imx93_var_som/imx93_var_som-pinctrl.dtsi | 30 +++ .../imx93_var_som_mimx9352_a55.dts | 78 +++++++ .../imx93_var_som_mimx9352_a55.yaml | 21 ++ .../imx93_var_som_mimx9352_a55_defconfig | 30 +++ .../imx93_var_som_mimx9352_m33.dts | 66 ++++++ .../imx93_var_som_mimx9352_m33.yaml | 15 ++ .../imx93_var_som_mimx9352_m33_defconfig | 9 + 13 files changed, 506 insertions(+) create mode 100644 boards/variscite/imx93_var_som/Kconfig.imx93_var_som create mode 100644 boards/variscite/imx93_var_som/board.cmake create mode 100644 boards/variscite/imx93_var_som/board.yml create mode 100644 boards/variscite/imx93_var_som/doc/imx93_var_som.webp create mode 100644 boards/variscite/imx93_var_som/doc/index.rst create mode 100644 boards/variscite/imx93_var_som/imx93_var_som-m33-common.dtsi create mode 100644 boards/variscite/imx93_var_som/imx93_var_som-pinctrl.dtsi create mode 100644 boards/variscite/imx93_var_som/imx93_var_som_mimx9352_a55.dts create mode 100644 boards/variscite/imx93_var_som/imx93_var_som_mimx9352_a55.yaml create mode 100644 boards/variscite/imx93_var_som/imx93_var_som_mimx9352_a55_defconfig create mode 100644 boards/variscite/imx93_var_som/imx93_var_som_mimx9352_m33.dts create mode 100644 boards/variscite/imx93_var_som/imx93_var_som_mimx9352_m33.yaml create mode 100644 boards/variscite/imx93_var_som/imx93_var_som_mimx9352_m33_defconfig diff --git a/boards/variscite/imx93_var_som/Kconfig.imx93_var_som b/boards/variscite/imx93_var_som/Kconfig.imx93_var_som new file mode 100644 index 00000000000..a5c59b8bf5e --- /dev/null +++ b/boards/variscite/imx93_var_som/Kconfig.imx93_var_som @@ -0,0 +1,8 @@ +# Copyright 2025 Variscite Ltd. +# Copyright 2022,2024 NXP +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_IMX93_VAR_SOM + select SOC_MIMX9352_A55 if BOARD_IMX93_VAR_SOM_MIMX9352_A55 + select SOC_MIMX9352_M33 if BOARD_IMX93_VAR_SOM_MIMX9352_M33 + select SOC_PART_NUMBER_MIMX9352DVVXM diff --git a/boards/variscite/imx93_var_som/board.cmake b/boards/variscite/imx93_var_som/board.cmake new file mode 100644 index 00000000000..4b24b088ce6 --- /dev/null +++ b/boards/variscite/imx93_var_som/board.cmake @@ -0,0 +1,10 @@ +# Copyright 2025 Variscite Ltd. +# SPDX-License-Identifier: Apache-2.0 + +if(CONFIG_SOC_MIMX9352_M33) + 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) +endif() diff --git a/boards/variscite/imx93_var_som/board.yml b/boards/variscite/imx93_var_som/board.yml new file mode 100644 index 00000000000..4ee70a3664c --- /dev/null +++ b/boards/variscite/imx93_var_som/board.yml @@ -0,0 +1,6 @@ +boards: + - name: imx93_var_som + full_name: VAR-SOM-MX93 + vendor: variscite + socs: + - name: mimx9352 diff --git a/boards/variscite/imx93_var_som/doc/imx93_var_som.webp b/boards/variscite/imx93_var_som/doc/imx93_var_som.webp new file mode 100644 index 0000000000000000000000000000000000000000..cc7a3f8fe062795f83d50941513eb8e56b2dc33c GIT binary patch literal 49678 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 literal 0 HcmV?d00001 diff --git a/boards/variscite/imx93_var_som/doc/index.rst b/boards/variscite/imx93_var_som/doc/index.rst new file mode 100644 index 00000000000..fc9430615a3 --- /dev/null +++ b/boards/variscite/imx93_var_som/doc/index.rst @@ -0,0 +1,214 @@ +.. zephyr:board:: imx93_var_som + +Overview +******** + +The VAR-SOM-MX93 offers a high-performance processing for a low-power System-on-Module. +The product is based on the i.MX 93 family which represents NXP’s latest power-optimized +processors for smart home, building control, contactless HMI, IoT edge, and Industrial +applications. + +The i.MX 93 includes powerful dual Arm® Cortex®-A55 processors with speeds up to 1.7 GHz +integrated with a NPU that accelerates machine learning inference. A general-purpose Arm® +Cortex®-M33 running up to 250 MHz is for real-time and low-power processing. Robust control +networks are possible via CAN-FD interface. Also, dual 1 Gbps Ethernet controllers, one +supporting Time Sensitive Networking (TSN), drive gateway applications with low latency. + +Zephyr OS is ported to run on either the Cortex®-A55 or the Cortex®-M33. + +Specs Summary +************* + + - CPU + + - NXP i.MX 93: + - 2x Cortex®-A55 @ 1.7GHz + - 1x Cortex®-M33 @ 250 MHz + - 1x Ethos-U65 microNPU 0.5 TOPS + - Memory + + - Up to 2GB LPDDR4 RAM + - GPU + + - PXP 2D Pixel acceleration engine + - NPU (Neural Processing Unit) + + - Neural Network performance (256 MACs operating up to 1.0 GHz and 2 OPS/MAC) + - NPU targets 8-bit and 16-bit integer RNN + - Handles 8-bit weights + - Display + + - LVDS up to 1366x768p60 or 1280x800p60 + - Parallel RGB up to 1366x768p60 or 1280x800p60 + - 1x MIPI DSI up to 1920x1200p60 24-bit + - Network + + - 2x 10/100/1000 Mbit/s Ethernet Interface + - Certified Wi-Fi 802.11ax/ac/a/b/g/n + - Bluetooth/BLE 5.4 + - Camera + + - One 2-lane MIPI CSI-2 camera input + - Audio + + - Headphones + - Microphone: Digital, Analog (stereo) + - 3x I2S(SAI), S/PDIF, PDM 4CH + - USB + + - 2x USB 2.0 OTG + - Serial interfaces + + - SPI: x7 + - I2C: x7 + - UART: x7, up to 5 Mbps + - CAN: x2 + - Temperature range + + - -40°C to 85°C + +More information about the SoM can be found at the +`Variscite Wiki`_ and +`Variscite website`_. + +Supported Features +****************** + +.. zephyr:board-supported-hw:: + +.. note:: + + It is recommended to disable peripherals used by the M33 core on the Linux host. + +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 UART7 for A55 core and M33 core. + +Programming and Debugging (A55) +******************************* + +Copy the compiled ``zephyr.bin`` to the boot directory 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 run zephyr.bin on the Cortex-A55: + +.. code-block:: console + + load mmc $mmcdev:$mmcpart $loadaddr /boot/zephyr.bin + dcache off; icache flush; go $loadaddr + +Use this configuration to run basic Zephyr applications and kernel tests, +for example, with the :zephyr:code-sample:`hello_world` sample: + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :host-os: unix + :board: imx93_var_som/mimx9352/a55 + :goals: build + +This will build an image with the hello_world sample app. When loaded and executed +it will display the following ram console output: + +.. code-block:: console + + *** Booting Zephyr OS build v4.0.0-45-gf012a8b9f506 *** + Hello World! imx93_var_som/mimx9352/a55 + + +Programming and Debugging (M33) +******************************* + +.. zephyr:board-supported-runners:: + +There are two methods to load M33 Core images: U-Boot command and Linux remoteproc. + +Load and Run M33 Zephyr Image from U-Boot +========================================= + +Load and run Zephyr on M33 from A55 using U-Boot by copying the compiled +``zephyr.bin`` to the boot directory of the SD card and plug the SD +card into the board. Power it up and stop the U-Boot execution at prompt. + +Load the M33 binary onto the desired memory and start its execution using: + +.. code-block:: console + + load mmc $mmcdev:$mmcpart 0x80000000 /boot/zephyr.bin + cp.b 0x80000000 0x201e0000 0x30000 + bootaux 0x1ffe0000 0 + +Load and Run M33 Zephyr Image by using Linux remoteproc +======================================================= + +Transfer built binaries ``zephyr.bin`` and ``zephyr.elf`` to the SoM's ``/boot`` and +``/lib/firmware`` respectively using ``scp`` or through an USB drive. + +Before running Cortex-M33 binaries from Linux it is necessary to enable the device tree +dedicated to be used with Cortex-M33 applications: + +.. code-block:: console + + root@imx93-var-som:~# fw_setenv fdt_file imx93-var-som-symphony-m33.dtb + root@imx93-var-som:~# reboot + +It is possible to execute Zephyr binaries using Variscite remoteproc scripts made +for MCUXpresso binaries: + +.. code-block:: console + + root@imx93-var-som:~# /etc/remoteproc/variscite-rproc-linux -f /lib/firmware/zephyr.elf + [ 44.366948] remoteproc remoteproc0: powering up imx-rproc + [ 44.374250] remoteproc remoteproc0: Booting fw image zephyr.elf, size 469352 + [ 44.383338] remoteproc remoteproc0: No resource table in elf + [ 44.904615] remoteproc remoteproc0: remote processor imx-rproc is now up + +Which should yield the following result on the UART7 serial console: + +.. code-block:: console + + *** Booting Zephyr OS build v4.0.0-44-g93cbaccbbc41 *** + Hello World! imx93_var_som/mimx9352/m33 + +You can also configure U-Boot to load firmware on boot: + +.. code-block:: console + + root@imx93-var-som:~# /etc/remoteproc/variscite-rproc-u-boot -f /boot/zephyr.bin + Configuring for TCM memory + + fw_setenv m33_addr 0x201E0000 + + fw_setenv fdt_file imx93-var-som-symphony-m33.dtb + + fw_setenv use_m33 yes + + fw_setenv m33_bin zephyr.bin + + Finished: Please reboot, the m33 firmware will run during U-Boot + +For more information about Variscite remoteproc scripts and general Cortex-M33 +support, visit `Variscite Wiki`_. + +References +********** + +- `Variscite Wiki`_ +- `Variscite website`_ +- `NXP website`_ + +.. _Variscite Wiki: + https://variwiki.com/index.php?title=VAR-SOM-MX93 + +.. _Variscite website: + https://www.variscite.com/product/system-on-module-som/cortex-a55/var-som-mx93-nxp-i-mx-93/ + +.. _NXP website: + https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-9-processors/i-mx-93-applications-processor-family-arm-cortex-a55-ml-acceleration-power-efficient-mpu:i.MX93 diff --git a/boards/variscite/imx93_var_som/imx93_var_som-m33-common.dtsi b/boards/variscite/imx93_var_som/imx93_var_som-m33-common.dtsi new file mode 100644 index 00000000000..fa7014d0613 --- /dev/null +++ b/boards/variscite/imx93_var_som/imx93_var_som-m33-common.dtsi @@ -0,0 +1,19 @@ +/* + * Copyright 2025 Variscite Ltd. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +/ { + soc { + lpuart7: serial@42690000 { + compatible = "nxp,imx-lpuart", "nxp,lpuart"; + reg = <0x42690000 DT_SIZE_K(64)>; + interrupts = <20 3>; + clocks = <&ccm IMX_CCM_LPUART7_CLK 0x6c 24>; + status = "disabled"; + }; + }; +}; diff --git a/boards/variscite/imx93_var_som/imx93_var_som-pinctrl.dtsi b/boards/variscite/imx93_var_som/imx93_var_som-pinctrl.dtsi new file mode 100644 index 00000000000..8d7f8ed5946 --- /dev/null +++ b/boards/variscite/imx93_var_som/imx93_var_som-pinctrl.dtsi @@ -0,0 +1,30 @@ +/* + * Copyright 2025 Variscite Ltd. + * Copyright 2022,2024 NXP + * SPDX-License-Identifier: Apache-2.0 + * + */ + +#include + +&pinctrl { + uart1_default: uart1_default { + group0 { + pinmux = <&iomuxc1_uart1_rxd_lpuart_rx_lpuart1_rx>, + <&iomuxc1_uart1_txd_lpuart_tx_lpuart1_tx>; + bias-pull-up; + slew-rate = "slightly_fast"; + drive-strength = "x5"; + }; + }; + + uart7_default: uart7_default { + group0 { + pinmux = <&iomuxc1_gpio_io09_lpuart_rx_lpuart7_rx>, + <&iomuxc1_gpio_io08_lpuart_tx_lpuart7_tx>; + bias-pull-up; + slew-rate = "slightly_fast"; + drive-strength = "x5"; + }; + }; +}; diff --git a/boards/variscite/imx93_var_som/imx93_var_som_mimx9352_a55.dts b/boards/variscite/imx93_var_som/imx93_var_som_mimx9352_a55.dts new file mode 100644 index 00000000000..5a9670357a9 --- /dev/null +++ b/boards/variscite/imx93_var_som/imx93_var_som_mimx9352_a55.dts @@ -0,0 +1,78 @@ +/* + * Copyright 2025 Variscite Ltd. + * Copyright 2022,2024 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include "imx93_var_som-pinctrl.dtsi" +#include +#include + +/ { + model = "Variscite VAR-SOM-MX93 A55"; + compatible = "fsl,mimx93"; + + chosen { + zephyr,console = &lpuart7; + zephyr,shell-uart = &lpuart7; + zephyr,sram = &sram0; + }; + + cpus { + cpu@0 { + status = "disabled"; + }; + }; + + sram0: memory@80400000 { + reg = <0x80400000 DT_SIZE_M(1)>; + }; + + lpuart7: serial@42690000 { + compatible = "nxp,imx-lpuart", "nxp,lpuart"; + reg = <0x42690000 DT_SIZE_K(64)>; + interrupts = ; + interrupt-names = "irq_0"; + interrupt-parent = <&gic>; + clocks = <&ccm IMX_CCM_LPUART7_CLK 0x6c 24>; + status = "okay"; + current-speed = <115200>; + pinctrl-0 = <&uart7_default>; + pinctrl-names = "default"; + }; + + aliases { + led0 = &blinky0; + sw0 = &button0; + }; + + leds { + compatible = "gpio-leds"; + + blinky0: blinky_0 { + gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>; + }; + }; + + keys { + compatible = "gpio-keys"; + + button0: btn_0 { + label = "BTN0"; + gpios = <&gpio2 27 (GPIO_PULL_UP|GPIO_ACTIVE_LOW)>; + zephyr,code = ; + }; + }; +}; + +&gpio2 { + status = "okay"; +}; + +&gpio4 { + status = "okay"; +}; diff --git a/boards/variscite/imx93_var_som/imx93_var_som_mimx9352_a55.yaml b/boards/variscite/imx93_var_som/imx93_var_som_mimx9352_a55.yaml new file mode 100644 index 00000000000..26b23b9a21f --- /dev/null +++ b/boards/variscite/imx93_var_som/imx93_var_som_mimx9352_a55.yaml @@ -0,0 +1,21 @@ +# +# Copyright 2025 Variscite Ltd. +# Copyright 2024 NXP +# +# SPDX-License-Identifier: Apache-2.0 +# + +identifier: imx93_var_som/mimx9352/a55 +name: Variscite VAR-SOM-MX93 A55 +type: mcu +arch: arm64 +toolchain: + - zephyr + - cross-compile +ram: 1024 +supported: + - gpio + - uart +testing: + ignore_tags: + - bluetooth diff --git a/boards/variscite/imx93_var_som/imx93_var_som_mimx9352_a55_defconfig b/boards/variscite/imx93_var_som/imx93_var_som_mimx9352_a55_defconfig new file mode 100644 index 00000000000..0819d35e45f --- /dev/null +++ b/boards/variscite/imx93_var_som/imx93_var_som_mimx9352_a55_defconfig @@ -0,0 +1,30 @@ +# +# Copyright 2025 Variscite Ltd. +# Copyright 2022 NXP +# +# SPDX-License-Identifier: Apache-2.0 + +# 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 + +# Serial Drivers +CONFIG_SERIAL=y + +# Enable Console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +CONFIG_CLOCK_CONTROL=y diff --git a/boards/variscite/imx93_var_som/imx93_var_som_mimx9352_m33.dts b/boards/variscite/imx93_var_som/imx93_var_som_mimx9352_m33.dts new file mode 100644 index 00000000000..c07e9e9fff5 --- /dev/null +++ b/boards/variscite/imx93_var_som/imx93_var_som_mimx9352_m33.dts @@ -0,0 +1,66 @@ +/* + * Copyright 2025 Variscite Ltd. + * Copyright 2024 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include "imx93_var_som-pinctrl.dtsi" +#include "imx93_var_som-m33-common.dtsi" +#include +#include + +/ { + model = "Variscite VAR-SOM-MX93"; + compatible = "nxp,imx93_var_som"; + + chosen { + /* TCM */ + zephyr,flash = &itcm; + zephyr,sram = &dtcm; + + zephyr,console = &lpuart7; + zephyr,shell-uart = &lpuart7; + }; + + aliases { + led0 = &blinky0; + sw0 = &button0; + }; + + leds { + compatible = "gpio-leds"; + + blinky0: blinky_0 { + gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>; + }; + }; + + keys { + compatible = "gpio-keys"; + + button0: btn_0 { + label = "BTN0"; + gpios = <&gpio2 27 (GPIO_PULL_UP|GPIO_ACTIVE_LOW)>; + zephyr,code = ; + }; + }; +}; + +&lpuart7 { + status = "okay"; + current-speed = <115200>; + pinctrl-0 = <&uart7_default>; + pinctrl-names = "default"; +}; + +&gpio2 { + status = "okay"; +}; + +&gpio4 { + status = "okay"; +}; diff --git a/boards/variscite/imx93_var_som/imx93_var_som_mimx9352_m33.yaml b/boards/variscite/imx93_var_som/imx93_var_som_mimx9352_m33.yaml new file mode 100644 index 00000000000..461218c9d9d --- /dev/null +++ b/boards/variscite/imx93_var_som/imx93_var_som_mimx9352_m33.yaml @@ -0,0 +1,15 @@ +# Copyright 2025 Variscite Ltd. +# SPDX-License-Identifier: Apache-2.0 + +identifier: imx93_var_som/mimx9352/m33 +name: Variscite VAR-SOM-MX93 M33 +type: mcu +arch: arm +toolchain: + - zephyr + - cross-compile +ram: 128 +flash: 128 +supported: + - gpio + - uart diff --git a/boards/variscite/imx93_var_som/imx93_var_som_mimx9352_m33_defconfig b/boards/variscite/imx93_var_som/imx93_var_som_mimx9352_m33_defconfig new file mode 100644 index 00000000000..1583ec46004 --- /dev/null +++ b/boards/variscite/imx93_var_som/imx93_var_som_mimx9352_m33_defconfig @@ -0,0 +1,9 @@ +# Copyright 2025 Variscite Ltd. +# Copyright 2024 NXP +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_CLOCK_CONTROL=y +CONFIG_SERIAL=y +CONFIG_UART_CONSOLE=y +CONFIG_CONSOLE=y +CONFIG_XIP=y