真正全部QEMU搭建的方法我全写在这篇文章里了,希望能对你有所帮助。
QEMU使用5.0.0,请参考Gem5 ARM使用QEMU运行Benchmark(1)
首先先进入你的parsec-3.0目录,先打个补丁,别管干啥,打就对了
patch -p1 < ../arm-gem5-rsk/parsec_patches/qemu-patch.diff
下一步将是你能否成功搭建QEMU的关键,是的,因为ARM的手册少了参数,请按照我的步骤来
cd qemu5.0.0 # 进入你从官网下载好的qemu目录
下面这步是重中之重,如果你的python3默认是3.5或3.5+版本的你可以不用加这个参数
我的python命令打开的是3.8.3而python3不是,所以我需要配置
./configure --enable-virtfs --target-list=aarch64-softmmu --python=/usr/bin/python
make #参考一些网站,有的说需要 && make install,我没试过,我觉得不需要,按我的来可以成功
--enable-virtfs参数用于开启qemu-arm的9p文件模式,简单来说9p是一个用于和QEMU虚拟机交换文件的文件模式,具体想了解你可以百度看看,有几篇讲解很详细,这里不再复述。因为ARM官方用的是9p,如果你不加这个参数,则无法开启后续的配置。
还需要下载一个文件,把他们和QEMU的目录放在同一个目录下:
wget http://releases.linaro.org/archive/15.06/openembedded/aarch64/Image
wget http://releases.linaro.org/archive/15.06/openembedded/aarch64/vexpress64-openembedded_lamp-armv8-gcc
-4.9_20150620-722.img.gz
gzip -dc vexpress64-openembedded_lamp-armv8-gcc-4.9_20150620-722.img.gz > vexpress_arm64.img
两个网站的网速实在不敢恭维,时好时坏,如果真的是b/s就不要下载了,好像早上网速好下的快能1mb/s。。。
到这里其实已经搭建好了,下一步就是运行的事情了。
运行ARM-v8的代码如下:请将/shared_directory/改成你自己parsec的路径
./qemu/aarch64-softmmu/qemu-system-aarch64 -m 1024 -cpu cortex-a53 -nographic -machine virt
-kernel Image -append 'root=/dev/vda2 rw rootwait mem=1024M console=ttyAMA0,38400n8'
-drive if=none,id=image,file=vexpress_arm64.img -netdev user,id=user0 -device
virtio-net-device,netdev=user0 -device virtio-blk-device,drive=image -fsdev
local,id=r,path=/shared_directory/,security_model=none -device virtio-9p-device,fsdev=r,mount_tag=r
务必注意第二行console=ttyAMA0,38400n8' 全部是数字0而不是字母O,我因为这个错误整了三天,因为原PDF那个字体看着实在太像O了。。。
好了,模拟器也有了,如果你的终端成功运行应该能出现和我类似的界面:
注意,这个时间不会太长,屏幕会一直有各种输出,如果不是请检查你之前的命令是否有误。
愉快地跑跑Benchmark吧,首先第一步先挂载目录:
mount -t 9p -o trans=virtio r /mnt
完成以后再执行:
cd /mnt # cd to the mounted PARSEC directory
source ./env.sh
parsecmgmt -a build -c gcc-hooks -p <packagename>
poweroff # quit QEMU
<packagename>是parsec的benchmark的名字,这一套件一共有13个benchmark,这里用第一个blackscholes做一个演示:
如果之前跑过,那么输出信息就挺少的,直接Done了,如果没有那就需要等待一段时间。其他12个方法也都一样,注意不同的Benchmark可能会涉及不同的参数。