【从嵌入式视角学习香山处理器】二、调试起来是什么样的?(体验GUI工具)

一、前言

最小配置的香山核(CONFIG=Minimal)编译完后,已经可以继续按照readme指引试用下两个GUI工具了。但目的不在于正式开始分析代码、功能啥的,而是期望:通过这种可视化的方式,让初学者体验到自己的一顿折腾是有意义的,会有助于在入门阶段保持兴趣


二、虚拟示波器gtkwave

1、简介

gtkwave用来对香山核在仿真过程中记录下来的波形进行回放显示(即不是实时的),从CPU时钟的粒度回溯芯片内部各个IO或总线的电平或数据,实现定位bug的目的。

2、安装与使用

先进入香山工程路径下,看有没有编译好的emu文件,

cwq@ubuntu:~/1_xiangshan/xs-env/XiangShan$ ls ./build/emu
./build/emu

然后执行以下命令来生成波形文件vcd——只记录CPU时钟周期10000~11000之间的:
(因为我用的emu是完整配置、而不是最小配置的香山,所以这个过程超级慢。最后我只跑一段时间后用Ctrl+C中止)

cwq@ubuntu:~/1_xiangshan/xs-env/XiangShan$ ./build/emu -i $NOOP_HOME/ready-to-run/linux.bin --dump-wave -b 10000 -e 11000
Emu compiled at Dec  7 2021, 06:53:16
The image is /home/cwq/1_xiangshan/xs-env/XiangShan/ready-to-run/linux.bin
Using simulated 8192MB RAM
dump wave to /home/cwq/1_xiangshan/xs-env/XiangShan/build/2021-12-08@07:07:50.vcd...
--diff is not given, try to use $(NEMU_HOME)/build/riscv64-nemu-interpreter-so by default
NemuProxy using /home/cwq/1_xiangshan/xs-env/NEMU/build/riscv64-nemu-interpreter-so
[src/isa/riscv64/init.c,50,init_isa] NEMU will start from pc 0x80000000
The first instruction of core 0 has commited. Difftest enabled.
bbl loader
freq-mhz = 500
CLINT: set frequency to 500 MHz
              vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
                  vvvvvvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrr       vvvvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrr      vvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrrrr    vvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrrrr    vvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrrrr    vvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrr      vvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrr       vvvvvvvvvvvvvvvvvvvvvv
rr                vvvvvvvvvvvvvvvvvvvvvv
rr            vvvvvvvvvvvvvvvvvvvvvvvv      rr
rrrr      vvvvvvvvvvvvvvvvvvvvvvvvvv      rrrr
rrrrrr      vvvvvvvvvvvvvvvvvvvvvv      rrrrrr
rrrrrrrr      vvvvvvvvvvvvvvvvvv      rrrrrrrr
rrrrrrrrrr      vvvvvvvvvvvvvv      rrrrrrrrrr
rrrrrrrrrrrr      vvvvvvvvvv      rrrrrrrrrrrr
rrrrrrrrrrrrrr      vvvvvv      rrrrrrrrrrrrrr
rrrrrrrrrrrrrrrr      vv      rrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrr          rrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrr      rrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrr  rrrrrrrrrrrrrrrrrrrrrr

       INSTRUCTION SETS WANT TO BE FREE

[    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[    0.000000] Linux version 4.18.0-00046-g2ba394515c09-dirty (wkf@xiangshan-05) (gcc version 9.2.0 (GCC)) #113 Thu Feb 4 21:45:54 CST 2021
[    0.000000] bootconsole [early0] enabled
[    0.000000] Initial ramdisk at: 0x(____ptrval____) (23552 bytes)
[    0.000000] Zone ranges:
[    0.000000]   DMA32    empty
[    0.000000]   Normal   [mem 0x0000000080200000-0x0000000081ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080200000-0x0000000081ffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x0000000081ffffff]
^CCore 0: SOME SIGNAL STOPS THE PROGRAM at pc = 0xffffffff800ba514
...

然后用MobaXterm连上Ubuntu——因为MobaXterm自带可以打开远程GUI工具的功能(好像叫“X server”?),执行以下命令安装gtkwave并打开上一步生成的波形文件:

sudo apt-get install gtkwave
gtkwave ./build/2021-12-08@07:07:50.vcd

就能看到如下图的界面:
xterm启动gtkwave
gtkwave初始界面
然后在左上角随便打开几个信号引脚,可以看到类似以下的波形图:
(既有单个IO的电平,也有32bit位宽的总线的十六进制数值)
gtkwave打开个别io

3、点评

gtkwave可以反映出很精细的运行细节,功能很强大。但同时仿真速度也变得非常慢。


三、LogViewer

1、简介

logviewer基本上就是一款文本查看器,特点在于可以快速打开超大文件(体积没有限制)、高亮显示不同类型的信息,还带一些分析统计之类的功能。

2、安装与使用

因为完整版香山跑linux太慢,我选择最小配置版的香山来跑coremark,生成log文件快一些(命令中使用的emu_minimal是我提前编译保存好的最小配置的emu):

sudo apt-get install lnav
./emu_minimal -i $NOOP_HOME/ready-to-run/coremark-2-iteration.bin 2>&1 | tee > test1.log
lnav test1.log

能看到如下的内容:
logviewer界面
随便按上下键,再按m键可以标记某一行(具体能用来做啥还不知道,但看起来是挺方便的;如果能快速跳转浏览这些标记行更好了。)
logviewer标记某些行
可以参考这篇文章(https://www.howtoing.com/ubuntu-lnav-log-viewer)来折腾一下。

3、点评

暂时没有深入研究logviewer的具体功能,但官网可以找到最全的使用说明。相信它对比器简单地用vim或nano之类的文本编辑器,在查看log文件方面会有很大的便利性。
到正式需要使用时再回头查阅具体用法。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值