Перенос Linux для многоядерного процессора RISCV

Мы разрабатываем многоядерный процессор с архитектурой RISCV.

Мы уже портировали Linux для одноядерного процессора RISCV, и он работает на нашей собственной плате на базе FPGA с rootfs busybox.

Я хочу сейчас портировать Linux на многоядерный процессор RISCV.

Мои сомнения:

  1. Поддерживает ли доступный набор инструментов gnu-riscv-gcc многоядерный процессор?
  2. Имеющийся сейчас шип поддерживает многоядерность?
  3. Следует ли мне вносить какие-либо изменения в загрузчик bbl (загрузчик Berkely) для поддержки многоядерных процессоров?
  4. Какие изменения я должен внести, чтобы одноядерное ядро ​​Linux поддерживало многоядерность?

person Sreenadh    schedule 27.05.2016    source источник


Ответы (2)


Текущая экосистема RISC-V уже поддерживает SMP Linux.

  1. Для многоядерности никаких изменений в компиляторе не требуется.

  2. Spike может имитировать многоядерность при использовании флага '-p'.

  3. BBL поддерживает многоядерность.

  4. Перед сборкой Linux настройте его для поддержки SMP.

Любые сбои, вероятно, связаны с рассинхронизацией инструментальной цепочки с последними изменениями привилегированных спецификаций. Прошлой осенью пользователи успешно создали и запустили многоядерный Linux на RISC-V.

person user2548418    schedule 28.05.2016
comment
Звучит здорово, не могли бы вы назвать проекты тех, кому удалось запустить Linux на многоядерных RISC-V-проектах? Таким образом, мы можем искать проекты и читать об их опыте, если они что-то опубликовали. Спасибо! - person seanhalle; 21.07.2016

Ожидается, что все это будет работать из коробки. Мой стандартный поток тестирования для Linux и запросов на вытягивание QEMU - это загрузка корневой файловой системы Fedora в QEMU через Linux + BBL. Инструкции можно найти в статье QEMU Wiki о RISC-V. Это загрузится с нашей платы "virt", которая использует устройства на базе VirtIO. Эти устройства имеют стандартные драйверы Linux из исходной версии, которые очень хорошо поддерживаются, поэтому на самом деле нет необходимости выполнять какую-либо работу на уровне платформы.

Помимо стандартных устройств на базе VirtIO, у SiFive есть устройства, которые являются частью платформы Freedom SOC. Если ваша платформа значительно отличается от платформы SiFive Freedom, вам понадобятся дополнительные драйверы как для Linux, так и для BBL. Мы поддерживаем версию драйверов вне дерева, которую мы еще не очистили для апстрима, в Freedom-u-sdk, который должен дать вам приблизительное представление о том, сколько это работы. Запуск make qemu в этом репозитории загрузит Linux на QEMU через BBL, а запуск make покажет вам, как прошить образ SD-карты для платы HiFive Unleashed.

person Palmer Dabbelt    schedule 02.01.2019