CN115480976B - 一种软硬件协同片上系统诊断方法 - Google Patents

一种软硬件协同片上系统诊断方法 Download PDF

Info

Publication number
CN115480976B
CN115480976B CN202211225207.XA CN202211225207A CN115480976B CN 115480976 B CN115480976 B CN 115480976B CN 202211225207 A CN202211225207 A CN 202211225207A CN 115480976 B CN115480976 B CN 115480976B
Authority
CN
China
Prior art keywords
software
data
chip
trace
hardware
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
Application number
CN202211225207.XA
Other languages
English (en)
Other versions
CN115480976A (zh
Inventor
田建军
刁永翔
汪宏志
宫晓渊
王欢
宋晓宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuxi Zhongxing Microsystem Technology Co ltd
Original Assignee
Wuxi Zhongxing Microsystem Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuxi Zhongxing Microsystem Technology Co ltd filed Critical Wuxi Zhongxing Microsystem Technology Co ltd
Priority to CN202211225207.XA priority Critical patent/CN115480976B/zh
Publication of CN115480976A publication Critical patent/CN115480976A/zh
Application granted granted Critical
Publication of CN115480976B publication Critical patent/CN115480976B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2268Logging of test results
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种软硬件协同片上系统诊断方法,该方法包括:接收片上系统的硬件Trace数据,当所述片上系统的CPU在运行中检测到命令执行异常时,将软件日志数据进行缓存;监测所述软件日志数据的缓存数据量,当所述缓存数据量达到预定义阈值时,读出所缓存的软件日志数据;根据读出的所述软件日志数据生成软件Trace数据,并将所述硬件Trace数据和所述软件Trace数据输出到片外进行解析。本发明的方法能够增强系统问题诊断分析能力,提高系统问题分析效率并且节约芯片调试成本。

Description

一种软硬件协同片上系统诊断方法
技术领域
本发明属于芯片调试领域,特别涉及一种软硬件协同片上系统诊断方法。
背景技术
在芯片调试阶段,片内数据和指令的跟踪对于片上系统的诊断是至关重要的。在片上处理器调试过程,需要解决处理器运行状态的实时跟踪观测问题。越来越多的处理器厂商开始提供硬件片上Trace即跟踪功能。片上Trace系统通过专用硬件设计,以非入侵方式实时记录程序执行路径和数据读写等信息,随后将有效信息压缩成Trace数据流,然后通过专用数据通道传输至调试主机,最后通过外部接收工具接收解压缩Trace数据流,恢复程序运行信息以进行系统调试和性能分析。常用的两种片上调试方法包括软件日志调试方法和CoreSight Trace数据分析方法。
其中,软件日志调试是指在系统软件运行过程中,额外加入开发的日志调试程序,该日志调试程序随系统软件一起运行,对系统运行状态进行记录,对寄存器状态和软件执行或跳转标记进行日志生成,通过预留调试接口(通常为UART通用异步收发传输器)对外输出,由外部工具进行接收存储为文本形式,最后由调试人员进行系统分析和调试。所述UART是一种异步收发传输器。它将要传输的资料在串行通信与并行通信之间进行转换。作为将并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。UART工作原理分为发送数据过程和接收数据过程,具体接口连接方式如图1所示。发送数据端TX用于连接对端设备的接收数据端RX。GND为接地端,保证收发设备共地,具有统一的参考平面,在发送数据过程中,空闲状态下线路处于高电平;当收到发送数据指令后,拉低线路一个数据位的时间,然后数据按低位到高位依次发送,数据发送完毕后,然后发送奇偶校验位和停止位(停止位为高电平),一帧数据发送结束。而在接收数据过程中,空闲状态下线路处于高电位;当检测到线路的下降沿即线路电位由高电位变为低电位时说明线路存在数据传输,按照约定的波特率从低位到高位接收数据,数据接收完毕后,然后接收并比较奇偶校验位是否正确,如果正确,则通知后续设备准备接收数据或存入缓存。由于UART传输速率较低,在面对CPU多核复杂场景下生成的日志信息,可能影响对外输出,进而导致日志信息即使已经正常生成也不能快速无损地输出至片外,造成日志记录丢失,最终影响系统调试分析。软件日志程序的开发编写也受到UART传输速率的限制,在调试过程中还需要反复修改日志输出代码或等级以控制信息量大小和适应输出带宽,势必造成软件程序维护成本过高和使用便捷性较低。
此外,尽管软件日志调试方法可以直观的记录反映片内寄存器状态和软件预设标记,帮助测试人员进行系统问题大致定位,但是对于较复杂的系统问题难以进行更深层次分析。为支持软件日志输出功能,在芯片封装加工时还需要保留专用的对外调试接口,增加了封装成本。例如在分析CPU多核协同工作场景时,系统软件本身就较复杂,再加上额外的调试程序会造成整个软件复杂度极大增加。此外,硬件内部数据流控制和状态机跳转逻辑全部由硬件电路设计实现,一旦芯片制造出来后这些电路就难以更改,而软件通常难以获取硬件内部状态机和关键数据流等实时信息,因此硬件自身设计的复杂性和不可观测性会极大地增加芯片工作异常的风险。如果芯片工作过程中出现异常,仅靠典型软件日志数据进行硬件诊断,很有可能出现系统问题无法定位和分析的情况。
所述CoreSight Trace数据分析方法建立在开放体系结构CoreSight的基础上。SoC设计人员能够将其他IP内核的调试和跟踪功能添加到CoreSight基础结构中。CoreSight包括ARM处理器的各种跟踪宏单元、系统和软件测量以及一整套IP块,以便对各种复杂的多核SoC进行调试和跟踪。CoreSight网络中通常包括Trace通路。Trace通路用于将CPU core即处理器核的内部信息输出到外部。通过CoreSight网络的Trace通路,可以实现对CPU core的数据追踪功能。典型的CPU(4cores)CoreSight网络的Trace通路如图2所示。ETM(Embedded Trace Macrocell)负责追踪处理器的信息,将信息封装并通过ATB总线(AMBA Trace Bus)发送到Trace总线上。通过配置Trace总线上的CoreSight funnel和replicator组件,将ATB数据发送给CoreSight ETB(Embedded Trace Buffer)和TPIU组件(Trace Port Interface),最终输出至片外。CPU每个core在运行期间由各自ETM对其监控并以ATB格式输出对应追踪信息。CoreSight funnel组件通过配置将接收到的4路ATB数据输出为1路ATB数据后,送至CoreSight replicator组件。CoreSight replicator组件将接收到的1路ATB数据复制为2路,分别送至CoreSight TPIU和CoreSight ETB组件。CoreSightTPIU组件将接收到的ATB数据通过内部处理后以串行方式,从芯片管脚发送到片外。其中Trace_out_clk为输出时钟,供外部工具采样使用;Trace_ctrl和Trace_data为待采样数据,由外部工具使用Trace_out_clk对其进行双沿采样,从而实现数据接收。而CoreSightETB组件将接收到的ATB数据缓存至其内部RAM中,由外部调试工具进行数据读取。CoreSight网络的Trace通路通过对其内部CPU的运行进行数据追踪,输出至片外进行系统分析,能够解决较为复杂的系统问题。
尽管利用典型CoreSight Trace数据进行系统问题分析能够对片内进行硬件数据流和指令流追踪,但CoreSight Trace数据由ETM生成,抓取的是片内硬件数据流和指令流。为节约片上数据带宽,通常采用高压缩率算法,导致数据不具备直接可读性,需要通过片外专用的解析工具进行数据还原才能查看使用。而抓取的Trace数据只包含硬件追踪信息,与系统运行期间最直观的调试信息即各模块寄存器状态值或软件标记等信息缺乏关联性。并且Trace数据格式固定,只能通过配置切换为有限种类的数据格式,而不支持加入用户自定义数据格式。软件调试信息是针对实际系统应用场景进行开发维护的,通常这些信息能够较直观的反映系统运行状态,而无需专用工具进行数据还原解析。由于不支持加入灵活的软件调试信息,因此不能较好的支持系统软硬件协同诊断分析。
发明内容
本发明的目的在于提供一种软硬件协同片上系统诊断方法,以解决传统的软件日志调试方法和传统CoreSight Trace数据分析方法存在的问题。所述软硬件协同片上系统诊断方法包括:
接收片上系统的硬件Trace数据,当所述片上系统的CPU在运行中检测到命令执行异常时,将软件日志数据进行缓存;
监测所述软件日志数据的缓存数据量,当所述缓存数据量达到预定义阈值时,读出所缓存的软件日志数据;
根据读出的所述软件日志数据生成软件Trace数据,并将所述硬件Trace数据和所述软件Trace数据输出到片外进行解析。
优选地,所述片上系统包括日志信息缓存单元,用于缓存所述软件日志数据,当所述片上系统CPU为多核处理器时,所述日志信息缓存单元具有多个缓存模块,每个缓存模块与所述片上系统的一个处理器核相对应,用于缓存相应处理器核独立生成的软件日志数据。
优选地,所述片上系统包括Trace数据生成单元,所述根据读出的所述软件日志数据生成软件Trace数据,进一步包括:
由所述Trace数据生成单元读出所述日志信息缓存单元所缓存的软件日志数据,其中将软件日志数据封装转换为ATB格式的软件Trace数据。
优选地,所述软件日志数据包括Trace ID信息,用于标识处理器核,当对所述Trace数据进行解析时,通过ATB格式的Trace数据中的Trace ID信息来确定该数据所属的处理器核。
优选地,所述监测所述软件日志数据的缓存数据量,进一步包括:
由所述Trace数据生成单元采用轮询方式循环读取所述多个缓存模块中缓存的软件日志数据,当读出所缓存的软件日志数据时,每次读取固定长度的软件日志数据。
优选地,所述预定义阈值和所述固定长度均为可配置参数。
优选地,所述软件日志数据包括CPU的关键寄存器状态和软件执行标记。
优选地,所述硬件Trace数据和所述软件日志数据均包括时间戳信息,用于表示当前系统时间。
优选地,所述将硬件Trace数据和软件Trace数据输出到片外进行解析,进一步包括:根据所述时间戳信息,将硬件Trace数据和软件日志数据进行合并整理。
优选地,所述将硬件Trace数据和软件Trace数据输出到片外进行解析,进一步包括:
将所述硬件Trace数据和所述软件Trace数据通过CoreSight Trace网络转换为TPIU标准输出时序并输出到片外,利用外部接收工具存储并解析ATB格式的软件Trace数据,以识别所述软件日志数据。
相比于现有技术,本发明具有以下优点:
本发明的方法得到的Trace数据同时包含软件日志数据和硬件Trace数据,将软硬件信息有效关联起来更有利于进行软硬件协同分析定位,便于测试人员获取错误场景下的硬件Trace数据和系统运行期间最直观的调试信息。通过复用既有的CoreSight TPIU端口,节约了芯片PAD资源,同时降低了封装成本。在单位时间内能够提供更多的调试信息,降低了软件维护及调试时间成本。所生成的日志信息能够较直观的反映系统运行状态和具备较强的可读性和灵活性,更符合测试人员的使用习惯,能够大幅提高产品调试效率,克服了传统软件日志调试方法和传统CoreSight Trace数据分析方法存在的缺陷。
本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可以通过在说明书、权利要求书以及附图中所指出的结构来实现和获取。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见地,下面描述中的附图是本发明的某些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获取其他的附图。
图1示出了根据现有技术的典型UART连接结构示意图。
图2示出了根据现有技术的典型CoreSight网络的Trace通路示意图。
图3示出了根据本发明的软硬件协同片上系统诊断方法实现架构示意图。
图4示出了根据本发明的log_trace_gen单元状态迁移控制示意图。
图5示出了根据本发明的软硬件协同片上系统诊断方法的执行流程示意图。
图6示出了根据本发明的软硬件协同片上系统诊断过程的控制流图。
图7示出了根据现有技术的SATA DMA写操作的帧通信状态示意图。
图8示出了根据现有技术的DMA写操作正确条件下的Trace数据示意图。
图9-图11示出了根据现有技术的DMA写操作的不同错误条件下的Trace数据示意图。
图12示出了根据本发明的软硬件协同片上系统诊断方法生成的在DMA写操作正确条件下的软件Trace数据示意图。
图13-图15示出了根据本发明的软硬件协同片上系统诊断方法生成的在DMA写操作的不同错误条件下的软件Trace数据示意图。
图16-图18示出了根据本发明的将软件日志数据和硬件Trace数据合并整理后的软硬件Trace数据示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获取的所有其他实施例,都属于本发明保护的范围。
针对传统的软件日志调试方法和传统CoreSight Trace数据分析方法存在的局限性和缺陷,本发明提出了一种软硬件协同片上系统诊断方法,将软件日志数据缓存封装处理后加入到CoreSight Trace网络,然后将包含软件日志和硬件信息的Trace数据输出至片外,解析过滤筛选关键数据,将软硬件信息进行关联、匹配和整合,利用软件日志数据的灵活性及直观可读性和硬件内部关键追踪信息,最后通过软硬件协同系统诊断的方法快速有效地实现系统问题定位分析,以此解决软件日志调试方法无法应对较复杂系统较深层次问题分析、需保留对外调试端口(UART)和数据传输速率偏低的问题,以及传统CoreSightTrace数据分析方法与软件运行的关联性弱并且不支持用户自定义数据格式以及灵活性较差的问题,从而增强系统问题诊断分析能力,提高系统问题分析效率和节约芯片调试成本。
本发明首先在典型CoreSight网络基础架构上,设置log_buf和log_trace_gen单元,将软件日志数据加入到CoreSight Trace网络,并支持多核处理器并行生成独立的软件日志信息,通过解析输出到片外的软硬件Trace数据完成系统问题诊断分析。图3为本发明软硬件协同片上系统诊断方法实现架构的示意图,可见本发明设计由发明单元和标准IP单元组成,其中发明单元包括log_buf和log_trace_gen单元,标准IP单元为CoreSight组件单元。
所述log_buf单元为日志信息缓存单元。该单元内部包含多个缓存模块core_buf,分别用于缓存处理器核的软件日志数据。如图3所示,log_buf单元通过APB总线(AdvancedPeripheral Bus)与CPU进行通信。core 0_buf~core 3_buf分别用于缓存CPU core 0~CPU core 3通过APB总线写入的软件日志数据。每个core_buf数据宽度为32位,深度为64。在具体的应用中,缓存模块的设计参数可以根据实际应用进行调整。
所述log_trace_gen单元为Trace数据生成单元。该单元控制读取log_buf单元中缓存的软件日志数据,然后将数据封装转换为标准的ATB格式,最后传输至CoreSightTrace网络。
所述log_buf单元和log_trace_gen单元工作机制如下。当core 0_buf~core 3_buf写入的日志数据量超过预定义的阈值时,log_trace_gen单元采用轮询方式循环读取core 0_buf~core 3_buf缓存的软件日志数据,每次读取固定长度的软件日志数据。其中所述阈值和固定长度都是可配置参数。其中各buf可通过配置进行独立使能控制,即可屏蔽不期望的数据源。log_trace_gen单元读取日志数据的状态机迁移控制图如图4所示。采用轮询的方式监测log_buf单元内不同缓存模块的日志数据大小是否达到预定义阈值,当监测到某个缓存模块到达阈值后,将其缓存数据读取到log_trace_gen单元中。
图5示出了根据本发明的软硬件协同片上系统诊断方法的总体流程图。以图3的片上系统网络架构为基础,将本发明的片上系统具体诊断流程描述如下:
步骤101:接收片上系统的硬件Trace数据,当所述片上系统的CPU在运行中检测到命令执行异常时,将软件日志数据进行缓存。
结合图6从事件的角度所描述的软硬件协同片上系统诊断方法的执行流程图,在事件T1中,CPU core 0执行程序,通过配置ETM生成对应Trace数据,利用CoreSight Trace网络将数据传输至CoreSight Funnel单元。在事件T2中,CoreSight Funnel单元通过配置将接收到的Trace数据传递至CoreSight Replicator单元。事件T3中CoreSight Funnel单元将Trace数据复制2份,分别传输至CoreSight TPIU单元和ETB单元,ETB用于内部缓存,可通过外部调试工具读出数据,在事件T4中,CoreSight TPIU单元将Trace数据转换为TPIU标准输出时序并输出到片外,供外部接收工具存储解析。事件T1-T4属于传统CoreSightTrace数据传输和分析过程。然而在事件T5中,当CPU core 0运行中检测到命令执行异常后,进入本发明设计的日志生成程序分支,该日志生成程序向所述log_buf单元写入软件日志数据。如前所述,core 0_buf用于缓存CPU core 0写入的软件日志数据。因此日志程序向core 0_buf中写入软件日志数据,软件日志数据包括CPU的关键寄存器状态和软件执行标记。
步骤102:监测所述软件日志数据的缓存数据量,当所述缓存数据量达到预定义阈值时,读出所缓存的软件日志数据。
参见图6,在事件T6中,log_trace_gen单元采用轮询的方式监测log_buf单元内core 0_buf~core 3_buf缓存的日志数据大小是否达到预定义阈值,图6以core 0_buf为例,当监测到core 0_buf到达阈值后将其缓存数据读取到log_trace_gen单元中。
步骤103:根据读出的所述软件日志数据生成软件Trace数据,并将所述硬件Trace数据和所述软件Trace数据输出到片外进行解析。
参见图6,在事件T7中,所述log_trace_gen单元将读取到的日志数据按照标准的ATB总线格式进行转换,得到软件Trace数据,并传输至CoreSight Funnel单元,然后执行事件T8-T10。事件T8-T10分别与传统CoreSight Trace数据分析过程中的事件T2-T4类似,然而应当注意的是,此时传输的Trace数据是在事件T7中被转换为ATB格式的软件日志数据。因此,事件T8-T10具体包括,CoreSight Funnel单元通过配置将接收到的软件Trace数据传递至CoreSight Replicator单元。CoreSight Funnel单元将软件Trace数据复制2份,分别传输至CoreSight TPIU单元和ETB单元。CoreSight TPIU单元将软件Trace数据转换为TPIU标准输出时序并输出到片外,供外部接收工具存储解析。在实际情况下,根据不同数据源的就绪状态,以及CoreSight Funnel组件的配置仲裁策略,可以将硬件追踪信息和软件日志数据先后两次输出到片外,也可以以完整的数据包为单位而一起交织输出至片外。
因此,上述方法执行完成后,最终得到的Trace数据不仅包含硬件追踪信息,还包含软件日志数据,为软硬件协同诊断功能提供了支持,更有利于进行系统运行问题的定位分析。
为了便于举例说明,图6的实施例仅描述了CPU core 0,即处理器单核运行的场景。本领域技术人员可以理解,在实际应用中,还可以支持CPU core 0~CPU core 3的多核运行场景。多核场景与单核场景类似。多个处理器核并行执行,并生成独立的Trace数据,解析时通过ATB格式数据中的Trace ID信息区分目标处理器核,然后进行独立分析。
其中,上述软件日志数据需要由log_trace_gen单元转换为标准的ATB数据格式才能使用CoreSight Trace网络进行输出。表1示出了日志Trace数据帧格式的具体示例。该数据输出至片外后,由外部解析工具接收并识别其内容,还原得到整个日志内容供调试人员查看。
表1日志信息ATB数据格式
序号 内容(32位)
1 head
2 timestamp[63:32]
3 timestamp[31:0]
4 trace_data_0
n+3 trace_data_n-1
n+4 {15’d0,pressure_back,package_num[7:0],timestamp_en,trace_id[6:0]}
n+5 CRC32
n+6 tail
在表1的示例中,数据位域的具体定义为:
head:数据包头标记;
timestamp:时间戳;
trace_data:日志内容有效信息;
trace_id:ID信息,用于区分数据源来自哪个处理器核;
timestamp_en:是否使用时间戳功能标记;
package_num:数据包编号,用来检测是否丢包;
pressure_back:数据包内部分数据发生丢失标志;
CRC32:数据包校验位;
tail:数据包尾标记。
本领域技术人员可以理解,上述实施例中描述的方法步骤和装置的组件以及参数仅为举例。本领域技术人员可以根据需要,对上述软硬件协同片上系统诊断方法流程的多个步骤进行合并、增删或顺序调整,或者对CoreSight Trace网络架构进行容易想到的调整。而不应将本发明的构思限制于上述示例的具体结构、参数和流程。
接下来,以测试主机对SATA盘进行DMA写操作出现异常为例,来说明使用本发明所述的软硬件协同诊断方法相对于传统软件日志调试方法或传统CoreSight Trace数据分析方法的技术效果。假设在循环测试DMA写操作过程中出现多次异常,由于这些异常都是随机出现,因此给调试定位带来很大难度。在对DMA写操作关键步骤进行硬件Trace数据抓取,该Trace数据内容记录了如图7所示的SATA DMA写操作过程中主机和设备之间的帧通信状态。抓取的Trace数据经过解析还原后获得信息如图8~图11所示,其中图8为正确的Trace数据,图9~图11为发生异常的Trace数据。
由图7可知,在进行循环测试DMA写操作过程中发生3次不同类型的错误,分别如图9~图11所示。但是仅靠这些信息不足以进行系统诊断和故障分析解决,原因是这些数据只能表明曾经发生过某种错误,但是对在程序运行在哪次循环或执行何种操作发生了这些错误却并不明确。这就为测试人员带来极大困扰,甚至有可能造成该问题最终无法澄清和解决。
采用本发明提供的软硬件协同片上系统诊断方法,将系统运行中的软件日志封装处理后加入到Trace网络中,最后输出至片外解析还原后得到图12~图15所示的数据。其中图12为正确的日志Trace数据,图13~图15为发生错误异常的日志信息。
根据图13~图15,可以确定在测试过程中发生了三次执行命令错误,经解析后的软件日志数据提供了当前循环次数、配置信息、memory地址、数据和命令等内容。由于对硬件内部发生过何种错误并不清晰,仅通过以上提供的软件日志数据,也很难进行定位分析这些异常问题。然而,上述软件日志数据和硬件Trace数据中还携带有timestamp信息,该信息为原始数据生成时所对应的系统时间。虽然软硬件数据分别由不同数据源生成,但是可以通过timestamp信息是否一致来判定两者的时间关联性。将以上软件日志数据和抓取到的硬件Trace数据进行结合分析,将timestamp信息一致的数据进行合并整理后得到的结果如图16~图18所示。对上述整理后的软件日志数据和硬件Trace数据进行分析,可以直接得到如下数据:
1)由图16的第1行至第3行可知,测试过程在第9次循环时发生了错误,传输data长度为256字节,操作基地址为0xe79a5d50,该次错误原因为传输过程中发生了FIFOoverflow(倒数第3行)。
2)由图17的第1行至第3行可知,测试过程在第102次循环时发生了错误,传输data长度为256字节,操作基地址为0xe79a5ed0,该次错误原因为传输过程中发生了CRC错误(倒数第3行)。
3)由图18的第1行至第3行可知,测试过程在第225次循环时发生了错误,传输data长度为256字节,操作基地址为0x26b81280,该次错误原因为传输过程中发生了链路丢失(connection lost,倒数第3行)。
通过上述采用软硬件协同诊断分析过程得出的结论,测试人员可以更方便、更准确地识别错误场景,为错误场景再现提供了良好的支撑,对系统异常问题诊断分析提供了更有效的帮助信息。
本发明所涉及的系统环境不限于ARM CPU系列,还可以是诸如RISC_V和8051单片机等系统环境。本领域技术人员可以理解,当在上述系统环境下使用本发明时,可以根据需要在CoreSight Trace网络架构基础上增加相应的开发逻辑以支持对应的系统环境,本文不再详细说明。
可以看出,本发明提出的软硬件协同片上系统诊断方法,除了能够提供支持片上软硬件协同诊断分析功能之外,还解决了传统软件日志调试方法和传统CoreSight Trace数据分析方法存在的局限性和不足。具体解决问题如下:
(1)针对典型软件日志调试对较深层硬件问题诊断分析能力较差的问题,本发明的方法得到的最终Trace数据不仅包含软件日志数据,还包含硬件Trace数据。软件日志数据涵盖寄存器状态和执行状态,而硬件Trace数据针对测量片内数据流和指令流有明显帮助。通过两者的timestamp信息将软硬件信息有效关联起来,更有利于进行软硬件协同分析定位。
(2)针对典型软件日志调试方法需保留对外UART调试端口的缺陷,本发明的方法不再需要使用UART端口作为软件日志输出接口,而是复用已有的CoreSight TPIU端口。既节约了芯片PAD资源,又降低了封装成本。
(3)针对典型软件日志调试方法数据传输速率较低的问题,由于典型TPIU的传输速率为500MHz*16bit=8Gbps,远大于标准UART波特率(常用为9600bps),本发明的方法解决了软件日志程序由于受限于UART传输速率在调试过程中需要反复修改日志输出代码或等级以控制信息量大小的问题,在单位时间内能够提供更多的调试信息,降低了软件维护及调试时间成本。
(4)针对典型CoreSight Trace数据和软件运行关联性弱的问题,由于本发明的方法得到的Trace数据同时包含软件日志数据和硬件Trace数据,通过timestamp信息将两者关联起来,测试人员便于获取错误场景下的硬件Trace数据和系统运行期间最直观的调试信息,即各模块寄存器状态值或软件标记等,更有利于系统问题的定位分析。
(5)针对典型CoreSight Trace数据不支持自定义格式以及灵活性较差的缺陷,本发明的方法中软件日志生成程序是针对实际系统应用场景进行开发维护和灵活编写的,所生成的日志信息能够较直观的反映系统运行状态和具备较强的可读性和灵活性,更符合测试人员的使用习惯,能够大幅提高产品调试效率。
由此可见,采用本发明的方法,能够有效解决传统软件日志调试方法和传统CoreSight Trace数据分析方法存在的局限性和不足,通过软硬件信息关联定位分析,能够更精准地再现错误场景,获得更丰富、更有效的调试信息,极大地提高了系统问题分析能力和节约了芯片调试成本。
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (7)

