Wie kann man RPI unter OSX erfolgreich emulieren?

20

Ich habe diese Anleitung befolgt , um RPI unter OSX über VirtualBox zu emulieren, und es funktioniert. Jetzt möchte ich die Dinge ein wenig vereinfachen, da diese Lösung das Ausführen von debian in einer virtuellen Maschine beinhaltet, nur um qemu darüber laufen zu lassen.

Ich suchte nach Anleitungen, wie man QEMU direkt auf OSX einrichtet, und fand Matthew Yee-Kings Anleitung . Ich habe die Anweisungen befolgt und alles scheint bis zum letzten Teil in Ordnung zu sein. Beim Start wird qemu-system-armdas QEMU-Fenster angezeigt, aber die Anwendung scheint einzufrieren. Nach einer Weile wird es in Activity Manager als Nicht antwortend angezeigt.

Was vermisse ich ? Wie emuliere ich RPI unter OSX mit QEMU?

George Profenza
quelle
2
Was willst du emulieren? Eigentlich ist RPis Raspbian nur Debian Linux für ARM-Architektur plus RPis spezifische Treiber / Bibliotheken und vorinstallierte Software. QEMU emuliert weder GPIO noch GPU von RPi. Es handelt sich lediglich um einen generischen ARM-basierten Computer, mit dem Sie Raspbian starten können. Wenn Sie also mit XBMC, Dateiserver usw. spielen möchten, installieren Sie einfach Debian Wheezy x86 auf VirtualBox und haben Sie Spaß. Sie können auch Scratch, PyGame usw. installieren
Kolontsov
Ich bin mir nicht sicher, ob ich das richtig durchdacht habe, aber ich würde gerne OpenCV und vielleicht OpenNI für ARM auf dem PI ausprobieren und überlegen, zuerst einige Tests mit einem Emulator durchzuführen (damit ich herausfinden kann, wie viel Speicherplatz ich dafür benötige) , damit unterwegs spielen, etc.) Ist die VirtualBox-Option die einfachere Lösung?
George Profenza
1
Ja, VirtualBox ist einfacher / schneller als die ARM-Emulation mit QEMU. Übrigens können Sie OpenCV für OS X ( opencv.org ) kompilieren oder unter Linux in VirtualBox herunterladen. Es ist auf allen Plattformen gleich. Ich habe versucht, OpenCV auf RPi für die Gesichtserkennung zu verwenden, es war sehr langsam. Unter OpenNI kann ich leider nichts weiter empfehlen (aber ich glaube nicht, dass QEMU die Geschwindigkeit von Kamera und RPi korrekt emuliert).
Kolontsov
@vk2 obwohl nicht thematisch zur Hauptfrage, aber im Zusammenhang mit meinem Zweck habe ich kürzlich einen OpenCV-Wrapper für das Pi Camera-Modul veröffentlicht: PiCapture , auch als OpenFrameworks-Addon verfügbar . Die Geschwindigkeit ist ziemlich anständig, vor allem im Vergleich zu einer USB-Kamera
George Profenza

Antworten:

16

Um eine emulierte Umgebung der Raspberry Pi-Software unter OSX einzurichten, benötigen Sie:

  • Ein Cross-Compiling-Tool für die CPU-Architektur von RPi. (zB ARM EABI Toolchain)
  • Der RPi-Kernel.
  • Das RPi-Root-Dateisystem.
  • Der Emulator (QEMU).
  • Das Cross-Compiling-Tool für die ARM-Architektur.

Vorausgesetzt, man hat bereits die neuesten Xcode- und Befehlszeilentools von Apple Developer und Homebrew installiert und sollte dann die Abhängigkeiten installieren:

brew install mpfr gmp libmpc libelf texinfo

Schnappen Sie sich das Tool und kompilieren Sie es:

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

Die RPi Kernel Compilation

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

Besorgen Sie sich die Konfigurationsdatei und konfigurieren Sie den Kernel:

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

Speichern Sie die Konfiguration und erstellen Sie anschließend den Kernel. Beachten Sie, dass die Kompilierung fehlschlagen und sich über die Aufnahme in scripts / mod / mk_elfconfig beschweren sollte. In diesem Fall muss die Datei erstellt werden:

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

Bearbeiten Sie es und schreiben Sie Folgendes:

#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

und folgen Sie dem Bauprozess:

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

Die Bilddatei wird erstellt und befindet sich als arch/arm/boot/zImage.

Der Emulator

Aufgrund des Fehlers eines weißen Bildschirms, der QEMU aufhängt, muss bei der Kompilierung mit llvm das Paket apple-gcc42 aus dem Dupes-Repository des Homebrews installiert werden.

brew install homebrew/dupes/apple-gcc42

Und dann kompiliere und installiere qemu wie folgt:

brew install qemu —use-gcc

Jetzt haben wir alles übrig, was wir brauchen, um die RPi-Distribution zu starten. Beginnen wir also wie folgt:

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

Wie auf der mluis- Website angegeben .

mluis
quelle
Beantwortete die Frage mit wesentlichen Teilen.
mluis
1
Als Hinweis von @ user1104942 muss möglicherweise Folgendes geändert werden, um in Yosemite zu arbeiten. #include <libelf/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 #define R_IA64_IMM64 7 #define R_PPC_ADDR32 8 #define R_PPC64_ADDR64 9 #define R_SH_DIR32 10 #define R_SPARC_64 11 #define R_X86_64_64 12 #define R_390_64 13 #define R_MIPS_64 14
mluis
Würde die Installation dieses Hahns: github.com/nitsky/homebrew-stm32 nicht dasselbe tun wie github.com/jsnyder/arm-eabi-toolchain.git ?
Andsens
Kann ich diese .img-Datei nach der Emulation und Entwicklung einfach auf einer SD-Karte speichern und in raspberrypi eingeben?
Mariomol
Versuchte dies auf MacOS 10.13.4 und kam nur so weit wie make install-crossvor Probleme. Außerdem habe ich von Homebrew erfahren, dass apple-gcc42"auf MacOS-Versionen, die neuer als Mavericks sind, aufgrund einer Inkompatibilität mit dem Original nicht wie erwartet kompiliert oder funktioniert".
Josh Habdas
3

Es gibt eine sofort einsatzbereite kostenpflichtige Option, die über QEMU ausgeführt wird: https://snorfi.us/raspiemu/

Wenn Sie nicht bezahlen möchten, können Sie auch die Alpha-Version in herunterladen https://sourceforge.net/projects/raspberrypiemulator/

Felipe Plets
quelle
0

Es sieht so aus, als ob der Schritt 'Den Kernel konfigurieren' etwas mehr braucht. Beachten Sie, dass

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

sollte eine der Dateien in diesem Verzeichnis sein wie arm-none-eabi-aroder arm-none-eabi-asetc ...

dangjavageek
quelle