Skip to content

Commit 71fa64c

Browse files
yangbolu1991aescolar
authored andcommitted
boards: nxp: add imx93_evk M33 support
Added basic board support for imx93_evk M33. Signed-off-by: Yangbo Lu <[email protected]>
1 parent 09d700c commit 71fa64c

File tree

5 files changed

+175
-6
lines changed

5 files changed

+175
-6
lines changed

boards/nxp/imx93_evk/Kconfig.imx93_evk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@
33

44
config BOARD_IMX93_EVK
55
select SOC_MIMX9352_A55 if BOARD_IMX93_EVK_MIMX9352_A55
6+
select SOC_MIMX9352_M33 if BOARD_IMX93_EVK_MIMX9352_M33
67
select SOC_PART_NUMBER_MIMX9352DVVXM

boards/nxp/imx93_evk/doc/index.rst

Lines changed: 65 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
.. _imx93_evk:
22

3-
NXP i.MX93 EVK (Cortex-A55)
4-
############################
3+
NXP i.MX93 EVK
4+
##############
55

66
Overview
77
********
@@ -71,19 +71,39 @@ hardware features:
7171
| ENET | on-chip | ethernet port |
7272
+-----------+------------+-------------------------------------+
7373

74+
The Zephyr imx93_evk board Cortex-M33 configuration supports the following
75+
hardware 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+
| GPIO | on-chip | GPIO |
91+
+-----------+------------+-------------------------------------+
92+
7493
Devices
7594
========
7695
System Clock
7796
------------
7897

7998
This board configuration uses a system clock frequency of 24 MHz.
8099
Cortex-A55 Core runs up to 1.7 GHz.
100+
Cortex-M33 Core runs up to 200MHz in which SYSTICK runs on same frequency.
81101

82102
Serial Port
83103
-----------
84104

85105
This board configuration uses a single serial communication channel with the
86-
CPU's UART4.
106+
CPU's UART2 for A55 core and M33 core.
87107

88108
Board MUX Control
89109
-----------------
@@ -114,8 +134,8 @@ over dts config. For instance, if ``CONFIG_CAN`` is enabled, MUX A is selected
114134
even if ``mux="B";`` is configured in dts, and an warning would be reported in
115135
the log.
116136

117-
Programming and Debugging
118-
*************************
137+
Programming and Debugging (A55)
138+
*******************************
119139

120140
Copy the compiled ``zephyr.bin`` to the first FAT partition of the SD card and
121141
plug the SD card into the board. Power it up and stop the u-boot execution at
@@ -145,7 +165,7 @@ for example, with the :zephyr:code-sample:`synchronization` sample:
145165
:goals: run
146166

147167
This will build an image with the synchronization sample app, boot it and
148-
display the following ram console output:
168+
display the following console output:
149169

150170
.. code-block:: console
151171
@@ -155,6 +175,45 @@ display the following ram console output:
155175
thread_a: Hello World from cpu 0 on mimx93_evk_a55!
156176
thread_b: Hello World from cpu 0 on mimx93_evk_a55!
157177
178+
Programming and Debugging (M33)
179+
*******************************
180+
181+
Copy the compiled ``zephyr.bin`` to the first FAT partition of the SD card and
182+
plug the SD card into the board. Power it up and stop the u-boot execution at
183+
prompt.
184+
185+
Use U-Boot to load and kick zephyr.bin to Cortex-M33 Core:
186+
187+
.. code-block:: console
188+
189+
load mmc 1:1 0x80000000 zephyr.bin;cp.b 0x80000000 0x201e0000 0x30000;bootaux 0x1ffe0000 0
190+
191+
Use this configuration to run basic Zephyr applications and kernel tests,
192+
for example, with the :zephyr:code-sample:`synchronization` sample:
193+
194+
.. zephyr-app-commands::
195+
:zephyr-app: samples/synchronization
196+
:host-os: unix
197+
:board: imx93_evk/mimx9352/m33
198+
:goals: run
199+
200+
This will build an image with the synchronization sample app, boot it and
201+
display the following console output:
202+
203+
.. code-block:: console
204+
205+
*** Booting Zephyr OS build v3.7.0-684-g71a7d05ba60a ***
206+
thread_a: Hello World from cpu 0 on imx93_evk!
207+
thread_b: Hello World from cpu 0 on imx93_evk!
208+
thread_a: Hello World from cpu 0 on imx93_evk!
209+
thread_b: Hello World from cpu 0 on imx93_evk!
210+
211+
To make a container image flash.bin with ``zephyr.bin`` for SD/eMMC programming and booting
212+
from BootROM. Refer to user manual of i.MX93 `MCUX SDK release`_.
213+
214+
.. _MCUX SDK release:
215+
https://mcuxpresso.nxp.com/
216+
158217
References
159218
==========
160219

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
/*
2+
* Copyright 2024 NXP
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
/dts-v1/;
8+
9+
#include <nxp/nxp_imx93_m33.dtsi>
10+
#include "imx93_evk-pinctrl.dtsi"
11+
12+
/ {
13+
model = "NXP i.MX93 EVK board";
14+
compatible = "nxp,imx93_evk";
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+
aliases {
26+
led0 = &led_r;
27+
led1 = &led_g;
28+
sw0 = &btn_1;
29+
};
30+
31+
leds {
32+
compatible = "gpio-leds";
33+
led_r: led_r {
34+
label = "LED_R";
35+
gpios = <&gpio2 13 GPIO_ACTIVE_HIGH>;
36+
};
37+
led_g: led_g {
38+
label = "LED_G";
39+
gpios = <&gpio2 4 GPIO_ACTIVE_HIGH>;
40+
};
41+
led_b: led_b {
42+
label = "LED_B";
43+
gpios = <&gpio2 12 GPIO_ACTIVE_HIGH>;
44+
};
45+
};
46+
47+
keys {
48+
compatible = "gpio-keys";
49+
50+
btn_1: btn_1{
51+
label = "BTN1";
52+
gpios = <&gpio2 23 GPIO_ACTIVE_LOW>;
53+
};
54+
55+
btn_2: btn_2{
56+
label = "BTN2";
57+
gpios = <&gpio2 24 GPIO_ACTIVE_LOW>;
58+
};
59+
};
60+
};
61+
62+
&lpuart2 {
63+
status = "okay";
64+
current-speed = <115200>;
65+
pinctrl-0 = <&uart2_default>;
66+
pinctrl-names = "default";
67+
};
68+
69+
&gpio1 {
70+
status = "okay";
71+
};
72+
73+
&gpio2 {
74+
status = "okay";
75+
};
76+
77+
&gpio3 {
78+
status = "okay";
79+
};
80+
81+
&gpio4 {
82+
status = "okay";
83+
};
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Copyright 2024 NXP
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
identifier: imx93_evk/mimx9352/m33
5+
name: NXP i.MX93 EVK M33
6+
type: mcu
7+
arch: arm
8+
toolchain:
9+
- zephyr
10+
- cross-compile
11+
ram: 128
12+
flash: 128
13+
supported:
14+
- gpio
15+
- uart
16+
vendor: nxp
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Copyright 2024 NXP
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
CONFIG_CLOCK_CONTROL=y
5+
CONFIG_PINCTRL=y
6+
CONFIG_SERIAL=y
7+
CONFIG_UART_CONSOLE=y
8+
CONFIG_UART_INTERRUPT_DRIVEN=y
9+
CONFIG_CONSOLE=y
10+
CONFIG_XIP=y

0 commit comments

Comments
 (0)