1.一种软硬件协同片上系统诊断方法,其特征在于,包括:
接收片上系统的硬件Trace数据,当所述片上系统的CPU在运行中检测到命令执行异常时,将软件日志数据进行缓存;所述软件日志数据包括CPU的关键寄存器状态和软件执行标记;
监测所述软件日志数据的缓存数据量,当所述缓存数据量达到预定义阈值时,读出所缓存的软件日志数据;
根据读出的所述软件日志数据生成软件Trace数据,并将所述硬件Trace数据和所述软件Trace数据输出到片外进行解析;
所述片上系统包括日志信息缓存单元,用于缓存所述软件日志数据,当所述片上系统CPU为多核处理器时,所述日志信息缓存单元具有多个缓存模块,每个缓存模块与所述片上系统的一个处理器核相对应,用于缓存相应处理器核独立生成的软件日志数据;
所述将硬件Trace数据和软件Trace数据输出到片外进行解析,进一步包括:
利用CoreSight Trace网络中的CoreSight TPIU单元,将所述硬件Trace数据和所述软件Trace数据通过CoreSight Trace网络转换为TPIU标准输出时序并输出到片外,利用外部接收工具存储并解析ATB格式的软件Trace数据,以识别所述软件日志数据;
利用解析得到的硬件追踪信息和所述软件日志数据中的CPU的关键寄存器状态和软件执行标记,实现所述片上系统的运行异常定位。
2.根据权利要求1所述的软硬件协同片上系统诊断方法,其特征在于,所述片上系统包括Trace数据生成单元,所述根据读出的所述软件日志数据生成软件Trace数据,进一步包括:
由所述Trace数据生成单元读出所述日志信息缓存单元所缓存的软件日志数据,其中将软件日志数据封装转换为ATB格式的软件Trace数据。
3.根据权利要求2所述的软硬件协同片上系统诊断方法,其特征在于,所述软件日志数据包括Trace ID信息,用于标识处理器核,当对所述Trace数据进行解析时,通过ATB格式的Trace数据中的Trace ID信息来确定该数据所属的处理器核。
4.根据权利要求2所述的软硬件协同片上系统诊断方法,其特征在于,所述监测所述软件日志数据的缓存数据量,进一步包括:
由所述Trace数据生成单元采用轮询方式循环读取所述多个缓存模块中缓存的软件日志数据,当读出所缓存的软件日志数据时,每次读取固定长度的软件日志数据。
5.根据权利要求4所述的软硬件协同片上系统诊断方法,其特征在于,所述预定义阈值和所述固定长度均为可配置参数。
6.根据权利要求1所述的软硬件协同片上系统诊断方法,其特征在于,所述硬件Trace数据和所述软件日志数据均包括时间戳信息,用于表示当前系统时间。
7.根据权利要求6所述的软硬件协同片上系统诊断方法,其特征在于,所述将硬件Trace数据和软件Trace数据输出到片外进行解析,进一步包括:根据所述时间戳信息,将硬件Trace数据和软件日志数据进行合并整理。
CN202211225207.XA 2022-10-09 2022-10-09 一种软硬件协同片上系统诊断方法 Active CN115480976B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211225207.XA CN115480976B (zh) 2022-10-09 2022-10-09 一种软硬件协同片上系统诊断方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211225207.XA CN115480976B (zh) 2022-10-09 2022-10-09 一种软硬件协同片上系统诊断方法

