Normal World-Realm World and RME-RMM architecture

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!

Parents
  • 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.

Reply
  • 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.

Children
No data