NXP i.MX 93 - MarekBykowski/readme GitHub Wiki

i.MX 93 EVK platform & i.MX 93 QSB platform

i.MX 93 EVK platform https://www.nxp.com/doc/IMX93EVKQSG
i.MX 93 QSB platform https://www.nxp.com/docs/en/user-guide/IMX93QSBQSG.pdf

i.MX Yocto Project User Guide

https://www.nxp.com/docs/en/user-guide/IMX_YOCTO_PROJECT_USERS_GUIDE.pdf
https://www.nxp.com/docs/en/user-guide/IMX_LINUX_USERS_GUIDE.pdf

Yocto i.MX manifest

https://github.com/nxp-imx/imx-manifest

default branch: imx-linux-scarthgap
latest manifest file on that branch: imx-6.6.52-2.2.0.xml

Note https://github.com/nxp-imx/imx-manifest contains other branches and other manifest files on these branches but the above seem the latest and preferred.

First switch to a working directory

mkdir ~/imx-yocto-bsp
cd ~/imx-yocto-bsp

Then get the git-repo tool and download the layers required

git clone https://gerrit.googlesource.com/git-repo
./git-repo/repo init -u https://github.com/nxp-imx/imx-manifest -b imx-linux-scarthgap -m imx-6.6.52-2.2.0.xml
./git-repo/repo sync

Image build

Yocto supports the following machine configuration for i.XM 93

  • i.MX 9
    • imx91-11x11-lpddr4-evk
    • imx91-9x9-lpddr4-qsb
    • imx93-11x11-lpddr4x-evk
    • imx93-14x14-lpddr4x-evk
    • imx93-9x9-lpddr4-qsb

MACHINE = imx91-11x11-lpddr4-evk

To build run the imx-setup-release.sh script

#Freescale NXP Semiconductor `imx-setup-release.sh` setup script run first
DISTRO=fsl-imx-xwayland MACHINE=imx91-11x11-lpddr4-evk source imx-setup-release.sh -b build_imx91-11x11-lpddr4-evk

then build for the image selected

bitbake imx-image-core

If logged out then in do

cd ~/imx-yocto-bsp
#equivalence to `source oe-init-build-env build` in `Poky`
source setup-environment build
bitbake imx-image-core

I succeeded building for i.xm93 imx91-11x11-lpddr4-evk

MACHINE = imx93evk

Similarily to above but change the MACHINE to MACHINE=imx93evk and the build dir to something like build_imx93evk

Boot-up flow

bl1 (ROM bootloader), bl2 (SPL U-Boot), bl3-1 (Secure Monitor), bl3-3 (U-Boot), OP-TEE, Linux Kernel, device-tree, and rootfs

https://docs.foundries.io/94/reference-manual/security/boot-software-updates-imx.html#
https://trustedfirmware-a.readthedocs.io/en/latest/plat/imx9.html#nxp-i-mx-9-series

Cortex-M33 image

[mbykowsx@GNR-JF04-5350 build_imx93evk]$ pwd
/yocto/yocto-team/mbykowsx/imx-yocto-bsp/build_imx93evk
[mbykowsx@GNR-JF04-5350 build_imx93evk]$ find ../sources/ -name "*imx-m33-demos*"
../sources/meta-freescale/recipes-fsl/mcore-demos/imx-m33-demos_2.16.000.bb
../sources/meta-imx/meta-imx-bsp/recipes-fsl/mcore-demos/imx-m33-demos_2.16.000.bb

Basically what this recipe does to M33 Firmware/Image is takes the Image binary from SRC_URI="https://www.nxp.com/lgfiles/NMG/MAD/YOCTO//imx93-m33-demo-2.16.000.bin;fsl-eula=true;name=imx93"

This doc https://www.nxp.com/docs/en/release-note/IMX_LINUX_RELEASE_NOTES.pdf on page 6 described what mcore demos are available and how to integrate them.

MCUXpresso Software Development Kit

One proposal for building a Cortex-M33 image is to use MCUCpresso SDK https://community.nxp.com/t5/Other-NXP-Products/Arm-Cortex-M33-controller-on-the-i-MX93/td-p/1927477?attachment-id=180865

Start off with MCUXpresso SDK Builder -> https://mcuxpresso.nxp.com/en
  -> then go to Software and Tools
    -> choose from IDE, extention for VS Code

https://github.com/nxp-mcuxpresso/mcuxsdk-manifests
Dependency installation https://github.com/nxp-mcuxpresso/vscode-for-mcux/wiki/Dependency-Installation

MCUXpresso SDK + VS Code https://www.nxp.com/design/design-center/training/TIP-GETTING-STARTED-WITH-MCUXPRESSO-FOR-VS-CODE

Once MCUXpresso installed in VS Code import the manifest repository https://github.com/nxp-mcuxpresso/mcuxsdk-manifests

image

Build for hello world in mcore M33

image

NXP repositories

https://github.com/nxp-imx

Take-out for Cortex-M33 in i.XM system

Yocto enables building and integration for all the SW for i.mx from source but mcore is taken as a binary, that is the mcore image is built outside.