simics虚拟机+solaris 9 sparc系统运行memory compiler(非常详细)

前言

在一些较为古老的工艺中,memory compiler只提供solaris sparc版本,比如smic 180nm工艺。据我了解,90nm及以下工艺的memory compiler才支持Linux系统。180nm工艺的memory compiler支持的系统是solaris 8 sparc版本,实测solaris 9 sparc也是行的,solaris x86版本的则不行。注意,这里的sparc指的是该系统是基于RISV精简指令集CPU运行的Unix系统,故在x86的系统无法运行,所以VMware和VirtualBox是不能装solaris sparc版本的系统(大家不必再去试了)。而simics是一个可以在x86系统上仿RISV精简指令CPU的虚拟机,所以可以安装solaris sparc版本的系统,并且可以运行memory compiler,如下图。
在这里插入图片描述
安装过程十分麻烦,因为这系统和虚拟机已经过时了,网上的教程都不齐全,我走了很多弯路,这里给大家详细介绍完整的安装过程。

一、simics虚拟机安装

先在本文章的末尾获取资源,是一个压缩包,解压之后里面有一个keygen.exe,有可能杀毒软件会报错,把杀毒软件关掉就行。双击keygen.exe生成license.lic(用Windows的用户名,我的是user),如下图。注意用户名不能有中文或空格,否则后面会报错。
在这里插入图片描述
Generate之后会在当前目录下生成一个license.lic文件,然后运行simics-win32安装simics,过程中会出现选择license路径,选择刚才生成的license.lic即可,license.lic存放路径不要有中文,不要有空格

二、solaris 9 sparc系统安装

打开simics的时候,会提示选择一个workspace的路径,如下图,这个路径可以自己随意定
在这里插入图片描述
然后点击ok就打开了simics,如下图
在这里插入图片描述
从文章末尾获取solaris 9 sparc版本的压缩包,解压后会得到两个iso文件,两个iso文件名须为sol-9-u7-sparc-v1.iso和sol-9-u7-sparc-v2.iso,如果不是则要改成一样的。将其复制到上一步指定的workspace\targets\sunfire目录下。

simics安装系统是调用自带的脚本去安装的,该脚本会有一个问题:
系统安装配置为DHCP动态获取IP地址,设置本机域名和DNS服务器,因此安装过程中验证DNS服务时会出错,但好像也不影响后面安装。我是改了脚本的,让DHCP不自动获取IP地址。修改办法就是打开simics安装目录下targets\common目录中的solaris9-install.include文件,将:
$con.wait-for-string “DHCP”
$con.input “\033OA \0332”
改为
$con.wait-for-string “DHCP”
$con.input “\0332”
PS:其实simics自带的安装脚本还是蛮简单的,打开看看大概也能看懂。

solaris是文本安装,在安装系统的过程中如果碰到填写IP地址,就填10.10.0.5,碰到选择detect xxx的,就选none,其他的默认即可。

下面是安装步骤:
在simics虚拟机中,file->new session打开workspace\targets\sunfire\peanut-sol9-cd-install1.simics
完成后如下图:
在这里插入图片描述
然后file->new session打开workspace\targets\sunfire\peanut-sol9-cd-install2.simics
完成后如下图:
在这里插入图片描述
最后file->new session打开workspace\targets\sunfire\peanut-sol9-cd-install3.simics
完成如下图:
在这里插入图片描述
到这里,系统就安装完成了!!!
PS:peanut-sol9-cd-install3.simics这三个文件也可以打开看看,也不是很难看懂

三、solaris 9 sparc系统配置

3.1 启动solaris系统

file->new session打开workspace\targets\sunfire\peanut-common.simics,然后在simics底下命令窗口输入run,就可以启动solaris了
simics > run

