找回密码
 注册
关于网站域名变更的通知
查看: 386|回复: 1
打印 上一主题 下一主题

#技术风云榜#Advanced Debug System

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-11-23 15:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
( F. @6 n; x, v2 r
引言
* [4 E6 }5 \) ^3 J9 Y  i1 u: {在前面我们阐述了OpenRISC 的调试系统的几种不同的实现方案,本小节我们着重介绍一下其中的Advanced Debug System。& x6 v) R2 G* b" B" A

5 c9 ^  H- S! j- \1 B$ u, A为了在不同的阶段进行不同层次的调试,模拟和仿真,opencores也开发了相应的debug系统(advancedebug system,http://opencores.org/project,adv_debug_sys),其中既包含目标硬件模块也包含软件模块,甚至还包含软件和硬件之间的调试器(ORSoC USB debugger)。$ ?2 ]- \3 T+ }7 V7 B3 H4 w; t
( @* y+ |2 _  E1 _

0 R: j2 K# d% W! b' ~1,调试级别+ k% D% M8 l' D$ q; o* w

$ h9 {# |! E+ Z2 z3 MAdvanced Debug System实现了三个级别的调试和仿真。/ x8 G( P, }% d1 s5 o, j$ u

0 I4 q. _# E* m7 K; t! h一般根据研发过程中不同的阶段分为三种调试仿真级别:体系结构设计初期的调试,设计中期的调试,和设计末期的调试。
2 o, w, j2 m" R! d& K1 \/ a# s9 n7 E9 v  |( c
下面我们就从三个方面来分别介绍advanced debug system的实现。
4 ~  f. N/ @7 y+ I( E( C' {5 z
$ c( ^" I2 Y9 c; O! J4 B( ~: B& ?; g0 m9 ]0 L
2,体系结构设计初期的调试
& r/ p6 p- o  s4 n7 U- E( q% c) b. g# i* d' k5 q
首先,就是在体系结构设计初期的调试,这时候体系结构的RTL还没有开始编写,也没有FPGA的验证系统,更没有流片生成最终的ASIC,但是为了达到调试的目的,就需要别写体系结构对应的simulator(模拟器),对于OpenRISC1000来说就是or1ksim。利用or1ksim,我们就可以模拟指令的执行和CPU的行为,此外,随着不断向模拟器中增加额外的模拟模型,还可以模拟串口,模拟内存控制器等。一旦有了比较完善的体系结构模拟器,就可以实现软件和硬件并行开发。Or1ksim内部包含了一个RSPserver,这就意味着GDB可以直接和or1ksim通信,不需要adv_jtag_bridge程序的参与,如下图所示。7 N. I: Z/ S3 G. g. a6 a; K$ Y
+ p; o2 E& v% V& f7 {- m" V7 j
! Q& d' W  G3 \0 \$ f/ N* L$ v, ~, S' L

8 T. V4 `. g9 j
9 K8 z3 Y# P6 o- Q8 N+ i3,体系结构设计中期的调试: _2 E( B- {* U2 S
其次,是在体系结构设计中期,在这个时候,体系结构的特性和模块已经基本确定下来了,并且已经编写了对应的RTL,但是还是没有FPGA验证平台,这种情况下,就可以进行RTL级别的emulation(仿真)了。RTL级别的仿真的实现主要有两种方式,一种是在bridge和RTL仿真器之间使用FILE IO,另外一种是使用VPI IO。
# Y9 K/ F( z  ?0 ?# E0 [; o; ]9 G  d  J0 Y& `4 q$ I
如果采用FILEIO的方式,需要在利用主机的文件系统来完成数据的传递,这就需要在RTL仿真这一端增加一个模块(dbg_comm.v),来读写文件,根据文件内容设置JTAG的状态。在仿真过程中,bridge向文件中写入数据,等待dbg_com的应答。dbg_com收到数据后,根据数据信息,完成对应操作之后,向文件中写入应答数据。Bridge收到应答之后完成一次调试动作。如下图所示:
& d7 W& }1 ?7 a' b2 A4 m5 m4 n4 I% `9 p, p( U( f. Y1 Z

  m2 L, ?5 q4 z  e1 ]& X
1 z) j2 _# |$ f3 ?* o$ t
( M6 J( j0 `. a+ ~       如果采用的是VPI IO的方式,与FILEIO的方式类似,但是在bridge和RTL仿真器之间需要VPI(verilogprogram inteRFace)的支持。VPI既支持支持C语言又支持verilog模块,所以dbg_com模块可以使用VPI的库,而不必通过读写文件的形式就可以与bridge通信了。采用VPI IO方式的仿真系统,如下图所示:) ^3 w! @$ h* {3 H- P8 C3 z

# _# N* _) s1 e2 O 8 w( W7 b4 M% y1 d1 p

7 E. M% r- y8 c7 Q4 Z: W% }/ Q3 g0 q- {7 J! [; u, c2 f* f
4,系结构设计末期的调试' ^0 I& P" ^5 Y$ M5 G8 W1 M+ C

- f8 W/ a: i3 N( S6 @最后,在体系结构设计的末期,为了进一步提高仿真的精确度,需要在FPGA上做进一步的调试和验证。这种调试级别,就需要购买FPGA开发板和对应的JTAG cable,也就是我们前面最常用的调试方式。其结构如下所示:
  e; h1 L' ~9 ^; Q) `( \! S+ W* f6 |+ _, o, {  z$ j
6 }* k+ J5 y% L

2 p( g. g3 n- v1 c' f6 e7 |5 d
% u- @6 R! x9 W5,小结
) l$ D' M% J7 A; d9 s/ ^本小节简单介绍了advanced debug system的系统组成和工作原理,读者可根据自己的具体情况选择不同的调试方式。' M7 A% I0 s0 B  }. S7 B3 O
, [) C$ Q" z, b+ s3 m; E
advanced debug system的搭建,可分成两部分,在自己的SoC中例化tap和adv_dbg_if等IP core,在PC机上安装adv_jtag_bridge。
2 A$ D, t: e' Q
2 q, q1 r! o- N. s! rverilog HDL/VHDL的模块例化和linux下软件的安装和使用的具体细节可下载参考 adv_debug_sys_latest.tar.gz中的adv_jtag_bridge的手册获得(http://opencores.org/project,adv_debug_sys)。
. J8 }. t1 ~2 r
- q$ s7 q# f+ N3 g, n3 z- N需要注意的是要实现最终的调试,TAP,cable,bridge,gdb 四者要协同工作才能完成。即bridge要能检测到JTAG cable并开启RSP server,JTAG cable要能连接到TAP,TAP要能扫描链中识别adv_dbg_if。; A4 p: Y" K- {5 {
* {# P1 \" N( K
enjoy!- R3 _  k1 e& F, s6 ^' U# M

该用户从未签到

2#
发表于 2020-11-23 16:30 | 只看该作者
Advanced Debug System
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 22:45 , Processed in 0.203125 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表