要在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 网站上所述。