UUU¶
The uuu boot method flashes and boots NXP i.MX devices using the
UUU (Universal Update Utility). See the
wiki for the complete documentation
of the tool.
- boot:
method: uuu
commands:
- uuu: -b sd {boot}
timeout:
minutes: 5
Installation¶
LAVA supports running uuu directly on the worker or inside a Docker container.
See docker for running with docker. When running directly, uuu
must be installed manually on the LAVA worker since it is not provided as a
dependency by LAVA.
The latest release is available at https://github.com/NXPmicro/mfgtools/releases/latest. A specific version can be installed using the following commands:
wget https://github.com/NXPmicro/mfgtools/releases/download/<UUU_VERSION>/uuu
chmod a+x uuu
mv uuu /usr/bin/uuu
The uuu boot method supports to run bcu
commands, see using BCU commands. When needed, the tool
can be installed in the same way.
Device configuration¶
Follow the instructions in UUU and BCU to configure your UUU device.
commands¶
Required. The commands field is a list of commands to execute. Each entry is
a dictionary with a single key:value pair where the key is the protocol and the
value is the command string. Image placeholders like {boot} or {system} are
replaced with paths to images downloaded during the
uuu deployment action.
Using built-in scripts¶
UUU provides built-in scripts invoked via the uuu protocol with the -b
flag:
- boot:
method: uuu
commands:
- uuu: -b sd {boot}
Non-exhaustive list of available built-in scripts:
- uuu: -b emmc {boot} # Write bootloader to eMMC
- uuu: -b emmc_all {boot} {system} # Write bootloader & rootfs to eMMC
- uuu: -b sd {boot} # Write bootloader to SD card
- uuu: -b sd_all {boot} {system} # Write bootloader & rootfs to SD card
Using commands¶
- boot:
method: uuu
commands:
- SDPS: boot -f {boot}
- FB: continue
- FB: done
Each entry is passed to the uuu binary as a <Protocol>: <Command> pair.
Using BCU commands¶
Devices that support BCU (Board Control Utility)
can use bcu commands using the commands list:
- boot:
method: uuu
commands:
- bcu: reset usb
- uuu: -b emmc {boot}
- bcu: set_boot_mode emmc
Non-exhaustive list of available bcu commands :
- reset BOOTMODE_NAME # Reset the board and then boots from mentioned BOOTMODE_NAME.
# Replace BOOTMODE_NAME with different options like emmc,sd,
# usb which can be obtained from command bcu lsbootmode.
# Replace the BOOTMODE_NAME with anyone of the mentioned.
- lsftdi # List all the boards connected by ftdi device
- lsboard # List all supported board models
- get_boot_mode # Displays the boot mode set by BCU
Note
The serial availability check and bootloader corruption actions are skipped
when the first command is bcu: reset usb, or when the commands block
contains bcu commands only. This behavior is useful to recover bricked
devices or to use bcu as a standalone action.
docker¶
UUU can run inside a Docker container. The docker block specifies the
container image, which must contain the uuu binary.
- boot:
method: uuu
docker:
image: atline/uuu:1.5.239
commands:
- uuu: -b sd {boot}
Note
A docker image specified in the job definition overrides the
uuu_docker_image value from the device configuration.
image¶
The Docker image name.
local¶
Optional. If true, LAVA will use the image if it already exists locally on
the worker without pulling from a registry.
skip_uuu_if_bootloader_valid¶
When set to true, LAVA checks whether the device already has a valid
bootloader by attempting to boot to U-Boot. If the bootloader is valid, the
entire UUU flash sequence is skipped. This is useful for jobs that only need to
flash when the bootloader is missing or corrupted.
- boot:
method: uuu
skip_uuu_if_bootloader_valid: true
commands:
- bcu: set_boot_mode emmc_s
timeout:
minutes: 2