CN109408388B - 一种VisualDSP++环境下外设读写模拟方法 - Google Patents
一种VisualDSP++环境下外设读写模拟方法 Download PDFInfo
- Publication number
- CN109408388B CN109408388B CN201811269317.XA CN201811269317A CN109408388B CN 109408388 B CN109408388 B CN 109408388B CN 201811269317 A CN201811269317 A CN 201811269317A CN 109408388 B CN109408388 B CN 109408388B
- Authority
- CN
- China
- Prior art keywords
- peripheral
- visualdsp
- dsp
- write
- address
- 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
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/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开一种VisualDSP++环境下外设读写模拟方法,通过构建外设读写模拟系统、在内部存储空间添加外设地址虚拟寄存器、在程序读写外设处插桩、在外设地址虚拟寄存器上建立观察点、获取外设读写时机和模拟外设接口数据步骤实现。本发明解决了在VisualDSP++环境下外设地址上的观察点不能触发DSP暂停问题。
Description
技术领域
本发明涉及一种IDE环境下的模拟方法,特别是一种VisualDSP++环境下外设读写模拟方法。
背景技术
VisualDSP++是控制软件典型的集成开发环境,由于控制软件的通讯、数据采集、时序控制功能通过读写接口外设地址实现,为实现控制软件闭环仿真运行,需要模拟外设接口功能,一般的外设模拟方法是通过集成开发环境调试运行控制软件的DSP程序,在外设地址上建立观察点,当程序读写接口外设地址时触发DSP暂停,向该地址注入激励数据以完成读外设操作模拟,或获取该地址的输出数据以完成写外设操作模拟。但是,VisualDSP++提供的观察点功能对外部存储空间范围的地址无效,程序读写外设地址无法触发DSP暂停,不能提供时机给用户进行外设数据模拟。
发明内容
本发明目的在于提供一种VisualDSP++环境下外设读写模拟方法,解决在VisualDSP++环境下外设地址上的观察点不能触发DSP暂停的问题。
一种VisualDSP++环境下外设读写模拟方法的具体步骤为:
第一步 构建VisualDSP++环境下外设读写模拟系统
VisualDSP++环境下外设读写模拟系统,包括:VisualDSP++控制模块和外设模拟模块。
VisualDSP++控制模块的功能为:设置外设地址虚拟寄存器、对程序进行插桩、编译生成目标码文件、设置观察点和获取外设模拟时机。
外设模拟模块的功能为:保存和注入外设接口数据。
第二步 VisualDSP++控制模块在内部存储空间添加外设地址虚拟寄存器
VisualDSP++控制模块分析DSP程序的内存映射文件,找出DSP程序未占用的两个内存地址,分别记为$PRA,$PWA。
第三步 VisualDSP++控制模块在程序读写外设处插桩
VisualDSP++控制模块在DSP程序读外设的代码块起始位置之前插入一段指令,将源外设地址保存到$PRA;在DSP程序写外设的代码块结束位置之后插入一段指令,将目的外设地址保存到$PWA。重新编译生成目标码文件。
第四步 VisualDSP++控制模块在外设地址虚拟寄存器上建立观察点
VisualDSP++控制模块加载DSP程序目标码文件,在$PRA上建立一个存储器观察点,触发类型设置为写触发,触发值为程序读外设代码块的源地址;在$PWA上建立一个存储器观察点,触发类型设置为写触发,触发值为程序写外设代码块的目的地址。
第五步 VisualDSP++控制模块获取外设读写时机
VisualDSP++控制模块将$PRA和$PWA地址单元的值清零后,记当前指令周期数为0,启动调试运行DSP程序。
VisualDSP++控制模块在DSP暂停时,读取当前指令周期数,利用VisualDSP++的内存查看功能读取$PRA和$PWA地址单元的值,当指令周期数发生变化且$PRA地址单元的值非零时,视为读外设事件;当指令周期数发生变化且$PWA地址单元的值非零时,视为写外设事件。
第六步 外设模拟模块模拟外设接口数据
外设模拟模块在读事件发生时,向DSP注入接口数据,然后将$PRA地址单元的值清零、将当前指令周期数更新为新的指令周期数;在写事件发生时,保存DSP输出接口数据,然后将$PWA地址单元的值清零,将当前指令周期数更新为新的指令周期数。
VisualDSP++环境下外设读写模拟方法通过在内部地址空间构造虚拟外设读写寄存器,利用VisualDSP++原有观察点机制触发DSP暂停,仅需要插入一条赋值语句,占用两个空闲地址单元,插桩代价和对程序的干扰极小。
具体实施方式
一种VisualDSP++环境下外设读写模拟方法的具体步骤为:
第一步 构建VisualDSP++环境下外设读写模拟系统
VisualDSP++环境下外设读写模拟系统,包括:VisualDSP++控制模块和外设模拟模块。
VisualDSP++控制模块的功能为:设置外设地址虚拟寄存器、对程序进行插桩、编译生成目标码文件、设置观察点和获取外设模拟时机。
外设模拟模块的功能为:保存和注入外设接口数据。
第二步 VisualDSP++控制模块在内部存储空间添加外设地址虚拟寄存器
VisualDSP++控制模块分析DSP程序的内存映射文件,找出DSP程序未占用的两个内存地址,分别记为$PRA,$PWA。
第三步 VisualDSP++控制模块在程序读写外设处插桩
VisualDSP++控制模块在DSP程序读外设的代码块起始位置之前插入一段指令,将源外设地址保存到$PRA;在DSP程序写外设的代码块结束位置之后插入一段指令,将目的外设地址保存到$PWA。重新编译生成目标码文件。
第四步 VisualDSP++控制模块在外设地址虚拟寄存器上建立观察点
VisualDSP++控制模块加载DSP程序目标码文件,在$PRA上建立一个存储器观察点,触发类型设置为写触发,触发值为程序读外设代码块的源地址;在$PWA上建立一个存储器观察点,触发类型设置为写触发,触发值为程序写外设代码块的目的地址。
第五步 VisualDSP++控制模块获取外设读写时机
VisualDSP++控制模块将$PRA和$PWA地址单元的值清零后,记当前指令周期数为0,启动调试运行DSP程序。
VisualDSP++控制模块在DSP暂停时,读取当前指令周期数,利用VisualDSP++的内存查看功能读取$PRA和$PWA地址单元的值,当指令周期数发生变化且$PRA地址单元的值非零时,视为读外设事件;当指令周期数发生变化且$PWA地址单元的值非零时,视为写外设事件。
第六步 外设模拟模块模拟外设接口数据
外设模拟模块在读事件发生时,向DSP注入接口数据,然后将$PRA地址单元的值清零,将当前指令周期数更新为新的指令周期数;在写事件发生时,保存DSP输出接口数据,然后将$PWA地址单元的值清零,将当前指令周期数更新为新的指令周期数。
Claims (3)
1.一种VisualDSP++环境下外设读写模拟方法,其特征在于具体步骤为:
第一步 构建VisualDSP++环境下外设读写模拟系统
VisualDSP++环境下外设读写模拟系统,包括:VisualDSP++控制模块和外设模拟模块;
第二步 VisualDSP++控制模块在内部存储空间添加外设地址虚拟寄存器
VisualDSP++控制模块分析DSP程序的内存映射文件,找出DSP程序未占用的两个内存地址,分别记为$PRA,$PWA;
第三步 VisualDSP++控制模块在程序读写外设处插桩
VisualDSP++控制模块在DSP程序读外设的代码块起始位置之前插入一段指令,将源外设地址保存到$PRA;在DSP程序写外设的代码块结束位置之后插入一段指令,将目的外设地址保存到$PWA;重新编译生成目标码文件;
第四步 VisualDSP++控制模块在外设地址虚拟寄存器上建立观察点
VisualDSP++控制模块加载DSP程序目标码文件,利用VisualDSP++的观察点设置功能在$PRA上建立一个存储器观察点,触发类型设置为写触发,触发值为程序读外设代码块的源地址;在$PWA上建立一个存储器观察点,触发类型设置为写触发,触发值为程序写外设代码块的目的地址;
第五步 VisualDSP++控制模块获取外设读写时机
VisualDSP++控制模块将$PRA和$PWA地址单元的值清零后,记当前指令周期数为0,启动调试运行DSP程序;
VisualDSP++控制模块在DSP暂停时,利用VisualDSP++的寄存器查看功能读取当前指令周期数,利用VisualDSP++的内存查看功能读取$PRA和$PWA地址单元的值,当指令周期数发生变化且$PRA地址单元的值非零时,视为读外设事件;当指令周期数发生变化且$PWA地址单元的值非零时,视为写外设事件;
第六步 外设模拟模块模拟外设接口数据
外设模拟模块在读事件发生时,向DSP注入接口数据,然后将$PRA地址单元的值清零,将当前指令周期数更新为新的指令周期数;在写事件发生时,保存DSP输出接口数据,然后将$PWA地址单元的值清零,将当前指令周期数更新为新的指令周期数。
2.根据权利要求1所述的一种VisualDSP++环境下外设读写模拟方法,其特征在于所述VisualDSP++控制模块的功能为:设置外设地址虚拟寄存器、对程序进行插桩、编译生成目标码文件、设置观察点、获取外设模拟时机。
3.根据权利要求1所述的一种VisualDSP++环境下外设读写模拟方法,其特征在于所述外设模拟模块的功能为:保存和注入外设接口数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811269317.XA CN109408388B (zh) | 2018-10-29 | 2018-10-29 | 一种VisualDSP++环境下外设读写模拟方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811269317.XA CN109408388B (zh) | 2018-10-29 | 2018-10-29 | 一种VisualDSP++环境下外设读写模拟方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109408388A CN109408388A (zh) | 2019-03-01 |
CN109408388B true CN109408388B (zh) | 2021-07-20 |
Family
ID=65469547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811269317.XA Active CN109408388B (zh) | 2018-10-29 | 2018-10-29 | 一种VisualDSP++环境下外设读写模拟方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109408388B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116108782B (zh) * | 2023-04-14 | 2023-07-25 | 此芯科技(上海)有限公司 | 一种mcu外设控制寄存器行为模拟方法与相关装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559157A (zh) * | 2013-11-14 | 2014-02-05 | 绵阳市维博电子有限责任公司 | 采集数据的传输方法、装置及系统 |
CN104021106A (zh) * | 2014-06-19 | 2014-09-03 | 哈尔滨工业大学 | 基于fpga的dsp中断扩展逻辑系统及中断扩展方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10146916B2 (en) * | 2015-11-17 | 2018-12-04 | Microsoft Technology Licensing, Llc | Tamper proof device capability store |
-
2018
- 2018-10-29 CN CN201811269317.XA patent/CN109408388B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559157A (zh) * | 2013-11-14 | 2014-02-05 | 绵阳市维博电子有限责任公司 | 采集数据的传输方法、装置及系统 |
CN104021106A (zh) * | 2014-06-19 | 2014-09-03 | 哈尔滨工业大学 | 基于fpga的dsp中断扩展逻辑系统及中断扩展方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109408388A (zh) | 2019-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8261130B2 (en) | Program code trace signature | |
US6901581B1 (en) | Method for software debugging via simulated re-execution of a computer program | |
CN102789416B (zh) | 面向bit软件测试的存储器故障注入方法及其模拟器 | |
CN103049375B (zh) | 一种摄像头在线调试方法 | |
CN108664380B (zh) | 一种带性能显示的执行后软件调试系统及调试方法 | |
US8997059B2 (en) | Reverse debugging | |
US9262299B1 (en) | Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system | |
US9898388B2 (en) | Non-intrusive software verification | |
US20140019806A1 (en) | Classifying processor testcases | |
US6247146B1 (en) | Method for verifying branch trace history buffer information | |
US7562258B2 (en) | Generation of trace elements within a data processing apparatus | |
US9262305B1 (en) | Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system | |
CN110543420B (zh) | 一种软件测试方法、系统、终端及存储介质 | |
Niemetz et al. | Model-Based API Testing for SMT Solvers. | |
CN106970280B (zh) | 一种智能卡断电测试的方法以及装置 | |
CN111221693A (zh) | 一种NOR flash配置模块验证方法、系统、装置和存储介质 | |
CN109408388B (zh) | 一种VisualDSP++环境下外设读写模拟方法 | |
US10802852B1 (en) | Method for interactive embedded software debugging through the control of simulation tracing components | |
CN106844221B (zh) | 一种实现虚拟验证系统覆盖率分析的方法 | |
CN104461859A (zh) | 一种支持nvm软断点调试的仿真器和方法 | |
US20110029953A1 (en) | System and Method for Scalable Handling of Debug Information | |
CN102023884A (zh) | 一种嵌入式系统开发程序校验码自动生成的方法 | |
CN113632067A (zh) | 利用跟踪代码的记录执行来仿真非跟踪代码 | |
CN107665169B (zh) | 处理器程序的测试方法和装置 | |
CN106055935A (zh) | 一种进程控制方法、装置及电子设备 |
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 |