This is all new to me, but here is the information I can provide:
I use picocom to connect to the Helios4 serial console:
$this->bbcode_second_pass_code('', '$ sudo picocom -b 115200 /dev/ttyUSB0')
Turning on the Helios4 without SD card shows this:
$this->bbcode_second_pass_code('', '
BootROM - 1.73
Booting from MMC
Card did not respond to voltage select!
Error initializing MMC - FFFFFFEF
Trying Uart
')
and it doesn't go any further.
Would it be stupid to say that uboot is loaded from the SD card? (I don't know uboot enough to be sure of that, but I guess it is). The Helios4 wiki has a page explaining how to compile uboot:
https://wiki.kobol.io/uboot/. Helios4 uses a fork of uboot here:
https://github.com/helios-4/u-boot. I can get the
u-boot-spl.kwb file but the Wiki page does not explain what to do with this file. However this readme (
https://github.com/helios-4/u-boot/blob ... os4/README) explains that this file must be copied to the SD card using this command:
$this->bbcode_second_pass_code('', '$ sudo dd if=u-boot-spl.kwb of=/dev/sdX bs=512 seek=1')
So I installed Archlinux ARM for Clearfog to an SD card, copy also the u-boot-spl.kwb with the above command and boot the Helios4 on it. Here is what I got:
$this->bbcode_second_pass_code('', '
U-Boot SPL 2018.11-00292-g3221f0f219 (Feb 03 2019 - 19:49:54 +0100)
High speed PHY - Version: 2.0
Detected Device ID 6828
board SerDes lanes topology details:
| Lane # | Speed | Type |
--------------------------------
| 0 | 6 | SATA0 |
| 1 | 5 | USB3 HOST0 |
| 2 | 6 | SATA1 |
| 3 | 6 | SATA3 |
| 4 | 6 | SATA2 |
| 5 | 5 | USB3 HOST1 |
--------------------------------
High speed PHY - Ended Successfully
mv_ddr: mv_ddr-armada-17.10.4
DDR3 Training Sequence - Switching XBAR Window to FastPath Window
DDR Training Sequence - Start scrubbing
DDR3 Training Sequence - End scrubbing
mv_ddr: completed successfully
Trying to boot from MMC1
U-Boot 2018.11-00292-g3221f0f219 (Feb 03 2019 - 19:49:54 +0100)
SoC: MV88F6828-A0 at 1600 MHz
DRAM: 2 GiB (800 MHz, 32-bit, ECC enabled)
MMC: mv_sdh: 0
Loading Environment from MMC... *** Warning - bad CRC, using default environment
Model: Helios4
Board: Helios4
SCSI: MVEBU SATA INIT
Target spinup took 0 ms.
Target spinup took 0 ms.
AHCI 0001.0000 32 slots 2 ports 6 Gbps 0x3 impl SATA mode
flags: 64bit ncq led only pmp fbss pio slum part sxs
Net:
Warning: ethernet@70000 (eth1) using random MAC address - 1a:6c:d5:40:b2:b9
eth1: ethernet@70000
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
starting USB...
USB0: MVEBU XHCI INIT controller @ 0xf10f4000
Register 2000120 NbrPorts 2
Starting the controller
USB XHCI 1.00
USB1: MVEBU XHCI INIT controller @ 0xf10fc000
Register 2000120 NbrPorts 2
Starting the controller
USB XHCI 1.00
scanning bus 0 for devices... 1 USB Device(s) found
scanning bus 1 for devices... 1 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found
Device 0: device type unknown
... is now current device
ethernet@70000 Waiting for PHY auto negotiation to complete................. TIMEOUT !
ethernet@70000: No link.
missing environment variable: pxeuuid
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00000000
ethernet@70000 Waiting for PHY auto negotiation to complete................. TIMEOUT !
ethernet@70000: No link.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0000000
ethernet@70000 Waiting for PHY auto negotiation to complete................. TIMEOUT !
ethernet@70000: No link.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/000000
ethernet@70000 Waiting for PHY auto negotiation to complete................. TIMEOUT !
ethernet@70000: No link.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00000
ethernet@70000 Waiting for PHY auto negotiation to complete................. TIMEOUT !
ethernet@70000: No link.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0000
ethernet@70000 Waiting for PHY auto negotiation to complete................. TIMEOUT !
ethernet@70000: No link.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/000
ethernet@70000 Waiting for PHY auto negotiation to complete................. TIMEOUT !
ethernet@70000: No link.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00
ethernet@70000 Waiting for PHY auto negotiation to complete................. TIMEOUT !
ethernet@70000: No link.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0
ethernet@70000 Waiting for PHY auto negotiation to complete................. TIMEOUT !
ethernet@70000: No link.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default-arm-mvebu
ethernet@70000 Waiting for PHY auto negotiation to complete................. TIMEOUT !
ethernet@70000: No link.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default-arm
ethernet@70000 Waiting for PHY auto negotiation to complete................. TIMEOUT !
ethernet@70000: No link.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default
ethernet@70000 Waiting for PHY auto negotiation to complete................. TIMEOUT !
ethernet@70000: No link.
Config file not found
ethernet@70000 Waiting for PHY auto negotiation to complete................. TIMEOUT !
ethernet@70000: No link.
ethernet@70000 Waiting for PHY auto negotiation to complete................. TIMEOUT !
ethernet@70000: No link.
=>
')
I downloaded the Armbian image from the Helios4 wiki (
https://wiki.kobol.io/download/) and mounted it:
$this->bbcode_second_pass_code('', '
$ wget https://dl.armbian.com/helios4/archive/Armbian_5.72_Helios4_Debian_stretch_next_4.14.94.7z
$ md5sum Armbian_5.72_Helios4_Debian_stretch_next_4.14.94.7z
c4b5973931acde6e070b88bdfb32957c Armbian_5.72_Helios4_Debian_stretch_next_4.14.94.7z
$ 7za e Armbian_5.72_Helios4_Debian_stretch_next_4.14.94.7z
$ mkdir img
$ sudo mount -t loop,offset=419430 Armbian_5.72_Helios4_Debian_stretch_next_4.14.94.img
')
Here is the content of the boot/ folder:
$this->bbcode_second_pass_code('', '
-rw-r--r-- 1 root root 2,1M 20 janv. 08:44 System.map-4.14.94-mvebu
-rw-r--r-- 1 root root 158 20 janv. 08:58 armbianEnv.txt
-rw-r--r-- 1 root root 1,5K 20 janv. 08:57 armbian_first_run.txt.template
-rw-r--r-- 1 root root 38K 20 janv. 08:55 boot.bmp
-rw-r--r-- 1 root root 1,9K 20 janv. 08:54 boot.cmd
-rw-r--r-- 1 root root 2,0K 20 janv. 08:58 boot.scr
-rw-r--r-- 1 root root 4,8K 20 janv. 08:55 boot-desktop.png
-rw-r--r-- 1 root root 121K 20 janv. 08:44 config-4.14.94-mvebu
lrwxrwxrwx 1 root root 17 20 janv. 08:54 dtb -> dtb-4.14.94-mvebu/
drwxr-xr-x 2 root root 4,0K 20 janv. 08:54 dtb-4.14.94-mvebu/
-rw-r--r-- 1 root root 8,0M 20 janv. 09:00 initrd.img-4.14.94-mvebu
lrwxrwxrwx 1 root root 21 20 janv. 09:00 uInitrd -> uInitrd-4.14.94-mvebu
-rw-r--r-- 1 root root 8,0M 20 janv. 09:00 uInitrd-4.14.94-mvebu
-rwxr-xr-x 1 root root 5,3M 20 janv. 08:44 vmlinuz-4.14.94-mvebu
lrwxrwxrwx 1 root root 21 20 janv. 08:54 zImage -> vmlinuz-4.14.94-mvebu
')
As you can see, there are boot.cmd and boot.scr files. Here is the content of boot.cmd:
$this->bbcode_second_pass_code('', '
# DO NOT EDIT THIS FILE
#
# Please edit /boot/armbianEnv.txt to set supported parameters
#
# default values
setenv rootdev "/dev/mmcblk0p1"
setenv rootfstype "ext4"
setenv verbosity "1"
setenv emmc_fix "off"
setenv spi_workaround "off"
setenv ethaddr "00:50:43:84:fb:2f"
setenv eth1addr "00:50:43:25:fb:84"
setenv eth2addr "00:50:43:84:25:2f"
setenv eth3addr "00:50:43:0d:19:18"
# fdtfile should come from compile-time u-boot patches
if test -z "${fdtfile}"; then
setenv fdtfile "armada-388-clearfog.dtb"
fi
test -z "${boot_interface}" && setenv boot_interface "mmc"
echo "Boot script loaded from ${boot_interface}"
if load ${boot_interface} 0:1 ${loadaddr} ${prefix}armbianEnv.txt; then
env import -t ${loadaddr} ${filesize}
fi
setenv bootargs "console=ttyS0,115200 root=${rootdev} rootwait rootfstype=${rootfstype} ubootdev=${boot_interface} scandelay loglevel=${verbosity} usb-storage.quirks=${usbstoragequirks} ${extraargs}"
load ${boot_interface} 0:1 ${fdt_addr} ${prefix}dtb/${fdtfile}
load ${boot_interface} 0:1 ${ramdisk_addr_r} ${prefix}uInitrd
load ${boot_interface} 0:1 ${kernel_addr_r} ${prefix}zImage
setenv fdt_high 0xffffffff
setenv initrd_high 0xffffffff
# eMMC fix
if test "${emmc_fix}" = "on"; then
echo "Applying eMMC compatibility fix to the DT"
fdt addr ${fdt_addr}
fdt resize
fdt rm /soc/internal-regs/sdhci@d8000/ cd-gpios
fdt set /soc/internal-regs/sdhci@d8000/ non-removable
fi
# SPI - SATA workaround
if test "${spi_workaround}" = "on"; then
echo "Applying SPI workaround to the DT"
fdt addr ${fdt_addr}
fdt resize
fdt set /soc/internal-regs/sata@e0000 status "disabled"
fdt set /soc/internal-regs/sata@a8000 status "disabled"
fdt set /soc/spi@10680 status "okay"
fdt set /soc/spi@10680/spi-flash@0 status "okay"
fi
bootz ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr}
# Recompile with:
# mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr
')
This script uses /boot/armbianEnv.txt whose content is:
$this->bbcode_second_pass_code('', '
verbosity=1
eth1addr=00:50:43:25:fb:84
spi_workaround=off
overlay_prefix=armada-388-helios4
rootdev=UUID=9a87e716-ddad-42da-8d9e-78ec4d261162
rootfstype=ext4
')
I replaced the content of /boot on the SD card by the content of /boot from the Armbian image. Here is the result:
$this->bbcode_second_pass_code('', '
U-Boot SPL 2018.11-00292-g3221f0f219 (Feb 03 2019 - 19:49:54 +0100)
High speed PHY - Version: 2.0
Detected Device ID 6828
board SerDes lanes topology details:
| Lane # | Speed | Type |
--------------------------------
| 0 | 6 | SATA0 |
| 1 | 5 | USB3 HOST0 |
| 2 | 6 | SATA1 |
| 3 | 6 | SATA3 |
| 4 | 6 | SATA2 |
| 5 | 5 | USB3 HOST1 |
--------------------------------
High speed PHY - Ended Successfully
mv_ddr: mv_ddr-armada-17.10.4
DDR3 Training Sequence - Switching XBAR Window to FastPath Window
DDR Training Sequence - Start scrubbing
DDR3 Training Sequence - End scrubbing
mv_ddr: completed successfully
Trying to boot from MMC1
U-Boot 2018.11-00292-g3221f0f219 (Feb 03 2019 - 19:49:54 +0100)
SoC: MV88F6828-A0 at 1600 MHz
DRAM: 2 GiB (800 MHz, 32-bit, ECC enabled)
MMC: mv_sdh: 0
Loading Environment from MMC... *** Warning - bad CRC, using default environment
Model: Helios4
Board: Helios4
SCSI: MVEBU SATA INIT
Target spinup took 0 ms.
Target spinup took 0 ms.
AHCI 0001.0000 32 slots 2 ports 6 Gbps 0x3 impl SATA mode
flags: 64bit ncq led only pmp fbss pio slum part sxs
Net:
Warning: ethernet@70000 (eth1) using random MAC address - 7e:5e:e0:18:94:ea
eth1: ethernet@70000
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot/boot.scr
1979 bytes read in 78 ms (24.4 KiB/s)
## Executing script at 03000000
Boot script loaded from mmc
load - load binary file from a filesystem
Usage:
load <interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]]
- Load binary file 'filename' from partition 'part' on device
type 'interface' instance 'dev' to address 'addr' in memory.
'bytes' gives the size to load in bytes.
If 'bytes' is 0 or omitted, the file is read until the end.
'pos' gives the file byte position to start reading from.
If 'pos' is 0 or omitted, the file is read from the start.
load - load binary file from a filesystem
Usage:
load <interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]]
- Load binary file 'filename' from partition 'part' on device
type 'interface' instance 'dev' to address 'addr' in memory.
'bytes' gives the size to load in bytes.
If 'bytes' is 0 or omitted, the file is read until the end.
'pos' gives the file byte position to start reading from.
If 'pos' is 0 or omitted, the file is read from the start.
8352153 bytes read in 1542 ms (5.2 MiB/s)
5457160 bytes read in 1087 ms (4.8 MiB/s)
## Loading init Ramdisk from Legacy Image at 02880000 ...
Image Name: uInitrd
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 8352089 Bytes = 8 MiB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
Error: unrecognized/unsupported machine ID (r1 = 0x00000000).
Available machine support:
ID (hex) NAME
ffffffff Generic DT based system
ffffffff Marvell Armada 39x (Device Tree)
ffffffff Marvell Armada 380/385 (Device Tree)
ffffffff Marvell Armada 375 (Device Tree)
ffffffff Marvell Armada 370/XP (Device Tree)
ffffffff Marvell Dove
Please check your kernel config and/or bootloader.
')
Hope it helps.
What can I do next to go further?