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

2024-01-13 15:12
文章标签 学习 14 扩展 arm gem5 extending

本文主要是介绍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和中断端口连接到内存总线。因此,需要删除或者注释掉这三行代码:

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

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

如果想测试一个简单的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/<image-directory-name>

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

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

./build/ARM/gem5.opt configs/example/arm/fs_bigLITTLE.py \--caches \--bootloader="$IMG_ROOT/binaries/<bootloader-name>" \--kernel="$IMG_ROOT/binaries/<kernel-name>" \--disk="$IMG_ROOT/disks/<disk-image-name>" \--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学习(14):将gem5扩展到ARM——Extending gem5 for ARM的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/601886

相关文章

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue:

硬件基础知识——自学习梳理

计算机存储分为闪存和永久性存储。 硬盘(永久存储)主要分为机械磁盘和固态硬盘。 机械磁盘主要靠磁颗粒的正负极方向来存储0或1,且机械磁盘没有使用寿命。 固态硬盘就有使用寿命了,大概支持30w次的读写操作。 闪存使用的是电容进行存储,断电数据就没了。 器件之间传输bit数据在总线上是一个一个传输的,因为通过电压传输(电流不稳定),但是电压属于电势能,所以可以叠加互相干扰,这也就是硬盘,U盘

人工智能机器学习算法总结神经网络算法(前向及反向传播)

1.定义,意义和优缺点 定义: 神经网络算法是一种模仿人类大脑神经元之间连接方式的机器学习算法。通过多层神经元的组合和激活函数的非线性转换,神经网络能够学习数据的特征和模式,实现对复杂数据的建模和预测。(我们可以借助人类的神经元模型来更好的帮助我们理解该算法的本质,不过这里需要说明的是,虽然名字是神经网络,并且结构等等也是借鉴了神经网络,但其原型以及算法本质上还和生物层面的神经网络运行原理存在

iptables(7)扩展模块state

简介         前面文章我们已经介绍了一些扩展模块,如iprange、string、time、connlimit、limit,还有扩展匹配条件如--tcp-flags、icmp。这篇文章我们介绍state扩展模块  state          在 iptables 的上下文中,--state 选项并不是直接关联于一个扩展模块,而是与 iptables 的 state 匹配机制相关,特