Skip to content

Commit 6b615d3

Browse files
whbo158kartben
authored andcommitted
boards: nxp: add support for platform FRDM-IMX93
Add initial support for FRDM-IMX93 board Building hello_world: west build -p always -b frdm_imx93/mimx9352/a55 samples/hello_world Signed-off-by: Hongbo Wang <[email protected]> Signed-off-by: Chekhov Ma <[email protected]>
1 parent 1965149 commit 6b615d3

10 files changed

+588
-0
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Copyright 2025 NXP
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
if BOARD_FRDM_IMX93
5+
6+
if BOARD_FRDM_IMX93_MIMX9352_A55
7+
8+
if GPIO
9+
10+
# CAN Phy must be initialized after board mux
11+
config I2C
12+
default y
13+
14+
endif # GPIO
15+
16+
if CAN
17+
18+
# CAN Phy must be initialized after board mux
19+
config GPIO_PCA_SERIES_INIT_PRIORITY
20+
default 60
21+
22+
config CAN_TRANSCEIVER_INIT_PRIORITY
23+
default 65
24+
25+
endif # CAN
26+
27+
if NETWORKING
28+
29+
config NET_L2_ETHERNET
30+
default y
31+
32+
config NET_TX_STACK_SIZE
33+
default 8192
34+
35+
config NET_RX_STACK_SIZE
36+
default 8192
37+
38+
if NET_TCP
39+
40+
config NET_TCP_WORKQ_STACK_SIZE
41+
default 8192
42+
43+
endif # NET_TCP
44+
45+
if NET_MGMT_EVENT
46+
47+
config NET_MGMT_EVENT_STACK_SIZE
48+
default 8192
49+
50+
endif # NET_MGMT_EVENT
51+
52+
if NET_SOCKETS_SERVICE
53+
54+
config NET_SOCKETS_SERVICE_STACK_SIZE
55+
default 8192
56+
57+
endif # NET_SOCKETS_SERVICE
58+
59+
endif # NETWORKING
60+
61+
endif # BOARD_FRDM_IMX93_MIMX9352_A55
62+
63+
endif # BOARD_FRDM_IMX93
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Copyright 2025 NXP
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config BOARD_FRDM_IMX93
5+
select SOC_MIMX9352_A55 if BOARD_FRDM_IMX93_MIMX9352_A55
6+
select SOC_PART_NUMBER_MIMX9352DVVXM

