如何在OSX上成功模拟RPI?


20

我按照本指南通过VirtualBox在OSX上模拟RPI,它可以正常工作。现在,我想简化一下事情,因为此解决方案涉及在虚拟机中运行debian只是为了在其上运行qemu。

我在google上搜索了有关如何直接在osx上设置qemu的指南,并找到了Matthew Yee-King的指南。我按照说明进行操作,直到最后一部分为止一切都很好。启动时,qemu-system-arm我看到QEMU窗口出现,但应用程序似乎死机了。一段时间后,它在活动管理器中显示为“无响应”。

我想念什么?如何使用QEMU在OSX上模拟RPI?


2
您想模仿什么?实际上,RPi的Raspbian只是用于ARM体系结构的Debian Linux,加上RPi的特定驱动程序/库和预安装的软件。QEMU不会模拟RPi的GPIO或GPU,而只是基于ARM的通用计算机,您可以启动Raspbian。因此,如果您想使用XBMC,文件服务器等,只需在VirtualBox上安装Debian Wheezy x86即可获得乐趣。您还可以安装Scratch,
PyGame

我不确定我是否正确地考虑了一下,但是我想尝试在PI上尝试OpenCV以及也许可以在ARM上使用OpenNI for ARM,并考虑首先使用模拟器进行一些测试(这样我可以锻炼我需要多少空间来完成所有这些工作) ,随身携带等等。)VirtualBox选项是更简单的解决方案吗?
乔治·普罗芬扎2013年

1
是的,VirtualBox比带有QEMU的ARM仿真更简单/更快。顺便说一句,您可以为OS X编译OpenCV(opencv.org)或在Linux的VirtualBox中下载它。在所有平台上都是相同的。我试图在RPi上使用OpenCV进行面部识别,但是速度非常慢。不能推荐OpenNI上的任何内容,对不起(但是我不认为QEMU可以正确模拟摄像机和RPi的速度)。
kolontsov

@ vk2虽然不是主要问题的话题,但是与我的目的有关,我最近发布了Pi Camera模块的OpenCV包装器:PiCapture,也可以作为OpenFrameworks插件使用。速度相当不错,特别是与使用USB摄像头相比
George Profenza

Answers:


16

要在OSX上设置Raspberry Pi软件的仿真环境,将需要:

  • 用于RPi CPU体系结构的交叉编译工具。(例如,ARM EABI工具链)
  • RPi内核。
  • RPi根文件系统。
  • 仿真器(QEMU)。
  • 用于ARM体系结构的交叉编译工具。

假设已经安装了Apple Developer的最新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

保存配置,然后让我们构建内核。请注意,编译应该会失败,并抱怨脚本/ 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编译,则必须从自制软件的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 网站上所述


用基本部分回答了这个问题。
mluis 2014年

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 2015年


毕竟是经过仿真和开发的,我可以仅将此.img存储在SD卡中并输入raspberrypi吗?
mariomol '16

在macOS 10.13.4上进行了尝试,仅make install-cross在遇到问题之前就解决了。另外,我从Homebrew中学到apple-gcc42“由于上游不兼容,在比Mavericks更新的macOS版本上无法按预期进行编译或运行”。
乔什·哈布达斯

3

有一个可以在QEMU上运行的随时运行的付费选项: https://snorfi.us/raspiemu/

如果您不想为此付费,也可以在以下位置下载Alpha版本: https://sourceforge.net/projects/raspberrypiemulator/


0

看起来“配置内核”步骤需要更多。注意

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

应该是该目录中的文件之一,例如arm-none-eabi-ararm-none-eabi-as等等。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.