This works for me on MacOS Mojave,
Create a file called qemu_script.sh and copy-paste the code below
give execution perms and execute,
$ chmod +x qemu_script.sh
brew install qemu
export QEMU=$(which qemu-system-arm)
One obvious reason is that raspi3 will load the kernel at the 0x80000 address, which is dedicated to the 64-bit kernel. If you load a 32-bit kernel at that address, it will fail to run because the absolute address values of all relative offsets will be wrong. The difference can be seen in "arm/raspi.c" file:
#define FIRMWARE_ADDR_2 0x8000 /* Pi 2 loads ...
Late to the party, however I think I have solution for you.
As Ingo mentioned, in this tutorial custom image is used for emulation. However it does not mean you can't emulate official one like raspbian-buster-lite image. This image also contains all necessary files for QEMU emulation, however they are named differently. Also you can only emulate this kernel ...
In retrospect, this was a dumb question - trying to run an embedded Raspberry Pi OS on QEMU is not supported. Those who run Raspbian on QEMU use a custom kernel specifically designed for QEMU.
The reason I was doing this is because the serial and HDMI adapters I ordered for my Pi are still in the mail (any month now).
There's a silver lining - I just ...
I share my updated version of the script for Raspbian-buster-lite guest on Ubuntu host.
QEMU=$(command -v qemu-system-arm)