CN103186436A - 一种android系统掉电保护方法及装置 - Google Patents
一种android系统掉电保护方法及装置 Download PDFInfo
- Publication number
- CN103186436A CN103186436A CN201310105978XA CN201310105978A CN103186436A CN 103186436 A CN103186436 A CN 103186436A CN 201310105978X A CN201310105978X A CN 201310105978XA CN 201310105978 A CN201310105978 A CN 201310105978A CN 103186436 A CN103186436 A CN 103186436A
- Authority
- CN
- China
- Prior art keywords
- power
- android system
- android
- log file
- signal
- 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.)
- Granted
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种android系统掉电保护方法及装置,该方法包括如下步骤:在linux内核建立共享内存;将android系统中运行的应用程序数据写入共享内存;检测掉电信号,如果检测到掉电信号,则执行将所述应用程序数据写成能够永久存储的记录文件。本发明实施例采用linux内核开辟共享内存来存储应用程序数据,在检测到掉电信号时能够及时将应用程序数据进行转化,生成记录文件予以保存,因此在设备完全掉电的情况下,android系统重新上电后,即使先前共享内存中的应用程序数据已经丢失,但是系统还可以通过先前生成的记录文件进行恢复,实现了在不改变硬件的基础上,更加安全可靠地应对设备完全掉电或普通宕机时对数据进行保护。
Description
技术领域
本发明涉及掉电保护技术领域,具体涉及一种android系统掉电保护方法及装置。
背景技术
工业电子设备要求在遇到意外掉电时,能够有选择地对某些敏感数据进行紧急存储,例如设备运作状态、物料使用记录、报警历史事件、设备操作记录以及采样历史数据等,在掉电时,这些数据不但需要得到一定量的保存,而且需要有固定的保存格式;在硬件方面,掉电保存电路的设计是工业电子设备电路设计中的重要环节,这种电路的设计需要考虑到供电方式的切换、电容大小如何选取、掉电保持时间如何量化测定。 实际上,这些问题在工程中需要反复测试、反复改版才能最终确定下来;在数据保存策略方面,电子通信设备在正常工作时候突然掉电后,有效保护工作时历史数据的有效途径有以下两条:
1.正常运行时,每隔一段时间,往非易失存储器(如NandFlash存储器)保存历史数据;
2.正常运行时,不将数据中途写到非易失存储器,仅在掉电的瞬间让中央处理器(CPU)来执行数据保存到非易失存储器的任务,掉电后所有运作所耗的能源来自于掉电保护电路中的电容元件。
第一种方法的优点是无需改动硬件设计,只需由软件来完成相应的保存逻辑,简单可靠,缺点是(flash)掉电存储器的擦写次数有限制,以三星的K9F1208U0C(NandFlash)而言仅10万次,假如频繁的对存储器进行读写操作势必缩短存储器的读写寿命,显然对工业产品而言不可取,而且这种隔一段时间保存一次数据的方法,不一定能真正做到对实时数据的存储,具有一定的滞后性;第二种方法是当前通用的方法,就现在大多数工业控制电子设备而言,采用的也是第二种方法,一般来说,都是检测到掉电中断以后,往相应的应用程序发送命令,由应用程序来保存目标数据,但是这样做有重大缺陷,发明人在参与一个基于安卓 (Android) 系统的工业电子设备研发的过程中,通过Linux Kernel检测到掉电信号以后,又通过安卓的框架层(Framework)以广播的方式(Broadcast)将掉电事件传递给上层应用程序,由于安卓系统的复杂性,数据从内核到框架层、再到应用程序层,需要至少150ms,实际上,框架层还没有向应用层发送广播,硬件系统就已经停止运行,此时,电容余能早已耗尽,因为一般的硬件设计总共掉电时间只有60ms,这样就会使得掉电保存失败,如果通过硬件来解决,那么需要大大增加硬件成本和硬件调试时间,事实证明采用更复杂的电路设计来增加掉电时间是不可取的。
发明内容
本发明提供一种android系统掉电保护方法,能够在系统彻底掉电的情况下对应用程序数据进行保护,以解决上述问题。
本发明实施例提供一种android系统掉电保护方法,包括如下步骤:
A:在linux内核建立共享内存;
B:将android系统中运行的应用程序数据写入共享内存;
C:检测掉电信号,如果未检测到掉电信号,则执行步骤B;如果检测到掉电信号,则执行步骤D;
D:将所述应用程序数据写成能够永久存储的记录文件。
优选地,所述步骤D之后还包括步骤E:android系统重新上电后,从所述记录文件中恢复历史数据。
优选地,步骤D将所述应用程序数据写成能够永久存储的记录文件还包括:调用linux内核文件读写函数将共享内存中的数据写成所述记录文件。
优选地,所述记录文件包括bin格式文件、txt格式文件。
本发明实施例还提供了一种android系统掉电保护装置,包括:
新建单元,用于在linux内核建立共享内存;
写入单元,用于将android系统中运行的应用程序数据写入共享内存;
掉电检测单元,用于检测掉电信号,如果未检测到掉电信号,则执行写入单元;如果检测到掉电信号,则执行转化单元;
转化单元,用于将所述应用程序数据写成能够永久存储的记录文件。
优选地,还包括恢复单元,用于android系统重新上电后,从所述记录文件中恢复历史数据。
优选地,所述转化单元包括调用单元,用于调用linux内核的读写函数将共享内存中的数据写成所述记录文件。
上述技术方案可以看出,由于本发明实施例采用linux内核开辟共享内存来存储应用程序数据,在检测到掉电信号时能够及时将应用程序数据进行转化,生成记录文件予以保存,因此在设备完全掉电的情况下,android系统重新上电后,即使先前共享内存中的应用程序数据已经丢失,但是系统还可以通过先前生成的记录文件进行恢复,实现了在不改变硬件的基础上,更加安全可靠地应对设备完全掉电或普通宕机时对数据进行保护。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例中android系统掉电保护方法的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例:
本发明实施例提供一种android系统掉电保护方法,如图1所示,包括如下步骤。
步骤101:在linux内核建立共享内存。Android系统是基于linux内核运行的,因此本步骤中,把系统内存划分出一部分单独管理,虚拟出一个独立的闪存设备,不在Linux存储管理系统的管理范围内,实际Linux存储管理系统根本不知道该段内存空间的存在。
步骤102:将android系统中运行的应用程序数据写入共享内存。在上一步骤中分配好物理内存以后,在这一步骤中将物理内存做成一个Linux的平台设备(Platform Device),并为该平台设备编写一套独立的平台设备驱动程序(Platform Driver),在驱动程序的probe函数中,创建misc设备文件,映射上述共享内存,完成初始化工作,使得应用程序数据可以通过接口访问到这一块共享内存。应用程序读取这个平台设备,mmap这段共享物理内存到自己的进程空间后,应用程序就可以正常访问这块共享内存了,从而将应用程序数据写入到该共享内存中;此处的驱动程序代码如下:
master_fd = open("/dev/skmem", O_RDWR | O_NDELAY);
if (master_fd >= 0) {
size_t size;
char* base =(char*) mmap(0, PMEM_BASE_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, master_fd, PMEM_BASE);
if (base == MAP_FAILED) {
err = -errno;
base = 0;
LOGE("mmap failed");
close(master_fd);
master_fd = -1;
}
VirtualAddr = base;
LOGE("VirtualAddr 0x%x",VirtualAddr);
在本实用新型实施例中应用程序运行时候,当有需要保存的历史数据产生时,应用程序往共享物理内存中写数据,相对于现有向flash中写入数据的技术方案,本实用新型实施例中应用程序数据写入的是内存,不存在擦写次数的限制,而且不会产生大量的IO中断和文件缓存同步动作,将系统资源消耗降低到最低,这比频繁读写NandFlash的效率更高。
步骤103:检测掉电信号。本步骤中,系统设备(承载android系统运行的设备)设有掉电检测装置,对于掉电检测装置本领域技术人员可以通过现有技术获知,此处不一一赘述。本发明实施例中实现一套IRQ中断逻辑,用request_irq注册一个linux的中断服务,当有掉电事件发生时,通过linux中断服务检测掉电信号,中央处理器立即触发掉电中断信号(这个时间是极短的),系统随即能进入掉电处理程序,即步骤104;而当linux中断服务未检测到掉电信号时,则系统会继续执行步骤102,以便及时将应用程序的数据写入到共享内存中。
步骤104:将所述应用程序数据写成能够永久存储的记录文件。本步骤中,当linux中断服务检测到掉电信号以后,与现有的技术方案不同的是,我们不需要往应用程序发送broadcast信号了,特别当系统负荷很重的时候,应用程序根本来不及接收到掉电信号就关机了,由于共享内存存储的就是历史数据,系统可以利用linux内核文件读写函数(vfs_write)直接把共享内存存成一个文件,即调用linux内核文件读写函数将共享内存中的数据写成所述记录文件,这样做到了最快速度来存储掉电数据,该记录文件包括bin格式文件、txt格式文件,既可以是bin格式文件也可以是txt格式文件,或者两种格式的文件并存。
当系统设备宕机或彻底掉电后,即使在一段时间内未能重新上电,由于上一步骤104中已经生成了记录历史数据的记录文件,因此只要系统一重新上电,则可以继续执行步骤105:从所述记录文件中恢复历史数据。对于由记录文件恢复历史数据的具体操作,本领域技术人员可以通过现有技术获知,此处不一一赘述。
本发明实施例还相应的提供了一种android系统掉电保护装置,包括:
新建单元,用于在linux内核建立共享内存;
写入单元,用于将android系统中运行的应用程序数据写入共享内存;
掉电检测单元,用于检测掉电信号,如果未检测到掉电信号,则执行写入单元;如果检测到掉电信号,则执行转化单元;
转化单元,用于将所述应用程序数据写成能够永久存储的记录文件。
需要说明的是,上述装置和系统内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。
以上对本发明实施例所提供的一种android系统掉电保护方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (7)
1.一种android系统掉电保护方法,其特征在于,包括如下步骤:
A:在linux内核建立共享内存;
B:将android系统中运行的应用程序数据写入共享内存;
C:检测掉电信号,如果未检测到掉电信号,则执行步骤B;如果检测到掉电信号,则执行步骤D;
D:将所述应用程序数据写成能够永久存储的记录文件。
2.如权利要求1所述的一种android系统掉电保护方法,其特征在于,所述步骤D之后还包括步骤E:android系统重新上电后,从所述记录文件中恢复历史数据。
3.如权利要求1或2所述的一种android系统掉电保护方法,其特征在于,步骤D将所述应用程序数据写成能够永久存储的记录文件还包括:调用linux内核文件读写函数将共享内存中的数据写成所述记录文件。
4.如权利要求1或2所述的一种android系统掉电保护方法,其特征在于,所述记录文件包括bin格式文件、txt格式文件。
5.一种android系统掉电保护装置,其特征在于,包括:
新建单元,用于在linux内核建立共享内存;
写入单元,用于将android系统中运行的应用程序数据写入共享内存;
掉电检测单元,用于检测掉电信号,如果未检测到掉电信号,则执行写入单元;如果检测到掉电信号,则执行转化单元;
转化单元,用于将所述应用程序数据写成能够永久存储的记录文件。
6.如权利要求5所述的一种android系统掉电保护装置,其特征在于,还包括恢复单元,用于android系统重新上电后,从所述记录文件中恢复历史数据。
7.如权利要求5或6所述的一种android系统掉电保护装置,其特征在于,所述转化单元包括调用单元,用于调用linux内核的读写函数将共享内存中的数据写成所述记录文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310105978.XA CN103186436B (zh) | 2013-03-28 | 2013-03-28 | 一种android系统掉电保护方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310105978.XA CN103186436B (zh) | 2013-03-28 | 2013-03-28 | 一种android系统掉电保护方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103186436A true CN103186436A (zh) | 2013-07-03 |
CN103186436B CN103186436B (zh) | 2016-01-06 |
Family
ID=48677614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310105978.XA Active CN103186436B (zh) | 2013-03-28 | 2013-03-28 | 一种android系统掉电保护方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103186436B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106802771A (zh) * | 2015-11-26 | 2017-06-06 | 京瓷办公信息系统株式会社 | 电子设备和存储装置使用管理方法 |
CN108226590A (zh) * | 2017-12-27 | 2018-06-29 | 深圳市科陆电子科技股份有限公司 | 一种结算电能表掉电数据的方法及系统 |
WO2019128509A1 (en) * | 2017-12-29 | 2019-07-04 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for processing application, electronic device, and computer-readable storage medium |
CN110209536A (zh) * | 2019-05-13 | 2019-09-06 | 苏州博学智能科技有限公司 | 一种安卓系统断电延时防系统异常方法 |
CN112908390A (zh) * | 2021-02-02 | 2021-06-04 | 深圳市显控科技股份有限公司 | 数据存储方法、装置、电子设备及存储介质 |
CN113641307A (zh) * | 2021-08-12 | 2021-11-12 | 浙江华云信息科技有限公司 | 能掉电保存报文的远方电能量数据终端及其报文存储方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282666B1 (en) * | 1999-02-26 | 2001-08-28 | Agere Systems Guardian Corp. | Computer peripheral device having the capability to wake up from a cold state with information stored before cold powerdown |
CN1770106A (zh) * | 2004-11-04 | 2006-05-10 | 华为技术有限公司 | 通信设备复位信息保存方法 |
CN1991791A (zh) * | 2005-12-27 | 2007-07-04 | 三星电子株式会社 | 使用非易失性存储器作为高速缓存的存储设备及运行方法 |
CN101539891A (zh) * | 2008-03-17 | 2009-09-23 | 凤凰微电子(中国)有限公司 | 一种嵌入式快闪存储器、存储系统及其数据掉电保护方法 |
CN102929805A (zh) * | 2012-10-19 | 2013-02-13 | 浪潮电子信息产业股份有限公司 | 一种存储系统缓存数据掉电保护方法 |
-
2013
- 2013-03-28 CN CN201310105978.XA patent/CN103186436B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282666B1 (en) * | 1999-02-26 | 2001-08-28 | Agere Systems Guardian Corp. | Computer peripheral device having the capability to wake up from a cold state with information stored before cold powerdown |
CN1770106A (zh) * | 2004-11-04 | 2006-05-10 | 华为技术有限公司 | 通信设备复位信息保存方法 |
CN1991791A (zh) * | 2005-12-27 | 2007-07-04 | 三星电子株式会社 | 使用非易失性存储器作为高速缓存的存储设备及运行方法 |
CN101539891A (zh) * | 2008-03-17 | 2009-09-23 | 凤凰微电子(中国)有限公司 | 一种嵌入式快闪存储器、存储系统及其数据掉电保护方法 |
CN102929805A (zh) * | 2012-10-19 | 2013-02-13 | 浪潮电子信息产业股份有限公司 | 一种存储系统缓存数据掉电保护方法 |
Non-Patent Citations (1)
Title |
---|
王兵等: "《嵌入式系统掉电保护的一种设计方法》", 《单片机与嵌入式系统应用》, no. 11, 30 November 2005 (2005-11-30), pages 28 - 30 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106802771A (zh) * | 2015-11-26 | 2017-06-06 | 京瓷办公信息系统株式会社 | 电子设备和存储装置使用管理方法 |
CN106802771B (zh) * | 2015-11-26 | 2019-06-11 | 京瓷办公信息系统株式会社 | 电子设备和存储装置使用管理方法 |
CN108226590A (zh) * | 2017-12-27 | 2018-06-29 | 深圳市科陆电子科技股份有限公司 | 一种结算电能表掉电数据的方法及系统 |
CN108226590B (zh) * | 2017-12-27 | 2021-06-01 | 深圳市科陆电子科技股份有限公司 | 一种结算电能表掉电数据的方法及系统 |
WO2019128509A1 (en) * | 2017-12-29 | 2019-07-04 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for processing application, electronic device, and computer-readable storage medium |
US11144477B2 (en) | 2017-12-29 | 2021-10-12 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for processing reclaimable memory pages, electronic device, and computer-readable storage medium |
CN110209536A (zh) * | 2019-05-13 | 2019-09-06 | 苏州博学智能科技有限公司 | 一种安卓系统断电延时防系统异常方法 |
CN112908390A (zh) * | 2021-02-02 | 2021-06-04 | 深圳市显控科技股份有限公司 | 数据存储方法、装置、电子设备及存储介质 |
CN112908390B (zh) * | 2021-02-02 | 2023-07-28 | 深圳市显控科技股份有限公司 | 数据存储方法、装置、电子设备及存储介质 |
CN113641307A (zh) * | 2021-08-12 | 2021-11-12 | 浙江华云信息科技有限公司 | 能掉电保存报文的远方电能量数据终端及其报文存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103186436B (zh) | 2016-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103186436A (zh) | 一种android系统掉电保护方法及装置 | |
CN100375060C (zh) | 一种嵌入式系统及其实时内存监控处理方法 | |
US10824362B2 (en) | File migration to persistent memory | |
CN102388368B (zh) | 一种内存监控方法及装置 | |
CN101593152B (zh) | 一种移动终端内存泄漏检测方法及装置 | |
CN108763099A (zh) | 系统的启动方法、装置、电子设备和存储介质 | |
CN101241464B (zh) | 一种检测堆栈帧破坏的方法 | |
US20140068360A1 (en) | Systems and methods for testing memory | |
CN105184166A (zh) | 基于内核的安卓程序实时行为分析方法及系统 | |
CN103164523A (zh) | 数据一致性检查方法、装置及系统 | |
CN101539883A (zh) | 嵌入式系统的错误追踪方法和装置 | |
CN102843396A (zh) | 一种分布式缓存系统中的数据写入及读取方法及装置 | |
CN103345189A (zh) | 一种控制器和一种掉电保护方法 | |
CN104011733A (zh) | 在系统预引导期间具有改进的只读存储器锁定的安全数据保护 | |
CN101286130A (zh) | 一种嵌入式设备的复位故障定位的实现方法 | |
CN103366831A (zh) | 存储器的检测方法 | |
CN103543815A (zh) | 信息处理设备和信息处理方法 | |
CN101072124A (zh) | 一种获取日志的方法 | |
CN102025758B (zh) | 分布式系统中数据副本的恢复方法、装置和系统 | |
CN103559119B (zh) | 文件操作请求处理方法及装置 | |
CN103914325A (zh) | 基于混合内存的Linux系统的关机、开机方法及系统 | |
CN102799248A (zh) | 一种网络唤醒装置、计算机和网络唤醒方法 | |
CN103544097B (zh) | 嵌入式系统的日志存储方法、系统及日志读取方法和系统 | |
CN102214147A (zh) | 一种检测内存访问越界的方法及装置 | |
CN107643943A (zh) | 一种任务栈的管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee | ||
CP03 | Change of name, title or address |
Address after: 518000 Guangdong city of Shenzhen province Nanshan District Guangdong streets high-tech district in Shenzhen Software Park Building 1 3BC Patentee after: SAMKOON AUTOMATION TECHNOLOGY (SHENZHEN) CO., LTD. Address before: 518000 Guangdong city of Shenzhen province Baoan District Xixiang Street Hezhou Hengfeng Industrial Building C6 building 10 floor 1003, 1004, three, one of the four Patentee before: Shenzhen City Samkoon Technology Co., Ltd. |