mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-24 03:53:31 +00:00
db869a2785
There was a conflict between the following two commits, that wasn't resolved correctly. Fix this.a93985ddfc
("doc: sl-mx8mm: Update the NXP TF-A source reference")f0f461287e
("imx: Suggest the NXP ATF github repo") Signed-off-by: Frieder Schrempf <frieder.schrempf@kontron.de> Cc: Heinrich Schuchardt <heinrich.schuchardt@canonical.com> Cc: Fabio Estevam <festevam@denx.de> Cc: Stefano Babic <sbabic@denx.de> Reviewed-by: Fabio Estevam <festevam@denx.de>
135 lines
3.8 KiB
ReStructuredText
135 lines
3.8 KiB
ReStructuredText
.. SPDX-License-Identifier: GPL-2.0+
|
|
|
|
Kontron Electronics i.MX8MM SoMs and Boards
|
|
===========================================
|
|
|
|
The SL i.MX8MM and OSM-S i.MX8MM by Kontron Electronics GmbH are SoM modules
|
|
with an i.MX8M-Mini SoC, 1/2/4 GB LPDDR4 RAM, SPI NOR, eMMC and PMIC.
|
|
|
|
The matching evaluation boards (Board-Line, BL) have two Ethernet ports,
|
|
USB 2.0, HDMI/LVDS, SD card, CAN, RS485, RS232 and much more.
|
|
|
|
The OSM-S i.MX8MM is compliant to the Open Standard Module (OSM) 1.1
|
|
specification, size S (https://sget.org/standards/osm).
|
|
|
|
Quick Start
|
|
-----------
|
|
|
|
- Get and Build the Trusted Firmware-A (TF-A)
|
|
- Get the DDR firmware
|
|
- Build U-Boot
|
|
- Boot
|
|
|
|
.. note::
|
|
|
|
To build on a x86-64 host machine, you need a GNU cross toolchain for the
|
|
target architecture (aarch64). Check your distros package manager or
|
|
download and install the necessary tools (``aarch64-linux-gnu-*``) manually.
|
|
|
|
Get and Build the Trusted Firmware-A (TF-A)
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
There are two sources for the TF-A. Mainline and NXP. Get the one you prefer
|
|
(support and features might differ).
|
|
|
|
.. note::
|
|
|
|
If you are using GCC 12 and you get compiler/linker errors, try to add the
|
|
following arguments to your make command as workaround:
|
|
``CFLAGS="-Wno-array-bounds" LDFLAGS="--no-warn-rwx-segments"``
|
|
|
|
**NXP's imx-atf**
|
|
|
|
1. Get TF-A from: https://github.com/nxp-imx/imx-atf, branch: lf_v2.6
|
|
2. Build
|
|
|
|
.. code-block:: bash
|
|
|
|
$ make PLAT=imx8mm CROSS_COMPILE=aarch64-linux-gnu- IMX_BOOT_UART_BASE="0x30880000" bl31
|
|
$ cp build/imx8mm/release/bl31.bin $(builddir)
|
|
|
|
.. note::
|
|
|
|
*builddir* is U-Boot's build directory (source directory for in-tree builds)
|
|
|
|
**Mainline TF-A**
|
|
|
|
1. Get TF-A from: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/, tag: v2.4
|
|
2. Build
|
|
|
|
.. code-block:: bash
|
|
|
|
$ make PLAT=imx8mm CROSS_COMPILE=aarch64-linux-gnu- IMX_BOOT_UART_BASE="0x30880000" bl31
|
|
$ cp build/imx8mm/release/bl31.bin $(builddir)
|
|
|
|
Get the DDR firmware
|
|
^^^^^^^^^^^^^^^^^^^^
|
|
|
|
.. code-block:: bash
|
|
|
|
$ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.18.bin
|
|
$ chmod +x firmware-imx-8.18.bin
|
|
$ ./firmware-imx-8.18.bin
|
|
$ cp firmware-imx-8.18/firmware/ddr/synopsys/lpddr4_pmu_train_1d_imem.bin $(builddir)
|
|
$ cp firmware-imx-8.18/firmware/ddr/synopsys/lpddr4_pmu_train_1d_dmem.bin $(builddir)
|
|
$ cp firmware-imx-8.18/firmware/ddr/synopsys/lpddr4_pmu_train_2d_imem.bin $(builddir)
|
|
$ cp firmware-imx-8.18/firmware/ddr/synopsys/lpddr4_pmu_train_2d_dmem.bin $(builddir)
|
|
|
|
Build U-Boot
|
|
^^^^^^^^^^^^
|
|
|
|
.. code-block:: bash
|
|
|
|
$ make kontron-sl-mx8mm_defconfig
|
|
$ make CROSS_COMPILE=aarch64-linux-gnu-
|
|
|
|
Copy the flash.bin to SD card at an offset of 33 KiB:
|
|
|
|
.. code-block:: bash
|
|
|
|
$ dd if=flash.bin of=/dev/sd[x] bs=1K seek=33 conv=notrunc
|
|
|
|
Boot
|
|
^^^^
|
|
|
|
Put the SD card in the slot on the board and apply power. Check the serial
|
|
console for output.
|
|
|
|
Flash the Bootloader to SPI NOR
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
1. Determine and note the exact size of the ``flash.bin`` image in bytes (e.g.
|
|
by running ``ls -l flash.bin``)
|
|
|
|
2. On the U-Boot CLI copy the bootloader from SD card to RAM:
|
|
|
|
.. code-block::
|
|
|
|
mmc dev 1
|
|
mmc read $loadaddr 0x42 0x1000
|
|
|
|
3. Erase the SPI NOR flash:
|
|
|
|
.. code-block::
|
|
|
|
sf probe
|
|
sf erase 0x0 0x200000
|
|
|
|
4. Copy the bootloader from RAM to SPI NOR. For the last parameter of the
|
|
command, use the size determined in step 1 in **hexadecimal notation**:
|
|
|
|
.. code-block::
|
|
|
|
sf write $loadaddr 0x400 0x13B6F0
|
|
|
|
.. note::
|
|
|
|
To be able to boot from SPI NOR the OTP fuses need to be set accordingly.
|
|
|
|
Further Information
|
|
-------------------
|
|
|
|
The bootloader configuration is setup to be used with kernel FIT images. Legacy
|
|
images might not be working out of the box.
|
|
|
|
Please see https://docs.kontron-electronics.de for further vendor documentation.
|