You can use the update command to update the bootloader in the storage media. For example, to update from TFTP using the file <u-boot-filename>:

=> update uboot tftp <u-boot-filename>

Writing an invalid bootloader file may lead to the target not booting.

The u-boot.imx image in your artifacts directory is not directly usable. See [{XREF_yocto_r_uboot-files}] to verify which U-Boot binary you need.

Digi releases U-Boot updates from time to time to fix problems or add new functionality. Much of the custom functionality added to U-Boot depends on environment variables and scripts that may have new values in newly released versions. Digi recommends that you reset the environment to its defaults after upgrading U-Boot:

Reset U-Boot environment to default values
=> env default -a
=> env save

This resets the whole environment, with the exception of protected variables (like the MAC addresses). After resetting the environment, you may need to adjust your manufacturing or boot scripts to accommodate changes in the default environment, like new or modified scripts, variables, and default filenames.

Update bootloader from USB (fastboot)

  1. Place the U-Boot binary in a well known location in your host computer.

  2. Connect the board to your host computer. See Step 2 - Set up the hardware for instructions.

  3. Open a serial connection to the serial port to which the device is connected. Use the following settings:

    • Port: Serial port to which your device is attached

    • Baud rate: 115200

    • Data Bits: 8

    • Parity: None

    • Stop Bits: 1

    • Flow control: None

  4. Reset the device (press the Reset button on the board) and immediately press a key in the serial terminal to stop the auto-boot process. You will be stopped at the U-Boot bootloader prompt:

U-Boot dub-2020.04-r2.2 (Jan 18 2021 - 15:54:04 +0000)

CPU:   NXP i.MX8QXP RevB A35 at 1200 MHz at 25C
DRAM:  2 GiB
MCA:   HW_VER=1  FW_VER=1.01
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
In:    serial
Out:   serial
Err:   serial
Model: Digi International ConnectCore 8X SBC Pro Board.
ConnectCore 8X SOM variant 0x02: 2 GiB LPDDR4, Wi-Fi, Bluetooth, MCA, Crypto-auth
  Board version 3, ID 135
Boot:  MMC0

 BuildInfo:
  - SCFW 56682d58, SECO-FW 0e4b9cee, IMX-MKIMAGE 8da5cd23, ATF c949a88
  - U-Boot dub-2020.04-r2.2

flash target is MMC:0
Net:   eth0: ethernet@5b040000 [PRIME], eth1: ethernet@5b050000
Fastboot: Normal
Normal Boot
Hit any key to stop autoboot:  0
{pu}
  1. Start the fastboot mode in U-Boot:

    => fastboot 1
  2. Update the U-Boot image:

    1. On your development computer, execute the following command to update the U-Boot image:

      $ fastboot flash bootloader <u-boot-filename>.imx
    2. Reset the board to boot into the recently updated U-Boot, and press any key to stop the autoboot process.

    3. Reset the U-Boot environment to default values. (This will not reset protected variables like the MAC address). To do so, issue this command:

      => env default -a
    4. Save the U-Boot environment to apply the default configuration.

      => env save
  3. Power-cycle the board.

Update bootloader from Ethernet (TFTP)

  1. Place the U-Boot binary inside your host computer TFTP exported folder.

  2. Connect the board to your host computer. See Step 2 - Set up the hardware for instructions.

  3. Open a serial connection to the serial port to which the device is connected. Use the following settings:

    • Port: Serial port to which your device is attached

    • Baud rate: 115200

    • Data Bits: 8

    • Parity: None

    • Stop Bits: 1

    • Flow control: None

  4. Reset the device (press the Reset button on the board) and immediately press a key in the serial terminal to stop the auto-boot process. You will be stopped at the U-Boot bootloader prompt:

U-Boot dub-2020.04-r2.2 (Jan 18 2021 - 15:54:04 +0000)

CPU:   NXP i.MX8QXP RevB A35 at 1200 MHz at 25C
DRAM:  2 GiB
MCA:   HW_VER=1  FW_VER=1.01
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
In:    serial
Out:   serial
Err:   serial
Model: Digi International ConnectCore 8X SBC Pro Board.
ConnectCore 8X SOM variant 0x02: 2 GiB LPDDR4, Wi-Fi, Bluetooth, MCA, Crypto-auth
  Board version 3, ID 135
