Qemu for ultra96

Kinsey Moore kinsey.moore at oarcorp.com
Fri Apr 23 13:38:17 UTC 2021


Yes, the ultra96 BSP generates a 32-bit executable. QEMU starts its CPUs 
in 64-bit mode. You would need a small piece of 64-bit AArch64 assembly 
to start on the CPU which would jump into the 32-bit executable. It 
could even theoretically be inlined into start.S as raw machine code.


Kinsey

On 4/23/2021 03:56, Alireza Banejad wrote:
> thank you for your response,
> i understood your second option but I somewhat haven't understood your 
> first option. isn't the code written for the ultra96 BSP already meant 
> to be 32-bit?
> would you give me a further explanation?
>
> On Thu, Apr 22, 2021 at 8:29 PM Kinsey Moore <kinsey.moore at oarcorp.com 
> <mailto:kinsey.moore at oarcorp.com>> wrote:
>
>     On 4/22/2021 08:47, Alireza Banejad wrote:
>     > Hello
>     > I want to know could I run applications for the ultra96 bsp in qemu?
>     > I tried the qemu-system-arm with the virt machine and cpu
>     specified as
>     > cortex-a7 yet I don't get anything
>     > I also tried the qemu-system-aarch64 specifying the machine as
>     > xlnx-zcu102 and it still couldn't run the application.
>     > BTW the application is just the hello sample from the testsuite
>     > In reality I actually could run applications that were built
>     with the
>     > xilinx_zynqmp_ultra96 on a actual zcu102 board
>     > But I don't understand why this doesn't happen in qemu
>     > I don't have the board right now that why I need to test my
>     > applications in qemu
>     > Long story short, how can I run my applications built for
>     > xilinx_zynqmp_ultra96 in qemu??
>     >
>     The issue that you're having is that the ARM xilinx_zynqmp_ultra96
>     BSP
>     is designed to run on the Ultrascale+ ZynqMP chip in 32-bit mode
>     instead
>     of 64-bit mode. qemu-system-aarch64 is the correct QEMU to use,
>     but it
>     starts in EL1/AArch64 mode by default. I haven't seen a way to
>     directly
>     start AArch32/ARMv7 code on the virtualized Cortex-A53 CPU, but on
>     real
>     hardware it would be controlled by the AA64nAA32 signal line. From
>     what
>     I can find, similar discussions have happened around the Raspberry Pi
>     platform and as of 2019 there was no way to configure direct boot to
>     AArch32.
>
>     Two viable options:
>
>     Write a piece of shim code to drop from EL1 to 32-bit mode based
>     on the
>     ARMv8 bare metal boot code (what you need is there, almost verbatim).
>
>     Recompile QEMU to get the functionality you want (the relevant
>     code is
>     in hw/arm/boot.c, look for EM_AARCH64).
>
>
>     Kinsey
>
>     _______________________________________________
>     devel mailing list
>     devel at rtems.org <mailto:devel at rtems.org>
>     http://lists.rtems.org/mailman/listinfo/devel
>     <http://lists.rtems.org/mailman/listinfo/devel>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20210423/be7e4f73/attachment.html>


More information about the devel mailing list