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
  • Have you seen the RME and Arm CCA guides in the Learn the Architecture page?  If not, you might them useful as introduction to how RME works and how the CCA software stack is structured.

    https://www.arm.com/architecture/learn-the-architecture/a-profile

    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.

    This is going to partly depend on what differences you care about.

    At the ISA level, to an application Non-secure and Realm state can look the same.  You have the same instructions, that execute the same way, available to you.  

    I say "can" because it's not just a question of hardware.  If you're comparing running your application on the host in Non-secure state to running it on a Realmed VM, then the question is more how different the VM is to the host (libraries, etc..).  With that caveat, you can develop something in Non-secure/Normal world and then deploy to a Realm.

Reply
  • Have you seen the RME and Arm CCA guides in the Learn the Architecture page?  If not, you might them useful as introduction to how RME works and how the CCA software stack is structured.

    https://www.arm.com/architecture/learn-the-architecture/a-profile

    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.

    This is going to partly depend on what differences you care about.

    At the ISA level, to an application Non-secure and Realm state can look the same.  You have the same instructions, that execute the same way, available to you.  

    I say "can" because it's not just a question of hardware.  If you're comparing running your application on the host in Non-secure state to running it on a Realmed VM, then the question is more how different the VM is to the host (libraries, etc..).  With that caveat, you can develop something in Non-secure/Normal world and then deploy to a Realm.

Children
  • I understand that Arm authorize companies to use its Arm architecture. But does the CCA architecture serves as a baseline reference, and each company can modify or create its own implementation of CCA? Since it's a software stack, does it mean that on a hardware level, it does not involve of designing additional/specific hardware for CCA, or each company can have its own design to have a piece of hardware on the chip to implement CCA and without disclosing how it's implemented?

    As a researcher, it would be very important to know this, as because of its proprietary nature, it would be less feasible for me to do any works if CCA can be modified without knowing how it's being used, and each company has its own design that if I write codes for one specific chip that they won't work on another company's chip.