K3 NOR Second Boot Device Configuration Guide
1. Background
K3 NOR boot development boards support loading the boot image from different secondary storage devices. By default, the secondary boot device priority order is: UFS → SSD → eMMC → USB drive
The board allows you to designate a specific device as the highest-priority boot target; the relative order of the remaining devices stays the same. For example, setting "USB drive" as the highest priority changes the boot search order to: USB drive → UFS → SSD → eMMC
This guide describes two ways to change the highest-priority boot device. Choose the one that fits your use case:
- Method 1: Modify the EEPROM (recommended for debugging — takes effect immediately, no recompilation needed)
- Method 2: Modify the DTS (recommended for custom firmware or production — configuration is baked into the image)
Note: If both methods are configured, the EEPROM setting takes precedence.
2. Configuration Methods
Method 1: Modify the TLV Field in the EEPROM
You can specify the secondary boot device by modifying TLV field 0x83 in the EEPROM. This operation is performed in the U-Boot shell.
Modify in U-Boot command line
Prerequisite: When the board powers on, press s promptly to interrupt the automatic boot process and enter the U-Boot command-line environment.
Steps:
- Check the current EEPROM state: run
tlv_eeprom - Set the new secondary boot device (SSD in this example): run
tlv_eeprom set 0x83 SSD - Write the change to storage: run
tlv_eeprom write - Restart the board: run
reset
After rebooting, the system will attempt to load the image from SSD first. The supported values for each device (case-sensitive) are:
- SSD:
SSD - UFS:
UFS - eMMC:
MMC - USB drive:
USB
Example session:
=> tlv_eeprom
...
[ 4.104] Second Boot Device 0x83 3 UFS <-- currently UFS
[ 4.113] Checksum is valid.
=> tlv_eeprom set 0x83 SSD
=> tlv_eeprom write
Programming passed.
=> tlv_eeprom read
EEPROM data loaded from device to memory.
=> tlv_eeprom
...
[ 22.371] Second Boot Device 0x83 3 SSD <-- updated to SSD
[ 22.380] Checksum is valid.
=> reset
Modify via fastboot command
Precondition:When the development board powers on and begins booting, press the 's' key in time to interrupt the automatic boot process. After entering the U-Boot command-line interface, run the command fastboot 0 to switch the board to fastboot mode.
Procedure:
- Boot the development board into fastboot mode and connect it to the PC via USB. Ensure that the fastboot utility is installed on the PC.
- Run the command
fastboot oem config:write SecondBootDev@eeprom:SSDon the PC. - Run the command
fastboot oem config:flushon the PC. - Reboot the development board.
After the system reboots, it will first attempt to load the image from the SSD. The corresponding values for each storage medium (case-sensitive) are:
- SSD:
SSD - UFS:
UFS - eMMC:
MMC - USB:
USB
Method 2: Modify the DTS (Device Tree Source)
To bake the configuration into the firmware, modify the DTS file for your board, then recompile and flash the U-Boot firmware.
Using the CoM260 development board as an example, edit arch/riscv/dts/k3_com260.dts in the U-Boot source tree.
Steps:
-
Under the root node
/ { ... }in the DTS file, add or update thenor-boot-priority-helperchild node. The following example sets SSD as the highest-priority device:/ {nor-boot-priority-helper {highest-priority = "ssd";};};Supported string values for
highest-priority:- SSD:
"ssd"(or"nvme") - UFS:
"ufs"(or"scsi") - eMMC:
"mmc" - USB drive:
"usb"
- SSD:
-
Recompile U-Boot and flash the new firmware to the board.