欢迎光临小豌豆知识网!
当前位置:首页 > 物理技术 > 调节控制> 微控制器工作状态获取方法及装置、系统、可读存储介质独创技术27297字

微控制器工作状态获取方法及装置、系统、可读存储介质

2021-02-02 17:35:51

微控制器工作状态获取方法及装置、系统、可读存储介质

  技术领域

  本发明涉及微控制器技术领域,尤其涉及一种微控制器工作状态获取方法及装置、系统、可读存储介质。

  背景技术

  随着物联网(Internet of Things,IoT)技术的发展,衍生出多种IoT产品,IoT产品对微控制器(Microcontroller Unit,MCU)的功耗要求也越来越高。因此,需要对MCU进行调试,以测量MCU的具体功耗。

  现有技术中,通常采用在线调试技术对MCU的应用系统进行在线调试。然而,在使用在线调试技术对MCU的应用系统进行调试时,测试人员无法实时准确地获知MCU的当前具体工作状态,包括休眠模式、耗电情况等。

  发明内容

  本发明实施例解决的技术问题是在对MCU的应用系统进行调试时,测试人员无法实时准确地获知MCU的当前具体工作状态。

  为解决上述技术问题,本发明实施例提供一种微控制器工作状态获取方法,包括:获取所述微控制器的电流和电压,以及所获取的电流和电压对应的第一时间戳集合;第一时间戳集合为等时间间隔产生和电流变化超过门限时产生;从所述第一时间戳集合中,查找所述微控制器输出的休眠唤醒事件以及所述休眠唤醒事件对应的第二时间戳、所述微控制器输出的程序运行事件以及所述程序运行事件对应的第三时间戳;根据所述微控制器的电流和电压,计算所述微控制器的平均瞬态功耗,并绘制与所述微控制器的平均瞬态功耗曲线;根据所述第二时间戳、所述第三时间戳以及所述微控制器的电流和电压,计算每一个事件对应的平均瞬态功耗;所述事件包括所述休眠唤醒事件以及所述程序运行事件;在所述平均瞬态功耗曲线上,标识出所述第二时间戳对应的休眠唤醒事件、所述第三时间戳对应的程序运行事件。

  可选的,在获取到所述微控制器的电流和电压之后,还包括:对获取到的所述微控制器的电流进行自校准。

  可选的,所述对获取到的所述微控制器的电流进行自校准,包括:确定获取到的所述微控制器的电流对应的目标量程范围;选取所述目标量程范围对应的预设电流校准函数;采用所述电流校准函数对所述获取到的所述微控制器的电流进行校准。

  可选的,所述计算每一个休眠唤醒事件和程序运行事件对应的平均瞬态功耗,包括:获取第i个事件的起始时间和结束时间;根据所述第i个事件的起始时间和结束时间,获取所述第i个事件期间内所有时间戳及运行期间内所述微控制器的电流和电压;采用如下公式计算所述第i个事件期间对应的平均瞬态功耗:其中,t0为所述第i个事件对应的起始时间,T为所述第i个事件对应的结束时间,I(t)为所述第i个事件过程中各时间戳下采样到的微控制器的电流,U(t)为所述第i个事件过程中各时间戳下采样到的微控制器的电压,Δt为当前时间戳和上一时间戳的时间间隔。

  为解决上述技术问题,本发明实施例还提供了一种微控制器的工作状态获取系统,包括:客户端以及调试装置,其中:所述调试装置,与所述客户端以及微控制器耦接,适于采集所述微控制器的电流和电压、以及所采集的电流和电压对应的第一时间戳集合发送至所述客户端;第一时间戳集合为等时间间隔产生和电流变化超过门限时产生;所述客户端,与所述调试装置连接,适于从所述第一时间戳集合中,查找所述微控制器输出的休眠唤醒事件以及所述休眠唤醒事件对应的第二时间戳、所述微控制器输出的程序运行事件以及所述程序运行事件对应的第三时间戳;根据所述微控制器的电流和电压,计算所述微控制器的平均瞬态功耗,并绘制与所述微控制器的平均瞬态功耗曲线;根据所述第二时间戳、所述第三时间戳以及所述微控制器的电流和电压,计算每一个事件对应的平均瞬态功耗;所述事件包括所述休眠唤醒事件以及所述程序运行事件;在所述平均瞬态功耗曲线上,标识出所述第二时间戳对应的休眠唤醒事件、所述第三时间戳对应的程序运行事件。

  可选的,所述客户端,还适于在获取到所述微控制器的电流之后,对所述微控制器的电流进行自校准。

  可选的,所述客户端,适于确定获取到的所述微控制器的电流对应的目标量程范围;选取所述目标量程范围对应的预设电流校准函数;采用所述电流校准函数对所述获取到的所述微控制器的电流进行校准。

  可选的,所述客户端,适于获取第i个事件的起始时间和结束时间;所述事件包括所述休眠唤醒事件以及所述程序运行事件;根据所述第i个事件的起始时间和结束时间,获取所述第i个事件期间内所有时间戳及运行期间内所述微控制器的电流和电压;采用如下公式计算所述第i个事件期间对应的平均瞬态功耗:其中,t0为所述第i个事件对应的起始时间,T为所述第i个事件对应的结束时间,I(t)为所述第i个事件过程中各时间戳下采样到的微控制器的电流,U(t)为所述第i个事件过程中各时间戳下采样到的微控制器的电压,Δt为当前时间戳和上一时间戳的时间间隔。

  本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质为非易失性存储介质或非瞬态存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述任一种所述的微控制器工作状态获取方法的步骤。

  本发明实施例还提供了一种微控制器工作状态获取装置,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述任一种所述的微控制器工作状态获取方法的步骤。

  与现有技术相比,本发明实施例的技术方案具有以下有益效果:

  获取微控制器的电流和电压及其对应的第一时间戳集合,从第一时间戳集合中查找微控制器输出的休眠唤醒事件及其对应的第二时间戳、微控制器输出的程序运行事件及其对应的第三时间戳。根据微控制器的电流和电压,绘制微控制器的平均瞬态功耗曲线,并计算每一个事件的平均瞬态功耗。在平均瞬态功耗曲线上,标识出每一个休眠唤醒事件、每一个程序运行事件,即可使得测试人员能够实时且直观地获知微控制器的具体工作状态。

  附图说明

  图1是本发明实施例中的一种微控制器工作状态获取系统的结构示意图;

  图2是本发明实施例中的一种微控制器工作状态获取方法的流程图;

  图3是本发明实施例中的一种微控制器的平均瞬态功耗曲线图;

  图4是本发明实施例中的一种放大电路的结构示意图。

  具体实施方式

  在实际应用中,在使用在线调试技术对MCU的应用系统进行调试时,测试人员无法实时获知MCU的具体工作状态。

  在本发明实施例中,获取微控制器的电流和电压及其对应的第一时间戳集合,从第一时间戳集合中查找微控制器输出的休眠唤醒事件及其对应的第二时间戳、微控制器输出的程序运行事件及其对应的第三时间戳。根据微控制器的电流和电压,绘制微控制器的平均瞬态功耗曲线,并计算每一个事件的平均瞬态功耗。在平均瞬态功耗曲线上,标识出每一个休眠唤醒事件、每一个程序运行事件,即可使得测试人员能够实时且直观地获知微控制器的具体工作状态。

  为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。

  本发明实施例提供了一种微控制器工作状态获取系统,参照图1,以下对所述微控制器工作状态获取系统进行详细说明。

  在具体实施中,微控制器工作状态获取系统可以包括客户端11以及调试装置12。客户端11可以与调试装置12连接,以与调试装置12进行通信。调试装置12可以与微控制器14连接。

  在本发明实施例中,客户端11与调试装置12之间可以通过有线通信连接,也可以通过无线通信连接。在本发明一实施例中,客户端11与调试装置12均设置有USB接口,二者通过USB连接线连接。

  在具体实施中,微控制器14可以设置在目标板13上,目标板13上可以设置有保障微控制器14正常工作的外围电路。目标板13上可以设置有电源,为微控制器14供电。目标板13也可以外接电源,为微控制器14供电。

  在本发明一实施例中,目标板13可以通过USB接口供电。可以采用PWM调节向目标板13输出可编程的电压,支持5V、3.3V、2.5V等电压,并采用PID算法控制电压的稳定。

  在具体实施中,调试装置12可以与目标板13连接,进而实现与微控制器14的通信。调试装置12可以采集微控制器14的电流和电压。调试装置12可以实时采集微控制器14的电流和电压,也可以定时采集微控制器14的电流和电压,还可以根据测试人员的输入指令(如AT指令)采集微控制器14的电流和电压。

  在本发明实施例中,调试装置12可以按照预设的采集周期采集微控制器14的电流和电压,以及采集微控制器14电流和电压对应的第一时间戳集合。采集周期可以根据实际的应用场景或测试人员的需求进行设定。例如,设定采集周期为100ms。又如,设定采集周期为50ms。在微控制器14的电流变化超过门限时,调试装置也可以记录超过门限值对应的时间戳,该时间戳也属于第一时间戳集合。

  在具体实施中,微控制器14的电流变化超过门限时,通常意味着微控制器14发生了休眠唤醒事件和/或程序运行事件。因此,在微控制器14发生了休眠唤醒事件和/或程序运行事件时,调试装置12将其对应的时间戳记录。

  也就是说,在本发明实施例中,调试装置12采集微控制器14的电流和电压的时间点是:周期性的采集时间点,以及在微控制器14的电流变化超过门限的时间点。

  调试装置12在采集到微控制器14的电流和电压之后,可以将采集到的微控制器14的电流和电压输出至客户端11。

  在实际应用中,客户端11可以为个人电脑,也可以为其他具有屏幕显示功能的电子设备。

  在具体实施中,在采集微控制器14的电流和电压时,由于微控制器14的电流和电压较小,因此通常采用放大电路对微控制器14的电流和电压进行放大,并由调试装置12采集放大之后的电流和电压。换而言之,调试装置12与放大电路耦接,放大电路与微控制器14耦接,调试装置12采集到的是经过放大器放大的电流和电压。

  在实际应用中可知,放大电路以及外围电路存在离散性,导致放大电路的放大倍数存在一定的误差,为保证测量精度,可以采用高精度电阻对放大电路进行校准。

  参照图4,给出了本发明实施例中的一种放大电路的结构示意图。图4中,Ra、Rb、Rc为校准电阻,R1为采样电阻。采样电阻R1、校准电阻Ra、校准电阻Rb、校准电阻Rc均为高精度电阻。采样电阻R1的第一端与放大电路的输入端“-”连接,第二端与放大电路的输入端“+”以及多路选择器的固定端耦接。多路选择器的活动端与校准电阻Ra的第一端、校准电阻Rb的第一端、校准电阻Rc的第一端可选择连接,也即在选定某一个校准电阻时,多路选择器的活动端与该校准电阻的第一端连接。

  校准电阻Ra的第二端、校准电阻Rb、校准电阻Rc的第二端均与地耦接。校准电阻Ra、校准电阻Rb以及校准电阻Rc实际上并联。

  放大电路的输入端“-”与输出端之间连接有电阻R2,且电阻R2的第二端与电阻R3的第一端耦接,电阻R3的第二端输出ADC采样电压。放大电路的输入端“-”输入电压Vi。

  在具体实施中,可以预先通过实验对校准电阻Ra、校准电阻Rb以及校准电阻Rc进行测量,获取校准电阻Ra、校准电阻Rb和校准电阻Rc的真实电流值以及对应的ADC采样电压。以真实电流值为x轴,对应的ADC采样值为y轴,建立ADC采样电压与真实电流值之间的一次函数关系。在本发明实施例中,ADC采样电压与真实电流值之间的一次函数关系也即为:电流校准函数。针对每一个校准电阻,可以均存在一个与之一一对应的电流校准函数。

  例如,当多路选择器的活动端与校准电阻Ra之间的第一端连接时,可以测量得到第一电流值I1以及对应的ADC采样电压ADC1,则可以确定ADC1与I1之间的一次函数为:I1=A1×ADC1+B1。

  相应地,当多路选择器的活动端与校准电阻Rb之间的第一端连接时,可以测量得到第二电流值I2以及对应的ADC采样电压ADC2,则可以确定ADC2与I2之间的一次函数为:I2=A2×ADC2+B2。

  需要说明的是,图4中仅示出了三个校准电阻。在实际应用中,校准电阻的个数还可以为1个或更多个。此外,Ra、Rb、Rc也仅为校准电阻的示意,Ra、Rb、Rc可以为阻值不同的电阻,也可以为一个可调电阻所对应的不同阻值。Ra、Rb、Rc对应为不同的电流量程,例如,Ra对应电流量程为μA级,Rb对应的电流量程为mA级。

  在具体实施中,客户端11在接收到微控制器的电流和电压之后,还可以对接收到的微控制器电流进行自校准。

  在本发明实施例中,客户端11可以确定获取到的微控制器的电流对应的目标量程范围;之后,选择目标量程范围对应的预设电流校准函数;采用电流校准函数对获取到的微控制器的电流进行校准。

  也就是说,在本发明实施例中,针对不同的量程范围,选择不同的电流校准函数,从而能够对获取到的微控制器的电流进行更精准的校准。不同的量程范围对应的电流校准函数可以不同。

  在具体实施中,可以预先针对不同的量程范围,生成对应的电流校准函数,并预先存储在客户端11中。

  在具体实施中,由于客户端11获取到的电流是经由模数转换器(ADC)采集到的电流,因此,客户端在选择目标量程范围时,实质上是根据模数转换器(ADC)采集到的电流来选择相应的目标量程范围。模数转换器可以设置在调试装置12中。

  在具体实施中,当微控制器14从休眠状态被唤醒时,微控制器14的功耗会发生变化。通常情况下而言,微控制器14的唤醒都是由于异常事件和中断事件触发所导致。为便于描述,本发明实施例中,将异常事件、中断事件等称为休眠唤醒事件。

  微控制器14在从休眠状态被唤醒后,可以向调试装置12发送触发唤醒的休眠唤醒事件,也即向调试装置12发送触发唤醒的异常事件和中断事件。调试装置12在接收到微控制器14输出的休眠唤醒事件之后,可以将休眠唤醒事件以及休眠唤醒事件对应的第二时间戳转发至客户端11。

  微控制器14在被唤醒后,可以记录各任务函数入口地址和出口地址、各中断服务程序的入口地址和出口地址。微控制器14在运行程序时,程序运行事件对应的地址将被实时侦测。当程序运行事件对应的地址与各任务函数入口地址和出口地址、各中断服务程序的入口地址和出口地址匹配时,微控制器14可以将程序运行事件以及对应的第三时间戳输出至调试装置12。调试装置12可以将程序运行事件以及对应的第三时间戳输出至客户端11。

  在具体实施中,客户端11可以接收调试装置12输出的微控制器14的电流和电压以及第一时间戳集合、微控制器14的休眠唤醒事件以及休眠唤醒事件对应的第二时间戳、程序运行事件以及程序运行事件对应的第三时间戳。客户端可以根据微控制器的电流和电压,计算微控制器的平均瞬态功耗,并根据计算得到的微控制器的平均瞬态功耗绘制微控制器的平均瞬态功耗曲线。参照图3,给出了本发明实施例中的一种微控制器的平均瞬态功耗曲线图。

  在具体实施中,客户端11可以根据第二时间戳以及微控制器的电流和电压,计算第二时间戳对应的平均瞬态功耗,即为第二时间戳对应的休眠唤醒事件的平均瞬态功耗。相应地,客户端11可以根据第三时间戳以及微控制器的电流和电压,计算第三时间戳对应的平均瞬态功耗,即为第三时间戳对应的程序运行事件的平均价瞬态功耗。

  在计算得到微控制器的平均瞬态功耗曲线图、第二时间戳对应的平均瞬态功耗以及第三时间戳对应的平均瞬态功耗后,还可以在平均瞬态功耗曲线图上,标识出第二时间戳对应的休眠唤醒事件、第三时间戳对应的程序运行事件。

  通常情况下,休眠唤醒事件会引起微控制器14的功耗产生较为明显的变化。对应于微控制器的平均瞬态功耗曲线上,则会出现较大的波动。因此,通过在平均瞬态功耗曲线上标识出休眠唤醒事件,能够使得测试人员直观地获知微控制器14被唤醒的时间点。

  参照图3,给出了本发明实施例中的一种休眠唤醒事件对应的电流曲线图。从图3中可知,在T0~T1时刻出现休眠唤醒事件,在出现休眠唤醒事件时,微控制器对应的平均瞬态功耗呈现较大幅度的波动。

  相应地,程序运行事件也会引起微控制器14的功耗产生较为明显的变化。对应于微控制器的平均瞬态功耗曲线上,程序运行事件也会引起平均瞬态功耗曲线产生较大的波动。因此,通过在平均瞬态功耗曲线上标识出程序运行事件,能够使得测试人员直观地获知该程序运行事件的执行时间以及所产生的功耗。

  从图3中可知,在T1~T2时刻出现程序运行事件。在T2~T3时刻,微控制器重新进入休眠状态。

  采用上述方案,客户端能够获知每一个事件所对应的功耗,事件包括休眠唤醒事件以及程序运行事件。客户端11在获知每一个事件对应的功耗后,可以根据微控制器14的总功耗,生成每一个事件对应的功耗占分比以及每一个事件所占用的时间段并显示,测试人员可以直观地获知每一个事件的功耗占分比和时间段,从而评估每一个事件是否符合预期,以及是否存在进一步的优化空间。

  在本发明实施例中,客户端可以获取第i个事件的起始时间和结束时间,根据第i个事件的起始时间和结束时间,获取第i个事件期间内所有时间戳及运行期间内微控制器的电流和电压;采用如下公式计算第i个事件期间对应的平均瞬态功耗:

  

  其中,t0为第i个事件对应的起始时间,T为第i个事件对应的结束时间,I(t)为第i个事件过程中各时间戳下采样到的微控制器的电流,U(t)为第i个事件过程中各时间戳下采样到的微控制器的电压,Δt为当前时间戳和上一时间戳的时间间隔。

  在具体实施中,在采集微控制器14的电流和电压时,可以由串联在微控制器14的电源回路的采样电阻来采集微控制器14的电流值。电流采样电路可以采用N个不同量程的放大电路构成,不同电流范围使用不同的放大系数,N≥2。电源回路、电流采样电路均设置在目标板13上。

  在具体实施中,调试装置12也可以进行功耗自适应调整。调试装置12可以记录到电流超过门限事件或者功耗偏高事件。如果用户通过客户端11使能调试装置的功耗自适应调整选项,则在调试运行程序时,在触发功耗偏高事件前,自动降低功耗配置,例如降低微控制器14的主频、改变通信串口的比特率等。在功率偏高事件运行结束后,调试装置12恢复初始配置。

  下面对本发明实施例中提供的微控制器工作状态获取方法进行详细说明。参照图2,给出了本发明实施例中的一种微控制器工作状态获取方法的流程图,以下结合图1及图2进行说明。

  步骤S201,获取所述微控制器的电流和电压,以及所获取的电流和电压对应的第一时间戳集合。

  在具体实施中,调试装置12可以采集微控制器14的电流和电压。调试装置12可以实时采集微控制器14的电流和电压,也可以定时采集微控制器14的电流和电压,还可以根据测试人员的输入指令采集微控制器14的电流和电压。

  在本发明实施例中,调试装置12可以按照预设的采集周期采集微控制器14的电流和电压,以及采集微控制器14电流和电压对应的时间戳。采集周期可以根据实际的应用场景或测试人员的需求进行设定。例如,设定采集周期为100ms。又如,设定采集周期为50ms。在微控制器14的电流变化超过门限时,调试装置也可以记录超过门限值对应的时间戳,该时间戳也属于第一时间戳集合。

  在具体实施中,微控制器14的电流变化超过门限时,通常意味着微控制器14发生了休眠唤醒事件和/或程序运行事件。因此,在微控制器14发生了休眠唤醒事件和/或程序运行事件时,调试装置12将其对应的时间戳记录。

  也就是说,在本发明实施例中,调试装置12采集微控制器14的电流和电压的时间点是:周期性的采集时间点,以及在微控制器14的电流变化超过门限的时间点。

  调试装置12在采集到微控制器14的电流和电压之后,可以将采集到的微控制器14的电流和电压输出至客户端11。客户端11可以获取到调试装置发送的微控制器的电流和电压,以及电流和电压对应的第一时间戳集合

  步骤S202,从所述第一时间戳集合中,查找所述微控制器输出的休眠唤醒事件以及所述休眠唤醒事件对应的第二时间戳、所述微控制器输出的程序运行事件以及所述程序运行事件对应的第三时间戳。

  在具体实施中,客户端11可以从第一时间戳集合中,查找休眠唤醒事件及其对应的第二时间戳、程序运行事件及其对应的第三时间戳。

  步骤S203,根据所述微控制器的电流和电压,计算所述微控制器的平均瞬态功耗,并绘制与所述微控制器的平均瞬态功耗曲线。

  步骤S204,根据所述第二时间戳、所述第三时间戳以及所述微控制器的电流和电压,计算每一个事件对应的平均瞬态功耗;所述事件包括所述休眠唤醒事件以及所述程序运行事件。

  步骤S205,在所述平均瞬态功耗曲线上,标识出所述第二时间戳对应的休眠唤醒事件、所述第三时间戳对应的程序运行事件。

  在具体实施中,客户端11在接收到微控制器的电流和电压之后,还可以对接收到的微控制器电流进行自校准。

  在本发明实施例中,客户端11可以确定获取到的微控制器的电流对应的目标量程范围;之后,选择目标量程范围对应的预设电流校准函数;采用电流校准函数对获取到的微控制器的电流进行校准。

  也就是说,在本发明实施例中,针对不同的量程范围,选择不同的电流校准函数,从而能够对获取到的微控制器的电流进行更精准的校准。不同的量程范围对应的电流校准函数可以不同。

  在具体实施中,可以预先针对不同的量程范围,生成对应的电流校准函数,并预先存储在客户端11中。

  在具体实施中,由于客户端11获取到的电流是经由模数转换器(ADC)采集到的电流,因此,客户端在选择目标量程范围时,实质上是根据模数转换器(ADC)采集到的电流来选择相应的目标量程范围。模数转换器可以设置在调试装置12中。

  在具体实施中,步骤S201~步骤S205的执行过程可以参照上述关于微控制器工作状态获取系统的描述,此处不做赘述。

  综上可见,获取微控制器的电流和电压及其对应的第一时间戳集合,从第一时间戳集合中查找微控制器输出的休眠唤醒事件及其对应的第二时间戳、微控制器输出的程序运行事件及其对应的第三时间戳。根据微控制器的电流和电压,绘制微控制器的平均瞬态功耗曲线,并计算每一个事件的平均瞬态功耗。在平均瞬态功耗曲线上,标识出每一个休眠唤醒事件、每一个程序运行事件,即可使得测试人员能够实时且直观地获知微控制器的具体工作状态。

  本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质为非易失性存储介质或非瞬态存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行本发明上述任一实施例提供的微控制器工作状态获取方法的步骤。

  本发明实施例还提供了一种数据处理设备,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行本发明上述任一实施例提供的微控制器工作状态获取方法的步骤。

  本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指示相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。

  虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

《微控制器工作状态获取方法及装置、系统、可读存储介质.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)