LS1046ARDB - How to update PBL/RCW binary on SD card

Document created by Swati Gupta Employee on Dec 6, 2018Last modified by Swati Gupta Employee on Mar 20, 2019
Version 10Show Document
  • View in full screen mode

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 the PBL/RCW binary on the SD card. 

Compiling PBL binary from RCW source file (optional)

If the user already has a PBL binary, this step can be skipped.  

Clone the  rcw  repository and compile the PBL binary. 

  1. $ git clone https://source.codeaurora.org/external/qoriq/qoriq-components/rcw
  2. $ cd rcw
  3. $ git checkout -b <new branch name> <LSDK tag>For example, $ git checkout -b LSDK-18.09 LSDK-18.09 
  4. $ cd ls1046ardb
  5. If required, make changes to the rcw files.
  6. $ make

 

The default PBL binary for LS1046ARDB is RR_FFSSPPPH_1133_5559/rcw_1800_qspiboot.bin.swapped.

By default, the QSPI controller on LS1046A reads/writes in 64-bit big endian (BE) mode. This makes it necessary to use a byte swapped PBL binary image, for example, rcw_1800_qspiboot.bin.swapped. The last PBI command in rcw_1800_qspiboot.bin.swapped is a write to the QPSI_MCR register that changes the endianness of QSPI controller to 64-bit little endian (LE). With this change, subsequent accesses are made in little endian format.

See the rcw/ls1046ardb/README file for an explanation of the naming convention for the directories that contain the RCW source and binary files.

SD card start block number for PBL/RCW binary

 

Image SD card start block number
PBL/RCW binary0x00008 = 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 PBL/RCW binary to SD card

  1. Plug the SD card into the Linux host.
  2. Run the following command on the Linux host:
    • $ sudo dd if=rcw_1800_qspiboot.bin.swapped 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.

                           
  3. Remove the SD card from the Linux host machine.
  4. 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.

Attachments

    Outcomes