Skip to content

Commit 6c34a47

Browse files
whbo158kartben
authored andcommitted
boards: nxp: add support for platform FRDM-IMX91
Added FRDM-IMX91 board support. Building hello_world: west build -p always -b frdm_imx91/mimx9131 samples/hello_world Signed-off-by: Hongbo Wang <[email protected]> Signed-off-by: Jiafei Pan <[email protected]>
1 parent d1a7d1d commit 6c34a47

File tree

7 files changed

+243
-0
lines changed

7 files changed

+243
-0
lines changed
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_IMX91
5+
select SOC_MIMX9131
6+
select SOC_PART_NUMBER_MIMX9131CVVXJ

boards/nxp/frdm_imx91/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_imx91
3+
full_name: FRDM-IMX91
4+
vendor: nxp
5+
socs:
6+
- name: mimx9131
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
.. zephyr:board:: frdm_imx91
2+
3+
Overview
4+
********
5+
6+
The FRDM-IMX91 board is a low-cost and compact platform designed to show
7+
the most commonly used features of the i.MX 91 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+
Hardware
13+
********
14+
15+
- i.MX 91 applications processor
16+
17+
- The i.MX 91 Applications Processor features an Arm Cortex®-A55 core
18+
that can operate at speeds of up to 1.4 GHz.
19+
- RAM: 2GB LPDDR4
20+
- Storage:
21+
22+
- SanDisk 16GB eMMC5.1
23+
- microSD Socket
24+
- Wireless:
25+
26+
- Murata Type-2EL (SDIO+UART+SPI) module. It is based on NXP IW612 SoC,
27+
which supports dual-band (2.4 GHz /5 GHz) 1x1 Wi-Fi 6, Bluetooth 5.2,
28+
and 802.15.4
29+
- USB:
30+
31+
- Two USB 2.0 Type C connectors
32+
- Ethernet:
33+
34+
- ENET: 10/100/1000 Mbit/s RGMII Ethernet connected with external PHY
35+
YT8521
36+
- ENET_QoS: 10/100/1000 Mbit/s RGMII Ethernet supporting TSN connected
37+
with external PHY YT8521
38+
- PCIe:
39+
40+
- One M.2/NGFF Key E mini card 75-pin connector
41+
- Connectors:
42+
43+
- 40-Pin Dual Row Header
44+
- LEDs:
45+
46+
- 1x Power status LED
47+
- 2x UART LED
48+
- Debug:
49+
50+
- JTAG 20-pin connector
51+
- MicroUSB for UART debug
52+
53+
54+
Supported Features
55+
==================
56+
57+
.. zephyr:board-supported-hw::
58+
59+
Devices
60+
========
61+
System Clock
62+
------------
63+
64+
This board configuration uses a system clock frequency of 24 MHz.
65+
Cortex-A55 Core runs up to 1.4 GHz.
66+
67+
Serial Port
68+
-----------
69+
70+
This board configuration uses a single serial communication channel with the
71+
CPU's UART1 for A55 core.
72+
73+
Programming and Debugging
74+
*************************
75+
76+
U-Boot "go" command is used to load and kick Zephyr to Cortex-A55 Core.
77+
78+
Stop the board at U-Boot command line, then need to download Zephyr binary image into
79+
DDR memory, it can use tftp:
80+
81+
.. code-block:: console
82+
83+
tftp 0x80000000 zephyr.bin
84+
85+
Or copy the Zephyr image ``zephyr.bin`` to SD card and plug the card into the board, for example
86+
if copy the image to the FAT partition of the SD card, use the following U-Boot command to load
87+
the image into DDR memory (assuming the SD card is dev 1, fat partition ID is 1, they could be
88+
changed based on actual partitions):
89+
90+
.. code-block:: console
91+
92+
fatload mmc 1:1 0x80000000 zephyr.bin;
93+
94+
95+
Then use U-Boot to load and kick zephyr.bin to Cortex-A55 Core:
96+
97+
.. code-block:: console
98+
99+
dcache off; icache flush; go 0x80000000
100+
101+
Use this configuration to run basic Zephyr applications and kernel tests,
102+
for example, with the :zephyr:code-sample:`synchronization` sample:
103+
104+
.. zephyr-app-commands::
105+
:zephyr-app: samples/synchronization
106+
:host-os: unix
107+
:board: frdm_imx91/mimx9131
108+
:goals: build
109+
110+
This will build an image with the synchronization sample app, boot it and
111+
display the following console output:
112+
113+
.. code-block:: console
114+
115+
*** Booting Zephyr OS build v4.2.0-4272-g1cbd317fd85e ***
116+
thread_a: Hello World from cpu 0 on frdm_imx91!
117+
thread_b: Hello World from cpu 0 on frdm_imx91!
118+
thread_a: Hello World from cpu 0 on frdm_imx91!
119+
thread_b: Hello World from cpu 0 on frdm_imx91!
120+
121+
.. include:: ../../common/board-footer.rst
122+
:start-after: nxp-board-footer
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* Copyright 2025 NXP
3+
* SPDX-License-Identifier: Apache-2.0
4+
*
5+
*/
6+
7+
#include <nxp/nxp_imx/mimx9131cvvxj-pinctrl.dtsi>
8+
9+
&pinctrl {
10+
uart1_default: uart1_default {
11+
group0 {
12+
pinmux = <&iomuxc1_uart1_rxd_lpuart_rx_lpuart1_rx>,
13+
<&iomuxc1_uart1_txd_lpuart_tx_lpuart1_tx>;
14+
bias-pull-up;
15+
slew-rate = "slightly_fast";
16+
drive-strength = "x5";
17+
};
18+
};
19+
20+
uart2_default: uart2_default {
21+
group0 {
22+
pinmux = <&iomuxc1_uart2_rxd_lpuart_rx_lpuart2_rx>,
23+
<&iomuxc1_uart2_txd_lpuart_tx_lpuart2_tx>;
24+
bias-pull-up;
25+
slew-rate = "slightly_fast";
26+
drive-strength = "x5";
27+
};
28+
};
29+
};
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
* Copyright 2025 NXP
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
/dts-v1/;
8+
9+
#include <nxp/nxp_mimx91.dtsi>
10+
#include "frdm_imx91-pinctrl.dtsi"
11+
12+
/ {
13+
model = "NXP FRDM-IMX91 A55";
14+
compatible = "fsl,mimx91";
15+
16+
chosen {
17+
zephyr,console = &lpuart1;
18+
zephyr,shell-uart = &lpuart1;
19+
zephyr,sram = &dram;
20+
};
21+
22+
dram: memory@80000000 {
23+
reg = <0x80000000 DT_SIZE_M(1)>;
24+
};
25+
26+
};
27+
28+
&lpuart1 {
29+
status = "okay";
30+
current-speed = <115200>;
31+
pinctrl-0 = <&uart1_default>;
32+
pinctrl-names = "default";
33+
};
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#
2+
# Copyright 2025 NXP
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
#
6+
7+
identifier: frdm_imx91/mimx9131
8+
name: NXP FRDM-IMX91
9+
type: mcu
10+
arch: arm64
11+
toolchain:
12+
- zephyr
13+
- cross-compile
14+
ram: 1024
15+
supported:
16+
- uart
17+
vendor: nxp
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#
2+
# Copyright 2025 NXP
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
6+
# ARM Options
7+
CONFIG_AARCH64_IMAGE_HEADER=y
8+
CONFIG_ARMV8_A_NS=y
9+
10+
# MMU Options
11+
# Increase the value when encounter the assert on the MAX_XLAT_TABLES
12+
CONFIG_MAX_XLAT_TABLES=24
13+
14+
# Cache Options
15+
CONFIG_CACHE_MANAGEMENT=y
16+
CONFIG_DCACHE_LINE_SIZE_DETECT=y
17+
CONFIG_ICACHE_LINE_SIZE_DETECT=y
18+
19+
# Zephyr Kernel Configuration
20+
CONFIG_XIP=n
21+
22+
# Serial Drivers
23+
CONFIG_SERIAL=y
24+
CONFIG_UART_INTERRUPT_DRIVEN=y
25+
26+
# Enable Console
27+
CONFIG_CONSOLE=y
28+
CONFIG_UART_CONSOLE=y
29+
30+
CONFIG_CLOCK_CONTROL=y

0 commit comments

Comments
 (0)