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

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

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

评论

您想模仿什么?实际上,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选项是更简单的解决方案吗?

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

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

#1 楼

要在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年7月1日在13:01

来自@ user1104942的建议是,为了在优胜美地中工作,可能必须更改以下内容。 #include #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_M 32 #define R_MIPS_16 1 #define R_MIPS_NONE 0定义R_MIPS_26 4#定义R_MIPS_HI16 5#定义R_MIPS_LO16 6#定义R_IA64_IMM64 7#定义R_PPC_ADDR32 8#定义R_PPC64_ADDR64 9#定义R_SH_DIR32 10#定义R_SPARC_64 11#定义R_M_64 64#定义R_X_64 64#

– mluis
2015年12月11日在11:06



不会安装此水龙头:github.com/nitsky/homebrew-stm32与github.com/jsnyder/arm-eabi-toolchain.git一样吗?

– andsens
16-2-13在13:33



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

– mariomol
16年2月13日在16:15

在macOS 10.13.4上进行了尝试,仅在遇到问题之前进行了install-cross。另外,我从Homebrew apple-gcc42了解到,“由于上游不兼容,在比Mavericks更新的macOS版本上无法按预期方式编译或运行”。

–乔什·哈布达斯(Josh Habdas)
18年6月19日在9:42

#2 楼

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

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

#3 楼

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

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


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