bao-project / bao-demos

A guide on how to build and use a set of Bao guest configurations for various platforms
Other
33 stars 37 forks source link

BAO ERROR: no emulation handler for abort(0x9000030 at 0xd84) #10

Closed Abbott-Ming closed 1 year ago

Abbott-Ming commented 1 year ago

PLATFORM is qemu-aarch64-virt, and DEMO= baremetal, when i make run and input the 'go 50000000' into the u-boot, but output next message: BAO ERROR: no emulation handler for abort(0x9000030 at 0xd84)

I want to know where the baremetal.bin is load in uboot and the reason for my probleam. Thanks!

xuechou commented 1 year ago

question 1

baremetal.bin was staticly linked to bao.bin. And entry of bao.bin is 0x5000 0000 where u-boot jump to.

question 2

Could you please provide more details about your environment (OS, BAO version, build steps)?

josecm commented 1 year ago

So sorry for the delay. I was not receiving notifications for this repo's issues.

@Abbott-Ming I think your problem is solved already by b5de4da49aa5e7dce1313c4d96d11d740b34b4a0. We were not tracking a specific tag for the baremetal code. As it evolved the physical addresses it was using diverged from the addresses in the bao-demos configurations. We'll soon update the bao-demos to use the latest version of the baremetal application. Please clean the working directory or fully re-clone the repo when trying again.

I want to know where the baremetal.bin is load in uboot and the reason for my probleam. Thanks!

To answer this specific question, as @xuechou pointed out, we statically link the guest's baremetal.bin blob to bao. So bao.bin contains both the hypervisor code and the guest's code. This binary is actually loaded by the loader device in qemu command line. U-boot's job is just to jump to the base of where the binary was loaded, i.e., 0x50000000.