CN117112292B - 异常重启的处理方法及装置 - Google Patents

异常重启的处理方法及装置 Download PDF

Info

Publication number
CN117112292B
CN117112292B CN202310104593.5A CN202310104593A CN117112292B CN 117112292 B CN117112292 B CN 117112292B CN 202310104593 A CN202310104593 A CN 202310104593A CN 117112292 B CN117112292 B CN 117112292B
Authority
CN
China
Prior art keywords
interface
module
parameter
abnormal
restart
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
CN202310104593.5A
Other languages
English (en)
Other versions
CN117112292A (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.)
Honor Device Co Ltd
Original Assignee
Honor Device 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 Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202310104593.5A priority Critical patent/CN117112292B/zh
Publication of CN117112292A publication Critical patent/CN117112292A/zh
Application granted granted Critical
Publication of CN117112292B publication Critical patent/CN117112292B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating

Landscapes

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

Abstract

本申请实施例提供一种对异常重启的处理方法,应用于电子设备,电子设备中运行第一模块以及用于实现重启流程的接口,接口包括第一接口,第一模块调用第一接口为异常调用,异常调用导致异常重启,对异常重启的处理方法包括:响应于接口被调用,获取调用第一接口的模块的信息,在模块的信息表示模块为第一模块的情况下,将预设参数设置为预设数值,预设参数的预设数值表示调用为异常调用,将设置为预设数值的参数存储在寄存器中,寄存器中的数据触发电子设备执行重启流程,在重启流程中,响应于寄存器中预设的参数为预设数值,获取异常调用的数据。因此,为定位异常重启的原因并提供解决方案奠定了基础。

Description

