Інші проекти

  • oreboot
    • "coreboot без C".
    • Підтримує x86, aarch64 і RISC-V.
    • Покладається на LinuxBoot, замість того, щоб самому мати багато драйверів.
  • Навчальний посібник Rust з ОС RaspberryPi
    • Ініціалізація, драйвер UART, простий завантажувач, JTAG, рівні винятків, обробка винятків, таблиці сторінок.
    • Деякі хитрощі щодо обслуговування кешу та ініціалізації в Rust, не обов’язково хороший приклад для копіювання для виробничого коду.
  • cargo-call-stack
    • Статичний аналіз для визначення максимального використання стека.
  • Підручник з ОС RaspberryPi запускає код Rust до ввімкнення MMU та кешу. Це дозволить читати та записувати пам’ять (наприклад, стек). Однак:
    • Без MMU та кешу невирівняні доступи призведуть до помилки. Код створюється за допомогою aarch64-unknown-none, який встановлює +strict-align, щоб запобігти генерації компілятором невирівняних доступів, тому це має бути гаразд, але це не обов’язково так загалом.
    • Якщо код працював у віртуальній машині, це може призвести до проблем узгодженості кешу. Проблема полягає в тому, що віртуальна машина звертається до пам’яті безпосередньо з вимкненою кеш-пам’яттю, тоді як хост має кешовані псевдоніми для тієї самої пам’яті. Навіть якщо хост явно не звертається до пам’яті, спекулятивні доступи можуть призвести до заповнення кешу, і тоді зміни з одного або іншого боку будуть втрачені. Знову ж таки, це нормально в цьому конкретному випадку (працює безпосередньо на апаратному забезпеченні без гіпервізора), але це не дуже гарний шаблон загалом.