To quit screen, hit
Control-a
,
\
,
y
. If you do not quit properly, you can end up with multiple
screens running at the same time. This manifests as lost characters both sent and received.
SD cards formatted by the
freedom-u-sdk
contains a second partition which can be used for
persistent storage. You can access this storage by executing
mount /dev/mmcblk0p2 /mnt
.
However, the linux mmc_spi driver is extremely slow, so this should not be used for large files.
Report core frequency:
echo $(cat /sys/devices/platform/soc/10000000.prci/rate)
The Freedom U500 supports several boot methods. The general flow follows multiple stages:
1. ROM0 (
0x1004
): Decode MSEL and jump to the address found in
8*MSEL
. For MSEL > 4, the process proceeds to the next step.
2. ROM1 (
0x1_0000
): Decode MSEL to determine which media contains the First
Stage Boot Loader (FSBL). The media is expected to be formatted with a GPT parti-
tion table (even on SPI flash). The entire contents of the first partition with GUID
type
5B193300-FC78-40CD-8002-E86C45580B47
are downloaded into the L2 side-
band memory and execution transfers there. ROM1 contains a hard-coded DTB
block passed in
a1
to the FSBL, which ignores it.
3. FSBL (
0x800_0000
): Initialize core PPLs, DDR, and Ethernet PHY. Decode MSEL
to determine which media contains the Berkeley Boot Loader (BBL). The media is
expected to contain a GPT-formatted partition table. The contents of the first parti-
tion with GUID type
2E54B353-1271-4842-806F-E436D6AF6985
are downloaded
into DDR memory and execution transfers there. The FSBL contains an embedded
DTB describing both the Freedom U500 SoC and HiFive Unleashed board. The
DTB is updated with the board MAC address and DDR capacity and passed to BBL
in
a1
.
4. BBL (
0x8000_0000
): Initialize the RISC-V supervisor binary interface (SBI). Jump to
the embedded linux kernel payload, passing a redacted DTB in
a1
.
5. Linux (
0xffff_ffe0_0000_0000
): Initializes all devices, starts DHCP + ssh.
12