CN111506512B - 调试信息的处理方法、装置、电子设备、存储介质及系统 - Google Patents
调试信息的处理方法、装置、电子设备、存储介质及系统 Download PDFInfo
- Publication number
- CN111506512B CN111506512B CN202010334521.6A CN202010334521A CN111506512B CN 111506512 B CN111506512 B CN 111506512B CN 202010334521 A CN202010334521 A CN 202010334521A CN 111506512 B CN111506512 B CN 111506512B
- Authority
- CN
- China
- Prior art keywords
- debugging information
- pointer
- write pointer
- read
- writing
- 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/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
本申请公开了一种调试信息的处理方法、装置、电子设备、存储介质及系统,该系统包括:系统级芯片SoC用于,当触发调试信息输出时,获取写指针,写指针用于表示环形缓冲本次写入的起始地址;根据写指针向环形缓冲写入调试信息,更新写指针;终端用于,通过预设接口读取写指针和读指针;根据读指针和写指针判断是否读取环形缓冲中的调试信息;若是,根据读指针和写指针读取并输出调试信息,更新读指针。环形缓冲能够完成调试信息的存储,通过读指针和写指针能够准确定位调试信息的读取位置,实现终端根据读指针和写指针完成内嵌处理器中调试信息的获取,提高调试信息的获取效率。
Description
技术领域
本申请实施例涉及芯片技术,尤其涉及一种调试信息的处理方法、装置、电子设备、存储介质及系统。
背景技术
大规模的系统级芯片SoC(System-on-a-Chip)设计越来越多的采用内核处理器核用于SoC内部模块的控制。SoC内嵌处理器上运行的程序需要与处理器所控制的硬件模块进行系统开发调试,以保证功能的可靠性和稳定性。
在嵌入式软件的调试过程中研发人员需要获取程序执行关键节点的调试信息。但是目前研发人员只能通过查看有限的寄存器数值来确定程序运行结果。每次想要查看新的运行信息时都需要重新更改程序,将对应的信息输出至通用寄存器上,造成巨大的人力成本开销。可见,目前系统级芯片SoC内嵌处理器中的调试信息获取效率低。
发明内容
本申请提供一种调试信息的处理方法、装置、电子设备、存储介质及系统,以实现提高系统级芯片SoC内嵌处理器中调试信息的获取效率。
第一方面,本申请实施例提供了一种调试信息的处理方法,该方法应用于系统级芯片SoC,包括:
当触发调试信息输出时,获取写指针,写指针用于表示环形缓冲本次写入的起始地址;
根据写指针向环形缓冲写入调试信息,更新写指针;以便终端根据写指针和读指针读取调试信息。
第二方面,本申请实施例还提供了一种调试信息的处理方法,该方法应用于终端,包括:
通过预设接口读取写指针和读指针;
根据读指针和写指针判断是否读取环形缓冲中的调试信息;
若是,根据读指针和写指针读取并输出调试信息,更新读指针。
第三方面,本申请实施例还提供了一种调试信息的处理装置,该方法应用于系统级芯片SoC,包括:
指针获取模块,用于当触发调试信息输出时,获取写指针,写指针用于表示环形缓冲本次写入的起始地址;
写入模块,用于根据写指针向环形缓冲写入调试信息,更新写指针;以便终端根据写指针和读指针读取调试信息。
第四方面,本申请实施例还提供了一种调试信息的处理装置,该装置应用于终端,包括:
指针读取模块,用于通过预设接口读取写指针和读指针;
判断模块,用于根据读指针和写指针判断是否读取环形缓冲中的调试信息;
调试信息读取模块,用于若判断模块判定结果为是,根据读指针和写指针读取调试信息,更新读指针;
输出模块,用于输出调试信息读取模块读取的调试信息。
第五方面,本申请实施例还提供了一种电子设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现如本申请实施例所示的调试信息的处理方法。
第六方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例所示的调试信息的处理方法。
第七方面,本申请实施例还提供了一种调试信息的处理系统,包括:系统级芯片SoC和终端;
系统级芯片SoC用于,当触发调试信息输出时,获取写指针,写指针用于表示环形缓冲本次写入的起始地址;
根据写指针向环形缓冲写入调试信息,更新写指针;
终端用于,通过预设接口读取写指针和读指针;
根据读指针和写指针判断是否读取环形缓冲中的调试信息;
若是,根据读指针和写指针读取并输出调试信息,更新读指针。
本申请实施例提供的调试信息的处理方案,系统级芯片SoC在触发调试信息输出时,获取写指针,写指针用于表示环形缓冲本次写入的起始地址;根据写指针向环形缓冲写入调试信息,更新写指针;以便终端根据写指针和读指针读取调试信息。环形缓冲能够完成调试信息的存储,通过读指针和写指针能够准确定位调试信息的读取位置,实现终端根据读指针和写指针完成内嵌处理器调试信息的获取,提高调试信息的获取效率。
附图说明
图1是本申请实施例中的一种调试信息的处理方法的流程示意图;
图2是本申请实施例中的另一种调试信息的处理方法的流程示意图;
图3是本申请实施例中的一种调试信息的处理系统的示意图;
图4是本申请实施例中的一种调试信息的处理装置的结构示意图;
图5是本申请实施例中的另一种调试信息的处理装置的结构示意图;
图6是本申请实施例中的一种电子设备的结构示意图;
图7是本申请实施例中的另一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
图1为本申请实施例提供的一种调试信息的处理方法的流程图,本实施例可适用于对系统级芯片SoC程序进行调试的情况,该方法可以由系统级芯片SOC来执行。具体包括如下步骤:
步骤110、当触发调试信息输出时,获取写指针。
处理器运行调试程序的过程中或响应于用户发出的调试信息输出指示时,触发调试信息输出。当触发调试信息输出时,系统级芯片SoC读取写指针。写指针用于表示环形缓冲(ring buffer)本次写入的起始地址。环形缓冲用于存储系统级芯片SoC内嵌处理器固件程序运行时产生的调试信息字符串。写指针指向前一次写入的调试信息最后一个字符。根据写指针可以获知本次写操作的起始位置。
步骤120、根据写指针向环形缓冲写入调试信息,更新写指针;以便终端根据写指针和读指针读取调试信息。
在向环形缓冲中写入调试信息时,写指针随着调试信息字符串的写入向下移动,实现写指针更新。
在实施过程中发现,在向环形缓冲写入调试信息时,调试信息的字符长度可能大于环形缓冲可写入的字符数量。若此时将调试信息写入环形缓冲,则会导致有效数据被覆盖的问题。为了解决该问题,根据写指针向环形缓冲写入调试信息,可通过下述方式进行实施:
根据读指针和写指针以及写入的调试信息的字符数量判断是否存在足够的存储空间。若是,根据写指针向环形缓冲写入调试信息。若否,根据读指针和写指针确定空闲空间;根据所述空闲空间拆分所述调试信息,得到拆分数据,将拆分数据写入所述环形缓冲,更新所述写指针;当检测到终端进行了读操作时,释放读操作对应的存储空间,根据释放的存储空间拆分调试信息的剩余部分,直至调试信息全部写入环形缓冲。
读指针用于表示前一次读取的调试信息的字符位置。读指针用于表示环形缓冲中有效数据的开始位置。写指针用于表示环形缓冲中有效数据的结尾位置。内嵌处理器和终端均可访问存储器中存储的读指针和写指针,进而实现终端与系统级芯片之间的调试信息的读取进度同步。
在需要输出调试信息字符串时,先读取读指针与写指针。根据环形缓冲的存储顺序,判断写指针到读指针之间的存储空间是否大于调试信息字符串的数据量。
若写指针到读指针之间的存储空间大于等于调试信息字符串的数据量,则确定存在足够的存储空间。此时,根据写指针向环形缓冲写入调试信息。从写指针开始依次写入调试信息字符串,同时更新写指针。
否则,若写指针到读指针之间的存储空间小于调试信息字符串的数据量,则确定不存在足够的存储空间。对调试信息进行拆分,以得到可以写入环形缓冲空闲空间的拆分数据。随着环形缓冲中的数据被终端读取,会随之释放被读取的数据占用的存储空间,并按照新释放的存储空间继续对剩余的调试信息进行拆分,直至剩余的调试信息的数据量小于写指针到读指针之间的存储空间的数据量。
具体的,可以根据读指针至写指针之间的字节数量确定空闲空间,以空闲空间的数据量对未写入环形缓冲的调试信息进行拆分,得到与空闲空间的字节数量相同的拆分数据以及剩余的调试信息。将拆分数据写入环形缓冲的空闲空间,并更新写指针。当终端对环形缓冲中的数据进行读操作后,读指针更新,释放已被终端读取的数据占用的存储空间。此时环形缓冲中出现新的空闲空间,以该空闲空间的数据量对剩余的调试信息进行拆分。得到新的拆分数据和新的剩余的调试信息。随着环形缓冲中的数据不断的被终端读取,会陆续释放环形缓冲中的存储空间,按照新释放的存储空间的数据量对新的剩余的调试信息进行再拆分,并将拆分得到的拆分数据写入环形缓冲。直至拆分数据的数据量小于写指针到读指针之间的存储空间,此时可以将剩余的调试信息写入环形缓冲,完成调试信息的写入。
等待终端读取环形缓冲中读指针与写指针之间已存储的调试信息后,释放已存储调试信息占用的存储空间,更新读指针。然后,根据写指针向环形缓冲写入调试信息,更新写指针。
通过上述方式能够在写入调试信息之前,判断环形缓冲中是否存在足够的存储空间,进而提高调试信息写入的可靠性。
进一步的,在步骤110触发调试信息输出之前,还包括:
根据多个第一通用寄存器构建环形缓冲;配置第二通用寄存器以存储读指针,配置第三通用寄存器以存储写指针。
使用系统级芯片SoC已有的第一通用寄存器构建环形缓冲。通过建立个各第一通用寄存器之间的首位地址的指向关系,形成环形缓冲。此外,在环形缓冲以外,将第二通用寄存器配置为用于存储读指针,将第三通用寄存器配置为用于存储写指针。第二通用寄存器和第三通用寄存器也为系统级芯片SoC已有的寄存器。
使用多个第一通用寄存器构建环形缓冲,能够实现在不增加硬件改动的同时,实现调试信息的快速输出,提高资源利用率,降低调试成本。
本申请实施例提供的调试信息的处理方法,系统级芯片SoC在触发调试信息输出时,获取写指针,写指针用于表示环形缓冲本次写入的起始地址;根据写指针向环形缓冲写入调试信息,更新写指针;以便终端根据写指针和读指针读取调试信息。环形缓冲能够完成调试信息的存储,通过读指针和写指针能够准确定位调试信息的读取位置,实现终端根据读指针和写指针完成内嵌处理器中调试信息的获取,提高调试信息的获取效率。
图2为本申请实施例提供的一种调试信息的处理方法的流程图,本实施例可适用于对系统级芯片SoC程序进行调试的情况,该方法可以由终端执行,该终端用于从系统级芯片SoC外部读取调试信息。终端可以为个人电脑(Personal Computer,PC)。具体包括如下步骤:
步骤210、通过预设接口读取写指针和读指针。
预设接口用于连接系统级芯片SoC和终端。示例性的,通过PCIE接口循环读取写指针和读指针。PCIE能够提供较高的数据读取速度和带宽,其速度大大快于从传统调试接口读取调试信息,使得信息的输出更加及时,提高数据读取速率。
步骤220、根据读指针和写指针判断是否读取环形缓冲中的调试信息。
在一种实现方式中,步骤220、根据读指针和写指针判断是否读取环形缓冲中的调试信息,可通过下述方式实施:
判断读指针和写指针是否一致。若读指针和写指针不一致,读取环形缓冲中的调试信息。若读指针和写指针一致,取消读取环形缓冲中的调试信息。
写指针用于表示最新的调试信息的截止位置。若读指针与写指针一致,及指向相同位置,则说明已读取环形缓冲中的调试信息字符串,取消读取环形缓冲中的调试信息,返回执行步骤210。若读指针与写指针不一致,则说明还未读取最新的调试信息,执行步骤230以读取环形缓冲中的调试信息。
上述方案能够根据读指针和写指针准确的判断出是否写入了新的调试信息,提供读取的准确性。
步骤230、若是,根据读指针和写指针读取并输出调试信息,更新读指针。
读指针用于表示前一次读取数据的结束位置,本次将从读取值开始继续读取调试信息。
在一种实现方式中,根据读指针和写指针读取调试信息,可通过下述方式实施:获取环形缓冲中存储的字符数量;从环形缓冲中读取字符数量的字符作为调试信息;将调试信息输出至终端的屏幕。
计算读指针与写指针之间的字符数量,该字符数量为环形缓冲中存储的字符数量。在读取调试信息时,从读指针开始,读取该字符数量的字符后,结束读取,完成调试信息的读取。终端读取调试信息后,通过显示器输出调试信息,以便用户观看。
上述方案根据字符数量读取调试信息,能够更加准确和完整的读取调试信息,提高调试信息读取的准确性。
进一步的,在读取环形缓冲中的数据后,判断数据是否包括截止符号,截止符号表示调试信息结束。若SoC因调试信息数据量大于环形缓冲中的空闲空间会对调试信息进行拆分,SoC会将拆分信息依次写入环形缓冲。此时,终端陆续读取拆分的字符串,并在读取到包含有截止符号的字符串时,对读取到的多个字符串进行重组,得到完成的调试信息。示例性的,终端检测读取到的数据是否包括截止符号,若不包括截止符号,则继续读取环形缓冲中的数据。直至读取到包含有截止符号的数据,并将读取到的数据进行重组,得到完整的调试信息。
本申请实施例提供的调试信息的处理方法,终端从系统级芯片SoC获取调试信息时,通过预设接口获取读指针和写指针,若根据读指针和写指针确定读取环形缓冲中的调试信息时,根据读指针和写指针从环形缓冲中读取调试信息,并将该调试信息输出给用户,实现根据读指针和写指针快速确定是否读取调试信息并输出调试信息,提高调试信息的获取效率。
图3为本申请实施例提供的一种调试信息的处理系统的示意图,包括:系统级芯片SoC和终端。
系统级芯片SoC用于,当触发调试信息输出时,获取写指针,写指针用于表示环形缓冲本次写入的起始地址;
根据写指针向环形缓冲写入调试信息,更新写指针;
终端用于,通过预设接口读取写指针和读指针;
根据读指针和写指针判断是否读取环形缓冲中的调试信息;
若是,根据读指针和写指针读取并输出调试信息,更新读指针。
在一种实现方式中,上述系统通过下述步骤执行本申请实施例中提供的调试信息的处理方法:
步骤301、当触发调试信息输出时,系统级芯片SoC获取写指针。
其中,写指针用于表示环形缓冲本次写入的起始地址。
步骤302、系统级芯片SoC根据写指针向环形缓冲写入调试信息,更新写指针。
示例性的,系统级芯片SoC根据读指针和写指针以及写入的调试信息的字符数量判断是否存在足够的存储空间。若是,根据写指针向环形缓冲写入调试信息。若否,根据读指针和写指针确定空闲空间;根据空闲空间拆分调试信息,得到拆分数据,将拆分数据写入环形缓冲,更新写指针;当检测到终端进行了读操作时,释放读操作对应的存储空间,根据释放的存储空间拆分调试信息的剩余部分,直至调试信息全部写入环形缓冲。
步骤303、终端通过预设接口读取写指针和读指针。
步骤304、终端根据读指针和写指针判断是否读取环形缓冲中的调试信息。
示例性的,终端判断读指针和写指针是否一致。若读指针和写指针不一致,读取环形缓冲中的调试信息。若读指针和写指针一致,取消读取环形缓冲中的调试信息。
若是,执行步骤305。若否,返回执行步骤303。
步骤305、若是,终端根据读指针和写指针读取调试信息,更新读指针。
步骤306、终端输出调试信息。
本申请实施例提供的调试信息的处理方法,系统级芯片SoC在触发调试信息输出时,获取写指针,写指针用于表示环形缓冲本次写入的起始地址;根据写指针向环形缓冲写入调试信息,更新写指针。终端从系统级芯片SOC获取调试信息时,通过预设接口获取读指针和写指针,若根据读指针和写指针确定读取环形缓冲中的调试信息时,根据读指针和写指针从环形缓冲中读取调试信息,并将该调试信息输出给用户。环形缓冲能够完成调试信息的存储,通过读指针和写指针能够准确定位调试信息的读取位置,实现终端根据读指针和写指针完成内嵌处理器中调试信息的获取,提高调试信息的获取效率。
本申请实施例提供的调试信息的处理方法,可以在不增加任何硬件改动的情况下部署上述技术方案,实现系统级芯片SoC内嵌处理器的调试信息输出。此外,调试信息字符串写入通用寄存器的速度大大快于向传统调试接口(例如UART或SPI等)输出的速度,使得调试信息输出对程序执行的流程影响更小。此外,使用字符串环形缓冲实现了对通用寄存器资源重复利用,满足不间断的调试信息输出需求。
图4为本申请实施例提供的一种调试信息的处理装置的结构示意图,装置应用于系统级芯片SoC,包括:指针获取模块410和写入模块420。
指针获取模块410,用于当触发调试信息输出时,获取写指针,写指针用于表示环形缓冲本次写入的起始地址;
写入模块420,用于根据写指针向环形缓冲写入调试信息,更新写指针;以便终端根据写指针和读指针读取调试信息。
进一步的,写入模块420用于:
根据读指针和写指针以及写入的调试信息的字符数量判断是否存在足够的存储空间;
若是,根据写指针向环形缓冲写入调试信息;
若否,根据读指针和写指针确定空闲空间;根据空闲空间拆分调试信息,得到拆分数据,将拆分数据写入环形缓冲,更新写指针;当检测到终端进行了读操作时,释放读操作对应的存储空间,根据释放的存储空间拆分调试信息的剩余部分,直至调试信息全部写入环形缓冲。
进一步的,还包括通用寄存器配置模块,用于根据多个第一通用寄存器构建环形缓冲;配置第二通用寄存器以存储读指针,配置第三通用寄存器以存储写指针。
本申请实施例提供的调试信息的处理方法,指针获取模块410在触发调试信息输出时,获取写指针,写指针用于表示环形缓冲本次写入的起始地址;写入模块420根据写指针向环形缓冲写入调试信息,更新写指针;以便终端根据写指针和读指针读取调试信息。环形缓冲能够完成调试信息的存储,通过读指针和写指针能够准确定位调试信息的读取位置,实现终端根据读指针和写指针完成内嵌处理器中调试信息的获取,提高调试信息的获取效率。
图5为本申请实施例提供的一种调试信息的处理装置的结构示意图,装置应用于终端,包括:指针读取模块510、判断模块520、调试信息读取模块530和输出模块540。
指针读取模块510,用于通过预设接口读取写指针和读指针;
判断模块520,用于根据读指针和写指针判断是否读取环形缓冲中的调试信息;
调试信息读取模块530,用于若判断模块520判定结果为是,根据读指针和写指针读取调试信息,更新读指针;
输出模块540,用于输出调试信息读取模块530读取的调试信息。
进一步的,判断模块520用于:
判断读指针和写指针是否一致;
若读指针和写指针不一致,读取环形缓冲中的调试信息;
若读指针和写指针一致,取消读取环形缓冲中的调试信息。
进一步的,指针读取模块510用于,通过PCIE接口循环读取写指针和读指针。
进一步的,调试信息读取模块530用于:
获取环形缓冲中存储的字符数量;
从环形缓冲中读取字符数量的字符作为调试信息;
将调试信息输出至终端的屏幕。
本申请实施例提供的调试信息的处理装置,终端从系统级芯片SoC获取调试信息时,指针读取模块510通过预设接口获取读指针和写指针,判断模块520根据读指针和写指针确定读取环形缓冲中的调试信息时,调试信息读取模块530根据读指针和写指针从环形缓冲中读取调试信息,输出模块540将该调试信息输出给用户,实现根据读指针和写指针快速确定是否读取调试信息并输出调试信息,提高调试信息的获取效率。
上述装置可执行本申请前述所有实施例所提供的方法,具备执行上述方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请前述所有实施例所提供的方法。值得注意的是,上述装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。
图6是本申请实施例提供的一种电子设备的结构示意图,该电子设备可以为系统级芯片SoC,至少包括:处理器610和存储器620。处理器610又称为内嵌处理器610,处理器610可以作为系统级芯片的核心单元,其包含的电路结构基于系统级芯片所要完成的功能来确定。处理器610可以包含中央处理器(Central Processing Unit,CPU)、微控制单元(Microcontroller Unit,MCU)中的一种或多种电路。
进一步的,处理器610还可以包括时钟电路、定时器、中断控制器、串并行接口、其它外围设备、I/O端口以及用于各种IP核之间的粘合逻辑等。
存储器620与处理器610连接,用于存储数据。处理器610可以通过总线对存储器620中的数据进行读操作或写操作。存储器620包括可以包括多种易失、非易失或Cache等存储器620。
存储器620包括用于记录调试信息的环形缓冲621,该环形缓冲621由多个通用寄存器组成。通用寄存器为系统级芯片SoC本身配置的通用寄存器,而非外加的寄存器,进而能够降低本申请的实施成本。调试信息包括调试作业时其内部电路所产生的各种数据信息。例如:总线读写的数据、芯片内部状态信息、程序改变流程的跳转地址等。
存储器620中还包括用于存储读指针的寄存器,以及用于存储写指针的存储器620。处理器610根据读指针和写指针可以判断是否向环形缓冲621中写入调试信息。
本领域技术人员基于前述说明应该理解处理器610和存储器620的电路结构,故在此不再详述。
此外,存储器620作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请实施例中的调试信息的处理方法对应的程序指令/模块。处理器610通过运行存储在存储器620中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的调试信息的处理方法。该方法包括:
当触发调试信息输出时,获取写指针,写指针用于表示环形缓冲本次写入的起始地址;
根据写指针向环形缓冲写入调试信息,更新写指针;以便终端根据写指针和读指针读取调试信息。
进一步的,根据写指针向环形缓冲写入调试信息,包括:
根据读指针和写指针以及写入的调试信息的字符数量判断是否存在足够的存储空间;
若是,根据写指针向环形缓冲写入调试信息;
若否,根据读指针和写指针确定空闲空间;根据空闲空间拆分调试信息,得到拆分数据,将拆分数据写入环形缓冲,更新写指针;当检测到终端进行了读操作时,释放读操作对应的存储空间,根据释放的存储空间拆分调试信息的剩余部分,直至调试信息全部写入环形缓冲。
进一步的,在触发调试信息输出之前,还包括:
根据多个第一通用寄存器构建环形缓冲;
配置第二通用寄存器以存储读指针,配置第三通用寄存器以存储写指针。
此外,还需要说明的是,系统级芯片还可基于用户的需要包含其他功能模块单元,例如,包括模数转换器(Analogue-to-Digital Conversion,ADC)数模转换器(Digital-to-Analogue Conversion,DAC)的模拟前端模块、电源提供和功耗管理模块、射频前端模块、用户定义逻辑及微电子机械模块等,在此不再一一详述。
图7是本申请实施例提供的一种电子设备的结构示意图,如图7所示,该计算机设备包括处理器70、存储器71、输入装置72和输出装置73;计算机设备中处理器70的数量可以是一个或多个,图7中以一个处理器70为例;计算机设备中的处理器70、存储器71、输入装置72和输出装置73可以通过总线或其他方式连接,图7中以通过总线连接为例。
存储器71作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请实施例中的调试信息的处理方法对应的程序指令/模块。处理器70通过运行存储在存储器71中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的调试信息的处理方法。该方法包括:
通过预设接口读取写指针和读指针;
根据读指针和写指针判断是否读取环形缓冲中的调试信息;
若是,根据读指针和写指针读取并输出调试信息,更新读指针。
进一步的,根据读指针和写指针判断是否读取环形缓冲中的调试信息,包括:
判断读指针和写指针是否一致;
若读指针和写指针不一致,读取环形缓冲中的调试信息;
若读指针和写指针一致,取消读取环形缓冲中的调试信息。
进一步的,通过预设接口读取写指针和读指针,包括:
通过PCIE接口循环读取写指针和读指针。
进一步的,根据读指针和写指针读取调试信息,包括:
获取环形缓冲中存储的字符数量;
从环形缓冲中读取字符数量的字符作为调试信息;
将调试信息输出至终端的屏幕。
存储器71可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器71可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器71可进一步包括相对于处理器70远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置72可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置73可包括显示屏等显示设备。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序在由计算机处理器执行时用于执行一种调试信息的处理方法。
当存储介质位于系统级芯片SoC中时,该方法包括:
当触发调试信息输出时,获取写指针,写指针用于表示环形缓冲本次写入的起始地址;
根据写指针向环形缓冲写入调试信息,更新写指针;以便终端根据写指针和读指针读取调试信息。
进一步的,根据写指针向环形缓冲写入调试信息,包括:
根据读指针和写指针以及写入的调试信息的字符数量判断是否存在足够的存储空间;
若是,根据写指针向环形缓冲写入调试信息;
若否,根据读指针和写指针确定空闲空间;根据空闲空间拆分调试信息,得到拆分数据,将拆分数据写入环形缓冲,更新写指针;当检测到终端进行了读操作时,释放读操作对应的存储空间,根据释放的存储空间拆分调试信息的剩余部分,直至调试信息全部写入环形缓冲。
进一步的,在触发调试信息输出之前,还包括:
根据多个第一通用寄存器构建环形缓冲;
配置第二通用寄存器以存储读指针,配置第三通用寄存器以存储写指针。
当存储介质位于终端中时,该方法包括:
通过预设接口读取写指针和读指针;
根据读指针和写指针判断是否读取环形缓冲中的调试信息;
若是,根据读指针和写指针读取并输出调试信息,更新读指针。
进一步的,根据读指针和写指针判断是否读取环形缓冲中的调试信息,包括:
判断读指针和写指针是否一致;
若读指针和写指针不一致,读取环形缓冲中的调试信息;
若读指针和写指针一致,取消读取环形缓冲中的调试信息。
进一步的,通过预设接口读取写指针和读指针,包括:
通过PCIE接口循环读取写指针和读指针。
进一步的,根据读指针和写指针读取调试信息,包括:
获取环形缓冲中存储的字符数量;
从环形缓冲中读取字符数量的字符作为调试信息;
将调试信息输出至终端的屏幕。
当然,本申请实施例所提供的存储有计算机程序的计算机可读存储介质,其计算机程序不限于如上的方法操作,还可以执行本申请任意实施例所提供的调试信息的处理方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本申请可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。
Claims (11)
1.一种调试信息的处理方法,其特征在于,该方法应用于系统级芯片SoC,包括:
根据多个系统级芯片SoC已有的第一通用寄存器构建环形缓冲,所述环形缓冲用于存储系统级芯片SoC内嵌处理器固件程序运行时产生的调试信息;
处理器运行调试程序的过程中或响应于用户发出的调试信息输出指示时,触发调试信息输出;
当触发调试信息输出时,获取写指针,所述写指针用于表示环形缓冲本次写入的起始地址;
根据所述写指针向所述环形缓冲写入所述调试信息,更新所述写指针;以便终端根据所述写指针和读指针读取所述调试信息;
所述根据所述写指针向所述环形缓冲写入所述调试信息,包括:
根据所述读指针和所述写指针以及写入的调试信息的字符数量判断是否存在足够的存储空间;
若是,根据所述写指针向所述环形缓冲写入所述调试信息;
若否,根据所述读指针至所述写指针之间的字节数量确定空闲空间,以所述空闲空间的数据量对未写入环形缓冲的调试信息进行拆分,得到与空闲空间的字节数量相同的拆分数据以及剩余的调试信息;将拆分数据写入环形缓冲的空闲空间,并更新写指针;
当终端对所述环形缓冲中的数据进行读操作后,所述读指针更新,释放已被终端读取的数据占用的存储空间,此时环形缓冲中出现新的空闲空间;
以所述新的空闲空间的数据量对剩余的调试信息进行拆分,得到新的拆分数据和新的剩余的调试信息;
随着所述环形缓冲中的数据不断的被终端读取,陆续释放环形缓冲中的存储空间,按照新释放的存储空间的数据量对新的剩余的调试信息进行再拆分,并将拆分得到的拆分数据写入环形缓冲,直至拆分数据的数据量小于写指针到读指针之间的存储空间,将剩余的调试信息写入环形缓冲,完成调试信息的写入。
2.根据权利要求1所述的调试信息的处理方法,其特征在于,在触发调试信息输出之前,还包括:
根据多个第一通用寄存器构建环形缓冲;
配置第二通用寄存器以存储读指针,配置第三通用寄存器以存储写指针。
3.一种调试信息的处理方法,其特征在于,该方法应用于终端,包括:
通过预设接口读取写指针和读指针;
根据所述读指针和所述写指针判断是否读取环形缓冲中的调试信息,
所述调试信息为系统级芯片SoC通过下述方式写入的:根据多个系统级芯片SoC已有的第一通用寄存器构建环形缓冲;处理器运行调试程序的过程中或响应于用户发出的调试信息输出指示时,触发调试信息输出;所述环形缓冲用于存储系统级芯片SoC内嵌处理器固件程序运行时产生的调试信息;根据所述读指针和所述写指针以及写入的调试信息的字符数量判断是否存在足够的存储空间;若是,根据所述写指针向所述环形缓冲写入所述调试信息;若否,根据所述读指针至所述写指针之间的字节数量确定空闲空间,以所述空闲空间的数据量对未写入环形缓冲的调试信息进行拆分,得到与空闲空间的字节数量相同的拆分数据以及剩余的调试信息;将拆分数据写入环形缓冲的空闲空间,并更新写指针;当终端对所述环形缓冲中的数据进行读操作后,所述读指针更新,释放已被终端读取的数据占用的存储空间,此时环形缓冲中出现新的空闲空间;以所述新的空闲空间的数据量对剩余的调试信息进行拆分,得到新的拆分数据和新的剩余的调试信息;随着所述环形缓冲中的数据不断的被终端读取,陆续释放环形缓冲中的存储空间,按照新释放的存储空间的数据量对新的剩余的调试信息进行再拆分,并将拆分得到的拆分数据写入环形缓冲,直至拆分数据的数据量小于写指针到读指针之间的存储空间,将剩余的调试信息写入环形缓冲,完成调试信息的写入;
若是,根据所述读指针和所述写指针读取并输出所述调试信息,更新所述读指针。
4.根据权利要求3所述的调试信息的处理方法,其特征在于,所述根据所述读指针和所述写指针判断是否读取环形缓冲中的调试信息,包括:
判断所述读指针和所述写指针是否一致;
若所述读指针和所述写指针不一致,读取环形缓冲中的调试信息;
若所述读指针和所述写指针一致,取消读取环形缓冲中的调试信息。
5.根据权利要求3所述的调试信息的处理方法,其特征在于,所述通过预设接口读取写指针和读指针,包括:
通过PCIE接口循环读取写指针和读指针。
6.根据权利要求3所述的调试信息的处理方法,其特征在于,所述根据所述读指针和所述写指针读取所述调试信息,包括:
获取所述环形缓冲中存储的字符数量;
从所述环形缓冲中读取所述字符数量的字符作为调试信息;
将所述调试信息输出至所述终端的屏幕。
7.一种调试信息的处理装置,其特征在于,该装置应用于系统级芯片SoC,包括:
指针获取模块,用于根据多个系统级芯片SoC已有的第一通用寄存器构建环形缓冲;处理器运行调试程序的过程中或响应于用户发出的调试信息输出指示时,触发调试信息输出;所述环形缓冲用于存储系统级芯片SoC内嵌处理器固件程序运行时产生的调试信息;当触发调试信息输出时,获取写指针,所述写指针用于表示环形缓冲本次写入的起始地址;
写入模块,用于根据所述写指针向所述环形缓冲写入所述调试信息,更新所述写指针;以便终端根据所述写指针和读指针读取所述调试信息;
所述写入模块用于:
根据所述读指针和所述写指针以及写入的调试信息的字符数量判断是否存在足够的存储空间;
若是,根据所述写指针向所述环形缓冲写入所述调试信息;
若否,根据所述读指针至所述写指针之间的字节数量确定空闲空间,以所述空闲空间的数据量对未写入环形缓冲的调试信息进行拆分,得到与空闲空间的字节数量相同的拆分数据以及剩余的调试信息;将拆分数据写入环形缓冲的空闲空间,并更新写指针;
当终端对所述环形缓冲中的数据进行读操作后,所述读指针更新,释放已被终端读取的数据占用的存储空间,此时环形缓冲中出现新的空闲空间;
以所述新的空闲空间的数据量对剩余的调试信息进行拆分,得到新的拆分数据和新的剩余的调试信息;
随着所述环形缓冲中的数据不断的被终端读取,陆续释放环形缓冲中的存储空间,按照新释放的存储空间的数据量对新的剩余的调试信息进行再拆分,并将拆分得到的拆分数据写入环形缓冲,直至拆分数据的数据量小于写指针到读指针之间的存储空间,将剩余的调试信息写入环形缓冲,完成调试信息的写入。
8.一种调试信息的处理装置,其特征在于,该装置应用于终端,包括:
指针读取模块,用于通过预设接口读取写指针和读指针;
判断模块,用于根据所述读指针和所述写指针判断是否读取环形缓冲中的调试信息;所述调试信息为系统级芯片SoC通过下述方式写入的:根据多个系统级芯片SoC已有的第一通用寄存器构建环形缓冲;处理器运行调试程序的过程中或响应于用户发出的调试信息输出指示时,触发调试信息输出;所述环形缓冲用于存储系统级芯片SoC内嵌处理器固件程序运行时产生的调试信息;根据所述读指针和所述写指针以及写入的调试信息的字符数量判断是否存在足够的存储空间;若是,根据所述写指针向所述环形缓冲写入所述调试信息;若否,根据所述读指针至所述写指针之间的字节数量确定空闲空间,以所述空闲空间的数据量对未写入环形缓冲的调试信息进行拆分,得到与空闲空间的字节数量相同的拆分数据以及剩余的调试信息;将拆分数据写入环形缓冲的空闲空间,并更新写指针;当终端对所述环形缓冲中的数据进行读操作后,所述读指针更新,释放已被终端读取的数据占用的存储空间,此时环形缓冲中出现新的空闲空间;以所述新的空闲空间的数据量对剩余的调试信息进行拆分,得到新的拆分数据和新的剩余的调试信息;随着所述环形缓冲中的数据不断的被终端读取,陆续释放环形缓冲中的存储空间,按照新释放的存储空间的数据量对新的剩余的调试信息进行再拆分,并将拆分得到的拆分数据写入环形缓冲,直至拆分数据的数据量小于写指针到读指针之间的存储空间,将剩余的调试信息写入环形缓冲,完成调试信息的写入;
调试信息读取模块,用于若所述判断模块判定结果为是,根据所述读指针和所述写指针读取所述调试信息,更新所述读指针;
输出模块,用于输出所述调试信息读取模块读取的所述调试信息。
9.一种电子设备,包括通用存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-6中任一所述的调试信息的处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的调试信息的处理方法。
11.一种调试信息的处理系统,其特征在于,包括:系统级芯片SoC和终端;
所述系统级芯片SoC用于,根据多个系统级芯片SoC已有的第一通用寄存器构建环形缓冲;
处理器运行调试程序的过程中或响应于用户发出的调试信息输出指示时,触发调试信息输出;所述环形缓冲用于存储系统级芯片SoC内嵌处理器固件程序运行时产生的调试信息;
当触发调试信息输出时,获取写指针,所述写指针用于表示环形缓冲本次写入的起始地址;
根据所述写指针向所述环形缓冲写入所述调试信息,更新所述写指针;
所述终端用于,通过预设接口读取所述写指针和读指针;
根据所述读指针和所述写指针判断是否所述读取环形缓冲中的调试信息;
若是,根据所述读指针和所述写指针读取并输出所述调试信息,更新所述读指针;
所述根据所述写指针向所述环形缓冲写入所述调试信息,包括:
根据所述读指针和所述写指针以及写入的调试信息的字符数量判断是否存在足够的存储空间;
若是,根据所述写指针向所述环形缓冲写入所述调试信息;
若否,根据所述读指针至所述写指针之间的字节数量确定空闲空间,以所述空闲空间的数据量对未写入环形缓冲的调试信息进行拆分,得到与空闲空间的字节数量相同的拆分数据以及剩余的调试信息;将拆分数据写入环形缓冲的空闲空间,并更新写指针;
当终端对所述环形缓冲中的数据进行读操作后,所述读指针更新,释放已被终端读取的数据占用的存储空间,此时环形缓冲中出现新的空闲空间;
以所述新的空闲空间的数据量对剩余的调试信息进行拆分,得到新的拆分数据和新的剩余的调试信息;
随着所述环形缓冲中的数据不断的被终端读取,陆续释放环形缓冲中的存储空间,按照新释放的存储空间的数据量对新的剩余的调试信息进行再拆分,并将拆分得到的拆分数据写入环形缓冲,直至拆分数据的数据量小于写指针到读指针之间的存储空间,将剩余的调试信息写入环形缓冲,完成调试信息的写入。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010334521.6A CN111506512B (zh) | 2020-04-24 | 2020-04-24 | 调试信息的处理方法、装置、电子设备、存储介质及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010334521.6A CN111506512B (zh) | 2020-04-24 | 2020-04-24 | 调试信息的处理方法、装置、电子设备、存储介质及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111506512A CN111506512A (zh) | 2020-08-07 |
CN111506512B true CN111506512B (zh) | 2021-04-23 |
Family
ID=71876395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010334521.6A Active CN111506512B (zh) | 2020-04-24 | 2020-04-24 | 调试信息的处理方法、装置、电子设备、存储介质及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111506512B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112131156B (zh) * | 2020-09-03 | 2022-03-22 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据传输方法、系统及电子设备和存储介质 |
CN115934023B (zh) * | 2021-08-31 | 2024-06-18 | 华为技术有限公司 | 数据处理方法、数据处理装置以及相关设备 |
CN114490127A (zh) * | 2022-01-20 | 2022-05-13 | Oppo广东移动通信有限公司 | 核间通信方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101655824A (zh) * | 2009-08-25 | 2010-02-24 | 北京广利核系统工程有限公司 | 一种双口ram互斥访问的实现方法 |
CN101834978A (zh) * | 2009-12-23 | 2010-09-15 | 福建新大陆通信科技有限公司 | 一种数字机顶盒epg系统的优化方法 |
CN103163827A (zh) * | 2011-12-14 | 2013-06-19 | 沈阳高精数控技术有限公司 | 一种用于总线式数控系统的关键数据采集方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8825922B2 (en) * | 2011-04-18 | 2014-09-02 | Infineon Technologies Ag | Arrangement for processing trace data information, integrated circuits and a method for processing trace data information |
US8819090B2 (en) * | 2012-04-23 | 2014-08-26 | Citrix Systems, Inc. | Trusted file indirection |
CN102724122B (zh) * | 2012-06-21 | 2015-04-29 | 广东威创视讯科技股份有限公司 | 基于硬件系统的串口可靠传输方法及装置 |
CN107293316B (zh) * | 2016-04-13 | 2020-01-03 | 青岛海信电器股份有限公司 | 一种音频数据处理方法及装置 |
CN108491333A (zh) * | 2018-03-21 | 2018-09-04 | 广州多益网络股份有限公司 | 环形缓冲区的数据写入方法、装置、设备及介质 |
-
2020
- 2020-04-24 CN CN202010334521.6A patent/CN111506512B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101655824A (zh) * | 2009-08-25 | 2010-02-24 | 北京广利核系统工程有限公司 | 一种双口ram互斥访问的实现方法 |
CN101834978A (zh) * | 2009-12-23 | 2010-09-15 | 福建新大陆通信科技有限公司 | 一种数字机顶盒epg系统的优化方法 |
CN103163827A (zh) * | 2011-12-14 | 2013-06-19 | 沈阳高精数控技术有限公司 | 一种用于总线式数控系统的关键数据采集方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111506512A (zh) | 2020-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111506512B (zh) | 调试信息的处理方法、装置、电子设备、存储介质及系统 | |
US6915416B2 (en) | Apparatus and method for microcontroller debugging | |
CN105446806B (zh) | 一种应用程序无响应的处理方法及装置 | |
CN110377580B (zh) | 一种数据迁移方法、装置及设备 | |
US9043806B2 (en) | Information processing device and task switching method | |
CN112445729B (zh) | 操作地址确定方法、PCIe系统、电子设备及存储介质 | |
CN112131156B (zh) | 一种数据传输方法、系统及电子设备和存储介质 | |
CN113849433A (zh) | 一种总线控制器的执行方法、装置、总线控制器、计算机设备和存储介质 | |
WO2019047142A1 (zh) | 程序打补丁的方法、装置、微控制单元和终端设备 | |
CN108037932B (zh) | Spi-nand的配置文件获取方法和装置 | |
CN116909639A (zh) | 一种挂载系统、方法、集群以及存储介质 | |
CN111930651B (zh) | 一种指令执行方法、装置、设备及可读存储介质 | |
JP2007206933A (ja) | 情報処理装置、情報処理装置におけるブートローダ生成方法およびプログラム転送方法 | |
CN109298953B (zh) | 一种共享内存数据读写的装置和方法 | |
US20120089386A1 (en) | Simulation apparatus, computer-readable recording medium, and method | |
US9934035B2 (en) | Device and method for tracing updated predicate values | |
CN113064833A (zh) | 一种单片机仿真方法、系统、装置、设备及存储介质 | |
CN111143273B (zh) | 一种片上系统 | |
CN102650861B (zh) | 一种plc梯形图代码硬解题方法 | |
JPH10275092A (ja) | マイクロプロセッサのトレース情報出力方法 | |
CN112802527B (zh) | 嵌入式闪存高速编程的实现方法、嵌入式闪存的编程系统 | |
CN112073218B (zh) | 一种网络配置文件兼容方法、电子设备及存储介质 | |
CN115629678B (zh) | 一种触摸信息的处理方法、装置、设备及存储介质 | |
CN111694697B (zh) | 半导体装置及调试系统 | |
CN107894903B (zh) | Spi-nand的配置文件的io方法和装置 |
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 |