掌桥专利:专业的专利平台
掌桥专利
首页

一种基于嵌入式Linux系统的log抓取方法、装置、计算机及存储介质

文献发布时间:2023-06-19 18:37:28


一种基于嵌入式Linux系统的log抓取方法、装置、计算机及存储介质

技术领域

本发明涉及通信技术领域,尤其涉及一种基于嵌入式Linux系统的log抓取方法。

背景技术

嵌入式系统出现于20世纪60年代晚期,它最初被用于控制机电电话交换机,如今已被广泛的应用于工业制造、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等众多领域。计算机系统核心CPU,每年在全球范围内的产量大概在二十亿颗左右,其中超过80%应用于各类专用性很强的嵌入式系统。一般的说,凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。

Linux做嵌入式的优势,首先,Linux是开放源代码的,不存在黑箱技术,遍布全球的众多Linux爱好者又是Linux开发者的强大技术支持;其次,Linux的内核小、效率高,内核的更新速度很快,linux是可以定制的,其系统内核最小只有约134KB。第三,Linux是免费的OS,在价格上极具竞争力。Linux还有着嵌入式操作系统所需要的很多特色,突出的就是Linux适应于多种CPU和多种硬件平台,是一个跨平台的系统。它可以支持二三十种CPU。而且性能稳定,裁剪性很好,开发和使用都很容易。

当前的嵌入式Linux系统抓取log方式,一般采用Linux设备通过UART线直接PC电脑来进行调试,但是在外场客户使用过程中,无法进行实时连接PC,此时出现异常将导致异常信息无法抓取到,并且在实验室环境下不能复现的情况。

现有专利CN109189601A公开了的一种Linux系统下RAID卡log信息的抓取方法,包括将storcli工具安装至用户文件夹,搭建测试环境;在用户文件夹内创建用于保存RAID卡log信息的日志记录文件;使用storcli工具抓取RAID卡log信息并分类保存到日志记录文件中;根据预设条件对日志记录文件中的log信息进行过滤,得到处理后的log信息;将处理后的log信息存储到log数据表格table_log中。其有效缩短服务器故障修复时间,提高故障分析的效率和准确度是摆在每个维护人员面前的难题。然而,其仅能解决应用层log抓取问题,无法解决Linux内核层出现异常时,底层系统异常信息的全面抓取问题。

因此,亟需一种方法解决内核异常信息无法全面抓取的问题,解决系统出现异常死机、异常重启等问题。

发明内容

本发明解决了现有Linux系统抓取log无法供外场客户使用,无法进行实时连接PC,内核系统异常信息无法全面抓取的问题。

本发明提供一种基于嵌入式Linux系统的log抓取方法,所述方法包括:

Linux系统中CPU通过串行接口与MCU模块连接,所述Linux系统中CPU传输心跳数据至MCU模块,所述MCU模块抓取所述心跳数据,并判断是否有心跳数据缺失;

所述获取的心跳数据缺失,保存心跳数据在flash中;

重启所述CPU,所述MCU模块抓取所述保存在flash的心跳数据传输至CPU;

所述CPU获取所述心跳数据上传至后台服务器;

所述CPU在发送异常心跳数据时,使用kdump makedumpfile机制进行抓取crashdump;

所述CPU重启后,所述crashdump保存在Linux系统中,并通过所述Linux系统上传至后台服务器。

进一步的,还提供一种优选实施方式,所述kdump makedumpfile机制具体为:

在Linux系统中增加kexec tool,用于负责加载crash内核和启动参数传递;

在Linux系统中增加一个rootfs分区,用于存放rootfs文件系统。

进一步的,还提供一种优选实施方式,所述crashdump保存在Linux系统中,并通过所述Linux系统上传至后台服务器,还包括使用crash和vmlinux进行解析crashdump中各种系统调用栈、且使用objdump解析与Linux ARM异常状态寄存器相关的寄存器。

进一步的,还提供一种优选实施方式,所述MCU模块通过UART0抓取所述心跳数据。

进一步的,还提供一种优选实施方式,所述MCU模块抓取所述保存在flash的心跳数据通过UART1传输至CPU。

进一步的,还提供一种优选实施方式,所述MCU模块采用RT1160的MCU芯片。

进一步的,还提供一种优选实施方式,所述CPU型号为IMX8MP CPU。