Boot:  MMC0

 BuildInfo:
  - SCFW 56682d58, SECO-FW 0e4b9cee, IMX-MKIMAGE 8da5cd23, ATF c949a88
  - U-Boot dub-2020.04-r2.2

flash target is MMC:0
Net:   eth0: ethernet@5b040000 [PRIME], eth1: ethernet@5b050000
Fastboot: Normal
Normal Boot
Hit any key to stop autoboot:  0
{pu}
  1. On the target, configure the network settings of the device by doing one of the following:

    • Get a dynamic IP address from a DHCP server by running the following commands:

      => setenv autoload no
      => dhcp
    • Configure a static IP address, where a.b.c.d is the IP address of your device:

      => setenv ipaddr a.b.c.d
  2. Configure the IP address of the machine where the TFTP server is running and save the configuration as follows, where w.x.y.z is your machine IP address where the TFTP server is running:

    => setenv serverip w.x.y.z
    => env save
  3. Update the U-Boot image:

    1. Execute the following command to update the U-Boot image into the eMMC:

      => update uboot tftp <u-boot-filename>.imx
    2. Reset the board to boot into the recently updated U-Boot, and press any key to stop the autoboot process.

    3. Reset the U-Boot environment to default values (this will not reset protected variables like the MAC address). To do so, issue this command:

      => env default -a
    4. Configure the network and TFTP settings on your device again and save the configuration.

      => setenv ipaddr a.b.c.d
      => setenv serverip w.x.y.z
      => env save
  4. Power-cycle the board.

Update bootloader from microSD card

  1. Place the U-Boot binary inside a FAT-formatted microSD card.

  2. Power off the device.

  3. Insert the microSD card in the microSD socket of the device.

  4. Change the boot mode configuration to boot from the internal eMMC. To do so, set the boot mode micro-switches as follows:

    • BOOT.1 OFF

    • BOOT.2 OFF

      eMMC boot
  5. Connect the board to your host computer. See Step 2 - Set up the hardware for instructions.

  6. Open a serial connection to the serial port to which the device is connected. Use the following settings:

    • Port: Serial port to which your device is attached

    • Baud rate: 115200

    • Data Bits: 8

    • Parity: None

    • Stop Bits: 1

    • Flow control: None

  7. Reset the device (press the Reset button on the board) and immediately press a key in the serial terminal to stop the auto-boot process. You will be stopped at the U-Boot bootloader prompt:

U-Boot dub-2020.04-r2.2 (Jan 18 2021 - 15:54:04 +0000)

CPU:   NXP i.MX8QXP RevB A35 at 1200 MHz at 25C
DRAM:  2 GiB
MCA:   HW_VER=1  FW_VER=1.01
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
In:    serial
Out:   serial
Err:   serial
Model: Digi International ConnectCore 8X SBC Pro Board.
ConnectCore 8X SOM variant 0x02: 2 GiB LPDDR4, Wi-Fi, Bluetooth, MCA, Crypto-auth
  Board version 3, ID 135
Boot:  MMC0

 BuildInfo:
  - SCFW 56682d58, SECO-FW 0e4b9cee, IMX-MKIMAGE 8da5cd23, ATF c949a88
  - U-Boot dub-2020.04-r2.2

flash target is MMC:0
Net:   eth0: ethernet@5b040000 [PRIME], eth1: ethernet@5b050000
Fastboot: Normal
Normal Boot
Hit any key to stop autoboot:  0
{pu}
  1. Update the U-Boot image:

    1. Run the following command to update U-Boot into the eMMC:

      => update uboot mmc 1 fat <u-boot-filename>.imx
    2. Reset the board to boot into the recently updated U-Boot, and press any key to stop the autoboot process.

    3. Reset the U-Boot environment to default values (this will not reset protected variables like the MAC address). To do so, issue this command:

      => env default -a
    4. Save the U-Boot environment to apply the default configuration.

      => env save
  2. Power-cycle the board.