CN108664655A - 嵌入式系统的日志存储方法及系统 - Google Patents
嵌入式系统的日志存储方法及系统 Download PDFInfo
- Publication number
- CN108664655A CN108664655A CN201810479161.1A CN201810479161A CN108664655A CN 108664655 A CN108664655 A CN 108664655A CN 201810479161 A CN201810479161 A CN 201810479161A CN 108664655 A CN108664655 A CN 108664655A
- Authority
- CN
- China
- Prior art keywords
- memory
- storing method
- daily record
- log storing
- log
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 230000006870 function Effects 0.000 claims description 11
- 230000002159 abnormal effect Effects 0.000 claims description 8
- 206010000210 abortion Diseases 0.000 abstract description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000004064 dysfunction Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
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
技术领域
本发明涉及数据处理技术领域,尤其涉及一种嵌入式系统的日志存储方法及系统。
背景技术
目前,在嵌入式系统中,日志的存储主要有两种存储方式:1)存储在与CPU连接的RAM(random access memory,随机存储器)中,2)存储在非易失的文件系统下。对于第1种情况,将日志文件直接存储在RAM 中,在系统掉电或重启后容易丢失日志,这对于某些需要长时间提供服务的嵌入式系统并不适用, 而第2种方式,当出现异常指令或访问异常时,一般会导致任务崩溃进而异常中断。为了不影响系统正常工作,通常的处理就是尽快对系统进行复位。然而,快速的复位要求会来不及将关键定位信息保存到文件,或者保存文件的任务异常导致文件读写功能异常,甚至有些系统在异常中断处理过程中是不能做文件IO操作的。
因此,需要一种嵌入式系统的日志存储方法及系统,来解决嵌入式系统异常复位时系统日志保存不及时或无法保存的问题。
发明内容
本发明的目的在于通过提供一种嵌入式系统的日志存储方法及系统,来解决系统快速复位时系统日志保存不及时的问题。
为了解决上述问题,根据本发明的一个方面,提供了一种嵌入式系统的日志存储方法,该日志存储方法包括以下步骤:步骤一,初始化系统,并在系统内存中划分出一块内存区域作为预留内存;步骤二,在系统异常中断时,记录日志到所述预留内存中;以及步骤三,重启系统后,将预留内存中的日志转存到日志文件中。
优选地,所述预留内存独立于操作系统。这样,正常运行时,所述操作系统不对所述预留内存进行管理和分配任务;系统重启后,所述操作系统不对所述预留内存进行清零,使得系统重启前的数据能够保存在所述预留内存中。
优选地,所述日志存储方法还包括设置在所述步骤一之后的用于对所述预留内存进行初始化的步骤。
优选地,所述日志存储方法还包括设置在预留内存初始化步骤之后的通过设置特殊标志显示预留内存初始化成功的步骤。
优选地,所述日志中记录有任务崩溃时含出错任务的堆栈信息。
优选地,所述步骤二具体为:当系统出现异常时,通过调用回调函数将日志写入到预留内存中。
优选地,所述日志存储方法还包括设置在所述步骤三之后的定期检查日志文件以进行问题定位及解决的步骤。
优选地,所述定期检查日志文件以进行问题定位的步骤具体为:通过定期检查日志文件中的日志信息,判断系统是否有属于正常复位或异常复位,当判断为异常复位时,根据任务的堆栈信息定位到出问题的点。
根据本发明的另一个方面,还提供了一种嵌入式系统的日志存储系统,日志存储系统包括:初始化单元,用于在系统内存中划分出一块内存区域作为预留内存;获取与写入单元,用于获取系统中断时的日志并将其写入到所述预留内存中;以及转存单元,用于在系统重启后,将所述预留内存中的日志转存到日志文件中。
本发明的优点在于:(1)本发明的方法通过将日志先写入预留内存,再转存至日志文件,可以在系统出现严重问题的时候,快速记录日志信息(因为只是写内存,比写文件快得多,并且不会有在异常中断处理过程中无法写文件的限制)。解决了一般日志保存不及时或无法保存日志文件的问题。(2)对于某些需要长久运行的嵌入式系统,可以不需要经常的人工干预,预留内存能自动记录系统中潜在的导致系统异常的问题。(3)维护人员可以通过定期检查日志文件中的日志信息(任务或线程的堆栈信息)来判断系统是否有属于正常复位或异常复位,对于异常复位的情况,可以根据堆栈信息定位到出问题的函数,因此,便于问题快速定位及解决。
附图说明
在下文中将基于实施例并参考附图来对本发明进行更详细的描述。其中:
图1为本发明一种实施方式的嵌入式系统的日志存储方法的流程图。
在附图中,相同的部件使用相同的附图标记。附图并未按照实际的比例。
具体实施方式
下面将结合附图对本发明作进一步说明。
如图1所示,为本发明一种实施方式的嵌入式系统的日志存储方法的流程图。首先,给系统通电,系统进行初始化。系统在初始化时会在系统内存中划分出一块内存区域作为预留内存。
预留内存专门用于记录任务崩溃时含出错任务的堆栈信息。具体地,正常运行时,操作系统不会对这块预留内存进行管理,也不会分配给其他模块使用。系统热复位后,操作系统不会对这块预留内存进行清零,复位前的数据会得以保留。
初始化预留内存,系统正常运行,提供服务。当任务或线程异常指令或访问异常地址时,出现系统异常,会触发一个中断。在这个中断处理函数中,将系统下所有任务的堆栈信息记录到该预留内存中。因为只是写内存,比写文件快得多,并且不会有在异常中断处理过程中无法写文件的限制。因此,日志保存及时。
在保存完日志后,马上进行系统热复位。
系统热复位后,立刻将这部分记录有任务崩溃时含出错任务的堆栈信息的日志转存到日志文件中。后面可以根据需要,定期检查日志文件中的日志信息(任务的堆栈信息)来判断系统是否有属于正常复位或异常复位;对于异常复位的情况,还可以根据任务的堆栈信息定位到出问题的点,有助于进行问题定位及解决。
在一个具体的实施例中,本发明的日志存储方法可以通过以下方式进行实施。(1)通过修改BSP,把物理内存的后面一块RAM设置为预留内存。(2)在硬件初始化函数中,对这块预留内存进行初始化,初始化成功后设置一个特殊标志来表示这块内存已经初始化。这样,在下次热重启后再进行硬件初始化的时候,如果发现这个特殊标志已经设置,则不需要再次初始化。(3)在硬件初始化时,往异常处理的钩子上挂接一个自己的处理函数。这样,当系统出现异常的时候,这个回调函数会被调用到。这个回调函数中可以将日志写入到保留内存,然后复位系统。(4)系统重启后,立刻将保留内存中的日志保存到日志文件中。(5)任何时候,都可以打开系统下的日志文件,进行查看。
在一个具体的实施例中,对于带有日志序号和这条日志对应的任务名称的一条日志信息,通过对任务当时的函数调用情况的分析,可以直接找到导致任务异常的代码位置。例如,0x0040fe08 ftRepRebootHook + 0x6c,表示出现问题时,当前任务停留在0x0040fe08这条指令上,这条指令在函数ftRepRebootHook中,距离该函数入口偏移为0x6c字节。
虽然已经参考优选实施例对本发明进行了描述,但在不脱离本发明的范围的情况下,可以对其进行各种改进并且可以用等效物替换其中的部件。尤其是,只要不存在结构冲突,各个实施例中所提到的各项技术特征均可以任意方式组合起来。本发明并不局限于文中公开的特定实施例,而是包括落入权利要求的范围内的所有技术方案。
Claims (9)
1.一种嵌入式系统的日志存储方法,其特征在于,所述日志存储方法包括以下步骤:步骤一,初始化系统,并在系统内存中划分出一块内存区域作为预留内存;步骤二,检测到系统异常中断时,记录日志到所述预留内存中;以及步骤三,重启系统,并将所述预留内存中的日志转存到日志文件中。
2.根据权利要求1所述的日志存储方法,其特征在于,所述预留内存独立于操作系统。
3.根据权利要求1所述的日志存储方法,其特征在于,所述日志存储方法还包括设置在所述步骤一之后的用于对所述预留内存进行初始化的步骤。
4.根据权利要求3所述的日志存储方法,其特征在于,所述日志存储方法还包括设置在预留内存初始化步骤之后的通过设置特殊标志显示预留内存初始化成功的步骤。
5.根据权利要求1所述的日志存储方法,其特征在于,所述日志中记录有任务崩溃时含出错任务的堆栈信息。
6.根据权利要求1所述的日志存储方法,其特征在于,所述步骤二具体为:当系统出现异常时,通过调用回调函数将日志写入到预留内存中。
7.根据权利要求1所述的日志存储方法,其特征在于,所述日志存储方法还包括设置在所述步骤三之后的定期检查日志文件以进行问题定位及解决的步骤。
8.根据权利要求7所述的日志存储方法,其特征在于,所述定期检查日志文件以进行问题定位的步骤具体为:通过定期检查日志文件中的日志信息,判断系统是否有属于正常复位或异常复位,当判断为异常复位时,根据任务的堆栈信息定位到出问题的点。
9.一种嵌入式系统的日志存储系统,其特征在于,所述日志存储系统包括:初始化单元,用于在系统内存中划分出一块内存区域作为预留内存;获取与写入单元,用于获取系统中断时的日志并将其写入到所述预留内存中;以及转存单元,用于在系统重启后,将所述预留内存中的日志转存到日志文件中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810479161.1A CN108664655A (zh) | 2018-05-18 | 2018-05-18 | 嵌入式系统的日志存储方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810479161.1A CN108664655A (zh) | 2018-05-18 | 2018-05-18 | 嵌入式系统的日志存储方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108664655A true CN108664655A (zh) | 2018-10-16 |
Family
ID=63776848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810479161.1A Pending CN108664655A (zh) | 2018-05-18 | 2018-05-18 | 嵌入式系统的日志存储方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108664655A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109522198A (zh) * | 2018-11-26 | 2019-03-26 | 北京微播视界科技有限公司 | 应用程序的处理方法、装置、电子设备及可读存储介质 |
CN111597100A (zh) * | 2020-07-24 | 2020-08-28 | 成都智明达电子股份有限公司 | 一种嵌入式系统故障日志记录及分析方法 |
CN113660103A (zh) * | 2020-05-12 | 2021-11-16 | 大唐移动通信设备有限公司 | 一种启动信息记录方法、装置、电子设备及存储介质 |
CN116089135A (zh) * | 2022-07-18 | 2023-05-09 | 荣耀终端有限公司 | 功能控制方法、装置、设备及存储介质 |
CN116521419A (zh) * | 2023-05-16 | 2023-08-01 | 山东铂金动力科技有限公司 | 一种嵌入式操作系统的控制方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005107573A (ja) * | 2003-09-26 | 2005-04-21 | Keio Gijuku | 実行状態を復元できるコンピュータ・システム |
CN101046765A (zh) * | 2006-03-29 | 2007-10-03 | 华为技术有限公司 | 一种定位软件故障的方法 |
CN102855922A (zh) * | 2012-09-05 | 2013-01-02 | 南京智达康无线通信科技股份有限公司 | 一种在Flash中记录死机信息的方法 |
CN104331359A (zh) * | 2014-11-03 | 2015-02-04 | 大唐移动通信设备有限公司 | 异常信息的记录方法和装置 |
CN105930283A (zh) * | 2016-04-12 | 2016-09-07 | 珠海市魅族科技有限公司 | 一种存储信息的方法及移动终端 |
CN107368384A (zh) * | 2017-07-21 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种Linux服务器异常信息转储系统及方法 |
-
2018
- 2018-05-18 CN CN201810479161.1A patent/CN108664655A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005107573A (ja) * | 2003-09-26 | 2005-04-21 | Keio Gijuku | 実行状態を復元できるコンピュータ・システム |
CN101046765A (zh) * | 2006-03-29 | 2007-10-03 | 华为技术有限公司 | 一种定位软件故障的方法 |
CN102855922A (zh) * | 2012-09-05 | 2013-01-02 | 南京智达康无线通信科技股份有限公司 | 一种在Flash中记录死机信息的方法 |
CN104331359A (zh) * | 2014-11-03 | 2015-02-04 | 大唐移动通信设备有限公司 | 异常信息的记录方法和装置 |
CN105930283A (zh) * | 2016-04-12 | 2016-09-07 | 珠海市魅族科技有限公司 | 一种存储信息的方法及移动终端 |
CN107368384A (zh) * | 2017-07-21 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种Linux服务器异常信息转储系统及方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109522198A (zh) * | 2018-11-26 | 2019-03-26 | 北京微播视界科技有限公司 | 应用程序的处理方法、装置、电子设备及可读存储介质 |
CN113660103A (zh) * | 2020-05-12 | 2021-11-16 | 大唐移动通信设备有限公司 | 一种启动信息记录方法、装置、电子设备及存储介质 |
CN111597100A (zh) * | 2020-07-24 | 2020-08-28 | 成都智明达电子股份有限公司 | 一种嵌入式系统故障日志记录及分析方法 |
CN116089135A (zh) * | 2022-07-18 | 2023-05-09 | 荣耀终端有限公司 | 功能控制方法、装置、设备及存储介质 |
CN116521419A (zh) * | 2023-05-16 | 2023-08-01 | 山东铂金动力科技有限公司 | 一种嵌入式操作系统的控制方法 |
CN116521419B (zh) * | 2023-05-16 | 2024-05-28 | 山东铂金动力科技有限公司 | 一种嵌入式操作系统的控制方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108664655A (zh) | 嵌入式系统的日志存储方法及系统 | |
CN101377750B (zh) | 一种用于机群容错的系统和方法 | |
CN103092746B (zh) | 线程异常的定位方法及系统 | |
CN101154180B (zh) | 一种任务栈溢出的监测方法 | |
US20060282471A1 (en) | Error checking file system metadata while the file system remains available | |
EP0801387A2 (en) | Storage device, method of controlling same, storage system and method of controlling same | |
US8650443B2 (en) | Management apparatus and method for managing a startup of an operating system | |
CN101558452A (zh) | 用于在闪速eeprom存储页中重构可靠性数据的方法和装置 | |
CN105988921A (zh) | 一种内存越界的检测方法及装置 | |
CN109753378A (zh) | 一种内存故障的隔离方法、装置、系统及可读存储介质 | |
CN104536841B (zh) | 一种Android系统Data分区自修复方法及系统 | |
CN101334751A (zh) | 虚拟机监视器识别客户操作系统中进程的方法及装置 | |
CN106104515A (zh) | 利用非易失性存储器的文件系统设计和故障恢复方法 | |
CN101192192A (zh) | 用于实时操作系统的任务异常诊断方法及系统 | |
CN101178679A (zh) | 多核系统中内存核查的方法和系统 | |
JP6880961B2 (ja) | 情報処理装置、およびログ記録方法 | |
CN103733181A (zh) | 系统中的故障处理 | |
CN114741220B (zh) | 一种磁盘隔离方法、系统、设备及存储介质 | |
CN101599032A (zh) | 存储节点管理方法、控制子系统和存储系统 | |
JP3551079B2 (ja) | 修正ロードモジュール置換後の復旧方法ならびに装置 | |
CN105243011A (zh) | 内存泄露定位方法及装置 | |
CN108364384A (zh) | 智能快递柜锁控板重启校验方法及存储设备、处理设备 | |
CN102789426A (zh) | 在非易失性存储器件中存储信息的方法和装置 | |
JP2018055323A (ja) | 保守管理システム、及び保守管理方法 | |
CN101593153B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181016 |