Hi Bob,
On 07.07.2015 15:32, Bob Stewart wrote:
Hi Martin, By pure luck I got the kernel to initialize and the printf test to run to completion.
Cool that you managed to find the problem :)
The issue appears to be with the member function
"trustzone_hypervisor_call" in the PL310 struct which is in the board.h file for the platform. My board.h file is just a direct copy of the one from the panda directory. ... I kept the code commented out in "trustzone_hypervisor_call" did a clean and built the printf test without the the O flag setting. ... I'm not planning to use trustzone support currently but I'll take a look at the assembly code and read the trustzone support in the Cortex-A9 TRM. The AM437x is at revision R2P10 of the Cortex-A9.
Does the Panda board come up in Secure mode?
The hypervisor calls you mentioned are not related to Trustzone support. The Panda board comes with a fixed secure-hypervisor firmware. The user OS (here Genode) is started in non-secure mode and AFAIK there is no way to change this. The hypervisor calls are needed in our L2-cache driver because some parts of the PL310-controller are configured to be Trustzone-secured on Panda and the hypervisor provides an interface to access them from the non-secure world.
Admittedly, I don't think that it is a good idea to copy stuff from the Panda-specific sources. If you want to copy, better use PBXA9 as its port has a less sophisticated feature-set. For example, now you have enabled the L2 cache and maybe also FPU stuff which is both not necessary but obstructive for a basic port. That said, it might also be pure luck that your current implementation works. Maybe your PL310 needs a proper replacement for the ops that were achieved by the hypercalls.
Cheers, Martin