NXP i.MXRT10XX: Building and Installing Linux uImage on the NXP i.MX RT10XX EVK Board

NXP i.MXRT10XX: Building and Installing Linux uImage on the NXP i.MX RT10XX EVK Board

This note explains how to install a bootable Linux image to the SD Card of the NXP i.MX RT10XX EVK board. Having installed a Linux image to the SD Card, you would be able to boot Linux on the target automatically on any power up or reset cycle.

Instructions of how to build the sample Linux image (rootfs.uImage) from the Emcraft software distribution is described in Building Linux .

To install the sample Linux image (rootfs.uImage) from the Emcraft software distribution just follow the instructions:

  1. Make sure that SD Card is formatted.

  2. Remove SD Card from the NXP i.MX RT10XX EVK board, and plug it into PC.

  3. Find out a /dev/sdX device the system has assigned to your SD Card:

    $ dmesg | tail sd 1:0:0:0: [sdb] 31116288 512-byte logical blocks: (15.9GB/14.8 GiB) sd 1:0:0:0: [sdb] Cache data unavailable sd 1:0:0:0: [sdb] Assuming drive cache: write through sd 1:0:0:0: [sdb] Cache data unavailable sd 1:0:0:0: [sdb] Assuming drive cache: write through sdb: sdb1
  4. Mount the first partition of the SD Card, and copy rootfs.uImage file:

    $ sudo mount /dev/sdb1 /mnt $ cp rootfs.uImage /mnt
  5. Umount, and safely remove the SD Card:

    $ sudo umount /mnt $ sync
  6. Insert the SD Card back to the SD Card holder on the NXP i.MX RT10XX EVK board. Power on the EVK board. Connect to the serial console, and make sure that Linux boot up to console:

    U-Boot SPL 2025.04 (Dec 05 2025 - 05:11:04 +0000) Trying to boot from MMC1 U-Boot 2025.04 (Dec 05 2025 - 05:11:04 +0000) DRAM: 32 MiB Core: 79 devices, 18 uclasses, devicetree: separate MMC: FSL_SDHC: 0 Loading Environment from MMC... Reading from MMC(0)... OK In: serial@40184000 Out: serial Err: serial Net: eth0: ethernet@402d8000 Hit any key to stop autoboot: 0 8823579 bytes read in 4860 ms (1.7 MiB/s) ## Booting kernel from Legacy Image at 80007fc0 ... Image Name: Linux-6.12.20 Image Type: ARM Linux Multi-File Image (uncompressed) Data Size: 8823515 Bytes = 8.4 MiB Load Address: 80008000 Entry Point: 80008001 Contents: Image 0: 8811684 Bytes = 8.4 MiB Image 1: 11819 Bytes = 11.5 KiB Verifying Checksum ... OK ## Flattened Device Tree from multi component Image at 80007FC0 Booting using the fdt at 0x8086f4b0 Working FDT set to 8086f4b0 Loading Multi-File Image to 80008000 Loading Device Tree to 81c71000, end 81c76e2a ... OK Working FDT set to 81c71000 Starting kernel ... Booting Linux on physical CPU 0x0 Linux version 6.12.20 (sasha@workbench.emcraft.com) (arm-none-eabi-gcc (GNU Arm Embedded Toolchain 10.3-2021.10) 10.3.1 20210824 (release), GNU ld (GNU Arm Embedded Toolchain 10.3-2021.10) 2.36.1.20210621) #2 PREEMPT Fri Dec 5 05:05:12 UTC 2025 ... Run /init as init process [51] Jan 01 00:52:31 Running in background / # Micrel KSZ8081 or KSZ8091 402d8000.ethernet-1:02: attached PHY driver (mii_bus:phy_addr=402d8000.ethernet-1:02, irq=POLL) fec 402d8000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off random: crng init done / # ls bin hello.ko lib proc sbin usr dev httpd linuxrc root sys var etc init mnt run tmp / #