HiFive Unleashed
Status
Please refer to soc.sifive, pull request is at https://github.com/openwrt/openwrt/pull/9980
Hardware Highlights
- First Linux-capable RISC-V development board
- Four RISC-V cores
- 8Gb DDR4 memory
- 1Gbit ethernet
- SD-slot
- 32Mb QSPI (for FSBL/devicetree)
- FMC port for later expansion (i.e. Microsemi PCIe expansion board)
- Console via microUSB port
Installation
Manual build
You can build an SD card image directly from buildroot for your device. The process below assumes your SD-card is at /dev/sdc.
- Run make menuconfig
- Select Target → SiFive U-based RISC-V boards
- If you want to use the glibc-based build, go to Advanced configuration options → Toolchain options → C Library implementation, select Use glibc
- Start the build
- The built SD card image will be in bin/targets/sifiveu/generic (or generic-glibc)
- zcat if=bin/targets/sifiveu/generic/openwrt-sifiveu-generic-sifive_unleashed-ext4-sdcard.img.gz |dd of=/dev/sdc
Hardware
Serial
Serial is available via the microUSB port of the Unleashed board. Use the second serial port (i.e. ttyUSB1).
Bootlogs
OpenWrt bootlog
U-Boot SPL 2022.10-OpenWrt-r23110+6-dc2d4d7393 (May 27 2023 - 19:53:56 +0000) Trying to boot from MMC1 U-Boot 2022.10-OpenWrt-r23110+6-dc2d4d7393 (May 27 2023 - 19:53:56 +0000) CPU: rv64imafdc Model: SiFive HiFive Unleashed A00 DRAM: 8 GiB Core: 35 devices, 22 uclasses, devicetree: separate MMC: spi@10050000:mmc@0: 0 Loading Environment from SPIFlash... SF: Detected is25wp256 with page size 256 Bytes, erase size 4 KiB, total 32 MiB *** Warning - bad CRC, using default environment In: serial@10010000 Out: serial@10010000 Err: serial@10010000 Net: sifive-reset reset: failed to get cltx_reset reset eth0: ethernet@10090000 Hit any key to stop autoboot: 0 switch to partitions #0, OK mmc0 is current device Scanning mmc 0:3... Found U-Boot script /boot.scr 358 bytes read in 3 ms (116.2 KiB/s) ## Executing script at 8c100000 4640158 bytes read in 2834 ms (1.6 MiB/s) 8060 bytes read in 10 ms (787.1 KiB/s) Uncompressing Kernel Image Moving Image from 0x84000000 to 0x80200000, end=81327000 ## Flattened Device Tree blob at 8c000000 Booting using the fdt blob at 0x8c000000 Using Device Tree in place at 000000008c000000, end 000000008c004f7b Starting kernel ... [ 0.000000] Linux version 5.15.113 (builder@buildhost) (riscv64-openwrt-linux-musl-gcc (OpenWrt GCC 12.3.0 r23110+6-dc2d4d7393) 12.3.0, GNU ld (GNU Binutils) 2.40.0) #0 SMP Sat May 27 19:53:56 2023 [ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000 [ 0.000000] Machine model: SiFive HiFive Unleashed A00 [ 0.000000] earlycon: sbi0 at I/O port 0x0 (options '') [ 0.000000] printk: bootconsole [sbi0] enabled [ 0.000000] efi: UEFI not found. [ 0.000000] Zone ranges: [ 0.000000] DMA32 [mem 0x0000000080200000-0x00000000ffffffff] [ 0.000000] Normal [mem 0x0000000100000000-0x000000027fffffff] [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000080200000-0x000000027fffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000027fffffff] [ 0.000000] SBI specification v1.0 detected [ 0.000000] SBI implementation ID=0x1 Version=0x10002 [ 0.000000] SBI TIME extension detected [ 0.000000] SBI IPI extension detected [ 0.000000] SBI RFENCE extension detected [ 0.000000] SBI SRST extension detected [ 0.000000] SBI v0.2 HSM extension detected [ 0.000000] CPU with hartid=0 is not available [ 0.000000] CPU with hartid=0 is not available [ 0.000000] riscv: ISA extensions acdfim [ 0.000000] riscv: ELF capabilities acdfim [ 0.000000] percpu: Embedded 16 pages/cpu s24920 r8192 d32424 u65536 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 2063880 [ 0.000000] Kernel command line: console=ttySIF0,115200 earlycon=sbi root=/dev/mmcblk0p4 rootwait [ 0.000000] Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes, linear) [ 0.000000] Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes, linear) [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off [ 0.000000] software IO TLB: mapped [mem 0x00000000fbfff000-0x00000000fffff000] (64MB) [ 0.000000] Memory: 8158108K/8386560K available (5804K kernel code, 4871K rwdata, 4096K rodata, 2120K init, 328K bss, 228452K reserved, 0K cma-reserved) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] rcu: Hierarchical RCU implementation. [ 0.000000] rcu: RCU event tracing is enabled. [ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4. [ 0.000000] Tracing variant of Tasks RCU enabled. [ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies. [ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4 [ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0 [ 0.000000] CPU with hartid=0 is not available [ 0.000000] riscv-intc: unable to find hart id for /cpus/cpu@0/interrupt-controller [ 0.000000] riscv-intc: 64 local interrupts mapped [ 0.000000] plic: interrupt-controller@c000000: mapped 53 interrupts with 4 handlers for 9 contexts. [ 0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [4] [ 0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns [ 0.000001] sched_clock: 64 bits at 1000kHz, resolution 1000ns, wraps every 2199023255500ns [ 0.008642] Console: colour dummy device 80x25 [ 0.012997] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=10000) [ 0.023199] pid_max: default: 32768 minimum: 301 [ 0.029206] Mount-cache hash table entries: 16384 (order: 5, 131072 bytes, linear) [ 0.036433] Mountpoint-cache hash table entries: 16384 (order: 5, 131072 bytes, linear) [ 0.047980] ASID allocator disabled [ 0.050942] rcu: Hierarchical SRCU implementation. [ 0.056018] EFI services will not be available. [ 0.060848] smp: Bringing up secondary CPUs ... [ 0.067816] smp: Brought up 1 node, 4 CPUs [ 0.075096] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns [ 0.084262] futex hash table entries: 1024 (order: 4, 65536 bytes, linear) [ 0.093179] NET: Registered PF_NETLINK/PF_ROUTE protocol family [ 0.099092] thermal_sys: Registered thermal governor 'step_wise' [ 0.117555] vgaarb: loaded [ 0.126033] SCSI subsystem initialized [ 0.129949] usbcore: registered new interface driver usbfs [ 0.135130] usbcore: registered new interface driver hub [ 0.140472] usbcore: registered new device driver usb [ 0.145701] pps_core: LinuxPPS API ver. 1 registered [ 0.150565] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> [ 0.159797] PTP clock support registered [ 0.163811] EDAC MC: Ver: 3.0.0 [ 0.168604] clocksource: Switched to clocksource riscv_clocksource [ 0.178736] NET: Registered PF_INET protocol family [ 0.185771] IP idents hash table entries: 131072 (order: 8, 1048576 bytes, linear) [ 0.204830] tcp_listen_portaddr_hash hash table entries: 4096 (order: 4, 65536 bytes, linear) [ 0.212917] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear) [ 0.220524] TCP established hash table entries: 65536 (order: 7, 524288 bytes, linear) [ 0.230495] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes, linear) [ 0.240580] TCP: Hash tables configured (established 65536 bind 65536) [ 0.246897] UDP hash table entries: 4096 (order: 5, 131072 bytes, linear) [ 0.253764] UDP-Lite hash table entries: 4096 (order: 5, 131072 bytes, linear) [ 0.261436] NET: Registered PF_UNIX/PF_LOCAL protocol family [ 0.266437] PCI: CLS 0 bytes, default 64 [ 0.271793] workingset: timestamp_bits=46 max_order=21 bucket_order=0 [ 0.289050] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 0.294493] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc. [ 0.366813] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249) [ 0.373744] io scheduler mq-deadline registered [ 0.378118] io scheduler kyber registered [ 3.876153] sifive_spi 10040000.spi: mapped; irq=14, cs=1 [ 3.881574] spi-nor spi0.0: is25wp256 (32768 Kbytes) [ 3.887829] sifive_spi 10050000.spi: mapped; irq=15, cs=1 [ 3.894391] macb 10090000.ethernet: Registered clk switch 'sifive-gemgxl-mgmt' [ 3.900951] macb 10090000.ethernet: GEM doesn't support hardware ptp. [ 3.909106] macb 10090000.ethernet eth0: Cadence GEM rev 0x10070109 at 0x10090000 irq 16 (70:b3:d5:92:f0:67) [ 3.918391] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 3.924690] ehci-pci: EHCI PCI platform driver [ 3.929295] usbcore: registered new interface driver usb-storage [ 3.935819] EDAC DEVICE0: Giving out device to module Sifive ECC Manager controller sifive_edac.0: DEV sifive_edac.0 (INTERRUPT) [ 3.946795] sdhci: Secure Digital Host Controller Interface driver [ 3.952821] sdhci: Copyright(c) Pierre Ossman [ 3.981574] mmc_spi spi1.0: SD/MMC host mmc0, no DMA, no WP, no poweroff [ 3.987606] sdhci-pltfm: SDHCI platform and OF driver helper [ 3.993728] hid: raw HID events driver (C) Jiri Kosina [ 3.998453] usbcore: registered new interface driver usbhid [ 4.003838] usbhid: USB HID core driver [ 4.008943] NET: Registered PF_INET6 protocol family [ 4.015312] Segment Routing with IPv6 [ 4.018287] In-situ OAM (IOAM) with IPv6 [ 4.022235] NET: Registered PF_PACKET protocol family [ 4.027181] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this. [ 4.040283] 8021q: 802.1Q VLAN Support v1.8 [ 4.047039] Waiting for root device /dev/mmcblk0p4... [ 4.064521] mmc0: host does not support reading read-only switch, assuming write-enable [ 4.071769] mmc0: new SDHC card on SPI [ 4.076927] mmcblk0: mmc0:0000 SD4GB 3.71 GiB [ 4.098313] Alternate GPT is invalid, using primary GPT. [ 4.102899] mmcblk0: p1 p2 p3 p4 [ 4.192529] EXT4-fs (mmcblk0p4): mounted filesystem without journal. Opts: (null). Quota mode: disabled. [ 4.201295] VFS: Mounted root (ext4 filesystem) readonly on device 179:4. [ 4.213723] Freeing unused kernel image (initmem) memory: 2120K [ 4.248661] Run /sbin/init as init process [ 4.674267] init: Console is alive [ 5.416789] kmodloader: loading kernel modules from /etc/modules-boot.d/* [ 5.434573] kmodloader: done loading kernel modules from /etc/modules-boot.d/* [ 5.442693] init: - preinit - [ 5.973130] random: jshn: uninitialized urandom read (4 bytes read) [ 6.003057] random: jshn: uninitialized urandom read (4 bytes read) [ 6.023128] random: jshn: uninitialized urandom read (4 bytes read) [ 6.087306] macb 10090000.ethernet eth0: PHY [10090000.ethernet-ffffffff:00] driver [Generic PHY] (irq=POLL) [ 6.096403] macb 10090000.ethernet eth0: configuring for phy/gmii link mode Press the [f] key and hit [enter] to enter failsafe mode Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level [ 8.194428] mount_root: mounting /dev/root [ 8.570577] EXT4-fs (mmcblk0p4): re-mounted. Opts: (null). Quota mode: disabled. [ 8.736905] urandom-seed: Seed file not found (/etc/urandom.seed) [ 8.789072] procd: - early - [ 9.509080] procd: - ubus - [ 9.539284] random: ubusd: uninitialized urandom read (4 bytes read) [ 9.561497] random: ubusd: uninitialized urandom read (4 bytes read) [ 9.567252] random: ubusd: uninitialized urandom read (4 bytes read) [ 9.575298] procd: - init - Please press Enter to activate this console. [ 9.903680] urngd: jent-rng init failed, err: 2 [ 9.913477] kmodloader: loading kernel modules from /etc/modules.d/* [ 10.313761] PPP generic driver version 2.4.2 [ 10.318133] NET: Registered PF_PPPOX protocol family [ 10.328260] kmodloader: done loading kernel modules from /etc/modules.d/* [ 11.391842] random: jshn: uninitialized urandom read (4 bytes read) [ 11.418778] random: jshn: uninitialized urandom read (4 bytes read) [ 11.438855] random: jshn: uninitialized urandom read (4 bytes read) [ 12.641110] random: jshn: uninitialized urandom read (4 bytes read) [ 19.278623] random: crng init done [ 19.281249] random: 65 urandom warning(s) missed due to ratelimiting [ 22.372371] macb 10090000.ethernet eth0: PHY [10090000.ethernet-ffffffff:00] driver [Generic PHY] (irq=POLL) [ 22.381560] macb 10090000.ethernet eth0: configuring for phy/gmii link mode [ 22.389763] br-lan: port 1(eth0) entered blocking state [ 22.394218] br-lan: port 1(eth0) entered disabled state [ 22.399859] device eth0 entered promiscuous mode BusyBox v1.36.1 (2023-05-27 19:53:56 UTC) built-in shell (ash) _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- OpenWrt SNAPSHOT, r23110+6-dc2d4d7393 ----------------------------------------------------- === WARNING! ===================================== There is no root password defined on this device! Use the "passwd" command to set up a new password in order to prevent unauthorized SSH logins. -------------------------------------------------- root@OpenWrt:/#