From 58e232863dc89956378e0fec1f7f7f88fe084dc4 Mon Sep 17 00:00:00 2001 From: Andre Heinemans Date: Wed, 18 Dec 2024 09:40:52 +0100 Subject: [PATCH] imx95-evk: update configs; add imx95-evk:can --- .../arm/imx9/boards/imx95-evk/index.rst | 69 ++++++++++++---- .../arm/imx9/imx95-evk/configs/can/defconfig | 81 +++++++++++++++++++ .../arm/imx9/imx95-evk/configs/nsh/defconfig | 5 +- .../imx9/imx95-evk/configs/rpmsg/defconfig | 11 +-- boards/arm/imx9/imx95-evk/include/board.h | 3 + boards/arm/imx9/imx95-evk/src/imx95_bringup.c | 12 +++ 6 files changed, 156 insertions(+), 25 deletions(-) create mode 100644 boards/arm/imx9/imx95-evk/configs/can/defconfig diff --git a/Documentation/platforms/arm/imx9/boards/imx95-evk/index.rst b/Documentation/platforms/arm/imx9/boards/imx95-evk/index.rst index 571eef84c8..2a1747bc56 100644 --- a/Documentation/platforms/arm/imx9/boards/imx95-evk/index.rst +++ b/Documentation/platforms/arm/imx9/boards/imx95-evk/index.rst @@ -3,7 +3,9 @@ IMX95LPD5EVK-19 =============== The IMX95LPD5EVK-19 board is a platform designed to show the most commonly -used features of the i.MX 95 automotive applications processor. +used features of the +`i.MX 95 automotive applications processor +`_ . Features ======== @@ -46,9 +48,39 @@ The IMX95LPD5EVK-19 board provides a 2x5-pin Samtec FTSH-105-01-L-DV-K header processor. The FT4234H JTAG provides the remote debug option for the i.MX95 processor. +Firmware location +================= + +Instruction Tightly Coupled Memory (ITCM) +----------------------------------------- + +The purpose of the Tightly-Coupled Memory (TCM) is to provide low-latency +memory that the processor can use without the unpredictability that is a +feature of caches. By default the firmware will be located in this area +(256K). + +DDR +--- + +DDR memory can be used in case the code memory footprint becomes bigger than +the ITCM size. Using this configuration implies that other cores should be +aware of this. +For the default sd-card image from the EVK, these adaptations are needed on +the software running on the M33 and A55 cores. + + - `System Manager `_ (M33) should give + the M7 access to the DDR region + - `linux-imx `_ (A55) should reserve + the DDR region by specifying it in the device tree so linux won't make + use of it + + Configurations ============== +All the configurations can be used in combination with the default sd-card +image that is shipped with the EVK. + nsh --- @@ -57,8 +89,26 @@ configuration is focused on low level, command-line driver testing. Built-in applications are supported, but none are enabled. This configuration does not support a network. -This configuration can be used in combination with the default sd-card image -that is shipped with the EVK. + +can +--- + +Configures the NuttShell (nsh) and also adds CAN support. CAN1 is enabled and +can be accessed at J17 on the EVK. Make sure that SW9[3] (PDM_CAN_SEL) is set +to ON. The configuration includes CAN utilities as candump and cansend. + +.. note:: + `System Manager `_ (M33) should give + the M7 access rights to the PIN_PDM_CLK (CAN1_TX) and + PIN_PDM_BIT_STREAM0 (CAN1_RX) pins in the mx95evk.cfg. + + Alternatively these can be set manually in the system manager's console: + + .. code-block:: console + + >$ mm 0x443c01e0 0x6 + >$ mm 0x443c01e4 0x6 + rpmsg ----- @@ -70,16 +120,7 @@ an OS running on the A55 cores can connect. There is also an option to use the filesystem client feature in which a remote directory can be mounted to a local directory (CONFIG_FS_RPMSGFS). -The rpmsg configuration executes the code from DDR since its code memory -footprint is bigger than the ITCM size. In the case of using the default -sd-card image from the EVK, adaptations are needed on the software running on -the M33 and A55 cores. - - - `System Manager `_ (M33) should give - the M7 access to the DDR region - - `linux-imx `_ (A55) should reserve - the DDR region by specifying it in the device tree so linux won't make - use of it - - `linux-imx `_ (A55) needs the +.. note:: + `linux-imx `_ (A55) needs the NuttX compatible rpmsg_tty and rpmsg_fs drivers. See `dev mailing list `_ \ No newline at end of file diff --git a/boards/arm/imx9/imx95-evk/configs/can/defconfig b/boards/arm/imx9/imx95-evk/configs/can/defconfig new file mode 100644 index 0000000000..c953971952 --- /dev/null +++ b/boards/arm/imx9/imx95-evk/configs/can/defconfig @@ -0,0 +1,81 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +# CONFIG_ARCH_LEDS is not set +# CONFIG_ARCH_RAMFUNCS is not set +# CONFIG_IMX9_WFI_AWAKES_AT_SYSTICK is not set +# CONFIG_NET_RECV_PACK is not set +CONFIG_ALLOW_BSD_COMPONENTS=y +CONFIG_ARCH="arm" +CONFIG_ARCH_BOARD="imx95-evk" +CONFIG_ARCH_BOARD_IMX95_EVK=y +CONFIG_ARCH_CHIP="imx9" +CONFIG_ARCH_CHIP_IMX95_M7=y +CONFIG_ARCH_CHIP_IMX9_CORTEX_M=y +CONFIG_ARCH_INTERRUPTSTACK=4096 +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARMV7M_DCACHE=y +CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y +CONFIG_ARMV7M_DTCM=y +CONFIG_ARMV7M_ICACHE=y +CONFIG_ARMV7M_ITCM=y +CONFIG_BINFMT_DISABLE=y +CONFIG_BOARD_LOOPSPERMSEC=2664 +CONFIG_BUILTIN=y +CONFIG_CANUTILS_CANDUMP=y +CONFIG_CANUTILS_CANSEND=y +CONFIG_CANUTILS_LIBCANUTILS=y +CONFIG_DEBUG_ASSERTIONS=y +CONFIG_DEBUG_ASSERTIONS_EXPRESSION=y +CONFIG_DEBUG_BUSFAULT=y +CONFIG_DEBUG_FEATURES=y +CONFIG_DEBUG_FULLOPT=y +CONFIG_DEBUG_HARDFAULT_ALERT=y +CONFIG_DEBUG_HARDFAULT_INFO=y +CONFIG_DEBUG_SYMBOLS=y +CONFIG_DEBUG_USAGEFAULT=y +CONFIG_DEFAULT_TASK_STACKSIZE=8192 +CONFIG_FS_PROCFS=y +CONFIG_IDLETHREAD_STACKSIZE=8192 +CONFIG_IMX9_FLEXCAN1=y +CONFIG_IMX9_IOMUX_OVER_SCMI=y +CONFIG_IMX9_LPUART3=y +CONFIG_INIT_ENTRYPOINT="nsh_main" +CONFIG_INTELHEX_BINARY=y +CONFIG_IOB_ALLOC=y +CONFIG_IOB_NOTIFIER=y +CONFIG_IOB_THROTTLE=8 +CONFIG_LIBC_LOCALTIME=y +CONFIG_LPUART3_SERIAL_CONSOLE=y +CONFIG_NET=y +CONFIG_NETDEV_CAN_BITRATE_IOCTL=y +CONFIG_NETDEV_IFINDEX=y +CONFIG_NETDEV_LATEINIT=y +CONFIG_NETDEV_WORK_THREAD=y +CONFIG_NET_CAN=y +CONFIG_NET_CAN_EXTID=y +CONFIG_NET_CAN_NOTIFIER=y +CONFIG_NET_CAN_RAW_TX_DEADLINE=y +CONFIG_NET_CAN_SOCK_OPTS=y +CONFIG_NET_LL_GUARDSIZE=14 +CONFIG_NET_TIMESTAMP=y +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_RAM_SIZE=134217728 +CONFIG_RAM_START=0x80000000 +CONFIG_RAW_BINARY=y +CONFIG_SCHED_BACKTRACE=y +CONFIG_SCHED_HPWORK=y +CONFIG_SCHED_LPWORK=y +CONFIG_SERIAL_TERMIOS=y +CONFIG_STACK_COLORATION=y +CONFIG_START_DAY=14 +CONFIG_START_MONTH=3 +CONFIG_SYSTEM_NSH=y +CONFIG_TTY_SIGINT=y +CONFIG_TTY_SIGTSTP=y diff --git a/boards/arm/imx9/imx95-evk/configs/nsh/defconfig b/boards/arm/imx9/imx95-evk/configs/nsh/defconfig index 2c4a85e11a..9da13c4e1c 100644 --- a/boards/arm/imx9/imx95-evk/configs/nsh/defconfig +++ b/boards/arm/imx9/imx95-evk/configs/nsh/defconfig @@ -7,6 +7,7 @@ # # CONFIG_ARCH_LEDS is not set # CONFIG_ARCH_RAMFUNCS is not set +# CONFIG_IMX9_WFI_AWAKES_AT_SYSTICK is not set # CONFIG_NDEBUG is not set CONFIG_ARCH="arm" CONFIG_ARCH_BOARD="imx95-evk" @@ -31,16 +32,14 @@ CONFIG_DEBUG_HARDFAULT_INFO=y CONFIG_DEBUG_SYMBOLS=y CONFIG_DEBUG_USAGEFAULT=y CONFIG_DEFAULT_TASK_STACKSIZE=8192 -CONFIG_EXAMPLES_CALIB_UDELAY=y CONFIG_FS_PROCFS=y CONFIG_IDLETHREAD_STACKSIZE=8192 +CONFIG_IMX9_IOMUX_OVER_SCMI=y CONFIG_IMX9_LPUART3=y -CONFIG_IMX9_OCRAM_HEAP=y CONFIG_INIT_ENTRYPOINT="nsh_main" CONFIG_INTELHEX_BINARY=y CONFIG_LIBC_LOCALTIME=y CONFIG_LPUART3_SERIAL_CONSOLE=y -CONFIG_MM_REGIONS=2 CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_DISABLE_IFUPDOWN=y diff --git a/boards/arm/imx9/imx95-evk/configs/rpmsg/defconfig b/boards/arm/imx9/imx95-evk/configs/rpmsg/defconfig index c8bc0374f2..de2b5fbb69 100644 --- a/boards/arm/imx9/imx95-evk/configs/rpmsg/defconfig +++ b/boards/arm/imx9/imx95-evk/configs/rpmsg/defconfig @@ -7,6 +7,7 @@ # # CONFIG_ARCH_LEDS is not set # CONFIG_ARCH_RAMFUNCS is not set +# CONFIG_IMX9_WFI_AWAKES_AT_SYSTICK is not set # CONFIG_NDEBUG is not set CONFIG_ARCH="arm" CONFIG_ARCH_BOARD="imx95-evk" @@ -26,6 +27,7 @@ CONFIG_BOARD_LOOPSPERMSEC=2664 CONFIG_BUILTIN=y CONFIG_DEBUG_BUSFAULT=y CONFIG_DEBUG_FEATURES=y +CONFIG_DEBUG_FULLOPT=y CONFIG_DEBUG_HARDFAULT_ALERT=y CONFIG_DEBUG_HARDFAULT_INFO=y CONFIG_DEBUG_IPC=y @@ -34,10 +36,6 @@ CONFIG_DEBUG_IPC_WARN=y CONFIG_DEBUG_RPMSG=y CONFIG_DEBUG_RPMSG_ERROR=y CONFIG_DEBUG_RPMSG_WARN=y -CONFIG_DEBUG_SENSORS=y -CONFIG_DEBUG_SENSORS_ERROR=y -CONFIG_DEBUG_SENSORS_INFO=y -CONFIG_DEBUG_SENSORS_WARN=y CONFIG_DEBUG_SYMBOLS=y CONFIG_DEBUG_USAGEFAULT=y CONFIG_DEBUG_VIRTIO=y @@ -51,16 +49,14 @@ CONFIG_DRIVERS_VIRTIO=y CONFIG_FS_PROCFS=y CONFIG_FS_RPMSGFS=y CONFIG_IDLETHREAD_STACKSIZE=8192 -CONFIG_IMX95_RUN_FROM_DDR=y +CONFIG_IMX9_IOMUX_OVER_SCMI=y CONFIG_IMX9_LPUART3=y CONFIG_IMX9_MU7=y -CONFIG_IMX9_OCRAM_HEAP=y CONFIG_INIT_ENTRYPOINT="nsh_main" CONFIG_INTELHEX_BINARY=y CONFIG_LIBC_LOCALTIME=y CONFIG_LPUART3_SERIAL_CONSOLE=y CONFIG_MM_HEAP_MEMPOOL_THRESHOLD=0 -CONFIG_MM_REGIONS=2 CONFIG_NSH_ARCHINIT=y CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_DISABLE_IFUPDOWN=y @@ -72,7 +68,6 @@ CONFIG_RPMSG_LOCAL_CPUNAME="cpuapp" CONFIG_RPMSG_UART=y CONFIG_RPTUN=y CONFIG_SCHED_BACKTRACE=y -CONFIG_SENSORS=y CONFIG_SERIAL_TERMIOS=y CONFIG_STACK_COLORATION=y CONFIG_START_DAY=14 diff --git a/boards/arm/imx9/imx95-evk/include/board.h b/boards/arm/imx9/imx95-evk/include/board.h index 4b29047bda..e5c8f83b13 100644 --- a/boards/arm/imx9/imx95-evk/include/board.h +++ b/boards/arm/imx9/imx95-evk/include/board.h @@ -122,6 +122,9 @@ #define GPIO_FLEXCAN1_TX IOMUX_CFG(IOMUXC_PAD_PDM_CLK_CAN1_TX, IOMUX_GPIO_DEFAULT, IOMUXC_MUX_SION_ON) #define GPIO_FLEXCAN1_RX IOMUX_CFG(IOMUXC_PAD_PDM_BIT_STREAM0_CAN1_RX, IOMUX_GPIO_DEFAULT, IOMUXC_MUX_SION_ON) +#define GPIO_FLEXCAN2_TX IOMUX_CFG(IOMUXC_PAD_GPIO_IO25_CAN2_TX, IOMUX_GPIO_DEFAULT, IOMUXC_MUX_SION_ON) +#define GPIO_FLEXCAN2_RX IOMUX_CFG(IOMUXC_PAD_GPIO_IO27_CAN2_RX, IOMUX_GPIO_DEFAULT, IOMUXC_MUX_SION_ON) + /* Set the PLL clocks as follows: * * - OSC24M : 24 MHz diff --git a/boards/arm/imx9/imx95-evk/src/imx95_bringup.c b/boards/arm/imx9/imx95-evk/src/imx95_bringup.c index 0888116c2c..8cbc8c002a 100644 --- a/boards/arm/imx9/imx95-evk/src/imx95_bringup.c +++ b/boards/arm/imx9/imx95-evk/src/imx95_bringup.c @@ -39,6 +39,10 @@ # include #endif +#ifdef CONFIG_IMX9_FLEXCAN +# include "imx9_flexcan.h" +#endif + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -96,6 +100,14 @@ int imx95_bringup(void) } #endif +#ifdef CONFIG_IMX9_FLEXCAN1 + imx9_caninitialize(1); +#endif + +#ifdef CONFIG_IMX9_FLEXCAN2 + imx9_caninitialize(2); +#endif + UNUSED(ret); return OK; }