基于同一发明构思,本发明还提供一种基于嵌入式Linux系统的log抓取装置,所述装置包括:

CPU模块,用于所述Linux系统中CPU通过串行接口与MCU模块连接,所述Linux系统中CPU传输心跳数据至MCU模块;

MCU模块,用于所述MCU模块抓取所述心跳数据,并判断是否有心跳数据缺失;

心跳数据获取模块,用于所述获取的心跳数据缺失,保存心跳数据在flash中;

心跳数据保存模块,用于重启所述CPU,所述MCU模块抓取所述保存在flash的心跳数据传输至CPU;

心跳数据上传单元,用于所述CPU获取所述心跳数据上传至后台服务器;

异常心跳抓取单元,用于所述CPU在发送异常心跳数据时,使用kdumpmakedumpfile机制进行抓取crashdump;

Crashdump上传单元,用于所述CPU重启后,所述crashdump保存在Linux系统中,并通过所述Linux系统上传至后台服务器。

基于同一发明构思,本发明还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,当所述处理器运行所述存储器存储的计算机程序时,所述处理器执行根据上述中任一项中所述的一种基于嵌入式Linux系统的log抓取方法。

基于同一发明构思,本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述任一项所述的一种基于嵌入式Linux系统的log抓取方法。

本发明的有益之处在于:

本发明解决了现有Linux系统抓取log无法供外场客户使用,无法进行实时连接PC,异常信息无法全面抓取的问题。

本发明所述的一种基于嵌入式Linux系统的log抓取方法,通过MCU模块获取Linux系统中CPU的心跳数据,当MCU模块获取的心跳丢失,则将抓取到的数据保存在flash中。当Linux系统异常的时候,启动第二内核进行数据转存之后,系统将会重启,待重启后,MCU模块抓取所述保存在flash的心跳数据传输至CPU,cpu端获取到数据后,再通过网络上传到后台服务器进行分析。CPU在Linux系统第一次开机时,启动kexec机制,等待异常心跳数据,如果Linux出现异常crash,则使用kdump makedumpfile机制进行抓取到crashdump。在CPU重启后,即第二次开机后,crashdump保存在系统中,crashdump通过网络上传后台服务器。在研发使用crash工具解析二进制解析,objdump以及汇编解析,确认具体问题所在。通过使用以上两种方法结合的方式进行处理,以防止由于外部供电等问题而导致log没有抓取完全等问题。本发明所述的方法能够完整的抓取整个log,保证外场偶然概率性问题能够得到解决,可供外场外场客户使用,避免连接PC,保障log抓取准确性。

本发明应用于无人机平台上,当无人机主机概率性工作不正常时,但是没办法确切知道具体原因,能通过本发明所述的一种基于嵌入式Linux系统的log抓取方法抓取到log,明确知晓无人机主机概率性工作不正常原因。

附图说明

图1为实施方式一所述的一种基于嵌入式Linux系统的log抓取方法抓取示意图。

具体实施方式

为使本发明的技术方案及优点表述得更加清楚,现结合附图对本发明的若干实施方式做进一步详细地描述,但以下所述的各个实施方式仅为本发明的几个较佳实施方式而已,并不用于限制发明。

实施方式一、参见图1说明本实施方式。本实施方式所述的一种基于嵌入式Linux系统的log抓取方法,所述方法包括:

Linux系统中CPU通过串行接口与MCU模块连接,所述Linux系统中CPU传输心跳数据至MCU模块,所述MCU模块抓取所述心跳数据,并判断是否有心跳数据缺失;

所述获取的心跳数据缺失,保存心跳数据在flash中;

重启所述CPU,所述MCU模块抓取所述保存在flash的心跳数据传输至CPU;

所述CPU获取所述心跳数据上传至后台服务器;

所述CPU在发送异常心跳数据时,使用kdump makedumpfile机制进行抓取crashdump;

所述CPU重启后,所述crashdump保存在Linux系统中,并通过所述Linux系统上传至后台服务器。

其中,crashdump为内核崩溃转储机制。

