其他專案
- 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 會在快取已停用時直接存取記憶體,而主機具有相同記憶體的可快取別名。即使主機未明確存取記憶體,推測存取行為仍可能導致快取填補,而存取之間的變更就會遺失。同樣地,這在本例中不成問題 (直接在硬體上執行,沒有管理程序),但一般不建議採用這種模式。
- 如果沒有 MMU 和快取,未對齊的存取會發生錯誤。建構時使用的是