CN116909819A - 一种处理器调试方法、装置、计算机设备及处理器 - Google Patents

一种处理器调试方法、装置、计算机设备及处理器 Download PDF

Info

Publication number
CN116909819A
CN116909819A CN202310852263.4A CN202310852263A CN116909819A CN 116909819 A CN116909819 A CN 116909819A CN 202310852263 A CN202310852263 A CN 202310852263A CN 116909819 A CN116909819 A CN 116909819A
Authority
CN
China
Prior art keywords
stack
monitoring
processor
address
digital
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
Application number
CN202310852263.4A
Other languages
English (en)
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.)
Gree Electric Appliances Inc of Zhuhai
Zhuhai Zero Boundary Integrated Circuit Co Ltd
Original Assignee
Gree Electric Appliances Inc of Zhuhai
Zhuhai Zero Boundary Integrated Circuit 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 Gree Electric Appliances Inc of Zhuhai, Zhuhai Zero Boundary Integrated Circuit Co Ltd filed Critical Gree Electric Appliances Inc of Zhuhai
Priority to CN202310852263.4A priority Critical patent/CN116909819A/zh
Publication of CN116909819A publication Critical patent/CN116909819A/zh
Pending legal-status Critical Current

Links

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/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
    • 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

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

本发明提供了一种处理器调试方法、装置、计算机设备及处理器,所述方法包括设置处理器目标堆栈的数字堆栈监控模块;基于所述数字堆栈监控模块对所述目标堆栈中的监测地址进行监测;若所述监测地址的数据变化,则判定所述目标堆栈出现溢出异常。本发明提供的方法能够准确定位堆栈溢出问题,提高处理器调试效率。

Description

