Como emular com êxito o RPI no OSX?

20

Eu segui este guia para emular o RPI no OSX via VirtualBox e ele funciona. Agora eu gostaria de simplificar um pouco as coisas, já que esta solução envolve a execução do debian em uma máquina virtual apenas para executar o qemu em cima do.

Pesquisei no Google guias sobre como configurar o qemu diretamente no osx e encontrei o guia de Matthew Yee-King . Eu segui as instruções e tudo parece bem até a última parte. Quando inicio qemu-system-arm, vejo a janela QEMU aparecer, mas o aplicativo parece congelar. Depois de um tempo, ele aparece como Não está respondendo no Gerenciador de atividades.

O que estou perdendo ? Como emulo o RPI no OSX com o QEMU?

George Profenza
fonte
2
O que você quer imitar? Na verdade, o Raspbian da RPi é apenas a arquitetura Debian Linux para ARM, além de drivers / bibliotecas específicos da RPi e software pré-instalado. O QEMU não emula o GPIO ou GPU do RPi, é apenas um computador genérico baseado em ARM que permite iniciar o Raspbian. Portanto, se você quiser jogar com o XBMC, servidor de arquivos e assim por diante, basta instalar o Debian Wheezy x86 no VirtualBox e se divertir. Você também pode instalar o Scratch, o PyGame etc.
kolontsov
Não tenho certeza se estou pensando nisso corretamente, mas gostaria de experimentar o OpenCV e talvez o OpenNI for ARM no PI e pensar em fazer alguns testes primeiro usando um emulador primeiro (para que eu possa exercitar quanto espaço preciso para tudo isso , brinque com isso em movimento etc.) A opção VirtualBox é a solução mais simples?
George Profenza
11
Sim, o VirtualBox é mais simples / mais rápido que a emulação de ARM com QEMU. A propósito, você pode compilar o OpenCV para OS X ( opencv.org ) ou fazer o download no Linux no VirtualBox. É o mesmo em todas as plataformas. Tentei usar o OpenCV no RPi para reconhecimento de rosto, era muito lento. Não é possível recomendar nada no OpenNI, desculpe (mas não acho que o QEMU emule a velocidade da câmera e da RPi corretamente).
kolontsov
@ vk2 embora fora do tópico da questão principal, mas relacionado ao meu objetivo, eu recentemente lançou um wrapper OpenCV para o módulo Pi Camera: PiCapture , também disponível como um complemento do OpenFrameworks . A velocidade é bastante decente, especialmente em relação ao uso de uma câmera USB
George Profenza

Respostas:

16

Para configurar um ambiente emulado do software Raspberry Pi no OSX, será necessário:

  • Uma ferramenta de compilação cruzada para a arquitetura de CPU do RPi. (por exemplo: ARM EABI Toolchain)
  • O Kernel RPi.
  • O sistema de arquivos raiz RPi.
  • O emulador (QEMU).
  • A Ferramenta de compilação cruzada para a arquitetura ARM.

Supondo que um já tenha as mais recentes ferramentas de linha de comando e Xcode da Apple Developer e homebrew instaladas, instale as dependências:

brew install mpfr gmp libmpc libelf texinfo

Pegue e compile a ferramenta:

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

A Compilação do Kernel RPi

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

Pegue o arquivo de configuração e configure o kernel:

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

Salve a configuração e vamos construir o kernel posteriormente. Observe que a compilação deve falhar e reclamar de uma inclusão nos scripts / mod / mk_elfconfig. Se isso acontecer, é necessário criar o arquivo:

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

Edite-o e escreva o seguinte:

#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 siga o processo de construção:

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

O arquivo de imagem é criado e localizado como arch/arm/boot/zImage.

O Emulador

Devido a um erro de uma tela branca pendurada no QEMU, se compilado com o llvm, é necessário instalar o pacote apple-gcc42 no repositório dupes do homebrew.

brew install homebrew/dupes/apple-gcc42

E então compile e instale o qemu como:

brew install qemu —use-gcc

Agora resta tudo o que precisamos para iniciar a distribuição RPi, então vamos começar como:

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

Conforme referido no site da mluis .

mluis
fonte
Respondeu à pergunta com partes essenciais.
mluis
11
Como sugestão de @ user1104942, pode ser necessário alterar o seguinte para trabalhar em Yosemite. #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 11/11
A instalação desta torneira: github.com/nitsky/homebrew-stm32 não faria o mesmo que github.com/jsnyder/arm-eabi-toolchain.git ?
andsens
depois de tudo emulado e desenvolvido, posso apenas armazenar esse .img em um cartão SD e inserir no raspberrypi?
Mariomol
Tentei isso no macOS 10.13.4 e só chegou até make install-crossantes de encontrar problemas. Além disso, aprendi com o Homebrew apple-gcc42"não compila ou funciona conforme o esperado nas versões macOS mais recentes que o Mavericks devido a uma incompatibilidade de upstream".
Josh Habdas
3

Existe uma opção paga pronta para executar que é executada sobre o QEMU: https://snorfi.us/raspiemu/

Se você não quiser pagar, também pode fazer o download da versão alfa em https://sourceforge.net/projects/raspberrypiemulator/

Felipe Plets
fonte
0

Parece que a etapa 'configurar o kernel' precisa um pouco mais. Observe que

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

deve ser um dos arquivos desse diretório, como arm-none-eabi-arou arm-none-eabi-asetc ...

dangjavageek
fonte