今天终于成功跑了一个Parsec的Benchmark,在此记录一下这个愉(he)快(he)的心情。
本实验使用的QEMU是最新的5.0.0,至于安装方法我已经写在我的另外一篇文章里,可以查阅。这篇文章主要讲讲用QEMU搭建ARM的其他坑吧。
首先先下载好要使用到的Benchmark集Parsce-3.0,下载目录如下:
$ wget http://parsec.cs.princeton.edu/download/3.0/parsec-3.0.tar.gz
$ tar -xvzf parsec-3.0.tar.gz
下载好以后进入Parsec的目录,由于一些原因需要打补丁,补丁代码如下:
$ #这里假设有一个工作目录workspace,里面放置了arm-gem5-rsk文件夹和parsec-3.0的文件夹
$ patch -p1 < ../arm-gem5-rsk/parsec_patches/static-patch.diff
以上这步一般没什么问题,下一步要识别AArch64体系结构,请替换config.guess和config.sub文件。
$ mkdir tmp; cd tmp # make a tmp dir outside the parsec dir
$ wget -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git; \
a=blob_plain;f=config.guess;hb=HEAD'
$ wget -O config.sub 'http://git.savannah.gnu.org/gitweb/?p=config.git; \
a=blob_plain;f=config.sub;hb=HEAD'
注意,这一步能否成功下载config.sub和config.guess存在很大疑问!因为我的就是,不知怎么下载下来是html超文本格式的语言
难道要我sh html文件不成?至今我也没弄懂为什么会出现这样的错误,所以在这里我将wget两步得到的文件写入我的github供大家下载,请在tmp目录使用下面的命令:
这两个文件下载下来就是可用的,把他们从gem5need目录放到你的tmp目录中,然后执行下面的命令,不要忘记设置/parsec_dir/和/absolute_path_to_tmp/的路径:
$ cd /parsec_dir/ # cd to the parsec dir
$ find . -name "config.guess" -type f -print -execdir cp {} config.guess_old \;
$ find . -name "config.guess" -type f -print -execdir cp /absolute_path_to_tmp/config.guess {} \;
$ find . -name "config.sub" -type f -print -execdir cp {} config.sub_old \;
$ find . -name "config.sub" -type f -print -execdir cp /absolute_path_to_tmp/config.sub {} \;
这样前期工作就准备好了,以上步骤是通过交叉编译和QEMU方式搭建arm全系统必须的工作,有错将无法继续进行,后续文章将进一步对详细编译方法进行更新。