Làm cách nào để mô phỏng RPI thành công trên OSX?


20

Tôi đã làm theo hướng dẫn này để mô phỏng RPI trên OSX thông qua VirtualBox và nó hoạt động. Bây giờ tôi muốn đơn giản hóa mọi thứ một chút vì giải pháp này liên quan đến việc chạy debian trong một máy ảo chỉ để chạy qemu trên đầu trang.

Tôi đã tìm kiếm hướng dẫn về cách thiết lập qemu thẳng trên osx và tìm thấy hướng dẫn Matthew Yee-King . Tôi làm theo hướng dẫn và tất cả có vẻ ổn cho đến phần cuối cùng. Khi tôi khởi chạy, qemu-system-armtôi thấy cửa sổ QEMU xuất hiện nhưng ứng dụng dường như đóng băng. Sau một thời gian, nó xuất hiện dưới dạng Không phản hồi trong Trình quản lý hoạt động.

Tôi đang thiếu gì? Làm cách nào để mô phỏng RPI trên OSX với QEMU?


2
Bạn muốn thi đua cái gì? Trên thực tế, RPasp Raspbian chỉ là Debian Linux cho kiến ​​trúc ARM cộng với các trình điều khiển / thư viện cụ thể của RPi's và phần mềm được cài đặt sẵn. QEMU không mô phỏng GPIO hoặc GPU của RPi, đây chỉ là máy tính dựa trên ARM chung cho phép bạn khởi động Raspbian. Vì vậy, nếu bạn muốn chơi với XBMC, máy chủ tệp, v.v., chỉ cần cài đặt Debian Wheezy x86 trên VirtualBox và vui chơi. Bạn cũng có thể cài đặt Scratch, PyGame, v.v.
kolontsov

Tôi không chắc mình đã suy nghĩ chính xác về vấn đề này, nhưng tôi muốn thử OpenCV và có thể OpenNI cho ARM trên PI và nghĩ đến việc thực hiện một số thử nghiệm trước tiên bằng cách sử dụng trình giả lập (vì vậy tôi có thể tập luyện bao nhiêu không gian cho tất cả những thứ đó , chơi với nó khi đang di chuyển, v.v.) Tùy chọn VirtualBox có phải là giải pháp đơn giản hơn không?
George Profenza

1
Có, VirtualBox đơn giản / nhanh hơn so với mô phỏng ARM với QEMU. Nhân tiện, bạn có thể biên dịch OpenCV cho OS X ( opencv.org ) hoặc tải xuống trong Linux trong VirtualBox. Nó giống nhau trên tất cả các nền tảng. Tôi đã thử sử dụng OpenCV trên RPi để nhận diện khuôn mặt, nó rất chậm. Không thể đề xuất bất cứ điều gì trên OpenNI, xin lỗi (nhưng tôi không nghĩ rằng QEMU mô phỏng chính xác tốc độ của máy ảnh và RPi).
kolontsov

@ vk2 mặc dù không có chủ đề cho câu hỏi chính, nhưng liên quan đến mục đích của tôi, gần đây tôi đã phát hành một trình bao bọc OpenCV cho mô-đun Pi Camera: PiCapture , cũng có sẵn như là một addon OpenFrameworks . Tốc độ khá tốt, đặc biệt là so với việc sử dụng máy ảnh USB
George Profenza

Câu trả lời:


16

Để thiết lập môi trường giả lập của phần mềm Raspberry Pi trên OSX, người ta sẽ cần:

  • Công cụ biên dịch chéo cho kiến ​​trúc CPU của RPi. (ví dụ: ARM EABI Toolchain)
  • Hạt nhân RPi.
  • Hệ thống tập tin gốc RPi.
  • Trình giả lập (QEMU).
  • Công cụ biên dịch chéo cho kiến ​​trúc ARM.

Giả sử một công cụ đã có các công cụ dòng mã và mã X mới nhất từ ​​Apple Developer và homebrew được cài đặt, thì nên cài đặt các phụ thuộc:

brew install mpfr gmp libmpc libelf texinfo

Lấy và biên dịch công cụ:

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

Trình biên dịch hạt nhân RPi

mkdir ~/rpi/kernel
cd ~/rpi/kernel
git clone --depth=1 https://github.com/raspberrypi/linux.git
cd linux

Lấy tập tin cấu hình và cấu hình kernel:

cp arch/arm/configs/bcmrpi_cutdown_defconfig .config
make ARCH=arm CROSS_COMPILE=~/rpi/arm-cs-tools/bin/arm-none-eabi- menuconfig

Lưu cấu hình và sau đó xây dựng kernel. Lưu ý rằng quá trình biên dịch sẽ thất bại và phàn nàn về việc đưa vào tập lệnh / mod / mk_elfconfig. Nếu có, người ta phải tạo tệp:

sudo touch /usr/local/include/elf.h

Chỉnh sửa nó và viết như sau:

#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

và làm theo quy trình xây dựng:

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

Các tập tin hình ảnh được tạo và nằm như arch/arm/boot/zImage.

Trình giả lập

Do lỗi QEMU treo màn hình trắng nếu được biên dịch với llvm, người ta phải cài đặt gói apple-gcc42 từ kho lưu trữ bản sao của homebrew.

brew install homebrew/dupes/apple-gcc42

Và sau đó biên dịch và cài đặt qemu như:

brew install qemu —use-gcc

Bây giờ chúng tôi còn lại với tất cả những gì chúng tôi cần để bắt đầu phân phối RPi, vì vậy hãy bắt đầu như sau:

qemu-system-arm -M versatilepb -cpu arm1176 -hda debian6-19-04-2012.img -kernel zImage -append “root=/dev/sda2” -serial stdio -usbdevice tablet

Như được giới thiệu trên trang web của mluis .


Trả lời câu hỏi với các bộ phận thiết yếu.
mluis

1
Là một đường dẫn từ @ user1104942, người ta có thể phải thay đổi những điều sau đây để hoạt động ở 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

Sẽ không cài đặt vòi này: github.com/nitsky/homebrew-stm32 làm tương tự như github.com/jsnyder/arm-eabi-toolchain.git ?
andsens

sau khi tất cả được mô phỏng và phát triển, tôi có thể lưu trữ .img này trong thẻ SD và nhập vào raspberrypi không?
mariomol

Đã thử điều này trên macOS 10.13.4 và chỉ nhận được make install-crosstrước khi gặp sự cố. Ngoài ra, tôi đã học được từ Homebrew apple-gcc42"không biên dịch hoặc hoạt động như mong đợi trên các phiên bản macOS mới hơn Mavericks do không tương thích ngược dòng."
Josh Habdas

3

Có một tùy chọn trả phí sẵn sàng để chạy qua QEMU: https://snorfi.us/raspiemu/

Nếu bạn không muốn trả tiền, bạn cũng có thể tải xuống phiên bản alpha trong https://sourceforge.net/projects/raspberrypiemulator/


0

Có vẻ như bước 'cấu hình kernel' cần thêm một chút. Lưu ý rằng

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

nên là một trong những tệp trong thư mục đó như arm-none-eabi-arhoặc arm-none-eabi-asvv ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.