CN105224471B - 基于嵌入式Linux的用电信息采集终端存储数据的方法 - Google Patents
基于嵌入式Linux的用电信息采集终端存储数据的方法 Download PDFInfo
- Publication number
- CN105224471B CN105224471B CN201510683330.XA CN201510683330A CN105224471B CN 105224471 B CN105224471 B CN 105224471B CN 201510683330 A CN201510683330 A CN 201510683330A CN 105224471 B CN105224471 B CN 105224471B
- Authority
- CN
- China
- Prior art keywords
- data
- file
- memory mapping
- memory
- acquisition terminal
- 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.)
- Active
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开一种基于嵌入式Linux的用电信息采集终端使用内存映射文件存储数据的方法,通过内存映射函数mmap(Linux***调用)将所需读写的数据映射到用户进程空间,以读写内存的形式访问存储数据具有可将数据固化存储、掉电不丢、读写方便、性能优越、节约成本等优势。
Description
技术领域
本发明涉及智能电网用电信息采集***领域,具体涉及基于嵌入式Linux用电信息采集终端存储数据的方法。
背景技术
电力用户用电信息采集***(power user electric energy data acquiresystem)是对电力用户的用电信息进行采集、处理和实时监控的***,实现用电信息的自动采集、计量异常监测、电能质量监测、用电分析和管理、相关信息发布、分布式能源监控、智能用电设备的信息交互等功能。
用电信息采集终端(electric energy data acquire terminal)是对各信息采集点用电信息采集的设备,简称采集终端。可以实现电能表数据的采集、数据管理、数据双向传输以及转发或执行控制命令的设备。用电信息采集终端按应用场所分为专变采集终端、集中抄表终端(包括集中器、采集器)、分布式能源监控终端等类型。
采集终端因功能要求在运行过程中会对部分数据进行频繁读写体现在以下几个方面:采集终端在每轮次抄表结束后会对采集结果进行统计、计算并存储,采集终端会每分钟对各采集点进行数据统计、计算并存储,采集终端会每秒种读取自身计量芯片数据计算、累加并存储,采集终端会实时读取脉冲表状态并累加、存储。
目前主要使用以下方案来存储、读写此类数据:
1.存文件,将所使用的数据先缓冲在内存中然后读写完成后存入文件。数据存入文件可避免***停电带来的数据丢失问题,但读写文件操作较为繁琐、不能以操作字节的形式访问数据使用不便,且频繁的读写文件性能有限特别体现在大型文件的重复、随机读写上。
2.增加硬件SRAM(掉电不丢内存),可以以操作字节的形式访问数据,但需额外供电,采集终端的板载锂电池一般设计寿命为5年,即使是寿命未到也存在电池自放电、批量质量问题造成SRAM供电电池失效导致数据丢失,且增加硬件意味的增加成本。
3.编程到Flash,可以实现固化存储不需额外供电,掉电后数据不丢失,但Flash编程需专用驱动且需先擦除再写入,不能以操作字节的形式读写,还需考虑Flash的损耗均衡以保证其读写寿命。
发明内容
针对上述问题,本发明提供一种可将数据固化存储、掉电不丢、读写方便、性能优越的基于嵌入式Linux的用电信息采集终端存储数据的方法。
为解决上述问题,本发明采取的技术方案为:基于嵌入式Linux的用电信息采集终端存储数据的方法,包括如下步骤:
步骤一、确定所需存储的数据以及数据长度,在进程地址空间中定义内存映射区的基地址,并定义用于存储各数据的地址与基地址的相对偏移;
比如需存储1M的数据这些数据分别为数据1、数据2、数据3.....数据256,每个占用4个字节,如果内存映射区基地址为0xffff0000,则存储这些数据的地址分别为数据1->0xffff0000,数据2->0xffff0004,数据3->0xffff0008......,则可如下定义:
数据1:(基地址+0);
数据2:(基地址+4);
数据3:(基地址+8);.....
定义这些偏移是为了方便读写各数据;
步骤二、根据步骤一中所需存储数据的长度检测待内存映射文件的合法性,若文件合法则进入步骤三;若不合法则根据所需存储数据长度创建文件并将文件内容填充为零值再进入步骤三;
步骤三、调用内存映射函数mmap,建立与步骤二中的待内存映射文件的映射,将内存映射函数mmap返回地址赋予步骤一中定义的基地址;
步骤四、使用步骤一中定义的内存映射区的基地址以及其它数据的相对偏移地址读写所需存储数据。
内存映射文件利用虚拟内存把文件映射到进程的地址空间中去,在此之后进程操作文件,就像操作进程空间里的地址一样,比如使用memcpy等内存操作的函数。这种方法能够很好的应用在需要频繁处理一个文件或者是一个大文件的场合,这种方式处理IO效率比普通IO效率要高。Linux提供了内存映射函数mmap,调用时指明待映射文件以及文件长度即可返回映射内存首地址,它把文件内容映射到一段内存上。通过对这段内存的读取和修改,实现对文件的读取和修改。
根据所需存储数据长度确定所需映射内存的长度,同时也决定了待内存映射文件的大小。
所述步骤二中检测待内存映射文件合法性的条件还包括文件的起始字节及文件的结束字节。
本发明公开一种基于嵌入式Linux的用电信息采集终端使用内存映射文件存储数据的方法,通过内存映射函数mmap(Linux***调用)将所需读写的数据映射到用户进程空间,以读写内存的形式访问存储数据具有可将数据固化存储、掉电不丢、读写方便、性能优越、节约成本等优势。
本发明具备如下有益效果:
1.无需增加硬件节约成本,并增加可靠性;
2.数据读写可以以操作内存的形式进行;
3.实现固化存储,***掉电后无需电池供电以保存数据;
4.无需考虑存储器件的磨损均衡;
5.无需考虑存储器件的读写次数;
6.无需专用存储器件的读写驱动程序、可移植性高;
7.内存映射文件性能优势:正常的***IO读写需要两次传输一次是在文件和内核高速缓冲区之间,另一次在在高速缓冲区和用户空间缓冲区之间。使用内存映射函数mmap就无需第二次传输了,对于输入来讲,一旦内核将相应的文件块映射进内存之后用户进程就能够使用这些数据了。对于输出来讲,用户进程仅仅需要修改内存中的内容,然后可以依靠内核管理器来自动更新底层的文件。除了节省了内核空间和用户空间之间的一次传输之后,内存映射函数mmap还能够通过减少所需使用的内存来提升性能。
附图说明
图1为本发明的流程图;
图2为本发明的原理示意图;
具体实施方式
基于嵌入式Linux的用电信息采集终端存储数据的方法,包括如下步骤:
步骤一、确定所需存储的数据以及数据长度,在进程地址空间中定义内存映射区的基地址,并定义用于存储各数据的地址与基地址的相对偏移;根据所需存储数据长度确定所需映射内存的长度,同时也决定了待内存映射文件的大小;
步骤二、根据步骤一中所需存储数据的长度、待内存映射文件的起始字节及结束字节检测待内存映射文件的合法性,若文件合法则进入步骤三;若不合法则根据所需存储数据长度创建文件并将文件内容填充为零值再进入步骤三;
步骤三、调用内存映射函数mmap,建立与步骤二中的待内存映射文件的映射,将内存映射函数mmap返回地址赋予步骤一中定义的基地址;
步骤四、使用步骤一中定义的内存映射区的基地址以及其它数据的相对偏移地址读写所需存储数据。
Claims (3)
1.基于嵌入式Linux的用电信息采集终端存储数据的方法,其特征在于包括如下步骤:
步骤一、确定所需存储的数据以及数据长度,在进程地址空间中定义内存映射区的基地址,并定义用于存储各数据的地址与基地址的相对偏移;
步骤二、根据步骤一中所需存储数据的长度检测待内存映射文件的合法性,若文件合法则进入步骤三;若不合法则根据所需存储数据长度创建文件并将文件内容填充为零值再进入步骤三;
步骤三、调用内存映射函数mmap,建立与步骤二中的待内存映射文件的映射,将内存映射函数mmap返回地址赋予步骤一中定义的基地址;
步骤四、使用步骤一中定义的内存映射区的基地址以及其它数据的相对偏移地址读写所需存储数据。
2.根据权利要求1中所述的基于嵌入式Linux的用电信息采集终端存储数据的方法,其特征在于:根据所需存储数据长度确定所需映射内存的长度,同时也决定了待内存映射文件的大小。
3.根据权利要求1中所述的基于嵌入式Linux的用电信息采集终端存储数据的方法,其特征在于:所述步骤二中检测待内存映射文件合法性的条件还包括文件的起始字节及文件的结束字节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510683330.XA CN105224471B (zh) | 2015-10-20 | 2015-10-20 | 基于嵌入式Linux的用电信息采集终端存储数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510683330.XA CN105224471B (zh) | 2015-10-20 | 2015-10-20 | 基于嵌入式Linux的用电信息采集终端存储数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105224471A CN105224471A (zh) | 2016-01-06 |
CN105224471B true CN105224471B (zh) | 2018-04-13 |
Family
ID=54993455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510683330.XA Active CN105224471B (zh) | 2015-10-20 | 2015-10-20 | 基于嵌入式Linux的用电信息采集终端存储数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105224471B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107329697A (zh) * | 2017-06-27 | 2017-11-07 | 湖南威胜信息技术有限公司 | 用于嵌入式***的用电信息数据存取方法及其电能表 |
CN108333398B (zh) * | 2018-01-18 | 2020-06-09 | 研耀(上海)信息科技有限公司 | 一种高节能电表 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8060706B2 (en) * | 2008-03-28 | 2011-11-15 | Inventec Corporation | Method of allocating physical memory in specified address range under Linux system platform |
US8589650B2 (en) * | 2010-05-17 | 2013-11-19 | Texas Instruments Incorporated | Dynamically configurable memory system |
CN103634353A (zh) * | 2012-08-27 | 2014-03-12 | 国网电力科学研究院 | 一种用电信息采集终端及其实现方法 |
-
2015
- 2015-10-20 CN CN201510683330.XA patent/CN105224471B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN105224471A (zh) | 2016-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101488796B (zh) | 一种卫星有效载荷管理***及管理方法 | |
CN102799396B (zh) | 存储设备、中断控制方法以及供电时间测量方法 | |
CN106095828B (zh) | 一种基于用电信息采集终端的曲线数据存储方案 | |
CN105702300A (zh) | 一种基于FPGA的NAND Flash容错*** | |
CN103522994A (zh) | 电动汽车换电站动力电池箱成组自动选优***及工作方法 | |
CN105278875B (zh) | 一种混合异构nand固态硬盘 | |
CN202250053U (zh) | 兼具存储和遥测功能的测井装置 | |
CN105224471B (zh) | 基于嵌入式Linux的用电信息采集终端存储数据的方法 | |
CN103559145B (zh) | 一种数据读取、写入方法和电子设备 | |
CN105474182A (zh) | 在电子设备处于低功率模式的同时支持周期性写操作的存储设备 | |
CN108664577A (zh) | 一种基于flash空闲区的文件管理方法及*** | |
CN103729143A (zh) | 多路电表电能数据存储的数据安全方法 | |
CN108647278A (zh) | 一种文件管理方法及*** | |
CN103258044B (zh) | 一种面向dsp的二元组nandflash数据文件管理方法 | |
CN108365283A (zh) | 设备电池及无人机 | |
CN111124313A (zh) | 电力采集终端数据读写方法、装置和电子设备 | |
CN201616110U (zh) | 低功耗多接口sd卡存储模块 | |
CN201413345Y (zh) | 基于低功耗短距离无线传输的数字式电能表采集器 | |
CN104252423A (zh) | 基于多内核处理器的一致性处理方法和装置 | |
CN201444166U (zh) | 基于低功耗短距离无线传输的混合电能表采集器 | |
CN205880852U (zh) | 一种管理数据客户端数据存储设备 | |
CN108664578A (zh) | 一种文件循环存储方法及*** | |
CN101667195A (zh) | 一种多用户数据库存储***和方法 | |
CN201570071U (zh) | 智能卡考勤机 | |
CN210742926U (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |