CN114168259A - 虚拟芯片及虚拟芯片内串口外设的方法 - Google Patents
虚拟芯片及虚拟芯片内串口外设的方法 Download PDFInfo
- Publication number
- CN114168259A CN114168259A CN202111325977.7A CN202111325977A CN114168259A CN 114168259 A CN114168259 A CN 114168259A CN 202111325977 A CN202111325977 A CN 202111325977A CN 114168259 A CN114168259 A CN 114168259A
- Authority
- CN
- China
- Prior art keywords
- virtual
- serial port
- register
- data
- chip
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种虚拟芯片及虚拟芯片内串口外设的方法,其中虚拟芯片包括包括虚拟CPU及虚拟串口外设,虚拟串口外设包括模拟芯片串口外设的控制寄存器、数据寄存器及状态寄存器的虚拟控制寄存器、虚拟数据寄存器及虚拟状态寄存器,虚拟CPU可以对虚拟控制寄存器、虚拟数据寄存器及虚拟状态寄存器进行数据读写。根据上述技术方案的虚拟芯片,通过虚拟串口外设,结合电脑的串口实现对芯片真实串口的模拟,可以直接使用物理数据,实现虚拟设备和实物可以共用模型和应用层工具、软件,提升调试效率和便利性。
Description
技术领域
本发明属于芯片虚拟仿真技术领域,特别涉及一种虚拟芯片及虚拟芯片内串口外设的方法。
背景技术
嵌入式开发的编译器中集成了调试功能,然而调试环境中的接口偏底层,观察的数据变量都是机器视角,不能直接使用物理数据,使用不便利。现有的仿真软件提供数据给高级语言接口,通过读取文件等数据流,需要嵌入式软件适配接口,或提供变量地址,前者方法,嵌入式软件增加了控制任务之外的代码;后者方法,软件迭代变更则地址发生变化,需要查询新版软件变量地址,并更新,影响调试效率。
发明内容
发明目的:本发明的目的是提出一种虚拟芯片及虚拟芯片内串口外设的方法,通过虚拟串口外设直接模拟真实的串口通信过程,可以直接使用物理数据,实现虚拟设备和实物可以共用模型和应用层工具、软件,提升调试效率和便利性。
本发明的另一目的是提出一种虚拟芯片内串口外设的方法,可以实现真实芯片内串口外设的虚拟,增加嵌入式目标码在虚拟芯片中运行的真实性,调试的嵌入式软件目标码无需修改,不需要接口适配即可直接交付。
技术方案:本发明所述的虚拟芯片,包括虚拟CPU及虚拟串口外设,所述虚拟串口外设包括模拟芯片串口外设的控制寄存器、数据寄存器及状态寄存器的虚拟控制寄存器、虚拟数据寄存器及虚拟状态寄存器,所述虚拟CPU能对所述虚拟控制寄存器、所述虚拟数据寄存器及所述虚拟状态寄存器进行数据读写。
进一步的,所述虚拟CPU与所述虚拟串口外设并行运行。
进一步的,所述虚拟数据寄存器采用环形队列存储高速数据。
进一步的,所述虚拟CPU包括指令计数器,所述指令计数器用于记录虚拟芯片运行的指令数目。
进一步的,所述虚拟串口外设包括数据处理时钟,所述数据处理时钟用于记录虚拟串口外设的数据处理时间。
本发明所述的虚拟芯片内串口外设的方法,包括如下步骤:
S1:读取配置文件打开电脑的串口,并启动对应的虚拟串口外设;
S2:检查虚拟串口外设的虚拟控制寄存器和虚拟状态寄存器的值,判断是否更新虚拟CPU系统时间或虚拟串口外设的数据处理时钟;
S3:检测指令技术器的增量是否到达数据处理时钟对应的指令数目,若达到,则进行虚拟串口外设的数据处理任务;
S4:判断是否有中断请求,根据中断请求跳转相应服务程序。
进一步,所述S2步骤包括:
S2.1:检查虚拟串口外设的控制寄存器值,当控制寄存器值发生变化时,根据位域定义,模拟实现设置电脑串口的波特率、奇偶校验、数据位和停止位的功能,并根据波特率计算接收一个字节所需的时间,更新数据处理时钟的值。
进一步,所述S3步骤还包括:
S3.1:检查虚拟数据寄存器值是否变化,若发生变化且虚拟控制寄存器使能串口发送,且电脑串口是打开状态,则将写入虚拟数据寄存器的数据通过电脑串口直接发送;
S3.2:若虚拟控制寄存器使能串口接收,且电脑串口是打开状态,则从接收数据环形队列中弹出一个字节设置到虚拟数据寄存器中,并设置虚拟状态寄存器的接收标志位为1;同时,若虚拟控制寄存器中使能接收中断,则发送接收中断请求到虚拟CPU。
进一步,所述S3步骤还包括:
S3.3:检查虚拟状态寄存器的值,根据虚拟状态寄存器变化前后的值,清除标志或中断状态。
有益效果:与现有技术相比,本发明具有如下优点:具有与真实芯片内串口外设运行一致的虚拟串口外设,可以直接使用物理数据,调试的嵌入式软件目标码可以保持与交付时一致,不需要接口适配。
附图说明
图1为本发明实施例的虚拟芯片的原理框图;
图2为本发明实施例的虚拟芯片内串口外设的方法的流程图。
具体实施方式
下面结合附图对本发明的技术方案作进一步说明。
参照图1,根据本发明实施例的虚拟芯片,包括CPU和虚拟串口外设。其中虚拟串口外设包括模拟芯片串口外设的控制寄存器、数据寄存器及状态寄存器的虚拟控制寄存器、虚拟数据寄存器及虚拟状态寄存器,虚拟CPU可以对虚拟控制寄存器、虚拟数据寄存器及虚拟状态寄存器进行数据读写。虚拟控制寄存器包含真实串口外设的控制寄存器的各控制设置微,如串口通讯参数的设置位,串口的通讯参数的信息,以及接受或发送中断使能及数据接收或发送使能位等。虚拟数据寄存器用于暂存接收或者需要发送的数据,虚拟状态寄存器则包括真实串口外设的状态寄存器的各状态指示位,如数据接收或发送,中断标志位等。虚拟CPU通过与虚拟数据寄存器中的数据同步,模拟对外部数据的发送及接收,并可以通过访问设置虚拟控制寄存器及虚拟状态寄存器,获取虚拟串口外设的状态,以及配置虚拟串口的工作参数。
根据上述技术方案的虚拟芯片,虚拟串口外设模拟真实串口作为虚拟CPU和电脑的桥梁,模拟真实芯片与外设的串口通讯。将需要调试的嵌入式目标码在上述虚拟芯片中运行,嵌入式软件能通过虚拟串口外设与接口层软件或者电脑实体串口进行数据的读写或收发,相对于传统的额外编写控制代码将数据流直接写入到嵌入式软件的变量地址,本技术方案能为嵌入式软件的调试提供更接近真实硬件的环境,并且具有较好的可移植性。同时由于虚拟串口外设工作方式与真实芯片串口外设相同,无需额外撰写调试代码,调试的目标码可以直接用于实物,调试完毕后可以直接交付。同时还可以测试故障注入,验证偶发奇偶校验错误,中断阻塞及电磁干扰等芯片内串口外设故障。
在本实施例中,虚拟串口外设与虚拟CPU并行运行,虚拟串口外设可以视为虚拟芯片的一个组件,可以通过加载数量设置虚拟芯片的串口数量。同时为了解决虚拟CPU速度比真实芯片速度慢的问题,虚拟串口外设的虚拟数据寄存器在数据处理任务中通过环形队列存储高速数据,环形队列作为高速数据的缓冲区。虚拟CPU还包括指令计数器,指令计数器用于记录虚拟芯片运行的指令数目,虚拟串口外设还包括数据处理时钟,数据处理时钟用于记录虚拟串口外设的数据处理时间。
参照图2,在本实施例中,虚拟芯片可以通过如下方法虚拟芯片内串口,对嵌入式目标码进行调试:
S1:读取配置文件打开电脑的串口,并启动对应的虚拟串口外设;
S2:检查虚拟串口外设的虚拟控制寄存器和虚拟状态寄存器的值,判断是否更新虚拟CPU系统时间或虚拟串口外设的数据处理时钟;
S3:检测指令技术器的增量是否到达数据处理时钟对应的指令数目,若达到,则进行虚拟串口外设的数据处理任务;
S4:判断是否有中断请求,根据中断请求跳转相应服务程序。
其中步骤S1中的配置文件可以为虚拟串口外设对应的电脑串口的通道号,在模拟对串口外设操作是,通过对电脑串口的操作来模拟设置波特率、收发数据等功能。
在步骤S2中,当虚拟控制寄存器ESCIx_CRn值发生变化时,根据虚拟控制寄存器ESCIx_CRn的位阈定义,设置对应电脑串口的波特率、奇偶校验、数据位和停止位。并根据波特率计算接收一个字节所需的时间,存储于数据处理时钟内。
如寄存器regs.ESCIa_CR1.bit.PE,该比特位指是否有奇偶校验,则根据该值设置对应电脑串口的奇偶校验。
具体实施时,在计算波特率时,允许容错范围使用标准波特率打开电脑串口。如计算的波特率在[115200*0.95,115200*1.05]范围内,都使用波特率115200bps。
具体实施时,根据波特率计算接收一个字节所需的时间,为了模拟串口接收数据,设置一个虚拟芯片内串口外设的数据处理任务,间隔时间为接收一个字节的时间。如串口设置“115200bps,n,8,1”,则接收一个字节需要86.81us。再根据芯片系统时钟如100MHz,计算出定时等价于执行8681条指令。从而设置每运行8681条指令,从环形队列中接收1字节的数据。这是为了解决速度不匹配而设计的缓冲措施。外部接口实时性高,响应时间快;而虚拟CPU运行时间比实际慢。因此采取了接收到实际外部实体串口数据时,先存放在缓冲区中。虚拟CPU根据执行指令的条数,从缓冲区中读取一个数据。
当虚拟数据寄存器ESCIx_DR的值发生变化时,说明有数据需要发送,此时若虚拟控制寄存器ESCIx_CRn的芯片串口发送使能,且对应电脑串口是打开状态,则将写入虚拟数据寄存器ESCIx_DR的值通过对应的电脑串口发送,发送给外部设备或者回绕到另一电脑的另一串口,传递给接口层软件。
当虚拟控制寄存器ESCIx_CRn的芯片串口接收使能,则说明有数据需要接收,且电脑串口是打开状态,则从接收数据环形队列中弹出一个字节,设置到虚拟数据寄存器ESCIx_DR中,并设置虚拟状态寄存器ESCIx_SR的接收标志位为1。若此时虚拟控制寄存器ESCIx_CRn中使能接收中断,则发送接收中断请求给虚拟CPU,虚拟CPU执行接收中断任务将虚拟数据寄存器ESCIx_DR中的数据同步到嵌入式目标码的对应地址中。实际中,若数据环形队列中未弹出字节,则直接跳出。环形队列的大小需要考虑余量,一般设置为最大接收长度的4倍,外部数据的周期与虚拟CPU速度与真实时间的比值需要进行等比例放大,以减少匹配误差。
执行完数据处理任务后,检查虚拟状态寄存器ESCIx_SR的值,清除需要清除的标志位或中断状态。
Claims (9)
1.一种虚拟芯片,其特征在于,包括虚拟CPU及虚拟串口外设,所述虚拟串口外设包括模拟芯片串口外设的控制寄存器、数据寄存器及状态寄存器的虚拟控制寄存器、虚拟数据寄存器及虚拟状态寄存器,所述虚拟CPU能对所述虚拟控制寄存器、所述虚拟数据寄存器及所述虚拟状态寄存器进行数据读写。
2.根据权利要求1所述的虚拟芯片,其特征在于,所述虚拟CPU与所述虚拟串口外设并行运行。
3.根据权利要求1所述的虚拟芯片,其特征在于,所述虚拟数据寄存器采用环形队列存储高速数据。
4.根据权利要求1所述的虚拟芯片,其特征在于,所述虚拟CPU包括指令计数器,所述指令计数器用于记录虚拟芯片运行的指令数目。
5.根据权利要求1所述的虚拟芯片,其特征在于,所述虚拟串口外设包括数据处理时钟,所述数据处理时钟用于记录虚拟串口外设的数据处理时间。
6.一种虚拟芯片内串口外设的方法,其特征在于,包括如下步骤:
S1:读取配置文件打开电脑的串口,并启动对应的虚拟串口外设;
S2:检查虚拟串口外设的虚拟控制寄存器和虚拟状态寄存器的值,判断是否更新虚拟CPU系统时间或虚拟串口外设的数据处理时钟;
S3:检测指令技术器的增量是否到达数据处理时钟对应的指令数目,若达到,则进行虚拟串口外设的数据处理任务;
S4:判断是否有中断请求,根据中断请求跳转相应服务程序。
7.根据权利要求6所述的虚拟芯片内串口外设的方法,其特征在于,所述S2步骤包括:
S2.1:检查虚拟串口外设的控制寄存器值,当控制寄存器值发生变化时,根据位域定义,模拟实现设置电脑串口的波特率、奇偶校验、数据位和停止位的功能,并根据波特率计算接收一个字节所需的时间,更新数据处理时钟的值。
8.根据权利要求6所述的虚拟芯片内串口外设的方法,其特征在于,所述S3步骤还包括:
S3.1:检查虚拟数据寄存器值是否变化,若发生变化且虚拟控制寄存器使能串口发送,且电脑串口是打开状态,则将写入虚拟数据寄存器的数据通过电脑串口直接发送;
S3.2:若虚拟控制寄存器使能串口接收,且电脑串口是打开状态,则从接收数据环形队列中弹出一个字节设置到虚拟数据寄存器中,并设置虚拟状态寄存器的接收标志位为1;同时,若虚拟控制寄存器中使能接收中断,则发送接收中断请求到虚拟CPU。
9.根据权利要求6所述的虚拟芯片内串口外设的方法,其特征在于,所述S3步骤还包括:
S3.3:检查虚拟状态寄存器的值,根据虚拟状态寄存器变化前后的值,清除标志或中断状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111325977.7A CN114168259A (zh) | 2021-11-10 | 2021-11-10 | 虚拟芯片及虚拟芯片内串口外设的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111325977.7A CN114168259A (zh) | 2021-11-10 | 2021-11-10 | 虚拟芯片及虚拟芯片内串口外设的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114168259A true CN114168259A (zh) | 2022-03-11 |
Family
ID=80478561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111325977.7A Pending CN114168259A (zh) | 2021-11-10 | 2021-11-10 | 虚拟芯片及虚拟芯片内串口外设的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114168259A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116108782A (zh) * | 2023-04-14 | 2023-05-12 | 此芯科技(上海)有限公司 | 一种mcu外设控制寄存器行为模拟方法与相关装置 |
-
2021
- 2021-11-10 CN CN202111325977.7A patent/CN114168259A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116108782A (zh) * | 2023-04-14 | 2023-05-12 | 此芯科技(上海)有限公司 | 一种mcu外设控制寄存器行为模拟方法与相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zaddach et al. | AVATAR: A Framework to Support Dynamic Security Analysis of Embedded Systems' Firmwares. | |
EP0762280B1 (en) | Data processor with built-in emulation circuit | |
US5737516A (en) | Data processing system for performing a debug function and method therefor | |
US5964893A (en) | Data processing system for performing a trace function and method therefor | |
US6859891B2 (en) | Apparatus and method for shadowing processor information | |
WO2021057057A1 (zh) | 操作系统级程序的目标码覆盖率测试方法、系统及介质 | |
EP1091298B1 (en) | Interface for transferring debug information | |
US6247146B1 (en) | Method for verifying branch trace history buffer information | |
US8037363B2 (en) | Generation of trace elements within a data processing apparatus | |
US20060255981A1 (en) | Paced Trace Transmission | |
CN105204393A (zh) | 基于虚核单片机的单片机生产研发工具及其实现方法 | |
Li et al. | From library portability to para-rehosting: Natively executing microcontroller software on commodity hardware | |
EP0942373B1 (en) | Adapter device with a local memory and method for processor emulation | |
CN102841837B (zh) | 一种基于模拟器的软硬件协同验证方法及系统 | |
US20100280817A1 (en) | Direct pointer access and xip redirector for emulation of memory-mapped devices | |
CN114168259A (zh) | 虚拟芯片及虚拟芯片内串口外设的方法 | |
Xue et al. | Androidperf: A cross-layer profiling system for android applications | |
US9348723B2 (en) | Method, system, and computer program product | |
US11809353B2 (en) | Component firmware interaction using hardware registers | |
US8707267B1 (en) | Debugging a computer program by interrupting program execution in response to access of unused I/O port | |
Simulator | Technical Reference | |
US10445218B2 (en) | Execution of graphic workloads on a simulated hardware environment | |
EP0942371A1 (en) | Debugging method for a microcomputer | |
Muench | Dynamic binary firmware analysis: challenges & solutions | |
CN112285542A (zh) | 一种面向fpga外部接口逻辑的调试与测试方法 |
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 |