其他專案

  • oreboot
    • 「沒有 C 的 coreboot」
    • 支援 x86、aarch64 和 RISC-V。
    • 依賴 LinuxBoot,而非自身採用多個驅動程式。
  • Rust RaspberryPi OS 教學課程
    • 初始化、UART 驅動程式、簡易系統啟動載入程式、JTAG、例外狀況層級、例外狀況處理、分頁表
    • Rust 中的快取維護和初始化存在疑慮,就正式版程式碼而言,不一定是值得複製的好範例。
  • cargo-call-stack
    • 靜態分析,用來判斷最大堆疊用量。
  • RaspberryPi OS 教學課程會在啟用 MMU 和快取之前,執行 Rust 程式碼。這會讀取及寫入記憶體,例如堆疊。不過,請注意以下幾點:
    • 如果沒有 MMU 和快取,未對齊的存取會發生錯誤。建構時使用的是 aarch64-unknown-none,這會設定 +strict-align,防止編譯器產生未對齊的存取,因此應該不會出錯,但這不一定是一般情況。
    • 如果是在 VM 中執行,可能會導致快取一致性問題。問題在於 VM 會在快取已停用時直接存取記憶體,而主機具有相同記憶體的可快取別名。即使主機未明確存取記憶體,推測存取行為仍可能導致快取填補,而存取之間的變更就會遺失。同樣地,這在本例中不成問題 (直接在硬體上執行,沒有管理程序),但一般不建議採用這種模式。