Hi, Adam:
Thank you for your reply!
Memory on imx51 is starting at 0x90000000. At 0x60000000 there are pheripherals, i.e. there's no usable memory where something can be copied to (or executed).
I think we make a wrong understanding about " l4sigma0_map_iomem() " .
If you want to execute something it needs to be in the region 0x90000000-0xafffffff. A simple trick is to reduce the memory for secure side (e.g. via imx51.conf) and use the rest for NS.
Now, we use 0x90000000-0x9fffffff to run secure side, and revise the vm configuration as following: Ram_base = 0xa1000000, Ram_size = 0x4000000, // 128 MB Start_addr = Ram_base + 0x100000, // +1MB
The l4_vm_state is set as: state->pc = Start_addr; state->cpsr = 0x13; //svc state->r[0] = 0; state->r[1] = 0x84D; imx51 //arch num
The NS bare app's entry is set as 0xa1100000, but we still stop at "VM run", we use some tracing methods and find the system stop at:
// set pending events ldmia r0!, {r1} and r1, r1, #0x1c0 mcr p15, 0, r1, c12, c1, 1 // ivt.S line:954, looks like some ISR pending control.
BTW, should we write a virtual-interrupt layer to map the NS call with Secure side? I think maybe NS bare app can not visit the pheripherals address directly.
Steven Meng
--------------------------------------------------------------------------------------------------- Confidentiality Notice: The information contained in this e-mail and any accompanying attachment(s) is intended only for the use of the intended recipient and may be confidential and/or privileged of Neusoft Corporation, its subsidiaries and/or its affiliates. If any reader of this communication is not the intended recipient, unauthorized use, forwarding, printing, storing, disclosure or copying is strictly prohibited, and may be unlawful.If you have received this communication in error,please immediately notify the sender by return e-mail, and delete the original message and all copies from your system. Thank you. ---------------------------------------------------------------------------------------------------
On Thu Nov 22, 2012 at 20:31:44 +0800, meng-qy wrote:
Memory on imx51 is starting at 0x90000000. At 0x60000000 there are pheripherals, i.e. there's no usable memory where something can be copied to (or executed).
I think we make a wrong understanding about " l4sigma0_map_iomem() " .
If you want to execute something it needs to be in the region 0x90000000-0xafffffff. A simple trick is to reduce the memory for secure side (e.g. via imx51.conf) and use the rest for NS.
Now, we use 0x90000000-0x9fffffff to run secure side, and revise the vm configuration as following: Ram_base = 0xa1000000, Ram_size = 0x4000000, // 128 MB Start_addr = Ram_base + 0x100000, // +1MB
The l4_vm_state is set as: state->pc = Start_addr; state->cpsr = 0x13; //svc state->r[0] = 0; state->r[1] = 0x84D; imx51 //arch num The NS bare app's entry is set as 0xa1100000, but we still stop at "VM run", we use some tracing
methods and find the system stop at:
// set pending events ldmia r0!, {r1} and r1, r1, #0x1c0 mcr p15, 0, r1, c12, c1, 1 // ivt.S line:954, looks like some ISR pending control.
Hmm, I wonder how it can hang/stop there.
BTW, should we write a virtual-interrupt layer to map the NS call with Secure side? I think maybe NS bare app can not visit the pheripherals address directly.
Yes, same thoughts.
Adam
l4-hackers@os.inf.tu-dresden.de