Follow these steps to update the DPAA2 MC firmware, DPC, and DPL images in FlexSPI NOR flash of LX2160ARDB.
NOTE: Below steps are valid for both LX2160ARDB Rev 1.0 and Rev 2.0 revisions.
NOTE: qixis_reset boots the board from FlexSPI NOR flash0 and qixis_reset altbank boots the board from FlexSPI NOR flash1.
NOTE: sf probe 0:1 means that the alternate bank will be written to. So, if the board boots from FlexSPI NOR flash0 and sf probe 0:1 is entered at the U-Boot prompt, the commands that follow will program FlexSPI NOR flash1.
Clone the qoriq-mc-binary repository.
The prebuilt MC firmware image, mc_10.20.4_lx2160a.itb, is available at /qoriq-mc-binary/lx2160a/.
NOTE: The name of the MC firmware image may vary depending on the LSDK release version used.
Clone the mc-utils repository and compile the DPC and DPL images.
The compiled dpc-usxgmii.dtb and dpl-eth.19.dtb images are available at /mc-utils/config/lx2160a/RDB/.
NOTE: The name of the DPC and DPL images may vary depending on the LSDK release version used.
SW1[1:8] = 1111 1000
SW2[1:8] = 0000 0110
SW3[1:8] = 1111 1100
SW4[1:8] = 1011 1000
Boot from FlexSPI NOR flash0: => qixis_reset
For example:
For LX2160ARDB, in U-Boot log, you’ll see:
Board: LX2160ACE Rev2.0-RDB, Board version: B, boot from FlexSPI DEV#0
The images can be loaded to the LX2160ARB from a TFTP server or from a mass storage device (SD, USB, or SATA).
When board boots up, U-Boot prints a list of enabled Ethernet interfaces.
DPMAC2@xlaui4, DPMAC3@xgmii, DPMAC4@xgmii, DPMAC5@25g-aui, DPMAC6@25g-aui, DPMAC17@rgmii-id, DPMAC18@rgmii-id
=> setenv serverip <ipaddress1>
Set ethact and ethprime as the ethernet interface connected to the TFTP server.
See LX2160ARDB 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@xgmii
=> setenv ethact <name of interface connected to TFTP server>
For example:
=> setenv ethact DPMAC3@xgmii
Static IP address assignment:
=> setenv ipaddr <ipaddress2>
=> setenv netmask <subnet mask>
Dynamic IP address assignment:
=> dhcp
=> saveenv
=> ping $serverip
Using DPMAC3@xgmii device
host 192.168.2.1 is alive
NOTE: Ensure that the board boots from FlexSPI NOR flash1 before programming updated MC firmware and DPL and DPC images to FlexSPI NOR flash1. If board fails to boot successfully from FlexSPI NOR flash1, you can program composite firmware image to FlexSPI NOR flash1 by following the steps available in section "LSDK Quick Start Guide or LX2160ARDB" in LSDK User Guide.
Program FlexSPI NOR flash1: sf probe 0:1
Address 0xa00000 is the location of MC firmware in FlexSPI NOR flash. Refer Flash layout for new boot flow with TF-A for the complete flash memory layout.
Address 0xe00000 is the location of DPC image in FlexSPI NOR flash. Refer Flash layout for new boot flow with TF-A for the complete flash memory layout.
Address 0xd00000 is the location of DPL image in FlexSPI NOR flash. Refer Flash layout for new boot flow with TF-A for the complete flash memory layout.
In U-Boot log, you’ll see:
Board: LX2160ACE Rev2.0-RDB, Board version: B, boot from FlexSPI DEV#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 FlexSPI NOR flash.
=> mmc rescan
=> mmc info
Or
=> usb start
=> usb info
Or
=> scsi scan
=> scsi info
=> 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
=> load mmc 0:2 80000000 <mc firmware>
For example:
=> load mmc 0:2 80000000 mc_10.20.4_lx2160a.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 FlexSPI NOR flash: => sf erase 0xa00000 +$filesize && sf write 0x80000000 0xa00000 $filesize
Address 0xa00000 is the location of MC firmware in FlexSPI NOR flash. Refer Flash layout for new boot flow with TF-A for the complete flash memory layout.
Flash DPL image:
=> load mmc 0:2 80000000 <dpl image>
For example:
=> load mmc 0:2 80000000 dpl-eth.19.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 FlexSPI NOR flash: => sf erase 0xd00000 +$filesize && sf write 0x80000000 0xd00000 $filesize
Address 0xd00000 is the location of DPL image in FlexSPI NOR flash. Refer Flash layout for new boot flow with TF-A for the complete flash memory layout.
Flash DPC image:
=> load mmc 0:2 80000000 <dpc image>
For example:
=> load mmc 0:2 80000000 dpc-usxgmii.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 FlexSPI NOR flash: => sf erase 0xe00000 +$filesize && sf write 0x80000000 0xe00000 $filesize
Address 0xe00000 is the location of DPC image in FlexSPI NOR flash. Refer Flash layout for new boot flow with TF-A for the complete flash memory layout.
In U-Boot log, you’ll see:
Board: LX2160ACE Rev2.0-RDB, Board version: B, boot from FlexSPI DEV#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 FlexSPI NOR flash.