Wiki Home » imx6 tinyrex » uboot

uboot

Last modified by Administrator on 2017/07/28 14:55
U-boot is a bootloader responsible for hardware initialization, loading and booting linux kernel. It is also used for module flashing.

Build

Set toolchain

Export toolchain variables for every related terminal session.

Initial steps

Create working directory

mkdir -pv ~/workdir/imx6/bootloader/

Set shell variables

U-Boot v2015.04

Download & Extract source code

cd ~/workdir/imx6/bootloader/
git clone -b uboot-imx-v2015.04 --single-branch https://github.com/voipac/uboot-imx uboot-imx-v2015.04-rex
cd uboot-imx-v2015.04-rex

Compile

Output file is called u-boot.imx.

IMX6 Lite module (Production)

SD3

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexlite_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexlite.imx
SPI1

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexliterecovery_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexliterecovery.imx

IMX6 Basic module (Production)

SD3

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexbasic_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexbasic.imx
SPI1

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexbasicrecovery_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexbasicrecovery.imx

IMX6 Pro module (Production)

SD3

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexpro_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexpro.imx

Android 7.x

cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexproandroid_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexproandroid.imx
SPI1

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexprorecovery_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexprorecovery.imx
SATA
cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexprosata_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexprosata.imx

IMX6 Max module (Production)

SD3

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexmax_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexmax.imx

Android 7.x

cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexmaxandroid_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexmaxandroid.imx
SPI1

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexmaxrecovery_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexmaxrecovery.imx
SATA
cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexmaxsata_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexmaxsata.imx

IMX6 Max 4G module (Custom)

SD3

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexmax4g_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexmax4g.imx

Android 7.x

cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexmax4gandroid_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexmax4gandroid.imx
SPI1

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexmax4grecovery_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexmax4grecovery.imx
SATA
cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexmax4gsata_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexmax4gsata.imx

IMX6 Ultra module (Production)

SD3

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexultra_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexultra.imx

Android 7.x

cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexultraandroid_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexultraandroid.imx
SPI1

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexultrarecovery_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexultrarecovery.imx
SATA
cd ~/workdir/imx6/bootloader/uboot-imx-v2015.04-rex
make distclean
make mx6tinyrexultrasata_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexultrasata.imx

How to Flash new version

SD3 (Normal image)

sudo dd if=u-boot-imx6-tinyrex*.imx of=/dev/sdc bs=1k seek=1 skip=0 oflag=dsync

SPI1 (Recovery image)

setenv ipaddr 192.168.0.150
setenv serverip 192.168.0.1
mw.b 0x10800000 0xFF 0x80000
tftp 0x10800000 imx6/u-boot-imx6-tinyrex*recovery.imx
if sf probe 0:0; then sf erase 0x0 0x80000;sf write 0x10800000 0x400 0x7fc00; fi

SATA

setenv ipaddr 192.168.0.150
setenv serverip 192.168.0.1
mw.b 0x10800000 0xFF 0x80000
tftp 0x10800000 imx6/u-boot-imx6-tinyrex*sata.imx
if sata init; then sata write 0x10800000 0x2 0x3ff; fi

Log

USB

U-Boot 2015.04-g9de6034-dirty (Jan 08 2017 - 18:27:05)

CPU:   Freescale i.MX6D rev1.2 at 792 MHz
CPU:   Temperature 32 C
Reset cause: POR
Board: MX6 TinyRex - pro
I2C:   ready
DRAM:  1 GiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
Card did not respond to voltage select!
MMC init failed
Using default environment

In:    serial
Out:   serial
Err:   serial
Net:   FEC [PRIME]
Boot from USB for mfgtools
Use default environment for                              mfgtools
Run bootcmd_mfg: <NULL>
TinyRex U-Boot > setenv ipaddr 192.168.1.150
TinyRex U-Boot > setenv serverip 192.168.1.1
TinyRex U-Boot > mw.b 0x10800000 0xFF 0x80000
TinyRex U-Boot > tftp 0x10800000 imx6/u-boot-imx6-tinyrexprorecovery.imx
Using FEC device
TFTP from server 192.168.1.1; our IP address is 192.168.1.150
Filename 'imx6/u-boot-imx6-tinyrexprorecovery.imx'.
Load address: 0x10800000
Loading: #######################
        3.5 MiB/s
done
Bytes transferred = 334848 (51c00 hex)
TinyRex U-Boot > sf probe 0:0;sf erase 0x0 0x80000;sf write 0x10800000 0x400 0x7fc00
SF: Detected SST25VF032B with page size 256 Bytes, erase size 4 KiB, total 4 MiB
SF: 524288 bytes @ 0x0 Erased: OK
SF: 523264 bytes @ 0x400 Written: OK
TinyRex U-Boot > 