boards/nxp/frdm_imx93/board.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
board:
2+
name: frdm_imx93
3+
full_name: FRDM-IMX93
4+
vendor: nxp
5+
socs:
6+
- name: mimx9352
30.7 KB
Loading
Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
.. zephyr:board:: frdm_imx93
2+
3+
Overview
4+
********
5+
6+
The FRDM-IMX93 board is a low-cost and compact platform designed to show
7+
the most commonly used features of the i.MX 93 Applications Processor in a
8+
small and low cost package. The FRDM-IMX93 board is an entry-level development
9+
board, which helps developers to get familiar with the processor before
10+
investing a large amount of resources in more specific designs.
11+
12+
i.MX93 MPU is composed of one cluster of 2x Cortex®-A55 cores and a single
13+
Cortex®-M33 core. Zephyr RTOS is ported on Cortex®-A55 core.
14+
15+
Hardware
16+
********
17+
18+
- i.MX 93 applications processor
19+
20+
- The processor integrates up to two Arm Cortex-A55 cores, and supports
21+
built-in Arm Cortex-M33 core.
22+
23+
- RAM: 2GB LPDDR4
24+
- Storage:
25+
26+
- SanDisk 16GB eMMC5.1
27+
- microSD Socket
28+
- Wireless:
29+
30+
- Murata Type-2EL (SDIO+UART+SPI) module. It is based on NXP IW612 SoC,
31+
which supports dual-band (2.4 GHz /5 GHz) 1x1 Wi-Fi 6, Bluetooth 5.2,
32+
and 802.15.4
33+
- USB:
34+
35+
- One USB 2.0 Type C connector
36+
- One USB 2.0 Type A connector
37+
- Ethernet
38+
- PCI-E M.2
39+
- Connectors:
40+
41+
- 40-Pin Dual Row Header
42+
- LEDs:
43+
44+
- 1x Power status LED
45+
- 1x RGB LED
46+
- Debug
47+
48+
- JTAG 3-pin connector
49+
- USB-C port for UART debug, two COM ports for A55 and M33
50+
51+
52+
Supported Features
53+
==================
54+
55+
.. zephyr:board-supported-hw::
56+
57+
Devices
58+
========
59+
System Clock
60+
------------
61+
62+
This board configuration uses a system clock frequency of 24 MHz.
63+
Cortex-A55 Core runs up to 1.7 GHz.
64+
Cortex-M33 Core runs up to 200MHz in which SYSTICK runs on same frequency.
65+
66+
Serial Port
67+
-----------
68+
69+
This board configuration uses a single serial communication channel with the
70+
CPU's UART2 for A55 core and M33 core.
71+
72+
User Button GPIO Option
73+
--------------------------
74+
75+
The user buttons USER_BTN1 and USER_BTN2 are connected to onboard GPIO expander
76+
PCAL6524 by default, but can be changed to connect to FRDM-IMX93 GPIO. A devicetree
77+
overlay is included to support this.
78+
79+
Run following command to test user buttons connected to FRDM-IMX93 GPIO:
80+
81+
.. zephyr-app-commands::
82+
:zephyr-app: samples/basic/button
83+
:host-os: unix
84+
:board: frdm_imx93/mimx9352/a55
85+
:goals: build
86+
:gen-args: -DEXTRA_DTC_OVERLAY_FILE=frdm_imx93_mimx9352_native_btn.overlay
87+
88+
Note: The overlay only supports ``mimx9352/a55``, but can be extended to support
89+
``mimx9352/m33`` if I2C and PCAL6524 is enabled.
90+
91+
Programming and Debugging (A55)
92+
*******************************
93+
94+
U-Boot "cpu" command is used to load and kick Zephyr to Cortex-A secondary Core, Currently
95+
it is supported in : `Real-Time Edge U-Boot`_ (use the branch "uboot_vxxxx.xx-y.y.y,
96+
xxxx.xx is uboot version and y.y.y is Real-Time Edge Software version, for example
97+
"uboot_v2023.04-2.9.0" branch is U-Boot v2023.04 used in Real-Time Edge Software release
98+
v2.9.0), and pre-build images and user guide can be found at `Real-Time Edge Software`_.
99+
100+
.. _Real-Time Edge U-Boot:
101+
https://github.com/nxp-real-time-edge-sw/real-time-edge-uboot
102+
.. _Real-Time Edge Software:
103+
https://www.nxp.com/rtedge
104+
105+
Copy the compiled ``zephyr.bin`` to the first FAT partition of the SD card and
106+
plug the SD card into the board. Power it up and stop the u-boot execution at
107+
prompt.
108+
109+
Use U-Boot to load and kick zephyr.bin to Cortex-A55 Core1:
110+
111+
.. code-block:: console
112+
113+
fatload mmc 1:1 0xd0000000 zephyr.bin; dcache flush; icache flush; cpu 1 release 0xd0000000
114+
115+
116+
Or use the following command to kick zephyr.bin to Cortex-A55 Core0:
117+
118+
.. code-block:: console
119+
120+
fatload mmc 1:1 0xd0000000 zephyr.bin; dcache off; icache flush; go 0xd0000000
121+
122+
123+
Use this configuration to run basic Zephyr applications and kernel tests,
124+
for example, with the :zephyr:code-sample:`synchronization` sample:
125+
126+
.. zephyr-app-commands::
127+
:zephyr-app: samples/synchronization
128+
:host-os: unix
129+
:board: frdm_imx93/mimx9352/a55
130+
:goals: build
131+
132+
This will build an image with the synchronization sample app, boot it and
133+
display the following console output:
134+
135+
.. code-block:: console
136+
137+
*** Booting Zephyr OS build v4.1.0-41-g6395333e3d18 ***
138+
thread_a: Hello World from cpu 0 on frdm_imx93!
139+
thread_b: Hello World from cpu 0 on frdm_imx93!
140+
thread_a: Hello World from cpu 0 on frdm_imx93!
141+
thread_b: Hello World from cpu 0 on frdm_imx93!
142+
143+
System Reboot (A55)
144+
===================
145+
146+
Currently i.MX93 only support cold reboot and doesn't support warm reboot.
147+
Use this configuratiuon to verify cold reboot with :zephyr:code-sample:`shell-module`
148+
sample:
149+
150+
.. zephyr-app-commands::
151+
:zephyr-app: samples/subsys/shell/shell_module
152+
:host-os: unix
153+
:board: frdm_imx93/mimx9352/a55
154+
:goals: build
155+
156+
This will build an image with the shell sample app, boot it and execute
157+
kernel reboot command in shell command line:
158+
159+
.. code-block:: console
160+
161+
uart:~$ kernel reboot cold
162+
163+
.. include:: ../../common/board-footer.rst
164+
:start-after: nxp-board-footer
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* Copyright 2025 NXP
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
/**
8+
* Apply this overlay to test USER_BTN1 and USER_BTN2 on PCAL6524.
9+
*
10+
* The user buttons USER_BTN1 and USER_BTN2 is connected to onboard GPIO expander PCAL6524
11+
* by default, but can be changed to connect to FRDM-IMX93 GPIO. To do this, remove R2608
12+
* and R2610, populate R2611 and R2612.
13+
*/
14+
15+
/* Remove default keys */
16+
/delete-node/ &btn_1;
17+
/delete-node/ &btn_2;
18+
19+
/ {
20+
keys {
21+
compatible = "gpio-keys";
22+
23+
btn_1: btn_1 {
24+
label = "BTN1";
25+
gpios = <&gpio2 23 GPIO_ACTIVE_LOW>;
26+
zephyr,code = <INPUT_KEY_0>;
27+
};
28+
29+
btn_2: btn_2 {
30+
label = "BTN2";
31+
gpios = <&gpio2 24 GPIO_ACTIVE_LOW>;
32+
zephyr,code = <INPUT_KEY_1>;
33+
};
34+
};
35+
};

0 commit comments

Comments
 (0)