qemu配合buildroot模擬orangepi pc(全志H3)
阿新 • • 發佈:2021-06-27
qemu 5.1已經支援珠海全志的a10 H3兩個晶片,本文的qemu用法參考自:
https://qemu.readthedocs.io/en/latest/system/arm/orangepi.html
buildroot用法:
cd buildroot-2020.11 在 configs/orangepi_pc_defconfig 末尾加上兩行,我們要用qemu BR2_PACKAGE_HOST_QEMU=y BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y make orangepi_pc_defconfig make 如果提示某些qemu的設定,直接回車預設就行。 等待編譯完成
編譯完後,會有qemu:output/host/bin/qemu-system-arm
output/image下是編譯輸出檔案: 新建一個shell指令碼:start-qemu.sh
. ├── boot.scr ├── boot.vfat ├── rootfs.ext2 ├── rootfs.ext4 -> rootfs.ext2 ├── sdcard.img ├── start-qemu.sh ├── sun8i-h3-orangepi-pc.dtb ├── u-boot.bin ├── u-boot-sunxi-with-spl.bin └── zImage
start-qemu.sh:
#!/bin/sh IMAGE_DIR="${0%/*}/" export PATH="/home/fei/buildroot-2020.11.1/output/host/bin:${PATH}" # dtc -I dtb -O dts sun8i-h3-orangepi-pc.dtb -o all.dts #反編譯裝置樹 # qemu-img resize -f raw --shrink ${IMAGE_DIR}/rootfs.ext2 64M # qemu-img resize -f raw --shrink ${IMAGE_DIR}/sdcard.img 128M #擴容成sd卡要求的標準尺寸 #方式1
qemu-system-arm \ -M orangepi-pc \ -m 1G \ -nographic \ -sd sdcard.img # -gdb tcp::12451 \ # -S \ #方式2 #qemu-system-arm \ # -M orangepi-pc \ # -m 1G \ # -nographic \ # -kernel ${IMAGE_DIR}/zImage \ # -dtb ${IMAGE_DIR}/sun8i-h3-orangepi-pc.dtb \ # -drive file=${IMAGE_DIR}/rootfs.ext2,if=sd,format=raw \ # -append "console=ttyS0,115200 rootwait root=/dev/mmcblk0" \ # # -gdb tcp::12451 \ # # -S \
方式1 從sdcard.img完整啟動,包括u-boot
方式2 只有kernel和rootfs,bootloader使用qemu預設自帶的orangepi bootloader
orangepi-pc可以在qemu的原始碼中找到實現: output/build/host-qemu-5.1.0/hw/arm/orangepi.c output/build/host-qemu-5.1.0/hw/arm/allwinner-h3.c 部分功能比如sdcard usb是實現了,大部分外設沒有實現。 consthwaddrallwinner_h3_memmap[]={ ... } structAwH3Unimplemented{ constchar*device_name; hwaddrbase; hwaddrsize; }unimplemented[]={