SATA

U-Boot 2015.04-g8efb1bd-dirty (Jul 28 2017 - 16:36:40)

CPU:   Freescale i.MX6QP rev1.0 at 792 MHz
CPU:   Temperature 36 C
Reset cause: WDOG
Board: MX6 TinyRex - ultra
I2C:   ready
DRAM:  3.8 GiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
SF: Detected SST25VF032B with page size 256 Bytes, erase size 4 KiB, total 4 MiB
In:    serial
Out:   serial
Err:   serial
Net:   FEC [PRIME]
Normal Boot
Hit any key to stop autoboot:  0
TinyRex U-Boot > setenv ipaddr 192.168.0.150
TinyRex U-Boot > setenv serverip 192.168.0.1
TinyRex U-Boot > mw.b 0x10800000 0xFF 0x80000
TinyRex U-Boot > tftp 0x10800000 imx6/u-boot-imx6-tinyrexultrasata.imx
Using FEC device
TFTP from server 192.168.0.1; our IP address is 192.168.0.150
Filename 'imx6/u-boot-imx6-tinyrexultrasata.imx'.
Load address: 0x10800000
Loading: ########################
        9.5 MiB/s
done
Bytes transferred = 337968 (52830 hex)
TinyRex U-Boot > if sata init; then sata write 0x10800000 0x2 0x3ff; fi
AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl SATA mode
flags: ncq stag pm led clo only pmp pio slum part
SATA Device Info:
S/N: E0117219300000000116
Product model number: 8GB SATA Flash Drive
Firmware version: SFDK003A
Capacity: 15649200 sectors

SATA write: device 0 block # 2, count 1023 ... 1023 blocks written: OK
TinyRex U-Boot > 

U-Boot v2014.10

Download & Extract source code

cd ~/workdir/imx6/bootloader/
git clone -b uboot-imx-v2014.10 --single-branch https://github.com/voipac/uboot-imx uboot-imx-v2014.10-rex
cd uboot-imx-v2014.10-rex

Compile

Output file is called u-boot.imx.

IMX6 Lite module (Production)

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2014.10-rex
make distclean
make mx6tinyrexlite_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexlite.imx

IMX6 Basic module (Production)

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2014.10-rex
make distclean
make mx6tinyrexbasic_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexbasic.imx

IMX6 Pro module (Production)

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2014.10-rex
make distclean
make mx6tinyrexpro_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexpro.imx

IMX6 Max module (Production)

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2014.10-rex
make distclean
make mx6tinyrexmax_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexmax.imx

IMX6 Ultra module (Production)

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2014.10-rex
make distclean
make mx6tinyrexultra_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6-tinyrexultra.imx

IMX6 Solo module (Prototype)

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2014.10-rex
make distclean
make mx6stinyrex_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6s-tinyrex.imx

IMX6 DualLite module (Prototype)

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2014.10-rex
make distclean
make mx6dltinyrex_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6dl-tinyrex.imx

IMX6 Quad module (Prototype)

Linux/Yocto

cd ~/workdir/imx6/bootloader/uboot-imx-v2014.10-rex
make distclean
make mx6qtinyrex_config
make
cp -av u-boot.imx /srv/tftp/imx6/u-boot-imx6q-tinyrex.imx

How to Flash new version

SD3 (Normal image)

sudo dd if=u-boot-imx6-tinyrex*.imx of=/dev/sdc bs=1k seek=1 skip=0 oflag=dsync

Log

Configure

Manually erase configuration

env default -f -a
saveenv
reset

Edit boot options

Manually boot from SD3

mw.l 0x020d8040 0x00003040; mw.l 0x020d8044 0x10000000; reset

Manually boot from SPI1 SS0

mw.l 0x020d8040 0x08000030; mw.l 0x020d8044 0x10000000; reset

Manually boot from SD3 + recovery on SPI1 SS0

mw.l 0x020d8040 0x48003040; mw.l 0x020d8044 0x10000000; reset

Manually boot from SATA

mw.l 0x020d8040 0x00001020; mw.l 0x020d8044 0x10000000; reset

Change display resolution

setenv video "video=mxcfb0:dev=hdmi,[email protected],if=RGB24,bpp=32"
saveenv
Tags:
Created by Administrator on 2015/10/07 15:20

This wiki is licensed under a Creative Commons 2.0 license
XWiki Enterprise 6.1 - Documentation