gem5启动Linux跑Linux bench过程
1.安装git scons g++ python-dev swig
sudo apt-get install git scons g++ python-dev swig m4
2、下载gem5源码;
源码链接:http://pan.baidu.com/s/1kU9uZun
3、编译gem5;
在Linux终端输入(当前目录gem5):scons build/ARM/gem5.opt
编译无错,完成会在gem5目录下生成build文件夹,在build/ARM/下生成gem.opt文件,将configs文件夹和gem5.opt文件链接到任意文件夹下,可以在gem5下新建一个文件夹,比如:stdout。链接命令为:
4、下载Linux镜像;
镜像链接:文件太大暂时没有上传。
5、下载bench,mediabench和mibench;
bench链接:http://pan.baidu.com/s/1kU9uZun
6、将Linux镜像解压并放到gem5下的img文件夹中,img下分别生成两个文件夹:binaries和disks,如果没有img文件夹就新建一个。解压命令为:
tar -zjf gem5*
cp -r binaries ~/gem5/img/
cp -r disks ~/gem5/img/
将Linux镜像挂在到/mnt下,命令为(当前目录gem5):
mount -o loop,offset=32256 img/disks/linux-aarch32-ael.img /mnt
7、将bench复制到/mnt下,命令为(当前目录为gem5上层目录,上层目录包含Mibench、mideaBench。需root权限):
sudo cp -a Mibench /mnt
sudo cp -a mideaBench /mnt
sudo umount /mnt
8、启动文件boot_start.sh(以.sh为结尾,名字是任意的),这个文件是自己写或copy的脚本,主要是配置CPU、cache、RAM,Linux镜像、输出文件目录等,命令为(当前目录gem5,这是在将第2步编译过后产生的gem5.opt文件复制到gem5文件夹下的前提下,如果把gem5.opt复制或链接到别的文件夹下,需要到对应的文件下下执行这条命令):
./boot_start.sh
【列举一个boot_start.sh:
./gem5.opt --outdir=linux --debug-flags=O3PipeView configs/example/fs.py --mem-size=1024MB --kernel=vmlinux-gem5-android-dvfs --disk-image= linux-aarch32-ael.img --caches --l1i_size=32kB --l1d_size=32kB --l1d_assoc=2 --l1i_assoc=2 --l2_assoc=16 --l2cache --l2_size=128kB --num-l2caches=8 --cpu-type=AtomicSimpleCPU -n 1 --machine-type=VExpress_EMM --dtb-filename=vexpress-v2p-ca15-tc1-gem5_dvfs_1cpus.dtb --frame-capture --enable-context-switch-stats-dump】
这个时候CPU类型为“cpu-type=AtomicSimpleCPU”,AtomicSimpleCPU只运行Linux而不输出任何信息。
9、在gem5/util/term下运行make命令,生成m5term,将m5term复制到gem5目录下。再打开一个终端,运行命令:
./m5term 210
上述命令执行后,终端打印的信息会出现gem5 simulation端口号,比如是210。
当出现AEL login时,输入:root
当出现#时,输入:m5 checkpoint ,设置观察点,
接着再一个#,输入:m5 exit
这时观察点设置好了,在linux文件夹下会出现cpt.xxxxx文件夹,这个就是观察点文件,可以将其复制到其他bench的数据输出文件夹重复使用。
10、修改boot_start.sh,在末尾加上-r 1保存(代表从观察点启动,没有则表示直接启动,可以设置观察点),在boot_start.sh启动后,再打开一个终端,在gem5目录下运行:
./m5term 210
出现:#
输入:ls
这时会出现mediaBench、Mibench目录
进入相应的文件夹执行:
./bench名称