Skip to content

Commit a9f91b3

Browse files
committed
boards: nxp: imx95_evk_15x15: add i.MX 95 15x15 LPDDR4x EVK variant
Add initial support for i.MX 95 15x15 LPDDR4x EVK board. This board uses the i.MX 95 15x15 SoC that shares many similarities to the already supported i.MX 95 19x19 SoC used for the i.MX 95 19x19 LPDDR5 EVK. This enables Zephyr to boot and run on the i.MX 95 15x15 EVK and provides a foundation for further peripheral enablement and application development. Signed-off-by: Aziz Sellami <[email protected]>
1 parent 2bb7fcc commit a9f91b3

File tree

10 files changed

+308
-0
lines changed

10 files changed

+308
-0
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# SPDX-License-Identifier: Apache-2.0
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Copyright 2024 NXP
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config BOARD_IMX95_EVK_15X15
5+
select SOC_MIMX9596_A55 if BOARD_IMX95_EVK_15X15_MIMX9596_A55
6+
select SOC_PART_NUMBER_MIMX9596AVTXN
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# SPDX-License-Identifier: Apache-2.0

boards/nxp/imx95_evk_15x15/board.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
board:
2+
name: imx95_evk_15x15
3+
vendor: nxp
4+
socs:
5+
- name: mimx9596
Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
.. _imx95_evk_15x15:
2+
3+
NXP i.MX95 EVK
4+
##############
5+
6+
Overview
7+
********
8+
9+
The i.MX95 EVK (IMX95LPD5EVK-15) board is a platform designed to show the
10+
most commonly used features of the i.MX 95 automotive applications processor.
11+
It is an entry-level development board, which helps developers to get familiar
12+
with the processor before investing a large amount of resources in more
13+
specific designs. The i.MX 95 device on the board comes in a compact
14+
15 x 15 mm package.
15+
16+
Hardware
17+
********
18+
19+
- i.MX 95 automotive applications processor
20+
21+
- The processor integrates up to six Arm Cortex-A55 cores, and supports
22+
functional safety with built-in Arm Cortex-M33 and -M7 cores
23+
24+
- DRAM memory: 8-Gbit LPDDR4x DRAM
25+
- eMMC: 64 GB Micron eMMC
26+
- USB interface: Two USB ports: Type-A and Type-C
27+
- Audio codec interface
28+
29+
- One audio codec WM8962B
30+
- One 3.5 mm 4-pole CTIA standard audio jack
31+
- One 4-pin connector to connect speaker
32+
33+
- Ethernet interface
34+
35+
- ENET2 controller
36+
37+
- Supports 100 Mbit/s or 1000 Mbit/s RGMII Ethernet with one RJ45
38+
connector connected with an external PHY, RTL8211
39+
40+
- ENET1 controller
41+
42+
- Supports 100 Mbit/s or 1000 Mbit/s RGMII Ethernet with one RJ45
43+
connector connected with an external PHY, RTL8211
44+
45+
- M.2 interface: One Wi-Fi/Bluetooth Murata Type-2EL module based on NXP AW612
46+
chip supporting 1x1 Wi-Fi 6 and Bluetooth 5.3
47+
48+
- MIPI CSI interface: Connects to one 22-pin or 36-pin miniSAS connector using x4 lane
49+
configuration
50+
- MIPI CSIDSI interface: Connects to one 36-pin miniSAS connector using x4 lane
51+
configuration
52+
- LVDS interface: two mini-SAS connectors each with x4-lane configuration
53+
- CAN interface: One 4-pin CAN headers for external connection
54+
- SD card interface: one 4-bit SD3.0 microSD card
55+
- I2C interface: I2C1 to I2C6 controllers
56+
- FT4232H I2C interface: PCT2075 temperature sensor and current monitoring devices
57+
- ADC interface: two 4-channel ADC header
58+
- Debug interface
59+
60+
- One USB-to-UART/MPSSE device, FT4232H
61+
- One USB 2.0 Type-C connector (J31) for FT4232H provides quad serial ports
62+
63+
Supported Features
64+
==================
65+
66+
The Zephyr imx95_evk_15x15_a55 board configuration supports the following hardware features:
67+
68+
+-----------+------------+-------------------------------------+
69+
| Interface | Controller | Driver/Component |
70+
+===========+============+=====================================+
71+
| GIC-v4 | on-chip | interrupt controller |
72+
+-----------+------------+-------------------------------------+
73+
| ARM TIMER | on-chip | system clock |
74+
+-----------+------------+-------------------------------------+
75+
| CLOCK | on-chip | clock_control |
76+
+-----------+------------+-------------------------------------+
77+
| PINMUX | on-chip | pinmux |
78+
+-----------+------------+-------------------------------------+
79+
| UART | on-chip | serial port |
80+
+-----------+------------+-------------------------------------+
81+
82+
System Clock
83+
------------
84+
85+
This board configuration uses a system clock frequency of 24 MHz for Cortex-A55.
86+
Cortex-A55 Core runs up to 1.8 GHz.
87+
88+
Serial Port
89+
-----------
90+
91+
This board configuration uses a single serial communication channel with the
92+
CPU's UART1 for Cortex-A55.
93+
94+
Programming and Debugging (A55)
95+
*******************************
96+
97+
Use this configuration to run basic Zephyr applications and kernel tests,
98+
for example, with the :zephyr:code-sample:`synchronization` sample:
99+
100+
1. Build and run the Non-SMP application
101+
102+
.. zephyr-app-commands::
103+
:zephyr-app: samples/synchronization
104+
:host-os: unix
105+
:board: imx95_evk_15x15/mimx9596/a55
106+
:goals: run
107+
108+
This will build an image (zephyr.bin) with the synchronization sample app.
109+
110+
Copy the compiled ``zephyr.bin`` to the first FAT 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 kick zephyr.bin to Cortex-A55 Core1:
115+
116+
.. code-block:: console
117+
118+
fatload mmc 1:1 0xd0000000 zephyr.bin; dcache flush; icache flush; cpu 1 release 0xd0000000
119+
120+
121+
Or use the following command to kick zephyr.bin to Cortex-A55 Core0:
122+
123+
.. code-block:: console
124+
125+
fatload mmc 1:1 0xd0000000 zephyr.bin; dcache flush; icache flush; go 0xd0000000
126+
127+
128+
It will display the following console output:
129+
130+
.. code-block:: console
131+
132+
*** Booting Zephyr OS build v3.6.0-4569-g483c01ca11a7 ***
133+
thread_a: Hello World from cpu 0 on imx95_evk_15x15!
134+
thread_b: Hello World from cpu 0 on imx95_evk_15x15!
135+
thread_a: Hello World from cpu 0 on imx95_evk_15x15!
136+
thread_b: Hello World from cpu 0 on imx95_evk_15x15!
137+
thread_a: Hello World from cpu 0 on imx95_evk_15x15!
138+
139+
.. _System Control and Management Interface (SCMI):
140+
https://developer.arm.com/documentation/den0056/latest/
141+
142+
.. _i.MX Linux BSP release:
143+
https://www.nxp.com/design/design-center/software/embedded-software/i-mx-software/embedded-linux-for-i-mx-applications-processors:IMXLINUX
144+
145+
.. _MCUX SDK release:
146+
https://mcuxpresso.nxp.com/
147+
148+
References
149+
==========
150+
151+
More information can refer to NXP official website:
152+
`NXP website`_.
153+
154+
.. _NXP website:
155+
https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-9-processors/i-mx-95-applications-processor-family-high-performance-safety-enabled-platform-with-eiq-neutron-npu:iMX95
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* Copyright 2024 NXP
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
#include <nxp/nxp_imx/mimx9596avzxn-pinctrl.dtsi>
7+
8+
&pinctrl {
9+
10+
lpuart1_default: lpuart1_default {
11+
group0 {
12+
pinmux = <&iomuxc_uart1_rxd_lpuart_rx_lpuart1_rx>,
13+
<&iomuxc_uart1_txd_lpuart_tx_lpuart1_tx>;
14+
bias-pull-up;
15+
slew-rate = "slightly_fast";
16+
drive-strength = "x4";
17+
};
18+
};
19+
20+
lpuart3_default: lpuart3_default {
21+
group0 {
22+
pinmux = <&iomuxc_gpio_io15_lpuart_rx_lpuart3_rx>,
23+
<&iomuxc_gpio_io14_lpuart_tx_lpuart3_tx>;
24+
bias-pull-up;
25+
slew-rate = "slightly_fast";
26+
drive-strength = "x4";
27+
};
28+
};
29+
};
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
* Copyright 2024 NXP
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
/dts-v1/;
8+
9+
#include <nxp/nxp_mimx95_a55.dtsi>
10+
#include "imx95_evk_15x15-pinctrl.dtsi"
11+
12+
/ {
13+
model = "NXP i.MX95 15x15 A55";
14+
compatible = "fsl,mimx95";
15+
16+
chosen {
17+
zephyr,console = &lpuart1;
18+
zephyr,shell-uart = &lpuart1;
19+
/* sram node actually locates at DDR DRAM */
20+
zephyr,sram = &dram;
21+
};
22+
23+
cpus {
24+
cpu@0 {
25+
status = "disabled";
26+
};
27+
28+
cpu@100 {
29+
status = "disabled";
30+
};
31+
32+
cpu@200 {
33+
status = "disabled";
34+
};
35+
36+
cpu@300 {
37+
status = "disabled";
38+
};
39+
40+
cpu@400 {
41+
status = "disabled";
42+
};
43+
};
44+
45+
dram: memory@d0000000 {
46+
reg = <0xd0000000 DT_SIZE_M(1)>;
47+
};
48+
};
49+
50+
&lpuart1 {
51+
status = "okay";
52+
current-speed = <115200>;
53+
pinctrl-0 = <&lpuart1_default>;
54+
pinctrl-names = "default";
55+
};
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#
2+
# Copyright 2024 NXP
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
#
6+
7+
identifier: imx95_evk_15x15/mimx9596/a55
8+
name: NXP i.MX95 15x15 EVK A55
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: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#
2+
# Copyright 2024 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+
CONFIG_MAX_XLAT_TABLES=64
12+
13+
# Cache Options
14+
CONFIG_CACHE_MANAGEMENT=y
15+
CONFIG_DCACHE_LINE_SIZE_DETECT=y
16+
CONFIG_ICACHE_LINE_SIZE_DETECT=y
17+
18+
# Zephyr Kernel Configuration
19+
CONFIG_XIP=n
20+
CONFIG_KERNEL_DIRECT_MAP=y
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
31+
32+
CONFIG_MBOX=y
33+
CONFIG_ARM_SCMI=y
34+
CONFIG_INTC_INIT_PRIORITY=2
35+
CONFIG_MBOX_INIT_PRIORITY=3

soc/nxp/imx/imx9/imx95/Kconfig.soc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,12 @@ config SOC_MIMX9596_A55
2020
config SOC
2121
default "mimx9596" if SOC_MIMX9596
2222

23+
config SOC_PART_NUMBER_MIMX9596AVTXN
24+
bool
25+
2326
config SOC_PART_NUMBER_MIMX9596AVZXN
2427
bool
2528

2629
config SOC_PART_NUMBER
30+
default "MIMX9596AVTXN" if SOC_PART_NUMBER_MIMX9596AVTXN
2731
default "MIMX9596AVZXN" if SOC_PART_NUMBER_MIMX9596AVZXN

0 commit comments

Comments
 (0)