背景

先需要在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的更多相关文章

  1. 在gem5的full system下运行 x86编译的测试程序 running gem5 on ubuntu in full system mode in x86

    背景 上篇博客写了如何在gem5的full system模式运行alpha的指令编译的程序,这篇博客讲述如何在gem5的full system模式运行x86指令集编译的程序,这两种方式非常类似. 首先 ...

  2. 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 ...

  3. ASP.NET CORE下运行CMD命令

    ASP.NET CORE下运行CMD命令,用以前的ASP.NET 的命令System.Diagnostics.Process.Start("notepad");这样是可以运行出记事 ...

  4. JAVA手记 JAVA入门(安装+Dos下运行)

    JAVA入门特供= =,今天设置环境变量后用dos运行的时候发现出现“找不到或无法加载主类”,索性查了些资料重新看了看JAVA入门的部分. 声明:我的笔记本暂时用的是Win10系统,Windows其他 ...

  5. Windows 下使用 GNUstep 编译并运行 Objective-C 程序

    今晚上开始看<Objective-C 程序设计(第4版)>这本书(OSChina 正在做此书的书评活动,详情请看这里),到现在为止看到第 7 章,于是想动手试试写两简单的程序编译跑跑看. ...

  6. JAVA设置环境变量和在DOS下运行java程序

    在学校实训的这几天,老师带着我们开始深入的复习java.这是第一天的内容哦 对于“JAVA设置环境变量和在DOS下运行java程序”,许多初学者是陌生的,但了解这个却对后期的学习很重要. http:/ ...

  7. Unity怎样在Editor下运行协程(coroutine)

    在处理Unity5新的AssetBundle的时候,我有一个需求,须要在Editor下(比方一个menuitem的处理函数中,游戏没有执行.也没有MonoBehaviour)载入AssetBundle ...

  8. Demo+在Linux下运行(CentOS7+dotnetcore sdk)

    来份ASP.NET Core尝尝 0x01.前言 学习ASP.NET Core也有一段时间了,虽说很多内容知识点还是处于一知半解的状态,但是基本的,还是 略懂一二.如果有错误,还望见谅. 本文还是和之 ...

  9. OpenCV探索之路(二十一)如何生成能在无opencv环境下运行的exe

    我们经常遇到这样的需求:我们在VS写好的程序,需要在一个没有装opencv甚至没有装vs的电脑下运行,跑出效果.比如,你在你的电脑用opencv+vs2015写出一个程序,然后老师叫你把程序发给他,他 ...

随机推荐

  1. USACO inflate

    全然背包,转化为0/1背包 dp[i, j] = max(dp[i-1, j], dp[i, j - minutes[i]] + points[i]) /* ID:kevin_s1 PROG:infl ...

  2. EasyUI - Combo组件

    -自定义下拉组件,有别于ComboBox下拉组件. 效果: html代码: <input id ="box" /> <div id ="fruits&q ...

  3. qt之正则表达式

    原地址:http://blog.csdn.net/phay/article/details/7304455 QRegExp是Qt的正则表达式类.Qt中有两个不同类的正则表达式.第一类为元字符.它表示一 ...

  4. h和.cpp文件的区别

    关于头文件和源文件的分别 首先,我们可以将所有东西都放在一个.cpp文件内. 然后编译器就将这个.cpp编译成.obj,obj是什么东西? 就是编译单元了.一个程序,可以由一个编译单元组成, 也可以有 ...

  5. 【LeetCode从零单排】No 3 Longest Substring Without Repeating Characters

    题目 Given a string, find the length of the longest substring without repeating characters. For exampl ...

  6. 从注册流程 分析如何安全退出多个Activity 多种方式(附DEMO)

    前言   由于一个同学问到我如何按照一个流程走好之后回到首页,我以前看到过4个解决方案,后来发现有做个记录和总结的必要,就写了这篇博文.(之前看小强也写过一篇,这里通过自身的分析完整的总结一下以下6种 ...

  7. 从零开始学C++之异常(一):C语言错误处理方法、C++异常处理方法(throw, try, catch)简介

    一.C语言错误处理方法 1.返回值(if … else语句判断错误) 2.errno(linux 系统调用) 3.goto语句(函数内局部跳转) 4.setjmp.longjmp(Do not use ...

  8. May Day Holiday

    Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Submit Status Practic ...

  9. 通过程序预览Office文档

    我承认,标题是夸大了,就是为了吸引注意力.这里只有Word文档和Excel文档的预览代码. Word://此部分来源:http://princed.mblogger.cn/posts/11885.as ...

  10. 【Demo 0007】Java基础-类扩展特性

    本章学习要点:        1.  掌握static 修饰的类,方法以及变量的功能及用法;        2.  掌握代码块(静态,非静态)的作用以及注意事项:        3.  了解基本数据类 ...