异常重启的处理方法及装置
技术领域
本申请涉及电子信息技术领域,尤其涉及一种异常重启的处理方法及装置。
背景技术
电子设备的重启(重新启动)可以理解为:在电子设备处于开机状态的情况下,从开机状态转为关机状态,并且在关机状态下通过启动再次转为开机状态的过程。
通常用户操作触发电子设备进行重启,但电子设备可能在非用户操作的场景下发生重启,这种场景下的重启可以理解为异常重启。
发明内容
本申请提供了一种异常重启的处理方法及装置,目的在于解决如何处理电子设备的异常重启的问题。
为了实现上述目的,本申请提供了以下技术方案:
本申请的第一方面提供一种对异常重启的处理方法,应用于电子设备,电子设备中运行第一模块以及用于实现重启流程的接口,接口包括第一接口,第一模块调用第一接口为异常调用,异常调用导致异常重启,对异常重启的处理方法包括:响应于接口被调用,获取调用第一接口的模块的信息,在模块的信息表示模块为第一模块的情况下,将预设参数设置为预设数值,预设参数的预设数值表示调用为异常调用,将设置为预设数值的参数存储在寄存器中,寄存器中的数据触发电子设备执行重启流程,在重启流程中,响应于寄存器中预设的参数为预设数值,获取异常调用的数据。可见,在发生异常调用导致的异常重启的情况下,将预设参数设置为预设数值并存储在寄存器中,在重启的过程中,基于寄存器中预设参数的数值,能够获取异常调用的数据,因此,为定位异常重启的原因并提供解决方案奠定了基础。
在一些实现方式中,将预设参数设置为预设数值,包括以下至少一项:将第一参数设置为第一数值,第一参数的第一数值表示第一模块所属的域,将第二参数设置为第二数值,第二参数的第二数值表示接口。从第一模块所属的域以及被调用的接口的维度,分别设置参数的数值,能够为获取不同维度的异常调用的数据奠定基础,因为异常调用的数据用于定位异常重启的原因并提供解决方案,所以能够提高定位得到的原因的准确性,以及提高解决方案的针对性。
在一些实现方式中,域包括内核域或者安全空间,从而为获取内核域或安全空间中导致异常重启的数据奠定基础。
在一些实现方式中,将第一参数设置为第一数值包括:基于第一数值与第一模块所属的域的对应关系,将第一参数设置为第一数值,将第二参数设置为第二数值,包括:基于第二数值与第一接口的对应关系,将第二参数设置为第二数值。对应关系能够预先配置,具有较高的灵活性和可扩展性,进而异常调用数据的获取具有较高的灵活性和可扩展性。
在一些实现方式中,获取调用第一接口的模块的信息包括:读取第一接口的调用栈中的信息,调用栈中的信息表示调用第一接口的模块。因为调用栈为系统中常见的模块,所以从调用栈中获取第一接口的模块的信息的方式具有兼容性,并且易于实现。
在一些实现方式中,接口还包括:第二接口,在重启流程中,第二接口被第一接口调用,将设置为预设数值的参数存储在寄存器中包括:第一接口向第二接口传输设置为预设数值的参数。重启流程通过接口之间的调用实现,所以通过接口之间的调用能够将预设数值的参数传递并存储在寄存器中,而无需额外增加信令,具有较高的兼容性和较低的代价。
在一些实现方式中,在重启流程中,响应于参数为预设数值,获取异常调用的数据包括:在重启流程中的启动加载阶段,响应于参数为预设数值,获取异常调用的数据。在启动加载阶段获取异常调用的数据,能够保证在启动完成后,及时将异常调用的数据进行上报(如发送至故障检测服务)。
在一些实现方式中,异常调用的数据包括:第一接口的信息以及第一模块所属的域的log日志数据的至少一项,从而提供更全面的数据,进而基于数据获得更全面和准确的分析结果。
在一些实现方式中,电子设备运行操作系统,操作系统包括内核层,内核层运行有第一接口对应的异常重启处理模块,异常重启处理模块用于获取调用第一接口的模块的信息,并在模块的信息表示第一模块的情况下,将预设参数设置为预设数值。因为参与重启流程的各个接口大部分设置在内核层,所以将异常重启处理模块设置在内核层便于数据的收集。
在一些实现方式中,操作系统还包括启动加载模块,启动加载模块用于在重启流程中,响应于寄存器中的参数为预设数值,获取异常调用的数据。
本申请的第二方面提供一种电子设备,包括:存储器以及至少一个处理器,存储器用于存储程序,至少一个处理器用于运行程序,以使得电子设备实现本申请的第一方面提供的一种对异常重启的处理方法。
本申请的第三方面提供一种计算机存储介质,用于存储计算机程序,计算机程序被执行时,用于实现第一方面提供的一种对异常重启的处理方法。
附图说明
图1为用户重启手机的场景的示例图;
图2为电子设备重启流程中接口之间调用的示例图;
图3为本申请实施例提供的电子设备的结构示例图;
图4为本申请实施例提供的电子设备中的软件框架的示例图;
图5为本申请实施例提供的各个域与第一参数的数值的对应关系的示例;
图6为本申请实施例提供的各个接口与第二参数的数值的对应关系的示例;
图7为本申请实施例提供的在异常调用情况下设置参数的流程图;
图8为本申请实施例提供的接口之间传递参数的流程图;
图9为本申请实施例提供的异常重启的处理方法的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请实施例中,“一个或多个”是指一个、两个或两个以上;“和/或”,描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例涉及的多个,是指大于或等于两个。需要说明的是,在本申请实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
电子设备的重启(重新启动)可以理解为:在电子设备处于开机状态的情况下,从开机状态转为关机状态,并且在关机状态下通过启动再次转为开机状态的过程。
图1为用户重启手机的场景示例。如图1所示,用户在手机A开机的状态下,长按图1所示的电源键1,手机A显示图1所示的重启询问界面2,在重启询问界面2中显示重启控件21、关机控件22以及提示信息:“提示:同时长按音量下键和电源键10秒以上,可强制重启”23。
基于重启询问界面2,用户可采用以下两种方式重启手机A:在一种实现方式中,用户点击重启控件21,触发手机A重启。在另一种实现方式中,用户根据提示信息23,同时长按音量下键3和电源键1,触发手机A重启。
基于一些硬件平台,用户触发的手机的重启流程(从用户操作触发重启到关机前的流程)如图2所示,包括以下步骤:
用户域的reboot接口响应于用户的操作,调用内核域的SYSCALL_DEFINE4(reboot)接口。可以理解的是,基于图1,在用户执行如点击重启控件或同时长按音量下键和电源键后,reboot接口调用SYSCALL_DEFINE4(reboot)接口。
SYSCALL_DEFINE4(reboot)接口调用Kernel_restart接口。Kernel_restart接口调用Machine_restart接口。Machine_restart接口调用Do_kernel_restart接口,Do_kernel_restart接口调用Restart_handler_list接口,Restart_handler_list接口调用Psci_sys_reset接口,Psci_sys_reset接口调用Arm_smccc_smc接口。
Arm_smccc_smc接口调用安全空间的Psci_smc_handler接口,Psci_smc_handler接口调用Psci_system_reset接口,Psci_system_reset接口调用Sysreset_system_reset接口,Sysreset_system_reset接口调用Rgu_debug_sw_reset接口,Rgu_debug_sw_reset接口在寄存器(RGU)中写入与重启相关的寄存器值,从而触发手机关机再开机。
基于图2所示的重启流程,在本申请的实施例中,将用户域的模块(如Reboot接口)触发的重启流程称为正常重启。
图1所示的用户触发重启的方式仅为示例,如另一种示例为,响应于手机系统的更新(或升级)需求,手机显示更新询问界面,在用户基于更新询问界面确认重启以进行更新后,触发手机的重启。
基于上述定义,图2所示的流程为正常重启的流程。为了便于说明,将参与正常重启流程的各个接口中被调用的接口称为下级接口,调用下级接口的接口称为上级接口,如图2中Reboot接口称为SYSCALL_DEFINE4(reboot)接口的上级接口,SYSCALL_DEFINE4(reboot)接口称为Reboot接口的下级接口。可以理解的是,参与正常重启流程的各个接口中除Reboot接口之外,均被上级接口调用,这里称为正常调用。
相对于正常重启,将其它模块(非用户域的模块)触发的重启称为异常重启。例如,发明人在研究的过程中发现,某模块因业务逻辑异常时主动调用了图2或所示的Machine_restart接口,因为Machine_restart接口为参与正常重启流程的接口,所以被调用后,触发图2或所示的流程中Machine_restart接口对下级接口的调用,从而执行图2或所示的正常重启流程中从Machine_restart接口调用Do_kernel_restart接口起始的后续流程。
可以理解的是,异常重启的流程中,参与正常重启流程的至少一个接口被非上级接口调用,这里称为异常调用。由非用户域的模块调用参与正常重启流程的接口而触发的重启,即为异常重启,异常重启可以看作正常重启流程被误用。
因为是通过调用正常重启流程中所需的接口触发重启,所以,虽然是异常重启,但因为执行的是正常重启流程中的部分流程,所以,手机不会记录异常重启的相关数据(如日志等),从而不利于异常重启的原因定位、以及解决异常重启问题等措施的开展。
为了解决上述问题,本申请的实施例提供一种针对异常重启的处理方法,该方法可以应用在电子设备的测试场景或者使用场景。测试场景的示例为在电子设备的研发阶段,BETA用户使用的电子设备异常重启。使用场景可以理解为用户使用出厂的电子设备的过程中电子设备异常重启。
无论是哪种场景,本申请实施例提供的针对异常重启的处理方法,能够获得异常重启的数据,有利于提高定位导致异常重启的原因以及解决异常重启问题的可能性。
本申请实施例提供的异常重启的处理方法应用在电子设备,电子设备包括但不限于:手机,平板电脑,桌面型电脑,笔记本电脑,超级移动个人计算机(Ultra-mobilePersonal Computer,UMPC),手持计算机,上网本,个人数字助理(Personal DigitalAssistant,PDA),可穿戴电子设备,智能手表等。
电子设备以手机为例,图3所示为与本申请实施例相关的手机的部分结构,包括:处理器110,天线1,天线2,移动通信模块120,无线通信模块130,音频模块140,摄像头150,显示屏160等。
可以理解的是,本实施例示意的结构并不构成对电子设备的具体限定。在另一些实施例中,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
在一些实现方式中,处理器110包括安全区域处理器1101,安全区域处理器1101中运行程序代码实现可信执行环境(Trusted Execution Environment,TEE)或安全空间。安全空间至少包括ARM可信固件(ARM Trusted Firmware,ATF)空间。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用输入输出(general-purpose input/output,GPIO)接口等。
在一些实施例中,GPIO接口可以用于连接处理器110与无线通信模块130,音频模块140等。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块140耦合,实现处理器110与音频模块140之间的通信。在一些实施例中,音频模块140可以通过I2S接口向无线通信模块130传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块140与无线通信模块130可以通过PCM总线接口耦合。在一些实施例中,音频模块140也可以通过PCM接口向无线通信模块130传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备的结构限定。在本申请另一些实施例中,电子设备也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
移动通信模块120可以提供应用在电子设备上的包括2G/3G/4G/5G等无线通信的解决方案。
无线通信模块130可以提供应用在电子设备上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。
音频模块140用于将模拟音频输入转换为数字音频信号。音频模块140还可以用于对音频信号编码和解码。在一些实施例中,音频模块140可以设置于处理器110中,或将音频模块140的部分功能模块设置于处理器110中。
扬声器140A也称为“喇叭”,用于输出音频信号。麦克风140B,也称“话筒”,“传声器”,用于将声音信号转换为电信号。
在电子设备通过以上方式获取声音信号后,通过处理器110的上述接口,将声音信号传输至处理器110,处理器110对声音信号进行以下实施例中所述的噪声消除处理。
摄像头150用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备可以包括N个摄像头150,N为大于1的正整数。
显示屏160用于显示图像以及视频等。显示屏160包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,AMOLED),柔性发光二极管(flex light-emitting diode,FLED),Miniled,MicroLed,Micro-oled,量子点发光二极管(quantum dotlight emitting diodes,QLED)等。在一些实施例中,电子设备可以包括1个或N个显示屏160,N为大于1的正整数。
处理器110通过运行程序代码,实现的操作系统可以为iOS操作系统、Android开源操作系统、Windows操作系统等。
图4所示为电子设备中运行的操作系统的软件框架示例,以Android开源操作系统为例,分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为富执行环境(Rich ExecutionEnvironment,REE)(又可称为一般空间)和ATF。
REE至少包括四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层等。
应用程序层可以包括一系列应用程序包。如图4所示,应用程序包可以包括相机,日历以及用户接口(User Interface,UI)界面等应用程序,还包括图2所示的应用域中的Reboot接口。UI界面用于响应用户的操作如长按电源键,显示相应的界面如图1所示的重启询问界面。Reboot接口用于响应于重启触发操作如图1所示的三种方式,触发重启,如图2所示Reboot接口通过调用SYSCALL_DEFINE4(reboot))接口触发重启。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。以图4为例,应用程序框架层可以包括窗口管理器,内容提供器,视图系统。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),二维图形引擎(例如:SGL)等。系统库中与本申请实施例相关的模块为故障检测服务,用于获取异常重启相关的数据,并向分析服务器传输,以便于分析服务器分析异常重启的原因以及提供解决方案。或者,故障检测服务获取异常重启相关的数据后,分析异常重启的原因以及提供解决方案。
内核层是硬件和软件之间的层。在本申请的实施例中,内核层至少包含用于重启的各个模块,如图2或图4所示。为了实现对异常重启的数据的采集,内核层新增异常重启处理模块,用于监测各个参与重启流程的接口是否被异常调用(即被图2所示的流程中上级接口之外的接口调用),如果被异常调用,则配置预设参数的数值,以表示异常重启(接口被异常调用),为异常重启信息的收集奠定基础。保存异常调用信息,以供后续提供异常调用信息,为异常重启的问题定位以及问题处理提供依据。
可以理解的是,异常重启处理模块的数量可以为多个,例如为每个参与重启流程的接口均配置异常重启处理模块,任意一个异常重启处理模块用于监测对应的接口是否被异常调用,如果是,记录异常调用信息。异常重启处理模块的数量也可以为一个,用于监测每个参与重启流程的接口是否被异常调用,如果是,记录异常调用信息。图4中以一个异常重启处理模块为例。
ATF中与本申请的实施例相关的模块如图2所示,图4中以图2所示的安全空间中的各个接口为例。ATF中也配置异常重启处理模块,具体功能以及配置的数量可参见内核层中的异常重启处理模块。
本申请实施例中,还在内核层与硬件层之间的启动加载(bootloader)模块中新增故障检测模块,用于收集异常重启相关的数据,并在重启完成后,将向系统库的故障检测服务传输。
需要说明的是,本申请实施例虽然以Android系统为例进行说明,但是其基本原理同样适用于基于iOS或Windows等操作系统的电子设备。
除了软件框架之外,图4中还示出了寄存器RGU,可以理解的是,RGU通过驱动(图4中未画出)与ATF的模块交互数据。
基于图4所示的框架,下面将对本申请实施例提供的对异常重启的处理方法进行详细说明。
如图5所示,为有可能触发异常调用的各个域配置对应的第一参数,触发异常调用的域可以理解为:异常调用参与正常重启流程的接口的模块所属的域。第一参数的数值唯一表示对应的域。图5中,内核域对应的第一参数arg1的数值为第一数值,第一数值的示例为二进制数,以表1为例。
表1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
ATF对应的第一参数arg1的数值为第二数值,第二数值的示例为表1所示的二进制数左移一位得到的二进制数。可以理解的是,将表1所示的二进制数作为标准值,通过移位得到ATF域对应的第一参数arg1的数值。
为了体现通过对标准值移位得到第一参数的数值的实现方式,图5中,将内核域对应的第一参数arg1的数值记为arg1|=1<<0,表示为表1所示的数值左移0位,即表1所示的数值,将ATF对应的第一参数arg1的数值记为arg1|=1<<1,表示为表1所示的数值左移1位。
如图6所示,为参与正常重启流程并有可能被异常调用的接口配置对应的第二参数,第二参数的数值唯一表示对应的接口。
图6中以图2所示的各个接口为例,SYSCALL_DEFINE4(reboot))接口对应的第二参数arg2的数值的示例为二进制数,该二进制数可以与表1所示的二进制数相同,也可以不同,图6中以与表1所示的二进制数相同为例。SYSCALL_DEFINE4(reboot))接口对应的第二参数arg2的数值为第二参数的标准值,其它接口对应的第二参数arg2的数值通过将第二参数的标准值通过移位获得。如Kernel_restart对应的第二参数arg2的数值为将第二参数的标准值向左移动以为得到,具体可参见图6所示,这里不再赘述。
图5所示的各个域与第一参数的对应关系,以及图6所示的各个接口与第二参数的对应关系,可以被配置在异常重启处理模块中,当然也可以被配置在其它模块中。
将任意一个接口对应的异常重启处理模块称为第一异常重启处理模块,第一异常重启处理模块如图4所示为多个接口共用,或者,第一异常重启处理模块为图5或图6中任意一个接口对应的异常重启处理模块。第一异常重启处理模块的处理流程如图7所示,包括以下步骤:
S101、响应于对应的接口被调用,读取调用栈。
如前所述,第一异常重启处理模块对应的接口为第一异常重启处理模块监测的接口。
调用栈可以理解为追踪函数执行流的一种机制。当执行环境中调用了多个函数时,通过这种机制,能够追踪到哪个函数正在执行,执行的函数体中又调用了哪个函数。
调用栈可以理解为存储调用接口的模块的信息的数据结构,即调用栈中存储模块的信息,模块为调用接口的模块。以图2所示的正常重启的流程为例,调用栈中存储的调用信息的一部分为:SYSCALL_DEFINE4(reboot)被Reboot调用,Kernel_restart被SYSCALL_DEFINE4(reboot)调用。
可见,通过读取调用栈能够获得接口被哪个模块调用。
在一些实现方式中,每一个接口均对应一个调用栈,将任意一个接口称为第一接口,第一接口对应的调用栈用于存储调用第一接口的模块的信息,例如,以图2所示的正常重启的流程为例,Kernel_restart对应的调用栈中存储调用Kernel_restart的SYSCALL_DEFINE4(reboot)的信息,因为SYSCALL_DEFINE4(reboot)调用Kernel_restart由Reboot调用SYSCALL_DEFINE4(reboot)触发,所以Kernel_restart对应的调用栈中还存储Reboot的信息。
在另一些实现方式中,多个接口对应一个调用栈,用于存储调用对应的各个接口的模块的信息。
S102、基于调用栈中存储的信息,判断对应的接口是否被异常调用,如果是,执行S103-S105,如果否,结束流程。
接口被图2所示的流程中的上级接口调用,为正常调用,被除了上级接口之外的模块调用,则为异常调用。
接口被异常调用,说明为异常重启,需要记录异常重启的信息。
S103、基于调用栈中存储的信息和预先配置的对应关系,设置第一参数的值和第二参数的值。
预先配置的对应关系为图5所示的各个接口与第一参数arg1的数值的对应关系,以及图6所示的各个接口与第二参数arg2的数值的对应关系。
在某些实现方式中,基于调用栈中调用第一接口的模块的信息,确认调用第一接口的模块所属的域为内核域或安全空间,并基于图5所示的对应关系,设置第一参数arg1的数值。
例如,假设Kernel_restart被内核域中的某个模块(第一模块)调用而触发执行图2所示的重启流程,则确认Kernel_restart被异常调用,因为调用Kernel_restart的模块属于内核域,因此基于图5所示的对应关系,将第一参数arg1的数值设置为arg1|=1<<1。
因为是Kernel_restart被异常调用,所以基于图6所示的对应关系,将第二参数arg2的数值设置为arg2|=1<<1。
S104、记录调用栈中的数据。
可以理解的是,调用栈中的数据作为异常重启的信息的一部分,可以用于对异常重启的原因的定位以及解决异常重启问题的依据。
在一些实现方式中,除了调用栈中的数据之外,还记录第一参数的值表示的域中与异常调用相关的数据,如log日志数据。
S105、将第一参数的值和第二参数的值向对应的接口传输。
如图8所示,还以Kernel_restart被某个模块调用而触发执行图2所示的重启流程为例,Kernel_restart接收到第一参数的值和第二参数的值后,向下级接口传输第一参数arg1的值和第二参数arg2的值。后续被调用的各个模块在调用下级模块时再向下级模块传输,直至传输至RGU。
在一些实现方式中,RGU中预先设置参数NorResetreg1和NorResetreg2,在此情况下,通过将NorResetreg1赋值为arg1,将NorResetreg2赋值为arg2,实现将第一参数和第二参数写入RGU的目的。
可以理解的是,在图8所示的流程中,参与重启过程的各个接口除了向下级接口传输第一参数arg1的值和第二参数arg2的值之外,还可能传输与重启相关的其它参数。
可以理解的是,在S102判定为正常重启的情况下,不设置第一参数arg1和第二参数arg2,则接口不会获得并向下级接口传输第一参数arg1和第二参数arg2。
本实施例中S104与S103、以及S104与S103之间的执行顺序仅为示例而不构成限定。
结合图4,可以理解的是,在图7所示的流程之后,电子设备先关机,再进入开机流程,在开机流程中,先由bootloader模块执行启动加载(bootloader)流程,bootloader流程如图9所示,包括以下步骤:
S201、读取RGU中的数据。
如前所述,假设RGU中的数据包括NorResetreg1和NorResetreg2,NorResetreg1被赋值为arg1,NorResetreg2被赋值为arg2。在读取数据的过程中,会读取到NorResetreg1和NorResetreg2。
S202、基于读取的数据判断本次重启是否异常,如果是,执行S203,如果否,执行bootloader之后的流程。
在一些实现方式中,基于读取的数据中的某些数值,例如NorResetreg1的值为arg1,NorResetreg2的值为arg2,判定异常重启。
S203、故障检测模块收集调用栈中的数据以及第一参数的值表示的域中与异常调用相关的数据。
故障检测模块可以理解为用于进行异常重启原因定位以及提供解决方案的模块。
与异常调用相关的数据包括但不限于:log日志数据。这里不再赘述从第一参数的值表示的域中获取这些数据的方式。
可以理解的是,在完成bootloader阶段的流程之后,还可以能执行重启流程中的其它步骤,这里不再赘述。
基于图9所述的流程,在基于RGU中的数据确定重启流程为异常重启流程后,上报调用栈中的数据以及触发异常重启的域中与异常调用相关的数据,从而避免无法获取一些异常重启的数据的问题,以便于基于上报的数据定位导致异常重启的原因以及为解决异常重启提供依据。

Claims (12)

1.一种对异常重启的处理方法,其特征在于,应用于电子设备,所述电子设备中运行第一模块以及用于实现重启流程的接口,所述第一模块为非用户域的模块,所述接口包括第一接口,所述第一模块调用所述第一接口为异常调用,所述异常调用导致异常重启,所述方法包括:
响应于所述接口被调用,获取调用所述第一接口的模块的信息;
在所述模块的信息表示所述模块为所述第一模块的情况下,将预设参数设置为预设数值,所述预设参数的所述预设数值表示所述调用为所述异常调用;
将设置为所述预设数值的所述参数存储在寄存器中,所述寄存器中的数据触发所述电子设备执行重启流程;
在所述重启流程中,响应于所述寄存器中的所述参数为所述预设数值,获取所述异常调用的数据。
2.根据权利要求1所述的方法,其特征在于,所述将预设参数设置为预设数值,包括以下至少一项:
将第一参数设置为第一数值,所述第一参数的所述第一数值表示所述第一模块所属的域;
将第二参数设置为第二数值,所述第二参数的所述第二数值表示所述接口。
3.根据权利要求2所述的方法,其特征在于,所述域包括内核域或者安全空间。
4.根据权利要求2或3所述的方法,其特征在于,所述将第一参数设置为第一数值,包括:
基于所述第一数值与所述第一模块所属的域的对应关系,将所述第一参数设置为所述第一数值;
所述将所述第二参数设置为第二数值,包括:
基于所述第二数值与所述第一接口的对应关系,将所述第二参数设置为所述第二数值。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述获取调用所述第一接口的模块的信息,包括:
读取所述第一接口的调用栈中的信息,所述调用栈中的信息表示调用所述第一接口的模块。
6.根据权利要求1-3任一项所述的方法,其特征在于,所述接口还包括:
第二接口,在所述重启流程中,所述第二接口被所述第一接口调用;
所述将设置为所述预设数值的所述参数存储在寄存器中,包括:
所述第一接口向所述第二接口传输设置为所述预设数值的所述参数。
7.根据权利要求1-3任一项所述的方法,其特征在于,所述在所述重启流程中,响应于所述参数为所述预设数值,获取所述异常调用的数据,包括:
在所述重启流程中的启动加载阶段,响应于所述参数为所述预设数值,获取所述异常调用的数据。
8.根据权利要求1-3任一项所述的方法,其特征在于,所述异常调用的数据,包括以下至少一项:
所述第一接口的信息;
所述第一模块所属的域的log日志数据。
9.根据权利要求1-3任一项所述的方法,其特征在于,所述电子设备运行操作系统,所述操作系统包括内核层,所述内核层运行有所述第一接口对应的异常重启处理模块;
所述异常重启处理模块用于获取调用所述第一接口的模块的信息,并在所述模块的信息表示所述第一模块的情况下,将预设参数设置为预设数值。
10.根据权利要求9所述的方法,其特征在于,所述操作系统还包括启动加载模块;
所述启动加载模块用于在所述重启流程中,响应于所述寄存器中的所述参数为所述预设数值,获取所述异常调用的数据。
11.一种电子设备,其特征在于,包括:
存储器以及至少一个处理器;
所述存储器用于存储程序;
所述至少一个处理器用于运行所述程序,以使得所述电子设备实现权利要求1-10任一项所述的对异常重启的处理方法。
12.一种计算机存储介质,用于存储计算机程序,所述计算机程序被执行时,用于实现权利要求1-10任一项所述的对异常重启的处理方法。
CN202310104593.5A 2023-01-20 2023-01-20 异常重启的处理方法及装置 Active CN117112292B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310104593.5A CN117112292B (zh) 2023-01-20 2023-01-20 异常重启的处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310104593.5A CN117112292B (zh) 2023-01-20 2023-01-20 异常重启的处理方法及装置

