summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2025-05-04 08:51:43 -0600
committerTom Rini <[email protected]>2025-05-04 08:51:43 -0600
commitdcea465e5e299903b889f5f426eac6d6523cbf84 (patch)
tree9ead94204004efef6be0c1b1942a6d194426db7c /doc
parent0c8a89d252c3db3401ffa572ee2e4dfcb94e2c3b (diff)
parentfbe176c39c896e3dcec356bd3153074d411d487e (diff)
Merge tag 'u-boot-imx-master-20250503' of https://gitlab.denx.de/u-boot/custodians/u-boot-imx
CI: https://source.denx.de/u-boot/custodians/u-boot-imx/-/pipelines/26064 - Add i.MX95 support. - Enable BOOTAUX on the i.MX8M Beacon boards.
Diffstat (limited to 'doc')
-rw-r--r--doc/board/nxp/imx95_evk.rst114
-rw-r--r--doc/board/nxp/index.rst1
-rw-r--r--doc/imx/imx95_container.txt136
3 files changed, 251 insertions, 0 deletions
diff --git a/doc/board/nxp/imx95_evk.rst b/doc/board/nxp/imx95_evk.rst
new file mode 100644
index 00000000000..9121f7561ab
--- /dev/null
+++ b/doc/board/nxp/imx95_evk.rst
@@ -0,0 +1,114 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+imx95_evk
+=======================
+
+U-Boot for the NXP i.MX95 19x19 EVK board
+
+Quick Start
+-----------
+
+- Get ahab-container.img
+- Get DDR PHY Firmware Images
+- Get and Build OEI Images
+- Get and Build System Manager Image
+- Get and Build the ARM Trusted Firmware
+- Build the Bootloader Image
+- Boot
+
+Get ahab-container.img
+--------------------------------------
+
+Note: srctree is U-Boot source directory
+
+.. code-block:: bash
+
+ $ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-ele-imx-1.3.0-17945fc.bin
+ $ sh firmware-ele-imx-1.3.0-17945fc.bin --auto-accept
+ $ cp firmware-ele-imx-1.3.0-17945fc/mx95a0-ahab-container.img $(srctree)
+
+Get DDR PHY Firmware Images
+--------------------------------------
+
+Note: srctree is U-Boot source directory
+
+.. code-block:: bash
+
+ $ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.26-d4c33ab.bin
+ $ sh firmware-imx-8.26-d4c33ab.bin --auto-accept
+ $ cp firmware-imx-8.26-d4c33ab/firmware/ddr/synopsys/lpddr5*v202311.bin $(srctree)
+
+Get and Build OEI Images
+--------------------------------------
+
+Note: srctree is U-Boot source directory
+Get OEI from: https://github.com/nxp-imx/imx-oei
+branch: master
+
+.. code-block:: bash
+
+ $ sudo apt -y install make gcc g++-multilib srecord
+ $ wget https://developer.arm.com/-/media/Files/downloads/gnu/13.3.rel1/binrel/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz
+ $ tar xvf arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz
+ $ export TOOLS=$PWD
+ $ git clone -b master https://github.com/nxp-imx/imx-oei.git
+ $ cd imx-oei
+ $ make board=mx95lp5 oei=ddr DEBUG=1
+ $ cp build/mx95lp5/ddr/oei-m33-ddr.bin $(srctree)
+
+ $ make board=mx95lp5 oei=tcm DEBUG=1
+ $ cp build/mx95lp5/tcm/oei-m33-tcm.bin $(srctree)
+
+Get and Build System Manager Image
+--------------------------------------
+
+Note: srctree is U-Boot source directory
+Get System Manager from: https://github.com/nxp-imx/imx-sm
+branch: master
+
+.. code-block:: bash
+
+ $ sudo apt -y install make gcc g++-multilib srecord
+ $ wget https://developer.arm.com/-/media/Files/downloads/gnu/13.3.rel1/binrel/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz
+ $ tar xvf arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz
+ $ export TOOLS=$PWD
+ $ git clone -b master https://github.com/nxp-imx/imx-sm.git
+ $ cd imx-sm
+ $ make config=mx95evk all
+ $ cp build/mx95evk/m33_image.bin $(srctree)
+
+Get and Build the ARM Trusted Firmware
+--------------------------------------
+
+Note: srctree is U-Boot source directory
+Get ATF from: https://github.com/nxp-imx/imx-atf/
+branch: lf_v2.10
+
+.. code-block:: bash
+
+ $ export CROSS_COMPILE=aarch64-poky-linux-
+ $ unset LDFLAGS
+ $ git clone -b lf_v2.10 https://github.com/nxp-imx/imx-atf.git
+ $ cd imx-atf
+ $ make PLAT=imx95 bl31
+ $ cp build/imx95/release/bl31.bin $(srctree)
+
+Build the Bootloader Image
+--------------------------
+
+.. code-block:: bash
+
+ $ export CROSS_COMPILE=aarch64-poky-linux-
+ $ make imx95_19x19_evk_defconfig
+ $ make
+
+Copy imx-boot-imx95.bin to the MicroSD card:
+
+.. code-block:: bash
+
+ $ sudo dd if=flash.bin of=/dev/sd[x] bs=1k seek=32 conv=fsync
+
+Boot
+----
+
+Set i.MX95 boot device to MicroSD card
diff --git a/doc/board/nxp/index.rst b/doc/board/nxp/index.rst
index 8ca4b561986..e7ec725cc04 100644
--- a/doc/board/nxp/index.rst
+++ b/doc/board/nxp/index.rst
@@ -15,6 +15,7 @@ NXP Semiconductors
imx91_11x11_evk
imx93_9x9_qsb
imx93_11x11_evk
+ imx95_evk
imxrt1020-evk
imxrt1050-evk
imxrt1170-evk
diff --git a/doc/imx/imx95_container.txt b/doc/imx/imx95_container.txt
new file mode 100644
index 00000000000..05f223d962a
--- /dev/null
+++ b/doc/imx/imx95_container.txt
@@ -0,0 +1,136 @@
+i.MX95 Image Container Format
+-----------------------------
+
+The image container set consists of some image containers, and image container
+contains boot images. Each image container has its own container header which is
+defined in Figure 1. All container headers are placed together in a continuous
+8KB space at the beginning of the image container set - image container set header.
+
+ROM code addresses image containers in image container set one by one based on
+their headers’ order in image container set header.
+
+If ELE container exists, its container header must be the 1st one in the image
+container set header.
+
+If V2X container exists, its container header must be the 2nd one in the image
+container set header. V2X must be combined with ELE container.
+
+The information of boot images are recorded in image container header. System
+ROM code needs to retrieve the information from the image container header, like
+the offset on boot source, the target address in RAM, the length of boot image.
+The order of ROM code handling these boot images is based on the order of each
+boot image information present in image container header.
+
+Figure 1:
+------------------- +--------------+--------------+--------------+--------------+
+ ^ |Tag |Length |Length |Version |
+ | +--------------+--------------+--------------+--------------+
+ | | Flags |
+ | +--------------+--------------+--------------+--------------+
+ | |# of Images |Fuse version |SW version |
+Image | +--------------+--------------+--------------+--------------+
+Container | |Reserved |Signature Block Offset |
+Header | ------- +--------------+--------------+--------------+--------------+
+ | ^ |Image0: Offset, Size, LoadAddr, EntryPoint, Flags, Hash, IV|
+ | | +--------------+--------------+--------------+--------------+
+ | Image | |Image1: Offset, Size, LoadAddr, EntryPoint, Flags, Hash, IV|
+ | Array | +--------------+--------------+--------------+--------------+
+ | | | ... |
+ | | +--------------+--------------+--------------+--------------+
+ v v |ImageN: Offset, Size, LoadAddr, EntryPoint, Flags, Hash, IV|
+------------------- +--------------+--------------+--------------+--------------+
+ | ... |
+ ----------- +--------------+--------------+--------------+--------------+ <-- SignOffset
+ ^ |Tag |Length |Length |Version |
+ | +--------------+--------------+--------------+--------------+
+ | |SRK table offset |Certificate Offset |
+ | +--------------+--------------+--------------+--------------+
+ | |Blob Offset |Signature Offset |
+ | +--------------+--------------+--------------+--------------+
+ Signature | | SRK Table |
+ Block | +--------------+--------------+--------------+--------------+
+ | | Signature |
+ | +--------------+--------------+--------------+--------------+
+ | | Certificate (optional) |
+ | +--------------+--------------+--------------+--------------+
+ v | Blob (optional) |
+ ----------- +--------------+--------------+--------------+--------------+
+ | ... |
+ +--------------+--------------+--------------+--------------+ <-- Image0Offset
+ | Image0 |
+ +--------------+--------------+--------------+--------------+
+ | ... |
+ +--------------+--------------+--------------+--------------+ <-- ImageNOffset
+ | ImageN |
+ +--------------+--------------+--------------+--------------+
+ | ... |
+ +--------------+--------------+--------------+--------------+
+
+i.MX95 Low Power Boot Image Sets Layout
+---------------------------------------
+
+ Image container sets are handled by M33 ROM.
+
+ --------------- +--------------+--------------+--------------+--------------+
+ ^ | 1st Container Header |
+ | +--------------+--------------+--------------+--------------+
+ ELE + | | Padding for 1KB alignment |
+ OEM | +--------------+--------------+--------------+--------------+
+ Container | | 2nd Container Header |
+ Set | +--------------+--------------+--------------+--------------+
+ Header | | Padding for 1KB alignment |
+ | +--------------+--------------+--------------+--------------+
+ | | 3rd Container Header |
+ | +--------------+--------------+--------------+--------------+
+ v | Padding for 1KB alignment |
+ --------------- +--------------+--------------+--------------+--------------+
+ | ... |
+ +--------------+--------------+--------------+--------------+
+ | mx95a0-ahab-container.img |
+ +--------------+--------------+--------------+--------------+
+ | ... |
+------------------- +--------------+--------------+--------------+--------------+
+ ^ | oei-m33-ddr.bin |
+ | +--------------+--------------+--------------+--------------+
+ | | ddrfw-header.bin |
+ | +--------------+--------------+--------------+--------------+
+ | | lpddr5_imem_v202311.bin |
+ | +--------------+--------------+--------------+--------------+
+m33-oei-ddrfw.bin | | lpddr5_dmem_v202311.bin |
+ | +--------------+--------------+--------------+--------------+
+ | | ddrfw-qb-header.bin |
+ | +--------------+--------------+--------------+--------------+
+ | | lpddr5_imem_qb_v202311.bin |
+ | +--------------+--------------+--------------+--------------+
+ v | lpddr5_dmem_qb_v202311.bin |
+------------------- +--------------+--------------+--------------+--------------+
+ | ... |
+ +--------------+--------------+--------------+--------------+
+ | oei-m33-tcm.bin |
+ +--------------+--------------+--------------+--------------+
+ | ... |
+ +--------------+--------------+--------------+--------------+
+ | m33_image.bin |
+ +--------------+--------------+--------------+--------------+
+ | ... |
+ +--------------+--------------+--------------+--------------+
+ | u-boot-spl.bin |
+ +--------------+--------------+--------------+--------------+
+ | ... |
+ +--------------+--------------+--------------+--------------+
+
+ --------------- +--------------+--------------+--------------+--------------+
+ u-boot-atf ^ | 1st Container Header |
+ Container | +--------------+--------------+--------------+--------------+
+ Header v | Padding for 1KB alignment |
+ --------------- +--------------+--------------+--------------+--------------+
+ | ... |
+ +--------------+--------------+--------------+--------------+
+ | bl31.bin |
+ +--------------+--------------+--------------+--------------+
+ | ... |
+ +--------------+--------------+--------------+--------------+
+ | u-boot.bin |
+ +--------------+--------------+--------------+--------------+
+ | ... |
+ +--------------+--------------+--------------+--------------+