- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于嵌入式Linux用电信息采集终端存储数据方法
基于嵌入式Linux用电信息采集终端存储数据方法
摘 要:本发明公开一种基于嵌入式Linux的用电信息采集终端使用内存映射文件存储数据的方法,通过内存映射函数mmap(Linux系统调用)将所需读写的数据映射到用户进程空间,以读写内存的形式访问存储数据具有可将数据固化存储、掉电不丢、读写方便、性能优越和节约成本等优势。
关键词:嵌入式Linux;用电信息;终端存储
中图分类号:TM73 文献标识码:A
一、技术领域
本发明涉及智能电网用电信息采集系统领域,具体涉及基于嵌入式Linux用电信息采集终端存储数据的方法。
二、背景技术
电力用户用电信息采集系统(power user electric energy data acquiresystem) 是对电力用户的用电信息进行采集、处理和实时监控的系统,实现用电信息的自动采集、计量异常监测、电能质量监测、用电分析和管理、相关信息发布、分布式能源监控、智能用电设备的信息交互等功能。
用电信息采集终端(electric energy data acquire terminal)是对各信息采集点用电信息采集的设备,简称采集终端。可以实现电能表数据的采集、数据管理、数据双向传输以及转发或执行控制命令的设备。用电信息采集终端按应用场所分为专变采集终端、 集中抄表终端 (包括集中器、采集器)、分布式能源监控终端等类型。
采集终端因功能要求在运行过程中会对部分数据进行频繁读写体现在以下几个方面:采集终端在每轮次抄表结束后会对采集结果进行统计、计算并存储,采集终端会每分钟对各采集点进行数据统计、计算并存储,采集终端会每秒种读取自身计量芯片数据计算、累加并存储,采集终端会实时读取脉冲表状态并累加、存储。
三、关于存储、读写此类数据的方案
(一)存文件,将所使用的数据先缓冲在内存中然后读写完成后存入文件。数据存入文件可避免系统停电带来的数据丢失问题,但读写文件操作较为繁琐、不能以操作字节的形式访问数据使用不便,且频繁地读写文件性能有限特别体现在大型文件的重复、随机读写上。
(二)增加硬件SRAM(掉电不丢内存),可以以操作字节的形式访问数据,但需额外供电,采集终端的板载锂电池一般设计寿命为5年,即使是寿命未到也存在电池自放电、批量质量问题造成SRAM供电电池失效导致数据丢失,且使硬件意外地增加成本。
(三)编程到Flash,可以实现固化存储不需额外供电,掉电后数据不丢失,但Flash编程需专用驱动且需先擦除再写入,不能以操作字节的形式读写,还需考虑Flash的损耗均衡以保证其读写寿命。
四、发明内容
针对上述问题,本发明提供一种可将数据固化存储、掉电不丢、读写方便、性能优越的基于嵌入式Linux的用电信息采集终端存储数据的方法。
为解决上述问题,本发明采取的技术方案为:基于嵌入式Linux的用电信息采集终端存储数据的方法,包括如下步骤:
(一)确定所需存储的数据以及数据长度,在进程地址空间中定义内存映射区的基地址,并定义用于存储各数据的地址与基地址的相对偏移;比如需存储1M的数据这些数据分别为数据1、数据2、数据3.....数据256,每个占用4个字节,如果内存映射区基地址为0xffff0000,则存储这些数据的地址分别为数据1-0xffff0000,数据2-0xffff0004,数据3-0xffff0008......,则可如下定义:[0013]数据1:(基地址+0);[0014]数据2:(基地址+4);[0015]数据3:(基地址+8);.....定义这些偏移是为了方便读写各数据。
(二)根据步骤一中所需存储数据的长度检测待内存映射文件的合法性,若文件合法则进入步骤三;若不合法则根据所需存储数据长度创建文件并将文件内容填充为零值再进入步骤三。
(三)调用内存映射函数mmap,建立与步骤二中的待内存映射文件的映射,将内存映射函数mmap返回地址赋予步骤一中定义的基地址。
(四)使用步骤一中定义的内存映射区的基地址以及其他数据的相对偏移地址读写所需存储数据。
内存映射文件利用虚拟内存把文件映射到进程的地址空间中去,在此之后进程操作文件,就像操作进程空间里的地址一样,比如使用memcpy等内存操作的函数。这种方法能够很好地应用在需要频繁处理一个文件或者是一个大文件的场合,这种方式处理IO效率比普通IO效率要高。Linux提供了内存映射函数mmap,调用时指明待映射文件以及文件长度即可返回映射内存首地址,它把文件内容映射到一段内存上。通过对这段内存的读取和修改,实现对文件的读取和修改。
根据所需存储数据长度确定所需映射内存的长度,同时也决定了待内存映射文件的大小。所述步骤
您可能关注的文档
最近下载
- 咽喉用药市场白皮书.pdf VIP
- 临时用电施工方案.doc VIP
- 民族区域自治制度优秀教学课件.pptx VIP
- 人民大2024《人工智能与Python程序设计》课件(教材配套版)第10章-使用 Python 语言实现机器学习模型-回归分析.pdf VIP
- Lesson 3 at the seaside(课件)典范英语三年级上册.pptx VIP
- 人民大2024《人工智能与Python程序设计》课件(教材配套版)第9章-机器学习概述.pdf VIP
- 主体性概念的历史演变与理论探讨.docx VIP
- 普外科质量与安全管理小组活动记录.docx VIP
- 医院急性创伤患者救治流程.pdf VIP
- 讲义 16 分式讲 16 分式.doc VIP
文档评论(0)