CN111124887B - 一种risc-v debug系统的仿真验证方法 - Google Patents
一种risc-v debug系统的仿真验证方法 Download PDFInfo
- Publication number
- CN111124887B CN111124887B CN201911167171.2A CN201911167171A CN111124887B CN 111124887 B CN111124887 B CN 111124887B CN 201911167171 A CN201911167171 A CN 201911167171A CN 111124887 B CN111124887 B CN 111124887B
- Authority
- CN
- China
- Prior art keywords
- risc
- interface
- debug system
- remote
- gdb
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3652—Software debugging using additional hardware in-circuit-emulation [ICE] arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种RISC‑V DEBUG系统的仿真验证方法,包括步骤:A.通过Remote Bitbang接口实现JTAG接口驱动;B.通过DPI接口实现DEBUG系统中DTM模块与Remote Bitbang接口的数据传输;C.以OpenOCD作为片上调试器,通过调用Remote Bitbang接口实现与DTM模块的JTAG TAP通信;D.通过TCP SOCKET的方式,实现GDB与OpenOCD的连接;E.将C代码编译成可执行程序,通过GDB下载至RISC‑V Core中;F.通过GDB输入不同功能的指令,实现RISC‑V DEBUG系统的仿真验证。本发明的方法可有效降低硬件花销成本和硬件选型调试的时间成本,同时能够有效提高仿真验证效率。
Description
技术领域
本发明涉及处理器技术领域,特别涉及一种RISC-V DEBUG系统的仿真验证方法。
背景技术
在设计RISC-V Core的过程中,当设计从模拟仿真阶段发展到硬件实现时,设计者对系统当前状态的控制和理解会急剧下降,为了有助于开发调试硬件和软件,在硬件中内置一个功能完善的DEBUG系统是至关重要的。相应的,对所设计的DEBUG系统的功能性验证同样具有十分重要的意义。对DEBUG系统调试验证的最直接、最常用的方法是将DEBUG代码烧录至FPGA开发板上,开发板通过硬件接口连接调试器进行调试和验证。但是,这种方法需要购买FPGA开发板及JTAG适配器等一系列硬件设备,在一定程度上增加了验证花销成本;在对开发板的选型和调试过程中,无疑也增加了时间成本;在对DEBUG系统的仿真验证过程中,不可避免地需要经常修改代码,但每次修改代码后,要重新将代码烧录至FPGA开发板中,在一定程度上影响了仿真验证效率。
因此,如何实现一种高效率、低成本的RISC-V DEBUG系统仿真验证方法,是本领域技术人员需要解决的技术问题。
发明内容
本发明的目的是克服上述背景技术中不足,提供一种RISC-V DEBUG系统的仿真验证方法,不依赖于FPGA开发板及其他相关硬件接口设备,完全在Linux系统下实现RISC-VDEBUG系统的仿真验证,可有效降低硬件花销成本和硬件选型调试的时间成本,同时能够有效提高仿真验证效率。
为了达到上述的技术效果,本发明采取以下技术方案:
一种RISC-V DEBUG系统的仿真验证方法,包括以下步骤:
A.通过Remote Bitbang接口实现JTAG接口驱动;
B.通过DPI接口实现DEBUG系统中DTM模块与Remote Bitbang接口的数据传输;其中,本步骤所用到Remote Bitbang接口是一个基于C++编写的驱动程序,而RISC-V DEBUG系统中的DTM模块是用Verilog编写的rtl代码,两者之间由于格式不同,不能直接进行数据传输,因此本方案通过采用DPI接口的方式,实现Remote Bitbang和DTM模块之间的通信;
C.以OpenOCD作为片上调试器,通过调用Remote Bitbang接口实现与DTM模块的JTAG TAP通信;因为要实现OpenOCD与RISC-V DEBUG的通信,所以OpenOCD也要通过调用Remote Bitbang接口来实现与DTM模块的数据传输;
D.通过TCP SOCKET的方式,实现GDB与OpenOCD的连接;
GDB(GNU Debugger)是Linux/Unix下的程序调试器,可用于启动程序、在程序中设置断点、查看程序中变量值以及CPU寄存器的值,并且在不改变程序源码的情况下改变寄存器和变量的值等,本方案采用GDB作为RISC-V DEBUG系统的调试器,因此GDB需要与OpenOCD实现通信,本方案通过TCP SOCKET的方式实现GDB与OpenOCD的连接;
E.将C代码编译成可执行程序,通过GDB下载至RISC-V Core中;
当GDB与OpenOCD成功连通后,可通过GDB向RISC-V Core下载程序,但GDB不能直接将编写好的C程序下载至RISC-V Core中,因此需要将C程序编译成可执行程序;
F.通过GDB输入不同功能的指令,实现RISC-V DEBUG系统的仿真验证。
进一步地,所述步骤A中Remote Bitbang接口具体是利用远程进程来驱动JTAG。
进一步地,所述步骤A中通过Remote Bitbang接口实现JTAG的驱动时包括:建立与远程进行的TCP连接,并向该进程发送ASCII编码的bitbang请求,从而驱动JTAG。
进一步地,所述Remote Bitbang接口是用C语言编写的驱动代码,DTM模块是用verilog编写的rtl代码,两者之间采用DPI接口的方式实现数据传输。
进一步地,所述GDB将相应的指令解析后发送给OpenOCD,OpenOCD接收到指令,以JTAG TAP的方式发送给RISC-V DEBUG系统。
进一步地,所述步骤E中C代码编译成的可执行程序中包含程序的入口地址。
进一步地,所述步骤F中,GDB通过在线调试程序和对RISC-V系统寄存器的各种操作来实现RISC-V DEBUG系统的仿真验证。
本发明与现有技术相比,具有以下的有益效果:
本发明的RISC-V DEBUG系统的仿真验证方法,可代替目前该领域中,通过向FPGA开发板中烧录代码,进而对RISC-V DEBUG系统仿真验证的方法。在本发明中,通过RemoteBitbang接口,采用TCP SOCKET的方式传输数据,无需借助FPGA开发板及其他相关硬件设备,即可驱动JTAG接口,实现OpenOCD与RISC-V DEBUG系统之间的连通,同时,GDB与OpenOCD之间的通信同样采用TCPSOCKET的方式,GDB可将编译好的可执行程序在线下载到RISC-VCore中,通过GDB输入不同的指令,可实现RISC-V DEBUG系统软件和硬件的仿真验证。因此,本发明的技术方案降低了RISC-V DEBUG系统仿真验证的硬件成本,提高了RISC-V DEBUG系统的仿真验证效率。
附图说明
图1是本发明的RISC-V DEBUG系统的仿真验证方法的流程示意图。
图2是本发明的RISC-V DEBUG系统的仿真验证方法的整体架构示意图。
图3是本发明的RISC-V DEBUG系统的仿真验证方法中OpenOCD与DTM模块的连接示意图。
具体实施方式
下面结合本发明的实施例对本发明作进一步的阐述和说明。
实施例:
实施例一:
如图1及图2所示,一种RISC-V DEBUG系统的仿真验证方法,该方法不依赖于FPGA开发板和其他相关硬件接口设备,而是通过Remote Bitbang的方式实现RISC-V DEBUG系统与OpenOCD之间通信,GDB通过TCP SOCKET的方式与OpenOCD连通,可实现向RISC-V Core在线下载程序、调试程序和访问寄存器等一系列仿真验证操作。其仿真验证过程完全在Linux系统下实现,减少了仿真验证的硬件花销成本,提高了仿真验证的效率。
具体包括以下步骤:
步骤1.通过Remote Bitbang接口实现JTAG接口驱动。
具体的,Remote Bitbang接口是利用远程进程来驱动JTAG,本方法将建立与远程进行的TCP连接,并向该进程发送ASCII编码的bitbang请求,从而驱动JTAG,而不是直接驱动JTAG。
步骤2.通过DPI接口实现DEBUG系统中DTM模块与Remote Bitbang接口的数据传输。
本实施例中的Remote Bitbang接口是一个基于C++编写的驱动程序,而RISC-VDEBUG系统中的DTM模块是用Verilog编写的rtl代码,两者之间由于格式不同,不能直接进行数据传输,因此本方案通过采用DPI接口的方式,实现Remote Bitbang和DTM模块之间的通信。如图3所示为本实施例中RemoteBitang和DTM模块的连接示意。
步骤3.OpenOCD作为片上调试器,通过调用Remote Bitbang接口实现与DTM模块的JTAG TAP通信。
因为要实现OpenOCD与RISC-V DEBUG的通信,所以OpenOCD也要通过调用RemoteBitbang接口来实现与DTM模块的数据传输。
步骤4.通过TCP SOCKET的方式实现GDB与OpenOCD的连接。
GDB(GNU Debugger)是Linux/Unix下的程序调试器,可用于启动程序、在程序中设置断点、查看程序中变量值以及CPU寄存器的值,并且在不改变程序源码的情况下改变寄存器和变量的值等。
本发明采用GDB作为RISC-V DEBUG系统的调试器,因此GDB需要与OpenOCD实现通信,本发明通过TCP SOCKET的方式实现GDB与OpenOCD的连接。具体仿真验证过程中,验证工程师通过GDB输入不同的调试指令,GDB将相应的指令解析后发送给OpenOCD,OpenOCD接收到指令,并以JTAG TAP的方式发送给RISC-V DEBUG系统。
步骤5.将C程序代码编译成可执行程序,通过GDB下载至RISC-V Core中。
具体的,当GDB与OpenOCD成功连通后,可通过GDB向RISC-V Core下载程序,但GDB不能直接将编写好的C程序下载至RISC-V Core中,需要将C程序编译成可执行程序,编译好的C代码程序中需要包含程序的入口地址以保证可以正确运行。
步骤6.通过GDB输入不同功能的指令,从而实现RISC-V DEBUG系统的仿真验证。
具体的,GDB与OpenOCD成功连接后,GDB发出相应的操作指令,OpenOCD对指令进行解析并驱动JTAG TAP,从而实现对RISC-V DEBUG系统的仿真验证,将编译好的C代码程序通过GDB下载到RISC-V系统中,编译好的C代码程序需要包含程序的入口地址以保证可以正确运行;GDB通过在线调试程序和对RISC-V系统寄存器的各种操作来实现RISC-V DEBUG系统的仿真验证。
在上述步骤完成后,本发明的RISC-V DEBUG系统的仿真验证环境即搭建完毕,可进入到仿真验证阶段。
需要说明的是,本实施例中仅是公开了一种具体的实施案例,上述基于RISC-VDEBUG系统的仿真验证方法,本领域技术人员能够很容易想到将这种方法应用于其他CPU的DEBUG系统仿真验证实施例中,这些实施例也应当属于本发明的保护范围,并且不应该将本发明的保护范围局限在所述实施例之上。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。
Claims (5)
1.一种RISC-V DEBUG系统的仿真验证方法,其特征在于,包括以下步骤:
A.通过Remote Bitbang接口实现JTAG接口驱动;所述步骤A中RemoteBitbang接口具体是利用远程进程来驱动JTAG;所述步骤A中通过Remote Bitbang接口实现JTAG的驱动时包括:建立与远程进行的TCP连接,并向该进程发送ASCII编码的bitbang请求,从而驱动JTAG;
B.通过DPI接口实现DEBUG系统中DTM模块与Remote Bitbang接口的数据传输;
C.以OpenOCD作为片上调试器,通过调用Remote Bitbang接口实现与DTM模块的JTAGTAP通信;
D.通过TCP SOCKET的方式,实现GDB与OpenOCD的连接;
E.将C代码编译成可执行程序,通过GDB下载至RISC-V Core中;
F.通过GDB输入不同功能的指令,实现RISC-V DEBUG系统的仿真验证。
2.根据权利要求1所述的一种RISC-V DEBUG系统的仿真验证方法,其特征在于,所述Remote Bitbang接口是用C语言编写的驱动代码,DTM模块是用verilog编写的rtl代码,两者之间采用DPI接口的方式实现数据传输。
3.根据权利要求1所述的一种RISC-V DEBUG系统的仿真验证方法,其特征在于,所述GDB将相应的指令解析后发送给OpenOCD,OpenOCD接收到指令,以JTAG TAP的方式发送给RISC-V DEBUG系统。
4.根据权利要求1所述的一种RISC-V DEBUG系统的仿真验证方法,其特征在于,所述步骤E中C代码编译成的可执行程序中包含程序的入口地址。
5.根据权利要求1所述的一种RISC-V DEBUG系统的仿真验证方法,其特征在于,所述步骤F中,GDB通过在线调试程序和对RISC-V系统寄存器的各种操作来实现RISC-V DEBUG系统的仿真验证。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911167171.2A CN111124887B (zh) | 2019-11-25 | 2019-11-25 | 一种risc-v debug系统的仿真验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911167171.2A CN111124887B (zh) | 2019-11-25 | 2019-11-25 | 一种risc-v debug系统的仿真验证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124887A CN111124887A (zh) | 2020-05-08 |
CN111124887B true CN111124887B (zh) | 2022-06-03 |
Family
ID=70496582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911167171.2A Active CN111124887B (zh) | 2019-11-25 | 2019-11-25 | 一种risc-v debug系统的仿真验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111124887B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111881636B (zh) * | 2020-07-07 | 2021-05-04 | 广芯微电子(广州)股份有限公司 | 一种基于risc-v芯片的仿真调试方法及装置 |
CN116541310B (zh) * | 2023-07-05 | 2023-09-01 | 睿思芯科(深圳)技术有限公司 | Riscv处理器集成的调试开发系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105144308A (zh) * | 2012-12-13 | 2015-12-09 | Abb技术有限公司 | 高压设备和制造高压设备的方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7346821B2 (en) * | 2003-08-28 | 2008-03-18 | Texas Instrument Incorporated | IC with JTAG port, linking module, and off-chip TAP interface |
JP4526111B2 (ja) * | 2003-12-19 | 2010-08-18 | インターナショナル・ビジネス・マシーンズ・コーポレーション | マイクロコンピュータおよびデバッグ方法 |
CN103186458A (zh) * | 2011-12-29 | 2013-07-03 | 联芯科技有限公司 | 基于嵌入式操作系统的仿真调试系统及方法 |
US20180052203A1 (en) * | 2016-08-22 | 2018-02-22 | Prateek Sikka | Method for enabling cpu-jtag debugger connection or improving its performance for multi-clock designs running on fpga or emulation systems |
CN108664387B (zh) * | 2017-03-30 | 2021-07-23 | 龙芯中科技术股份有限公司 | 基于ejtag的mips处理器调试方法及系统 |
CN207440581U (zh) * | 2017-12-01 | 2018-06-01 | 广东高云半导体科技股份有限公司 | 一种fpga通用开发板 |
CN108400899A (zh) * | 2018-06-08 | 2018-08-14 | 山东超越数控电子股份有限公司 | 一种fpga的远程升级系统及方法 |
-
2019
- 2019-11-25 CN CN201911167171.2A patent/CN111124887B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105144308A (zh) * | 2012-12-13 | 2015-12-09 | Abb技术有限公司 | 高压设备和制造高压设备的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111124887A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111124887B (zh) | 一种risc-v debug系统的仿真验证方法 | |
US7171653B2 (en) | Systems and methods for providing communication between a debugger and a hardware simulator | |
US20190034318A1 (en) | Hardware-Software Co-Verification for Debugging Firmware on a Hardware Simulator | |
CN104077204A (zh) | 可重构的8位rsic单片机仿真器 | |
CN106155903B (zh) | 用于系统设计验证的装置和方法 | |
CN106598652B (zh) | FPGA环境下快速启动Linux内核的系统和启动方法 | |
CN105740139A (zh) | 一种基于虚拟环境的嵌入式软件调试方法 | |
CN111008508B (zh) | 一种接口类ip系统应用验证平台和验证方法 | |
US7711535B1 (en) | Simulation of hardware and software | |
CN102043654A (zh) | 一种基于TMS320VC55xx的DSP简易开发方法 | |
JP4910710B2 (ja) | プログラム作成装置 | |
CN214278732U (zh) | 一种可编程热网集中器 | |
WO2001084316A1 (en) | Rapid debugging method on rapid prototyping apparatus for complex embedded system | |
Rolfsmeier et al. | A new calibration system for ECU development | |
KR100294633B1 (ko) | 피엘씨의시뮬레이터 | |
CN111123084A (zh) | 一种基于tcl语言的数字电路快速测试方法 | |
CN114330178B (zh) | 一种嵌入式硬件电路调试验证的驱动系统 | |
CN113934192B (zh) | 一种车辆信息系统的模拟调试系统及方法 | |
US11921614B2 (en) | System and method for developing, testing and debugging software for microcontrollers | |
CN110244950B (zh) | 一种嵌入式汇编程序生成设备和方法 | |
Li et al. | Research of “Stub” remote debugging technique | |
CN114238088A (zh) | 一种应用于多核裸机系统的内建调试系统 | |
CN115203028A (zh) | 控制算法的验证设备、方法、系统及存储介质 | |
CN113297085A (zh) | 一种基于soc平台的算法验证方法及装置 | |
KR20000076780A (ko) | 복합 내장형 시스템을 위한 신속 프로토타이핑 장치 및그것을 이용한 신속 프로토타이핑 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |