Ports/riscv64: различия между версиями

Материал из ALT Linux Wiki
м (→‎RISC-V: небольшая вычитка)
 
(не показано 45 промежуточных версий 8 участников)
Строка 1: Строка 1:
= '''RISC-V''' =
== RISC-V ==


RISC-V is an [https://riscv.org/risc-v-isa open and free instruction set architecture (ISA)].
RISC-V (читается как “risk-five”) -- [https://riscv.org/risc-v-isa архитектура процессоров с открытым набором комманд (ISA)]. ISA RISC-V имеют лицензию [https://creativecommons.org/licenses/by/4.0/ Creative Commons license (CC BY 4.0)]. Любой желающий может получить финальную версию [https://riscv.org/specifications/ спецификаций ISA], а также получить черновики разрабатываемых расширений и поучаствовать в их разработке.
The RISC-V ISA specifications are licensed under a [https://creativecommons.org/licenses/by/4.0/ Creative Commons license (CC BY 4.0)].
Anyone could get the final versions of the [https://riscv.org/specifications/ user-level ISA specifications] and drafts
of the [https://riscv.org/specifications/compressed-isa/ compressed] and [https://riscv.org/specifications/privileged-isa/ privileged] ISA specifications.


Another key feature of the RISC-V architecture that it is scalable and allows multiple implementations. The minimal specification has the
Другая ключевая особенность архитектуры RISC-V - её расширяемость. Базовая спецификация архитектуры RISC-V включает в себя только инструкции для записи, сохранения, переходов и целочисленной арифметики. Минимальная спецификация обозначается RV32I, RV64I или RV128I ("I" означает integer) для размеров операнда 4, 8 или 16 байт соответственно. Конкретные реализации могут дополнять базовую спецификацию расширениями, как стандартными, так и специфичными для конкретного вендора или изделия. Стандартные расширения чаще всего обозначаемыми одной латинской буквой, например расширение '''M''' содержит инструкции для умножения и деления целых чисел, '''A''' -- атомарные операции и т.д.
commands to store and load, jump and integer arithmetic. It supports the 32-, 64- and 128-bit register sizes: "RV32I, RV64I and RV128I" ("I" stands for integer).
This Linux port runs on "RV64IMAFDC" or "RV64GC" ("G" == "IMAFD"):
* <tt>'''I'''</tt> - Integer and basic instructions
* <tt>'''M'''</tt> - Multiply and divide
* <tt>'''A'''</tt> - Atomic operations
* <tt>'''F'''</tt> - Single precision floating point
* <tt>'''D'''</tt> - Double precision floating point
* <tt>'''C'''</tt> - Compressed instructions


At this page one could find the latest information about ALT port status for the new platform - RISC-V (RV64GC). We're building it on the [https://www.crowdsupply.com/sifive/hifive-unleashed HiFive Unleashed] board from SiFive.
На данный момент порт Linux работает со спецификацией "RV64IMAFDC"<ref>В принятой в 2019 году версии спецификации RISC-V ISA из базовых наборов инструкций были выделены расширения Zifencei и Zicsr, которые также входят в G и нужны Linux'у, но усложнять разбором ещё и этого факта вводный раздел я, пожалуй, не стану.</ref>:
* <tt>'''I'''</tt> - целочисленные базовые инструкции;
* <tt>'''M'''</tt> - умножение и деление целых чисел;
* <tt>'''A'''</tt> - атомарные операции;
* <tt>'''F'''</tt> - числа с плавающей запятой одинарной точности;
* <tt>'''D'''</tt> - числа с плавающей запятой двойной точности;
* <tt>'''C'''</tt> - "сжатые" (16-битные) инструкции.


== '''Working plan''' ==
Для удобства принято сокращение  "G" == "IMAFD", то есть процессоры, поддерживаемые портом, должны реализовывать архитектуру rv64gc.


* The following Linux kernels have been bare metal tested on SiFive HiFive Unleashed:
Архитектура Сизифа и пакетов RPM, собранных под rv64gc, называется <tt>riscv64</tt>.
** 4.15
** 4.19-rc2
** 4.19.6 ([http://ftp.altlinux.org/pub/people/arei/riscv/repo/riscv64/RPMS.hasher/kernel-image-un-def-4.19.6-alt3.riscv64.rpm image RPM], [http://ftp.altlinux.org/pub/people/arei/riscv/repo/riscv64/SRPMS.hasher/kernel-image-un-def-4.19.6-alt3.src.rpm SRPM], [http://git.altlinux.org/people/arei/packages/kernel-image.git?p=kernel-image.git;a=commit;h=a420ee4217797b60b27ce60fd80a39166ddf2143 git])


* BOOT methods:
== Порт Сизифа ==
** Berkeley bootloader -- '''DONE'''
** U-BOOT ([http://git.altlinux.org/people/lineprinter/public/u-boot.git?p=u-boot.git;a=blob;f=README.alt;hb=HEAD link]) -- '''DONE'''


* [[Sisyphus]] port -- '''IN PROGRESS'''
Порт [[Sisyphus]] на архитектуру riscv64 (RV64GC) развивается с 2018 года. Поддерживается (и тестируется) работа на платформах:
*# Toolchain (see the status above) -- '''DONE'''
*# Linux Kernel -- '''DONE'''
*# X11 -- '''DONE'''
*# Desktop Environments -- '''IN PROGRESS'''
* ALT image [[m-p|metaprofile]] -- '''IN PROGRESS'''
* [[girar_builder|Girar Builder]] -- '''IN PROGRESS'''
* QEMU image ([[#QEMU|see below]]) -- '''DONE'''


One could find the latest rootfs snapshot (Nov 2018) [http://ftp.altlinux.org/pub/people/arei/riscv/rootfs here].
* [[HiFive Unmatched]]
The RPM/SRPM repository at [http://ftp.altlinux.org/pub/people/arei/riscv/repo/riscv64 here].
* [[HiFive Unleashed]]
* Некоторые платы на SoC JH7100 ([[StarFive VisionFive v1|VisionFive v1]]) и JH7110 ([[StarFive VisionFive v2|VisionFive v2]], [[Pine64 Star64|Star64]])
* Некоторые платы на SoC [[Allwinner D1]]
* [[Ports/riscv64/QEMU|QEMU]]


== '''QEMU''' ==
Для этих платформ выпускаются [[Regular/riscv64|Регулярные сборки]] (см. также [[Regular]]).


You've got to install QEMU with riscv64 support to run ALT RISC-V port on QEMU.
Также для этих платформ выпускался [[Simply Linux 10]], сейчас иногда выпускается [[Simply Linux RV]].


In case of the ALT x86_64 host system, for example: [http://sisyphus.ru/en/srpm/Sisyphus/qemu qemu-system-riscv-core].
== Репозиторий ==


These bits are needed:
RPM/SRPM репозиторий можно найти по ссылке: http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64/Sisyphus/  
* rootfs -- [http://ftp.altlinux.org/pub/people/arei/riscv/qemu/rootfs.raw raw image] or to build a new one there is a [http://ftp.altlinux.org/pub/people/arei/riscv/qemu/rootfs.tgz tgz packed version]
* [http://ftp.altlinux.org/pub/people/arei/riscv/repo/riscv64/RPMS.hasher/kernel-image-qemu-un-def-4.19.6-alt3.noarch.rpm kernel for QEMU]


After these steps are done it's time to run a kernel!
В виде sources.list для apt:


(one possibly needs to change paths to the kernel and rootfs according to a particular system)
  rpm [sisyphus-riscv64] http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64 Sisyphus/riscv64 classic
<source lang="shell">
# rpm [sisyphus-riscv64] http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64 Sisyphus/riscv64 debuginfo
  qemu-system-riscv64 \
rpm [sisyphus-riscv64] http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64 Sisyphus/noarch  classic
  -nographic -machine virt -kernel /boot/vmlinux-4.19.6-un-def-alt3 \
  -drive file=rootfs.raw,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 \
  -append "earlyprintk root=/dev/vda rootwait fastboot console=ttyS0 debug sunrpc.debug STOP=udev" \
  -netdev user,id=eth0 -device virtio-net-device,netdev=eth0
</source>


To log into the shell:
Зеркало на Яндексе (скачивается быстрее, иногда отстаёт):
Username: root
Password: 123


== Useful links: ==
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


* [https://github.com/dalegr/riscv-bbl-utils Berkeley bootloader utils] to merge the linux kernel into the bbl.bin with dummy payload.
Информацию о доступных пакетах удобно смотреть здесь: https://packages.altlinux.org/ru/sisyphus_riscv64/packages/
* [https://riscv.org/specifications RISC-V specifications]
 
* [https://www.sifive.com/blog/all-aboard-part-0-introduction All Aboard] -- cool series of blog posts by Palmer Dabbelt about RISC-V, toolchain, etc.
Сборка пакетов проходит на отдельном узле [[girar]], аналогичном [[Git.alt]]. В качестве сборочных узлов сейчас используются платы SiFive [[HiFive Unmatched]]. Сборка пакетов идёт в режиме "догоняющей сборочницы": как только какое-то задание (task) проходит в основной Сизиф, специальный [[Girar/task-rerunner & recycler|робот]] создаёт аналогичное задание в <tt>sisyphus_riscv64</tt>. Это означает, что никаких специальных усилий для сборки пакетов под '''riscv64''' предпринимать не нужно: собирайте в [[Sisyphus]]. Задания подтверждаются вручную, обычно в тот же день или на следующий день. Если какого-то пакета не хватает (мы собираем не всё подряд) или он долго не обновляется, свяжитесь с '''iv@'''.
* [http://0x1.tv/20180929H OSSDEVCONF-2018 (in Russian)]
 
В очень редких случаях (например, для специфичного riscv64-only софта или для ядер с поддержкой какого-нибудь интересного железа) доступ к girar'у для sisyphus_riscv64 может всё же понадобиться. Его может получить любой участник [[Team]] -- попросите '''iv@''' и как-нибудь доверенно передайте ему свой ssh-ключ. Правда, ресурсов там довольно немного, так что умеренность в задачах приветствуется.
 
== Как сообщить об ошибке ==
 
Сообщения об ошибках принимаются по адресу https://bugzilla.altlinux.org/  (см. [[BugTracking]]).
* если проблема в пакете, выбирайте продукт Sisyphus, компонент соответсвующий имени пакета, платформа riscv64.
* если проблема в сборке или образе, выбирайте продукт Regular, компонент, сответствующий DE по умолчанию, платформа riscv64.
 
'''ВАЖНО''':
* указать <tt>Platform: riscv64</tt> (справа в верхней части формы создания бага)
* назначить ошибку на [[Участник:IvanMelnikov|iv@altlinux.org]]
 
См. также [[BugTracking/BugzillaMiniHowto|Краткое пособие по использованию Bugzilla]]
 
== Полезные ссылки ==
 
* [http://0x1.tv/20180929H OSSDEVCONF-2018]
* [https://github.com/dalegr/riscv-bbl-utils утилиты для Berkeley bootloader] для слияния ядра Linux в bbl.bin с dummy payload.
* [https://riscv.org/specifications RISC-V ISA]
* [https://www.sifive.com/blog/all-aboard-part-0-introduction All Aboard] -- интересный блог Палмера Даббелта о RISC-V, toolchain, и т.д.
* [http://www.osp.ru/os/2020/02/13055471/ RISC-V: стандарт, изменивший мир микропроцессоров]
* [http://habr.com/ru/post/234047/ Наборы команд должны быть свободны: доводы за RISC-V]


[[Категория:Sisyphus]]
[[Категория:Sisyphus]]
[[en:Ports/riscv64]]
{{Category navigation|title=Ports|category=Ports|sortkey=*}}
{{Category navigation|title=Ports|category=Ports|sortkey=*}}
{{Category navigation|title=RISC-V|category=RISC-V|sortkey=*}}

Текущая версия от 18:16, 4 апреля 2024

RISC-V

RISC-V (читается как “risk-five”) -- архитектура процессоров с открытым набором комманд (ISA). ISA RISC-V имеют лицензию Creative Commons license (CC BY 4.0). Любой желающий может получить финальную версию спецификаций ISA, а также получить черновики разрабатываемых расширений и поучаствовать в их разработке.

Другая ключевая особенность архитектуры RISC-V - её расширяемость. Базовая спецификация архитектуры RISC-V включает в себя только инструкции для записи, сохранения, переходов и целочисленной арифметики. Минимальная спецификация обозначается RV32I, RV64I или RV128I ("I" означает integer) для размеров операнда 4, 8 или 16 байт соответственно. Конкретные реализации могут дополнять базовую спецификацию расширениями, как стандартными, так и специфичными для конкретного вендора или изделия. Стандартные расширения чаще всего обозначаемыми одной латинской буквой, например расширение M содержит инструкции для умножения и деления целых чисел, A -- атомарные операции и т.д.

На данный момент порт Linux работает со спецификацией "RV64IMAFDC"[1]:

  • I - целочисленные базовые инструкции;
  • M - умножение и деление целых чисел;
  • A - атомарные операции;
  • F - числа с плавающей запятой одинарной точности;
  • D - числа с плавающей запятой двойной точности;
  • C - "сжатые" (16-битные) инструкции.

Для удобства принято сокращение "G" == "IMAFD", то есть процессоры, поддерживаемые портом, должны реализовывать архитектуру rv64gc.

Архитектура Сизифа и пакетов RPM, собранных под rv64gc, называется riscv64.

Порт Сизифа

Порт Sisyphus на архитектуру riscv64 (RV64GC) развивается с 2018 года. Поддерживается (и тестируется) работа на платформах:

Для этих платформ выпускаются Регулярные сборки (см. также Regular).

Также для этих платформ выпускался Simply Linux 10, сейчас иногда выпускается Simply Linux RV.

Репозиторий

RPM/SRPM репозиторий можно найти по ссылке: http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64/Sisyphus/

В виде 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

Информацию о доступных пакетах удобно смотреть здесь: https://packages.altlinux.org/ru/sisyphus_riscv64/packages/

Сборка пакетов проходит на отдельном узле girar, аналогичном Git.alt. В качестве сборочных узлов сейчас используются платы SiFive HiFive Unmatched. Сборка пакетов идёт в режиме "догоняющей сборочницы": как только какое-то задание (task) проходит в основной Сизиф, специальный робот создаёт аналогичное задание в sisyphus_riscv64. Это означает, что никаких специальных усилий для сборки пакетов под riscv64 предпринимать не нужно: собирайте в Sisyphus. Задания подтверждаются вручную, обычно в тот же день или на следующий день. Если какого-то пакета не хватает (мы собираем не всё подряд) или он долго не обновляется, свяжитесь с iv@.

В очень редких случаях (например, для специфичного riscv64-only софта или для ядер с поддержкой какого-нибудь интересного железа) доступ к girar'у для sisyphus_riscv64 может всё же понадобиться. Его может получить любой участник Team -- попросите iv@ и как-нибудь доверенно передайте ему свой ssh-ключ. Правда, ресурсов там довольно немного, так что умеренность в задачах приветствуется.

Как сообщить об ошибке

Сообщения об ошибках принимаются по адресу https://bugzilla.altlinux.org/ (см. BugTracking).

  • если проблема в пакете, выбирайте продукт Sisyphus, компонент соответсвующий имени пакета, платформа riscv64.
  • если проблема в сборке или образе, выбирайте продукт Regular, компонент, сответствующий DE по умолчанию, платформа riscv64.

ВАЖНО:

  • указать Platform: riscv64 (справа в верхней части формы создания бага)
  • назначить ошибку на iv@altlinux.org

См. также Краткое пособие по использованию Bugzilla

Полезные ссылки

  1. В принятой в 2019 году версии спецификации RISC-V ISA из базовых наборов инструкций были выделены расширения Zifencei и Zicsr, которые также входят в G и нужны Linux'у, но усложнять разбором ещё и этого факта вводный раздел я, пожалуй, не стану.