一种日志保存方法、车载设备、存储介质及芯片技术

技术编号:39066180 阅读:12 留言:0更新日期:2023-10-12 19:58
本申请公开了一种日志保存方法、车载设备、存储介质及芯片,该方法包括:在操作系统的启动过程中,响应于通过预设计数器检测到发生异常,获取启动过程中的启动起点到异常之间的日志数据,并将日志数据保存到当前预留内存中,响应于操作系统的重启指令,执行操作系统重启,并在操作系统重启后,将当前预留内存中的日志数据保存到存储设备的预留分区中,上述方案,解决了系统启动阶段异常而无法抓取日志数据的问题,使得启动过程中出现异常均可以有效保存日志。效保存日志。效保存日志。

【技术实现步骤摘要】
一种日志保存方法、车载设备、存储介质及芯片


[0001]本申请涉及车载系统
,特别是涉及一种日志保存方法、车载设备、存储介质及芯片。

技术介绍

[0002]任何嵌入式系统,当出现异常需要解决(debug)问题时,都需要拿到日志数据,才方便debug问题。以车载Android系统为例,各厂商可能普遍有一套日志保存机制,会将系统运行过程中的日志保存到eMMC上某个存储区域。当出现问题需要debug时,将日志从eMMC中取出,进行分析,以进行debug。
[0003]然而,目前的日志保存机制,其核心都是要依赖Android系统原生的logd服务。也就是说,日志保存机制需要等到Android系统启动后,才能开始保存日志,从而在系统启动阶段异常时无法抓取日志。

技术实现思路

