Open5
MCU向け軽量ハイパーバイザーをCortex-Rに移植する
ハイパーバイザーの勉強がてらTOPPERSのsafeg-autoをCortex-R(QEMU)に移植してみる。
プロセスとしては以下を想定している。
できるかどうかは微妙だがCortex-R自体はMPUと仮想化用の機構があるのでたぶんできるはず。
- ハイパーバイザー、Cortex-Rについて勉強
- 資料の候補としては以下
- https://developer.arm.com/documentation/102909/0100/Introduction-to-virtualization
- https://syuu1228.github.io/howto_implement_hypervisor/
- safeg-autoの内部実装
- https://armkeil.blob.core.windows.net/developer/Files/pdf/white-paper/device-virtualization-whitepaper.pdf
- https://armkeil.blob.core.windows.net/developer/Files/pdf/white-paper/best-practices-for-armv8-r-cortex-r52-st2-whitepaper.pdf
- 資料の候補としては以下
- RH850に関して勉強
- xenのcortex-r52への移植プロジェクトの確認(参考)
- QEMUをCortex-R52対応(virt machine)
- 移植検討
- 実装
QEMUによるCortex-R(R5)のエミュレート方法は以下
Armv8-R virtualization > 2 Introduction-to-virtualizationのメモ①
(https://developer.arm.com/documentation/102909/0100/Introduction-to-virtualization)
調べるべき単語
- Protected Memory System Architecture(PMSA)
- System Memory Protection Unit
Armv8-R virtualization > 3 The Generic Interrupt Controllerのメモ①
参考資料は以下
safeg-autoの内部実装
- フォルダー構成
- hypervisor内にハイパーバイザーのコードが、vm_prog内に各VMのコードがある
- hyeprvisorとしてのスタートアップルーチンはhypervisor/src/start.S
- hypervisorとしての初期化処理はhypervisor/src/startup.c内のStartHV