วิธีเลียนแบบ RPI บน OSX ได้สำเร็จ?


20

ฉันทำตามคำแนะนำนี้เพื่อเลียนแบบ RPI บน OSX ผ่าน VirtualBox และใช้งานได้ ตอนนี้ฉันต้องการลดความซับซ้อนของสิ่งเล็กน้อยเนื่องจากโซลูชันนี้เกี่ยวข้องกับการเรียกใช้เดเบียนในเครื่องเสมือนเพื่อเรียกใช้ qemu ด้านบน

ฉัน googled สำหรับคำแนะนำเกี่ยวกับวิธีการตั้งค่า QEMU ตรง OSX และพบคู่มือแมทธิวยี่ของพระบาทสมเด็จพระเจ้าอยู่หัว ฉันทำตามคำแนะนำและดูเหมือนว่าจะดีจนกระทั่งส่วนสุดท้าย เมื่อฉันเปิดqemu-system-armฉันเห็นหน้าต่าง QEMU ปรากฏ แต่ดูเหมือนว่าแอปพลิเคชันจะหยุดทำงาน หลังจากผ่านไประยะหนึ่งปรากฏว่าไม่ตอบสนองในตัวจัดการกิจกรรม

ฉันพลาดอะไรไป ฉันจะเลียนแบบ RPI บน OSX ด้วย QEMU ได้อย่างไร


2
คุณต้องการเลียนแบบอะไร ที่จริงแล้ว RPi Raspbian เป็นเพียง Debian Linux สำหรับสถาปัตยกรรม ARM รวมถึงไดรเวอร์ / ไลบรารีเฉพาะของ RPi และซอฟต์แวร์ที่ติดตั้งไว้ล่วงหน้า QEMU ไม่ได้จำลอง GPIO หรือ GPU ของ RPi เป็นเพียงคอมพิวเตอร์ที่ใช้ ARM ทั่วไปซึ่งช่วยให้คุณเริ่ม Raspbian ได้ ดังนั้นหากคุณต้องการเล่นกับ XBMC ไฟล์เซิร์ฟเวอร์และอื่น ๆ เพียงติดตั้ง Debian Wheezy x86 บน VirtualBox และสนุกไปกับมัน คุณสามารถติดตั้ง Scratch, PyGame และอื่น ๆ ได้อีกด้วย
kolontsov

ฉันไม่แน่ใจว่าฉันคิดอย่างถูกต้อง แต่ฉันต้องการลอง OpenCV และอาจจะเป็น OpenNI สำหรับ ARM บน PI และคิดเกี่ยวกับการทำแบบทดสอบครั้งแรกโดยใช้ตัวจำลองก่อน (ดังนั้นฉันจึงสามารถออกกำลังกายได้ว่าต้องการพื้นที่เท่าใด เล่นกับมันในระหว่างการเดินทาง ฯลฯ ) ตัวเลือก VirtualBox เป็นโซลูชันที่ง่ายกว่าหรือไม่?
George Profenza

1
ใช่ VirtualBox นั้นง่ายกว่า / เร็วกว่าการจำลอง ARM ด้วย QEMU โดยวิธีการที่คุณสามารถรวบรวม OpenCV สำหรับ OS X ( opencv.org ) หรือดาวน์โหลดใน Linux ใน VirtualBox มันเหมือนกันในทุกแพลตฟอร์ม ฉันพยายามใช้ OpenCV กับ RPi เพื่อจดจำใบหน้ามันช้ามาก ไม่สามารถแนะนำอะไรเกี่ยวกับ OpenNI ขออภัย (แต่ฉันไม่คิดว่า QEMU จำลองกล้องและความเร็ว RPi ของอย่างถูกต้อง)
kolontsov

@ vk2 แม้จะปิดหัวข้อคำถามหลัก แต่เกี่ยวข้องกับวัตถุประสงค์ของฉันฉันได้รับการปล่อยตัวเมื่อเร็ว ๆ นี้เสื้อคลุม OpenCV สำหรับโมดูลกล้อง Pi: PiCaptureยังสามารถใช้ได้เป็นaddon OpenFrameworks ความเร็วนั้นค่อนข้างดีโดยเฉพาะเมื่อเปรียบเทียบกับการใช้กล้อง USB
George Profenza

คำตอบ:


16

ในการตั้งค่าสภาพแวดล้อมจำลองของซอฟต์แวร์ Raspberry Pi บน OSX ต้องมีสิ่งต่อไปนี้:

  • เครื่องมือ Cross-Compiling สำหรับสถาปัตยกรรม CPU ของ RPi (เช่น ARM EABI Toolchain)
  • เคอร์เนล RPi
  • ระบบไฟล์รูต RPi
  • The Emulator (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 จากที่เก็บ dupes ของโฮมบรูว์

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
ในฐานะที่เป็น sugestion จาก @ 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-stm32ทำเช่นเดียวกันกับgithub.com/jsnyder/arm-eabi-toolchain.git ?
andsens

หลังจากเลียนแบบและพัฒนาทั้งหมดฉันสามารถเก็บ. img นี้ไว้ในการ์ด SD และอินพุตใน raspberrypi ได้หรือไม่
mariomol

พยายามทำสิ่งนี้บน macOS 10.13.4 และทำได้แค่make install-crossก่อนที่จะตีปัญหา นอกจากนี้ฉันได้เรียนรู้จาก Homebrew apple-gcc42"ไม่ได้รวบรวมหรือทำงานตามที่คาดหวังในรุ่น macOS ที่ใหม่กว่า Mavericks เนื่องจากความไม่ลงรอยกันอัปสตรีม"
Josh Habdas

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.