OSXでRPIを正常にエミュレートする方法は?


20

このガイドに従って VirtualBoxを介してOSXでRPIをエミュレートしましたが、動作します。このソリューションでは、仮想マシンでdebianを実行してqemuを実行するだけなので、少し簡単にしたいと思います。

私はosxでqemuを直接セットアップする方法のガイドを探して、Matthew Yee-Kingのガイドを見つけました。私は指示に従ったが、最後の部分まではすべてうまくいくようだ。起動するqemu-system-armとQEMUウィンドウが表示されますが、アプリケーションがフリーズしているようです。しばらくすると、アクティビティマネージャーに「応答なし」と表示されます。

私は何が欠けていますか?QEMUを使用してOSXでRPIをエミュレートするにはどうすればよいですか?


2
何をエミュレートしますか?実際、RPiのRaspbianは、ARMアーキテクチャ用のDebian Linuxに加えて、RPi固有のドライバ/ライブラリ、およびプリインストールソフトウェアです。QEMUはRPiのGPIOやGPUをエミュレートするのではなく、Raspbianを起動できる汎用のARMベースのコンピューターです。そのため、XBMC、ファイルサーバーなどを使用したい場合は、VirtualBoxにDebian Wheezy x86をインストールして楽しんでください。スクラッチ、
PyGame

私はこれを正しく考えているかどうかはわかりませんが、OpenCVとおそらくARM用のOpenNIをPIで試し、最初にエミュレータを使用していくつかのテストを行うことを考えました(そのために必要なスペース、外出先でそれを再生するなど)VirtualBoxオプションはよりシンプルなソリューションですか?
ジョージ・プロフェンツァ

1
はい、VirtualBoxはQEMUを使用したARMエミュレーションよりも簡単/高速です。ところで、OpenCV for OS X(opencv.org)をコンパイルするか、VirtualBoxでLinuxにダウンロードできます。すべてのプラットフォームで同じです。顔認識にRPiでOpenCVを使用しようとしましたが、非常に時間がかかりました。OpenNIでは何も推奨できません。申し訳ありません(ただし、QEMUはカメラとRPiの速度を正しくエミュレートするとは思いません)。
kolontsov

@ vk2は主な質問のトピックから外れていますが、私の目的に関連して、最近、Pi CameraモジュールのOpenCVラッパー、PiCaptureをリリースしました。これはOpenFrameworks アドオンとしても利用できます。特にUSBカメラを使用した場合と比較して、速度はかなりまともです
ジョージプロフェンザ14

回答:


16

OSXでRaspberry Piソフトウェアのエミュレートされた環境をセットアップするには、次のものが必要です。

  • RPiのCPUアーキテクチャ用のクロスコンパイルツール。(例:ARM EABIツールチェーン)
  • RPiカーネル。
  • RPiルートファイルシステム。
  • エミュレーター(QEMU)。
  • ARMアーキテクチャ用のクロスコンパイルツール。

Apple Developerとhomebrewの最新のXcodeとコマンドラインツールが既にインストールされている場合、依存関係をインストールする必要があります。

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ます。

エミュレーター

llvmでコンパイルした場合、QEMUがハングする白い画面のバグのため、homebrewのdupesリポジトリから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のWebサイトで言及されているとおり。


重要な部分で質問に答えました。
mluis 14

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-stm32github.com/jsnyder/arm-eabi-toolchain.gitと同じですか?
-andsens

すべてエミュレートおよび開発した後、この.imgをSDカードに保存し、raspberrypiに入力するだけでいいですか?
マリオモール

macOS 10.13.4でこれを試してみましたが、make install-cross問題が発生する前に限りました。また、Homebrewからapple-gcc42「アップストリームの非互換性のため、Mavericksよりも新しいmacOSバージョンで期待どおりにコンパイルまたは機能しない」ことを学びました。
ジョシュハブダス

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などのそのディレクトリ内のファイルのいずれかでなければなりません...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.