Hi everyone,
I'm trying to understand the architecture underneath normal world and realm world.
So in FVP, I can boot the normal world first, then boot the realm world to run application in it. But by doing so, I can't debug the application since I can only do it in Arm DS.
If I want to create a realm VM, I will need to invoke libraries from RME(RMM) to create a realm world VM and then it counts as running an application in realm world.
My question is:
what's the difference between running an application in realm world in FVP and writing a C++ program using RME libraries but I run the application in normal world in FVP.
Do they count as all running applications in realm world or not?
Much appreciated if anyone can help me!
The important distinction is where the code is actually executing, not whether it uses RME/RMM libraries. An application running in the Realm world is executing inside a Realm VM, with its execution environment managed through the RMM and isolated from the Normal world.
If you write a C++ program that calls RME/RMM-related libraries but the program itself is running in the Normal world, that doesn't make the application a Realm-world application. The Normal-world program may be acting as a client/manager that requests Realm management operations, but its own execution context remains Normal world.
So, in the FVP case, if your application is actually booted inside a Realm VM and executing there, it counts as running in the Realm world. If the C++ application is running directly in the Normal world and only invokes APIs that ultimately manage a Realm, the C++ application itself is still a Normal-world application. The Realm workload created by it would be the part running in Realm world.