Flashing QSPI boot firmware

Get the binaries

QSPI boot images can be found here: https://gitlab.conclusive.pl/devices/whle-ls1/firmware/-/releases. Make sure to pick the right file:

  • qspi-whle-ls1046a.bin for WHLE-LS1026A and WHLE-LS1046A

  • qspi-whle-ls1088a.bin for WHLE-LS1048A and WHLE-LS1088A

Flashing from the U-Boot

In order to flash QSPI boot image from the U-Boot, we will need a TFTP server to transfer the image from. In this guide we’ll use the tftpd64 server for Windows, but any other TFTP server software will work as well.

Configure the TFTP server

Get to the U-Boot prompt and configure network

In order to enter U-Boot prompt, press any key on the serial terminal shortly after powering the board or shortly after resetting it using the reset button. Then connect Ethernet cable to the first RJ45 port labelled ETH1 and then either run dhcp command to acquire the IP address from the local network as shown below.

=> dhcp fm1-mac3 Waiting for PHY auto negotiation to complete........ done BOOTP broadcast 1 BOOTP broadcast 2 BOOTP broadcast 3 BOOTP broadcast 4 BOOTP broadcast 5 DHCP client bound to address 10.0.3.200 (4765 ms) *** ERROR: `serverip' not set Cannot autoload with TFTPGET =>

Download and flash the image

Use the tftpboot and sf commands to download the image to the RAM and then flash it to the QSPI flash as shown below. Replace 10.0.3.26 with the IP address of the computer running TFTP server.

=> setenv serverip 10.0.3.26 => sf probe SF: Detected gd25lq128 with page size 256 Bytes, erase size 4 KiB, total 16 MiB => tftpboot $loadaddr qspi-whle-ls1046a.bin Using fm1-mac3 device TFTP from server 10.0.3.26; our IP address is 10.0.3.200 Filename 'qspi-whle-ls1046a.bin'. Load address: 0x90000000 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ###################################### 6.8 MiB/s done Bytes transferred = 16777216 (1000000 hex) => sf update $loadaddr 0 0x1000000 device 0 whole chip 0 bytes written, 16777216 bytes skipped in 2.151s, speed 8388608 B/s =>