一种基于spi协议的动态调试方法、装置及系统

文档序号:1286917 发布日期:2020-08-28 浏览:8次 >En<

阅读说明:本技术 一种基于spi协议的动态调试方法、装置及系统 (Dynamic debugging method, device and system based on SPI protocol ) 是由 许伟明 胡胜发 于 2020-04-07 设计创作,主要内容包括:本发明公开了一种基于SPI协议的动态调试方法,步骤包括:采用SPI协议与主机端建立通讯连接,并接收来自主机端的指令;根据主机端发送的指令,通过AHB协议与系统芯片进行通信并对所述系统芯片进行数据写入或信息读取;当完成数据写入或信息读取后,将系统芯片的内部信息发送给主机端。本发明提供了一种基于SPI协议的动态调试方法、装置及系统,能够在芯片正常运行期间,获取芯片内部运行的相关信息,动态调试芯片的软件运行程序。(The invention discloses a dynamic debugging method based on an SPI protocol, which comprises the following steps: establishing communication connection with a host computer end by adopting an SPI protocol, and receiving an instruction from the host computer end; according to an instruction sent by a host, communicating with a system chip through an AHB protocol and writing data or reading information into the system chip; and after finishing data writing or information reading, sending the internal information of the system chip to the host end. The invention provides a dynamic debugging method, a device and a system based on an SPI protocol, which can acquire relevant information of internal operation of a chip and dynamically debug a software operation program of the chip during the normal operation of the chip.)

一种基于SPI协议的动态调试方法、装置及系统

技术领域

本发明涉及计算机技术领域,尤其是涉及一种基于SPI协议的动态调试方法、装置及系统。

背景技术

SOC为包含处理器、存储器和片上逻辑的集成电路。现有SOC调试的方案多采用JTAG(Joint Test Action Group),JTAG是联合测试工作组(Joint Test Action Group)的简称,是在名为标准测试访问端口和边界扫描结构的IEEE的标准1149.1的常用名称,此标准用于验证设计与测试生产出的印刷电路板功能。但JTAG的使用并非动态的,SOC系统的运行是受控制的。使用JTAG的软件调试需要采用单步、多步或断点的形式,而不能让软件一直运行同时获取SOC的内部信息。

发明内容

针对上述技术问题,本发明提供了一种基于SPI协议的动态调试方法、装置及系统,能够在芯片正常运行期间,获取芯片内部运行的相关信息,动态调试芯片的软件运行程序。

为了解决上述问题,本发明实施例提供了一种基于SPI协议的动态调试方法,步骤包括:

采用SPI协议与主机端建立通讯连接,并接收来自主机端的指令;

根据主机端发送的指令,通过AHB协议与系统芯片进行通信并对所述系统芯片进行数据写入或信息读取;

当完成数据写入或信息读取后,将系统芯片的内部信息发送给主机端。

作为优选方案,所述的基于SPI协议的动态调试方法,在开始操作之前,还包括:

响应主机端发送的读状态寄存器指令,通过读取状态寄存器查询调试状态,并且将调试状态信息反馈到主机端。

作为优选方案,根据主机端发送的指令对系统芯片进行信息读取,具体为:

根据主机端发送的指令,配置AHB读操作的基地址并执行读取系统芯片信息的操作;

完成读取系统芯片信息的操作并且当查询到调试状态处于非繁忙状态时,响应主机端发送的SPI读动态模块数据的指令,将读取系统芯片所得的系统芯片内部信息发送给主机端。

作为优选方案,根据主机端发送的指令对系统芯片进行数据写入,具体为:

根据主机端发送的指令,配置AHB写操作的基地址;

当查询到调试状态处于非繁忙状态时,响应主机端发送的AHB写操作的数据写入指令,对系统芯片执行数据写入操作。

作为优选方案,所述采用SPI协议与主机端建立通讯连接,并接收来自主机端的指令,还包括:

接收到清除状态寄存器指令后清除动态调试模块的错误位。

为了解决相同的技术问题,本发明实施例提供了一种基于SPI协议的动态调试装置,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的基于SPI协议的动态调试方法。

此外,本发明实施例提供了一种基于SPI协议的动态调试系统,包括主机端、动态调试模块、系统芯片;

所述主机端,用于输入指令、显示动态调试模块和系统芯片的信息;

所述动态调试模块,用于采用SPI协议与主机端建立通讯连接,并接收来自主机端的指令;根据主机端发送的指令,通过AHB协议与系统芯片进行通信并对所述系统芯片进行数据写入或信息读取;当完成数据写入或信息读取后,将系统芯片的内部信息发送给主机端。

作为优选方案,所述主机端可用于输入的指令包括读动态调试模块状态寄存器的指令、AHB读操作的地址写入指令、AHB写操作的地址写入指令、SPI读动态调试模块数据的指令、AHB写操作的数据写入指令、SPI读CPU信息0的读取指令、SPI读CPU信息1的读取指令、SPI读CPU信息2的读取指令和清除动态调试模块状态寄存器的清除指令。

作为优选方案,所述动态调试模块包括SPI读写接口、AHB协议的通讯接口和用于查询CPU运行状态的寄存器接口。

作为优选方案,所述的基于SPI协议的动态调试系统,还包括转换模块;

所述转换模块,用于连接主机端和动态调试模块,并将USB通信转换成采用SPI协议通信。

相比于现有技术,本发明实施例具有如下有益效果:

本发明提供一种基于SPI协议的动态调试方法、装置及系统,采用SPI协议使动态调试模块与主机端进行数据通信,采用AHB协议使动态调试模块与系统芯片进行数据通信,能够实现在系统芯片正常运行期间,在主机端进行指令操作并通过所述动态调试模块执行主机端的命令,对系统芯片进行读取或写入操作,进而让软件一直运行同时在主机端能够读取系统芯片的内部信息,或对系统芯片写入数据,为软件调试提供一个方便、高效和快速的动态调试方法。

附图说明

图1是本发明实施例中的一种基于SPI协议的动态调试方法的步骤流程图;

图2是本发明实施例中的一种基于SPI协议的动态调试系统的模块连接关系示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参见图1,本发明提供一种示例性实施例,一种基于SPI协议的动态调试方法,步骤包括:

S101、采用SPI协议与主机端建立通讯连接,并接收来自主机端的指令;

S102、根据主机端发送的指令,通过AHB协议与系统芯片进行通信并对所述系统芯片进行数据写入或信息读取;

S103、当完成数据写入或信息读取后,将系统芯片的内部信息发送给主机端。

需要说明的是,主机端的下一条SPI操作指令需要根据状态寄存器的返回值(即动态调试模块的内部状态信息)来执行。

根据读取指令,能够读取所述系统芯片(SOC系统)的物理地址空间的全部信息,包括SOC系统的存储空间、SOC系统的寄存器空间和SOC系统中CPU的运行状态。

在本实施例中,所述系统芯片为SOC系统。

在本实施例中,所述采用SPI协议与主机端建立通讯连接,并接收来自主机端的指令,SPI通讯数据有特定的格式,具有16-bit和48-bit两个具体格式,16-bit格式中包含8-bit SPI操作指令和8-bit NOP指令,48-bit格式中包含8-bit SPI操作指令,32-bit具体数据和8-bit NOP指令。

在使用基于SPI协议的动态DEBUG模块时,动态DEBUG模块需要作为AHB的MASTER,所以在连接架构上SOC系统需要作为AHB的SLAVE。

所述基于SPI协议的动态调试方法,在开始操作之前,还包括:

响应主机端发送的读状态寄存器指令,通过读取状态寄存器查询调试状态,并且将调试状态信息反馈到主机端。

在主机端(即PC端)开始指令操作前,通过查询动态调试模块的内部状态,得到动态调试模块处于繁忙状态或非繁忙状态;若处于繁忙状态,则停止执行指令并等待再次查询;若处于非繁忙状态,则可以执行指令,进行存储空间地址的读/写或者获取CPU信息。

需要说明的是,当AHB写操作的地址写入、AHB读操作的地址先后完成时,状态寄存器的错误位会被置1。当AHB读操作的地址写入完成后,状态寄存器的繁忙位会被置1,同时AHB读数据操作会自动进行,若此时PC在进行AHB读操作的地址写入、AHB写操作的地址写入、SPI读动态DEBUG模块数据、AHB写操作的数据写入时,这些后续的操作均无效。

根据主机端发送的指令对系统芯片进行信息读取,具体为:

根据主机端发送的指令,配置AHB读操作的基地址并执行读取系统芯片信息的操作;

完成读取系统芯片信息的操作并且当查询到调试状态处于非繁忙状态时,响应主机端发送的SPI读动态模块数据的指令,将读取系统芯片所得的系统芯片内部信息发送给主机端。

根据主机端发送的指令对系统芯片进行数据写入,具体为:

根据主机端发送的指令,配置AHB写操作的基地址;

当查询到调试状态处于非繁忙状态时,响应主机端发送的AHB写操作的数据写入指令,对系统芯片执行数据写入操作。

在具体操作时,用户在主机端(即PC端)进行操作时,若要进行存储空间地址的读取,首先发的是AHB读操作的地址写入,然后再次读取状态寄存器,当动态调试模块不忙时,再发送SPI读动态模块数据的指令完成存储空间地址的数据读取。

若要进行存储空间地址的写入,首先发的是AHB写操作的地址写入,然后再次读取状态寄存器,当动态调试模块不忙时,再发送AHB写操作的数据写入指令完成存储空间地址的数据写入。

若要对SOC系统的寄存器进行写入,首先发的是AHB写操作的地址写入,然后再次读取状态寄存器,当动态调试模块不忙时,再发送AHB写操作的数据写入指令完成寄存器数据写入。

若要对SOC系统的寄存器进行读取,首先发的是AHB读操作的地址写入,然后再次读取状态寄存器,当动态调试模块不忙时,再发送AHB写操作的数据写入指令完成寄存器数据写入。

可以理解的是,上述操作均为PC/主机端对动态调试模块的配置。动态调试模块到系统芯片的行为是在配置动态调试模块后,自动完成的,即基于AHB协议的数据写入/信息读取是自动完成的。

所述采用SPI协议与主机端建立通讯连接,并接收来自主机端的指令,还包括:

接收到清除状态寄存器指令后清除动态调试模块的错误位。

需要说明的是,若先使用了AHB读操作的地址写入,在动态DEBUG模块不忙的情况下,再使用了AHB写操作的地址写入,则动态DEBUG模块不会完成相应的操作,同时会将状态寄存器的错误位置1,此时PC端需要清除错误位才能再次对动态调试模块进行操作,用户需要在主机端操作发送清除状态寄存器指令能清除动态调试模块的错误位。

在本实施例中,根据清除状态寄存器指令定时清理动态调试模块的寄存器,有利于释放内存空间,提高性能。

另外,通过读取状态寄存器查询动态调试模块的内部状态信息,使主机端的下一条SPI操作指令可以根据所述内部状态信息执行,保证动态调试模块在性能良好的状态下执行指令,有利于减少调试过程出错率,同时提高芯片调试过程中的动态调节能力。

本发明提供一种基于SPI协议的动态调试装置,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的基于SPI协议的动态调试方法。

请参见图2,本发明提供一种示例性实施例,一种基于SPI协议的动态调试系统,包括主机端、动态调试模块、系统芯片;

所述主机端,用于输入指令、显示动态调试模块和系统芯片的信息;

所述动态调试模块,用于采用SPI协议与主机端建立通讯连接,并接收来自主机端的指令;根据主机端发送的指令,通过AHB协议与系统芯片进行通信并对所述系统芯片进行数据写入或信息读取;当完成数据写入或信息读取后,将系统芯片的内部信息发送给主机端。

所述基于SPI协议的动态调试系统,还包括转换模块;

所述转换模块,用于连接主机端和动态调试模块,并将USB通信转换成采用SPI协议通信。

所述动态调试模块,还用于:

响应主机端发送的读状态寄存器指令,通过读取状态寄存器查询调试状态,并且将调试状态信息反馈到主机端。

如图2所示,主机端,即电脑或PC,接入USB转SPI的转换模块,然后通过SPI协议接入动态调试模块(动态DEBUG模块)中,最后动态调试模块以AHB协议接入系统芯片(SOC系统)。

在本实施例中,所述动态调试模块包括一组标准四线SPI读写接口,一组AHB协议的通讯接口和用于查询CPU运行状态的寄存器接口。

在本实施例中,所述主机端可用于输入的指令包括读动态调试模块状态寄存器的指令、AHB读操作的地址写入指令、AHB写操作的地址写入指令、SPI读动态调试模块数据的指令、AHB写操作的数据写入指令、SPI读CPU信息0的读取指令、SPI读CPU信息1的读取指令、SPI读CPU信息2的读取指令和清除动态调试模块状态寄存器的清除指令,其中读动态调试模块状态寄存器和清除动态调试模块状态寄存器为16-bit指令,其他7种为48-bit指令。

所述主机端显示的运行信息能够显示系统芯片(SOC系统)的CPU运行状态,运行信息包括CPU运行的PC指针、运行的指令和运行时通用寄存器的值。

在主机端(即PC端)开始指令操作前,通过查询动态调试模块的内部状态,得到动态调试模块处于繁忙状态或非繁忙状态;若处于繁忙状态,则停止执行指令并等待再次查询;若处于非繁忙状态,则可以执行指令,进行存储空间地址的读/写或者获取CPU信息。

需要说明的是,当AHB写操作的地址写入、AHB读操作的地址先后完成时,状态寄存器的错误位会被置1。当AHB读操作的地址写入完成后,状态寄存器的繁忙位会被置1,同时AHB读数据操作会自动进行,若此时PC在进行AHB读操作的地址写入、AHB写操作的地址写入、SPI读动态DEBUG模块数据、AHB写操作的数据写入时,这些后续的操作均无效。

所述动态调试模块,还用于:

根据主机端发送的指令对系统芯片进行信息读取,具体为:

根据主机端发送的指令,配置AHB读操作的基地址并执行读取系统芯片信息的操作;

完成读取系统芯片信息的操作并且当查询到调试状态处于非繁忙状态时,响应主机端发送的SPI读动态模块数据的指令,将读取系统芯片所得的系统芯片内部信息发送给主机端。

所述动态调试模块,还用于:

根据主机端发送的指令对系统芯片进行数据写入,具体为:

根据主机端发送的指令,配置AHB写操作的基地址;

当查询到调试状态处于非繁忙状态时,响应主机端发送的AHB写操作的数据写入指令,对系统芯片执行数据写入操作。

在具体操作时,用户在主机端(即PC端)进行操作时,若要进行存储空间地址的读取,首先发的是AHB读操作的地址写入,然后再次读取状态寄存器,当动态调试模块不忙时,再发送SPI读动态模块数据的指令完成存储空间地址的数据读取。

若要进行存储空间地址的写入,首先发的是AHB写操作的地址写入,然后再次读取状态寄存器,当动态调试模块不忙时,再发送AHB写操作的数据写入指令完成存储空间地址的数据写入。

若要对SOC系统的寄存器进行写入,首先发的是AHB写操作的地址写入,然后再次读取状态寄存器,当动态调试模块不忙时,再发送AHB写操作的数据写入指令完成寄存器数据写入。

若要对SOC系统的寄存器进行读取,首先发的是AHB读操作的地址写入,然后再次读取状态寄存器,当动态调试模块不忙时,再发送AHB写操作的数据写入指令完成寄存器数据写入。

可以理解的是,上述操作均为PC/主机端对动态调试模块的配置。动态调试模块到系统芯片的行为是在配置动态调试模块后,自动完成的,即基于AHB协议的数据写入/信息读取是自动完成的。

所述动态调试模块,还用于:

接收到清除状态寄存器指令后清除动态调试模块的错误位。

需要说明的是,若先使用了AHB读操作的地址写入,在动态DEBUG模块不忙的情况下,再使用了AHB写操作的地址写入,则动态DEBUG模块不会完成相应的操作,同时会将状态寄存器的错误位置1,此时PC端需要清除错误位才能再次对动态调试模块进行操作,用户需要在主机端操作发送清除状态寄存器指令能清除动态调试模块的错误位。

在本实施例中,根据清除状态寄存器指令定时清理动态调试模块的寄存器,有利于释放内存空间,提高性能。

本发明提供一种基于SPI协议的动态调试方法、装置及系统,采用SPI协议使动态调试模块与主机端进行数据通信,采用AHB协议使动态调试模块与系统芯片进行数据通信,能够实现在系统芯片正常运行期间,在主机端进行指令操作并通过所述动态调试模块执行主机端的命令,对系统芯片进行读取或写入操作,进而让软件一直运行同时在主机端能够读取系统芯片的内部信息,或对系统芯片写入数据,为软件调试提供一个方便、高效和快速的动态调试方法。另外,通过读取状态寄存器查询动态调试模块的内部状态信息,使主机端的下一条SPI操作指令可以根据所述内部状态信息执行,保证动态调试模块在性能良好的状态下执行指令,有利于减少调试过程出错率,同时提高芯片调试过程中的动态调节能力。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种X型链路结构的多并发RAM数据传输方法及结构

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!