Browse Source
Port CM4 core to HVMv2. This core is merged with the existing board definition, which supported the A53 target. Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>collab-hwm
12 changed files with 128 additions and 244 deletions
@ -1,9 +0,0 @@ |
|||||||
# MIMX8MM EVK board |
|
||||||
|
|
||||||
# Copyright (c) 2020, Manivannan Sadhasivam <mani@kernel.org> |
|
||||||
# SPDX-License-Identifier: Apache-2.0 |
|
||||||
|
|
||||||
config BOARD_MIMX8MM_EVK |
|
||||||
bool "NXP i.MX8M Mini EVK" |
|
||||||
depends on SOC_SERIES_IMX8MM_M4 |
|
||||||
select SOC_PART_NUMBER_MIMX8MM6DVTLZ |
|
@ -1,11 +0,0 @@ |
|||||||
# |
|
||||||
# Copyright (c) 2020, NXP |
|
||||||
# |
|
||||||
# SPDX-License-Identifier: Apache-2.0 |
|
||||||
# |
|
||||||
|
|
||||||
board_set_debugger_ifnset(jlink) |
|
||||||
board_set_flasher_ifnset(jlink) |
|
||||||
|
|
||||||
board_runner_args(jlink "--device=MIMX8MD6_M4") |
|
||||||
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) |
|
Before Width: | Height: | Size: 47 KiB |
@ -1,187 +0,0 @@ |
|||||||
.. _mimx8mm_evk: |
|
||||||
|
|
||||||
NXP MIMX8MM EVK |
|
||||||
############### |
|
||||||
|
|
||||||
Overview |
|
||||||
******** |
|
||||||
|
|
||||||
i.MX8M Mini LPDDR4 EVK board is based on NXP i.MX8M Mini applications |
|
||||||
processor, composed of a quad Cortex®-A53 cluster and a single Cortex®-M4 core. |
|
||||||
Zephyr OS is ported to run on the Cortex®-M4 core. |
|
||||||
|
|
||||||
- Board features: |
|
||||||
|
|
||||||
- RAM: 2GB LPDDR4 |
|
||||||
- Storage: |
|
||||||
|
|
||||||
- SanDisk 16GB eMMC5.1 |
|
||||||
- Micron 32MB QSPI NOR |
|
||||||
- microSD Socket |
|
||||||
- Wireless: |
|
||||||
|
|
||||||
- WiFi: 2.4/5GHz IEEE 802.11b/g/n |
|
||||||
- Bluetooth: v4.1 |
|
||||||
- USB: |
|
||||||
|
|
||||||
- OTG - 2x type C |
|
||||||
- Ethernet |
|
||||||
- PCI-E M.2 |
|
||||||
- Connectors: |
|
||||||
|
|
||||||
- 40-Pin Dual Row Header |
|
||||||
- LEDs: |
|
||||||
|
|
||||||
- 1x Power status LED |
|
||||||
- 1x UART LED |
|
||||||
- Debug |
|
||||||
|
|
||||||
- JTAG 20-pin connector |
|
||||||
- MicroUSB for UART debug, two COM ports for A53 and M4 |
|
||||||
|
|
||||||
.. image:: img/mimx8mm_evk.jpg |
|
||||||
:align: center |
|
||||||
:alt: MIMX8MM EVK |
|
||||||
|
|
||||||
More information about the board can be found at the |
|
||||||
`NXP website`_. |
|
||||||
|
|
||||||
Supported Features |
|
||||||
================== |
|
||||||
|
|
||||||
The Zephyr mimx8mm_evk 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/arm/mimx8mm_evk/mimx8mm_evk_defconfig`. |
|
||||||
|
|
||||||
It is recommended to disable peripherals used by the M4 core on the Linux host. |
|
||||||
|
|
||||||
Other hardware features are not currently supported by the port. |
|
||||||
|
|
||||||
Connections and IOs |
|
||||||
=================== |
|
||||||
|
|
||||||
MIMX8MM EVK board was tested with the following pinmux controller |
|
||||||
configuration. |
|
||||||
|
|
||||||
+---------------+-----------------+---------------------------+ |
|
||||||
| Board Name | SoC Name | Usage | |
|
||||||
+===============+=================+===========================+ |
|
||||||
| UART4 RXD | UART4_TXD | UART Console | |
|
||||||
+---------------+-----------------+---------------------------+ |
|
||||||
| UART4 TXD | UART4_RXD | UART Console | |
|
||||||
+---------------+-----------------+---------------------------+ |
|
||||||
|
|
||||||
System Clock |
|
||||||
============ |
|
||||||
|
|
||||||
The M4 Core is configured to run at a 400 MHz clock speed. |
|
||||||
|
|
||||||
Serial Port |
|
||||||
=========== |
|
||||||
|
|
||||||
The i.MX8M Mini SoC has four UARTs. UART_4 is configured for the console and |
|
||||||
the remaining are not used/tested. |
|
||||||
|
|
||||||
Programming and Debugging |
|
||||||
************************* |
|
||||||
|
|
||||||
The MIMX8MM EVK board doesn't have QSPI flash for the M4 and it needs |
|
||||||
to be started by the A53 core. The A53 core is responsible to load the M4 binary |
|
||||||
application into the RAM, put the M4 in reset, set the M4 Program Counter and |
|
||||||
Stack Pointer, and get the M4 out of reset. The A53 can perform these steps at |
|
||||||
bootloader level or after the Linux system has booted. |
|
||||||
|
|
||||||
The M4 can use up to 3 different RAMs. These are the memory mapping for A53 and M4: |
|
||||||
|
|
||||||
+------------+-------------------------+------------------------+-----------------------+----------------------+ |
|
||||||
| Region | Cortex-A53 | Cortex-M4 (System Bus) | Cortex-M4 (Code Bus) | Size | |
|
||||||
+============+=========================+========================+=======================+======================+ |
|
||||||
| OCRAM | 0x00900000-0x0093FFFF | 0x20200000-0x2023FFFF | 0x00900000-0x0093FFFF | 256KB | |
|
||||||
+------------+-------------------------+------------------------+-----------------------+----------------------+ |
|
||||||
| TCMU | 0x00800000-0x0081FFFF | 0x20000000-0x2001FFFF | | 128KB | |
|
||||||
+------------+-------------------------+------------------------+-----------------------+----------------------+ |
|
||||||
| TCML | 0x007E0000-0x007FFFFF | | 0x1FFE0000-0x1FFFFFFF | 128KB | |
|
||||||
+------------+-------------------------+------------------------+-----------------------+----------------------+ |
|
||||||
| OCRAM_S | 0x00180000-0x00187FFF | 0x20180000-0x20187FFF | 0x00180000-0x00187FFF | 32KB | |
|
||||||
+------------+-------------------------+------------------------+-----------------------+----------------------+ |
|
||||||
|
|
||||||
For more information about memory mapping see the |
|
||||||
`i.MX 8M Applications Processor Reference Manual`_ (section 2.1.2 and 2.1.3) |
|
||||||
|
|
||||||
At compilation time you have to choose which RAM will be used. This |
|
||||||
configuration is done in the file ``boards/arm/mimx8mm_evk/mimx8mm_evk.dts`` |
|
||||||
with "zephyr,flash" (when CONFIG_XIP=y) and "zephyr,sram" properties. |
|
||||||
The available configurations are: |
|
||||||
|
|
||||||
.. code-block:: none |
|
||||||
|
|
||||||
"zephyr,flash" |
|
||||||
- &tcml_code |
|
||||||
- &ocram_code |
|
||||||
- &ocram_s_code |
|
||||||
|
|
||||||
"zephyr,sram" |
|
||||||
- &tcmu_sys |
|
||||||
- &ocram_sys |
|
||||||
- &ocram_s_sys |
|
||||||
|
|
||||||
Load and run Zephyr on M4 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 M4 binary onto the desired memory and start its execution using: |
|
||||||
|
|
||||||
.. code-block:: console |
|
||||||
|
|
||||||
fatload mmc 0:1 0x7e0000 zephyr.bin;bootaux 0x7e0000 |
|
||||||
|
|
||||||
Debugging |
|
||||||
========= |
|
||||||
|
|
||||||
MIMX8MM EVK board can be debugged by connecting an external JLink |
|
||||||
JTAG debugger to the J902 debug connector and to the PC. 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: mimx8mm_evk |
|
||||||
: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-v2.0.0-1859-g292afe8533c0 ***** |
|
||||||
Hello World! mimx8mm_evk |
|
||||||
|
|
||||||
References |
|
||||||
========== |
|
||||||
|
|
||||||
.. _NXP website: |
|
||||||
https://www.nxp.com/design/development-boards/i.mx-evaluation-and-development-boards/evaluation-kit-for-thebr-i.mx-8m-mini-applications-processor:8MMINILPD4-EVK |
|
||||||
|
|
||||||
.. _i.MX 8M Applications Processor Reference Manual: |
|
||||||
https://www.nxp.com/webapp/Download?colCode=IMX8MMRM |
|
@ -1,21 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright (c) 2022, NXP |
|
||||||
* SPDX-License-Identifier: Apache-2.0 |
|
||||||
* |
|
||||||
* Note: File generated by gen_board_pinctrl.py |
|
||||||
* from MIMX8MM-EVK-REV-C.mex |
|
||||||
*/ |
|
||||||
|
|
||||||
#include <nxp/nxp_imx/mimx8mm6dvtlz-pinctrl.dtsi> |
|
||||||
|
|
||||||
&pinctrl { |
|
||||||
uart4_default: uart4_default { |
|
||||||
group0 { |
|
||||||
pinmux = <&iomuxc_uart4_rxd_uart_rx_uart4_rx>, |
|
||||||
<&iomuxc_uart4_txd_uart_tx_uart4_tx>; |
|
||||||
slew-rate = "fast"; |
|
||||||
drive-strength = "40-ohm"; |
|
||||||
}; |
|
||||||
}; |
|
||||||
|
|
||||||
}; |
|
@ -1 +1,10 @@ |
|||||||
# SPDX-License-Identifier: Apache-2.0 |
# SPDX-License-Identifier: Apache-2.0 |
||||||
|
# Copyright 2024 NXP |
||||||
|
|
||||||
|
if(CONFIG_BOARD_IMX8MM_EVK_MIMX8MM6_M4) |
||||||
|
board_set_debugger_ifnset(jlink) |
||||||
|
board_set_flasher_ifnset(jlink) |
||||||
|
|
||||||
|
board_runner_args(jlink "--device=MIMX8MD6_M4") |
||||||
|
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) |
||||||
|
endif() |
||||||
|
@ -1,10 +1,11 @@ |
|||||||
# |
# |
||||||
# Copyright (c) 2020, Manivannan Sadhasivam <mani@kernel.org> |
# Copyright (c) 2020, Manivannan Sadhasivam <mani@kernel.org> |
||||||
|
# Copyright 2024 |
||||||
# |
# |
||||||
# SPDX-License-Identifier: Apache-2.0 |
# SPDX-License-Identifier: Apache-2.0 |
||||||
# |
# |
||||||
|
|
||||||
identifier: mimx8mm_evk |
identifier: imx8mm_evk/mimx8mm6/m4 |
||||||
name: NXP i.MX8M Mini EVK |
name: NXP i.MX8M Mini EVK |
||||||
type: mcu |
type: mcu |
||||||
arch: arm |
arch: arm |
@ -1,12 +1,10 @@ |
|||||||
# |
# |
||||||
# Copyright (c) 2020, Manivannan Sadhasivam <mani@kernel.org> |
# Copyright (c) 2020, Manivannan Sadhasivam <mani@kernel.org> |
||||||
|
# Copyright 2024 NXP |
||||||
# |
# |
||||||
# SPDX-License-Identifier: Apache-2.0 |
# SPDX-License-Identifier: Apache-2.0 |
||||||
# |
# |
||||||
|
|
||||||
CONFIG_SOC_SERIES_IMX8MM_M4=y |
|
||||||
CONFIG_SOC_MIMX8MM6=y |
|
||||||
CONFIG_BOARD_MIMX8MM_EVK=y |
|
||||||
CONFIG_CLOCK_CONTROL=y |
CONFIG_CLOCK_CONTROL=y |
||||||
CONFIG_UART_CONSOLE=y |
CONFIG_UART_CONSOLE=y |
||||||
CONFIG_SERIAL=y |
CONFIG_SERIAL=y |
Loading…
Reference in new issue