This how-to topic is applicable only to LSDK 18.09 and older releases. For LSDK 18.12 and newer releases, refer Deploying TF-A binaries in Layerscape Software Development Kit <version> Documentation.
Follow these steps to update U-Boot binary on the SD card.
Prerequisites
- Ubuntu 18.04 64-bit should be installed on the Linux host machine for building LSDK 18.06 or LSDK 18.09 U-Boot binary.
Compiling U-Boot binary
Clone the u-boot repository.
- $ git clone https://source.codeaurora.org/external/qoriq/qoriq-components/u-boot.git
- $ cd u-boot
- $ git checkout -b <new branch name> LSDK-<LSDK version>. For example, $ git checkout -b LSDK-18.09 LSDK-18.09
- $ export ARCH=arm64
- $ export CROSS_COMPILE=aarch64-linux-gnu-
- $ make distclean
- $ make ls1046ardb_sdcard_defconfig
- If required, make changes to the U-Boot files.
- $ make
If the make command shows the error "*** Your GCC is older than 6.0 and is not supported", ensure that you are using Ubuntu 18.04 64-bit version for building LSDK 18.06 or LSDK 18.09 U-Boot binary.
The compiled U-Boot image, u-boot-with-spl-pbl.bin, is available at u-boot/.
You need to use u-boot-with-spl-pbl.bin because for SD boot, ls104x devices use different way for bootloader from ls1088/ls2088/lx2160 devices.
SD card start block number for U-Boot binary
| Image | SD card start block number |
|---|
| U-Boot PBL binary | 0x00008 = 8 |
Refer the Flash layout for boot flow with PPA – LSDK 18.09 and older releases for a complete listing of the SD card start block numbers for all LSDK firmware images.
Programming U-Boot binary to SD card
- Plug the SD card into the Linux host.
- Run the following command on the Linux host:
- $ sudo dd if=u-boot-with-spl-pbl.bin of=/dev/sdX bs=512 seek=8 conv=fsync
Use the command cat /proc/partitions to see a list of devices and their sizes to
make sure that the correct device names have been chosen.
The SDHC storage drive in the Linux PC is detected as /dev/
sdX, where X is a letter such as a, b, c. Make sure to choose the correct
device name, because data on this device will be replaced.
If your Linux host machine supports read/write SDHC card directly without
an extra SDHC card reader device, the device name of SDHC card is typically
mmcblk0.
- Remove the SD card from the Linux host machine.
- Plug the SD card into LS1046ARDB and boot the board to Ubuntu using the SD card. You can boot the board using the SD card either by:
- setting the switches: SW3[1:8] = 01001110 and SW5 [1:8] = 00100000, or
- boot switching to SD card: => cpld reset sd
In boot log, you’ll see:
Board: LS1046ARDB, boot from SD
If U-Boot does not find LSDK on the SD card, it will boot TinyDistro from lsdk_linux_arm64_ tiny.itb stored on the SD card.