How to write a Hypervisor on Arm? The different between SEL2 and EL2?

I am a university student who want to build a Hypervisor by Rust on aarch64 as my final project. At first I want to build the one who worked in SEL2. However, I find it difficult for me to build such hypervisor for I am confused about the difference between these two level.

I have known that SEL2 is in the secure world. And it can support the hypercall too. I also know there is a hypervisor called hafnium. But I still be confused about the detail knowledge. I wonder know the detail document and resource that I can find to learn about it.

Or maybe it suitable for me to build a embeded Hypervisor? I feel confused.

Actually, I wanted to write a Rust OS but my tutor want me to build a Rust Hypervisor for there are too many people work in Rust OS.