Flashing Guide#
This guide covers advanced flashing methods for NXP i.MX development boards, including uuu flashing to SD card and eMMC and dd method.
Prerequisites
Before proceeding with this guide, ensure that you have:
Completed the basic getting started guide for your board.
Downloaded the pre-built images or built custom images
Installed uuu tool (see Install uuu Flash Tool)
Board-specific information#
Boot switch configuration#
Each board has different boot switch configurations. Refer to the table below for your specific board.
FRDM-IMX8MPLUS#
Boot Switch: SW5[1-4]
Boot Mode |
SW5-1 |
SW5-2 |
SW5-3 |
SW5-4 |
|---|---|---|---|---|
USB Serial Download (SDP) |
0 |
0 |
0 |
1 |
eMMC Boot |
0 |
0 |
1 |
0 |
SD Card Boot |
0 |
0 |
1 |
1 |
i.MX 8M Plus EVK#
Boot Switch: SW4[1-4]
Boot Mode |
SW4-1 |
SW4-2 |
SW4-3 |
SW4-4 |
|---|---|---|---|---|
USB Serial Download (SDP) |
0 |
0 |
0 |
1 |
eMMC Boot |
0 |
0 |
1 |
0 |
SD card Boot |
0 |
0 |
1 |
1 |
i. MX 95 EVK (19x19, 15x15)#
Boot Switch: SW7[1-4]
Boot Mode |
SW7-1 |
SW7-2 |
SW7-3 |
SW7-4 |
|---|---|---|---|---|
USB Serial Download (SDP) |
0 |
0 |
0 |
1 |
eMMC Boot |
0 |
0 |
1 |
0 |
SD Card Boot |
0 |
0 |
1 |
1 |
Note: 0 = OFF, 1 = ON
Image files#
You can obtain the required image files in two ways:
Download pre-built images (Recommended for quick start) Downloand Pre-built Images
Build custom images from source (For advanced customization) Building Guide
Method 1: Flash using uuu (Recommended)#
uuu (Universal Update Utility) is the recommended method for flashing images. It works over USB and supports both SD card and eMMC.
đź’ˇ Install uuu First
If you haven’t installed uuu yet, please see Install uuu
Prerequisites#
Connect Debug UART to your host computer.
Connect USB OTG to your host computer.
Power off the board.
Set boot switches to SDP mode (see board-specific table above).
Insert SD card (for SD card flashing) or ensure eMMC is available.
Power on the board.
Flash to SD Card#
This method flashes the image to an SD card using uuu.
FRDM-IMX8MPLUS#
Linux:
sudo uuu -b sd_all imx-boot-imx8mp-lpddr4-frdm-sd.bin-flash_evk robotics-edge-image-full-jazzy-imx8mpevk.rootfs.wic.zst
Windows:
uuu.exe -b sd_all imx-boot-imx8mp-lpddr4-frdm-sd.bin-flash_evk robotics-edge-image-full-jazzy-imx8mpevk.rootfs.wic.zst
i.MX 8M Plus EVK#
Linux:
sudo uuu -b sd_all imx-boot-imx8mp-lpddr4-evk-sd.bin-flash_evk robotics-edge-image-full-jazzy-imx8mpevk.rootfs.wic.zst
Windows:
uuu.exe -b sd_all imx-boot-imx8mp-lpddr4-evk-sd.bin-flash_evk robotics-edge-image-full-jazzy-imx8mpevk.rootfs.wic.zst
i.MX 95 19x19 EVK#
Linux:
sudo uuu -b sd_all imx-boot-imx95-19x19-lpddr5-evk-sd.bin-flash_a55 robotics-edge-image-full-jazzy-imx95evk.rootfs.wic.zst
Windows:
uuu.exe -b sd_all imx-boot-imx95-19x19-lpddr5-evk-sd.bin-flash_a55 robotics-edge-image-full-jazzy-imx95evk.rootfs.wic.zst
i.MX 95 15x15 EVK#
Linux:
sudo uuu -b sd_all imx-boot-imx95-15x15-lpddr4x-evk-sd.bin-flash_a55 robotics-edge-image-full-jazzy-imx95evk.rootfs.wic.zst
Windows:
uuu.exe -b sd_all imx-boot-imx95-15x15-lpddr4x-evk-sd.bin-flash_a55 robotics-edge-image-full-jazzy-imx95evk.rootfs.wic.zst
After flashing:
Power off the board.
Set to SD card boot.
Power on the board.
What happens during flashing:
uuu waits for USB device connection.
Power on the board (in SDP mode).
uuu automatically detects the board.
The bootloader is flashed to the SD card.
The root filesystem is written to the SD card.
The progress is displayed.
A “Success” message appears when the process is complete.
Flash to eMMC#
Flashing to eMMC provides better performance and is recommended for production deployments.
FRDM-IMX8MPLUS#
Linux:
sudo uuu -b emmc_all imx-boot-imx8mp-lpddr4-frdm-sd.bin-flash_evk robotics-edge-image-full-jazzy-imx8mp-lpddr4-frdm.rootfs.wic.zst
Windows:
uuu.exe -b emmc_all imx-boot-imx8mp-lpddr4-frdm-sd.bin-flash_evk robotics-edge-image-full-jazzy-imx8mp-lpddr4-frdm.rootfs.wic.zst
i.MX 8M Plus EVK#
Linux:
sudo uuu -b emmc_all imx-boot-imx8mp-lpddr4-evk-sd.bin-flash_evk robotics-edge-image-full-jazzy-imx8mpevk.rootfs.wic.zst
Windows:
uuu.exe -b emmc_all imx-boot-imx8mp-lpddr4-evk-sd.bin-flash_evk robotics-edge-image-full-jazzy-imx8mpevk.rootfs.wic.zst
I.MX 95 19x19 EVK#
Linux:
sudo uuu -b emmc_all imx-boot-imx95-19x19-lpddr5-evk-sd.bin-flash_a55 robotics-edge-image-full-jazzy-imx95evk.rootfs.wic.zst
Windows:
uuu.exe -b emmc_all imx-boot-imx95-19x19-lpddr5-evk-sd.bin-flash_a55 robotics-edge-image-full-jazzy-imx95evk.rootfs.wic.zst
i.MX 95 15x15 EVK#
Linux:
sudo uuu -b emmc_all imx-boot-imx95-15x15-lpddr4x-evk-sd.bin-flash_a55 robotics-edge-image-full-jazzy-imx95evk.rootfs.wic.zst
Windows:
uuu.exe -b emmc_all imx-boot-imx95-15x15-lpddr4x-evk-sd.bin-flash_a55 robotics-edge-image-full-jazzy-imx95evk.rootfs.wic.zst
After flashing:
Power off the board.
Set boot switches to eMMC boot mode (see board-specific table).
Power on the board.
Method 2: Flash Using dd (Linux Only)#
The dd method provides manual control over the flashing process. This method doesn’t require the board to be in SDP mode.
Note: When to Use dd
Use the dd method when:
You prefer manual control over the process
uuu is not available or not working.
You want to understand the low-level flashing process.
You need to create custom partitions.
Step 1: Extract the compressed image#
i.MX 8M Plus series
zstd -d robotics-edge-image-full-jazzy-imx8mpevk.rootfs.wic.zst
i.MX 95 series
zstd -d robotics-edge-image-full-jazzy-imx95evk.rootfs.wic.zst
Step 2: Identify the SD card device#
lsblk
Look for your SD card. Common device names:
/dev/sdb- USB SD card reader/dev/mmcblk0- Built-in SD card reader
Example output:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
└─sda2 8:2 0 238G 0 part /
sdb 8:16 1 14.9G 0 disk
└─sdb1 8:17 1 14.9G 0 part /media/user/SD_CARD
⚠️ Warning
Double-check the device name!
Using the wrong device (for example,
/dev/sda) will overwrite your system disk and make your computer unbootable.Tips to identify the correct device:
Run
lsblkbefore inserting the SD card.Insert the SD card.
Run
lsblkagain and look for the new device.Check the size matches your SD card.
Step 3: Unmount SD card#
sudo umount /dev/sdX*
Replace /dev/sdX with your actual SD card device (e.g., /dev/sdb).
Step 4: Write Root Filesystem for the platform#
i.MX 8M Plus series
sudo dd if=robotics-edge-image-full-jazzy-imx8mpevk.rootfs.wic of=/dev/sdX bs=4M conv=fsync status=progress
i.MX 95 series
sudo dd if=robotics-edge-image-full-jazzy-imx95evk.rootfs.wic of=/dev/sdX bs=4M conv=fsync status=progress
Parameters explained:
if=- Input file (source image)of=- Output file (destination device)bs=4M- Block size (4MB for faster writing)conv=fsync- Ensure data is physically written to diskstatus=progress- Show progress during writing
Step 5: Writing the bootloader for a specific board#
The bootloader must be written at a specific offset for each board.
FRDM-IMX8MPLUS:
sudo dd if=imx-boot-imx8mp-lpddr4-frdm-sd.bin-flash_evk of=/dev/sdX bs=1k seek=32 conv=fsync status=progress
i.MX 8M Plus EVK:
sudo dd if=imx-boot-imx8mp-lpddr4-evk-sd.bin-flash_evk of=/dev/sdX bs=1k seek=32 conv=fsync status=progress
IMX 95 19x19 EVK:
sudo dd if=imx-boot-imx95-19x19-lpddr5-evk-sd.bin-flash_a55 of=/dev/sdX bs=1k seek=32 conv=fsync status=progress
IMX 95 15x15 EVK:
sudo dd if=imx-boot-imx95-19x19-lpddr5-evk-sd.bin-flash_a55 of=/dev/sdX bs=1k seek=32 conv=fsync status=progress
Step 6: Sync and eject#
sync
sudo eject /dev/sdX
Step 7: Boot the board#
Insert the SD card into the board
Set boot switches to SD card boot mode (see board-specific table)
Power on the board.