Hi!
I'm doing research on Arm CCA and new to the Arm studio. I'm a little bit confused about what role does Arm Studio play in CCA software stack debugging?
In the tutorial for CCA, I can create a realm world VM and then run application in it on a FVP model. But can I debug the application within the realm world by using Arm Studio?
Thank you if anyone can help!
Yes, the debugger will give you visibility of memory, registers, MMU tables etc which will help you understand how the system is configured and changing based on your code.Below is a screenshot using the supplied RME example.
Thank you! I run a simple C++ program when connecting to a CCA supported FVP, and it starts the debugging session. I can indeed see some of the MMU, etc. However, how would I be certain that if a certain program is being run in realm world instead of normal world?From the view of Arm Development Studio.
My further question is: the example provided is not written in C++, and does that mean if I want to have a program to be run in CCA realm world, I have to write an assembly program instead of C++ program? I don't think I can find a way to write c++ codes to be exclusively run in realm world. I checked other tutorials but couldn't find anything useful. Is there any resource that I can find to teach me how to write programs to create a realm world and then run an application inside it?
Thank you again for your help!
In the Debugger of Arm Development Studio, when code is running/stopped in Realm state, you will see in the Commands view, e.g.:Execution stopped in EL1h mode at breakpoint 1: EL1RL:0x0000000080000818EL1RL:0x0000000080000818 101,0 ISBwhere "RL" means "Realm".The "RME" example in Arm Development Studio is just a simple demonstration to show the support for the Realm Management Extension (RME) in the Arm Compiler, the AEMvA FVP model, and the Debugger. It is not intended to be a complete or reference implementation. In real implementations, a Realm Management Monitor firmware (RMM) manages the execution of Realm VMs and their interaction with the hypervisor. See:
https://trustedfirmware-a.readthedocs.io/en/v2.12.0/components/realm-management-extension.htmlEarly startup code is typically written in assembler, but the bulk of the RMM firmware is written in C. See:
https://www.trustedfirmware.org/projects/tf-rmm.
Applications can be written in C, C++, or maybe some other language.For more help on the details of RME, please reach out on
https://community.arm.com/forums/f/architectures-and-processors-forum