Part 1
요약·해설
표 4개 18행, 공식 이미지와 U-Boot ITCM·DDR 명령을 보존했습니다.
4× 1.6GHz A53
800MHz M7F
ITCM · DDR
ETM · CTI
Part 2
접을 수 있는 영어 원문 전체
영어 원문 전체 펼치기
BFBAF61363CD3E71DFBDA5F83B387A1A71FC6F317DED727BC21FDC73E119069E
.. _verdin_imx8mp:
Toradex Verdin iMX8M Plus SoM
#############################
Overview
********
The Verdin iMX8M Plus is a Computer on Module (CoM) developed by Toradex. It is based on the NXP®
i.MX 8M Plus family of processors (or System on Chips - SoCs).
The Verdin iMX8M Plus family consists of:
+-------------------------------------------------+-----------------------+
| CoM | SoC |
+=================================================+=======================+
| Verdin iMX8M Plus Quad 8GB Wi-Fi / Bluetooth IT | i.MX 8M Plus Quad |
+-------------------------------------------------+-----------------------+
| Verdin iMX8M Plus Quad 4GB Wi-Fi / Bluetooth IT | i.MX 8M Plus Quad |
+-------------------------------------------------+-----------------------+
| Verdin iMX8M Plus Quad 4GB IT | i.MX 8M Plus Quad |
+-------------------------------------------------+-----------------------+
| Verdin iMX8M Plus Quad 2GB Wi-Fi / Bluetooth IT | i.MX 8M Plus Quad |
+-------------------------------------------------+-----------------------+
| Verdin iMX8M Plus QuadLite 1GB IT | i.MX 8M Plus QuadLite |
+-------------------------------------------------+-----------------------+
Quoting NXP:
The i.MX 8M Plus family focuses on machine learning and vision, advanced multimedia, and
industrial automation with high reliability. It is built to meet the needs of Smart Home,
Building, City and Industry 4.0 applications.
The Verdin iMX8M Plus integrates a total of 4 Arm Cortex™-A53 CPUs, operating at 1.6 GHz, alongside
a single Arm Cortex™-M7F microcontroller operating at 800 MHz.
.. figure:: ../../../../../../../boards/toradex/verdin_imx8mp/doc/verdin_imx8mp_front.jpg
:align: center
:alt: Toradex Verdin iMX8M Plus
Toradex Verdin iMX8M Plus (Credit: Toradex)
Regarding the Cortex-A53 cluster, it employs the ARMv8-A architecture as a mid-range and
energy-efficient processor. With four cores in this cluster, each core is equipped with its own L1
memory system. Moreover, the cluster incorporates a unified L2 cache that offers supplementary
functions. This cache is housed within a single APR region. Facilitating debugging processes, the
cores support both real-time trace through the ETM system and static debugging via JTAG.
Furthermore, the platform features support for real-time trace capabilities, achieved through ARM's
CoreSight ETM modules, and also enables cross-triggering by utilizing CTI and CTM modules.
The Arm® Cortex®-M7 microcontroller is indicated for Real-time control, combining high-performance
with a minimal interrupt latency. It stands out for its compatibility with existing Cortex-M profile
processors. The microcontroller employs an efficient in-order super-scalar pipeline, allowing
dual-issued instructions such as load/load and load/store pairs, thanks to its multiple memory
interfaces. These interfaces encompass Tightly-Coupled Memory (TCM), Harvard caches, and an AXI
master interface. The Arm Cortex-M7 Platform boasts features like a 32 KB L1 Instruction Cache, 32
KB L1 Data Cache, Floating Point Unit (FPU) with FPv5 architecture support, and an Internal Trace
(TRC) mechanism. Furthermore, the chip supports 160 IRQs, and integrates crucial Arm CoreSight
components including ETM and CTI, dedicated to facilitating debug and trace functions.
Hardware
********
- SoC name: NXP® i.MX 8M Plus
- CPU Type: 4x Arm Cortex™-A53 (1.6 GHz)
- Microcontroller: 1x Arm Cortex™-M7F (800 MHz)
- Memory:
- RAM -> A53: 1GB, 2GB, 4GB or 8GB
- RAM -> M7: 3x32KB (TCML, TCMU, OCRAM_S), 1x128KB (OCRAM) and 1x256MB (DDR)
- Flash -> A53: Up to 32GB eMMC
- Connectivity:
- USB 3.1: 1x Host / 1x OTG (Gen 1)
- USB 2.0: 1x Host / 1x OTG
- Ethernet Gigabit with TSN (+2nd RGMII)
- Wi-Fi Dual-band 802.11ac 2x2 MU-MIMO
- Bluetooth 5
- 5x I2C
- 3x SPI
- 1 QSPI
- 4x UART
- Up to 92 GPIO
- 4x Analog Input
- 2x CAN (FlexCAN)
- Multimedia:
- Neural Processing Unit (NPU)
- Image Signal Processor (ISP)
- 2D and 3D acceleration
- HDMI, MIPI-DSI and MIPI-CSI interface
For more information about the Verdin iMX8M Plus and the i.MX 8M Plus SoC refer to these links:
- `i.MX 8M Plus Applications Processor page`_
- `Verdin iMX8M Plus homepage`_
- `Verdin iMX8M Plus developer page`_
- `Verdin Development Board developer page`_
- `Verdin iMX8M Plus Datasheet`_
- `Verdin Development Board Datasheet`_
Supported Features
==================
The Zephyr verdin_imx8mp_m7 board configuration supports the following hardware features:
+-----------+------------+-------------------------------------+
| Interface | Controller | Driver/Component |
+===========+============+=====================================+
| NVIC | on-chip | nested vector interrupt controller |
+-----------+------------+-------------------------------------+
| SYSTICK | on-chip | systick |
+-----------+------------+-------------------------------------+
| CLOCK | on-chip | clock_control |
+-----------+------------+-------------------------------------+
| PINMUX | on-chip | pinmux |
+-----------+------------+-------------------------------------+
| UART | on-chip | serial port-polling; |
| | | serial port-interrupt |
+-----------+------------+-------------------------------------+
| GPIO | on-chip | GPIO output |
| | | GPIO input |
+-----------+------------+-------------------------------------+
The default configuration can be found in the defconfig file:
- :zephyr_file:`boards/toradex/verdin_imx8mp/verdin_imx8mp_mimx8ml8_m7_defconfig`, if you choose to use
the ITCM memory.
- :zephyr_file:`boards/toradex/verdin_imx8mp/verdin_imx8mp_mimx8ml8_m7_ddr_defconfig`, if you choose to use
the DDR memory.
It is recommended to disable peripherals used by the M7 core on the Linux host.
Other hardware features are not currently supported by the port.
Connections and IOs
===================
UART
----
Zephyr is configured to use the UART4 by default, which is connected to the FTDI USB converter on
most Toradex carrier boards.
This is also the UART connected to WiFi/BT chip in modules that have the WiFi/BT chip. Therefore, if
UART4 is used, WiFI/BT will not work properly.
If the WiFi/BT is needed, then another UART should be used for Zephyr (UART1 for example). You can
change the UART by changing the ``zephyr,console`` and ``zephyr,shell-uart`` in the
:zephyr_file:`boards/toradex/verdin_imx8mp/verdin_imx8mp_mimx8ml8_m7.dts` or
:zephyr_file:`boards/toradex/verdin_imx8mp/verdin_imx8mp_mimx8ml8_m7_ddr.dts` file.
+---------------+-----------------+---------------------------+
| Board Name | SoC Name | Usage |
+===============+=================+===========================+
| UART_1 | UART1 | General purpose UART |
+---------------+-----------------+---------------------------+
| UART_4 | UART4 | Cortex-M4 debug UART |
+---------------+-----------------+---------------------------+
GPIO
----
All the GPIO banks available are enabled in the :zephyr_file:`dts/arm/nxp/nxp_imx8ml_m7.dtsi`.
System Clock
============
The M7 Core is configured to run at a 800 MHz clock speed.
Serial Port
===========
The i.MX8M Plus SoC has four UARTs. UART_4 is configured for the console and the remaining are not
used/tested.
Programming and Debugging
*************************
The Verdin iMX8M Plus board doesn't have QSPI flash for the M7, and it needs to be started by the
A53 core. The A53 core is responsible to load the M7 binary application into the RAM, put the M7 in
reset, set the M7 Program Counter and Stack Pointer, and get the M7 out of reset. The A53 can
perform these steps at bootloader level or after the Linux system has booted.
The M7 can use up to 3 different RAMs (currently, only two configurations are supported: ITCM and
DDR). These are the memory mapping for A53 and M7:
+------------+-------------------------+------------------------+-----------------------+----------------------+
| Region | Cortex-A53 | Cortex-M7 (System Bus) | Cortex-M7 (Code Bus) | Size |
+============+=========================+========================+=======================+======================+
| OCRAM | 0x00900000-0x0098FFFF | 0x20200000-0x2028FFFF | 0x00900000-0x0098FFFF | 576KB |
+------------+-------------------------+------------------------+-----------------------+----------------------+
| DTCM | 0x00800000-0x0081FFFF | 0x20000000-0x2001FFFF | | 128KB |
+------------+-------------------------+------------------------+-----------------------+----------------------+
| ITCM | 0x007E0000-0x007FFFFF | | 0x00000000-0x0001FFFF | 128KB |
+------------+-------------------------+------------------------+-----------------------+----------------------+
| OCRAM_S | 0x00180000-0x00188FFF | 0x20180000-0x20188FFF | 0x00180000-0x00188FFF | 36KB |
+------------+-------------------------+------------------------+-----------------------+----------------------+
| DDR | 0x80000000-0x803FFFFF | 0x80200000-0x803FFFFF | 0x80000000-0x801FFFFF | 2MB |
+------------+-------------------------+------------------------+-----------------------+----------------------+
For more information about memory mapping see the `i.MX 8M Plus Applications Processor Reference
Manual`_ (section 2.1 to 2.3)
At compilation time you have to choose which RAM will be used. To facilitate this process, there are
two targets available:
- ``verdin_imx8mp/mimx8ml8/m7``, which uses the ITCM configuration.
- ``verdin_imx8mp/mimx8ml8/m7/ddr``, which uses the DDR configuration.
Starting the Cortex-M7 via U-Boot
=================================
Load and run Zephyr on M7 from A53 using u-boot by copying 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.
Load the M7 binary onto the desired memory and start its execution using:
ITCM
====
Loading the binary from an EXT4 partition:
.. code-block:: shell
ext4load mmc 2:2 ${loadaddr} /<path-to-binary>/zephyr.bin
cp.b ${loadaddr} 0x7e0000 <size_of_binary_in_bytes>
bootaux 0x7e0000
DDR
===
Loading the binary from an EXT4 partition:
.. code-block:: shell
ext4load mmc 2:2 ${loadaddr} /<path-to-binary>/zephyr.bin
cp.b ${loadaddr} 0x80000000 <size_of_binary_in_bytes>
bootaux 0x80000000
Debugging
=========
Toradex Verdin iMX8M Plus SoM can be debugged by connecting an external JLink JTAG debugger to the
X56 debug connector and to the PC, or simply connecting a USB-C to X66 on the Verdin Development
Board. Then, the application can be debugged using the usual way.
Here is an example for the :ref:`hello_world` application.
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: verdin_imx8mp/mimx8ml8/m7/ddr
:goals: debug
Open a serial terminal, step through the application in your debugger, and you
should see the following message in the terminal:
.. code-block:: console
*** Booting Zephyr OS build zephyr-v3.4.0-2300-g03905f7e55d2 ***
Hello World! verdin_imx8mp
References
==========
- `How to Load Compiled Binaries into Cortex-M`_
- `Cortex-M JTAG Debugging`_
- `NXP website`_
.. _NXP website:
https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/evaluation-kit-for-the-i-mx-8m-plus-applications-processor:8MPLUSLPD4-EVK
.. _i.MX 8M Plus Applications Processor Reference Manual:
https://www.nxp.com/webapp/Download?colCode=IMX8MPRM
.. _How to Load Compiled Binaries into Cortex-M:
https://developer.toradex.com/software/real-time/cortex-m/how-to-load-binaries
.. _Cortex-M JTAG Debugging:
https://developer.toradex.com/software/real-time/cortex-m/cortexm-jtag-debugging/
.. _i.MX 8M Plus Applications Processor page:
https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-applications-processors/i-mx-8m-plus-arm-cortex-a53-machine-learning-vision-multimedia-and-industrial-iot:IMX8MPLUS
.. _Verdin iMX8M Plus homepage:
https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx-8m-plus
.. _Verdin iMX8M Plus developer page:
https://developer.toradex.com/hardware/verdin-som-family/modules/verdin-imx8m-plus
.. _Verdin Development Board developer page:
https://developer.toradex.com/hardware/verdin-som-family/carrier-boards/verdin-development-board/
.. _Verdin iMX8M Plus Datasheet:
https://docs.toradex.com/110977-verdin_imx8m_plus_v1.1_datasheet.pdf
.. _Verdin Development Board Datasheet:
https://docs.toradex.com/109463-verdin_development_board_datasheet_v1.1.pdf
Part 3
한국어 전문 번역

