Як успішно імітувати RPI на OSX?


20

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

Я переглянув путівники про те, як налаштувати qemu прямо на osx, і знайшов керівництво Меттью Йе-Кінга . Я дотримувався вказівок і все здається нормальним до останньої частини. Коли я запускаю, qemu-system-armя бачу вікно QEMU, але програма, здається, замерзає. Через деякий час у Менеджері активностей він відображається як "Не відповідає".

Що я пропускаю? Як я імітую RPI на OSX за допомогою QEMU?


2
Що ви хочете наслідувати? Насправді, Raspbian RPi - це лише Debian Linux для архітектури ARM, а також специфічні драйвери / бібліотеки RPi та попередньо встановлене програмне забезпечення. QEMU не імітує GPI або 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

Збережіть конфігурацію та давайте побудуємо ядро ​​згодом. Зауважте, що компіляція повинна провалюватися і скаржитися на включення до скриптів / 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 з сховища дуппев.

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, можливо, доведеться змінити наступне, щоб працювати в Йосеміті. #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-картці та вводити в малину?
mariomol

Спробував це на 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т.д. ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.