Как успешно эмулировать RPI на OSX?

20

Я следовал этому руководству, чтобы эмулировать RPI на OSX через VirtualBox, и он работает. Теперь я хотел бы немного упростить ситуацию, поскольку это решение включает запуск debian на виртуальной машине, чтобы просто запустить qemu поверх.

Я нашел руководство по настройке qemu прямо на osx и нашел руководство Мэтью Йи-Кинга . Я следовал инструкциям, и все, кажется, хорошо до последней части. При запуске qemu-system-armя вижу, что появляется окно QEMU, но приложение, кажется, зависает. Через некоторое время он отображается как не отвечающий в Activity Manager.

Что мне не хватает? Как мне эмулировать RPI на OSX с QEMU?

Георгий Профенца
источник
2
Что вы хотите подражать? На самом деле Raspbian от RPi - это просто Debian Linux для архитектуры ARM, а также специальные драйверы / библиотеки RPi и предустановленное программное обеспечение. QEMU не эмулирует GPIO или GPU RPi, это просто обычный компьютер на базе ARM, который позволяет запускать Raspbian. Поэтому, если вы хотите поиграть с XBMC, файловым сервером и так далее, просто установите Debian Wheezy x86 на VirtualBox и получайте удовольствие. Вы также можете установить Scratch, PyGame и т. Д.
kolontsov
Я не уверен, что все продумал правильно, но я хотел бы попробовать OpenCV и, возможно, OpenNI для ARM на PI и подумать о том, чтобы сначала провести несколько тестов с использованием эмулятора (чтобы я мог рассчитать, сколько места мне нужно для всего этого , играть с этим на ходу и т. д.) Является ли опция VirtualBox более простым решением?
Джордж Профенца
1
Да, VirtualBox проще / быстрее, чем эмуляция ARM с QEMU. Кстати, вы можете скомпилировать OpenCV для OS X ( opencv.org ) или загрузить его в Linux в VirtualBox. Это одинаково для всех платформ. Я пытался использовать OpenCV на RPi для распознавания лиц, это было очень медленно. Ничего не могу порекомендовать на OpenNI, извините (но я не думаю, что QEMU правильно эмулирует камеру и скорость RPi).
Колонцов
@ vk2, хотя это и не относится к основному вопросу, но связано с моей целью, я недавно выпустил оболочку OpenCV для модуля Pi Camera: PiCapture , также доступную как дополнение OpenFrameworks . Скорость довольно приличная, особенно по сравнению с использованием USB-камеры
Джордж Профенза

Ответы:

16

Для настройки эмулируемой среды программного обеспечения Raspberry Pi на OSX потребуется:

  • Инструмент кросс-компиляции для архитектуры процессора RPi. (например, ARM EABI Toolchain)
  • Ядро RPi.
  • Корневая файловая система RPi.
  • Эмулятор (QEMU).
  • Инструмент кросс-компиляции для архитектуры ARM.

Предполагая, что на одном уже установлены последние Xcode и инструменты командной строки от Apple Developer и homebrew, следует установить зависимости:

brew install mpfr gmp libmpc libelf texinfo

Возьмите и скомпилируйте инструмент:

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

Компиляция ядра RPi

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

Возьмите файл конфигурации и настройте ядро:

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

Сохраните конфигурацию и давайте потом соберем ядро. Обратите внимание, что компиляция должна завершиться сбоем, и вы получите жалобу на включение в scripts / mod / mk_elfconfig. Если это так, нужно создать файл:

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

Отредактируйте его и напишите следующее:

#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

и выполните процесс строительства:

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

Файл изображения создан и расположен как arch/arm/boot/zImage.

Эмулятор

Из-за ошибки, связанной с зависанием белого экрана QEMU, если он скомпилирован с llvm, необходимо установить пакет apple-gcc42 из репозитория homebrew's dupes.

brew install homebrew/dupes/apple-gcc42

А затем скомпилируйте и установите qemu как:

brew install qemu —use-gcc

Теперь у нас есть все, что нужно для запуска дистрибутива RPi, поэтому давайте начнем так:

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

Как указано на сайте Mluis .

mluis
источник
Ответили на вопрос с необходимыми деталями.
Мюлис
1
В качестве предложения от @ user1104942 для работы в 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
Не будет ли установка этого крана: github.com/nitsky/homebrew-stm32 сделать так же, как github.com/jsnyder/arm-eabi-toolchain.git ?
andsens
после того, как все эмулировано и разработано, могу ли я просто сохранить этот .img на SD-карте и ввести в raspberrypi?
Мариомоль,
Попробовал это на macOS 10.13.4 и только дошел make install-crossдо проблем. Кроме того, я узнал от Homebrew: apple-gcc42«не компилируется и не работает должным образом на версиях MacOS, более новых, чем Mavericks, из-за несовместимости с вышестоящими версиями».
Джош Хабдас
3

Существует готовая к запуску платная опция, которая работает через QEMU: https://snorfi.us/raspiemu/

Если вы не хотите платить за него, вы также можете скачать альфа-версию в https://sourceforge.net/projects/raspberrypiemulator/

Фелипе Плетс
источник
0

Похоже, что шаг «настроить ядро» требует немного больше. Обратите внимание, что

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

должен быть один из файлов в этом каталоге, например arm-none-eabi-arили arm-none-eabi-asт. д.

dangjavageek
источник