3.2 基础知识

  1. simics和solaris是在两个不同的图形console中的,如果想控制solaris中的鼠标,则将鼠标移到solaris图形console中,然后按住shift 键,鼠标右击;同样的,如果想将solaris中的鼠标移出,按住shift 键,鼠标右击就可以离开solaris的图形console了,类似于Vmware 中的组合键ctrl+alt.
  2. simics命令窗口空闲状态如下图:
    在这里插入图片描述
    当solaris在运行时,simics命令窗口如下图:
    在这里插入图片描述
    在running时,running > stop可以返回空闲状态,此时solaris就暂停运行了;在空闲状态时,simics > run可以让solaris运行;另外如果已经运行了solaris但被暂停了,simics > c让solaris恢复运行,跟run的作用是一样的。

3.3 修改peanut-common.simics

在workspace\targets\sunfire\peanut-common.simics文件开头添加下面几行:
$os = “solaris9”
$ip_address = “10.10.0.5”

3.4 启动图形界面

之前启动solaris都是文本console,并没有图形console。simics 下的cde 可以在安装的时候, 就启动图形console 进行安装, 让installer 自动配置图形console,也可以先用默认的text console 进行安装,之后再进行配置。
本文的方法是用默认的text console 进行安装,之后再启动图形console,步骤如下:

  1. 打开simics的安装目录下的targets\sunfire\peanut-common.simics,我的是D:\Virtutech\Simics-3.04\targets\sunfire\peanut-common.simics,在run-command-file "%script%/sunfire-6500-system.include"之前添加以下代码,否则图形出不来:
    script-branch {
    wait-for-variable machine_defined
    $pcibrd = (create-sunfire-pci-board mac_address = “10:10:10:10:10:14”)
    $pgx64 = (create-sun-pci-pgx64)
    $gfxcon = (create-std-graphics-console)
    $keyboard = (create-sun-type5-keyboard)
    $mouse = (create-sun-type5-mouse)
    $scsi_bus1 = (create-std-scsi-bus)
    $system.connect slot2 $pcibrd
    $pcibrd.connect pci-slot0 $pgx64
    $pcibrd.connect $scsi_bus1
    $system.connect keyboard $keyboard
    $system.connect mouse $mouse
    $pgx64.connect console $gfxcon
    $gfxcon.connect keyboard $keyboard
    $gfxcon.connect mouse $mouse
    }

  2. 在相同的目录下,对peanut-setup.include 进行适当修改:
    if $os != none {
    #load-persistent-state prefix = (get-component-prefix) $state
    #user override
    $system.set-nvram-hostid $hostid
    $system.set-nvram-mac $mac_address
    }
    将上面一段中load-persistent-state prefix = (get-component-prefix) $state 这一句注释掉。
    同时,屏蔽以下3行(自动文本窗口登录root)
    #local $ con = ($ console.get-component-object con)
    #$ con.wait-for-string "ogin: "
    #$ con.input “root\n”

  3. 在相同的目录下,对sunfire-6500-system.include 进行适当修改,注释掉如下两句, 即将ttya 上的textconsole 拿掉。
    #$ console = (create-std-text-console)
    #$ system.connect ttya $console

  4. 按照3.1所讲的启动solaris,此时图形console应该就出来了,但是boot disk1 -v会失败,但没事,继续下面的步骤。

  5. 在simics 中,依次输入如下命令:
    simics>stop
    simics>load-persistent-state prefix = (get-component-prefix) peanut-sol9.state

  6. 进入solaris图形console 中,键入如下命令启动boot disk1 -rv,记住一定要用-r, 因为我的系统是在text console 下安装,图形设备都没有进行配置,使用-r 让系统自动配置显卡。

完成后,solaris 9 sparc的图形console应该就显示了,登录需要用户名,输入root就行,没有密码,需要设置别的用户或者密码则后面自行添加。

四、solaris界面console遇到的问题

4.1 鼠标飘

在solaris界面console中,鼠标总是很飘,这个我暂时没找到办法,只能慢慢移动鼠标

4.2 键盘连续输入

如果用键盘敲了一个键,在solaris界面console中总是连续输入了多个,在最开始的时候,这个问题无法避免,只能快速敲键盘。在进到solaris界面console里后,打开terminal(右键tools里面),输入执行xset r off就可以了。

