CN103677953A - 可设置程序指针值的仿真器 - Google Patents
可设置程序指针值的仿真器 Download PDFInfo
- Publication number
- CN103677953A CN103677953A CN201210362728.XA CN201210362728A CN103677953A CN 103677953 A CN103677953 A CN 103677953A CN 201210362728 A CN201210362728 A CN 201210362728A CN 103677953 A CN103677953 A CN 103677953A
- Authority
- CN
- China
- Prior art keywords
- value
- emulator
- emulation chip
- program
- processor core
- 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.)
- Pending
Links
- 238000012544 monitoring process Methods 0.000 claims abstract description 18
- 238000011161 development Methods 0.000 claims abstract description 12
- 238000004891 communication Methods 0.000 claims description 10
- 238000000151 deposition Methods 0.000 claims description 3
- 238000000034 method Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 abstract description 20
- 238000013461 design Methods 0.000 abstract description 11
- 238000013500 data storage Methods 0.000 abstract 1
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000004088 simulation Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种可设置程序指针值的仿真器,包括:仿真芯片,调试模块,存储器;存储器内具有用户程序和数据存储器区和监控程序存储器区;调试模块控制仿真芯片处于监控模式或者用户模式,在监控模式下控制仿真芯片执行监控程序存储器区内相应地址处的程序;其中,在监控程序存储器区内存储有修改PC值监控程序,当执行该修改PC值监控程序的返回语句后,当前PC值自动变成堆栈内存放的地址值。本发明在仿真芯片的处理器核不支持写PC值指令的情况下,仿真器也可以提供修改PC值的调试功能;在提高调试用户程序效率的同时,降低仿真调试功能实现对处理器核功能的依赖,降低仿真芯片开发复杂性和成本,提高仿真器设计的通用性。
Description
技术领域
本发明涉及一种处理器芯片仿真器,具体而言是涉及一种可设置程序指针值的仿真器。
背景技术
处理器芯片内有用户开发的用户程序,在用户程序的编写和调试中,所使用的工具一般是处理器芯片仿真器。仿真器内使用包含产品处理器芯片各项功能的仿真芯片,用于模拟产品处理器芯片的工作行为,在功能和性能上均十分接近产品处理器芯片;仿真芯片与仿真器主机配合实现用户程序的仿真运行和各项调试功能。因此,仿真芯片一般都是在产品芯片基础上设计的,在沿用产品芯片几乎所有功能模块、处理器核的同时,去除一些与用户程序调试无关的模块,例如安检模块等,去除存储器(存储器在仿真器上外挂,包括程序和数据存储器)引出读写存储器的标准数据/地址总线,增加一个仿真芯片与仿真器通信和导出仿真芯片内数据用的仿真通信通道,以及一些实现仿真调试功能的模块(仿真模块)。在停止执行用户程序时,仿真器处于监控模式,仿真芯片上的仿真模块、仿真通信通道才工作,配合仿真器实现各种仿真调试功能。在执行用户程序时,仿真器处于运行模式,仿真芯片上的仿真模块、仿真通信通道都对用户程序不可见,用户程序与在产品芯片上运行时功能基本一致。为避免与产品芯片发生功能不一致,仿真芯片的处理器核设计完全沿用产品芯片处理器核设计,不会去做修改,因此不能支持产品芯片处理器核不支持的指令。
程序指针(Program Counter,简称PC)值是用户程序执行以及在仿真器上仿真调试时非常重要的一个参数,它表示下一条将要执行的用户程序语句的位置,即PC值指示的用户程序地址就是下一条将被执行的用户程序语句。修改PC值是仿真器一项非常实用的调试功能,使用户可以通过设置当前PC值,控制仿真芯片下一条执行哪个程序地址处的程序语句。在现有仿真器和仿真芯片中,这一功能需要处理器核支持,处理器核需要支持写PC值的指令,即处理器核可以通过执行程序语句修改PC值,仿真器可以在监控模式下,由仿真芯片执行写PC值的指令把PC值修改为用户设定值。产品芯片处理器核不支持写PC值的指令的话,那么如果在设计仿真芯片时不修改处理器核设计,则仿真器就不能支持修改PC值的调试功能了;如果在设计仿真芯片时修改处理器核设计,增加写PC值的指令,由于修改了处理器核设计为保证修改后的正确性,以及仿真芯片在功能上与产品芯片的一致性,则需要重新对仿真芯片的处理器核部分做验证和测试。这一工作十分耗时耗力,而且如果产品处理器核部分是硬核(即芯片厂商无法修改),那么也就无法通过修改处理器核设计增加写PC值的指令,来使对应仿真器和仿真芯片支持修改PC值的调试功能了。
发明内容
本发明要解决的技术问题是提供一种可设置程序指针值的仿真器,即使仿真芯片的处理器核不支持写PC值指令,也可以修改PC值。
为解决上述技术问题,本发明的可设置程序指针值的仿真器,包括:仿真芯片,调试模块,存储器;
所述仿真芯片通过调试通道与调试模块相连接;所述仿真芯片内具有与产品芯片一致的处理器核;该处理器核与存储器和调试模块之间通过数据/地址总线相连接;
所述存储器内具有用户程序和数据存储器区和监控程序存储器区;
所述调试模块控制仿真芯片处于监控模式或者用户模式,在监控模式下控制仿真芯片执行所述监控程序存储器区内相应地址处的程序;
其中:在所述监控程序存储器区内存储有修改程序指针PC值监控程序,当执行该修改程序指针PC值监控程序的返回语句后,当前程序指针PC值自动变成堆栈内存放的地址值。
所述调试模块通过所述标准数据/地址总线修改存储器内监控程序存储器区的监控程序语句。
所述仿真芯片的处理器核在用户模式下,通过所述标准数据/地址总线从存储器的用户程序和数据存储器区读取并执行用户程序及读写用户数据;在用户模式下该处理器核不能访问存储器的监控程序存储器区。
所述仿真芯片的处理器核在监控模式下,通过所述标准数据/地址总线从存储器的监控程序存储器区读取并执行监控程序;在监控模式下该处理器核不能访问存储器的用户程序和数据存储器区。
还包括位于用户电脑上的集成开发环境模块,所述调试模块通过通信通道与集成开发环境模块相连接,该调试模块通过所述通信通道从集成开发环境模块接收指令和参数。
采用本发明的仿真器,即使仿真芯片的处理器核不支持写PC值指令,所实现的仿真器中仿真芯片也不需要修改处理器核,增加对写PC值指令的支持,仿真器也可以提供修改PC值的调试功能。在提供了实用调试功能提高调试用户程序效率的同时,有助于降低仿真调试功能实现对处理器核功能(写PC值)的依赖,避免修改处理器核设计,降低仿真芯片开发复杂性和成本,提高仿真器设计的通用性。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细的说明:
附图是所述可设置程序指针值的仿真器一实施例结构示意图。
具体实施方式
参见附图所示,所述可设置程序指针值的仿真器1在本实施例中,包括仿真芯片3,调试模块5,存储器6,以及用户电脑上的集成开发环境2。仿真芯片3通过调试通道9与调试模块5连接。仿真芯片3内有与产品芯片一致的处理器核4。存储器6内有两个地址区域,分别是用户程序和数据存储器区7,监控程序存储器区8。调试模块5通过所述调试通道9控制仿真芯片3处于监控模式或者用户模式。在监控模式下调试模块5控制仿真芯片3执行存储器6内监控程序存储器区8某一地址处的程序。
监控程序存储器区8内有用于实现修改PC值的一段修改PC值监控程序,这段修改PC值监控程序包括压栈(PUSH地址A),返回(RETURN)两条程序语句。返回语句具有这样的特性,在执行后,当前程序PC值就自动变成堆栈内存放的地址值。
仿真器1上有一个标准数据/地址总线10连接仿真芯片3的处理器核4、存储器6和调试模块5。调试模块5通过所述标准数据/地址总线10修改存储器6内监控程序存储器区8的监控程序语句。
仿真芯片3的处理器核4在用户模式下,通过所述标准数据/地址总线10从存储器6的用户程序和数据存储器区7读取、执行用户程序及读写用户数据。在用户模式下,仿真芯片3不能访问存储器6的监控程序存储器区8。
仿真芯片3的处理器核4在监控模式下,通过所述标准数据/地址总线10从存储器6的监控程序存储器区8读取、执行监控程序。在监控模式下仿真芯片3不能访问存储器6的用户程序和数据存储器区7。
调试模块5通过通信通道11与集成开发环境模块2连接,调试模块5通过所述通信通道11从集成开发环境模块2接收指令和参数。
这样,用户在集成开发环境模块2上设置PC值时,集成开发环境模块2把写PC值指令和目标PC值(用户程序中的地址B)通过通信通道11传给调试模块5。调试模块5通过标准数据/地址总线10修改监控程序存储器区8内修改PC值监控程序中压栈语句,把压栈语句的参数——地址值A改成地址B。调试模块5通过调试通道9控制仿真芯片3进入监控模式,仿真芯片3的处理器核4通过标准数据/地址总线10执行监控程序存储器区8内修改PC值监控程序,然后,调试模块5再控制仿真芯片3切换到用户模式。由于仿真芯片3的处理器核4在监控模式下执行修改PC值监控程序,执行压栈语句把处理器核4堆栈内的地址值改成了目标地址B,执行返回语句后,当前PC值就变成了地址B。这样,就完成了用户程序PC值的修改。
所述可设置程序指针值的仿真器1,即使仿真芯片的处理器核不支持写PC值指令,也可以提供修改PC值的调试功能,能设置程序指针值。
以上通过具体实施方式和实施例对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。
Claims (6)
1.一种可设置程序指针值的仿真器,包括:仿真芯片,调试模块,存储器;所述仿真芯片通过调试通道与调试模块相连接;所述仿真芯片内具有与产品芯片一致的处理器核;该处理器核与存储器和调试模块之间通过数据/地址总线相连接;
所述存储器内具有用户程序和数据存储器区和监控程序存储器区;
所述调试模块控制仿真芯片处于监控模式或者用户模式,在监控模式下控制仿真芯片执行所述监控程序存储器区内相应地址处的程序;
其特征在于:在所述监控程序存储器区内存储有修改程序指针PC值监控程序,当执行该修改程序指针PC值监控程序的返回语句后,当前程序指针PC值自动变成堆栈内存放的地址值。
2.如权利要求1所述的仿真器,其特征在于:所述调试模块通过所述数据/地址总线修改存储器内监控程序存储器区的监控程序语句。
3.如权利要求1所述的仿真器,其特征在于:所述仿真芯片的处理器核在用户模式下,通过所述数据/地址总线从存储器的用户程序和数据存储器区读取并执行用户程序及读写用户数据;在用户模式下该处理器核不能访问存储器的监控程序存储器区。
4.如权利要求1所述的仿真器,其特征在于:所述仿真芯片的处理器核在监控模式下,通过所述数据/地址总线从存储器的监控程序存储器区读取并执行监控程序;在监控模式下该处理器核不能访问存储器的用户程序和数据存储器区。
5.如权利要求1所述的仿真器,其特征在于:所述修改程序指针PC值监控程序包括压栈,返回两条程序语句。
6.如权利要求1-5任一所述的仿真器,其特征在于:还包括位于用户电脑上的集成开发环境模块,所述调试模块通过通信通道与集成开发环境模块相连接,该调试模块通过所述通信通道从集成开发环境模块接收指令和和参数。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201210362728.XA CN103677953A (zh) | 2012-09-25 | 2012-09-25 | 可设置程序指针值的仿真器 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201210362728.XA CN103677953A (zh) | 2012-09-25 | 2012-09-25 | 可设置程序指针值的仿真器 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN103677953A true CN103677953A (zh) | 2014-03-26 |
Family
ID=50315610
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201210362728.XA Pending CN103677953A (zh) | 2012-09-25 | 2012-09-25 | 可设置程序指针值的仿真器 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN103677953A (zh) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN106528414A (zh) * | 2016-11-03 | 2017-03-22 | 上海华虹集成电路有限责任公司 | 处理器芯片仿真器 |
| CN110109793A (zh) * | 2019-05-30 | 2019-08-09 | 上海市信息网络有限公司 | 用于调测设备安检状态的仿真调试装置及仿真调试方法 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101042672A (zh) * | 2007-04-24 | 2007-09-26 | 上海华龙信息技术开发中心 | 一种应用于数字信号处理器的高速仿真器及其操作方法 |
| CN101206614A (zh) * | 2006-12-20 | 2008-06-25 | 上海华虹集成电路有限责任公司 | 仿真特殊功能寄存器的仿真器 |
| CN101751323A (zh) * | 2008-11-28 | 2010-06-23 | 上海华虹集成电路有限责任公司 | 微处理器芯片仿真器及断点设置的方法 |
| CN101968764A (zh) * | 2009-07-27 | 2011-02-09 | 上海华虹集成电路有限责任公司 | 具有断点功能的仿真器 |
| CN102467446A (zh) * | 2010-11-11 | 2012-05-23 | 上海华虹集成电路有限责任公司 | 可设置程序指针值的处理器芯片仿真器 |
-
2012
- 2012-09-25 CN CN201210362728.XA patent/CN103677953A/zh active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101206614A (zh) * | 2006-12-20 | 2008-06-25 | 上海华虹集成电路有限责任公司 | 仿真特殊功能寄存器的仿真器 |
| CN101042672A (zh) * | 2007-04-24 | 2007-09-26 | 上海华龙信息技术开发中心 | 一种应用于数字信号处理器的高速仿真器及其操作方法 |
| CN101751323A (zh) * | 2008-11-28 | 2010-06-23 | 上海华虹集成电路有限责任公司 | 微处理器芯片仿真器及断点设置的方法 |
| CN101968764A (zh) * | 2009-07-27 | 2011-02-09 | 上海华虹集成电路有限责任公司 | 具有断点功能的仿真器 |
| CN102467446A (zh) * | 2010-11-11 | 2012-05-23 | 上海华虹集成电路有限责任公司 | 可设置程序指针值的处理器芯片仿真器 |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN106528414A (zh) * | 2016-11-03 | 2017-03-22 | 上海华虹集成电路有限责任公司 | 处理器芯片仿真器 |
| CN106528414B (zh) * | 2016-11-03 | 2018-12-11 | 上海华虹集成电路有限责任公司 | 处理器芯片仿真器 |
| CN110109793A (zh) * | 2019-05-30 | 2019-08-09 | 上海市信息网络有限公司 | 用于调测设备安检状态的仿真调试装置及仿真调试方法 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN105975816B (zh) | 移动终端下基于虚拟技术的代码保护方法及系统 | |
| CN107907814B (zh) | 一种提高芯片量产测试效率的方法 | |
| WO2016197711A1 (zh) | 一种配置寄存器的方法和装置 | |
| CN105740139B (zh) | 一种基于虚拟环境的嵌入式软件调试方法 | |
| CN102467446A (zh) | 可设置程序指针值的处理器芯片仿真器 | |
| CN102768331B (zh) | 一种otp型的mcu测试装置及其测试方法 | |
| CN104461859B (zh) | 一种支持nvm软断点调试的仿真器和方法 | |
| CN103677953A (zh) | 可设置程序指针值的仿真器 | |
| CN103729202A (zh) | 一种基于gel脚本的dsp可靠在线flash烧写方法 | |
| CN106528414B (zh) | 处理器芯片仿真器 | |
| CN104346207A (zh) | 仿真器 | |
| CN102566481A (zh) | 一种基于c语言的plc控制系统及其实现方法 | |
| CN105573924A (zh) | 仿真系统 | |
| CN101968763B (zh) | 高速处理器芯片仿真器 | |
| CN107577520B (zh) | 带有非易失性存储器的处理器芯片仿真器 | |
| CN106249666A (zh) | 一种基于数字通讯的在线调参系统及方法 | |
| CN102467444A (zh) | 特殊功能寄存器的仿真调试系统 | |
| CN103678073A (zh) | 仿真系统 | |
| CN104346484A (zh) | 带非易失性存储器的处理器芯片仿真器 | |
| CN103207823B (zh) | 一种处理器芯片仿真器 | |
| CN111123084B (zh) | 一种基于tcl语言的数字电路快速测试方法 | |
| CN104346208B (zh) | 仿真器系统及仿真芯片 | |
| CN104142886B (zh) | Arm汇编代码调试处理方法及装置 | |
| CN105045647B (zh) | 一种支持nvm快速页编程的仿真器 | |
| CN108121625A (zh) | 出错时获取数据的方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| WD01 | Invention patent application deemed withdrawn after publication | ||
| WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140326 |