Publications (2)

Publication Number Publication Date
CN117112292A CN117112292A (zh) 2023-11-24
CN117112292B true CN117112292B (zh) 2024-05-14

Family

ID=88797176

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310104593.5A Active CN117112292B (zh) 2023-01-20 2023-01-20 异常重启的处理方法及装置

Country Status (1)

Country Link
CN (1) CN117112292B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105893248A (zh) * 2015-12-30 2016-08-24 乐视致新电子科技(天津)有限公司 获取终端设备中异常相关信息的方法和装置
CN106021068A (zh) * 2016-05-27 2016-10-12 北京京东尚科信息技术有限公司 服务接口的监控方法和监控系统
CN106326026A (zh) * 2016-10-12 2017-01-11 广州视睿电子科技有限公司 操作系统异常重启的方法及装置
CN107948744A (zh) * 2017-12-13 2018-04-20 深圳市雷鸟信息科技有限公司 接口检测方法、接口检测设备及计算机可读存储介质
CN108984347A (zh) * 2018-08-06 2018-12-11 杭州电子科技大学 一种基于Linux系统的嵌入式设备重启状态记录方法
CN110457154A (zh) * 2019-07-25 2019-11-15 Oppo广东移动通信有限公司 异常服务处理方法及装置、存储介质、通信终端

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3040523B1 (fr) * 2015-08-28 2018-07-13 Continental Automotive France Procede de detection d'une erreur non corrigible dans une memoire non volatile d'un microcontroleur

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105893248A (zh) * 2015-12-30 2016-08-24 乐视致新电子科技(天津)有限公司 获取终端设备中异常相关信息的方法和装置
CN106021068A (zh) * 2016-05-27 2016-10-12 北京京东尚科信息技术有限公司 服务接口的监控方法和监控系统
CN106326026A (zh) * 2016-10-12 2017-01-11 广州视睿电子科技有限公司 操作系统异常重启的方法及装置
CN107948744A (zh) * 2017-12-13 2018-04-20 深圳市雷鸟信息科技有限公司 接口检测方法、接口检测设备及计算机可读存储介质
CN108984347A (zh) * 2018-08-06 2018-12-11 杭州电子科技大学 一种基于Linux系统的嵌入式设备重启状态记录方法
CN110457154A (zh) * 2019-07-25 2019-11-15 Oppo广东移动通信有限公司 异常服务处理方法及装置、存储介质、通信终端

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Software micro-rejuvenation for Android mobile systems";Domenico Cotroneo 等;《Journal of Systems and Software》;20220430;第186卷;第1-8页 *
"基于敏感API调用的Android应用程序动态监控";胡雯雯;《中国优秀硕士学位论文全文数据库 信息科技辑》;20170315;第I138-3562页 *

