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

#技术风云榜#Advanced Debug System

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
) q) H$ J: ~5 H. \
引言8 w6 x0 u5 i6 s1 g
在前面我们阐述了OpenRISC 的调试系统的几种不同的实现方案,本小节我们着重介绍一下其中的Advanced Debug System。
6 ^/ S' r7 T0 o4 v8 b: }0 g) o" I( o" A! f9 ]/ `8 d
为了在不同的阶段进行不同层次的调试,模拟和仿真,opencores也开发了相应的debug系统(advancedebug system,http://opencores.org/project,adv_debug_sys),其中既包含目标硬件模块也包含软件模块,甚至还包含软件和硬件之间的调试器(ORSoC USB debugger)。, m0 h8 h" ~5 R+ q. R) u
% n& x4 S& E2 T; p! L7 R

( M) ]5 g, ]$ U4 }4 H8 `: U& W! J1,调试级别' m9 m$ Y1 H& P3 s5 ~9 G' ?+ I
8 b8 ]' z& Q/ [7 V
Advanced Debug System实现了三个级别的调试和仿真。
% v( X+ b% C# T- ]
; I+ z' {$ ?6 e# v! B* z一般根据研发过程中不同的阶段分为三种调试仿真级别:体系结构设计初期的调试,设计中期的调试,和设计末期的调试。
+ a) T1 A! B' F. L; ]1 y4 [  G$ z* X* y( l
下面我们就从三个方面来分别介绍advanced debug system的实现。5 j- r8 X, U6 t- n$ x) |0 l$ `4 D
( m% p) F  x6 Z0 c: ?9 a) A) m

! E+ f  s; a' V4 P" F" M  }  p6 \2 h2,体系结构设计初期的调试( ~, C5 v( @- G  A5 p! T/ Z

$ m8 B6 Q' `7 B8 r首先,就是在体系结构设计初期的调试,这时候体系结构的RTL还没有开始编写,也没有FPGA的验证系统,更没有流片生成最终的ASIC,但是为了达到调试的目的,就需要别写体系结构对应的simulator(模拟器),对于OpenRISC1000来说就是or1ksim。利用or1ksim,我们就可以模拟指令的执行和CPU的行为,此外,随着不断向模拟器中增加额外的模拟模型,还可以模拟串口,模拟内存控制器等。一旦有了比较完善的体系结构模拟器,就可以实现软件和硬件并行开发。Or1ksim内部包含了一个RSPserver,这就意味着GDB可以直接和or1ksim通信,不需要adv_jtag_bridge程序的参与,如下图所示。
9 v; c$ i, d- e2 {9 f' k4 X/ o: J9 x7 c, o, x5 N7 |
# m. u) I8 F4 P" a( K

/ b: v# Y$ @4 S( A: i- g% ^. k+ M  u
3,体系结构设计中期的调试+ ^& l5 i3 s& z1 D, i
其次,是在体系结构设计中期,在这个时候,体系结构的特性和模块已经基本确定下来了,并且已经编写了对应的RTL,但是还是没有FPGA验证平台,这种情况下,就可以进行RTL级别的emulation(仿真)了。RTL级别的仿真的实现主要有两种方式,一种是在bridge和RTL仿真器之间使用FILE IO,另外一种是使用VPI IO。
% X; A1 \' q3 z9 o3 |3 }7 Y: g! T7 d
* G: s. w, \+ w! C/ l$ G4 z/ J如果采用FILEIO的方式,需要在利用主机的文件系统来完成数据的传递,这就需要在RTL仿真这一端增加一个模块(dbg_comm.v),来读写文件,根据文件内容设置JTAG的状态。在仿真过程中,bridge向文件中写入数据,等待dbg_com的应答。dbg_com收到数据后,根据数据信息,完成对应操作之后,向文件中写入应答数据。Bridge收到应答之后完成一次调试动作。如下图所示:
2 L+ i. F- M* f/ W1 f* T3 H+ y0 g  t. L% E  m* N

3 j8 y' k# H1 x4 q* y
1 b' i; D1 f$ |7 p" V7 W; A$ W* v+ p8 D
       如果采用的是VPI IO的方式,与FILEIO的方式类似,但是在bridge和RTL仿真器之间需要VPI(verilogprogram inteRFace)的支持。VPI既支持支持C语言又支持verilog模块,所以dbg_com模块可以使用VPI的库,而不必通过读写文件的形式就可以与bridge通信了。采用VPI IO方式的仿真系统,如下图所示:
+ W& t  T; @! G7 G
/ l% ~; ~/ k7 }3 p3 K( h- Q- o! Q( M 4 F1 O  Q& D) L; j

2 F8 v) ]1 s6 \  P, d- R$ k4 ?% y) e" J  N
4,系结构设计末期的调试
/ ]- h- k/ r! \. ^! d* I% a0 K; Y
% _( ?) ?  r# C5 K最后,在体系结构设计的末期,为了进一步提高仿真的精确度,需要在FPGA上做进一步的调试和验证。这种调试级别,就需要购买FPGA开发板和对应的JTAG cable,也就是我们前面最常用的调试方式。其结构如下所示:" e5 {! C3 s) e) h$ W

1 e2 M+ ]2 V6 H: G; ^# R! X 6 @' v9 J# a+ s" t6 t4 I
2 i/ w2 V0 T- ?
6 S+ x+ o. U8 b+ s
5,小结
) q/ D0 S$ |9 i9 ]1 h本小节简单介绍了advanced debug system的系统组成和工作原理,读者可根据自己的具体情况选择不同的调试方式。
: b) {# M0 r9 z" `" C& M2 B( H. j0 D9 s
advanced debug system的搭建,可分成两部分,在自己的SoC中例化tap和adv_dbg_if等IP core,在PC机上安装adv_jtag_bridge。
, ]5 A: d& L$ C" N3 \& ~% r! ^2 m! k' C( `( G1 b5 |! e$ A
verilog HDL/VHDL的模块例化和linux下软件的安装和使用的具体细节可下载参考 adv_debug_sys_latest.tar.gz中的adv_jtag_bridge的手册获得(http://opencores.org/project,adv_debug_sys)。" _: B  j$ e$ x; u4 b
$ R2 ]4 E6 H, J0 N
需要注意的是要实现最终的调试,TAP,cable,bridge,gdb 四者要协同工作才能完成。即bridge要能检测到JTAG cable并开启RSP server,JTAG cable要能连接到TAP,TAP要能扫描链中识别adv_dbg_if。& }6 L/ E3 p, q2 u; L+ ^- v  _

8 c( z* ]! h6 z* D# O, v* v$ aenjoy!
6 G9 v- s4 |+ ?1 \1 N! w$ x$ F+ C

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-27 09:19 , Processed in 0.078125 second(s), 26 queries , Gzip On.

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

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

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