All :
As the subject line says, I have a SiFive P550 unit and it is
currently running a rather nasty Ubuntu. So of course I am trying to
figure out how to get something/anything else running there. It has
the usual u-boot stuff already in the firmware and there is also a
file called a device tree blob. Here is what I see when I reboot
the unit :
[485560.739156] reboot: Restarting system
eic770x_cold_reset
pll config ok
Firmware version:1.2;disable ECC
PHY0 training process:100%
PHY1 training process:100%
DDR type:LPDDR5;Size:32GB,Data Rate:6400MT/s
DDR self test OK
OpenSBI v1.4
____ _____ ____ _____
/ __ \ / ____| _ \_ _|
| | | |_ __ ___ _ __ | (___ | |_) || |
| | | | '_ \ / _ \ '_ \ \___ \| _ < | |
| |__| | |_) | __/ | | |____) | |_) || |_
\____/| .__/ \___|_| |_|_____/|____/_____|
| |
|_|
Platform Name : ESWIN EIC770X
Platform Features : none
Platform HART Count : 4
Platform IPI Device : aclint-mswi
Platform Timer Device : aclint-mtimer @ 1000000Hz
Platform Console Device : uart8250
Platform HSM Device : ---
Platform PMU Device : ---
Platform Reboot Device : eswin_eic770x_reset
Platform Shutdown Device : eswin_eic770x_reset
Platform Suspend Device : ---
Platform CPPC Device : ---
Firmware Base : 0x80000000
Firmware Size : 344 KB
Firmware RW Offset : 0x40000
Firmware RW Size : 88 KB
Firmware Heap Offset : 0x4c000
Firmware Heap Size : 40 KB (total), 2 KB (reserved), 9 KB (used),
28 KB (free)
Firmware Scratch Size : 4096 B (total), 296 B (used), 3800 B (free)
Runtime SBI Version : 2.0
Domain0 Name : root
Domain0 Boot HART : 0
Domain0 HARTs : 0*,1*,2*,3*
Domain0 Region00 : 0x0000000002008000-0x000000000200bfff M:
(I,R,W) S/U: ()
Domain0 Region01 : 0x0000000002000000-0x0000000002007fff M:
(I,R,W) S/U: ()
Domain0 Region02 : 0x0000000080040000-0x000000008005ffff M:
(R,W) S/U: ()
Domain0 Region03 : 0x0000000080000000-0x000000008003ffff M:
(R,X) S/U: ()
Domain0 Region04 : 0x0000001000000000-0x0000007fffffffff M: ()
S/U: ()
Domain0 Region05 : 0x0000000020000000-0x000000003fffffff M: ()
S/U: ()
Domain0 Region06 : 0x0000000000000000-0xffffffffffffffff M: ()
S/U: (R,W,X)
Domain0 Next Address : 0x0000000080200000
Domain0 Next Arg1 : 0x00000000f8000000
Domain0 Next Mode : S-mode
Domain0 SysReset : yes
Domain0 SysSuspend : yes
Boot HART ID : 0
Boot HART Domain : root
Boot HART Priv Version : v1.11
Boot HART Base ISA : rv64imafdchx
Boot HART ISA Extensions : sscofpmf,zihpm
Boot HART PMP Count : 8
Boot HART PMP Granularity : 12 bits
Boot HART PMP Address Bits: 39
Boot HART MHPM Info : 4 (0x00000078)
Boot HART MIDELEG : 0x0000000000002666
Boot HART MEDELEG : 0x0000000000f00509
U-Boot 2024.01 (Nov 06 2024 - 05:26:46 +0000)
CPU: rv64imafdc_zba_zbb
Model: SiFive HiFive Premier P550
DRAM: 32 GiB (effective 16 GiB)
Core: 113 devices, 30 uclasses, devicetree: separate
Warning: Device tree includes old 'u-boot,dm-' tags: please fix by 2023.07!
MMC: sdhci@50450000: 0, sd@50460000: 1
Loading Environment from SPIFlash... SF: Detected w25q128fw with page
size 256 Bytes, erase size 4 KiB, total 16 MiB
*** Warning - bad CRC, using default environment
eswin_pcie_wait_link_up: error: wait linkup timeout
PCIE-0: Link up (Gen1-x1, Bus0)
[display_init]Eswin UBOOT DRM driver version: v1.0.1
In: serial,usbkbd
Out: vidconsole,serial
Err: vidconsole,serial
Bootspi flash write protection enabled
Get som info from flash
Cpu volatge need boost above 1.6 Ghz!
Could not find "root" partition
Low power features will not be supported!
Net: eth0: ethernet@50400000
Working FDT set to ed51c710
starting USB...
Bus usb1@50490000: Register 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.10
scanning bus usb1@50490000 for devices... 3 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found
AHCI 0001.0301 32 slots 1 ports 6 Gbps 0x1 impl SATA mode
flags: 64bit ncq stag pm led clo only pmp pio slum part
scanning bus for devices...
Rescanning SATA bus for devices...
SATA Device Info:
S/N: S14TNSADC44073
Product model number: SAMSUNG MZ7TD128HAFV-000L1
Firmware version: DXT05L0Q
Capacity: 250069680 sectors
Hit any key to stop autoboot: 0
=>
=> printenv
arch=riscv
baudrate=115200
board=hifive_premier_p550
board_info=SF106SKB2451000181
board_name=hifive_premier_p550
boot_targets=mmc1 usb sata mmc0
bootcmd=bootflow scan;
bootdelay=2
cpu=eic770x
emmc_dev=0
eth1addr=8c:00:00:00:00:00
ethaddr=02:42:01:00:00:01
fdt_addr=ed51c710
fdt_addr_r=0x88000000
fdt_high=0xffffffffffffffff
fdtaddr=ed51c710
fdtcontroladdr=ed51c710
fdtfile=eswin/eic7700-hifive-premier-p550.dtb
gpt_partition=gpt write mmc ${emmc_dev} $partitions
initrd_high=0xffffffffffffffff
kernel_addr_r=0x84000000
kernel_comp_addr_r=0xa0000000
kernel_comp_size=0x4000000
loadaddr=0x80200000
partitions=name=boot,start=1MiB,size=512MiB,type=${typeid_efi},uuid=${uuid_boot};name=swap,size=4096MiB,type=${typeid_swap},uuid=${uuid_swap};name=root,size=30GiB,type=${typeid_filesystem},uuid=${uuid_root};name=userdata,type=${typeid_filesystem},size=-;
preboot=setenv fdt_addr ${fdtcontroladdr};fdt addr ${fdtcontroladdr};usb
start;sata init;nvme scan
pxefile_addr_r=0x88200000
ram_size=32
ramdisk_addr_r=0x88300000
scriptaddr=0x88100000
sdupdate=ext4load mmc 1:1 0x90000000 sdupdate.scr;source 0x90000000
stderr=vidconsole,serial
stdin=serial,usbkbd
stdout=vidconsole,serial
typeid_efi=C12A7328-F81F-11D2-BA4B-00A0C93EC93B
typeid_filesystem=0FC63DAF-8483-4772-8E79-3D69D8477DE4
typeid_swap=0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
usbupdate=ext4load usb 0 0x90000000 usbupdate.scr;source 0x90000000
uuid_boot=44b7cb94-f58c-4ba6-bfa4-7d2dce09a3a5
uuid_root=b0f77ad6-36cd-4a99-a8c0-31d73649aa08
uuid_swap=5ebcaaf0-e098-43b9-beef-1f8deedd135e
vendor=eswin
Environment size: 1550/524284 bytes
=>
Here I can type "boot" and a very few lines go whizzing by faster than
I can read and whammo I see the grub menu. This is all on the serial
console of course.
I can stop the boot timeout ( 3 secs ) and then enter the grub menu to
see what it says :
setparams 'Ubuntu'
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root
42713e07-4e13-4248-b7b9-7147d117
echo 'Loading Linux 6.6.21-9-premier ...'
linux /boot/vmlinuz-6.6.21-9-premier
root=UUID=42713e07-4e13-4248rlycon=sbi
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-6.6.21-9-premier
echo 'Loading device tree blob...'
devicetree /boot/dtb-6.6.21-9-premier
So my guess is that the uuid numbers for various filesystems and types
are common info that anyone would know. The devicetree thing looks to be
very important and the initrd file *may* contain just enough modules to
get the thing off the ground.
Any insights would be greatly appreciated.
--
--
Dennis Clarke
RISC-V/SPARC/PPC/ARM/CISC
UNIX and Linux spoken