Come emulare con successo RPI su OSX?


20

Ho seguito questa guida per emulare RPI su OSX tramite VirtualBox e funziona. Ora vorrei semplificare un po 'le cose poiché questa soluzione prevede l'esecuzione di debian in una macchina virtuale solo per eseguire qemu.

Ho cercato su Google le guide su come impostare qemu direttamente su osx e ho trovato la guida di Matthew Yee-King . Ho seguito le istruzioni e tutto sembra a posto fino all'ultima parte. Quando avvio qemu-system-armvedo apparire la finestra QEMU ma l'applicazione sembra bloccarsi. Dopo un po 'appare come Non risponde in Activity Manager.

Cosa mi sto perdendo? Come posso emulare RPI su OSX con QEMU?


2
Cosa vuoi emulare? In realtà Raspbian di RPi è solo Debian Linux per l'architettura ARM oltre ai driver / librerie specifici di RPi e al software preinstallato. QEMU non emula la GPIO o la GPU di RPi, è solo un computer generico basato su ARM che ti consente di avviare Raspbian. Quindi, se vuoi giocare con XBMC, file server e così via, installa Debian Wheezy x86 su VirtualBox e divertiti. Puoi anche installare Scratch, PyGame etc
kolontsov il

Non sono sicuro di averlo pensato correttamente, ma mi piacerebbe provare OpenCV e forse OpenNI per ARM sul PI e ho pensato di fare alcuni test prima usando prima un emulatore (quindi posso allenarmi di quanto spazio ho bisogno per tutto questo , gioca con quello in movimento, ecc.) L'opzione VirtualBox è la soluzione più semplice?
George Profenza,

1
Sì, VirtualBox è più semplice / veloce dell'emulazione ARM con QEMU. A proposito, puoi compilare OpenCV per OS X ( opencv.org ) o scaricarlo in Linux in VirtualBox. È lo stesso su tutte le piattaforme. Ho provato a usare OpenCV su RPi per il riconoscimento facciale, è stato molto lento. Non posso consigliare nulla su OpenNI, scusate (ma non credo che QEMU emuli correttamente la velocità della fotocamera e dell'RPi).
Kolontsov,

@ vk2 sebbene off-topic alla domanda principale, ma in relazione al mio scopo, ho recentemente rilasciato un wrapper OpenCV per il modulo Pi Camera: PiCapture , disponibile anche come componente aggiuntivo OpenFrameworks . La velocità è abbastanza decente, soprattutto rispetto all'utilizzo di una fotocamera USB
George Profenza,

Risposte:


16

Per configurare un ambiente emulato del software Raspberry Pi su OSX è necessario:

  • Uno strumento di compilazione incrociata per l'architettura della CPU di RPi. (es. ARM EABI Toolchain)
  • Il kernel RPi.
  • Il filesystem di root RPi.
  • L'emulatore (QEMU).
  • Lo strumento di compilazione incrociata per l'architettura ARM.

Supponendo che uno abbia già gli ultimi Xcode e gli strumenti da riga di comando di Apple Developer e homebrew installati, quindi dovrebbe installare le dipendenze:

brew install mpfr gmp libmpc libelf texinfo

Prendi e compila lo strumento:

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

La compilazione del kernel RPi

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

Prendi il file di configurazione e configura il kernel:

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

Salvare la configurazione e compilare il kernel in seguito. Si noti che la compilazione dovrebbe fallire e lamentarsi di un'inclusione in script / mod / mk_elfconfig. In tal caso, è necessario creare il file:

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

Modificalo e scrivi quanto segue:

#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

e seguire il processo di costruzione:

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

Il file di immagine viene creato e posizionato come arch/arm/boot/zImage.

L'emulatore

A causa di un bug di uno schermo bianco che blocca QEMU se compilato con llvm, è necessario installare il pacchetto apple-gcc42 dal repository dups dell'homebrew.

brew install homebrew/dupes/apple-gcc42

E quindi compilare e installare qemu come:

brew install qemu —use-gcc

Ora ci resta tutto ciò di cui abbiamo bisogno per avviare la distribuzione RPi, quindi iniziamo come:

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

Come riferito sul sito web di mluis .


Ha risposto alla domanda con parti essenziali.
mluis,

1
Come suggerimento da @ user1104942, per lavorare in Yosemite potrebbe essere necessario modificare quanto segue. #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,

Non installare questo rubinetto: github.com/nitsky/homebrew-stm32 farebbe lo stesso di github.com/jsnyder/arm-eabi-toolchain.git ?
Andsens,

dopo tutto emulato e sviluppato, posso semplicemente memorizzare questo .img in una scheda SD e inserire in raspberrypi?
mariomol,

Ho provato questo su macOS 10.13.4 e sono arrivato solo make install-crossprima di colpire i problemi. Inoltre, ho imparato da Homebrew apple-gcc42"non si compila o funziona come previsto nelle versioni macOS più recenti di Mavericks a causa di un'incompatibilità a monte".
Josh Habdas,

3

Esiste un'opzione a pagamento pronta per essere eseguita su QEMU: https://snorfi.us/raspiemu/

Se non vuoi pagare per questo puoi anche scaricare la versione alpha in https://sourceforge.net/projects/raspberrypiemulator/


0

Sembra che il passaggio "configura il kernel" abbia bisogno di un po 'di più. Nota che

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

dovrebbe essere uno dei file in quella directory come arm-none-eabi-aro arm-none-eabi-asecc ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.