CN107329782A - 一种提升嵌入式设备配置文件读写效率的方法 - Google Patents
一种提升嵌入式设备配置文件读写效率的方法 Download PDFInfo
- Publication number
- CN107329782A CN107329782A CN201710485491.7A CN201710485491A CN107329782A CN 107329782 A CN107329782 A CN 107329782A CN 201710485491 A CN201710485491 A CN 201710485491A CN 107329782 A CN107329782 A CN 107329782A
- Authority
- CN
- China
- Prior art keywords
- data
- configuration file
- write
- modules
- embedded device
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种提升嵌入式设备配置文件读写效率的方法,该方法包括把相应的配置文件中的数据通过有向双向链表的形式动态备份到系统内存块中,当需要读取配置数据或者将配置数据存储到FLASH中时,系统直接从特定内存块中通过有效索引读取到相应数据,然后以EPON需求组成相应的配置命令,显示到用户界面或者写入相应配置文件并存储到FLASH中。系统操作数据库的时候,调用在cfgmgr模块初始化的时候挂载上去的回调函数,并且根据表ID来分发是对哪个数据表的操作,然后在cfgmgr模块内部根据表ID将要配置的数据写到开辟的内存空间,即将配置的数据保存到内存中。本发明通过从内存中直接读取数据,提升嵌入式设备配置文件读写效率。
Description
技术领域
本发明涉及通信领域,具体涉及一种提升嵌入式设备配置文件读写效率的方法。
背景技术
对嵌入式设备进行管理时,一般都需要对设备的配置进行保存,保存配置的文件叫配置文件,多以.cfg命名。设备在启动的时候,需要读取初始化的配置或者保存后的配置,所以对配置文件需要进行读写操作。
EPON设备的配置信息较多,包括OLT和ONU的配置,现有OLT设备的配置文件名称为startup.cfg,往往读写配置的实现方式如附图1所示,具体过程为调用cmdRecreateFile函数,发送信号量gCfgFileGenSem,当任务cmdCfgFileMainTask接收到信号量之后去创建文件,并将配置的命令写入到临时的配置文件中,当系统执行write命令的时候,就从这些临时配置文件中读取并写到startup.cfg中,虽然能满足读写的要求,但是仍然存在以下不足:
(1)将配置数据存放在临时配置文件中,当用户需要进行show running-config操作即读配置时或者保存配置(即写配置)时是通过读写文件进行操作的。对文件进行频繁的打开和读写操作,会影响系统读写配置文件的性能;
(2)当配置内容较多或者系统满配时,文件内容较大,需要的时间较长,不能满足用户的要求。
针对ONU的配置,当PON板满配ONU时,ONU的数目多达10240个,每个ONU最少有4个端口,如果ONU及其端口都满配,显而易见配置文件是很大的,对较大的配置文件进行读写时,如果不使用高效的读写方法,需要的时间较长,影响系统读写配置文件的性能,不能满足用户的要求。
发明内容
本发明要解决的技术问题是,针对现有读取较大文件性能存在的上述不足,提供一种读写嵌入式设备配置文件的方法,将配置信息直接存储到内存中供读写,把相应的配置数据存储到内存中,当保存或者读取配置时就直接从内存中读取数据组成相应的配置命令,改善嵌入设备保存配置命令的性能,特别是在大配置的时候,虽然会占用多一点的内存空间,但是明显提高系统配置性能。
本发明为解决上述技术问题所采用的技术方案是:
一种提升嵌入式设备配置文件读写效率的方法,包括如下步骤:
(1)初始化cfgmgr模块时,挂载回调函数,每一个配置项对应一个函数,回调函数函数包含增加、删除、修改记录项节点,为提供查找效率,通过B树的方式将所有的节点存储;
(2)下发配置文件时,通过回调函数对数据库进行相应的增加、删除、修改记录项操作;
(3)根据数据库表ID分别调用不同的cfgmgr内部接口函数,获取的数据通过动态内存的方式存储到开辟的内存;
(4)保存配置文件时,直接对内存进行操作,将从内存中获取的所有数据写入相应配置文件并存储到FLASH中;
(5)读配置文件获取数据时,直接对表ID表项进行操作,从内存中读取数据输出到相应的界面。
按上述方案,所述步骤(1)中cfgmgr模块包括startcfg模块和runningcfg模块,startcfg模块主要用于统一管理配置保存的startcfg文件,给CMD模块提供获取此文件的指针,CMD模块用于读取、生成、擦除、恢复配置操作;runningCfg模块用于管理当前运行的配置,包括保存、修改和删除,以及向外提供接口,供生成buildrun信息或生成startcfg文件。
按上述方案,所述步骤(2)中下发配置文件时配置文件的修改都在内存中进行,回调函数节点的查找通过hash算法进行查找。
按上述方案,所述步骤(3)中表ID表项的查找通过hash算法来完成,查找到相应的表项后直接操作回调函数;通过动态内存的方式存储到开辟的内存是指内存在在堆里,堆里的内存空间动态释放。
按上述方案,所述步骤(4)中FLASH挂载一个可读性的文件系统,当有保存配置的需求时才进行写FLASH。
按上述方案,所述步骤(5)中直接对表ID表项进行操作是指将配置文件的数据通过内存数据库将数据存储起来,数据的信息以原始的命令行信息展示给客户。
本发明的工作原理:该方法包括把相应的配置文件中的数据(简称配置数据)通过有向双向链表的形式动态备份到系统特定内存块中,当需要读取配置数据或者将配置数据存储到FLASH中时,系统将直接从此特定内存块中通过有效索引去读取到相应数据,然后以EPON需求组成相应的配置命令,显示到用户界面或者写入相应配置文件并存储到FLASH中。当系统操作数据库的时候,不再是去调用原本的接口,而是改成了调用在cfgmgr模块初始化的时候挂载上去的几个回调函数,并且根据表ID来分发是对哪个数据表的操作,然后在cfgmgr内部根据表ID将要配置的数据写到开辟的内存空间,即将配置数据保存到内存中,需要的时候直接从内存中读取。
与现有技术相比,本发明具有以下有益效果:
1、现有保存配置文件的思路是每下发一条配置写到配置文件中,读写操作需要对文件进行频繁的打开和关闭,且读取文件需要的时间较长,影响系统的配置性能以及用户感受,使用本发明的方法把数据存放到内存中,不再从flash中获取配置文件中的数据,需要的时候直接从内存中读取,从内存中直接读取数据肯定比从文件中读取数据要快,提高配置文件的访问速率;
2、配置文件中的数据的修改都在内存中完成,提高配置文件的修改效率,改善嵌入设备保存配置命令的性能,特别是在大配置的时候,虽然会占用多一点的内存空间,但是明显提高系统配置性能;
3、通过动态内存的方式存储到开辟的内存是指内存在在堆里,堆里的内存空间可以动态释放,提高内存的使用效率;当有保持配置的需求时才进行写flash,降低些flash的频率。
附图说明
图1为现有OLT设备的配置文件读写配置的实现方式框图;
图2为本发明读写嵌入式设备配置文件的方法的流程图;
图3为本发明实施例将配置数据直接存储到内存中的框架图;
图4为本发明实施例将配置数据直接存储到内存中的具体实施流程图。
具体实施方式
以下结合附图对本发明的原理和特征进一步的描述,所举实例只用于解释说明本发明,并非限定本发明的应用范围。
如图2~图4所示,本发明实施例所述的提升嵌入式设备配置文件读写效率的方法,将配置文件中的数据直接存储到内存中,包括以下步骤:
(1)初始化cfgmgr模块,挂载回调函数
cfgmgr模块有两大模块,startcfg模块和runningcfg模块,startcfg模块主要用于统一管理配置保存的startcfg文件,给CMD模块提供获取此文件的指针,CMD模块用于读取、生成、擦除、恢复配置等操作;runningCfg模块用于管理当前运行的配置,包括保存、修改和删除,以及向外提供接口,供生成buildrun信息或生成startcfg文件。
(2)下发配置文件时,通过回调函数对数据库进行相应的增加、删除、修改记录项操作;
(3)根据数据库表ID分别调用不同的cfgmgr内部接口函数,表ID表项的查找通过hash算法来完成,查找到相应的表项后直接操作回调函数,为防止内存浪费,获取的配置文件中的数据通过动态内存的方式使用链表结构体存储到开辟的内存空间,链表操作的结构体用一个key作为索引,不同的部分在与数据域的成员,根据此种情况,定义cfgmgr通用链表结构体即能满足要求,结构体如下:
其中,pNext指针为指向单向链表的下一个节点的指针,uiKey为链表节点的索引,pData为指向该种链表对应数据结构的数据域。
同时,根据上面定义的cfgmgr通用链表结构体,定义了3个链表操作的函数接口:
i)链表的插入操作:
其中,pstHeadNode为链表头结点指针,pData为将要插入的数据域指针,uiKey为链表节点的索引值;
ii)链表的删除操作:
其中,pstHeadNode为链表头结点指针,uiKey为将要删除节点的索引值;
iii)链表的修改操作:
其中,pstHeadNode为链表头结点,PData为指向将要修改数据的区域,uiKey为链表节点的索引值,uiLength为将要修改数据的数据域长度。
通过定义上面3个链表操作通用接口函数,就可以完全满足cfgmgr模块中关于链表操作的实现。
定义外部接口
(4)保存配置文件时,删掉以前的配置文件,将从内存中获取的所有数据写入相应配置文件并存储到FLASH中,在FLASH中以文件的方式存储,所以FLASH需要挂载一个可读性的文件系统;
(5)读配置文件时,直接对表ID表项进行操作,从内存中读取数据输出到相应的界面,为提高用户的体验,数据的信息以原始的命令行信息展示给客户。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之类,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种提升嵌入式设备配置文件读写效率的方法,其特征在于,包括以下步骤:
(1)初始化cfgmgr模块时,挂载回调函数,每一个配置项对应一个函数,回调函数函数包含增加、删除、修改记录项节点,为提供查找效率,通过B树的方式将所有的节点存储;
(2)下发配置文件时,通过回调函数对数据库进行相应的增加、删除、修改记录项操作;
(3)根据数据库表ID分别调用不同的cfgmgr内部接口函数,获取的数据通过动态内存的方式存储到开辟的内存;
(4)写配置文件时,直接对内存进行操作,将从内存中获取的所有数据写入相应配置文件并存储到FLASH中;
(5)读配置文件获取数据时,直接对表ID表项进行操作,从内存中读取数据输出到相应的界面。
2.根据权利要求1所述的提升嵌入式设备配置文件读写效率的方法,其特征在于,所述步骤(1)中cfgmgr模块包括startcfg模块和runningcfg模块,startcfg模块主要用于统一管理配置保存的startcfg文件,给CMD模块提供获取此文件的指针,CMD模块用于读取、生成、擦除、恢复配置操作;runningCfg模块用于管理当前运行的配置,包括保存、修改和删除,以及向外提供接口,供生成buildrun信息或生成startcfg文件。
3.根据权利要求1所述的提升嵌入式设备配置文件读写效率的方法,其特征在于,所述步骤(2)中下发配置文件时配置文件的修改都在内存中进行,回调函数节点的查找通过hash算法进行查找。
4.根据权利要求1所述的提升嵌入式设备配置文件读写效率的方法,其特征在于,所述步骤(3)中表ID表项的查找通过hash算法来完成,查找到相应的表项后直接操作回调函数;通过动态内存的方式存储到开辟的内存是指内存在在堆里,堆里的内存空间动态释放。
5.根据权利要求1所述的提升嵌入式设备配置文件读写效率的方法,其特征在于,所述步骤(4)中FLASH挂载一个可读性的文件系统,当有保存配置的需求时才进行写FLASH。
6.根据权利要求1所述的提升嵌入式设备配置文件读写效率的方法,其特征在于,所述步骤(5)中直接对表ID表项进行操作是指将配置文件的数据通过内存数据库将数据存储起来,数据的信息以原始的命令行信息展示给客户。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710485491.7A CN107329782A (zh) | 2017-06-23 | 2017-06-23 | 一种提升嵌入式设备配置文件读写效率的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710485491.7A CN107329782A (zh) | 2017-06-23 | 2017-06-23 | 一种提升嵌入式设备配置文件读写效率的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107329782A true CN107329782A (zh) | 2017-11-07 |
Family
ID=60194721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710485491.7A Pending CN107329782A (zh) | 2017-06-23 | 2017-06-23 | 一种提升嵌入式设备配置文件读写效率的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107329782A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189794A (zh) * | 2018-09-13 | 2019-01-11 | 郑州云海信息技术有限公司 | 一种内存数据库的数据机制管理配置系统及方法 |
CN110287220A (zh) * | 2019-07-24 | 2019-09-27 | 新华三大数据技术有限公司 | 一种生成配置逆向文本化的方法及装置 |
CN110955615A (zh) * | 2019-10-23 | 2020-04-03 | 武汉光庭信息技术股份有限公司 | 一种TBox内部数据保护方法及系统 |
CN114020340A (zh) * | 2021-11-02 | 2022-02-08 | 联想(北京)信息技术有限公司 | 一种服务器系统及其数据处理方法 |
CN114816571A (zh) * | 2022-04-15 | 2022-07-29 | 西安广和通无线通信有限公司 | 外挂闪存的方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101022364A (zh) * | 2007-03-14 | 2007-08-22 | 华为技术有限公司 | Trap报文上报方法及系统、告警信息源/告警代理服务装置 |
CN101419571A (zh) * | 2008-12-04 | 2009-04-29 | 上海大学 | 基于Hash算法的在NOR FLASH中存储配置参数的方法 |
CN102662683A (zh) * | 2011-12-30 | 2012-09-12 | 广东东研网络科技有限公司 | 基于键-值对格式的通信设备配置文件的生成和导入方法 |
CN103544151A (zh) * | 2012-07-09 | 2014-01-29 | 上海斐讯数据通信技术有限公司 | linux系统中数据处理的方法及系统 |
CN104615459A (zh) * | 2015-01-05 | 2015-05-13 | 上海凌云天博光电科技有限公司 | 一种MoCA设备参数配置方法及装置 |
US20150199520A1 (en) * | 2014-01-13 | 2015-07-16 | Raytheon Company | Mediated secure boot for single or multicore processors |
-
2017
- 2017-06-23 CN CN201710485491.7A patent/CN107329782A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101022364A (zh) * | 2007-03-14 | 2007-08-22 | 华为技术有限公司 | Trap报文上报方法及系统、告警信息源/告警代理服务装置 |
CN101419571A (zh) * | 2008-12-04 | 2009-04-29 | 上海大学 | 基于Hash算法的在NOR FLASH中存储配置参数的方法 |
CN102662683A (zh) * | 2011-12-30 | 2012-09-12 | 广东东研网络科技有限公司 | 基于键-值对格式的通信设备配置文件的生成和导入方法 |
CN103544151A (zh) * | 2012-07-09 | 2014-01-29 | 上海斐讯数据通信技术有限公司 | linux系统中数据处理的方法及系统 |
US20150199520A1 (en) * | 2014-01-13 | 2015-07-16 | Raytheon Company | Mediated secure boot for single or multicore processors |
CN104615459A (zh) * | 2015-01-05 | 2015-05-13 | 上海凌云天博光电科技有限公司 | 一种MoCA设备参数配置方法及装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189794A (zh) * | 2018-09-13 | 2019-01-11 | 郑州云海信息技术有限公司 | 一种内存数据库的数据机制管理配置系统及方法 |
CN110287220A (zh) * | 2019-07-24 | 2019-09-27 | 新华三大数据技术有限公司 | 一种生成配置逆向文本化的方法及装置 |
CN110287220B (zh) * | 2019-07-24 | 2021-08-24 | 新华三大数据技术有限公司 | 一种生成配置逆向文本化的方法及装置 |
CN110955615A (zh) * | 2019-10-23 | 2020-04-03 | 武汉光庭信息技术股份有限公司 | 一种TBox内部数据保护方法及系统 |
CN110955615B (zh) * | 2019-10-23 | 2021-11-09 | 武汉光庭信息技术股份有限公司 | 一种TBox内部数据保护方法及系统 |
CN114020340A (zh) * | 2021-11-02 | 2022-02-08 | 联想(北京)信息技术有限公司 | 一种服务器系统及其数据处理方法 |
CN114020340B (zh) * | 2021-11-02 | 2024-05-24 | 联想(北京)信息技术有限公司 | 一种服务器系统及其数据处理方法 |
CN114816571A (zh) * | 2022-04-15 | 2022-07-29 | 西安广和通无线通信有限公司 | 外挂闪存的方法、装置、设备及存储介质 |
CN114816571B (zh) * | 2022-04-15 | 2023-06-16 | 西安广和通无线通信有限公司 | 外挂闪存的方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107329782A (zh) | 一种提升嵌入式设备配置文件读写效率的方法 | |
CN103514106B (zh) | 一种数据缓存方法 | |
CN103631907B (zh) | 一种将关系型数据迁移至HBase的方法及系统 | |
CN103268270B (zh) | 快照的管理方法和装置 | |
CN105183839A (zh) | 一种基于Hadoop的小文件分级索引的存储优化方法 | |
CN101582092B (zh) | 一种实现保存内存中的数据的方法及装置 | |
CN103559027A (zh) | 一种key与value分开存储的key-value存储系统设计方法 | |
CN103823865A (zh) | 一种数据库主存索引方法 | |
CN109416666A (zh) | 具有压缩数据和标签的缓存 | |
CN103646063B (zh) | 一种星载高速文件管理系统 | |
CN105718455A (zh) | 一种数据查询方法及装置 | |
CN101916290B (zh) | 内存数据库的管理方法和装置 | |
CN105117415A (zh) | 一种优化的ssd数据更新方法 | |
CN109213432B (zh) | 利用日志结构合并树将数据写入的存储设备及其方法 | |
CN108388569A (zh) | 一种快速的键值数据库的系统及建立方法 | |
CN102053879A (zh) | 基于falsh的自恢复实时文件系统 | |
CN105159616A (zh) | 一种磁盘空间管理方法及装置 | |
CN109656481A (zh) | 一种提高智能卡文件系统flash写入寿命的方法 | |
CN105608142A (zh) | 一种Json数据的存储方法及装置 | |
CN101986649A (zh) | 应用于电信行业计费系统的共享数据中心 | |
CN101430677A (zh) | 一种保留文档编辑痕迹的方法及系统 | |
CN104408128B (zh) | 一种基于b+树异步更新索引的读优化方法 | |
CN105573673A (zh) | 一种基于数据库的数据缓存系统 | |
CN103064749B (zh) | 一种进程间通信方法 | |
CN101217315A (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 |
Application publication date: 20171107 |
|
RJ01 | Rejection of invention patent application after publication |