21

I followed this guide to emulate RPI on OSX via VirtualBox and it works. Now I'd like to simplify things a bit since this solution involves running debian in a virtual machine just to run qemu on top of.

I googled for guides on how to setup qemu straight on osx and found Matthew Yee-King's guide. I followed the instructions and all seems fine until the last part. When I launch qemu-system-arm I see the QEMU window appear but the application seems to freeze. After a while it appears as Not Responding in Activity Manager.

What am I missing ? How do I emulate RPI on OSX with QEMU ?

George Profenza
  • 651
  • 5
  • 10
  • 25

3 Answers3

19

To set up an emulated environment of the Raspberry Pi software on OSX one will need:

  • A Cross-Compiling Tool for the CPU architecture of RPi. ( eg. ARM EABI Toolchain )
  • The RPi Kernel.
  • The RPi root filesystem.
  • The Emulator (QEMU).
  • The Cross-Compiling Tool for the ARM architecture.

Assuming one already have the latest Xcode and command line tools from Apple Developer and homebrew installed, then should install the dependencies:

brew install mpfr gmp libmpc libelf texinfo

Grab and compile the tool:

mkdir ~/rpi
mkdir ~/rpi/arm-cs-tools
git clone https://github.com/jsnyder/arm-eabi-toolchain.git
cd arm-eabi-toolchain
PREFIX=$HOME/rpi/arm-cs-tools make install-cross
make clean
echo “export PATH=$HOME/rpi/arm-cs-tools/bin:$PATH” » ~/.bash_profile

The RPi Kernel Compilation

mkdir ~/rpi/kernel
cd ~/rpi/kernel
git clone --depth=1 https://github.com/raspberrypi/linux.git
cd linux

Grab the config file and configure the kernel:

cp arch/arm/configs/bcmrpi_cutdown_defconfig .config
make ARCH=arm CROSS_COMPILE=~/rpi/arm-cs-tools/bin/arm-none-eabi- menuconfig

Save the configuration and let’s build the kernel afterwards. Note that the compilation should fail and complain about an <elf.h> inclusion in scripts/mod/mk_elfconfig. If it does, one must create the file:

sudo touch /usr/local/include/elf.h

Edit it and write the following:

#include <libelf.h>

#define R_386_NONE 0 #define R_386_32 1 #define R_386_PC32 2 #define R_ARM_NONE 0 #define R_ARM_PC24 1 #define R_ARM_ABS32 2 #define R_MIPS_NONE 0 #define R_MIPS_16 1 #define R_MIPS_32 2 #define R_MIPS_REL32 3 #define R_MIPS_26 4 #define R_MIPS_HI16 5 #define R_MIPS_LO16 6

and follow through the building process:

make ARCH=arm CROSS_COMPILE=~/rpi/arm-cs-tools/bin/arm-none-eabi- -k

The image file is created and located as arch/arm/boot/zImage.

The Emulator

Due to a bug of a white screen hanging QEMU if compiled with llvm one must install the package apple-gcc42 from the homebrew’s dupes repository.

brew install homebrew/dupes/apple-gcc42

And then compile and install qemu like:

brew install qemu —use-gcc

Now we’re left with all we need to start the RPi distribution so let’s start it like:

qemu-system-arm -M versatilepb -cpu arm1176 -hda debian6-19-04-2012.img -kernel zImage -append “root=/dev/sda2” -serial stdio -usbdevice tablet

As refered on mluis's website.

mluis
  • 316
  • 3
  • 6
3

There is a ready to run paid option that runs over QEMU: https://snorfi.us/raspiemu/

If you don't want to pay for it you can also download the alpha version in https://sourceforge.net/projects/raspberrypiemulator/

Felipe Plets
  • 131
  • 7
0

It looks like the 'configure the kernel' step needs a bit more. Note that

make ARCH=arm CROSS_COMPILE=~/rpi/arm-cs-tools/bin/arm-none-eabi- menuconfig 

should be one of the files in that directory like arm-none-eabi-ar or arm-none-eabi-as etc...

Brick
  • 1,375
  • 2
  • 14
  • 20