一种处理器调试方法、装置、计算机设备及处理器
技术领域
本申请涉及微处理器技术领域,特别涉及一种处理器调试方法、装置、计算机设备及处理器。
背景技术
随着集成电路规模的增大和工艺技术的提高,集成电路的可测试性已经成为产品可靠性和成品率的重要指标。微处理器在产品开发过程中,程序的调试也随着硬件平台和使用环境变得非常复杂,软件的调试和成功运行成为应用产品研发和投入使用的关键。
一个功能强大且使用方便的调试接口成为缩短产品上市时间、保证产品质量的必要工具,其中处理器的调试技术也是其主要参数之一。联合测试工作组(Jonit TestAction Group,JTAG)调试技术是目前RISC-V CPU的主要有效调试方式之一。ARM/RISC-VCPU设计中集成了JTAG协议,能够实现系统级和芯片级的调试、诊断和测试。
堆栈(Stack)是限定仅在一端进行插入或删除操作的线性表,可用进行插入或删除操作的一端称为栈顶(top),另一端称为栈底(bottom),不含元素的空表称为空栈。由于堆栈只允许在一端进行操作,因此按照后进先出(Last In First Out,LIFO)的规则运作。基于堆栈的定义和结构,栈顶的位置是可变的,空栈时栈顶和栈底重合,而满栈时栈顶离栈底最远。其中ARM为堆栈提供硬件支持,使用一个专门的寄存器堆栈指针(SP)指向堆栈的栈顶。且各种模式均有各自独立的堆栈指针,有各自独立的堆栈空间。
现有的RISC-V内核MCU调试模式可以包括调试程序将特定程序写入MCU的RAM;MCU在调试模式和工作模式间不断循环切换,以完成被调试程序的全部下载;在调试模式下调试器将执行函数的参数写入RAM中,将dpc寄存器中的值改为执行函数的起始地址,设置dmcontrol寄存器使得MCU进入工作模式;在工作模式下根据dpc寄存器中的值执行特定程序的相应函数,将执行结果写入RAM;执行函数以ebreak指令结尾,当执行到ebreak时,MCU从工作模式进入调试模式。其中特定程序可以包括擦除函数、编程函数以及校验函数。然而现有的调试方法难以避免CPU调试快速定位堆栈溢出的场景,且通用性较差。
发明内容
为解决现有的处理器调试过程中堆栈溢出难以监测的问题,本申请提供一种处理器调试方法、装置、计算机设备及处理器,能够准确定位堆栈溢出问题,提高处理器调试效率。
一方面,提供了一种处理器调试方法,所述方法包括:
设置处理器目标堆栈的数字堆栈监控模块;
基于所述数字堆栈监控模块对所述目标堆栈中的监测地址进行监测;
若所述监测地址的数据变化,则判定所述目标堆栈出现溢出异常。
在一些实施例中,所述设置处理器目标堆栈的数字堆栈监控模块,包括:
在JTAG/SWD协议的CPU调试单元的基础上设置所述数字堆栈监控模块。
在一些实施例中,所述基于所述数字堆栈监控模块对所述目标堆栈中的监测地址进行监测之前,所述方法还包括:
基于数字监控模块设置实时操作系统任务堆栈的第一地址的寄存器;所述第一地址包括栈顶地址与第一常数之和;
在各个任务堆栈的地址空间填充第一固定数据或默认数据,在所述第一地址到栈顶地址之间填充第二固定值或默认数据。
在一些实施例中,所述基于所述数字堆栈监控模块对所述目标堆栈中的监测地址进行监测之前,所述方法还包括:
在RTOS程序编译各个函数返回时,在数字堆栈监控模块的寄存器设置监控标记;
将设置监控标记的地址作为所述监测地址。
在一些实施例中,判定所述目标堆栈出现溢出异常后,所述方法还包括:
数字堆栈监控模块中断,CPU自动保存现场;
堆栈指针指向将要执行的任务,CPU出栈并通过栈帧恢复现场;
继续执行应用程序。
在一些实施例中,判定所述目标堆栈出现溢出异常后,所述方法还包括:
发出溢出异常提示;所述提示包括显示屏提示或串口LOG提示。
另一方面,提供了一种处理器调试装置,所述装置包括:
数字堆栈监控模块构建单元,用于设置处理器目标堆栈的数字堆栈监控模块;
监测单元,用于基于所述数字堆栈监控模块对所述目标堆栈中的监测地址进行监测;
溢出异常判定单元,用于若所述监测地址的数据变化,则判定所述目标堆栈出现溢出异常。
在一些实施例中,数字堆栈监控模块构建单元具体用于:
在JTAG/SWD协议的CPU调试单元的基础上设置所述数字堆栈监控模块。
在一些实施例中,所述装置还包括第一监测地址确定单元,用于:
基于数字监控模块设置实时操作系统任务堆栈的第一地址的寄存器;所述第一地址包括栈顶地址与第一常数之和;
在各个任务堆栈的地址空间填充第一固定数据或默认数据,在所述第一地址到栈顶地址之间填充第二固定值或默认数据。
在一些实施例中,所述装置还包括第二监测地址确定单元,用于:
在RTOS程序编译各个函数返回时,在数字堆栈监控模块的寄存器设置监控标记;
将设置监控标记的地址作为所述监测地址。
在一些实施例中,所述装置还包括自动恢复单元,用于:
数字堆栈监控模块中断,CPU自动保存现场;
堆栈指针指向将要执行的任务,CPU出栈并通过栈帧恢复现场;
继续执行应用程序。
在一些实施例中,所述装置还包括提示单元,用于:
发出溢出异常提示;所述提示包括显示屏提示或串口LOG提示。
另一方面,提供了一种计算机设备,计算机设备包括处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,处理器可加载并执行至少一条指令、至少一段程序、代码集或指令集,以实现上述申请实施例中提供的处理器调试方法。
另一方面,提供了一种处理器,包括如上所述的计算机设备。
另一方面,提供了一种计算机可读存储介质,可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,处理器可加载并执行至少一条指令、至少一段程序、代码集或指令集,以实现上述本申请实施例中提供的处理器调试方法。
另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产权或计算机程序包括计算机程序指令,该计算机程序指令存储于计算机可读存储介质中。处理器从计算机可读存储介质读取该计算机指令,并执行还计算机指令,使得该计算机设备执行上述实施例中任一所述的处理器调试方法。
本申请提供的技术方案带来的有益效果至少包括:本发明实施例提供了一种处理器调试方法、装置、计算机设备及处理器,所述方法包括设置处理器目标堆栈的数字堆栈监控模块;基于所述数字堆栈监控模块对所述目标堆栈中的监测地址进行监测;若所述监测地址的数据变化,则判定所述目标堆栈出现溢出异常。本发明实施例提供的方法能够准确定位堆栈溢出问题,提高处理器调试效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一个示例性实施例提供的一种处理器调试方法的堆栈内存布局示意图;
图2示出了本申请一个示例性实施例提供的一种处理器调试方法的函数调用关系示意图示意图;
图3示出了本申请一个示例性实施例提供的一种处理器调试方法的实现流程示意图;
图4示出了本申请一个示例性实施例提供的一种处理器调试方法中堆栈监控地址内存布局示意图;
图5示出了本申请一个示例性实施例提供的一种处理器调试方法函数调用栈插入monitor标记后的示意图;
图6示出了本申请一个示例性实施例提供的一种处理器调试方法的又一实现流程示意图;
图7示出了本申请一个示例性实施例提供的一种处理器调试装置的结构图;
图8示出了本申请一个示例性实施例提供的一种处理器调试方法对应的计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将接合附图对本申请实施方式作进一步地详细描述。
本申请提供的处理器调试方法,可以准确定位堆栈溢出问题,提高处理器调试效率。
实施例一、
嵌入式操作系统的任务(task)由三部分组成,其中任务控制块(TCB)包含各task的相关参数和信息;在创建task时会创建堆栈以存放CPU的寄存器,在任务切换的时候会保存CPU的寄存器;任务函数是有用户编写的任务代码。
图1示出了本发明实施例提供的一种处理器调试方法的堆栈内存布局示意图。
参见图1,按照堆栈的生长方向由高到低,嵌入式操作系统(RTOS)创建了三个或更多的task并从高地址到低地址依次存放。在每个任务堆栈内,函数调用会占用堆栈,如局部变量、传递参数等会放到堆栈内。
图2示出了本发明实施例提供的一种处理器调试方法的函数调用关系示意图。
参见图2,在一个具体的示例中,函数调用关系为function_i调用function_m,function_m调用function_n。若task中调用的函数层级过深,或某个函数需要的堆栈很大,则会导致堆栈增长超过task分配的堆栈而写到其他的task堆栈中。图2中,如果任务Task2中function_n继续递归调用其它函数一层层下去,堆栈会增长超过Task 2的栈帧而进入到Task 3中,把Task 3栈帧破坏,从而导致Task3运行异常。
图3示出了本发明实施例提供的处理器调试方法的实现流程示意图。
参见图3,本发明实施例提供的处理器调试方法可以包括步骤101至步骤103。
步骤101:设置处理器目标堆栈的数字堆栈监控模块。
在一些实施例中,步骤101包括:
在JTAG/SWD协议的CPU调试单元的基础上设置所述数字堆栈监控模块。
具体的,基于JTAG/SWD协议的CPU调试单元的基础上设计监控堆栈的数字堆栈监控(STACK_MONITOR)数字电路(IP)模块。
步骤102:基于所述数字堆栈监控模块对所述目标堆栈中的监测地址进行监测。
在一些实施例中,步骤102之前,所述方法还包括:
基于数字监控模块设置实时操作系统任务堆栈的第一地址的寄存器;所述第一地址包括栈顶地址与第一常数之和;
在各个任务堆栈的地址空间填充第一固定数据或默认数据,在所述第一地址到栈顶地址之间填充第二固定值或默认数据。
图4示出了本发明实施例提供的处理器调试方法中堆栈监控地址内存布局示意图。
参见图4,STACK_MONITOR模块设计若干配置实时操作系统(RTOS)的任务(task)堆栈栈顶附近地质的寄存器,其中栈顶附近地址可以包括addr1,addr2,addr3,…,addr1=栈顶地址+8,addr2=栈顶地址+8,addr3=栈顶地址+8。
在创建任务前,各个task的堆栈地址空间填充固定的数据如0x5A5A5A5A或使用系统默认值。初始化各个task任务控制块,任务控制块包含CPU的上下文信息,在各个task地址addr1(addr2,addr3)到栈顶地址之间的空间填充固定的数据DEADDEAD如或系统默认值。
对能触发STACK_MONITOR模块的各个task堆栈的最小地址即栈顶数据进行监控,若CPU或DMA模块写入内存地址addr1(addr2,addr3,…),或地址addr1(addr2,addr3,…)中的数据发生变化,则该STACK_MONITOR模块产生异常中断,提示堆栈溢出异常。
在一些实施例中,步骤102之前,所述方法还包括:
在RTOS程序编译各个函数返回时,在数字堆栈监控模块的寄存器设置监控标记;
将设置监控标记的地址作为所述监测地址。
图5示出了本发明实施例提供的处理器调试方法中函数调用栈插入monitor标记后的示意图。
参见图5,在基于RTOS的程序编译时,由编译器在各个函数返回时添加monitor标记。在系统运行时,将各个monitor标记地址设置到STACK_MONITOR数字电路模块的寄存器,若访问被监控的地址或被监控的地址中的数据被修改,说明调用栈被破坏,则STACK_MONITOR模块产生异常中断,提示函数调用堆栈覆盖溢出异常。
步骤103:若所述监测地址的数据变化,则判定所述目标堆栈出现溢出异常。
在一些实施例中,步骤103之后,所述方法还包括:
数字堆栈监控模块中断,CPU自动保存现场;
堆栈指针指向将要执行的任务,CPU出栈并通过栈帧恢复现场;
继续执行应用程序。
具体的,当堆栈即将溢出时,发生STACK_MONITOR中断,CPU自动保存现场。其中CPU自动保存现场包括CPU判断当前正在使用哪种SP,直接使用MSP/PSP,由硬件自动保存现场一半寄存器到堆栈,例如R0~R3,R12、LR、PC、XPSR。
CPU根据当前模式使用的MSP,计算EXC_RETURN,将EXC_RETURN赋值为LR。软件保存r4~r11,psp到当前task的callee_saved。执行STACK_MONITOR中断服务程序;将要执行的task弹出callee_saved到r4~r11,psp,堆栈指针指向将要执行的task。
CPU自动执行出栈,通过栈帧恢复现场。具体的,CPU根据LR的值,判断适用的MSP,然后将R0~R3,R12、LR、PC、XPSR出栈。
在一些实施例中,步骤103之后,所述方法还包括:
发出溢出异常提示;所述提示包括显示屏提示或串口LOG提示。
进一步的,在出现堆栈溢出异常后,STACK_MONITOR模块硬件中断系统执行恢复流程,在中断服务程序中根据用户具体的策略进行处理。可以通过显示屏或声音或串口LOG提示,不需要回溯分析调用栈,简化开发人员和维护人员对堆栈溢出分析的流程,提高效率。
在嵌入式系统中,每个任务(task)的堆栈大小在静态或动态创建时已经指定,运行过程中无法再做修改,而task运行的上下文是存储在task的堆栈中,一旦任务的独立堆栈破坏意味着task的执行上下文被破坏,会导致task的执行出现不可预期的异常。本发明实施例提供的方法通过CPU硬件调试机制能够对可能造成task堆栈破坏的情况提供监控和预防的手段,使用硬件机制简化调试CPU任务出现堆栈异常的手段,从而提高调试效率。
现有技术通过CPU软件程序轮询主动式监控数据,如果预定的周期检查缓冲区内的填充值的任务本身出现堆栈溢出,则不能检测其他任务(task)的堆栈溢出,会导致死机。而本申请通过STACK_MONITOR(堆栈监控)数字电路模块是通过中断方式监控的地址或数据是否改变,在任务堆栈的缓冲区可以不填充固定的数据,不需要每隔预定的周期检查缓冲区内的填充值是否访问变化,是一种被动方式的监控,不会导致系统死机,可以通过显示屏或声音或串口LOG提示,不需要回溯分析调用栈,简化开发人员和维护人员对堆栈溢出分析的流程,提高效率。即使有任务(task)堆栈溢出,也可以根据预存的策略中止堆栈溢出的任务(task),其它任务正常运行。
实施例二、
图6示出了本发明实施例提供的处理器调试方法的又一实现流程示意图。
参见图6,在一个具体的示例中,本发明实施例提供的处理器调试方法实现过程如下。
函数执行,当堆栈即将溢出时,发生STACK_MONITOR中断,CPU自动保存现场。其中CPU自动保存现场包括CPU判断当前正在使用哪种SP,直接使用MSP/PSP,由硬件自动保存现场一半寄存器到堆栈,例如R0~R3,R12、LR、PC、XPSR。
CPU根据当前模式使用的MSP,计算EXC_RETURN,将EXC_RETURN赋值为LR。
软件保存r4~r11,psp到当前task的callee_saved。执行STACK_MONITOR中断服务程序;将要执行的task弹出callee_saved到r4~r11,psp,堆栈指针指向将要执行的task。
CPU自动执行出栈,通过栈帧恢复现场。具体的,CPU根据LR的值,判断适用的MSP,然后将R0~R3,R12、LR、PC、XPSR出栈。
继续执行应用程序至程序结束。
本发明实施例提供了一种通用的高效预防堆栈溢出的CPU设计和调试方法,首先在基于JTAG/SWD协议的CPU调试单元的基础上涉及监控堆栈溢出的数字堆栈监控(STACK_MONITOR,IP)模块。STACK_MONITOR模块设置若干配置实时操作系统任务堆栈起始地址的寄存器,然后在各个task的堆栈地址填充固定的数据如0x5A5A5A5A或使用默认的系统数据。初始化各个task结构体,其中结构体包含任务控制块和CPU上下文信息,能够触发STACK_MONITOR模块对各个task堆栈的最小地址加上8的地址数据进行监控,即栈顶附近的数据进行监控。
若CPU或DMA访问监控地址或监控的地址中的数据发生改变,则STACK_MONITOR模块产生异常中断,提示堆栈溢出异常。在系统运行时,将各个监控(monitor)标记地址设置到STACK_MONITOR的数字电路模块寄存器,若访问被监控地址或被监控地址中的数据被修改,则说明调用栈被破坏,STACK_MONITOR模块产生异常中断,提示函数调用堆栈覆盖溢出异常。
综上所述,本发明实施例提供的处理器调试方法能够准确定位堆栈溢出问题,提高处理器调试效率。
实施例三、
图7示出了本发明实施例提供的处理器调试装置的结构示意图。
参见图7,本发明实施例提供的处理器调试装置可以包括:
另一方面,提供了一种处理器调试装置,所述装置包括:
数字堆栈监控模块构建单元,用于设置处理器目标堆栈的数字堆栈监控模块;
监测单元,用于基于所述数字堆栈监控模块对所述目标堆栈中的监测地址进行监测;
溢出异常判定单元,用于若所述监测地址的数据变化,则判定所述目标堆栈出现溢出异常。
在一些实施例中,数字堆栈监控模块构建单元具体用于:
在JTAG/SWD协议的CPU调试单元的基础上设置所述数字堆栈监控模块。
在一些实施例中,所述装置还包括第一监测地址确定单元,用于:
基于数字监控模块设置实时操作系统任务堆栈的第一地址的寄存器;所述第一地址包括栈顶地址与第一常数之和;
在各个任务堆栈的地址空间填充第一固定数据或默认数据,在所述第一地址到栈顶地址之间填充第二固定值或默认数据。
在一些实施例中,所述装置还包括第二监测地址确定单元,用于:
在RTOS程序编译各个函数返回时,在数字堆栈监控模块的寄存器设置监控标记;
将设置监控标记的地址作为所述监测地址。
在一些实施例中,所述装置还包括自动恢复单元,用于:
数字堆栈监控模块中断,CPU自动保存现场;
堆栈指针指向将要执行的任务,CPU出栈并通过栈帧恢复现场;
继续执行应用程序。
在一些实施例中,所述装置还包括提示单元,用于:
发出溢出异常提示;所述提示包括显示屏提示或串口LOG提示。
综上所述,本发明实施例提供的装置能够准确定位堆栈溢出问题,提高处理器调试效率。
实施例四、
图8示出了本申请一个示例性实施例提供的计算机设备的结构示意图,该计算机设备包括:
处理器301,包括一个或者一个以上处理核心,处理器301通过运行软件程序以及模块,从而执行各种功能应用以及数据处理。
接收器302和发射器303可以实现为一个通信组件,该通信组件可以是一块通信芯片。可选地,该通信组件可以实现包括信号传输功能。也即,发射器303可以用于发射控制信号至图像采集设备以及扫描设备中,接收器302可以用于接收对应的反馈指令。
存储器304通过总线305与处理器301相连。
存储器304可用于存储至少一个指令,处理器301用于执行该至少一个指令,以实现上述处理器调试方法实施例中的步骤101至步骤102。
本领域技术人员可以理解,图8仅仅是计算机设备的示例,并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机设备还可以包括网络接入设备等。
所称处理器301可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器304可以是所述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。所述存储器304也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器304还可以既包括所述计算机设备的内部存储单元也包括外部存储设备。所述存储器304用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器304还可以用于暂时地存储已经输出或者将要输出的数据。
实施例五、
本申请还提供了一种处理器,包括如上所述的计算机设备。
实施例六、
本申请实施例还提供一种计算机可读存储介质,该可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,以由处理器加载并执行以实现上述处理器调试方法。
可选地,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、固态硬盘(SSD,Solid State Drives)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(ReRAM,Resistance RandomAccess Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。
实施例七、
本申请还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行给计算机指令,使得该计算机设备执行上述实施例中任一所述的处理器调试方法。
上述本申请实施例序号仅仅为了描述,不代表实施的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (10)

1.一种处理器调试方法,其特征在于,所述方法包括:
设置处理器目标堆栈的数字堆栈监控模块;
基于所述数字堆栈监控模块对所述目标堆栈中的监测地址进行监测;
若所述监测地址的数据变化,则判定所述目标堆栈出现溢出异常。
2.根据权利要求1所述的方法,其特征在于,所述设置处理器目标堆栈的数字堆栈监控模块,包括:
在JTAG/SWD协议的CPU调试单元的基础上设置所述数字堆栈监控模块。
3.根据权利要求1所述的方法,其特征在于,所述基于所述数字堆栈监控模块对所述目标堆栈中的监测地址进行监测之前,所述方法还包括:
基于数字监控模块设置实时操作系统任务堆栈的第一地址的寄存器;所述第一地址包括栈顶地址与第一常数之和;
在各个任务堆栈的地址空间填充第一固定数据或默认数据,在所述第一地址到栈顶地址之间填充第二固定值或默认数据。
4.根据权利要求1所述的方法,其特征在于,所述基于所述数字堆栈监控模块对所述目标堆栈中的监测地址进行监测之前,所述方法还包括:
在RTOS程序编译各个函数返回时,在数字堆栈监控模块的寄存器设置监控标记;
将设置监控标记的地址作为所述监测地址。
5.根据权利要求1所述的方法,其特征在于,判定所述目标堆栈出现溢出异常后,所述方法还包括:
数字堆栈监控模块中断,CPU自动保存现场;
堆栈指针指向将要执行的任务,CPU出栈并通过栈帧恢复现场;
继续执行应用程序。
6.根据权利要求1至5任一项所述的方法,其特征在于,判定所述目标堆栈出现溢出异常后,所述方法还包括:
发出溢出异常提示;所述提示包括显示屏提示或串口LOG提示。
7.一种处理器调试装置,其特征在于,所述装置包括:
数字堆栈监控模块构建单元,用于设置处理器目标堆栈的数字堆栈监控模块;
监测单元,用于基于所述数字堆栈监控模块对所述目标堆栈中的监测地址进行监测;
溢出异常判定单元,用于若所述监测地址的数据变化,则判定所述目标堆栈出现溢出异常。
8.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由所述处理器加载并执行以实现如权利要求1至6任一项所述的处理器调试方法。
9.一种处理器,其特征在于,包括如权利要求8所述的计算机设备。
10.一种计算机可读存储介质,其特征在于,所述可读存储器介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如权利要求1至6任一项所述的处理器调试方法。
CN202310852263.4A 2023-07-11 2023-07-11 一种处理器调试方法、装置、计算机设备及处理器 Pending CN116909819A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310852263.4A CN116909819A (zh) 2023-07-11 2023-07-11 一种处理器调试方法、装置、计算机设备及处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310852263.4A CN116909819A (zh) 2023-07-11 2023-07-11 一种处理器调试方法、装置、计算机设备及处理器

Publications (1)

Publication Number Publication Date
CN116909819A true CN116909819A (zh) 2023-10-20

Family

ID=88355773

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310852263.4A Pending CN116909819A (zh) 2023-07-11 2023-07-11 一种处理器调试方法、装置、计算机设备及处理器

Country Status (1)

Country Link
CN (1) CN116909819A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117251343A (zh) * 2023-11-20 2023-12-19 苏州萨沙迈半导体有限公司 堆栈检测方法、装置、多核处理器及计算设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117251343A (zh) * 2023-11-20 2023-12-19 苏州萨沙迈半导体有限公司 堆栈检测方法、装置、多核处理器及计算设备

Similar Documents

Publication Publication Date Title
CN109800159B (zh) 程序调试方法、程序调试装置、终端设备及存储介质
CN108399132B (zh) 一种调度测试方法、装置及存储介质
US8769504B2 (en) Method and apparatus for dynamically instrumenting a program
US6634020B1 (en) Uninitialized memory watch
US20080127112A1 (en) Software tracing
US7562258B2 (en) Generation of trace elements within a data processing apparatus
US20080276129A1 (en) Software tracing
CN116909819A (zh) 一种处理器调试方法、装置、计算机设备及处理器
CN110175101B (zh) 一种异常捕获方法、装置以及终端
WO2011083459A1 (en) Utilizing temporal assertions in a debugger
US20120151267A1 (en) System for extending use of a data address break point register to implement multiple watch points
JP2009059005A (ja) デバッグシステム、デバッグ装置および方法
CN109582542B (zh) 一种嵌入式系统核心转储的方法
CN111897711A (zh) 代码中bug的定位方法、装置、电子设备及可读存储介质
WO2011089478A1 (en) Debugger system, method and computer program product for debugging instructions
Seo et al. A profiling method by PCB hooking and its application for memory fault detection in embedded system operational test
CN115656788B (zh) 一种芯片测试系统、方法、设备及存储介质
CN109902001B (zh) 对未初始化变量的检测方法及终端设备
CN117149644A (zh) 内存溢出检测方法、装置、操作系统、设备及存储介质
US6785883B1 (en) Software system for tracing data
US20130275809A1 (en) Preserve Status Parameter for Testing in Computing System
CN116450398A (zh) 异常回溯方法、装置、设备和介质
CN108197005B (zh) Ios应用的底层运行性能监测方法、介质、设备及系统
CN116956272A (zh) 权限调用监控方法、装置及电子设备
JP2000339189A (ja) 不正なメモリアクセスを検出する方法、デバッグ装置および記録媒体

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