Skip to content

Commit 60bf682

Browse files
AndreHeinemans-NXPxiaoxiang781216
authored andcommitted
boards/arm: add support for imx95-evk m7 core
- Add support for the IMX95LPD5EVK-19 evaluation kit (M7 core only) - Firmware can be executed from ITCM, DDR or NOR flash - configurations: 'nsh' A minimal configuration that only enables nsh shell on a UART 'rpmsg' This configuration is similar to nsh but in addition it offers the Remote Processing Messaging (RPMsg) service to enable heterogeneous inter-core communication.
1 parent a84257c commit 60bf682

File tree

20 files changed

+1687
-0
lines changed

20 files changed

+1687
-0
lines changed
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
===============
2+
IMX95LPD5EVK-19
3+
===============
4+
5+
The IMX95LPD5EVK-19 board is a platform designed to show the most commonly
6+
used features of the i.MX 95 automotive applications processor.
7+
8+
Features
9+
========
10+
11+
- Multicore Processing [1]_
12+
- 1x Arm Cortex-M7
13+
- 6x Arm Cortex-A55 multicore complex
14+
- 1x Arm Cortex-M33
15+
- Memory
16+
- On-Chip Memory
17+
- 1376kB SRAM (ECC)
18+
- External Memory
19+
- Up to 6.4GT/s x32 LPDDR5/LPDDR4X (with Inline ECC & Inline Encrpytion)
20+
- 1x Octal SPI, including support for SPI NOR and SPI NAND memories
21+
- Connectivity
22+
- CAN FD
23+
- UART/USART/Profibus, I²C, SPI
24+
- Messaging Units (MU) to support IPC between heterogeneous cores
25+
26+
.. [1] NuttX is currently supported exclusively on the Cortex-M7 core of the
27+
i.MX95
28+
29+
Serial Console
30+
==============
31+
32+
The IMX95LPD5EVK-19 board features a high-speed USB-to-UART/MPSSE device,
33+
FT4232H (U70) that provides a debug interface for the i.MX95 processor through
34+
the USB type-C connector (J31). The device acts as a bridge to enable
35+
communication between the target processor and the host computer, which
36+
connects to the USB connector (J31) through a USB cable.
37+
38+
Channel A is used as UART port to provide USB-to-UART option for debugging the
39+
Arm Cortex-M7 core of the i.MX 95 processor (default option).
40+
41+
J-Link External Debug Probe
42+
===========================
43+
44+
The IMX95LPD5EVK-19 board provides a 2x5-pin Samtec FTSH-105-01-L-DV-K header
45+
(J30) for connecting a JTAG debugger (external JTAG) for debugging the i.MX95
46+
processor. The FT4234H JTAG provides the remote debug option for the i.MX95
47+
processor.
48+
49+
Configurations
50+
==============
51+
52+
nsh
53+
---
54+
55+
Configures the NuttShell (nsh) located at examples/nsh. This NSH
56+
configuration is focused on low level, command-line driver testing. Built-in
57+
applications are supported, but none are enabled. This configuration does not
58+
support a network.
59+
60+
This configuration can be used in combination with the default sd-card image
61+
that is shipped with the EVK.
62+
63+
rpmsg
64+
-----
65+
66+
This configuration is similar to nsh but in addition it offers the Remote
67+
Processing Messaging (RPMsg) service to enable heterogeneous inter-core
68+
communication. A virtual UART (CONFIG_RPMSG_UART) is made available on which
69+
an OS running on the A55 cores can connect. There is also an option to use
70+
the filesystem client feature in which a remote directory can be mounted to
71+
a local directory (CONFIG_FS_RPMSGFS).
72+
73+
The rpmsg configuration executes the code from DDR since its code memory
74+
footprint is bigger than the ITCM size. In the case of using the default
75+
sd-card image from the EVK, adaptations are needed on the software running on
76+
the M33 and A55 cores.
77+
78+
- `System Manager <https://github.com/nxp-imx/imx-sm>`_ (M33) should give
79+
the M7 access to the DDR region
80+
- `linux-imx <https://github.com/nxp-imx/linux-imx>`_ (A55) should reserve
81+
the DDR region by specifying it in the device tree so linux won't make
82+
use of it
83+
- `linux-imx <https://github.com/nxp-imx/linux-imx>`_ (A55) needs the
84+
NuttX compatible rpmsg_tty and rpmsg_fs drivers. See `dev mailing list
85+
<https://www.mail-archive.com/[email protected]/msg12112.html>`_
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
===================
2+
NXP i.MX9
3+
===================
4+
5+
Supported Boards
6+
================
7+
8+
.. toctree::
9+
:glob:
10+
:maxdepth: 1
11+
12+
boards/*/*

boards/Kconfig

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -780,6 +780,16 @@ config ARCH_BOARD_IMXRT1170_EVK
780780
This is the board configuration for the port of NuttX to the NXP i.MXRT
781781
evaluation kit, MIMXRT1170-EVK. This board features the MIMXRT1176DVMAA MCU.
782782

783+
config ARCH_BOARD_IMX95_EVK
784+
bool "NXP i.MX 95 EVK"
785+
depends on ARCH_CHIP_IMX9_CORTEX_M
786+
select ARCH_HAVE_LEDS
787+
select ARCH_HAVE_BUTTONS
788+
select ARCH_HAVE_IRQBUTTONS
789+
---help---
790+
This is the board configuration for the port of NuttX to the NXP i.MXRT
791+
evaluation kit, IMX95-EVK. This board features the IMX95 MCU.
792+
783793
config ARCH_BOARD_LC823450_XGEVK
784794
bool "ON Semiconductor LC823450-XGEVK development board"
785795
depends on ARCH_CHIP_LC823450
@@ -3345,6 +3355,7 @@ config ARCH_BOARD
33453355
default "imxrt1060-evk" if ARCH_BOARD_IMXRT1060_EVK
33463356
default "imxrt1064-evk" if ARCH_BOARD_IMXRT1064_EVK
33473357
default "imxrt1170-evk" if ARCH_BOARD_IMXRT1170_EVK
3358+
default "imx95-evk" if ARCH_BOARD_IMX95_EVK
33483359
default "kwikstik-k40" if ARCH_BOARD_KWIKSTIK_K40
33493360
default "launchxl-cc1310" if ARCH_BOARD_LAUNCHXL_CC1310
33503361
default "launchxl-cc1312r1" if ARCH_BOARD_LAUNCHXL_CC1312R1
@@ -3757,6 +3768,9 @@ endif
37573768
if ARCH_BOARD_IMXRT1170_EVK
37583769
source "boards/arm/imxrt/imxrt1170-evk/Kconfig"
37593770
endif
3771+
if ARCH_BOARD_IMX95_EVK
3772+
source "boards/arm/imx9/imx95-evk/Kconfig"
3773+
endif
37603774
if ARCH_BOARD_TEENSY_4X
37613775
source "boards/arm/imxrt/teensy-4.x/Kconfig"
37623776
endif
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# ##############################################################################
2+
# boards/arm/imx9/imx95-evk/CMakeLists.txt
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
#
6+
# Licensed to the Apache Software Foundation (ASF) under one or more contributor
7+
# license agreements. See the NOTICE file distributed with this work for
8+
# additional information regarding copyright ownership. The ASF licenses this
9+
# file to you under the Apache License, Version 2.0 (the "License"); you may not
10+
# use this file except in compliance with the License. You may obtain a copy of
11+
# the License at
12+
#
13+
# http://www.apache.org/licenses/LICENSE-2.0
14+
#
15+
# Unless required by applicable law or agreed to in writing, software
16+
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17+
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
18+
# License for the specific language governing permissions and limitations under
19+
# the License.
20+
#
21+
# ##############################################################################
22+
23+
add_subdirectory(src)
24+
25+
if(NOT CONFIG_BUILD_FLAT)
26+
add_subdirectory(kernel)
27+
set_property(
28+
GLOBAL PROPERTY LD_SCRIPT_USER ${CMAKE_CURRENT_LIST_DIR}/scripts/memory.ld
29+
${CMAKE_CURRENT_LIST_DIR}/scripts/user-space.ld)
30+
endif()

boards/arm/imx9/imx95-evk/Kconfig

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#
2+
# For a description of the syntax of this configuration file,
3+
# see the file kconfig-language.txt in the NuttX tools repository.
4+
#
5+
6+
choice IMX95_CODE_LOCATION
7+
prompt "Code location"
8+
9+
config IMX95_RUN_FROM_ITCM
10+
bool "Run from Instruction Tightly Coupled Memory (ITCM)"
11+
12+
config IMX95_RUN_FROM_DDR
13+
bool "Run from SDRAM (DDR)"
14+
15+
config IMX95_RUN_FROM_FLASH
16+
bool "Run from NOR flash"
17+
18+
endchoice
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#
2+
# This file is autogenerated: PLEASE DO NOT EDIT IT.
3+
#
4+
# You can use "make menuconfig" to make any modifications to the installed .config file.
5+
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
6+
# modifications.
7+
#
8+
# CONFIG_ARCH_LEDS is not set
9+
# CONFIG_ARCH_RAMFUNCS is not set
10+
# CONFIG_NDEBUG is not set
11+
CONFIG_ARCH="arm"
12+
CONFIG_ARCH_BOARD="imx95-evk"
13+
CONFIG_ARCH_BOARD_IMX95_EVK=y
14+
CONFIG_ARCH_CHIP="imx9"
15+
CONFIG_ARCH_CHIP_IMX95_M7=y
16+
CONFIG_ARCH_CHIP_IMX9_CORTEX_M=y
17+
CONFIG_ARCH_INTERRUPTSTACK=4096
18+
CONFIG_ARCH_STACKDUMP=y
19+
CONFIG_ARMV7M_DCACHE=y
20+
CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y
21+
CONFIG_ARMV7M_DTCM=y
22+
CONFIG_ARMV7M_ICACHE=y
23+
CONFIG_ARMV7M_ITCM=y
24+
CONFIG_BINFMT_DISABLE=y
25+
CONFIG_BOARD_LOOPSPERMSEC=2664
26+
CONFIG_BUILTIN=y
27+
CONFIG_DEBUG_BUSFAULT=y
28+
CONFIG_DEBUG_FEATURES=y
29+
CONFIG_DEBUG_HARDFAULT_ALERT=y
30+
CONFIG_DEBUG_HARDFAULT_INFO=y
31+
CONFIG_DEBUG_SYMBOLS=y
32+
CONFIG_DEBUG_USAGEFAULT=y
33+
CONFIG_DEFAULT_TASK_STACKSIZE=8192
34+
CONFIG_EXAMPLES_CALIB_UDELAY=y
35+
CONFIG_FS_PROCFS=y
36+
CONFIG_IDLETHREAD_STACKSIZE=8192
37+
CONFIG_IMX9_LPUART3=y
38+
CONFIG_IMX9_OCRAM_HEAP=y
39+
CONFIG_INIT_ENTRYPOINT="nsh_main"
40+
CONFIG_INTELHEX_BINARY=y
41+
CONFIG_LIBC_LOCALTIME=y
42+
CONFIG_LPUART3_SERIAL_CONSOLE=y
43+
CONFIG_MM_REGIONS=2
44+
CONFIG_NSH_ARCHINIT=y
45+
CONFIG_NSH_BUILTIN_APPS=y
46+
CONFIG_NSH_DISABLE_IFUPDOWN=y
47+
CONFIG_NSH_FILEIOSIZE=512
48+
CONFIG_RAM_SIZE=134217728
49+
CONFIG_RAM_START=0x80000000
50+
CONFIG_RAW_BINARY=y
51+
CONFIG_SCHED_BACKTRACE=y
52+
CONFIG_SERIAL_TERMIOS=y
53+
CONFIG_STACK_COLORATION=y
54+
CONFIG_START_DAY=14
55+
CONFIG_START_MONTH=3
56+
CONFIG_SYSTEM_NSH=y
57+
CONFIG_TTY_SIGINT=y
58+
CONFIG_TTY_SIGTSTP=y
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
#
2+
# This file is autogenerated: PLEASE DO NOT EDIT IT.
3+
#
4+
# You can use "make menuconfig" to make any modifications to the installed .config file.
5+
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
6+
# modifications.
7+
#
8+
# CONFIG_ARCH_LEDS is not set
9+
# CONFIG_ARCH_RAMFUNCS is not set
10+
# CONFIG_NDEBUG is not set
11+
CONFIG_ARCH="arm"
12+
CONFIG_ARCH_BOARD="imx95-evk"
13+
CONFIG_ARCH_BOARD_IMX95_EVK=y
14+
CONFIG_ARCH_CHIP="imx9"
15+
CONFIG_ARCH_CHIP_IMX95_M7=y
16+
CONFIG_ARCH_CHIP_IMX9_CORTEX_M=y
17+
CONFIG_ARCH_INTERRUPTSTACK=4096
18+
CONFIG_ARCH_STACKDUMP=y
19+
CONFIG_ARMV7M_DCACHE=y
20+
CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y
21+
CONFIG_ARMV7M_DTCM=y
22+
CONFIG_ARMV7M_ICACHE=y
23+
CONFIG_ARMV7M_ITCM=y
24+
CONFIG_BINFMT_DISABLE=y
25+
CONFIG_BOARD_LOOPSPERMSEC=2664
26+
CONFIG_BUILTIN=y
27+
CONFIG_DEBUG_BUSFAULT=y
28+
CONFIG_DEBUG_FEATURES=y
29+
CONFIG_DEBUG_HARDFAULT_ALERT=y
30+
CONFIG_DEBUG_HARDFAULT_INFO=y
31+
CONFIG_DEBUG_IPC=y
32+
CONFIG_DEBUG_IPC_ERROR=y
33+
CONFIG_DEBUG_IPC_WARN=y
34+
CONFIG_DEBUG_RPMSG=y
35+
CONFIG_DEBUG_RPMSG_ERROR=y
36+
CONFIG_DEBUG_RPMSG_WARN=y
37+
CONFIG_DEBUG_SENSORS=y
38+
CONFIG_DEBUG_SENSORS_ERROR=y
39+
CONFIG_DEBUG_SENSORS_INFO=y
40+
CONFIG_DEBUG_SENSORS_WARN=y
41+
CONFIG_DEBUG_SYMBOLS=y
42+
CONFIG_DEBUG_USAGEFAULT=y
43+
CONFIG_DEBUG_VIRTIO=y
44+
CONFIG_DEBUG_VIRTIO_ERROR=y
45+
CONFIG_DEBUG_VIRTIO_INFO=y
46+
CONFIG_DEBUG_VIRTIO_WARN=y
47+
CONFIG_DEFAULT_TASK_STACKSIZE=8192
48+
CONFIG_DEV_RPMSG=y
49+
CONFIG_DEV_SIMPLE_ADDRENV=y
50+
CONFIG_DRIVERS_VIRTIO=y
51+
CONFIG_FS_PROCFS=y
52+
CONFIG_FS_RPMSGFS=y
53+
CONFIG_IDLETHREAD_STACKSIZE=8192
54+
CONFIG_IMX95_RUN_FROM_DDR=y
55+
CONFIG_IMX9_LPUART3=y
56+
CONFIG_IMX9_MU7=y
57+
CONFIG_IMX9_OCRAM_HEAP=y
58+
CONFIG_INIT_ENTRYPOINT="nsh_main"
59+
CONFIG_INTELHEX_BINARY=y
60+
CONFIG_LIBC_LOCALTIME=y
61+
CONFIG_LPUART3_SERIAL_CONSOLE=y
62+
CONFIG_MM_HEAP_MEMPOOL_THRESHOLD=0
63+
CONFIG_MM_REGIONS=2
64+
CONFIG_NSH_ARCHINIT=y
65+
CONFIG_NSH_BUILTIN_APPS=y
66+
CONFIG_NSH_DISABLE_IFUPDOWN=y
67+
CONFIG_NSH_FILEIOSIZE=512
68+
CONFIG_RAM_SIZE=134217728
69+
CONFIG_RAM_START=0x80000000
70+
CONFIG_RAW_BINARY=y
71+
CONFIG_RPMSG_LOCAL_CPUNAME="cpuapp"
72+
CONFIG_RPMSG_UART=y
73+
CONFIG_RPTUN=y
74+
CONFIG_SCHED_BACKTRACE=y
75+
CONFIG_SENSORS=y
76+
CONFIG_SERIAL_TERMIOS=y
77+
CONFIG_STACK_COLORATION=y
78+
CONFIG_START_DAY=14
79+
CONFIG_START_MONTH=3
80+
CONFIG_SYSTEM_CUTERM=y
81+
CONFIG_SYSTEM_CUTERM_DEFAULT_DEVICE="/dev/ttyproxy"
82+
CONFIG_SYSTEM_NSH=y
83+
CONFIG_TTY_SIGINT=y
84+
CONFIG_TTY_SIGTSTP=y

0 commit comments

Comments
 (0)