Publications (2)

Publication Number Publication Date
CN115480976A CN115480976A (zh) 2022-12-16
CN115480976B true CN115480976B (zh) 2023-05-23

Family

ID=84393570

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211225207.XA Active CN115480976B (zh) 2022-10-09 2022-10-09 一种软硬件协同片上系统诊断方法

Country Status (1)

Country Link
CN (1) CN115480976B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116502576B (zh) * 2023-06-26 2023-10-20 北京象帝先计算技术有限公司 指令流跟踪验证方法及调试系统
CN117290190B (zh) * 2023-11-27 2024-02-13 博为科技有限公司 一种串口日志远程采集方法、装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101493847A (zh) * 2008-01-22 2009-07-29 中兴通讯股份有限公司 一种通讯片上系统芯片追踪调试的方法及装置
CN104182360A (zh) * 2014-08-18 2014-12-03 记忆科技(深圳)有限公司 多核环境的跟踪日志输出处理方法及系统
CN105677258A (zh) * 2016-02-23 2016-06-15 浪潮(北京)电子信息产业有限公司 一种日志数据管理方法及系统
CN106407028A (zh) * 2016-08-26 2017-02-15 佛山智能装备技术研究院 一种双缓冲式的机器人软件日志存储方法
CN112162879A (zh) * 2020-09-30 2021-01-01 中国科学院计算技术研究所 一种实时多核dsp软件的日志系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6996751B2 (en) * 2001-08-15 2006-02-07 International Business Machines Corporation Method and system for reduction of service costs by discrimination between software and hardware induced outages

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101493847A (zh) * 2008-01-22 2009-07-29 中兴通讯股份有限公司 一种通讯片上系统芯片追踪调试的方法及装置
CN104182360A (zh) * 2014-08-18 2014-12-03 记忆科技(深圳)有限公司 多核环境的跟踪日志输出处理方法及系统
CN105677258A (zh) * 2016-02-23 2016-06-15 浪潮(北京)电子信息产业有限公司 一种日志数据管理方法及系统
CN106407028A (zh) * 2016-08-26 2017-02-15 佛山智能装备技术研究院 一种双缓冲式的机器人软件日志存储方法
CN112162879A (zh) * 2020-09-30 2021-01-01 中国科学院计算技术研究所 一种实时多核dsp软件的日志系统