[0004]针对上述系统启动阶段异常时无法抓取日志的问题,本申请的目的在于提供一种日志保存方法、车载设备、存储介质及芯片。
[0005]本申请第一方面提供了一种日志保存方法,应用于车载设备,所述车载设备安装有操作系统,且包括存储设备;所述方法包括:在所述操作系统的启动过程中,响应于通过预设计数器检测到发生异常,获取所述启动过程中的启动起点到所述异常之间的日志数据,并将所述日志数据保存到当前预留内存中,其中所述预设计数器是在所述车载设备上电后且在所述操作系统运行之前开启的;响应于所述操作系统的重启指令,执行所述操作系统重启,并在所述操作系统重启后,将所述当前预留内存中的所述日志数据保存到所述存储设备的预留分区中。
>[0006]在一些实施例中,所述响应于通过预设计数器检测到发生异常,获取所述启动过程中的启动起点到所述操作系统异常之间的日志数据,包括:每间隔第一预设时间,对所述预设计数器执行一次重启操作;响应于所述预设计数器在第二预设时间内未检测到任一次重启操作,自所述预设计数器接收所述预设计数器所触发的中断;响应于所述中断,获取所述启动过程中的启动起点到所述异常之间的日志数据。
[0007]在一些实施例中,在所述操作系统的启动过程中,响应于发生另一种异常,获取所述启动过程中的启动起点到所述另一种异常之间的日志数据,并将所述日志数据保存到当前预留内存中,其中所述另一种异常与所述异常不同。
[0008]在一些实施例中,所述操作系统的重启指令是响应于完成将所述日志数据保存到当前预留内存中而触发生成的;或者,所述方法还包括:在所述操作系统的启动过程中,响应于通过预设计数器检测到发生异常,自所述预设计数器接收所述预设计数器触发的系统重置指令,以使得所述操作系统重启。
[0009]在一些实施例中,所述操作系统的启动过程包括第一启动阶段,所述第一启动阶
段紧邻所述车载设备上电;所述第一启动阶段用于执行系统初始化流程,其中,所述系统初始化流程包括:初始化并开启所述预设计数器。
[0010]在一些实施例中,所述系统初始化流程,进一步包括:映射所述当前预留内存和上一次预留内存;将所述当前预留内存中原内容复制到所述上一次预留内存中,并将所述当前预留内存清空,以用于保存所述日志数据。
[0011]在一些实施例中,所述将所述当前预留内存中的所述日志数据保存到所述存储设备的预留分区中,包括:从所述当前预留内存中读取所述日志数据;响应于所述日志数据表示发生所述异常,将所述日志数据以及所述存储设备的预留分区的信息生成异常数据包,并将所述异常数据包保存到所述存储设备的预留分区中。
[0012]本申请第二方面提供了一种车载设备,包括处理器以及与所述处理器耦接的存储器和存储设备,所述处理器用于执行所述存储器中存储的程序指令,以实现上述第一方面中任一项所述的日志保存的方法,以将日志保存到所述存储设备。
[0013]本申请第三方面提供了一种非易失性计算机可读存储介质,其上存储有程序指令或计算机程序;和/或,一种计算机程序,所述程序指令或计算机程序被处理器执行时实现上述第一方面中任一项所述的日志保存的方法。
[0014]本申请第四方面提供了一种芯片,包括处理器以及与所述处理器耦接的预设计数器,所述处理器用于执行程序指令,以通过预设计数器实现上述第一方面所述的日志保存的方法,以将日志保存到存储设备。
[0015]上述方案,在所述操作系统的启动过程中,响应于通过预设计数器检测到发生异常,获取所述启动过程中的启动起点到所述异常之间的日志数据,并将所述日志数据保存到当前预留内存中,响应于接收到所述操作系统的重启指令,执行所述操作系统重启,并在所述操作系统重启后,将所述当前预留内存中的所述日志数据保存到所述存储设备的预留分区中,解决了系统启动阶段异常而无法抓取日志数据的问题。
[0016]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本申请。
附图说明
[0017]此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本申请的实施例,并与说明书一起用于说明本申请的技术方案。
[0018]图1是本申请实施例的车载设备的结构示意图;
[0019]图2是本申请实施例所涉及的车载设备中操作系统启动过程的一示意图;
[0020]图3是本申请实施例的日志保存方法的流程示意图;
[0021]图4是本申请所涉及的获取日志数据的示意图;
[0022]图5是本申请实施例的日志保存方法的一应用场景示意图;
[0023]图6是本申请实施例的另一日志保存方法的部分流程图;
[0024]图7是本申请实施例所涉及的车载设备中操作系统启动过程的另一示意图;
[0025]图8是本申请实施例所涉及的车载设备中操作系统启动过程的部分示意图;
[0026]图9是本申请实施例的日志保存方法的部分流程图;
[0027]图10是本申请实施例的非易失性计算机可读存储介质的框架示意图;
[0028]图11是本申请实施例的芯片的结构示意图。
具体实施方式
[0029]如上述可知,在某个设备安装Android系统的示例中,目前的日志保存机制需要等到Android系统启动之后,才能开始保存日志,因为其所依赖的原生logd服务对应的logd进程是在Android系统启动过程中才运行起来。这样,首先,假如在logd进程准备好之前,出现了异常,卡住无法正常启动,那么因为logd进程还没有准备好,日志保存机制并没有开始工作,此时,本次系统启动过程中的系统日志无法保存到存储区域。其次,即使日志保存机制运行起来,但由于发生了死锁问题,总线挂死问题等,该设备的CPU不能继续正常运作,此时,也不能保存日志数据。另外,假如在logd进程之前的系统运行阶段中,例如Preloader、Lk、Kernel等阶段,出现异常,都可能导致系统无法保存日志数据(除了Android系统日志之外的),因为日志保存机制还没开始工作。
[0030]目前,针对这种系统无法正常启动,开机过程中出现异常,软件日志机制无法取得日志数据,通常是接串口(本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种日志保存方法,其特征在于,应用于车载设备,所述车载设备安装有操作系统,且包括存储设备;所述方法包括:在所述操作系统的启动过程中,响应于通过预设计数器检测到发生异常,获取所述启动过程中的启动起点到所述异常之间的日志数据,并将所述日志数据保存到当前预留内存中,其中所述预设计数器是所述车载设备上电之后且在所述操作系统运行之前开启的;响应于所述操作系统的重启指令,执行所述操作系统重启,并在所述操作系统重启后,将所述当前预留内存中的所述日志数据保存到所述存储设备的预留分区中。2.根据权利要求1所述的方法,其特征在于,所述响应于通过预设计数器检测到发生异常,获取所述启动过程中的启动起点到所述操作系统异常之间的日志数据,包括:每间隔第一预设时间,对所述预设计数器执行一次重启操作;响应于所述预设计数器在第二预设时间内未检测到任一次重启操作,自所述预设计数器接收所述预设计数器所触发的中断;响应于所述中断,获取所述启动过程中的启动起点到所述异常之间的日志数据。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述操作系统的启动过程中,响应于发生另一种异常,获取所述启动过程中的启动起点到所述另一种异常之间的日志数据,并将所述日志数据保存到当前预留内存中,其中所述另一种异常与所述异常不同。4.根据权利要求1

3中任一项所述的方法,其特征在于,所述操作系统的重启指令是响应于完成将所述日志数据保存到当前预留内存中而触发生成的;或者所述方法还包括:在所述操作系统的启动过程中,响应于通过预设计数器检测到发生异常,自所述预设计数器接收所述预设计数器触发的系统重置指令,以使得所述操作系...

【专利技术属性】
技术研发人员:程标孙超杰
申请(专利权)人:合肥杰发科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1