OpenRisc-55-OpenRISC debug系统分析

来源:互联网 发布:ue json格式化 编辑:程序博客网 时间:2024/05/22 10:51

引言

调试OpenRISC,需要软件和硬件的协同工作才能实现,其中硬件又包括JTAG cable,JTAG TAP和debug interface三部分,软件也包括JTAG cable的驱动,RSP server和GDB三部分。本小节就从整体出发,简单介绍一下OpenRISC的调试系统。


1,调试系统分类

如果软件和硬件各个子部分以不同组合方式组合在一起,就会出现不同的调试系统,但一般有三种不同的组合方式:


1>官方提供的UBUNTU的虚拟机里预装的方案

软件部分:

1,or32-linux-gdb,

2,or_debug_proxy(只能针对FT2232的JTAG cable使用)

3,JTAG cable的驱动集成到了or_debug_proxy内部


or_debug_proxy的源码可以在openrisc的SVN服务器下载: http://opencores.org/or1k/OR1K:Community_Portal#Get_source_code

需要注意的是,如果你是用的开发板不是ordb2a的话,也想采用这种方案,那就需要购买单独的JTAG cable(ORSoC USB debugger:http://opencores.org/shop,item,3)

硬件部分:

1,JTAG cable(FT2232)集成到了ordb2a-ep4ce22的板子上。,

2,JTAG TAP使用Igor Mohor写的标准的TAP,这样的话调试orsoc和烧写FPGA本身虽然使用的是一根线,但是使用的是两个JTAG口(FPGA芯片本身的JTAG和SoC中jtag_tap的外部引脚)

3,使用的是adv_dbg_if IPCORE

2>Advanced Debug System

Advanced Debug System工程是独立于OpenRISC的一个工程。其目标是提供一个可以调试SoC和烧写程序,当然,其目前还是主要用来调试基于or1200的SoC。

Advanced Debug System主要可分成三部分:adv_jtag_bridge,JTAG TAP,adv_dbg_if。


其中adv_jtag_bridge就是上面所说的JTAG cable的驱动和RSP server的组合体。


JTAG TAP一端连接JTAG cable,一端连接adv_dbg_if,是在SoC中负责与JTAG cable通信的一个门户。他本身也是一个ipcore。JTAG TAP目前有4种选择(tap_top,altera virtual jtag,xilinx internal jtag,actel_ujtag),具体采用哪个,可根据自己的具体情况而定。

需要说明的是采用tap_top需要将tap_top的模块端口连到FPGA的外部引脚上,所以需要额外的注意。JTAG cable也需要连到对应的引脚上,这样的话,就需要两条JTAG线,一条用来给FPGA芯片本身使用,另外一条给SoC使用。

而采用其他tap则不需要片外引脚,而是调用FPGA厂家提供的接口连到的FPGA本身的JTAG模块。所以只需要一根JTAG线就可以同时实现配置FPGA和调试SoC。


adv_dbg_if是调试系统内部负责和SoC各个调试模块连接的一个ipcore,就像一个八爪鱼一样,adv_dbg_if模块负责搜集SoC各个模块的情报,通过JTAG TAP送到adv_jtag_bridge手中,adv_jtag_bridge再将情报转交给最终的GDB。同样,GDB也会通过这条通道完成对SoC的调试。


Advanced Debug System项目首页:http://opencores.org/project,adv_debug_sys


3>OpenOCD

可以这么认为,OpenOCD是or_debug_proxy的一个升级版,or_debug_proxy只支持ft2232 based的JTAG cable,而OpenOCD由于引入了UrJTAG驱动包,所以就支持很多JTAG cable。

如果你的开发板采用的不是ordb2a,有不想买expensive的USB debugger,而OpenOCD又恰好支持你现在的JTAG cable,那采用OpenOCD将是一个不错的解决方案。

关于OpenOCD,请参考:http://opencores.org/or1k/OpenOCD


此外,除了上面三个方式外,OpenOCD还可以和adv_debug_sys配合使用,以提供更强大的调试功能。具体细节可参考OpenOCD的user manual。


2,小结

本小节从宏观角度上分析了OpenRISC的调试系统解决方案,如果你还在为你的or1200 based SoC不知道采用哪种方式而犹豫不决,或许本小节的内容会是一个不错的参考。


原创粉丝点击