Also Published As

Publication number Publication date
CN115480976A (zh) 2022-12-16

Similar Documents

Publication Publication Date Title
CN115480976B (zh) 一种软硬件协同片上系统诊断方法
US6615370B1 (en) Circuit for storing trace information
US6732307B1 (en) Apparatus and method for storing trace information
US7058855B2 (en) Emulation interface system
US6918065B1 (en) Method for compressing and decompressing trace information
US6684348B1 (en) Circuit for processing trace information
US20220252665A1 (en) On-chip Debugging Device and Method
US6735747B2 (en) Pre-silicon verification path coverage
JP4512380B2 (ja) データを処理する方法と装置およびコンピュータ・プログラム製品
US7710969B2 (en) Rapid I/O traffic system
CN109254883B (zh) 一种片上存储器的调试装置及方法
CN111078492B (zh) 一种SoC内部总线的状态监控系统及方法
WO2014026600A1 (zh) 一种片上系统芯片追踪调试的方法及装置
EP1614043B1 (en) Diagnostic data capture within an integrated circuit
US20030233601A1 (en) Non-intrusive signal observation techniques usable for real-time internal signal capture for an electronic module or integrated circuit
US10970442B1 (en) Method of debugging hardware and firmware of data storage
CN112162879A (zh) 一种实时多核dsp软件的日志系统
CN111722968A (zh) 一种硬件调试方法、装置、系统及可读存储介质
CN114416452A (zh) 片上系统诊断方法和装置
TW202324103A (zh) 收集用於除錯及分析之運行時間資訊
CN112349336B (zh) 一种存储器测试装置
US20060282719A1 (en) Unique Addressable Memory Data Path
US7051237B2 (en) Program-controlled unit
US20060255978A1 (en) Enabling Trace and Event Selection Procedures Independent of the Processor and Memory Variations
US20070271046A1 (en) Scheme for improving bandwidth by identifying specific fixed pattern sequences as header encoding followed by the pattern count

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