개요
Verdin iMX8M Plus는 NXP i.MX 8M Plus SoC 기반 Toradex Computer on Module입니다.
| CoM | SoC |
|---|---|
| Verdin iMX8M Plus Quad 8GB Wi-Fi / Bluetooth IT | i.MX 8M Plus Quad |
| Verdin iMX8M Plus Quad 4GB Wi-Fi / Bluetooth IT | i.MX 8M Plus Quad |
| Verdin iMX8M Plus Quad 4GB IT | i.MX 8M Plus Quad |
| Verdin iMX8M Plus Quad 2GB Wi-Fi / Bluetooth IT | i.MX 8M Plus Quad |
| Verdin iMX8M Plus QuadLite 1GB IT | i.MX 8M Plus QuadLite |
NXP는 이 제품군이 machine learning·vision, advanced multimedia, 고신뢰 industrial automation과 Smart Home·Building·City·Industry 4.0을 대상으로 한다고 설명합니다.
CPU 구조
1.6GHz Cortex-A53 CPU 4개와 800MHz Cortex-M7F microcontroller 하나를 통합합니다. ARMv8-A A53 cluster는 core별 L1과 unified L2 cache, ETM real-time trace, JTAG static debug, CTI/CTM cross-trigger를 제공합니다.
Cortex-M7은 low interrupt latency의 real-time control용 in-order superscalar core입니다. 여러 memory interface를 이용해 load/load와 load/store 같은 dual issue를 수행하며 TCM, Harvard cache, AXI master interface, 32KB L1 instruction cache, 32KB L1 data cache, FPv5 FPU, internal trace, IRQ 160개, ETM·CTI를 지원합니다.
하드웨어
- A53 RAM 1GB·2GB·4GB·8GB, M7 RAM TCML/TCMU/OCRAM_S 각 32KB·OCRAM 128KB·DDR 256MB, eMMC 최대 32GB
- USB 3.1/2.0 host·OTG, TSN Gigabit Ethernet와 두 번째 RGMII
- dual-band 802.11ac 2x2 MU-MIMO Wi-Fi, Bluetooth 5
- I2C 5개, SPI 3개, QSPI 1개, UART 4개, GPIO 최대 92개, analog input 4개, FlexCAN 2개
- NPU, ISP, 2D/3D acceleration, HDMI, MIPI-DSI, MIPI-CSI
지원 기능
| Interface | Controller | Driver/Component |
|---|---|---|
| NVIC | on-chip | nested vector interrupt controller |
| SYSTICK | on-chip | systick |
| CLOCK | on-chip | clock_control |
| PINMUX | on-chip | pinmux |
| UART | on-chip | serial port-polling; serial port-interrupt |
| GPIO | on-chip | GPIO output; GPIO input |
ITCM은 verdin_imx8mp_mimx8ml8_m7_defconfig, DDR은 verdin_imx8mp_mimx8ml8_m7_ddr_defconfig를 사용합니다. M7이 쓰는 peripheral은 Linux host에서 disable하는 것이 권장되며, 표에 없는 기능은 현재 port에서 지원하지 않습니다.
연결과 I/O
UART
기본 console은 많은 Toradex carrier board의 FTDI USB converter에 연결된 UART4입니다. Wi-Fi/Bluetooth module이 있는 제품에서는 같은 UART4를 wireless chip도 사용하므로 Zephyr가 UART4를 쓰면 Wi-Fi/BT가 정상 동작하지 않습니다. Wireless 기능이 필요하면 DTS의 zephyr,console과 zephyr,shell-uart를 UART1 등으로 바꿉니다.
| Board Name | SoC Name | Usage |
|---|---|---|
| UART_1 | UART1 | General purpose UART |
| UART_4 | UART4 | Cortex-M4 debug UART |
GPIO
dts/arm/nxp/nxp_imx8ml_m7.dtsi에서 모든 GPIO bank를 enable합니다.
System clock과 serial
M7은 800MHz로 동작합니다. i.MX8M Plus의 UART 4개 중 UART4만 console로 설정되고 나머지는 사용하거나 시험하지 않았습니다.
Programming과 debugging 구조
M7용 QSPI Flash가 없으므로 A53이 M7 binary를 RAM에 적재하고 reset, Program Counter, Stack Pointer를 제어합니다. Bootloader 또는 Linux 부팅 후 수행할 수 있습니다. M7은 세 RAM을 사용할 수 있지만 현재 ITCM과 DDR 두 configuration만 지원합니다.
| Region | Cortex-A53 | Cortex-M7 (System Bus) | Cortex-M7 (Code Bus) | Size |
|---|---|---|---|---|
| OCRAM | 0x00900000-0x0098FFFF | 0x20200000-0x2028FFFF | 0x00900000-0x0098FFFF | 576KB |
| DTCM | 0x00800000-0x0081FFFF | 0x20000000-0x2001FFFF | 128KB | |
| ITCM | 0x007E0000-0x007FFFFF | 0x00000000-0x0001FFFF | 128KB | |
| OCRAM_S | 0x00180000-0x00188FFF | 0x20180000-0x20188FFF | 0x00180000-0x00188FFF | 36KB |
| DDR | 0x80000000-0x803FFFFF | 0x80200000-0x803FFFFF | 0x80000000-0x801FFFFF | 2MB |
verdin_imx8mp/mimx8ml8/m7 target은 ITCM을, verdin_imx8mp/mimx8ml8/m7/ddr target은 DDR을 사용합니다.
U-Boot에서 Cortex-M7 시작
zephyr.bin을 SD card 첫 FAT partition에 복사하고 U-Boot prompt에서 실행을 멈춥니다. EXT4 partition에서 읽어 ITCM에 실행하는 명령:
ext4load mmc 2:2 ${loadaddr} /<path-to-binary>/zephyr.bin
cp.b ${loadaddr} 0x7e0000 <size_of_binary_in_bytes>
bootaux 0x7e0000DDR에 실행하는 명령:
ext4load mmc 2:2 ${loadaddr} /<path-to-binary>/zephyr.bin
cp.b ${loadaddr} 0x80000000 <size_of_binary_in_bytes>
bootaux 0x80000000
Debug
External J-Link JTAG debugger를 X56 debug connector와 PC에 연결하거나 Verdin Development Board의 X66에 USB-C를 연결합니다. DDR configuration의 hello_world 예:
west build -b verdin_imx8mp/mimx8ml8/m7/ddr samples/hello_world
west debugDebugger에서 application을 step 실행하면 terminal에 다음과 같이 나타납니다.
*** Booting Zephyr OS build zephyr-v3.4.0-2300-g03905f7e55d2 ***
Hello World! verdin_imx8mp
참고 자료
Source
출처
영어 원문에는 문단, 문서 지시문, 표, 코드, 코드 심벌, 경로를 그대로 보존했습니다.