Hey Abhay,
First of all, sorry for the late feedback, last week, I couldn't find the time to answer your mail.
Am 27.11.2015 um 00:19 schrieb Abhay Amala:
I am running tz_vmm on imx53qsb and thinking about taking a snapshot of the normal world memory inside the tz_vmm app and put into a file as a raw data. I appreciate if anyone give me a hint.
Inside the tz_vmm the guest RAM is already mapped. You can get its local base address via Vm_base::ram()->local(). Its size can be read via Vm_base::ram()->size().
However, be aware that the state you read from the guest RAM in tz_vmm is most probably not up-to-date as the non-secure world uses separate caches that do not synchronize with the caches of the secure world. As far as I know, there is no way to cause a non-secure cache flush from within the secure world. But I might be wrong as I haven't read the manual [1] in depth regarding this topic. Maybe it's a solution to implement a simple protocol between VMM and VM, using interrupt injection and SMCs to requests the guest OS to flush its caches for you.
Regarding the file you want to create from the read RAM data: It might be a good idea to use the SD card as storage medium as an appropriate driver [2] already exists. However, the driver provides a Block session while you want to use a File_system session in tz_vmm. Assuming, that you have formatted your SD partition with FAT32, you can create a File_system session out of a Block session by using use ffat_fs. You may have a look at the test scripts [3] to receive an impression on how ffat_fs is used.
If you have further questions, don't hesitate to ask ;)
Cheers, Martin
[1] https://cache.freescale.com/files/32bit/doc/ref_manual/iMX53RM.pdf [2] repos/os/src/drivers/sd_card/spec/imx53 [3] repos/libports/run/libc_ffat_fs.run repos/libports/run/libc_ffat.run