一种基于嵌入式Linux平台的掉电关机保护数据的方法及
系统
技术领域
本发明属于计算机技术领域,具体地,涉及一种基于嵌入式Linux平台的掉电关机保护数据的方法及系统。
背景技术
当前的嵌入式Linux平台的保护,许多嵌入式Linux系统使用支持日志记录的文件系统,如ext3或ext4。这些文件系统在写操作时会记录事务日志,可以在系统异常关机后通过回放日志来保护文件系统的一致性。然而,即使使用了日志记录,仍然有可能在突然断电的情况下导致文件系统损坏。或者是通过开机后fsck自修复文件系统,但是此方法依然不能够完全修改文件系统,只有在关机的过程中就进行系统正常关机,文件系统正常协助。才能够切底解决此类问题。
发明内容
针对上述问题,本发明提出了一种基于嵌入式Linux平台的掉电关机保护数据的方法及系统,当嵌入式Linux平台在外场出现突然断电关机的情况下,避免系统因为反复开关机过程中文件系统出现概率损坏,导致后面设备开机无法挂载文件系统或者文件系统读写异常,进而保证文件系统经过几千次系统掉电依然能够正常运行。
本发明通过以下技术方案实现:
一种基于嵌入式Linux平台的掉电关机保护数据的方法:
所述方法具体包括以下步骤:
步骤1,在电源电路上增加电容供电,避免瞬间关机;
步骤2,GPIO引脚检测,在嵌入式系统的硬件电路中增加一个gpio引脚,并将其连接到外部供电硬件;
步骤3,系统启动给电容充电:并在运行程序并通过secondpower.sh脚本定期检查GPIO引脚的状态变化;
步骤4,在判定为掉电时进入掉电关机流程并正确关机。
进一步的,在步骤1中,在外部power断电的情况下,电容能够提供一定时间的电源。
进一步的,在步骤2中,如果外部power断电,此时gpio引脚会出现电平变化,Linuxkernel以此读取gpio电平值判断是否外部已经断电;
Linux kernel通过读取gpio状态后,客户获取是否外部供电已经断开;
Linux kernel层通过sys文件系统提供gpio节点,供应用层获取gpio状态。
进一步的,在步骤3中,如果检测到GPIO状态变化,进入掉电关机流程;
开机的时候启动一个secondpower.sh,脚本启动中调用c可执行程序,在程序中每隔1s检查下gpio状态,如果有变化,则进入掉电关机流程。
进一步的,在步骤4中,在关机前,首先通过kill命令终止正在运行的进程;
关闭背光、关闭外设电源以减小系统功耗;
让文件系统线remount为只读模式,将文件系统重新挂载为只读模式,确保在关机过程中没有新的写入操作,避免文件系统损坏;
使用umount命令卸载文件系统,在关机之前,确保文件系统已被正确卸载,以避免任何未完成的写入操作;
调用reboot命令并传递参数poweroff,让cpu系统进入正常关机流程,至此完成整个断电关机流程。
进一步的,所述方法还包括日志记录:在系统中加入日志记录机制,在发生故障或异常时能够追踪问题。
进一步的,所述方法还包括备份机制:在发生断电时能够恢复数据。
一种基于嵌入式Linux平台的掉电关机保护数据的系统:
所述系统包括电容模块、GPIO引脚检测模块和掉电关机保护模块;
所述电容模块用于避免瞬间关机;
所述GPIO引脚检测模块连接到系统内部和外部供电硬件上;当系统启动给电容充电时,运行程序并通过secondpower.sh脚本定期检查GPIO引脚的状态变化;
所述掉电关机保护模块在判定为掉电时进入关机流程并正确关机。
一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时实现上述方法的步骤。
本发明有益效果
本发明确保设备文件系统能够正常访问,能够减少外场设备反复开机后出现设备不能正常启动,导致不能正常工作,从而需要重新刷系统或者进行fsck修复的情况。
本发明确保数据完整性:正常关机确保了文件系统和数据的完整性。通过调用reboot(poweroff),系统可以有序地关闭进程、保证文件系统正确卸载,从而避免数据损坏或文件系统错误。
本发明能提供硬件保护:使用电容供电和监测外部电源状态的GPIO可以增加系统的稳定性。电容供电可以在短暂的断电情况下维持系统运行,GPIO监测能够及时发现外部电源变化。
本发明将这些操作封装在一个脚本中,例如secondpower.sh,使得执行和维护这个关机流程变得更加方便。这有助于系统管理员或维护人员在必要时对系统进行调试和维护。
将文件系统转换为只读模式和正确卸载可以降低数据丢失的风险。只读模式减少了写入操作,避免了文件系统在关机时出现问题。
并且本发明具有可扩展性:可以根据具体硬件和系统需求进行定制和修改,以满足特定的嵌入式系统要求。
附图说明
图1为本发明系统关机执行流程图。
具体实施方式
下面将结合本发明实施例中的附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种基于嵌入式Linux平台的掉电关机保护数据的方法:
所述方法具体包括以下步骤:
步骤1,在电源电路上增加电容供电,避免瞬间关机;
在步骤1中,在外部power断电的情况下,电容能够提供一定时间的电源。(能够给最小系统供电5s左右),有助于系统在突然断电时给系统足够的时间执行关机操作,以确保数据的完整性完成关机操作。
步骤2,GPIO引脚检测,在嵌入式系统的硬件电路中增加一个gpio引脚,并将其连接到外部供电硬件;
可以选择一个未被系统其他部分使用的gpio引脚,如果外部power断电,此时gpio引脚会出现电平变化,Linux kernel以此读取gpio电平值判断是否外部已经断电;
Linux kernel通过读取gpio状态后,客户获取是否外部供电已经断开;
Linux kernel层通过sys文件系统提供gpio节点,供应用层获取gpio状态。
在软件层面,Linux kernel通过sys文件系统提供gpio节点,以便应用层获取gpio状态。
步骤3,系统启动给电容充电:并在运行程序并通过secondpower.sh脚本定期检查GPIO引脚的状态变化;
在步骤3中,如果检测到GPIO状态变化,进入掉电关机流程;
开机的时候启动一个secondpower.sh,脚本启动中调用c可执行程序,在程序中每隔1s检查下gpio状态,如果有变化,则进入掉电关机流程。
步骤4,在判定为掉电时进入掉电关机流程并正确关机。
在步骤4中,在关机前,首先通过kill命令终止正在运行的进程;这是为了确保没有未完成的任务或者未写入的数据,以防止数据损坏;
关闭背光、关闭外设电源以减小系统功耗;
让文件系统线remount为只读模式,将文件系统重新挂载为只读模式,确保在关机过程中没有新的写入操作,避免文件系统损坏;只读模式通常更稳定,尤其在突然断电的情况下。
使用umount命令卸载文件系统,在关机之前,确保文件系统已被正确卸载,以避免任何未完成的写入操作;有助于确保文件系统在下次启动时能够正常挂载。
调用reboot命令并传递参数poweroff,这个命令告诉操作系统重新启动,但是实际上会导致系统执行关机操作。让cpu系统进入正常关机流程,确保系统在断电时能够执行正常的关机流程,从而保护文件系统和确保数据的完整性;至此完成整个断电关机流程。
所述方法还可以文件系统修复:在关机前,可以考虑执行文件系统修复工具(如fsck)来进一步确保文件系统的完整性。
所述方法还可以包括日志记录:在系统中加入日志记录机制,在发生故障或异常时能够追踪问题。
所述方法还可以包括备份机制:在发生断电时能够恢复数据。
一种基于嵌入式Linux平台的掉电关机保护数据的系统:
所述系统包括电容模块、GPIO引脚检测模块和掉电关机保护模块;
所述电容模块用于避免瞬间关机;
所述GPIO引脚检测模块连接到系统内部和外部供电硬件上;当系统启动给电容充电时,运行程序并通过secondpower.sh脚本定期检查GPIO引脚的状态变化;
所述掉电关机保护模块在突然掉电时进入关机流程并正确关机。
一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时实现上述方法的步骤。
本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器read only memory,ROM、可编程只读存储器programmable ROM,PROM、可擦除可编程只读存储器erasablePROM,EPROM、电可擦除可编程只读存储器electrically EPROM,EEPROM或闪存。易失性存储器可以是随机存取存储器random access memory,RAM,其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器static RAM,SRAM、动态随机存取存储器dynamic RAM,DRAM、同步动态随机存取存储器synchronous DRAM,SDRAM、双倍数据速率同步动态随机存取存储器doubledata rate SDRAM,DDR SDRAM、增强型同步动态随机存取存储器enhanced SDRAM,ESDRAM、同步连接动态随机存取存储器synchlinkDRAM,SLDRAM和直接内存总线随机存取存储器direct rambus RAM,DR RAM。应注意,本发明描述的方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线例如同轴电缆、光纤、数字用户线digital subscriber line,DSL或无线例如红外、无线、微波等方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质例如,软盘、硬盘、磁带、光介质例如,高密度数字视频光盘digital video disc,DVD、或者半导体介质例如,固态硬盘solid state disc,SSD等。
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
应注意,本申请实施例中的处理器可以是一种集成电路芯片,具有信号处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器DSP、专用集成电路ASIC、现场可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
以上对本发明所提出的一种基于嵌入式Linux平台的掉电关机保护数据的方法及系统,进行了详细介绍,对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。