Follow these steps to update the DPAA2 MC firmware, DPC, and DPL images in QSPI NOR flash.
qixis_reset boots the board from QSPI NOR flash0 and qixis_reset altbank boots the board from QSPI NOR flash1.
sf probe 0:1 means that the alternate bank will be written to. So, if the board boots from QSPI NOR flash0 and sf probe 0:1 is entered at the U-Boot prompt, the commands that follow will program QSPI NOR flash1.
Obtaining MC firmware
Clone the qoriq-mc-binary repository.
- $ git clone https://github.com/NXP/qoriq-mc-binary.git
- $ cd qoriq-mc-binary/ls1088a/
- $ git checkout -b <new branch name> <LSDK tag>. For example, $ git checkout -b LSDK-18.09 LSDK-18.09
The prebuilt MC firmware image, mc_10.10.0_ls1088a_20180814.itb, is available at /qoriq-mc-binary/ls1088a/.
Note that the name of the MC firmware image may vary depending on the release version used.
Obtaining DPC and DPL images
Clone the mc-utils repository and compile the DPC and DPL images.
- $ git clone https://source.codeaurora.org/external/qoriq/qoriq-components/mc-utils
- $ cd mc-utils
- $ git checkout -b <new branch name> <LSDK tag>. For example, $ git checkout -b LSDK-18.09 LSDK-18.09
- If required, make changes to the DPC and DPL files.
- $ make -C config/
The compiled dpc.0x1D-0x0D.dtb and dpl-eth.0x1D_0x0D.dtb images are available at /mc-utils/config/ls1088a/RDB/.
Note that the name of the DPC and DPL images may vary depending on the release version used.
Flashing MC firmware, DPC, and DPL images to QSPI NOR flash
- Boot LS1088ARDB/LS1088ARDB-PB from QSPI. Ensure that the switches are set to boot the board from QSPI, SW1[1:8] + SW2[1] = 0011_0001_X
- Boot from QSPI NOR flash0: => qixis_reset
For example:
For LS1088ARDB, in boot log, you’ll see:
Board: LS1088A-RDB, Board Arch: V1, Board version: C, boot from QSPI:0
For LS1088ARDB-PB, in boot log, you'll see:
Board: LS1088ARDB-PB, Board Arch: V1, Board version: A, boot from QSPI:0
The images can be loaded to the LS1088ARDB/LS1088ARDB-PB from a TFTP server or from a mass storage device (SD, USB, or SATA).
Option 1: Load image from the TFTP server
Set up Ethernet connection
When board boots up, U-Boot prints a list of enabled Ethernet interfaces.
DPMAC1@xgmii, DPMAC2@xgmii, DPMAC3@qsgmii, DPMAC4@qsgmii, DPMAC5@qsgmii, DPMAC6@qsgmii, DPMAC7@qsgmii, DPMAC8@qsgmii, DPMAC9@qsgmii, DPMAC10@qsgmii
- Set server IP address to the IP address of the host machine on which you have configured the TFTP server.
=> setenv serverip <ipaddress1>
Set ethact and ethprime as the ethernet interface connected to the TFTP server.
See LS1088ARDB/LS1088RDB-PB Ethernet port mapping for the mapping of Ethernet port names appearing on the chassis front panel with the port names in U-Boot and Linux.
=> setenv ethprime <name of interface connected to TFTP server>
For example:
=> setenv ethprime DPMAC3@qsgmii
=> setenv ethact <name of interface connected to TFTP server>
For example:
=> setenv ethact DPMAC3@qsgmii
- Set IP address of the board. You can set a static IP address or, if the board can connect to a dhcp server, you can use the dhcp command.
Static IP address assignment:
=> setenv ipaddr <ipaddress2>
=> setenv netmask <subnet mask>
Dynamic IP address assignment:
=> dhcp
- Save the settings. => saveenv
- Check the connection between the board and the TFTP server.
=> ping $serverip
Using DPMAC3@qsgmii device
host 192.168.1.1 is alive
Load images from a TFTP server
Program QSPI NOR flash1: sf probe 0:1
- Flash MC firmware:
- => tftp 0x80000000 mc_10.10.0_ls1088a_20180814.itb
- => print filesize
- => sf erase 0xa00000 +$filesize && sf write 0x80000000 0xa00000 $filesize
Address 0xa00000 is the location of MC firmware in QSPI NOR flash. Refer Flash layout for new boot flow with TF-A for the complete flash memory layout.
- Flash DPC image:
- => tftp 0x80000000 dpc.0x1D-0x0D.dtb
- => print filesize
- => sf erase 0xe00000 +$filesize && sf write 0x80000000 0xe00000 $filesize
Address 0xe00000 is the location of DPC image in QSPI NOR flash. Refer Flash layout for new boot flow with TF-A for the complete flash memory layout.
- Flash DPL image:
- => tftp 0x80000000 dpl-eth.0x1D_0x0D.dtb
- => print filesize
- => sf erase 0xd00000 +$filesize && sf write 0x80000000 0xd00000 $filesize
Address 0xd00000 is the location of DPL image in QSPI NOR flash. Refer Flash layout for new boot flow with TF-A for the complete flash memory layout.
- Boot from QSPI NOR flash1: => qixis_reset altbank
For LS1088ARDB, in boot log, you’ll see:
Board: LS1088A-RDB, Board Arch: V1, Board version: C, boot from QSPI:0
For LS1088ARDB-PB, in boot log, you'll see:
Board: LS1088ARDB-PB, Board Arch: V1, Board version: A, boot from QSPI:0
Ensure that SD card, USB flash drive, or SCSI hard disk installed with LSDK Ubuntu distribution is plugged into the board to boot the board to Ubuntu. If U-Boot does not find LSDK on a mass storage device, it will boot TinyDistro from lsdk_linux_arm64_ tiny.itb stored in QSPI NOR flash.
Option 2: Load images from partition on mass storage device (SD, USB, or SATA)
- Select mass storage device to use.
=> mmc rescan
=> mmc info
Or
=> usb start
=> usb info
Or
=> scsi scan
=> scsi info
- Optional – List files on the storage device
=> ls mmc <device:partition>
For example:
=> ls mmc 0:2
Or
=> ls usb <device:partition>
For example:
=> ls usb 0:1
Or
=> ls scsi <device:partition>
For example:
=> ls scsi 0:2
- Program QSPI NOR flash1: => sf probe 0:1
- Flash MC firmware:
- Load MC firmware image from the storage device
=> load mmc 0:2 80000000 <mc firmware>
For example:
=> load mmc 0:2 80000000 mc_10.10.0_ls1088a_20180814.itb
=> print filesize
Or
=> load usb 0:2 80000000 <image name>
=> print filesize
Or
=> load scsi 0:2 80000000 <image name>
=> print filesize
Program MC firmware image to QSPI NOR flash: => sf erase 0xa00000 +$filesize && sf write 0x80000000 0xa00000 $filesize
Address 0xa00000 is the location of MC firmware in QSPI NOR flash. Refer Flash layout for new boot flow with TF-A for the complete flash memory layout.
Flash DPL image:
- Load DPL image from the storage device
=> load mmc 0:2 80000000 <dpl image>
For example:
=> load mmc 0:2 80000000 dpl-eth.0x1D_0x0D.dtb
=> print filesize
Or
=> load usb 0:2 80000000 <image name>
=> print filesize
Or
=> load scsi 0:2 80000000 <image name>
=> print filesize
Program DPL image to QSPI NOR flash: => sf erase 0xd00000 +$filesize && sf write 0x80000000 0xd00000 $filesize
Address 0xd00000 is the location of DPL image in QSPI NOR flash. Refer Flash layout for new boot flow with TF-A for the complete flash memory layout.
Flash DPC image:
- Load DPC image from the storage device
=> load mmc 0:2 80000000 <dpc image>
For example:
=> load mmc 0:2 80000000 dpc.0x1D-0x0D.dtb
=> print filesize
Or
=> load usb 0:2 80000000 <image name>
=> print filesize
Or
=> load scsi 0:2 80000000 <image name>
=> print filesize
Program DPC image to QSPI NOR flash: => sf erase 0xe00000 +$filesize && sf write 0x80000000 0xe00000 $filesize
Address 0xe00000 is the location of DPC image in QSPI NOR flash. Refer Flash layout for new boot flow with TF-A for the complete flash memory layout.
- Boot from QSPI NOR flash1: => qixis_reset altbank
For LS1088ARDB, in boot log, you’ll see:
Board: LS1088A-RDB, Board Arch: V1, Board version: C, boot from QSPI:1
For LS1088ARDB-PB, in boot log, you'll see:
Board: LS1088ARDB-PB, Board Arch: V1, Board version: A, boot from QSPI:1
Ensure that SD card, USB flash drive, or SCSI hard disk installed with LSDK Ubuntu distribution is plugged into the board to boot the board to Ubuntu. If U-Boot does not find LSDK on a mass storage device, it will boot TinyDistro from lsdk_linux_arm64_ tiny.itb stored in QSPI NOR flash.