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.mo...@oarcorp.com
<mailto:kinsey.mo...@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@rtems.org <mailto:devel@rtems.org>
http://lists.rtems.org/mailman/listinfo/devel
<http://lists.rtems.org/mailman/listinfo/devel>
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel