В этой лекции мы узнаем, как использовать популярные системы компиляции (как LLVM, так и GCC) для создания приложений RISC-V, а также как запускать приложения на симуляторах и эмуляторах. В этой лекции представлены вводные материалы, которые помогут вам получить практический опыт создания и запуска приложений RISC-V. Поскольку инструменты и их зависимости часто меняются, некоторые аспекты этого курса могут работать некорректно до тех пор, пока не будет произведено обновление курса. Помня об этом, мы приводим ссылки на официальные списки рассылки, репозитории GitHub и веб-сайты. Они могут оказаться весьма полезными, если вы захотите углубиться в какие-либо области разработки RISC-V.
В этой лекции мы обсудим:
Есть две наиболее популярных системы компиляции RISC-V.
GNU RISC-VLLVM RISC-VОбе системы предоставляют оптимизирующий компилятор, ассемблер, компоновщик и другие различные инструменты для создания приложений, работающих на машинах RISC-V. Официальный репозиторий RISC-V на GitHub предоставляет исходный код для тулчейна riscv-gnu, тулчейн в собранном виде можно скачать по ссылке Компилятор RISC-V обычно используется в качестве кросс-компилятора, поскольку многие процессоры RISC-V используются для встраиваемых приложений с низким энергопотреблением. В настоящее время кросс-компиляторы RISC-V можно запускать только на целевых платформах ELF таких, как Linux-машины.
Тулчейн RISC-V LLVM недоступен у сторонних поставщиков, но его можно собрать из исходников, загрузив проект llvm-project с открытым кодом. Позже будет описан простой способ использования тулчейна llvm с gnu sysroot.
Симулятор RISC-V можно загрузить из официального репозитория RISC-V на GitHub: riscv/riscv-isa-sim:Spike, симулятор RISC-V ISA. Хотя платы RISC-V легко доступны у нескольких производителей, разработку RISC-V проще начать, используя симуляторы.
Для создания приложения для RISC-V использование инструментальной цепочки кросс-компилятора не отличается от любой другой системы разработки на основе кросс-компилятора. Требуется две вещи:
В Системы компиляции мы описали систему компиляции и sysroot. Прежде чем научиться создавать приложения с помощью тулчейна RISC-V, мы хотели бы представить интересное соглашение об именовании, которое используется для кросс-компиляторов.
Загрузив тулчейн GCC, в каталоге bin вы найдете двоичный файл riscv64-unknown-elf-gcc. Это тот же самый компилятор GCC со встроенной информацией о sysroot и платформе. Это соглашение - называть кросс-компиляторы таким образом. Обычно для именования используется формат arch-vendor-os-abi. Так, riscv64-unknown-elf-gcc означает, что это кросс-компилятор для RISC-V 64 bit, и он будет генерировать двоичный файл elf, который может работать, например, на машинах Linux. Отличный справочник по соглашениям об именовании можно найти здесь. В случаях, когда имя компилятора не содержит целевого триплета, для его получения можно использовать флаг -dumpmachine:
gcc -dumpmachine # x86_64-linux-gnu
Имея под рукой компилятор riscv64-unknown-elf-gcc, файл можно скомпилировать следующими способами:
riscv64-unknown-elf-gcc -O2 -o a.out hello.c riscv64-unknown-elf-gcc -O2 hello.c -mabi=lp64d -march=rv64ifd
Флаг -march используется для указания целевой субархитектуры, для которой будет сгенерирована сборка. Флаг -mabi используется для указания
С помощью тулчейна llvm двоичный файл может быть собран аналогичным образом. Предполагается, что sysroot находится в каталоге riscv64-unknown-elf:
clang test.c -c --sysroot riscv64-unknown-elf -target # riscv64-unknown-elf -march=rv64ifd
Приложения RISC-V можно запускать как на устройствах, так и на симуляторах или эмуляторах. Мы кратко обсудим, как запустить приложение на симуляторе, а также на эмуляторе.
Одним из самых удобных способов запуска небольших приложений является использование симулятора RISC-V. Шаги по сборке и установке достаточно просты. Для этого вам понадобятся следующие зависимости:
Spike, симулятор RISC-V: https://github.com/riscv-software-src/riscv-isa-simpk, прокси-ядро RISC-V: https://github.com/riscv-software-src/riscv-pkИнструкции по запуску простого приложения hello-world на симуляторе Spike приведены в README репозитория симулятора. Чтобы установить прокси-ядро, следуйте инструкциям в README репозитория pk. Для удобства вы можете установить и spike, и pk в тот же каталог, что и каталог тулчейна riscv64, указав путь к нему в качестве префикса установки для обоих.
Запуск приложения RISC-V на эмуляторе обеспечивает большую гибкость, чем на симуляторе, но этапы установки требуют больше усилий. Чтобы запустить приложение RISC-V на эмуляторе, необходимо иметь следующие зависимости:
QEMU: git clone --depth 1 --branch v5.0.0 https://github.com/qemu/qemuLinux: git clone --depth 1 --branch v5.4 https://github.com/torvalds/linuxBusybox: git clone --depth 1 git://git.busybox.net/busyboxПеречисленные выше ветки репозиториев являются предлагаемыми версиями, которые могут часто меняться. Вы можете выбрать и другие. Приведенная выше документация может устареть, если в какой-либо из зависимостей произойдут изменения. Проверьте страницу документации Запуск 64- и 32-битных RISC-V Linux на QEMU, чтобы узнать последние поддерживаемые версии. Если эта документация не работает, обязательно спросите в списке рассылки linux-riscv.
cd qemu ./configure --target-list=riscv64-softmmu --prefix=/path/to/keep/qemu make -j $(nproc) make install
cd linux make ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- defconfig make ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- -j $(nproc)
Убедитесь, что префикс кросс-компилятора совпадает с префиксом вашего тулчейна. В приведенном выше примере компилятор GCC - riscv64-unknown-linux-gnu-gcc, поэтому флаг CROSS_COMPILE --riscv64-unknown-linux-gnu-.
cd busybox CROSS_COMPILE=riscv64-unknown-linux-gnu- make defconfig CROSS_COMPILE=riscv64-unknown-linux-gnu- make -j $(nproc)
sudo /path/to/keep/qemu/bin/qemu-system-riscv64 -nographic -machine
virt \
-kernel /path/to/linux/image -append "root=/dev/vda ro
console=ttyS0" \
-drive file=busybox,format=raw,id=hd0 \
-device virtio-blk-device,drive=hd0
/path/to/keep/qemu/bin/qemu-system-riscv64 -nographic -machine virt -kernel /path/to/binary -bios none
Дополнительные конфигурации QEMU для RISC-V можно найти в официальной документации. Помимо симуляторов и эмуляторов, приложения RISC-V можно запускать на виртуальных машинах, а также на имеющихся в продаже платах для разработки. Дополнительную документацию по отладке проблем с "голым железом" можно найти здесь. Вы можете установить виртуальную машину RISC-V, как описано в документации здесь.
Платы RISC-V
Страница RISC-V Exchange представляет собой коллекцию доступного физического оборудования в экосистеме RISC-V. Этот список курируется сообществом.
Ядра RISC-V
Страница RISC-V Exchange: Cores SoCs представляет собой коллекцию доступных IP-ядер систем на кристалле (СнК) в экосистеме RISC-V.
Поставщики тулчейнов и другого аппаратного и программного обеспечения:
В этой лекции мы узнаем, как использовать популярные системы компиляции (как LLVM, так и GCC) для создания приложений RISC-V, а также как запускать приложения на симуляторах и эмуляторах. В этой лекции представлены вводные материалы, которые помогут вам получить практический опыт создания и запуска приложений RISC-V. Поскольку инструменты и их зависимости часто меняются, некоторые аспекты этого курса могут работать некорректно до тех пор, пока не будет произведено обновление курса. Помня об этом, мы приводим ссылки на официальные списки рассылки, репозитории GitHub и веб-сайты. Они могут оказаться весьма полезными, если вы захотите углубиться в какие-либо области разработки RISC-V.
В этой лекции мы обсудим:
Есть две наиболее популярных системы компиляции RISC-V.
GNU RISC-VLLVM RISC-VОбе системы предоставляют оптимизирующий компилятор, ассемблер, компоновщик и другие различные инструменты для создания приложений, работающих на машинах RISC-V. Официальный репозиторий RISC-V на GitHub предоставляет исходный код для тулчейна riscv-gnu, тулчейн в собранном виде можно скачать по ссылке Компилятор RISC-V обычно используется в качестве кросс-компилятора, поскольку многие процессоры RISC-V используются для встраиваемых приложений с низким энергопотреблением. В настоящее время кросс-компиляторы RISC-V можно запускать только на целевых платформах ELF таких, как Linux-машины.
Тулчейн RISC-V LLVM недоступен у сторонних поставщиков, но его можно собрать из исходников, загрузив проект llvm-project с открытым кодом. Позже будет описан простой способ использования тулчейна llvm с gnu sysroot.
Симулятор RISC-V можно загрузить из официального репозитория RISC-V на GitHub: riscv/riscv-isa-sim:Spike, симулятор RISC-V ISA. Хотя платы RISC-V легко доступны у нескольких производителей, разработку RISC-V проще начать, используя симуляторы.
Для создания приложения для RISC-V использование инструментальной цепочки кросс-компилятора не отличается от любой другой системы разработки на основе кросс-компилятора. Требуется две вещи:
В Системы компиляции мы описали систему компиляции и sysroot. Прежде чем научиться создавать приложения с помощью тулчейна RISC-V, мы хотели бы представить интересное соглашение об именовании, которое используется для кросс-компиляторов.
Загрузив тулчейн GCC, в каталоге bin вы найдете двоичный файл riscv64-unknown-elf-gcc. Это тот же самый компилятор GCC со встроенной информацией о sysroot и платформе. Это соглашение - называть кросс-компиляторы таким образом. Обычно для именования используется формат arch-vendor-os-abi. Так, riscv64-unknown-elf-gcc означает, что это кросс-компилятор для RISC-V 64 bit, и он будет генерировать двоичный файл elf, который может работать, например, на машинах Linux. Отличный справочник по соглашениям об именовании можно найти здесь. В случаях, когда имя компилятора не содержит целевого триплета, для его получения можно использовать флаг -dumpmachine:
gcc -dumpmachine # x86_64-linux-gnu
Имея под рукой компилятор riscv64-unknown-elf-gcc, файл можно скомпилировать следующими способами:
riscv64-unknown-elf-gcc -O2 -o a.out hello.c riscv64-unknown-elf-gcc -O2 hello.c -mabi=lp64d -march=rv64ifd
Флаг -march используется для указания целевой субархитектуры, для которой будет сгенерирована сборка. Флаг -mabi используется для указания
С помощью тулчейна llvm двоичный файл может быть собран аналогичным образом. Предполагается, что sysroot находится в каталоге riscv64-unknown-elf:
clang test.c -c --sysroot riscv64-unknown-elf -target # riscv64-unknown-elf -march=rv64ifd
Приложения RISC-V можно запускать как на устройствах, так и на симуляторах или эмуляторах. Мы кратко обсудим, как запустить приложение на симуляторе, а также на эмуляторе.
Одним из самых удобных способов запуска небольших приложений является использование симулятора RISC-V. Шаги по сборке и установке достаточно просты. Для этого вам понадобятся следующие зависимости:
Spike, симулятор RISC-V: https://github.com/riscv-software-src/riscv-isa-simpk, прокси-ядро RISC-V: https://github.com/riscv-software-src/riscv-pkИнструкции по запуску простого приложения hello-world на симуляторе Spike приведены в README репозитория симулятора. Чтобы установить прокси-ядро, следуйте инструкциям в README репозитория pk. Для удобства вы можете установить и spike, и pk в тот же каталог, что и каталог тулчейна riscv64, указав путь к нему в качестве префикса установки для обоих.
Запуск приложения RISC-V на эмуляторе обеспечивает большую гибкость, чем на симуляторе, но этапы установки требуют больше усилий. Чтобы запустить приложение RISC-V на эмуляторе, необходимо иметь следующие зависимости:
QEMU: git clone --depth 1 --branch v5.0.0 https://github.com/qemu/qemuLinux: git clone --depth 1 --branch v5.4 https://github.com/torvalds/linuxBusybox: git clone --depth 1 git://git.busybox.net/busyboxПеречисленные выше ветки репозиториев являются предлагаемыми версиями, которые могут часто меняться. Вы можете выбрать и другие. Приведенная выше документация может устареть, если в какой-либо из зависимостей произойдут изменения. Проверьте страницу документации Запуск 64- и 32-битных RISC-V Linux на QEMU, чтобы узнать последние поддерживаемые версии. Если эта документация не работает, обязательно спросите в списке рассылки linux-riscv.
cd qemu ./configure --target-list=riscv64-softmmu --prefix=/path/to/keep/qemu make -j $(nproc) make install
cd linux make ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- defconfig make ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- -j $(nproc)
Убедитесь, что префикс кросс-компилятора совпадает с префиксом вашего тулчейна. В приведенном выше примере компилятор GCC - riscv64-unknown-linux-gnu-gcc, поэтому флаг CROSS_COMPILE --riscv64-unknown-linux-gnu-.
cd busybox CROSS_COMPILE=riscv64-unknown-linux-gnu- make defconfig CROSS_COMPILE=riscv64-unknown-linux-gnu- make -j $(nproc)
sudo /path/to/keep/qemu/bin/qemu-system-riscv64 -nographic -machine
virt \
-kernel /path/to/linux/image -append "root=/dev/vda ro
console=ttyS0" \
-drive file=busybox,format=raw,id=hd0 \
-device virtio-blk-device,drive=hd0
/path/to/keep/qemu/bin/qemu-system-riscv64 -nographic -machine virt -kernel /path/to/binary -bios none
Дополнительные конфигурации QEMU для RISC-V можно найти в официальной документации. Помимо симуляторов и эмуляторов, приложения RISC-V можно запускать на виртуальных машинах, а также на имеющихся в продаже платах для разработки. Дополнительную документацию по отладке проблем с "голым железом" можно найти здесь. Вы можете установить виртуальную машину RISC-V, как описано в документации здесь.
Платы RISC-V
Страница RISC-V Exchange представляет собой коллекцию доступного физического оборудования в экосистеме RISC-V. Этот список курируется сообществом.
Ядра RISC-V
Страница RISC-V Exchange: Cores SoCs представляет собой коллекцию доступных IP-ядер систем на кристалле (СнК) в экосистеме RISC-V.
Поставщики тулчейнов и другого аппаратного и программного обеспечения:
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.