簡體   English   中英

Risc-V:能夠利用 GCC 的簡單 RV32I 實施的最低 CSR 要求

[英]Risc-V: Minimum CSR requirements for simple RV32I implementation capable of leveraging GCC

RV32I 能夠運行使用 GCC 生成的機器代碼的最低 CSR 要求是什么?

我正在考慮一個簡單的基於 fpga 的(嵌入式)實現。 不需要虛擬 memory 或 linux 支持。

另外,我應該使用什么 GCC 標志來防止它使用未實現的 CSR 相關指令?

瀏覽完 RISCV 特權 ISA 規范后,我仍然很困惑。

謝謝!

查看RARS模擬器作為簡單 RISC V 實現的示例。 它實現了足夠的 CSR(例如異常原因、處理器狀態、異常 pc、向量表地址等),您可以對中斷處理程序進行編程。

你需要:

  • utvec — 設置異常處理程序地址
  • ustatus — 啟用/禁用中斷,
  • uscratch — 軟件異常處理程序需要,
  • ucause — 告訴異常的原因
  • uepc — 告訴異常時未完成指令的地址

還有一些其他的。 在 RARS 中,您可以在寄存器顯示、控制和狀態選項卡中看到實現的寄存器。

我相信 RARS 支持計時器,因此有一些 CSR。 它還提供了一個浮點單元,因此一些 CSR 用於例外以及舍入配置。 為了處理 memory 訪問異常,它有utval 然后它提供了一些計數器。 另請參閱文檔版本 20190608-Priv-MSU-Ratified中的表 2.2

我認為您對 CSR 的使用將僅限於獨立的應用程序配置,例如初始啟動和中斷處理,這兩者都將用匯編語言編寫。

很難想象編譯后的 C 代碼(目標文件,.o's)會以任何方式觸及 CSR。 如果你有這樣的例子,請分享。

在某些環境中,C 實現允許獨立(例如非托管)程序。 由某些編譯器創建的此類程序可能包括啟動配置和異常處理程序,盡管這些更有可能是用戶提供的。 例如,參見http://cs107e.github.io/guides/gcc/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM