gem5学习(14):将gem5扩展到ARM——Extending gem5 for ARM

目录

一、Downloading ARM Binaries

二、Building gem5 to run ARM Binaries

三、Modifying simple.py to run ARM Binaries

四、Running gem5

五、ARM Full System Simulation

An aside on FS simulations


这个是gem5-learning中Getting Started的最后一篇文章,其实我现在基本不用ARM的ISA,但是为了保持教程的连贯性,还是把最后一篇更新完。

这个教程的前提是:已经使用gem5构建了一个基本的X86系统,并创建了一个简单的配置脚本。

一、Downloading ARM Binaries

定位到gem5文件夹的根目录,下载一些ARM基准测试二进制文件。

这些二进制文件在后面将会对ARM系统进行进一步测试。

二、Building gem5 to run ARM Binaries

下载完二进制文件后,返回到gem5的根目录下。

和前面使用X86配置不同,这里使用默认的ARM配置进行编译【教程里给的线程数太多了,我的主机是4核,所以我用了CPU数+1】。

scons build/ARM/gem5.opt -j 5

初次编译时间有点长,大概半小时。

如果编译完成的话,会在build/ARM/目录中生成一个有效的gem5运行文件gem5.opt。

三、Modifying simple.py to run ARM Binaries

在=使用新系统运行任何ARM二进制文件之前,=需要对config中的配置文件simple.py进行一些修改。

前面在创建简单配置脚本时,有特别说明除了x86系统之外,不需要将PIO和中断端口连接到内存总线。因此,需要删除或者注释掉这三行代码:

gem5学习(14):将gem5扩展到ARM——Extending gem5 for ARM_第1张图片

然后将进程的命令设置为刚才下载的ARM基准测试二进制文件之一:

process.cmd = ['cpu_tests/benchmarks/bin/arm/Bubblesort']

gem5学习(14):将gem5扩展到ARM——Extending gem5 for ARM_第2张图片

如果想测试一个简单的hello程序,只需将x86替换为arm:

process.cmd = ['tests/test-progs/hello/bin/arm/linux/hello']

四、Running gem5

运行一个比较简单的程序。

build/ARM/gem5.opt configs/tutorial/simple.py

如果将进程设置为Bubblesort基准测试,输出应如下所示:

……
warn: readlink() called on '/proc/self/exe' may yield unexpected results in various settings.
      Returning '/home/jtoya/gem5/cpu_tests/benchmarks/bin/arm/Bubblesort'
-50000
Exiting @ tick 258647411000 because exiting with last active thread context

(截止到教程写完也没编译完成,所以我直接截取了官网的输出结果,应该没有出入)

五、ARM Full System Simulation

要运行ARM FS模拟,需要对设置进行一些更改。

从gem5根目录中,通过运行以下命令进入util/term/目录:

cd util/term/

然后通过运行以下命令编译m5term二进制文件:

make

gem5存储库附带了示例系统设置和配置。这些可以在configs/example/arm/目录中找到。

在这里提供了一组完整的系统Linux镜像文件。将它们保存在一个目录中,并记住其路径。例如,你可以将它们存储在以下目录中:

/path/to/user/gem5/fs_images/

在接下来的示例中,假设fs_images目录包含提取的FS映像。

下载完镜像后,在终端中执行以下命令:

export IMG_ROOT=/absolute/path/to/fs_images/

将“”替换为从下载的镜像文件中提取的目录名称【最终名称不带尖括号】。

准备运行FS ARM模拟。从gem5存储库的根目录中运行以下命令:

./build/ARM/gem5.opt configs/example/arm/fs_bigLITTLE.py \
    --caches \
    --bootloader="$IMG_ROOT/binaries/" \
    --kernel="$IMG_ROOT/binaries/" \
    --disk="$IMG_ROOT/disks/" \
    --bootscript=path/to/bootscript.rcS

将尖括号中的任何内容替换为目录或文件的名称,不包括尖括号。

然后,在另一个终端窗口中,通过运行以下命令连接到模拟:

./util/term/m5term 3456

要获取fs_bigLITTLE.py脚本支持的完整详细信息,可以运行:

./build/ARM/gem5.opt configs/example/arm/fs_bigLITTLE.py --help

An aside on FS simulations

FS模拟时间比较长,比如“加载内核需要1小时”。

有关FS的更多详细信息,可以直接查看gem5: X86 Full-System Tutorial

【因为还没编译完成,所以我就不贴最后的结果图了】

你可能感兴趣的:(gem5学习,学习)