Ports/riscv64: различия между версиями
(→RISC-V) |
Нет описания правки |
||
Строка 1: | Строка 1: | ||
= | == RISC-V == | ||
RISC-V является [https://riscv.org/risc-v-isa архитектурой с открытым набором комманд (ISA)]. | RISC-V является [https://riscv.org/risc-v-isa архитектурой с открытым набором комманд (ISA)]. | ||
Строка 23: | Строка 23: | ||
Для целей тестирования выполняется сборка образов для QEMU, платы [[HiFive Unleashed]] и SiFive [[HiFive Unmatched]]. Подробнее об этом можно прочитать [https://www.altlinux.org/Regular/riscv64 тут]. | Для целей тестирования выполняется сборка образов для QEMU, платы [[HiFive Unleashed]] и SiFive [[HiFive Unmatched]]. Подробнее об этом можно прочитать [https://www.altlinux.org/Regular/riscv64 тут]. | ||
== | == Репозиторий == | ||
Строка 38: | Строка 38: | ||
rpm [sisyphus-riscv64] http://mirror.yandex.ru/altlinux/ports/riscv64 Sisyphus/noarch classic | rpm [sisyphus-riscv64] http://mirror.yandex.ru/altlinux/ports/riscv64 Sisyphus/noarch classic | ||
== | == Рабочий план == | ||
* Следующие ядра Linux были протестированы на SiFive HiFive Unleashed: | * Следующие ядра Linux были протестированы на SiFive HiFive Unleashed: | ||
Строка 66: | Строка 66: | ||
* Образ для QEMU ([https://www.altlinux.org/Regular/riscv64#%D0%97%D0%B0%D0%BF%D1%83%D1%81%D0%BA_%D0%BD%D0%B0_QEMU ссылка]) -- '''ГОТОВО''' | * Образ для QEMU ([https://www.altlinux.org/Regular/riscv64#%D0%97%D0%B0%D0%BF%D1%83%D1%81%D0%BA_%D0%BD%D0%B0_QEMU ссылка]) -- '''ГОТОВО''' | ||
== | == OpenSBI == | ||
=== QEMU virt === | === QEMU virt === | ||
Для запуска образов на QEMU необходимо выполнить следующие шаги: | Для запуска образов на QEMU необходимо выполнить следующие шаги: |
Версия от 16:55, 7 октября 2021
RISC-V
RISC-V является архитектурой с открытым набором комманд (ISA). ISA RISC-V имеют лицензию Creative Commons license (CC BY 4.0). Любой желающий может получить финальную версию ISA пользовательского уровня и черновик ISA привилегированного уровня.
Другая ключевая особенность архитектуры RISC-V - её расширяемость, что позволяет создавать разнообразные реализации. Минимальная спецификация архитектуры RISC-V включает в себя только инструкции для записи, сохранения, переходов и целочисленной арифметики. Код инструкций не зависит от размера регистра, минимальная спецификация обозначается RV32I, RV64I или RV128I ("I" означает integer) для размеров операнда 4, 8 или 16 байт соответственно. На данный момент порт Linux работает со спецификацией "RV64IMAFDC" или "RV64GC" ("G" == "IMAFD"):
- I - целочисленные базовые инструкции;
- M - умножение и деление целых чисел;
- A - атомарные операции;
- F - число с плавающей запятой одинарной точности;
- D - число с плавающей запятой двойной точности;
- C - сжатые 16-битные инструкции.
На данной странице можно найти последнюю информацию о статусе порта ALT на RISC-V (RV64GC). Сборка системы ведётся на плате SiFive HiFive Unmatched. Для целей тестирования выполняется сборка образов для QEMU, платы HiFive Unleashed и SiFive HiFive Unmatched. Подробнее об этом можно прочитать тут.
Репозиторий
RPM/SRPM репозиторий можно найти по этой ссылке. В виде sources.list для apt:
rpm [sisyphus-riscv64] http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64 Sisyphus/riscv64 classic # rpm [sisyphus-riscv64] http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64 Sisyphus/riscv64 debuginfo rpm [sisyphus-riscv64] http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64 Sisyphus/noarch classic
Зеркало на Яндексе (скачивается быстрее, иногда отстаёт):
rpm [sisyphus-riscv64] http://mirror.yandex.ru/altlinux/ports/riscv64 Sisyphus/riscv64 classic # rpm [sisyphus-riscv64] http://mirror.yandex.ru/altlinux/ports/riscv64 Sisyphus/riscv64 debuginfo rpm [sisyphus-riscv64] http://mirror.yandex.ru/altlinux/ports/riscv64 Sisyphus/noarch classic
Рабочий план
- Следующие ядра Linux были протестированы на SiFive HiFive Unleashed:
- 4.15, 4.19-rc2, 4.19.6, 5.0.19, 5.1.9
- 5.9.1, 5.11.8 git
- Ядро было протестировано на SiFive HiFive Unleashed и Unmatched:
- 5.12.18 git
- Методы загрузки (boot):
- Berkeley bootloader -- ГОТОВО
- U-BOOT (link) -- ГОТОВО
- Порт Sisyphus -- В ПРОЦЕССЕ
- Toolchain -- ГОТОВО
- Linux Kernel -- ГОТОВО
- X11 -- ГОТОВО
- Desktop Environments:
- XFCE -- ГОТОВО
- GNOME -- В ПРОЦЕССЕ
- MATE -- В ПРОЦЕССЕ
- Cinnamon -- В ПРОЦЕССЕ
- LXQt -- В ПРОЦЕССЕ
- Образ ALT metaprofile -- ГОТОВО
- Girar Builder -- ГОТОВО
- Образ для QEMU (ссылка) -- ГОТОВО
OpenSBI
QEMU virt
Для запуска образов на QEMU необходимо выполнить следующие шаги:
Шаг 0. Для запуска порта ALT на RISC-V необходимо установить QEMU с поддержкой riscv64. Например, в случае хостовой системы на ALT x86_64: qemu-system-riscv-core.
Шаг 1.a Прошивка OpenSBI для QEMU virt находится внутри qcow2/qcow2c. Скопируем её из образа:
root$ qemu-nbd -c /dev/nbd0 qemu-riscv64.qcow2c
root$ mount /dev/nbd0p1 /mnt
root$ cp -v /mnt/usr/share/opensbi/qemu/virt/firmware/fw_payload.elf .
user$ FIRM=./fw_payload.elf
Шаг 1.b Альтернативный вариант: загрузить и установить последнюю версию пакета прошивки OpenSBI для QEMU virt. После этого прошивка OpenSBI будет находится в /usr/share/opensbi/qemu/virt/firmware/fw_payload.elf
Например:
user$ curl -O http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64/Sisyphus/noarch/RPMS.classic/opensbi-firmware-qemu-0.6-alt1.noarch.rpm
root$ rpm -i opensbi-firmware-qemu-0.6-alt1.noarch.rpm
user$ FIRM=/usr/share/opensbi/qemu/virt/firmware/fw_payload.elf
Шаг 2. Запуск образа qcow2/qcow2c на QEMU можно осуществить следующей командой, указав в QCOW путь к образу:
$ QCOW=qemu-riscv64.qcow2c
$ qemu-system-riscv64 \
-nographic -machine virt -kernel "$FIRM" \
-m 2G -smp cpus=4 \
-drive file="$QCOW",id=hd0 -device virtio-blk-device,drive=hd0 \
-netdev user,id=eth0,hostfwd=tcp::5900-:5900 -device virtio-net-device,netdev=eth0
Шаг 3. Дальнейшая настройка графической системы выполняется при помощи VNC. При подключении по VNC установлен стандартный пароль alt, его будет предложено поменять при первоначальной настройке.
HiFive Unleashed
Для запуска образов на SiFive HiFive Unleashed (FU540) SoC необходимо выполнить следующие шаги:
Шаг 0. Предполагается, что microSD карточка находится в /dev/sdb. Выполним разметку microSD и создание файловой системы:
root$ sgdisk -g --clear \
--new=2::+32K --change-name=2:'fsbl' --typecode=2:5B193300-FC78-40CD-8002-E86C45580B47 \
--new=3::+8M: --change-name=3:'opensbi-uboot' --typecode=3:2E54B353-1271-4842-806F-E436D6AF6985 \
--new=1::-0 --change-name=1:'root' --typecode=1:0FC63DAF-8483-4772-8E79-3D69D8477DE4 \
/dev/sdb
root$ mkfs.ext4 /dev/sdb1
root$ mount /dev/sdb1 /mnt
root$ tar -xpvf hifive-unleashed-riscv64.tar.xz -C /mnt
Шаг 1.а. First Stage BootLoader (FSBL) и OpenSBI находятся внутри распакованного дерева /mnt. Запишем их на разделы 2 и 3 соответственно, а затем размонтируем раздел:
root$ dd if=/mnt/usr/share/fu540_boot/fsbl.bin of=/dev/sdb2 bs=1M
root$ dd if=/mnt/usr/share/opensbi/sifive/fu540/firmware/fw_payload.bin of=/dev/sdb3 bs=1M
root$ sync; umount /mnt
Шаг 1.б. Альтернативный вариант: загрузить и установить 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/sdb2 bs=1M
root$ dd if=/usr/share/opensbi/sifive/fu540/firmware/fw_payload.bin of=/dev/sdb3 bs=1M
root$ sync; umount /mnt
Шаг 3. Система на microSD каточке готова к загрузке. Дальнейшая настройка графической системы выполняется при помощи VNC. При подключении по VNC установлен стандартный пароль alt, его будет предложено поменять при первоначальной настройке.
Полезные ссылки:
- утилиты для Berkeley bootloader для слияния ядра Linux в bbl.bin с dummy payload.
- RISC-V ISA
- All Aboard -- интересный блог Палмера Даббелта о RISC-V, toolchain, и т.д.
- OSSDEVCONF-2018
- RISC-V: стандарт, изменивший мир микропроцессоров
- Наборы команд должны быть свободны: доводы за RISC-V