Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: emulateing raspberry pi 1 with qemu

145 views
Skip to first unread message

Theo

unread,
Nov 14, 2017, 10:46:43 AM11/14/17
to
Mark Moss <mark...@9u1bf82k.invalid> wrote:
> Is it possible to emulate raspberry pi 1 with qemu without changing the
> qemu source code?
>
> Example:
>
> qemu-system-arm -kernel raspi1/kernel7.img -M raspi2 -append "rw
> earlyprintk loglevel=8 bcm2708.boardrev=0xd dwc_otg.lpm_enable=0 root=/
> dev/mmcblk0p2" -sd devuan_jessie_1.0.0_armel_raspi1.img -dtb raspi1/
> bcm2708-rpi-b.dtb
>
> doesn't work.

Define "doesn't work".

What version of qemu are you using and where are you getting it from?

Theo

a...@spamtrap.com

unread,
Nov 14, 2017, 5:37:40 PM11/14/17
to
On Tue, 14 Nov 2017 12:20:34 +0000 (UTC), Mark Moss
<mark...@9u1bf82k.invalid> wrote:

>Is it possible to emulate raspberry pi 1 with qemu without changing the
>qemu source code?
> ...
In windows 10 that works fine:

<https://sourceforge.net/projects/rpiqemuwindows/>
--
aen

Theo

unread,
Nov 15, 2017, 4:45:46 PM11/15/17
to
Mark Moss <mark...@9u1bf82k.invalid> wrote:
> "doesn't work" means there is no response (boot messages) besides heavy
> host cpu consumption. qemu window remains black.

OK, so you're doing sensible things compiling the head of upstream sources,
rather than running old versions which you might be if you downloaded qemu
from somewhere random.

Though maybe the Pi stuff is on a branch somewhere?

> I tried the latest windows installer from www.qemu.org "qemu-w64-
> setup-20171108.exe" which installs qemu v2.10.90. That again seems to come
> from http://repo.or.cz.
>
> This version has a promising machine option "-M raspi" instead of the
> afore mentioned "-M raspi2". Sadly this version stops with the Error
> "ERROR:/home/stefan/src/qemu/repo.or.cz/qemu/ar7/qom/
> object.c:176:type_get_parent: assertionfailed: (type->parent_type !=
> NULL).

It may be the relevant machine isn't compiled in.

> I also tried the master branch (qemu 2.11.0-rc1) from git.qemu.org/
> qemu.git on archlinux. This version has the option "-M raspi2" only which
> "doesn't work" for raspi1 images (black screen, no response, no
> "decrompressing initrd/kernel image").
>
> With the raspi2 image devuan_jessie_1.0.0_armhl_raspi2.img and
> corresponding "kernel7.img" qemu shows some boot messages (until init is
> killed) using qemu command line option "-dtb bcm2709-rpi-2-b.dtb" instead
> of "-dtb bcm2708-rpi-b.dtb"

That's promising. I'm puzzled why Pi 1 images don't work though - qemu
should support them.

Try bog standard Raspbian?

> qemu/hw/arm/raspi.c from git.qemu.org/qemu.git seems to differentiate
> between raspi 1 and 2 though:
>
> static const int raspi_boardid[] = {[1] = 0xc42, [2] = 0xc43};

I think this board ID is the some jumpers which are hardwired on the PCB. I
think it's mostly used by things like wiringPi to name the GPIOs
appropriately on different boards. I don't know if there's anything in the
kernel that uses it.

> My hope was that it is simply a question of finding the right command line
> options. But the code suggests it is not (yet/anymore) implemented.

My guess would be that qemu emulates the GPU firmware, it doesn't emulate
the whole SoC. So it could be that they have iterated the firmware and qemu
has not kept up. A bit of a wild stab in the dark though.

Can you find a version of the kernel that qemu has been tested with?

Theo
0 new messages