zynq qemu模拟器环境搭建

qemu是硬件模拟器,方便有些同学没得开发板想验证一些driver是否在指定板卡上可以测试,qemu就实现了该功能,选择qemu模拟器最好是选择cpu厂商指定qemu源码,这样测试结果更加逼真。本文章主要介绍如何搭建zynq平台qemu模拟器环境。

1.下载qemu源码搭建qemu环境

sudo apt-get install libslirp-dev

qemu模拟器下载:https://github.com/Xilinx/qemu

unzip qemu-master.zip

cd qemu-master/

mkdir build

cd build

../configure --target-list="arm-softmmu,aarch64-softmmu,aarch64-linux-user,arm-linux-user" --enable-slirp

make

在install目录会生成qemu启动程序qemu-arm和qemu-aarch64

如果需要指定自定义内核,请按照如下修改qemu源码,否则无法重新配置CPU主频

issue链接:https://github.com/apertus-open-source-cinema/axiom-firmware/issues/62

diff --git a/hw/misc/zynq_slcr.c b/hw/misc/zynq_slcr.c

index 7557482..3a387ec 100644

--- a/hw/misc/zynq_slcr.c

+++ b/hw/misc/zynq_slcr.c

@@ -310,7 +310,7 @@ static void zynq_slcr_reset(DeviceState *d)

s->regsLOCKSTA = 1;

/* 0x100 - 0x11C */

  • s->regsARM_PLL_CTRL = 0x0001A008;
  • s->regsARM_PLL_CTRL = 0x00014008;

s->regsDDR_PLL_CTRL = 0x0001A008;

s->regsIO_PLL_CTRL = 0x0001A008;

s->regsPLL_STATUS = 0x0000003F;

到目前为止qemu安装完成,接下来需要在准备zImage,Rootfs和DTB文件。

  1. 准备内核和dtb文件

方法一:可以通过去官网下载bsp包,该bsp包有最小系统,可以直接使用

方法二:通过peatalinux工具和xsa硬件描述文件生成zImage和dts,rootfs文件等,这种方法比较常见,因为xsa文件通过vivado生成,在有真实的硬件环境,开发流程可以保持一致。

通过petalinux编译生成的zImage,dtb和rootfs后,就可以启动qemu

在搭建qemu环境编译目录下执行下面命令,记得替换zImage,dtb和rootfs到自己的路径

./qemu-system-arm -M arm-generic-fdt-7series -machine linux=on -serial /dev/null -serial mon:stdio -display none -kernel /home/herok/work/kernel/kernel-source_build/arch/arm/boot/zImage -initrd /home/herok/work/qemu_rootfs/repack_ramdisk.cpio.gz -gdb tcp::9000 -dtb /home/herok/work/xc7035/images/linux/system.dtb -device loader,addr=0xf8000008,data=0xDF0D,data-len=4 -device loader,addr=0xf8000140,data=0x00500801,data-len=4 -device loader,addr=0xf800012c,data=0x1ed044d,data-len=4 -device loader,addr=0xf8000108,data=0x0001e008,data-len=4 -device loader,addr=0xF8000910,data=0xF,data-len=0x4

运行结果如下:

  1. 退出qemu

方法一:1. 按住ctrl + a,2. 松开 3. 按住x.

方法二:开启新的终端使用 ps -A | grep "qemu" | awk '{print $1}' |xargs kill 然后使用kill命令杀掉进程。(如果内核崩溃了就只能用这种办法)

  1. petalinux自定义制作rootfs文件系统

  2. mkdir qemu_rootfs

cd qemu_rootfs

mkdir ramdisk_unzip

cp ../xc7035/images/linux/rootfs.cpio.gz .

gunzip -c rootfs.cpio.gz | sh -c 'cd ramdisk_unzip/ && cpio -i'

sh -c 'cd ramdisk_unzip/ && find . |sudo cpio -H newc -o' | gzip -9 > herok_ramdisk.cpio.gz

herok_ramdisk.cpio.gz根文件系统制作完成

  1. qemu系统和主机如何传输文件

这个地方弄了几次没有弄好,就没去折腾,需要传输文件时,就将待传输的文件放到ramdisk_unzip文件夹下面,然后重新打包rootfs文件系统。

sh -c 'cd ramdisk_unzip/ && find . |sudo cpio -H newc -o' | gzip -9 > herok_ramdisk.cpio.gz

实际上petalinux安装时候自己也安装了qemu模拟器,但是这种方法用的偏少。

petalinux-boot --qemu --kernel #这种方式启动会使用images/linux/zImage

petalinux-boot --qemu --kernel herok_apth #直接使用herok_apth路径启动

相关推荐
牛奶咖啡136 天前
KVM虚拟化与企业应用实践——给远端主机创建虚拟机
云原生·qemu·kvm·给远端主机创建虚拟机·创建uefi模式的虚拟机·安装openeulersp2·vnc与虚拟机环境搭建
牛奶咖啡138 天前
KVM虚拟化与企业应用实践——通过网络介质配合ks自动应答文件实现自动安装KVM虚拟机
云原生·qemu·kvm·系统网络引导与ks自动应答环境·远程资源+ks文件安装虚拟机·通过网络介质引导自动安装虚拟机·qemu的总线类型详解
冰山一脚20138 天前
kvm驱动学习笔记
qemu
ggaofeng11 天前
如何通过uboot加载硬盘
linux·qemu·uboot
ScilogyHunter12 天前
QEMU完全指南
linux·qemu
冰山一脚201319 天前
qemu的cpu加速器分析笔记
qemu
longji1 个月前
win11 使用 QEMU11 模拟器跑龙芯系统(debian13,openKylin,openEuler,uos,Loongnix)
qemu·龙芯模拟器
冰山一脚20132 个月前
qemu的板级初始化笔记(以i4ffx为例)
qemu
冰山一脚20132 个月前
CPU的L1、L2、L3缓存笔记
qemu