XEN Hypervisor error when running FreeRTOS on Zynq UltraScale+ for DOM0 and DOMU

I implemented the basic operation by modifying the FreeRTOS settings to “Changed hypervisor_guest to true.” using Vitis’s SDK.

FreeRTOS Configuration and Executable Creation:
MEMORY
{
psu_ddr_0_MEM_0 : ORIGIN = 0x40000000, LENGTH = 0x100000
psu_ddr_1_MEM_0 : ORIGIN = 0x800000000, LENGTH = 0x80000000
psu_ocm_ram_0_MEM_0 : ORIGIN = 0xFFFC0000, LENGTH = 0x40000
psu_qspi_linear_0_MEM_0 : ORIGIN = 0xC0000000, LENGTH = 0x20000000
}

aarch64-linux-gnu-objcopy -O binary --gap-fill 0 BOOT.BIN
I ran DOM0 on the XEN hypervisor in PetaLinux and then executed DOMU, but an error occurred. Can you help me resolve this?

XEN config:

=====================================================================

Example FreeRTOS Guest configuration

=====================================================================

Guest name

name = “freertos hello world”

Kernel image to boot

kernel = “/home/root/FreeRTOS.BIN”

Kernel command line options - Allocate 8MB

memory = 8

Number of VCPUS

vcpus = 1

Pin to CPU 0

cpus = [1]
irqs = [ 68, 69, 70, 54 ]
iomem = [ “0xff010,1”, “0xff110,1” ]

XEN list :
Name ID Mem VCPUs State Time(s)
Domain-0 0 1024 1 r----- 37.2
freertos hello world 2 8 1 r----- 2793.4

XEN Meassag
(XEN) memory_map:add: dom2 gfn=ff110 mfn=ff110 nr=1 cache=0
(XEN) traps.c:2059:d2v0 HSR=0x00000093840047 pc=0x00000040001e24 gva=0xff0a0214 gpa=0x000000ff0a0214

The XEN hypervisor lists it as a guest, but FreeRTOS does not actually operate.

I haven’t yet played around with the Xen Hypervisor, but I have some basic FreeRTOS debugging questions…

  1. In your FreeRTOS binary, have you started the scheduler?
  2. Is your task in any way waiting on a shared resource? Possibly when printing “hello world”?
  3. Is there anyway you can connect a debugger to this FreeRTOS execution? Where does it say the program is?

Compiler version for FreeRTOS development. : image

When I set hypervisor_guest to true, debugging starts but doesn’t halt at any specific point. When set to false, debugging operates in sequence. In essence, when it’s true, it doesn’t work properly, but when it’s false, it does.

I’m not sure either, so I’m asking. Should the system operate in debugging mode even when hypervisor_guest is set to true?

I don’t quite understand what you mean.