Flash a Yocto Image to Toradex Verdin i.MX95 (eMMC or SD Card)
This guide explains how to flash a Yocto-built image onto the Toradex Verdin i.MX95. Use the Toradex Easy Installer (TEZI) `.tar` artifact to install an image to eMMC; use the compressed `.wic.gz` artifact to write a bootable image to an SD card. The commands and example output below are the RidgeRun engineer-tested procedure; they target the Verdin i.MX95 and must not be assumed to apply to the NXP i.MX95 EVK or other modules.
Choose the right image for the storage device
After a successful build, the deployment files are in:
build/deploy/images/verdin-imx95/
This is the output directory from the preceding Yocto image build guide. Use the artifact that matches the storage you intend to boot or install:
| Target | Build artifact | Use |
|---|---|---|
| eMMC | `Verdin-iMX95_Reference-Minimal-Image-Tezi_<version>.tar` or `Verdin-iMX95_Reference-Minimal-Image-Tezi.tar` | This is the preferred method. Install with Toradex Easy Installer. See Offline installation of a pre-built image using GUI. |
| SD card | `Verdin-iMX95_Reference-Minimal-Image.wic.gz` and `Verdin-iMX95_Reference-Minimal-Image.wic.bmap` | Write the Wic disk image to removable storage. This is the alternative method. |
The names shown are for the minimal reference image; the exact generated names depend on the image recipe and BSP release. Check the actual files in `build/deploy/images/verdin-imx95/` before flashing. The artifact list above reproduces the names in RidgeRun's tested page.
Install the image to eMMC with Toradex Easy Installer
For eMMC installation, use the matching TEZI `.tar` artifact. Toradex Easy Installer is the recommended route described by this guide for installing an operating system image to the module's eMMC. Follow RidgeRun's offline GUI installation instructions for preparing and using the installer media.
Write the Wic image to an SD card
The `.wic.gz` file is a compressed whole-disk image. Writing it to the SD card overwrites the card's existing partition table and data. Verify the whole-device path carefully before running the `dd` command. Do not substitute a partition path such as `/dev/sda1` for the whole device `/dev/sda`.
The paired `.wic.bmap` file is listed with the SD-card artifacts, but the tested RidgeRun command below uses `gunzip` and `dd`; it does not use the bmap file. Do not change the tested procedure without validating the alternative on the target setup.
Identify the SD card
Connect the SD card to the Linux host and identify its device with:
lsblk
The tested example output is:
sdba 8:16 1 58.2G 0 disk ├─sda1 8:17 1 256M 0 part /media/carguedas/boot └─sda2 8:18 1 2G 0 part /media/carguedas/root
The sample device name is not universal. Confirm the SD card by its size and mounted partitions on your host. The commands below use `/dev/sda` because that is the device in the engineer-tested example; replace it only after identifying the correct SD card.
Optional partition-table reset shown in the tested procedure
The following procedure helps ensure that the SD-card structure has the expected layout. It erases the selected device's existing partition table and data.
1. Unmount the existing partitions:
sudo umount /dev/sda1 sudo umount /dev/sda2
2. Recreate the partition table:
sudo fdisk /dev/sda
3. Enter the following sequence in `fdisk`:
Welcome to fdisk (util-linux 2.39.3).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): o
Created a new DOS (MBR) disklabel with disk identifier 0x51cde645.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-124669951, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-124669951, default 124669951):
Created a new partition 1 of type 'Linux' and of size 59.4 GiB.
Command (m for help): t
Selected partition 1
Hex code or alias (type L to list all): c
Changed type of partition 'Linux' to 'W95 FAT32 (LBA)'.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
4. The original procedure optionally creates a FAT32 filesystem if needed:
sudo mkfs.vfat -F 32 -n TEZI /dev/sda1
The `TEZI` label in this command does not make the Wic image a Toradex Easy Installer image. The artifact format and installation workflow are determined by the image file selected.
Write the compressed image
Once the correct whole-device path is identified, write the SD-card image using the tested command:
gunzip -c Reference-Minimal-Image-verdin-imx95.rootfs.wic.gz | sudo dd of=/dev/sda bs=4M conv=fsync status=progress
This command decompresses the image to standard output and writes it to `/dev/sda`.
The tested example output is:
467894272 bytes (468 MB, 446 MiB) copied, 2 s, 234 MB/s 685395968 bytes (685 MB, 654 MiB) copied, 2.69174 s, 255 MB/s 0+20908 records in 0+20908 records out 685395968 bytes (685 MB, 654 MiB) copied, 48.5262 s, 14.1 MB/s
The transfer-rate lines are sample output, not a performance guarantee. The final reported rate depends on the host, card, reader, and image size; the original page does not record these test conditions.
When the write completes, safely eject the SD card, insert it into the Verdin Development Board, and power on the system. For instructions to access the running system, continue to Getting into the Board.
Check the boot order in U-Boot
If the board does not boot from the SD card, inspect the U-Boot `boot_targets` environment variable. Interrupt autoboot when this message appears:
Hit any key to stop autoboot
At the U-Boot prompt, run:
printenv boot_targets
The original example output is:
boot_targets=mmc1 mmc0 usb0 dhcp
In this example, `mmc1` is the SD card and `mmc0` is eMMC. The listed order places the SD card before eMMC. Confirm the device mapping and boot behavior on the actual board and bootloader build; the example is not a substitute for confirming the active hardware configuration.
Troubleshooting
| Symptom | Check |
|---|---|
| The expected image is missing | Confirm the selected image recipe and inspect `build/deploy/images/verdin-imx95/` for its actual artifact names. |
| The SD card does not boot | Confirm that the image was written to the SD card's whole-device node, then inspect `boot_targets` in U-Boot and confirm the SD card's `mmc` mapping. |
| The write command reports that the input file cannot be opened | Compare the command's filename with the files actually present in the deploy directory. The filename in the preserved test command differs from the artifact list on this page. |
| The eMMC installation workflow is unclear | Follow the linked TEZI GUI procedure and make sure the selected artifact is the TEZI `.tar`, not the `.wic.gz` file. |
FAQ
- Which Yocto image should I use to flash eMMC on the Verdin i.MX95?
- Use the generated Toradex Easy Installer `.tar` image and follow RidgeRun's offline GUI installation procedure.
- Why does the SD card fail to boot after flashing?
- Check that the image write completed, then inspect `boot_targets` in U-Boot. In the example on this page, `mmc1` is the SD card and should appear before `mmc0` (eMMC) to try SD first.
- Can I use this procedure on the NXP i.MX95 EVK?
- No. The commands here target the Toradex Verdin i.MX95. The EVK uses a different board support package and flashing workflow.
Related pages
- Set up the Yocto environment for Verdin i.MX95
- Build a Yocto image for Verdin i.MX95
- Access the running Verdin i.MX95 system
- Install a pre-built image with the Toradex Easy Installer GUI
References
- Toradex Easy Installer documentation
- Yocto Project documentation: Creating partitioned images using Wic
- Toradex i.MX95 Verdin EVK support scope
For RidgeRun engineering assistance with Yocto BSP integration or image deployment, contact RidgeRun.