RISC-Vのオープンソース実装であるRocket-coreに関するメモ。
Githubはこちらhttps://github.com/freechipsproject/rocket-chip
Version管理
- どこでVersionが定義されているのか?
- rocket-chip/build.sbt の version変数
- ただGithubのレポはTagがキチンとうってなくて困る
- どのCommitを使えばよいのか?
- 安定した所という意味では、SiFiveのFreedomが見ている所が良いかも
- 4146f6a, Nov 26, 2017
- 7e75d6, Nov 2, 2017
- 47d63d, Feb 25, 2018, version=1.2
- 8c6e745, Mar 1, 2018, version=1.2
- 4ba8acb, Mar 22, 2018
- 25b5a2, Aug 25, 2018
- b21c78, Oct 15, 2018
- 結構頻繁にかわってた
- 安定した所という意味では、SiFiveのFreedomが見ている所が良いかも
Privilege
- Privilegeの実装は?
- rocket-chip/src/main/scala/tile/BaseTile.scala あたり?
- Privilegeの設定は?
- RocketCoreParamsのuseVMやuseUserを設定、useVMをTrueにすれば、useUserもTrueになるっぽい
- 設定例
- Privilegeの設定とコアサイズの関係は?
- TBD
Physical Memory Protection (PMP)
RISC-Vのセキュリティ機能の一つ。
-
PMPの実装は?
-
PMPのエントリ数はどこで設定しているのか?
- src/main/scala/rocket/RocketCore.scala
- https://github.com/freechipsproject/rocket-chip/blob/master/src/main/scala/rocket/RocketCore.scala
- nPMPs: Int = 8, ということで普通は8
-
PMPの最大数は?
-
PMPのエントリ数とコアサイズの関係は?
- TBD
EOF