4.3 界面颜色不对

如果你的solaris界面console不是类似下图的,就是颜色不对
在这里插入图片描述
打开terminal,运行 fbconfig -prconf 检查颜色, 默认的depth好像是8, 执行一下命令修改:
m64config –res 1152x900x76 nocheck –depth 24 ,其中分辨率可以根据fbconfig -prconf 执行后terminal中显示的改,重要的是-depth 24
执行完后,running->stop,simics->save-persistent-state peanut-sol92.state
关掉simics,在workspace目录下,删掉原本的peanut-sol9.state,将刚刚保存的peanut-sol92.state改为peanut-sol9.state。
重新启动simics,开启solaris系统,但与之前不同的是,执行boot就行,不要boot disk1 -rv(-r会使depth又变成8)

五、通过ftp与solaris传文件

  1. 在solaris中,修改/etc/default/login文件,注释掉CONSOLE=/dev/console(用vi开文件的时候可能发现有点乱,输入命令set nu增加行数显示会好一点)
  2. 修改/etc/ftpd/ftpusers,将第一行的root删除掉

上面两个步骤是为了能让root用户使用ftp服务

  1. 打开terminal,输入passwd root,给root用户设置密码用来访问ftp(ftp与solaris建立链接需要输入用户名和密码,明明我的root没有密码,却非要密码,无法理解,我root设置的密码是1)

  2. 在simics下输入connect-real-network 10.10.0.5,输出如下:
    NAPT enabled with gateway 10.10.0.1 on link link0.
    Host TCP port 4021 -> 10.10.0.5:21 on link link0
    Host TCP port 4023 -> 10.10.0.5:23 on link link0
    Host TCP port 4080 -> 10.10.0.5:80 on link link0
    Real DNS enabled at 10.10.0.1 on link link0
    这样电脑与simics的ftp就好了

  3. 在Windows中,随便打开一个文件夹,在地址栏中输入ftp://173.168.6.103:4021(中间是你电脑的IP地址,4021是ftp链接simics端口号,在上面第四点可以看到),输入用户名和密码访问了,可以传文件了,非常方便(就像共享文件夹一样)

六、保存solaris当前状态

每次关闭simics虚拟机,如果不保存solaris,则所有东西都会丢弃,而通常solaris系统也不需要关机什么的。有两种方法可以保存当前solaris状态:

  1. simics->stop
    simics->save-persistent-state psol9_xxx .state(xxx表示可以任意修改)
    重启simics时, load 上次保存的状态:
    simics> load-persistent-state prefix = (get-component-prefix) psol9_xxx.state
    PS:不知道为啥我用这种办法总是报错,所以我一般用第二种方法
  2. simics->stop
    file-> Save Checkpoint As 就可以了,下次直接file->Open Checkpoint就行了,这个方法也很方便。

七、联网和远程登陆服务

我暂时不需要,故没弄,需要的时候再补上把

八、资源

solaris 9 sparc: https://pan.baidu.com/s/1qQ4aIfxc8Qh-i-aG4_rSrg 提取码:kgwd
simics3.04: https://pan.baidu.com/s/1PRaowfIeF7Sc1V40ItieEg 提取码:1rh8

九、Reference

https://bbs.eetop.cn/forum.php?mod=viewthread&tid=429031&highlight=solaris
https://blog.csdn.net/dinsh3100/article/details/124361042
https://bbs.eetop.cn/thread-618923-1-1.html
https://blog.eetop.cn/blog-6222-433619.html
https://bbs.eetop.cn/forum.php?mod=viewthread&tid=633360

后言

这个课题组,啥都没有,用的工艺还很古老,什么都要自己弄,平台得自己搭,IP啥的都没有,要个SRAM还得重新装个系统搭平台,太费劲了!!!芯片板子得自己画自己焊自己测,留给芯片设计的时间真的很少,好累emo

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值