CN118093235A - 一种芯片cpu异常诊断方法和装置 - Google Patents
一种芯片cpu异常诊断方法和装置 Download PDFInfo
- Publication number
- CN118093235A CN118093235A CN202311754940.5A CN202311754940A CN118093235A CN 118093235 A CN118093235 A CN 118093235A CN 202311754940 A CN202311754940 A CN 202311754940A CN 118093235 A CN118093235 A CN 118093235A
- Authority
- CN
- China
- Prior art keywords
- abnormality
- cpu
- information
- register
- axi bus
- 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
- 230000005856 abnormality Effects 0.000 title claims abstract description 77
- 238000003745 diagnosis Methods 0.000 title claims abstract description 30
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000004044 response Effects 0.000 claims abstract description 25
- 238000012544 monitoring process Methods 0.000 claims abstract description 10
- 230000002159 abnormal effect Effects 0.000 description 18
- 239000000725 suspension Substances 0.000 description 8
- 230000006399 behavior Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种芯片CPU异常诊断方法和装置,该方法包括:利用探测器模块监测芯片CPU的AXI接口信号,在所述探测器模块中预先设置内部寄存器,探测器模块设置在芯片CPU与系统总线之间;当检测到AXI总线的读写响应返回错误信号值时,确定出现异步异常,当预设时间段内未检测到AXI总线的读写响应时,确定出现挂死异常,并将出现异步异常和挂死异常时的CPU当前访问地址信息、寄存器信息以及AXI总线信息保存在内部寄存器中;在系统复位后,输出内部寄存器中的CPU当前访问地址信息、寄存器信息以及AXI总线信息,以实现异常诊断分析。本发明的方案实现了CPU异步异常和挂死的精确定位。
Description
技术领域
本发明属于芯片诊断领域,特别涉及一种芯片CPU异常诊断方法和装置。
背景技术
在软件程序运行过程中访问非法地址时可能导致处理器触发同步异常、异步异常甚至CPU挂死。其中,同步异常通常是由于CPU直接执行某个指令而产生异常,异常处理程序的返回地址可以表明导致该异常的指令,该类异常是精确的,直接通过系统coredump(操作系统在遇到程序崩溃时将异常信息进行打印的方法)信息就可以分析出产生CPU异常的原因。而异步异常的发生原因与处理器当前正在执行的指令无关,发生异步异常时,异常处理程序的返回地址无法表明导致该异常的指令,该类异常是不精确的。由于异常不是即时触发的,特别在复杂的业务软件系统中,系统coredump信息所指向的位置相比实际发生异常时的位置相差较远,因此软件开发人员很难定位到直接触发CPU异常的软件操作指令。而对于CPU直接挂死,软件程序无法继续运行,更无法看到任何CPU运行的现场信息,由于CPU已经无法进入debug模式,仿真调试工具也无法介入,因此软件开发人员遇到该问题时更是无从应对。
相关技术中对CPU异常的诊断其中有些是对CPU占用率异常的纯软件诊断,无法对CPU本身出现的异常进行处理,并不能定位CPU发生异常的根源,还有些硬件诊断方法在对CPU挂死异常或者CPU异步异常的检测中所获取的异常信息不准确或实现方式较为复杂,缺少通用性。
发明内容
本发明的目的在于提供一种芯片CPU异常诊断方法和装置,旨在针对CPU异步异常和CPU挂死问题,实现准确并通用的诊断和调试。
根据本发明的第一方面,提供了一种芯片CPU异常诊断方法,包括:
利用探测器模块监测芯片CPU的AXI接口信号,在所述探测器模块中预先设置内部寄存器,所述探测器模块设置在所述芯片CPU与系统总线之间;
当检测到AXI总线的读写响应返回错误信号值时,确定出现异步异常,当预设时间段内未检测到AXI总线的读写响应时,确定出现挂死异常,并将出现异步异常和挂死异常时的CPU当前访问地址信息、寄存器信息以及AXI总线信息保存在所述内部寄存器中;
在系统复位后,输出所述内部寄存器中的CPU当前访问地址信息、寄存器信息以及AXI总线信息,以实现异常诊断分析。
优选地,所述内部寄存器为粘性寄存器。
优选地,所述寄存器信息包括程序计数器指针信息,用于指示发生异常时代码执行的位置。
优选地,所述AXI总线信息包括发生异常的CPU核ID。
优选地,所述确定出现异步异常,进一步包括:
当检测到AXI总线的读响应RRESP或写响应BRESP返回SLVERR或DECERR信号时,确定出现异步异常。
根据本发明的第二方面,提供了一种芯片CPU异常诊断装置,包括:
监测单元,用于利用探测器模块监测芯片CPU的AXI接口信号,在所述探测器模块中预先设置内部寄存器,所述探测器模块设置在所述芯片CPU与系统总线之间;
记录单元,用于当检测到AXI总线的读写响应返回错误信号值时,确定出现异步异常,当预设时间段内未检测到AXI总线的读写响应时,确定出现挂死异常,并将出现异步异常和挂死异常时的CPU当前访问地址信息、寄存器信息以及AXI总线信息保存在所述内部寄存器中;
诊断单元,用于在系统复位后,输出所述内部寄存器中的CPU当前访问地址信息、寄存器信息以及AXI总线信息,以实现异常诊断分析。
相比于相关技术,本发明的技术方案具备以下优点:
1.本发明不依赖看门狗,可以直接锁定CPU当前的异常访问行为,提高了实时性,精确记录CPU所访问的异常地址,这对于解决CPU异步异常问题尤为重要。
2.本发明检测到的异常现场信息既包含CPU通用寄存器信息,也包含总线信息,提高了信息的完整性,对于多核处理器场景也可以获取到产生异常的Core ID信息,对调试人员的问题分析帮助更大。
3.系统复位后,异常现场信息不丢失,提高了信息的持久性,而且实现机制更为简单,只需要根据AXI总线信号抓取异常时的现场信息。此外该方法具有通用性,适用于所有基于AXI总线的SoC系统。
本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可以通过在说明书、权利要求书以及附图中所指出的结构和流程来实现和获取。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单介绍,显而易见的是,下面描述中的附图是本发明的某些实施例,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获取其他的附图。
图1是根据本发明的芯片CPU异常诊断方法的流程图。
图2是根据本发明的芯片CPU异常诊断装置结构框图。
图3是根据本发明的Prober模块异常检测流程图。
具体实施方式
为了使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获取的所有其他实施例,都属于本发明保护的范围。
基于以上分析,本发明提出一种芯片CPU异常诊断方法和装置,针对CPU异步异常和CPU挂死问题,实现了通用的解决方案。由于CPU异步异常和CPU挂死通常都是因为CPU访问非预期的地址而导致的,因此本发明通过在CPU和系统总线之间添加探测器Prober模块来监控AXI接口(Advanced eXtensible Interface,先进可扩展接口)信号,从而精确地获取CPU发生异常时的信息。这些异常信息包括CPU发生异常时所访问的内存地址、AXIID、程序计数器PC采样地址以及其它通用寄存器信息等。基于这些异常信息记录,结合软件程序的反汇编代码,可以分析出导致CPU异常的软件操作。Prober模块将这些异常信息存储在粘性(Sticky)寄存器中,即使芯片发生复位也不会丢失,在复位后也可以供调试人员查看和分析。
参见图1的流程图,本发明提供的所述芯片CPU异常诊断方法包括:
步骤101:利用探测器模块监测芯片CPU的AXI接口信号,在所述探测器模块中预先设置内部寄存器,所述探测器模块设置在所述芯片CPU与系统总线之间。
如图2所示,在CPU子系统和系统总线之间增加一个Prober模块,用于检测CPU端口的AXI接口信号,当检测到信号异常时,将相应的异常信息保存在其内部的粘性(Sticky)寄存器中,其中Sticky寄存器在系统热复位时不会清除其中的内容。
在优选的实施例中,监测并存储的异常信息包括CPU通用寄存器信息(包括程序计数器PC指针)和AXI总线信息(包括ID信息和地址信息)。其中PC指针所存储的信息指示发生异常时代码执行的位置,而AXI总线信息中的ID信息则指示发生异常的CPU核ID,AXI总线信息中地址信息则直接表明CPU所访问的导致异常的内存地址,这对于定位异步异常问题和CPU挂死问题都尤为重要。
步骤102:当检测到AXI总线的读写响应返回错误信号值时,确定出现异步异常,当预设时间段内未检测到AXI总线的读写响应时,确定出现挂死异常,并将出现异步异常和挂死异常时的CPU当前访问地址信息、寄存器信息以及AXI总线信息保存在所述内部寄存器中。
如图3所示,Prober模块实时检测CPU端口的AXI信号,当CPU访问到异常地址时,若该地址为空洞地址,则CPU进行读写访问时的AXI RRESP/BRESP(其中RRESP对应读访问,BRESP对应写访问,均为AXI总线的响应信号)将返回信号值2或者3(其中2代表SLVERR,即Master的访问已成功到达Slave端,但Slave端返回错误,而3代表DECERR,即没有对应的Slave端,由系统总线返回错误),最终会触发CPU进入异步异常,同时Prober模块记录该笔访问请求所对应的异常信息。
若该地址处于未初始化模块的地址空间,或者CPU到所访问的目的端之间的硬件通路上总线已发生异常,则CPU进行读写访问时RVALID/BVALID信号(RVALID和BVALID分别为AXI总线读响应有效信号和写响应有效信号,指示通道正在发出有效的读响应和写响应)将无响应,最终会导致CPU挂死,如果Prober模块检测到对应的访问请求一直无响应且已超时,则也将该笔访问请求所对应的异常信息进行记录。
步骤103:在系统复位后,输出所述内部寄存器中的CPU当前访问地址信息、寄存器信息以及AXI总线信息,以实现异常诊断分析。
对于CPU异步异常场景,当发生异步异常时,在系统异常处理服务程序中可以输出Sticky寄存器中的内容,以帮助调试人员定位发生CPU异常的原因。
对于CPU挂死的场景,当发生CPU挂死时,Prober模块已经将异常信息存储在Sticky寄存器中,调试人员可以连接仿真调试工具,通过调试访问端口DAP访问这些Sticky寄存器来获取异常信息。由于Sticky寄存器中信息复位不会丢失,在发生系统复位之后,也可以在系统初始化阶段直接输出Sticky寄存器中的内容,从而定位出此前发生CPU挂死的原因。
可见,本发明提出的芯片CPU异常诊断方法,相比于相关技术具备以下优点:
1.本发明不依赖看门狗,可以直接锁定CPU当前的异常访问行为,提高了实时性,精确记录CPU所访问的异常地址,这对于解决CPU异步异常问题尤为重要。
2.本发明检测到的异常现场信息既包含CPU通用寄存器信息,也包含总线信息,提高了信息的完整性,对于多核处理器场景也可以获取到产生异常的Core ID信息,对调试人员的问题分析帮助更大。
3.系统复位后,异常现场信息不丢失,提高了信息的持久性,而且实现机制更为简单,只需要根据AXI总线信号抓取异常时的现场信息。此外该方法具有通用性,适用于所有基于AXI总线的SoC系统。
相应地,本发明在第二方面提供了一种芯片CPU异常诊断装置,包括:
监测单元,用于利用探测器模块监测芯片CPU的AXI接口信号,在所述探测器模块中预先设置内部寄存器,所述探测器模块设置在所述芯片CPU与系统总线之间;
记录单元,用于当检测到AXI总线的读写响应返回错误信号值时,确定出现异步异常,当预设时间段内未检测到AXI总线的读写响应时,确定出现挂死异常,并将出现异步异常和挂死异常时的CPU当前访问地址信息、寄存器信息以及AXI总线信息保存在所述内部寄存器中;
诊断单元,用于在系统复位后,输出所述内部寄存器中的CPU当前访问地址信息、寄存器信息以及AXI总线信息,以实现异常诊断分析。
上述装置可通过上述第一方面的实施例提供的芯片CPU异常诊断方法实现,具体的实现方式可以参见第一方面的实施例中的描述,在此不再赘述。
可以理解,上述实施例中描述的电路结构、名称和参数仅为举例。本领域技术人员还可以根据使用需要,对以上多个实施例的结构特征进行容易想到的组合和调整,而不应将本发明的构思限制于上述示例的具体细节。
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种芯片CPU异常诊断方法,其特征在于,包括:
利用探测器模块监测芯片CPU的AXI接口信号,在所述探测器模块中预先设置内部寄存器,所述探测器模块设置在所述芯片CPU与系统总线之间;
当检测到AXI总线的读写响应返回错误信号值时,确定出现异步异常,当预设时间段内未检测到AXI总线的读写响应时,确定出现挂死异常,并将出现异步异常和挂死异常时的CPU当前访问地址信息、寄存器信息以及AXI总线信息保存在所述内部寄存器中;
在系统复位后,输出所述内部寄存器中的CPU当前访问地址信息、寄存器信息以及AXI总线信息,以实现异常诊断分析。
2.根据权利要求1所述的芯片CPU异常诊断方法,其特征在于,所述内部寄存器为粘性寄存器。
3.根据权利要求1所述的芯片CPU异常诊断方法,其特征在于,所述寄存器信息包括程序计数器指针信息,用于指示发生异常时代码执行的位置。
4.根据权利要求1所述的芯片CPU异常诊断方法,其特征在于,所述AXI总线信息包括发生异常的CPU核ID。
5.根据权利要求1所述的芯片CPU异常诊断方法,其特征在于,所述确定出现异步异常,进一步包括:
当检测到AXI总线的读响应RRESP或写响应BRESP返回SLVERR或DECERR信号时,确定出现异步异常。
6.一种芯片CPU异常诊断装置,其特征在于,包括:
监测单元,用于利用探测器模块监测芯片CPU的AXI接口信号,在所述探测器模块中预先设置内部寄存器,所述探测器模块设置在所述芯片CPU与系统总线之间;
记录单元,用于当检测到AXI总线的读写响应返回错误信号值时,确定出现异步异常,当预设时间段内未检测到AXI总线的读写响应时,确定出现挂死异常,并将出现异步异常和挂死异常时的CPU当前访问地址信息、寄存器信息以及AXI总线信息保存在所述内部寄存器中;
诊断单元,用于在系统复位后,输出所述内部寄存器中的CPU当前访问地址信息、寄存器信息以及AXI总线信息,以实现异常诊断分析。
7.根据权利要求6所述的芯片CPU异常诊断装置,其特征在于,所述内部寄存器为粘性寄存器。
8.根据权利要求6所述的芯片CPU异常诊断装置,其特征在于,所述寄存器信息包括程序计数器指针信息,用于指示发生异常时代码执行的位置。
9.根据权利要求6所述的芯片CPU异常诊断装置,其特征在于,所述AXI总线信息包括发生异常的CPU核ID。
10.根据权利要求6所述的芯片CPU异常诊断装置,其特征在于,所述诊断单元,进一步用于:
当检测到AXI总线的读响应RRESP或写响应BRESP返回SLVERR或DECERR信号时,确定出现异步异常。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311754940.5A CN118093235A (zh) | 2023-12-18 | 2023-12-18 | 一种芯片cpu异常诊断方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311754940.5A CN118093235A (zh) | 2023-12-18 | 2023-12-18 | 一种芯片cpu异常诊断方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118093235A true CN118093235A (zh) | 2024-05-28 |
Family
ID=91153997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311754940.5A Pending CN118093235A (zh) | 2023-12-18 | 2023-12-18 | 一种芯片cpu异常诊断方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118093235A (zh) |
-
2023
- 2023-12-18 CN CN202311754940.5A patent/CN118093235A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8255874B2 (en) | Apparatus and method for automatically extracting interface of embedded software | |
JP5328531B2 (ja) | データ処理装置の監視およびその監視データの集計 | |
US6944796B2 (en) | Method and system to implement a system event log for system manageability | |
US7627807B2 (en) | Monitoring a data processor to detect abnormal operation | |
US20130159977A1 (en) | Open kernel trace aggregation | |
US20080244536A1 (en) | Evaluating static analysis results using code instrumentation | |
EP0084431A2 (en) | Monitoring computer systems | |
TWI544410B (zh) | 利用執行單步驟以進行編碼診斷 | |
US8495427B2 (en) | Detecting defects in deployed systems | |
WO2021244535A1 (zh) | 车辆软件故障检测方法、装置、设备及存储介质 | |
CN111078492B (zh) | 一种SoC内部总线的状态监控系统及方法 | |
US6331957B1 (en) | Integrated breakpoint detector and associated multi-level breakpoint techniques | |
JP2003122599A (ja) | 計算機システムおよび計算機システムにおけるプログラム実行監視方法 | |
US20020073359A1 (en) | System and method for high priority machine check analysis | |
US20070226471A1 (en) | Data processing apparatus | |
US8954932B2 (en) | Crash notification between debuggers | |
CN118093235A (zh) | 一种芯片cpu异常诊断方法和装置 | |
CN113612661B (zh) | 检验程序稳定性的方法、装置、计算设备及存储介质 | |
CN116414632A (zh) | 片上系统的故障定位方法、片上系统、设备及存储介质 | |
JP2006323726A (ja) | モニタプログラムおよびリアルタイムトレースシステム | |
CN117909160B (zh) | 基于物联网的固件崩溃分析方法及装置 | |
US11900150B2 (en) | Methods and systems for collection of system management interrupt data | |
CN117194118A (zh) | 用于处理单元系统的数据访问方法及数据访问装置 | |
CN112859526B (zh) | 扫描光刻机的同步诊断方法、装置、介质及电子设备 | |
JPH10307763A (ja) | バス監視装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication |