Skip to content

Commit 67c69de

Browse files
committed
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 <[email protected]>
1 parent 4793e00 commit 67c69de

12 files changed

+355
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Copyright 2024 PHYTEC Messtechnik GmbH
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config BOARD_PHYBOARD_NASH
5+
select SOC_MIMX9352_A55 if BOARD_PHYBOARD_NASH_MIMX9352_A55
6+
select SOC_MIMX9352_M33 if BOARD_PHYBOARD_NASH_MIMX9352_M33
7+
select SOC_PART_NUMBER_MIMX9352CVVXM
+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Copyright (c) 2024, PHYTEC Messtechnik GmbH
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
board_set_debugger_ifnset(jlink)
5+
board_set_flasher_ifnset(jlink)
6+
7+
board_runner_args(jlink "--device=MIMX9352_M33")
8+
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)

boards/phytec/phyboard_nash/board.yml

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
board:
2+
name: phyboard_nash
3+
full_name: phyBOARD-Nash i.MX93
4+
vendor: phytec
5+
socs:
6+
- name: mimx9352
Binary file not shown.
+178
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
.. _phyboard_nash:
2+
3+
phyBOARD-Nash i.MX93
4+
####################
5+
6+
Overview
7+
********
8+
9+
The phyBOARD-Nash is based on the phyCORE-i.MX93 SoM is based on the NXP i.MX93
10+
SoC. It features common industrial interfaces and can be used as a reference for
11+
development or in the final product. It is an entry-level development board,
12+
which helps developers to get familiar with the module before investing a large
13+
amount of resources in more specific designs.
14+
15+
i.MX93 MPU is composed of one cluster of 2x Cortex-A55 cores and a single
16+
Cortex-M33 core. Zephyr OS is ported to run on one of the Cortex-A55 core as
17+
well as the Cortex-M33 core.
18+
19+
- Memory:
20+
21+
- RAM: 512 MB - 2GB LPDDR4
22+
- EEPROM: 4 kB - 32 kB
23+
- eMMC: 8 GB - 256 GB
24+
25+
- Interfaces:
26+
27+
- Ethernet: 2x 10/100BASE-T (1x TSN Support)
28+
- USB: 2x 2.0 Host / OTG
29+
- Serial: 1x RS232 / RS485 Full Duplex / Half Duplex
30+
- CAN: 1x CAN FD
31+
- Digital I/O: via Expansion Connector
32+
- MMX/SD/SDIO: microSD slot
33+
- Display: LVDS(1x4 or 1x8), MIPI DSI(1x4), HDMI
34+
- Audio: SAI
35+
- Camera: 1x MIPI CSI-2 (phyCAM-M), 1x Parallel
36+
- Expansion Bus: I2C, SPI, SDIO, UART, USB
37+
38+
- Debug:
39+
40+
- JTAG 10-pin connector
41+
- USB-C for UART debug, 2x serial ports for A55 and M33
42+
43+
44+
.. image:: img/phyboard_nash.webp
45+
:width: 720px
46+
:align: center
47+
:height: 405px
48+
:alt: phyBOARD-Nash
49+
50+
More information about the board can be found at the `PHYTEC website`_.
51+
52+
Supported Features
53+
==================
54+
55+
The ``phyboard_nash/mimx9352/a55`` board target supports the following hardware
56+
features:
57+
58+
+-----------+------------+-------------------------------------+
59+
| Interface | Controller | Driver/Component |
60+
+===========+============+=====================================+
61+
| GIC-v4 | on-chip | interrupt controller |
62+
+-----------+------------+-------------------------------------+
63+
| ARM TIMER | on-chip | system clock |
64+
+-----------+------------+-------------------------------------+
65+
| CLOCK | on-chip | clock_control |
66+
+-----------+------------+-------------------------------------+
67+
| PINMUX | on-chip | pinmux |
68+
+-----------+------------+-------------------------------------+
69+
| UART | on-chip | serial port |
70+
+-----------+------------+-------------------------------------+
71+
| TPM | on-chip | TPM Counter |
72+
+-----------+------------+-------------------------------------+
73+
74+
The ``phyboard_nash/mimx9352/m33`` board target supports the following hardware
75+
features:
76+
77+
+-----------+------------+-------------------------------------+
78+
| Interface | Controller | Driver/Component |
79+
+===========+============+=====================================+
80+
| NVIC | on-chip | interrupt controller |
81+
+-----------+------------+-------------------------------------+
82+
| SYSTICK | on-chip | systick |
83+
+-----------+------------+-------------------------------------+
84+
| CLOCK | on-chip | clock_control |
85+
+-----------+------------+-------------------------------------+
86+
| PINMUX | on-chip | pinmux |
87+
+-----------+------------+-------------------------------------+
88+
| UART | on-chip | serial port |
89+
+-----------+------------+-------------------------------------+
90+
91+
Devices
92+
========
93+
System Clock
94+
------------
95+
96+
This board configuration uses a system clock frequency of 24 MHz. Cortex-A55
97+
Core runs up to 1.7 GHz. Cortex-M33 Core runs up to 200MHz in which SYSTICK runs
98+
on same frequency.
99+
100+
Serial Port
101+
-----------
102+
103+
This board configuration uses a single serial communication channel with the
104+
CPU's UART2 for A55 core and M33 core. The u-boot bootloader or Linux use the
105+
second serial port for debug output.
106+
107+
Programming and Debugging (A55)
108+
*******************************
109+
110+
Copy the compiled ``zephyr.bin`` to the ``BOOT`` partition of the SD card and
111+
plug the SD card into the board. Power it up and stop the u-boot execution at
112+
prompt.
113+
114+
Use U-Boot to load and execute zephyr.bin on Cortex-A55 Core0:
115+
116+
.. code-block:: console
117+
118+
fatload mmc 1:1 0xd0000000 zephyr.bin; dcache flush; icache flush; dcache off; icache off; go 0xd0000000
119+
120+
121+
Use this configuration to run basic Zephyr applications and kernel tests,
122+
for example:
123+
124+
.. zephyr-app-commands::
125+
:zephyr-app: samples/hello_world
126+
:board: phyboard_nash/mimx9352/a55
127+
:goals: build
128+
129+
Use this configuration to run basic Zephyr applications, for example:
130+
131+
.. code-block:: console
132+
133+
*** Booting Zephyr OS build v3.7.0-848-gb4d99b124c6d ***
134+
Hello World! phyboard_nash/mimx9352/a55
135+
136+
Programming and Debugging (M33)
137+
*******************************
138+
139+
Copy the compiled ``zephyr.bin`` to the ``BOOT`` partition of the SD card and
140+
plug the SD card into the board. Power it up and stop the u-boot execution at
141+
prompt.
142+
143+
Use U-Boot to load and kick zephyr.bin to Cortex-M33 Core:
144+
145+
.. code-block:: console
146+
147+
load mmc 1:1 0x80000000 zephyr.bin;cp.b 0x80000000 0x201e0000 0x30000;bootaux 0x1ffe0000 0
148+
149+
Use this configuration to run basic Zephyr applications, for example:
150+
151+
.. zephyr-app-commands::
152+
:zephyr-app: samples/hello_world
153+
:board: phyboard_nash/mimx9352/m33
154+
:goals: build
155+
156+
This will build an image with the synchronization sample app, boot it and
157+
display the following console output:
158+
159+
.. code-block:: console
160+
161+
*** Booting Zephyr OS build v3.7.0-848-gb4d99b124c6d ***
162+
Hello World! phyboard_nash/mimx9352/m33
163+
164+
Starting the M7-Core from U-Boot and Linux
165+
==========================================
166+
167+
Loading binaries and starting the M33-Core is supported from Linux via
168+
remoteproc. Please check the `phyCORE-i.MX93 BSP Manual`_ for more information.
169+
170+
References
171+
==========
172+
173+
For more information refer to the `PHYTEC website`_.
174+
175+
.. _PHYTEC website:
176+
https://www.phytec.eu/en/produkte/development-kits/phyboard-nash/
177+
.. _phyCORE-i.MX93 BSP Manual:
178+
https://phytec.github.io/doc-bsp-yocto/bsp/imx9/imx93/imx93.html
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/*
2+
* Copyright 2024 PHYTEC Messtechnik GmbH
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#include <nxp/nxp_imx/mimx9352cvuxk-pinctrl.dtsi>
8+
9+
&pinctrl {
10+
uart2_default: uart2_default {
11+
group0 {
12+
pinmux = <&iomuxc1_uart2_rxd_lpuart_rx_lpuart2_rx>,
13+
<&iomuxc1_uart2_txd_lpuart_tx_lpuart2_tx>;
14+
bias-pull-up;
15+
slew-rate = "slightly_fast";
16+
drive-strength = "x5";
17+
};
18+
};
19+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* Copyright 2022,2024 NXP
3+
* Copyright 2024 PHYTEC Messtechnik GmbH
4+
*
5+
* SPDX-License-Identifier: Apache-2.0
6+
*/
7+
8+
/dts-v1/;
9+
10+
#include <nxp/nxp_mimx93_a55.dtsi>
11+
#include "phyboard_nash-pinctrl.dtsi"
12+
13+
/ {
14+
model = "PHYTEC phyBOARD-Nash i.MX93";
15+
compatible = "phytec,phyboard_nash";
16+
17+
chosen {
18+
zephyr,console = &lpuart2;
19+
zephyr,shell-uart = &lpuart2;
20+
zephyr,sram = &sram0;
21+
};
22+
23+
cpus {
24+
cpu@0 {
25+
status = "disabled";
26+
};
27+
};
28+
29+
sram0: memory@d0000000 {
30+
reg = <0xd0000000 DT_SIZE_M(1)>;
31+
};
32+
};
33+
34+
&lpuart2 {
35+
status = "okay";
36+
current-speed = <115200>;
37+
/* clocks = <&ccm IMX_CCM_UART4_CLK 0x6c 24>; */
38+
pinctrl-0 = <&uart2_default>;
39+
pinctrl-names = "default";
40+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Copyright 2024 PHYTEC Messtechnik GmbH
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
identifier: phyboard_nash/mimx9352/a55
5+
name: PHYTEC phyBOARD-Nash i.MX93 A55
6+
type: mcu
7+
arch: arm64
8+
toolchain:
9+
- zephyr
10+
- cross-compile
11+
ram: 1024
12+
supported:
13+
- uart
14+
testing:
15+
ignore_tags:
16+
- net
17+
- bluetooth
18+
vendor: phytec
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Copyright 2024 PHYTEC Messtechnik GmbH
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
CONFIG_CLOCK_CONTROL=y
5+
CONFIG_SERIAL=y
6+
CONFIG_UART_CONSOLE=y
7+
CONFIG_UART_INTERRUPT_DRIVEN=y
8+
CONFIG_CONSOLE=y
9+
10+
# ARM Options
11+
CONFIG_AARCH64_IMAGE_HEADER=y
12+
CONFIG_ARMV8_A_NS=y
13+
14+
# MMU Options
15+
CONFIG_MAX_XLAT_TABLES=64
16+
17+
# Cache Options
18+
CONFIG_CACHE_MANAGEMENT=y
19+
CONFIG_DCACHE_LINE_SIZE_DETECT=y
20+
CONFIG_ICACHE_LINE_SIZE_DETECT=y
21+
22+
# Zephyr Kernel Configuration
23+
CONFIG_XIP=n
24+
CONFIG_KERNEL_DIRECT_MAP=y
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
* Copyright 2024 PHYTEC Messtechnik GmbH
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
/dts-v1/;
8+
9+
#include <nxp/nxp_imx93_m33.dtsi>
10+
#include "phyboard_nash-pinctrl.dtsi"
11+
12+
/ {
13+
model = "PHYTEC phyBOARD-Nash i.MX93";
14+
compatible = "phytec,phyboard_nash";
15+
16+
chosen {
17+
/* TCM */
18+
zephyr,flash = &itcm;
19+
zephyr,sram = &dtcm;
20+
21+
zephyr,console = &lpuart2;
22+
zephyr,shell-uart = &lpuart2;
23+
};
24+
};
25+
26+
&lpuart2 {
27+
status = "okay";
28+
current-speed = <115200>;
29+
pinctrl-0 = <&uart2_default>;
30+
pinctrl-names = "default";
31+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Copyright 2024 PHYTEC Messtechnik GmbH
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
identifier: phyboard_nash/mimx9352/m33
5+
name: PHYTEC phyBOARD Nash (i.MX93) M33
6+
type: mcu
7+
arch: arm
8+
toolchain:
9+
- zephyr
10+
- cross-compile
11+
ram: 128
12+
flash: 128
13+
supported:
14+
- uart
15+
vendor: phytec
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Copyright 2024 PHYTEC Messtechnik GmbH
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
CONFIG_CLOCK_CONTROL=y
5+
CONFIG_SERIAL=y
6+
CONFIG_UART_CONSOLE=y
7+
CONFIG_UART_INTERRUPT_DRIVEN=y
8+
CONFIG_CONSOLE=y
9+
CONFIG_XIP=y

0 commit comments

Comments
 (0)