Also Published As

Publication number Publication date
CN117112292A (zh) 2023-11-24

Similar Documents

Publication Publication Date Title
US8407717B2 (en) Parallel processing method for dual operating system
US8555280B2 (en) Terminal device of non-android platform for executing android applications, and computer readable recording medium for storing program of executing android applications on non-android platform
CN107948744B (zh) 接口检测方法、接口检测设备及计算机可读存储介质
US20160085366A1 (en) Scripting Cross-Device Wearable Interaction
US20130014086A1 (en) Debugger connection
US20120226619A1 (en) System and method for providing after-sales service to electronic devices via a mobile device
CN104063305A (zh) 智能终端软件的压力测试方法、装置和系统
CN111597065B (zh) 用于采集设备信息的方法和装置
CN110865837B (zh) 一种进行系统升级的方法和终端
CN112988213B (zh) 一种程序数据更新方法、电子设备及计算机存储介质
CN109445841B (zh) 接口文档管理方法、装置、服务器及存储介质
CN110851204A (zh) 应用启动的方法及装置、应用打包的方法及装置
US11314572B1 (en) System and method of data alert suppression
CN117112292B (zh) 异常重启的处理方法及装置
CN113835928A (zh) 应用的备份和恢复方法、设备、存储介质和程序产品
CN116048955B (zh) 一种测试方法及电子设备
CN114860321B (zh) 基于树莓派的外接设备控制方法、装置、设备及介质
WO2021052489A1 (zh) 一种确定多核处理器中故障计算核的方法及电子设备
US20160196205A1 (en) Method and apparatus for accessing remote mobile devices
CN110908904A (zh) 调试快应用的方法、调试快应用的装置及电子设备
CN116701134B (zh) 一种数据处理方法和电子设备
Singh et al. Android internals and telephony
CN113485923B (zh) 项目代码检测方法与装置、电子设备
CN110362451B (zh) 一种监控方法、装置及介质
CN117806857B (zh) 故障定位信息生成方法、装置、电子设备及存储介质

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