Armada 388 SoMs from older stock still ship with a very old version of u-boot which can not load from USB. Upgrade to v2018.01 or v2024.04 is recommended for general usability.
This document outlines how to upgrade the u-boot that is installed on eMMC.
Prebuilt binaries are available here, pick the file suffixed -emmc-boot0, either:
u-boot-clearfog-base-emmc-boot0.kwbu-boot-clearfog-pro-emmc-boot0.kwb
This procedure requires a serial terminal application including xymodem support for file upload, such as e.g. tio or Tera Term.
As an example tio is used, but the same concepts apply for Tera Term, and could be automated with rzsz:
-
Open Serial Terminal, power-on the board and stop u-boot automatic boot at the prompt:
U-Boot 2013.01-g29201ec-dirty (Feb 24 2019 - 16:45:11) Marvell version: 2015_T1.0p11 Board: A38x-Customer-Board-1 mvCtrlRevNameGet: Error: Failed to read Revision ID SoC: MV88F6828 running 2 CPUs CPU: ARM Cortex A9 MPCore (Rev 1) LE CPU 0 CPU @ 1600 [MHz] L2 @ 800 [MHz] TClock @ 250 [MHz] DDR3 @ 800 [MHz] DDR3 32 Bit Width,FastPath Memory Access, DLB Enabled, ECC Disabled DRAM: 1 GiB MMC: mv_sdh: 0 sdhci_transfer_data: Error detected in status(0x408000)! *** Warning - bad CRC, using default environment PCI-e 0: Detected No Link. PCI-e 1: Detected No Link. USB2.0 0: Host Mode USB3.0 0: Host Mode USB3.0 1: Host Mode Map: Code: 0x3fed4000:0x3ff9809c BSS: 0x3ffefd5c Stack: 0x3f9c3f20 Heap: 0x3f9c4000:0x3fed4000 U-Boot Environment: 0x000f0000:0x00100000 (MMC) Board configuration detected: Net: | port | Interface | PHY address | |--------|-----------|--------------| | egiga0 | RGMII | 0x00 | | egiga1 | SGMII | In-Band | | egiga2 | SGMII | In-Band | egiga0 [PRIME], egiga1, egiga2 Hit any key to stop autoboot: 0 Marvell>> -
Initiate ymodem protocol on the board at 115200 baudrate:
Marvell>> loady $loadaddr 115200 ## Switch baudrate to 115200 115200 bps and press ENTER ... ## Ready for binary (ymodem) download to 0x02000000 at 115200 bps... C -
Send new u-boot binary using ymodem protocol from terminal application:
In
tiopress ctrl+t, then y, and enter path to the u-boot binary:## Ready for binary (ymodem) download to 0x02000000 at 115200 bps... C [13:30:39.633] Send file with YMODEM [13:30:47.828] Sending file '/home/user/u-boot-clearfog-base-emmc-boot0.kwb' [13:30:47.828] Press any key to abort transfer .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................| [13:32:05.300] Done ## Total Size = 0x00099600 = 628224 Bytes Marvell>>Note: Sometimes the transfer will not actually start and keep printing "C". In this case press any key to abort and then restart sending the file from terminal application/
Note: The transfer can be sped up by a factor of 4 with higher baudrate 460800, at the cost of more interactions, see below console log as example:
Marvell>> loady $loadaddr 460800 ## Switch baudrate to 460800 115200 bps and press ENTER ... ## Switch baudrate to 460800 bps and press ENTER ... [13:39:52.219] Disconnected ➜ workspace tio -b 460800 /dev/ttyUSB0 [13:39:57.146] tio v2.7 [13:39:57.146] Press ctrl-t q to quit [13:39:57.367] Connected ## Ready for binary (ymodem) download to 0x02000000 at 460800 bps... CC [13:40:06.903] Send file with YMODEM [13:40:08.717] Sending file '/home/user/u-boot-clearfog-base-emmc-boot0.kwb' [13:40:08.717] Press any key to abort transfer .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................| [13:40:45.964] Done ## Total Size = 0x00099600 = 628224 Bytes ## Switch baudrate to 115200 bps and press ESC ... [13:40:51.315] Disconnected ➜ workspace tio -b 115200 /dev/ttyUSB0 [13:40:54.649] tio v2.7 [13:40:54.649] Press ctrl-t q to quit [13:40:54.872] Connected Marvell>> -
Write to eMMC boot0 partition:
Marvell>> mmc dev 0 1 switch to partions #1, OK mmc0(part 1) is current device Marvell>> mmc write $loadaddr 0 0x2000 MMC write: dev # 0, block # 0, count 8192 ... 8192 blocks write: OK