<div dir="ltr">
<p class="MsoNormal" style="margin-bottom:12pt;line-height:normal"><font size="2"><span style="font-family:arial,helvetica,sans-serif"><span lang="EN-US">Hello,</span></span></font></p>
<p class="MsoNormal" style="margin-bottom:12pt;line-height:normal"><font size="2"><span style="font-family:arial,helvetica,sans-serif"><span lang="EN-US">I am currently working on a TrustZone demo using Genode in the Secure
world and an Android OS in the Normal world on the SABRElite board.</span></span></font></p><p class="MsoNormal" style="margin-bottom:12pt;line-height:normal"><font size="2"><span style="font-family:arial,helvetica,sans-serif"><span lang="EN-US"><br></span></span></font></p>
<p class="MsoNormal" style="margin-bottom:12pt;line-height:normal"><font size="2"><span style="font-family:arial,helvetica,sans-serif"><span lang="EN-US">I've succesfully got the Genode 15.08 base-hw kernel working on
the board but I am running in some issues with the Normal world. For this I am
using an Android distribution customised for the SABRElite, provided by the SoC
distributor.</span></span></font></p><p class="MsoNormal" style="margin-bottom:12pt;line-height:normal"><font size="2"><span style="font-family:arial,helvetica,sans-serif"><span lang="EN-US"><br></span></span></font></p>
<p class="MsoNormal" style="line-height:normal"><font size="2"><span style="font-family:arial,helvetica,sans-serif"><span lang="EN-US">One major
problem is that I'm unable to get any output from the Android OS when it is
booted by Genode. When booting Android using u-boot, there is output as
expected. This supports the idea that the used Device Tree Blob is correct. The
command line options for the kernel are provided during its compilation. This
seems to work since booting with u-boot gets output on the specified ports.</span></span></font></p><p class="MsoNormal" style="line-height:normal"><font size="2"><span style="font-family:arial,helvetica,sans-serif"><span lang="EN-US"><br></span></span></font></p>
<p class="MsoNormal" style="margin-bottom:12pt;line-height:normal"><font size="2"><span style="font-family:arial,helvetica,sans-serif"><span lang="EN-US">When
booting with Genode however, there is no output whatsoever. The location of the DTB in the
memory is passed to the Normal world using the r2 register, which as far as I
know is all that needs to be done.</span></span></font></p><p class="MsoNormal" style="margin-bottom:12pt;line-height:normal"><font size="2"><span style="font-family:arial,helvetica,sans-serif"><span lang="EN-US">Any input on this would be much appreciated since you can probably
imagine that debugging the Normal world kernel without output is a grueling
task</span></span></font></p><p class="MsoNormal" style="margin-bottom:12pt;line-height:normal"><font size="2"><span style="font-family:arial,helvetica,sans-serif"><span lang="EN-US"><br></span></span></font></p>
<p class="MsoNormal" style="margin-bottom:12pt;line-height:normal"><font size="2"><span style="font-family:arial,helvetica,sans-serif"><span lang="EN-US">For now there exists a workaround for debugging using kernel output,
thanks to the Secure world. The current debug procedure consists of entering
the <i>smc </i>command in the code to check whether the Normal world reaches this
portion of code. This has allowed me to get the kernel itself running but here
I ran into another issue, being the L2 cache used in the SABRElite board.</span></span></font></p><p class="MsoNormal" style="margin-bottom:12pt;line-height:normal"><font size="2"><span style="font-family:arial,helvetica,sans-serif"><span lang="EN-US">
The Linux kernel tries to configure which can't really be done from the Normal
world. It can however make calls to the Secure world to configure the
restricted registers. Once the cache is actually enabled, Genode immediately
stops though. I imagine this is caused by the fact that Genode does not expect
the L2 cache to actually work.</span></span></font></p><p class="MsoNormal" style="margin-bottom:12pt;line-height:normal"><font size="2"><span style="font-family:arial,helvetica,sans-serif"><span lang="EN-US">
Are there any pointers to correctly configure the L2 cache in Genode to keep it
executing after the cache's activation? Alternatively, is it possible to run
Android without the L2 cache and how would one best go about achieving this?</span></span></font></p>
<p class="MsoNormal" style="line-height:normal"><font size="2"><span style="font-family:arial,helvetica,sans-serif"><span>Best regards,</span></span></font></p>
<p class="MsoNormal" style="line-height:normal"><font size="2"><span style="font-family:arial,helvetica,sans-serif"><span>Vincent</span></span></font></p>
<p class="MsoNormal"><font size="2"><span style="font-family:arial,helvetica,sans-serif"> </span></font></p>
</div>