Ports/riscv64: различия между версиями
м (→RISC-V: небольшая вычитка) |
Arei (обсуждение | вклад) (Русская версия) |
||
Строка 1: | Строка 1: | ||
= '''RISC-V''' = | = '''RISC-V''' = | ||
RISC-V | RISC-V является [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 пользовательского уровня] и | |||
черновик [https://riscv.org/specifications/privileged-isa/ ISA привилегированного уровня]. | |||
Другая ключевая особенность архитектуры RISC-V - её расширяемость, что позволяет создавать разнообразные реализации. | |||
Минимальная спецификация архитектуры RISC-V включает в себя только инструкции для записи, сохранения, переходов и | |||
целочисленной арифметики. Код инструкций не зависит от размера регистра, | |||
* <tt>'''I'''</tt> - | минимальная спецификация обозначается RV32I, RV64I или RV128I ("I" означает integer) для размеров операнда | ||
* <tt>'''M'''</tt> - | 4, 8 или 16 байт соответственно. | ||
* <tt>'''A'''</tt> - | На данный момент порт Linux работает со спецификацией "RV64IMAFDC" или "RV64GC" ("G" == "IMAFD"): | ||
* <tt>'''F'''</tt> - | * <tt>'''I'''</tt> - целочисленные базовые инструкции; | ||
* <tt>'''D'''</tt> - | * <tt>'''M'''</tt> - умножение и деление целых чисел; | ||
* <tt>'''C'''</tt> - | * <tt>'''A'''</tt> - атомарные операции; | ||
* <tt>'''F'''</tt> - число с плавающей запятой одинарной точности; | |||
* <tt>'''D'''</tt> - число с плавающей запятой двойной точности; | |||
* <tt>'''C'''</tt> - сжатые 16-битные инструкции. | |||
На данной странице можно найти последнюю информацию о статусе порта ALT на RISC-V (RV64GC). | |||
Сборка системы ведётся на плате SiFive [https://www.crowdsupply.com/sifive/hifive-unleashed HiFive Unleashed] | |||
== ''' | == '''Рабочий план''' == | ||
* | * Следующие ядра Linux были протестированы на SiFive HiFive Unleashed: | ||
** 4.15 | ** 4.15 | ||
** 4.19-rc2 | ** 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]) | ** 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): | ||
** Berkeley bootloader -- ''' | ** Berkeley bootloader -- '''ГОТОВО''' | ||
** U-BOOT ([http://git.altlinux.org/people/lineprinter/public/u-boot.git?p=u-boot.git;a=blob;f=README.alt;hb=HEAD link]) -- ''' | ** U-BOOT ([http://git.altlinux.org/people/lineprinter/public/u-boot.git?p=u-boot.git;a=blob;f=README.alt;hb=HEAD link]) -- '''ГОТОВО''' | ||
* [[Sisyphus]] | * Порт [[Sisyphus]] -- '''В ПРОЦЕССЕ''' | ||
*# Toolchain | *# Toolchain -- '''ГОТОВО''' | ||
*# Linux Kernel -- ''' | *# Linux Kernel -- '''ГОТОВО''' | ||
*# X11 -- ''' | *# X11 -- '''ГОТОВО''' | ||
*# Desktop Environments -- ''' | *# Desktop Environments -- '''В ПРОЦЕССЕ''' | ||
* ALT | * образ ALT [http://sisyphus.ru/en/srpm/Sisyphus/mkimage-profiles metaprofile] -- '''В ПРОЦЕССЕ''' | ||
* [ | * [http://git.altlinux.org/people/arei/packages/girar.git?p=girar.git;a=shortlog;h=refs/heads/riscvmod Girar Builder] -- '''ГОТОВО''' | ||
* QEMU | * образ для QEMU ([[#QEMU|см. ниже]]) -- '''ГОТОВО''' | ||
RPM/SRPM репозиторий можно найти по [http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64/Sisyphus/ этой ссылке]. | |||
== '''QEMU''' == | == '''QEMU''' == | ||
Для запуска порта ALT на RISC-V необходимо установить QEMU с поддержкой riscv64. | |||
Например, в случае хостовой системы на ALT x86_64: [http://sisyphus.ru/en/srpm/Sisyphus/qemu qemu-system-riscv-core]. | |||
Также необходимы: | |||
* ALT image -- в процессе | |||
* [http://ftp.altlinux.org/pub/people/arei/riscv/repo/riscv64/RPMS.hasher/kernel-image-qemu-un-def-4.19.6-alt3.noarch.rpm ядро Linux для QEMU] | |||
После этого, можно запускать ядро! | |||
(возможно, что необходимо изменить пути к ядру и rootfs для вашей системы) | |||
( | |||
<source lang="shell"> | <source lang="shell"> | ||
qemu-system-riscv64 \ | qemu-system-riscv64 \ | ||
Строка 62: | Строка 64: | ||
</source> | </source> | ||
Для входа в shell: | |||
Username: root | Username: root | ||
Password: 123 | Password: 123 | ||
== | == Полезные ссылки: == | ||
* [https://github.com/dalegr/riscv-bbl-utils Berkeley bootloader | * [https://github.com/dalegr/riscv-bbl-utils утилиты для Berkeley bootloader] для слияния ядра Linux в bbl.bin с dummy payload. | ||
* [https://riscv.org/specifications RISC-V | * [https://riscv.org/specifications RISC-V ISA] | ||
* [https://www.sifive.com/blog/all-aboard-part-0-introduction All Aboard] -- | * [https://www.sifive.com/blog/all-aboard-part-0-introduction All Aboard] -- интересный блог Палмера Даббелта о RISC-V, toolchain, и т.д. | ||
* [http://0x1.tv/20180929H OSSDEVCONF-2018 | * [http://0x1.tv/20180929H OSSDEVCONF-2018] | ||
[[Категория:Sisyphus]] | [[Категория:Sisyphus]] | ||
{{Category navigation|title=Ports|category=Ports|sortkey=*}} | {{Category navigation|title=Ports|category=Ports|sortkey=*}} |
Версия от 19:54, 15 марта 2019
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 Unleashed
Рабочий план
- Следующие ядра Linux были протестированы на SiFive HiFive Unleashed:
- Методы загрузки (boot):
- Berkeley bootloader -- ГОТОВО
- U-BOOT (link) -- ГОТОВО
- Порт Sisyphus -- В ПРОЦЕССЕ
- Toolchain -- ГОТОВО
- Linux Kernel -- ГОТОВО
- X11 -- ГОТОВО
- Desktop Environments -- В ПРОЦЕССЕ
- образ ALT metaprofile -- В ПРОЦЕССЕ
- Girar Builder -- ГОТОВО
- образ для QEMU (см. ниже) -- ГОТОВО
RPM/SRPM репозиторий можно найти по этой ссылке.
QEMU
Для запуска порта ALT на RISC-V необходимо установить QEMU с поддержкой riscv64.
Например, в случае хостовой системы на ALT x86_64: qemu-system-riscv-core.
Также необходимы:
- ALT image -- в процессе
- ядро Linux для QEMU
После этого, можно запускать ядро!
(возможно, что необходимо изменить пути к ядру и rootfs для вашей системы)
qemu-system-riscv64 \
-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
Для входа в shell:
Username: root
Password: 123
Полезные ссылки:
- утилиты для Berkeley bootloader для слияния ядра Linux в bbl.bin с dummy payload.
- RISC-V ISA
- All Aboard -- интересный блог Палмера Даббелта о RISC-V, toolchain, и т.д.
- OSSDEVCONF-2018