qemu配合buildroot仿真orangepi pc(全志H3)

  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是实现了,大部分外设没有实现。
 
  const hwaddr allwinner_h3_memmap[] = {
    ...
  }
 
  
struct AwH3Unimplemented {
    const char *device_name;
    hwaddr base;
    hwaddr size;
} unimplemented[] = {
 

 

qemu配合buildroot仿真orangepi pc(全志H3)

上一篇:大一期末考试类型


下一篇:自定义django用户认证类