boards: variscite: Add Variscite DART-MX93 board
Add Variscite DART-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 <andre.m@variscite.com>
This commit is contained in:
parent
aa3af71eb4
commit
d3ecec1e2c
13 changed files with 507 additions and 0 deletions
8
boards/variscite/imx93_var_dart/Kconfig.imx93_var_dart
Normal file
8
boards/variscite/imx93_var_dart/Kconfig.imx93_var_dart
Normal file
|
@ -0,0 +1,8 @@
|
|||
# Copyright 2025 Variscite Ltd.
|
||||
# Copyright 2022,2024 NXP
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
config BOARD_IMX93_VAR_DART
|
||||
select SOC_MIMX9352_A55 if BOARD_IMX93_VAR_DART_MIMX9352_A55
|
||||
select SOC_MIMX9352_M33 if BOARD_IMX93_VAR_DART_MIMX9352_M33
|
||||
select SOC_PART_NUMBER_MIMX9352DVVXM
|
10
boards/variscite/imx93_var_dart/board.cmake
Normal file
10
boards/variscite/imx93_var_dart/board.cmake
Normal file
|
@ -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()
|
6
boards/variscite/imx93_var_dart/board.yml
Normal file
6
boards/variscite/imx93_var_dart/board.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
boards:
|
||||
- name: imx93_var_dart
|
||||
full_name: DART-MX93
|
||||
vendor: variscite
|
||||
socs:
|
||||
- name: mimx9352
|
BIN
boards/variscite/imx93_var_dart/doc/imx93_var_dart.webp
Normal file
BIN
boards/variscite/imx93_var_dart/doc/imx93_var_dart.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 64 KiB |
214
boards/variscite/imx93_var_dart/doc/index.rst
Normal file
214
boards/variscite/imx93_var_dart/doc/index.rst
Normal file
|
@ -0,0 +1,214 @@
|
|||
.. zephyr:board:: imx93_var_dart
|
||||
|
||||
Overview
|
||||
********
|
||||
|
||||
The DART-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_dart/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-44-g93cbaccbbc41 ***
|
||||
Hello World! imx93_var_dart/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-dart-dt8mcustomboard-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
|
||||
[ 125.449838] remoteproc remoteproc0: powering up imx-rproc
|
||||
[ 125.459162] remoteproc remoteproc0: Booting fw image zephyr.elf, size 469356
|
||||
[ 125.468958] remoteproc remoteproc0: No resource table in elf
|
||||
[ 125.987142] 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_dart/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-dart-dt8mcustomboard-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=DART-MX93
|
||||
|
||||
.. _Variscite website:
|
||||
https://www.variscite.com/product/system-on-module-som/cortex-a55/dart-mx93-nxp-i-mx93/
|
||||
|
||||
.. _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
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* Copyright 2025 Variscite Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <nxp/nxp_imx93_m33.dtsi>
|
||||
|
||||
/ {
|
||||
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";
|
||||
};
|
||||
};
|
||||
};
|
31
boards/variscite/imx93_var_dart/imx93_var_dart-pinctrl.dtsi
Normal file
31
boards/variscite/imx93_var_dart/imx93_var_dart-pinctrl.dtsi
Normal file
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Copyright 2025 Variscite Ltd.
|
||||
* Copyright 2022,2024 NXP
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
*/
|
||||
|
||||
#include <nxp/nxp_imx/mimx9352cvuxk-pinctrl.dtsi>
|
||||
|
||||
&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";
|
||||
};
|
||||
};
|
||||
|
||||
};
|
|
@ -0,0 +1,78 @@
|
|||
/*
|
||||
* Copyright 2025 Variscite Ltd.
|
||||
* Copyright 2022,2024 NXP
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include <nxp/nxp_mimx93_a55.dtsi>
|
||||
#include "imx93_var_dart-pinctrl.dtsi"
|
||||
#include <zephyr/dt-bindings/gpio/gpio.h>
|
||||
#include <zephyr/dt-bindings/input/input-event-codes.h>
|
||||
|
||||
/ {
|
||||
model = "Variscite DART-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 = <GIC_SPI 20 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>;
|
||||
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 1 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
button0: btn_0 {
|
||||
label = "BTN0";
|
||||
gpios = <&gpio2 27 (GPIO_PULL_UP|GPIO_ACTIVE_LOW)>;
|
||||
zephyr,code = <INPUT_KEY_0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&gpio2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio4 {
|
||||
status = "okay";
|
||||
};
|
|
@ -0,0 +1,21 @@
|
|||
#
|
||||
# Copyright 2025 Variscite Ltd.
|
||||
# Copyright 2024 NXP
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
identifier: imx93_var_dart/mimx9352/a55
|
||||
name: Variscite DART-MX93 A55
|
||||
type: mcu
|
||||
arch: arm64
|
||||
toolchain:
|
||||
- zephyr
|
||||
- cross-compile
|
||||
ram: 1024
|
||||
supported:
|
||||
- gpio
|
||||
- uart
|
||||
testing:
|
||||
ignore_tags:
|
||||
- bluetooth
|
|
@ -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
|
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* Copyright 2025 Variscite Ltd.
|
||||
* Copyright 2024 NXP
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include <nxp/nxp_imx93_m33.dtsi>
|
||||
#include "imx93_var_dart-pinctrl.dtsi"
|
||||
#include "imx93_var_dart-m33-common.dtsi"
|
||||
#include <zephyr/dt-bindings/gpio/gpio.h>
|
||||
#include <zephyr/dt-bindings/input/input-event-codes.h>
|
||||
|
||||
/ {
|
||||
model = "Variscite DART-MX93";
|
||||
compatible = "nxp,imx93_var_dart";
|
||||
|
||||
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 1 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
button0: btn_0 {
|
||||
label = "BTN0";
|
||||
gpios = <&gpio2 27 (GPIO_PULL_UP|GPIO_ACTIVE_LOW)>;
|
||||
zephyr,code = <INPUT_KEY_0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&lpuart7 {
|
||||
status = "okay";
|
||||
current-speed = <115200>;
|
||||
pinctrl-0 = <&uart7_default>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&gpio2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gpio4 {
|
||||
status = "okay";
|
||||
};
|
|
@ -0,0 +1,15 @@
|
|||
# Copyright 2025 Variscite Ltd.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
identifier: imx93_var_dart/mimx9352/m33
|
||||
name: Variscite DART-MX93 M33
|
||||
type: mcu
|
||||
arch: arm
|
||||
toolchain:
|
||||
- zephyr
|
||||
- cross-compile
|
||||
ram: 128
|
||||
flash: 128
|
||||
supported:
|
||||
- gpio
|
||||
- uart
|
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue