Booting an old UDOO Quad with a recent U-Boot version … i.MX6
10 April 2025
UDOO Linux image
- https://www.udoo.org/udoo-quad-dual/
- https://www.udoo.org/docs/Software_OS_Distro/UDOObuntu.html
- Get the Ubuntu minimal image
udoobuntu-udoo-qdl-minimal_2.2.0.zip
at https://www.udoo.org/resources-quad-dual/ : UDOObuntu 2.2.0 Minimal (14.04 LTS) - flash on SDCard, then boot
udooer@udoo:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="14.04.5 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.5 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
- Partition 1 is not flagged as boot partition, not required but since we are here:
udooer@udoo:~$ sudo fdisk /dev/mmcblk0
[sudo] password for udooer:
Command (m for help): p
Disk /dev/mmcblk0: 8068 MB, 8068792320 bytes
4 heads, 16 sectors/track, 246240 cylinders, total 15759360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x816d2024
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 2048 67583 32768 e W95 FAT16 (LBA)
/dev/mmcblk0p2 67584 15759359 7845888 83 Linux
Command (m for help):
Command (m for help): a
Partition number (1-4): 1
Command (m for help): p
Disk /dev/mmcblk0: 8068 MB, 8068792320 bytes
4 heads, 16 sectors/track, 246240 cylinders, total 15759360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x816d2024
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 * 2048 67583 32768 e W95 FAT16 (LBA)
/dev/mmcblk0p2 67584 15759359 7845888 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
U-Boot
Build recent U-Boot: tag: v2025.04
Check requirements, everything is explained in the build doc
git clone git@github.com:u-boot/u-boot.git
git branch -d v2025.04
ARCH=arm CROSS_COMPILE=arm-none-eabi- make distclean
ARCH=arm CROSS_COMPILE=arm-none-eabi- make udoo_defconfig
ARCH=arm CROSS_COMPILE=arm-none-eabi- make
From here:
- Boot into Linux, add the new file as explained below, then flash the new
u-boot
- Otherwise, if you have flashed the new
u-boot
first, boot the old way into Linux to add the file for automatic boots later on.
Recent u-boot
have a default boot process that will detect how to boot.
Just add the following file on the boot partition (/boot/extlinux/extlinux.conf
):
label Linux
kernel /zImage
append root=/dev/mmcblk0p2 rootwait rw console=ttymxc1,115200
Reset, it should boot fine.
Back up original u-boot
if needed later, flash new one
sudo dd if=/dev/sda of=u-boot_backup.imx bs=1K skip=1 count=1024
sudo dd if=u-boot-with-spl.imx of=/dev/sda bs=1K seek=1
Boot the old way from u-boot
prompt
setenv mmcpart 1
setenv image zImage
fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}
bootz ${loadaddr} - ${fdt_addr}
U-Boot SPL 2025.04 (Apr 09 2025 - 11:37:17 +0200)
Trying to boot from MMC1
U-Boot 2025.04 (Apr 09 2025 - 11:37:17 +0200)
CPU: Freescale i.MX6Q rev1.2 at 792 MHz
Reset cause: POR
Model: Udoo i.MX6 Quad Board
Board: Udoo Quad
DRAM: 1 GiB
Core: 45 devices, 13 uclasses, devicetree: separate
MMC: FSL_SDHC: 2
Loading Environment from MMC... Reading from MMC(2)... *** Warning - bad CRC, using default environment
In: serial@21e8000
Out: serial@21e8000
Err: serial@21e8000
Net: eth0: ethernet@2188000
Hit any key to stop autoboot: 0
=> setenv mmcpart 1
=> setenv image zImage
=> fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}
4547288 bytes read in 213 ms (20.4 MiB/s)
=> bootz ${loadaddr} - ${fdt_addr}
Kernel image @ 0x12000000 [ 0x000000 - 0x4562d8 ]
## Flattened Device Tree blob at 18000000
Booting using the fdt blob at 0x18000000
Working FDT set to 18000000
Using Device Tree in place at 18000000, end 1800dfff
Working FDT set to 18000000
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0
...