blob: 1acf8cc536f5da419fab3edad5ea5b4dde9c6f8b [file] [log] [blame]
.. zephyr:board:: imx95_evk
Overview
********
The i.MX95 EVK (IMX95LPD5EVK-19) board is a platform designed to show the
most commonly used features of the i.MX 95 automotive applications processor.
It is an entry-level development board, which helps developers to get familiar
with the processor before investing a large amount of resources in more
specific designs. The i.MX95 device on the board comes in a compact
19 x 19 mm package.
Hardware
********
- i.MX 95 automotive applications processor
- The processor integrates up to six Arm Cortex-A55 cores, and supports
functional safety with built-in Arm Cortex-M33 and -M7 cores
- DRAM memory: 128-Gbit LPDDR5 DRAM
- eMMC: 64 GB Micron eMMC
- SPI NOR flash memory: 1 Gbit octal flash memory
- USB interface: Two USB ports: Type-A and Type-C
- Audio codec interface
- One audio codec WM8962BECSN/R with one TX and RX lane
- One 3.5 mm 4-pole CTIA standard audio jack
- One 4-pin connector to connect speaker
- Ethernet interface
- ENET2 controller
- Connects to a 60-pin Ethernet connector
- Supports Ethernet PHY daughter cards that can be configured to operate
at 100 Mbit/s or 1000 Mbit/s
- ENET1 controller
- Supports 100 Mbit/s or 1000 Mbit/s RGMII Ethernet with one RJ45
connector connected with an external PHY, RTL8211
- 10 Gbit Ethernet controller
- Supports XFI and USXGMII interfaces with one 10 Gbit RJ45 ICM connected
with an external PHY, Marvell AQR113C
- M.2 interface: One Wi-Fi/Bluetooth Murata Type-2EL module based on NXP AW693
chip supporting 2x2 Wi-Fi 6 and Bluetooth 5.2
- MIPI CSI interface: Connects to one 36-pin miniSAS connector using x4 lane
configuration
- MIPI CSIDSI interface: Connects to one 36-pin miniSAS connector using x4 lane
configuration
- LVDS interface: two mini-SAS connectors each with x4-lane configuration
- CAN interface: Two 4-pin CAN headers for external connection
- SD card interface: one 4-bit SD3.0 microSD card
- I2C interface: I2C1 to I2C7 controllers
- FT4232H I2C interface: PCT2075 temperature sensor and current monitoring devices
- DMIC interface: two digital microphones (DMIC) providing a single-bit PDM output
- ADC interface: two 4-channel ADC header
- Audio board interface
- Supports PCIe x4 slot for Quantum board connection
- Supports PCIe x8 slot for Audio I/O board connection
- Debug interface
- One USB-to-UART/MPSSE device, FT4232H
- One USB 2.0 Type-C connector (J31) for FT4232H provides quad serial ports
Supported Features
==================
The Zephyr ``imx95_evk/mimx9596/m7`` board target supports the following hardware features:
+-----------+------------+-------------------------------------+
| Interface | Controller | Driver/Component |
+===========+============+=====================================+
| NVIC | on-chip | interrupt controller |
+-----------+------------+-------------------------------------+
| SYSTICK | on-chip | systick |
+-----------+------------+-------------------------------------+
| CLOCK | on-chip | clock_control |
+-----------+------------+-------------------------------------+
| PINMUX | on-chip | pinmux |
+-----------+------------+-------------------------------------+
| UART | on-chip | serial port |
+-----------+------------+-------------------------------------+
| I2C | on-chip | i2c |
+-----------+------------+-------------------------------------+
| TPM | on-chip | tpm |
+-----------+------------+-------------------------------------+
The Zephyr ``imx95_evk/mimx9596/a55`` and ``imx95_evk/mimx9596/a55/smp`` board targets support
the following hardware features:
+-----------+------------+-------------------------------------+
| Interface | Controller | Driver/Component |
+===========+============+=====================================+
| GIC-v4 | on-chip | interrupt controller |
+-----------+------------+-------------------------------------+
| ARM TIMER | on-chip | system clock |
+-----------+------------+-------------------------------------+
| CLOCK | on-chip | clock_control |
+-----------+------------+-------------------------------------+
| PINMUX | on-chip | pinmux |
+-----------+------------+-------------------------------------+
| UART | on-chip | serial port |
+-----------+------------+-------------------------------------+
System Clock
------------
This board configuration uses a system clock frequency of 24 MHz for Cortex-A55.
Cortex-A55 Core runs up to 1.8 GHz.
Cortex-M7 Core runs up to 800MHz in which SYSTICK runs on same frequency.
Serial Port
-----------
This board configuration uses a single serial communication channel with the
CPU's UART1 for Cortex-A55, UART3 for Cortex-M7.
TPM
---
Two channels are enabled on TPM2 for PWM for M7. Signals can be observerd with
oscilloscope.
Channel 2 signal routed to resistance R881.
Channel 3 signal routed to resistance R882.
Programming and Debugging (A55)
*******************************
Use this configuration to run basic Zephyr applications and kernel tests,
for example, with the :zephyr:code-sample:`synchronization` sample:
1. Build and run the Non-SMP application
.. zephyr-app-commands::
:zephyr-app: samples/synchronization
:host-os: unix
:board: imx95_evk/mimx9596/a55
:goals: build
This will build an image (zephyr.bin) with the synchronization sample app.
Copy the compiled ``zephyr.bin`` to the first FAT partition of the SD card and
plug the SD card into the board. Power it up and stop the u-boot execution at
prompt.
Use U-Boot to load and kick zephyr.bin to Cortex-A55 Core1:
.. code-block:: console
fatload mmc 1:1 0xd0000000 zephyr.bin; dcache flush; icache flush; cpu 1 release 0xd0000000
Or use the following command to kick zephyr.bin to Cortex-A55 Core0:
.. code-block:: console
fatload mmc 1:1 0xd0000000 zephyr.bin; dcache flush; icache flush; go 0xd0000000
It will display the following console output:
.. code-block:: console
*** Booting Zephyr OS build v3.6.0-4569-g483c01ca11a7 ***
thread_a: Hello World from cpu 0 on imx95_evk!
thread_b: Hello World from cpu 0 on imx95_evk!
thread_a: Hello World from cpu 0 on imx95_evk!
thread_b: Hello World from cpu 0 on imx95_evk!
thread_a: Hello World from cpu 0 on imx95_evk!
2. Build and run the SMP application
.. zephyr-app-commands::
:zephyr-app: samples/synchronization
:host-os: unix
:board: imx95_evk/mimx9596/a55/smp
:goals: build
This will build an image (zephyr.bin) with the synchronization sample app.
Copy the compiled ``zephyr.bin`` to the first FAT partition of the SD card and
plug the SD card into the board. Power it up and stop the u-boot execution at
prompt.
Use the following command to kick zephyr.bin to Cortex-A55 Core0:
.. code-block:: console
fatload mmc 1:1 0xd0000000 zephyr.bin; dcache flush; icache flush; go 0xd0000000
It will display the following console output:
.. code-block:: console
*** Booting Zephyr OS build v3.7.0-rc3-15-g2f0beaea144a ***
Secondary CPU core 1 (MPID:0x100) is up
Secondary CPU core 2 (MPID:0x200) is up
Secondary CPU core 3 (MPID:0x300) is up
Secondary CPU core 4 (MPID:0x400) is up
Secondary CPU core 5 (MPID:0x500) is up
thread_a: Hello World from cpu 0 on imx95_evk!
thread_b: Hello World from cpu 4 on imx95_evk!
thread_a: Hello World from cpu 0 on imx95_evk!
thread_b: Hello World from cpu 3 on imx95_evk!
thread_a: Hello World from cpu 0 on imx95_evk!
thread_b: Hello World from cpu 1 on imx95_evk!
thread_a: Hello World from cpu 0 on imx95_evk!
thread_b: Hello World from cpu 5 on imx95_evk!
thread_a: Hello World from cpu 0 on imx95_evk!
thread_b: Hello World from cpu 2 on imx95_evk!
Programming and Debugging (M7)
******************************
The i.MX System Manager (SM) is used on i.MX95, which is an application that runs on
Cortex-M33 processor. The Cortex-M33 is the boot core, runs the boot ROM which loads
the SM (and other boot code), and then branches to the SM. The SM then configures some
aspects of the hardware such as isolation mechanisms and then starts other cores in the
system. After starting these cores, it enters a service mode where it provides access
to clocking, power, sensor, and pin control via a client RPC API based on ARM's
`System Control and Management Interface (SCMI)`_.
To program M7, an i.MX container image ``flash.bin`` must be made, which contains
multiple elements required, like ELE+V2X firmware, System Manager, TCM OEI, Cortex-M7
image and so on.
The steps making flash.bin and programming should refer to ``Getting Started with
MCUXpresso SDK for IMX95LPD5EVK-19.pdf`` in i.MX95 `MCUX SDK release`_. Note that
for the DDR variant, one should use the Makefile targets containing the ``ddr`` keyword.
See ``4.2 Run an example application``, just rename ``zephyr.bin`` to ``m7_image.bin``
to make flash.bin and program to SD/eMMC.
Zephyr supports two M7-based i.MX95 boards: ``imx95_evk/mimx9596/m7`` and
``imx95_evk/mimx9596/m7/ddr``. The main difference between them is the memory
used. ``imx95_evk/mimx9596/m7`` uses TCM (ITCM for code and, generally, read-only
data and DTCM for R/W data), while ``imx95_evk/mimx9596/m7/ddr`` uses DDR.
1. Building the :zephyr:code-sample:`hello_world` application for the TCM-based board
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: imx95_evk/mimx9596/m7
:goals: build
2. Building the :zephyr:code-sample:`hello_world` application for the DDR-based board
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: imx95_evk/mimx9596/m7/ddr
:goals: build
After making flash.bin and program to SD/eMMC, open a serial terminal, and reset the
board. For the ``imx95_evk/mimx9596/m7`` board you should see something like:
.. code-block:: console
*** Booting Zephyr OS build v3.6.0-4569-g483c01ca11a7 ***
Hello World! imx95_evk/mimx9596/m7
while, for the ``imx95_evk/mimx9596/m7/ddr`` board, you should get the following output:
.. code-block:: console
*** Booting Zephyr OS build v3.6.0-4569-g483c01ca11a7 ***
Hello World! imx95_evk/mimx9596/m7/ddr
.. _System Control and Management Interface (SCMI):
https://developer.arm.com/documentation/den0056/latest/
.. _i.MX Linux BSP release:
https://www.nxp.com/design/design-center/software/embedded-software/i-mx-software/embedded-linux-for-i-mx-applications-processors:IMXLINUX
.. _MCUX SDK release:
https://mcuxpresso.nxp.com/
References
==========
More information can refer to NXP official website:
`NXP website`_.
.. _NXP website:
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