在gem5的full system下运行 alpha编译的测试程序 running gem5 on ubuntu in full system mode in alpha
背景
先需要在full system下运行gem5,通过网上查找资料以及向别人请教,终于成功运行,网上大多是关于alpha指令集的,且都是英文的,为了方便大家学习,现在总结一下,希望对大家有所帮助。
首先需要安装gem5-stable,可以参考我前面的一篇博客:
http://blog.csdn.net/wyj7260/article/details/8267345
首先做一下声明,关于ubuntu的版本:ubuntu的版本没有明确的要求,我在分别在ubuntu的10.04,11.04,以及12.10上安装成功。gem5版本也没有
特别的要求,我用的是gem5-stable_2012_02_02,如果是初次接触的话,最好选用新的版本,因为听实验室师兄说,gem5现在关注的人逐渐增多
,最近一段时间gem5对alpha的支持基本没有新的更新,但是对x86的支持越来越好,而且gem5的新版本代码书写比较规范。
这篇文章介绍full system in alpha。
安装过程:
下载full system需要的两个包:
首先在安装好gem5-stable之后,再到官网下载full system需要的包:
Full System Files : http://www.m5sim.org/dist/current/m5_system_2.0b3.tar.bz2
linux-dist : http://www.m5sim.org/dist/current/linux-dist.tgz
安装:记我的gem5-stable安装目录为$GEM
a) ~/gem5-stable$ mkdir dist
b) 将包m5_system_2.03.tar.bz2 复制到dist目录下
b) ~/gem5-stable$ cd dist/
c) ~/gem5-stable/dist$ tar -xvf m5_system_2.03.tar.bz2
d) ~/gem5-stable/dist$ cd m5_system_2.0b3/
f) ~/gem5-stable/dist/m5_system_2.0b3$ mv./binaries/ ../binaries
g) ~/gem5-stable/dist/m5_system_2.0b3$ mv./disks/ ../disks
h) ~/gem5-stable/dist$ rm -rfm5_system_2.0b3
i)修改$GEM5/config/common/SysPath.py 文件:
把exceptKeyError:
path = [ '/dist/m5/system', '/n/poolfs/z/dist/m5/system
修改成
except KeyError:
path = [ '/dist/m5/system', ' /home/wyj2/gem5-stable/dist' ]
运行
1、 首先编译gem5.opt
~/gem5-stable $ scons ./build/ALPHA/gem5.opt
可以通过 $GEM5/m5out/system.terminal查看启动linux内核的monitor进程。
2、运行模拟的linux系统
./build/ALPHA/gem5.opt ./configs/example/fs.py
将看到如下界面
gem5 Simulator System. http://gem5.org
gem5 is copyrighted software; use the --copyright option for details.
gem5 compiled Jul 13 2013 15:50:46
gem5 started Jul 13 2013 15:53:18
gem5 executing on jsi-desktop
command line: ./build/ALPHA/gem5.opt ./configs/example/fs.py
Global frequency set at 1000000000000 ticks per second
info: kernel located at: /home/wyj2/gem5-stable/dist/binaries/vmlinux
Listening for system connection on port 3456
0: system.tsunami.io.rtc:Real-time clock set to Thu Jan 100:00:00 2009
warn: CoherentBus system.membus has no snooping ports attached!
0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
**** REAL SIMULATION ****
info: Entering event queue @ 0. Starting simulation...
warn: Prefetch instructions in Alpha do not do anything
warn: Prefetch instructions in Alpha do not do anything
3、开启另外一个ssh界面,使用M5Term来与simulatedsystem进行交互
~/gem5-stable$cd ./util/term
~/gem5-stable$make
~/gem5-stable$sudomake install
~/gem5-stable$m5termlocalhost 3456
4、这样就进入了模拟出来的系统:
#ls后就看到如下:
# ls
benchmarks etc linuxrc modules sys var
bin iscsi lost+found proc tmp
dev lib mnt sbin usr
5、在模拟系统中运行一个测试程序试试:
#cd benchmarks
#ls
将看到如下几个测试程序:
aio-bench netperf-bin surge
micros pthread_mutex_test
#./pthread_mutex_test2 2
运行结果如下:
Using 2 threadsfor 2 iters
Counter value is 4
#
如何将程序mount进模拟的系统
现在以将$GEM/tests/test-progs/hello/bin/alpha/linux/hello,mount进模拟的系统为例,讲述如何将编译好的程序mount进被模拟的系统。
1、将hello文件拷贝到当前路径/gem5-stable$ cp./tests/test-progs/hello/bin/alpha/linux/hello ./hello
2、~/gem5-stable$ sudomount -o,loop,offset=32256 ./dist/disks/linux-latest.img /mnt
关于偏移量32256请参考链接:http://my.oschina.net/toyandong/blog/65002
3、显示一下/mnt,可以看到挂载好的操作系统
~/gem5-stable$ ls/mnt
benchmarks dev iscsi linuxrc mnt proc sys usr
bin etc lib lost+found modules sbin tmp var
4、 在使用linux的image文件之前,应该执行umount操作。
~/gem5-stable$ sudo umount /mnt
5、 重新开启模拟的linux,进入模拟的linux (参考本文 “运行” 中的2和3)
#ls
可以看到我们添加的testGem5目录
benchmarks etc linuxrc modules sys usr
bin iscsi lost+found proc testGem5 var
dev lib mnt sbin tmp
6、#cd testGem5
#./hello
执行结果:
Hello world!
#
参考链接:
http://www.m5sim.org/Running_M5_in_Full-System_Mode
http://novel.ict.ac.cn/qguo/pdf/gem5.pdf
http://gem5.org/dist/tutorials/hipeac2012/gem5_hipeac.pdf
以及参考师兄的ppt
在gem5的full system下运行 alpha编译的测试程序 running gem5 on ubuntu in full system mode in alpha的更多相关文章
- 在gem5的full system下运行 x86编译的测试程序 running gem5 on ubuntu in full system mode in x86
背景 上篇博客写了如何在gem5的full system模式运行alpha的指令编译的程序,这篇博客讲述如何在gem5的full system模式运行x86指令集编译的程序,这两种方式非常类似. 首先 ...
- Gem5全系统模式下运行SPLASH-2 Benchmarks使用alpha ISA
Steps to run the SPLASH-2 Benchmarks on M5 in full system mode using the alpha ISA. This Guide is ai ...
- ASP.NET CORE下运行CMD命令
ASP.NET CORE下运行CMD命令,用以前的ASP.NET 的命令System.Diagnostics.Process.Start("notepad");这样是可以运行出记事 ...
- JAVA手记 JAVA入门(安装+Dos下运行)
JAVA入门特供= =,今天设置环境变量后用dos运行的时候发现出现“找不到或无法加载主类”,索性查了些资料重新看了看JAVA入门的部分. 声明:我的笔记本暂时用的是Win10系统,Windows其他 ...
- Windows 下使用 GNUstep 编译并运行 Objective-C 程序
今晚上开始看<Objective-C 程序设计(第4版)>这本书(OSChina 正在做此书的书评活动,详情请看这里),到现在为止看到第 7 章,于是想动手试试写两简单的程序编译跑跑看. ...
- JAVA设置环境变量和在DOS下运行java程序
在学校实训的这几天,老师带着我们开始深入的复习java.这是第一天的内容哦 对于“JAVA设置环境变量和在DOS下运行java程序”,许多初学者是陌生的,但了解这个却对后期的学习很重要. http:/ ...
- Unity怎样在Editor下运行协程(coroutine)
在处理Unity5新的AssetBundle的时候,我有一个需求,须要在Editor下(比方一个menuitem的处理函数中,游戏没有执行.也没有MonoBehaviour)载入AssetBundle ...
- Demo+在Linux下运行(CentOS7+dotnetcore sdk)
来份ASP.NET Core尝尝 0x01.前言 学习ASP.NET Core也有一段时间了,虽说很多内容知识点还是处于一知半解的状态,但是基本的,还是 略懂一二.如果有错误,还望见谅. 本文还是和之 ...
- OpenCV探索之路(二十一)如何生成能在无opencv环境下运行的exe
我们经常遇到这样的需求:我们在VS写好的程序,需要在一个没有装opencv甚至没有装vs的电脑下运行,跑出效果.比如,你在你的电脑用opencv+vs2015写出一个程序,然后老师叫你把程序发给他,他 ...
随机推荐
- 哈,又一款超级简单的队列(MQ)实现方案来了~
开源的消息队列已经很多了,但大部分很重,实际环境下,很多可能只是使用到了一点功能而已,杀鸡使用牛刀,着实有些浪费了.很多时候,我们只想要一片绿叶,但它们给了我们整个的春天,很难消化.本着DIR精神, ...
- UC网盘被关停 将与阿里淘盘合并?(案例说明云盘的成本才是重点,技术不是问题;与巨头竞争是重点)
UC网盘被关停 将与阿里淘盘合并? 二八2016-03-18 08:05:36阿里巴巴 网盘 产品阅读(0)评论(12) UC网盘项目组日前发布公告称将停止网盘存储服务,原因为配合国家对云盘传播淫秽色 ...
- PHP学习之-1.3 echo语句
echo语句 echo语句是PHP输出语句,可以把字符串输出(字符串用双引号扩起来). 如下代码 <?php echo "Hello World!"; ?> 注意ech ...
- ice cave
Description You play a computer game. Your character stands on some level of a multilevel ice cave. ...
- App开发所要注意的几个法务问题(转)
GameLook 报道/ 移动应用市场的飞速发展催生出大量揭竿而起的开发者,同时许多矛盾也渐渐明显起来.其中涉及“抄袭”的问题尤为突出,毫不客气地说对于那些有底子的游戏厂商来说,法务已经成为团队中的一 ...
- 重载(overload),覆盖/重写(override),隐藏(hide)
写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖/重写(override),隐藏(hide).在早期的C++书籍中,常常把重载(overload)和覆盖(override)搞错 ...
- 【Unity 3D】学习笔记三十九:控制组件
控制组件 角色控制组件和刚体组件都具备物理引擎的功能,须要绑定游戏对象才干实现对应的物理效果,而且同一个游戏对象中两者仅仅能存在一个,不能共存.刚体组件能够很精确的模拟现实世界中的一切物理效果,而角色 ...
- MVC3和MVC4中CRUD操作
MVC3中EF实现的CRUD操作 public class HomeController : Controller { // // GET: /Home/ CarModelContainer db = ...
- Codeforces 282E Sausage Maximization(字典树)
题目链接:282E Sausage Maximization 题目大意:给定一个序列A.要求从中选取一个前缀,一个后缀,能够为空,当时不能重叠.亦或和最大. 解题思路:预处理出前缀后缀亦或和,然后在字 ...
- u-boot的nand驱动写过程分析
从命令说起,在u-boot输入下列命令: nand write 40008000 0 20000 命令的意思是将内存0x40008000开始的部分写入nand,从nand地址0开始写,写入长度是0x2 ...