HiFive Unleashed

Материал из ALT Linux Wiki
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

SiFive HiFive Unleashed -- плата с SoC Freedom U540 на архитектуре RISCV64GC. На данный момент снята с производства, но всё ещё поддерживается портом Sisyphus на riscv64.

Образы ALT

На текущий момент еженедельно собираются регулярные сборки: Regular/riscv64 .

На основе sisyphus_riscv64 была выпущена экспериментальная сборка Simply Linux, также поддерживающая Unleashed.

Образы требуется записать через alt-rootfs-installer или вручную.

Запись с помощью alt-rootfs-installer

Регулярные сборки, начиная с 20220120, нельзя записать указанной ниже командой, поскольку в них использован U-Boot 2022.01. Можно использовать версию alt-rootfs-installer из ветки devel, указав --target=sifive_unleashed, или установить вручную.

Требуется установить alt-roofs-installer версии не ниже 0.5.3.

root# alt-rootfs-installer --target=sifive_unleashed --image-in=/path/to/<image>-riscv64.img.xz --media=/dev/sdX

Опцию --vnc=1 добавлять не требуется, режим vnc для alterator-setup включается по дефолту. Про режим vnc подробнее написано в: Regular/riscv64#VNC .

Для более старых образов может понадобится использовать --target=HiFive-Unleashed-opensbi.

Установка образов вручную

Начиная с версии U-Boot 2022.01 собрается U-Boot SPL для Unleashed (файл /usr/share/u-boot/sifive_unleashed/u-boot-spl.bin), который рекомендуется использовать вместо FSBL.

При использовании такого U-Boot установка образа для Unleashed аналогична Unmatched и может быть сделана, как описано в статье HiFive_Unmatched#Установка_образов_вручную.

Все упоминания каталога usr/share/u-boot/sifive_unmatched нужно заменить на usr/share/u-boot/sifive_unleashed.


Для запуска образов на SiFive HiFive Unleashed (FU540) SoC необходимо выполнить следующие шаги:

Шаг 0. Запись образа и монтирование:

root# xzcat /path/to/<image>-riscv64.img.xz | dd of=/dev/sdx bs=4M status=progress 
root# udiskctl mount /dev/sdX2

Корневой раздел будет примонтирован в /run/media/root/<UUID>

Шаг 1. Добавляем разделы для записи First Stage BootLoader (FSBL) и U-Boot :

root# sgdisk -a 1 \
        --new=3::+32K    --change-name=3:'fsbl'          --typecode=3:5B193300-FC78-40CD-8002-E86C45580B47 \
        --new=4::+8M:    --change-name=4:'opensbi-uboot' --typecode=4:2E54B353-1271-4842-806F-E436D6AF6985 \
/dev/sdX

Шаг 2.а. First Stage BootLoader (FSBL) и OpenSBI находятся в корневом разделе записанного образа. Запишем их на разделы 3 и 4 соответственно:

root# dd if=/run/media/root/<UUID>/usr/share/fu540_boot/fsbl.bin of=/dev/sdX3 bs=1M
root# dd if=/run/media/root/<UUID>/usr/share/opensbi/sifive/fu540/firmware/fw_payload.bin of=/dev/sdX4 bs=1M
root# sync

Шаг 2.б. Альтернативный вариант: загрузить и установить First Stage BootLoader (FSBL) и OpenSBI для FU540.

Например:

root# curl -O http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64/Sisyphus/noarch/RPMS.classic/fu540-bootloaders-0-alt1.git54bfc90.noarch.rpm
root# curl -O http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64/Sisyphus/noarch/RPMS.classic/opensbi-firmware-fu540-0.6-alt1.noarch.rpm
root# rpm -i fu540-bootloaders-0-alt1.git54bfc90.noarch.rpm
root# rpm -i opensbi-firmware-fu540-0.6-alt1.noarch.rpm
root# dd if=/usr/share/fu540_boot/fsbl.bin of=/dev/sdX3 bs=1M
root# dd if=/usr/share/opensbi/sifive/fu540/firmware/fw_payload.bin of=/dev/sdX4 bs=1M
root# sync

Шаг 3. Переключить режим загрузки с EFI на extlinux.conf. Для этого необходимо убрать флаг boot с раздела fat32:

root# parted /dev/sdX set 1 boot off


Обновление U-Boot на SD-карте

На данный момент в ALT u-boot (SPL и proper) автоматически никак не обновляется. Если после обновления пакета u-boot-sifive в репозитории хочется обновить U-Boot на SD-карте, это можно сделать, выполнив следующие команды от рута:

cd /usr/share/u-boot/sifive_unleashed
dd if=u-boot-spl.bin of=/dev/disk/by-partlabel/spl bs=1M
dd if=u-boot.itb  of=/dev/disk/by-partlabel/uboot
sync

Если вместо label хочется использовать uuid (/dev/disk/by-partuuid) или сам девайс (/dev/sdX), то найти нужный элемент можно при помощи команды lsblk -o +PARTLABEL,PARTTYPE,PARTUUID.

Для загрузки с SD-карты установите переключатели MSEL[3:0] в положение 1011 (единица ближе к процессору).