Qemu Co-simulation
本文将展示如何使用qemu+systemC来完成IP的simulation,复用已有的高级语言实现的benchmark来剖析IP的性能。
Qemu inside VirtualBox
三个OS
- Host OS: Windows 11
- VirtualBox Guest OS: Ubuntu 20.04 x86_64
- Qemu AArch64 OS: AArch64 Embedded OS
环境
在PC物理机上面安装Windows Host OS,在Windows里面安装VirtualBox软件,通过VirtualBox提供一个虚拟机环境,在此环境中安装一个Ubuntu 20.04 Guest OS,然后我们进入Ubuntu操作系统内下运行qemu-system-aarch64软件,通过Qemu再提供一个虚拟机环境, 在这个Qemu提供的VM环境中,我们运行AArch64 Linux OS。这样就得到一个虚拟机里面再嵌套一个虚拟机的环境(VM inside VM)
Physical Host OS
Ubuntu Guest OS
Qemu AArch64 OS
网络
关注Ubuntu Guest OS和Windows Host OS之间的网络通路
通过NAT技术将Ubuntu OS里面的网络报文传递给Host OS,在Ubuntu的环境中我们可以直接ping到Host OS网络和外部网络。也就是说,在Ubuntu环境下我们可以访问Host OS提供的网络服务和外部网络服务,但是在Host OS环境下,我们不能直接通过NAT技术ping到Ubuntu OS网络,只能通过VirtualBox提供的Host-only network访问Ubuntu OS里面提供的服务。关注QEMU AArch64 OS和Ubuntu Guest OS之间的网络通路
通过TAP桥接的方式将Qemu OS里面的网络报文传递给Ubuntu OS,在Qemu OS里面可以直接ping到Ubuntu OS网络,在Ubuntu OS里面也可以直接ping到Qemu OS网络。也就是说,在QEMU OS里面我们可以直接访问Ubuntu OS提供的服务,在Ubuntu OS里面也可以直接访问Qemu OS提供的服务,相当于Qemu OS和Ubuntu OS以直连的方式进行通信。关注QEMU AArch64 OS和Windows Host OS之间的网络通路
不能直接ping,也就是说,我们在Qemu AArch64 OS里面不能直接ping到Host OS网络和外部网络,这时候需要借助Ubuntu里面安装的tinyporxy代理将Qemu OS里面发出的网络报文转发到Host OS和外部网络,这样Qemu OS才能访问到Host OS和外部网络提供的服务