之前找了很多资料,按照教程试了之后发现仍然有错。弄了好久才搞定。现来分享一下流程和自己的总结。
先说流程:
1.注册bitbucket账号
NVMain的申请需要注册bitbucket账号。而这个账号的注册需要翻墙,不然过不了网站机器人的检测。
2.获取NVMain使用权
打开https://bitbucket.org/mrp5060/nvmain/并登陆bitbucket账号,登陆后重新打开前面这个网站获取下载命令
3.安装Mercurial
需要用到一个轻量级的源代码控制管理工具:Mercurial。使用命令获取。
apt-get install mercurial
4.安装Gem5和NVMain
使用命令获取Gem5。
hg clone http://repo.gem5.org/gem5
使用第二步获得的下载命令下载NVMain。(此时gem5和NVMain在同一目录下)
5.配置hgrc文件(这一步不知道有什么用,但我在看其他教程都有)
使用在Gem5根目录下用命令编辑.hg文件夹下的hgrc文件,将其中的username改成自己的信息。
vim .hg/hrgc
6.安装补丁
这一步是最复杂的一步。出错一般在这一步。
1)在Gem5根目录中使用命令初始化补丁目录。
hg qinit
2).使用命令输入补丁,后面的地址是NVMain的补丁存放地址。
hg qimport -f ../nvmain/patches/gem5/nvmain2-gem5-11688+
3).使用命令hg qpush安装补丁
7.联合编译Gem5和NVMain
使用命令编译,时间会很久。
scons EXTRAS=../nvmain ./build/ARM/gem5.opt
8.运行
在编译完成后你会发现Gem5的mem-type多出了一个选项NVMainMemory。
使用命令 --mem-type=NVMainMemory --nvmain-config=/path/to/nvmain.config运行。
例子:./build/ARM/gem5.opt ./configs/example/se.py -c ./tests/test-progs/hello/bin/arm/linux/hello --mem-type=NVMainMemory --nvmain-config=../nvmain/Config/3D_DRAM_example.config
总结
1.打补丁错误
打补丁出现错误很有可能是Gem5和NVMain的补丁版本没有统一有关。补丁名称后面的数字就是符合的Gem5的版本。 推荐使用最新的Gem5和NVMain,这样能保证补丁合适。
2.关于编译后无法运行程序
联合编译没有错后,但无法运行程序。可以打开补丁文件看一下补丁修改了哪些文件,然后找到那些文件看有没有打上补丁。若没有,则手动打上补丁再进行编译。
大概就是这样了,欢迎大家指正。