具体的,本实施方式通过MCU模块获取Linux系统中CPU的心跳数据,当MCU模块获取的心跳丢失,则将抓取到的数据保存在flash中。当Linux系统异常的时候,启动第二内核进行数据转存之后,系统将会重启,待重启后,MCU模块抓取所述保存在flash的心跳数据传输至CPU,cpu端获取到数据后,再通过网络上传到后台服务器进行分析。与此同时,CPU在Linux系统第一次开机时,启动kexec机制,等待异常心跳数据,如果Linux出现异常crash,则使用kdump makedumpfile机制进行抓取到crashdump。在CPU重启后,即第二次开机后,crashdump保存在系统中,crashdump通过网络上传后台服务器。通过使用以上两种方法结合的方式进行处理,以防止由于外部供电等问题而导致log没有抓取完全等问题。能够完整的抓取整个log,保证外场偶然概率性问题能够得到解决。

实施方式二、本实施方式是对实施方式一所述的一种基于嵌入式Linux系统的log抓取方法的进一步限定,所述kdump makedumpfile机制具体为:

在Linux系统中增加kexec tool,用于负责加载crash内核和启动参数传递;

在Linux系统中增加一个rootfs分区,用于存放rootfs文件系统。

具体的,在Linux系统中增加kexec tool,用于负责加载crash内核和启动参数传递;在Linux系统中增加一个rootfs分区,将一个最新rootfs文件系统存放在/dev/mmclbk2p3中,系统异常后,第二内核接管Linux系统,转存运行内核寄存器值,保存后,系统重启,即第二次开机的时候,此时通过第二内核启动,加载第二个rootfs文件系统。

实施方式三、本实施方式是对实施方式一所述的一种基于嵌入式Linux系统的log抓取方法的进一步限定,所述crashdump保存在Linux系统中,并通过所述Linux系统上传至后台服务器,还包括使用crash和vmlinux进行解析crashdump中各种系统调用栈、且使用objdump解析与Linux ARM异常状态寄存器相关的寄存器。

具体的,通过使用kdump makedumpfile机制,当系统异常的启动第二内核进行抓取当次异常时寄存器值,保存所述异常时寄存器值到kcore中,在通过makedumpfile复制到存储设备中,最后通过crash、vmlinux来解析crashdump中各种系统调用栈和使用objdump解析与Linux ARM异常状态寄存器相关寄存器,确认具体问题所在。

其中,makedumpfile工具,负责将故障内核的内存copy,压缩,写去指定文件。

实施方式四、本实施方式是对实施方式一所述的一种基于嵌入式Linux系统的log抓取方法的进一步限定,所述MCU模块通过UART0抓取所述心跳数据。

具体的,所述通过UART0为单向传输信号端。

实施方式五、本实施方式是对实施方式一所述的一种基于嵌入式Linux系统的log抓取方法的进一步限定,所述MCU模块抓取所述保存在flash的心跳数据通过UART1传输至CPU。

具体的,所述UART1为双向信号传输端。

实施方式六、本实施方式是对实施方式一所述的一种基于嵌入式Linux系统的log抓取方法的进一步限定,所述MCU模块采用RT1160的MCU芯片。

实施方式七、本实施方式是对实施方式一所述的一种基于嵌入式Linux系统的log抓取方法的进一步限定,所述CPU型号为IMX8MP CPU。

实施方式八、本实施方式所述的一种基于嵌入式Linux系统的log抓取装置,所述装置包括:

CPU模块,用于所述Linux系统中CPU通过串行接口与MCU模块连接,所述Linux系统中CPU传输心跳数据至MCU模块;

MCU模块,用于所述MCU模块抓取所述心跳数据,并判断是否有心跳数据缺失;

心跳数据获取模块,用于所述获取的心跳数据缺失,保存心跳数据在flash中;

心跳数据保存模块,用于重启所述CPU,所述MCU模块抓取所述保存在flash的心跳数据传输至CPU;

心跳数据上传单元,用于所述CPU获取所述心跳数据上传至后台服务器;

异常心跳抓取单元,用于所述CPU在发送异常心跳数据时,使用kdumpmakedumpfile机制进行抓取crashdump;

Crashdump上传单元,用于所述CPU重启后,所述crashdump保存在Linux系统中,并通过所述Linux系统上传至后台服务器。

实施方式九、本实施方式所述的一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,当所述处理器运行所述存储器存储的计算机程序时,所述处理器执行根据实施方式一至实施方式七中任一项中所述的一种基于嵌入式Linux系统的log抓取方法。

实施方式九、本实施方式所述的一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如实施方式一至实施方式七任一项所述的一种基于嵌入式Linux系统的log抓取方法。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或N个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“N个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更N个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或N个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,N个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

技术分类

06120115631980