一种嵌入式系统的参数存储机制技术方案

技术编号:27934449 阅读:19 留言:0更新日期:2021-04-02 14:14
本发明专利技术公开了一种嵌入式系统的参数存储机制,包括:抽象层接口,读写完整性,实时性能,重复写入过滤和缺省参数自动生成。根据权利书要求1所述的参数存储机制,其特征在于:1)将一组配置参数放置在一个地址连续的结构化内存块中,应用程序在读写配置参数的时候直接访问内存块中的成员变量,解决了实时性问题;2)在存储介质上指定两个地址不重叠的存储区域,通过一个带有CRC校验字段的控制头部,将内存块映射到存储介质上的两个存储区域;3)仅在系统初始化的时候从存储介质加载数据至内存块,系统主循环中仅执行内存块到存储介质的单向写入;4)数据写入以存储区域为单位,永远有一个存储区域处于备份状态,解决了可靠性问题。

【技术实现步骤摘要】
一种嵌入式系统的参数存储机制
本专利技术涉及一种嵌入式系统的配置参数存储机制,无需借助操作系统的实时调度功能即可解决少量配置参数的实时写入和数据完整性问题,主要用于没有操作系统的低端小型单片机系统的参数配置,属于嵌入式软件设计领域。
技术介绍
在8051,MSP430和ARM等单片机嵌入式系统中,经常需要在运行的过程中保存一些用户通过串口,网络或者人机界面设定的配置参数。参数的正确写入非常关键,如果没有写入或者写入信息不完整将会给系统的运行带来不利的影响。嵌入式系统的板载存储介质比较常见的是FRAM,E2PROM和Flash这三种。第一种介质FRAM具有速度快,延迟小,可靠性高的优点,是一种非常理想的参数存储介质,但是其制作工艺复杂,容量比较小,成本比较高,性价比不高,仅用在某些关键业务中;大多数嵌入式系统仍然是采用比较廉价的E2PROM和Flash,特别是随着手机,数码相机等个人消费电子产品的高速发展,极大地普及了Flash存储介质的使用,从而显著地降低了Flash存储介质的单位比特成本;而且Flash存储芯片大多使用SPI总线接口,带宽通常在几十Mbps,而E2PROM通常是采用I2C总线接口,带宽通常不超过400Kbps,因此在很多实时性要求比较高的嵌入式系统中,Flash存储介质有逐步取代E2PROM的趋势。但是在没有嵌入式操作系统的支持下,使用这两种存储介质会面临下述问题:(1)这两种存储介质都存在写入忙的状态,Flash介质在写入之前还有一个必须的擦除的操作,其忙的时间通常为几十毫秒甚至上百毫秒,这对于实时性要求比较高的嵌入式系统比如无线电收发而言是不可接收的,超过1ms的系统卡顿就会导致报文接收失败;(2)在写入参数的过程中,还可能会发生系统突然断电或者重新上电的行为,如果参数写入一半的过程中,恰好发生了系统复位或者重启等操作,数据的完整性就会遭到破坏,此时需要一种数据备份机制;(3)在系统上电的过程中,由于电源抖动或者上电不稳,而此时处理器又已经完成了引导,进入参数加载阶段,有可能会导致参数加载错误,此时需要一种错误侦测机制和数据恢复手段;(4)系统在出厂的时候或者被客户现场重置之后,配置参数也会被完全清除,存储介质中的数据也是完全无效的。在产品批量生产的时候,依靠人工预设每一套系统的默认参数需要耗费大量的时间,而且还容易出错,此时也需要一种机制来提供一套默认的参数以配置系统的运行;(5)E2PROM和Flash介质还存在写操作寿命的限制,超过了一定的次数,就会导致擦写疲劳,出现不可逆的永久性损坏,从而再也无法可靠的存储数据。应用程序由于状态逻辑的驱动,在某些情况下会频繁的刷新配置参数,有的成员变量的数值实际上是没有改变的,因此大量重复的写操作会降低存储器的使用寿命,此时需要一种机制来过滤掉那些无效的请求,只执行真正有效的操作。
技术实现思路
为了解决8051,MSP430和ARM等没有实时操作系统的嵌入式系统中配置参数的性能及可靠性问题,本方法提出了一套机制,可实现读写实时性强,数据完整性好,能过滤无效的重复写入请求,延长存储器使用寿命效果,并能为系统自动生成缺省的配置参数,减少批产时候的手工配置工作量,具体方法如下:(1)将一组需要配置的系统参数放置在一个地址连续的结构化内存块中,应用程序在读写配置参数的时候直接访问内层块中的成员变量,不直接访问存储介质,实现高速实时访问;在存储介质上指定两个地址不重叠的存储区域,并通过一个带有CRC校验字段的8字节控制头部,将内存数据块中的内容双向映射到存储介质上的两个存储区域;(2)应用程序仅在上电初始化的时候,选择一个数据校验正确的存储区域,一次性将其内容加载至内存数据块;如果有一个区域的数据不正确,则用校验正确的存储区域的数据覆盖该存储区域;如果两个存储区域均不正确,则使用系统默认的配置参数填充内存数据块,并覆盖这两个存储区域;(3)应用程序在完成初始化工作并进入主循环之后,不再从存储介质加载配置参数,而实时监测系统的配置参数写入请求;一旦配置参数的任何一个成员变量有了改动,即开始将整个内存数据块的内容全部缓存至两个存储区域。在缓存数据时候,需要以存储区域为单位进行操作,只有在第一个存储区域完全写入完成之后,才可以写入第二个存储区域;在写入每一个存储区域的数据之前,需要以扇区为单位对该存储区域进行擦除操作,如果有多个扇区则逐个扇区进行擦除;擦除操作完成之后就可以存储器页面FIFO为最大写入单元进行写入操作,如果结构化内存数据块的长度超过了一个页面FIFO的大小,则需要分多个片段进行写入;在每一次扇区擦除操作和数据写入操作之前,都需要检测存储器的工作状态,如果为忙碌,则需要持续等待,只有在不忙碌的时候才可以执行操作;(4)在将结构化内存数据块中的数据写入到两个存储区域的过程中,每一个步骤都被拆分成不包含阻塞等待行为的原子操作;只要检测到存储介质的工作状态为忙碌,则停止执行下一步并继续检测;如果在这个过程中有新的写入请求,则立刻终止当前的流程,从头开始该缓存流程。同样应用程序在设置配置参数的时候,也需要将新的数值和内存数据块中的成员变量做比对;如果二者一致,则放弃操作,否则修改该成员变量并设置一个数据更改请求,通知后台线程将结构化内存数据块的内容异步缓存至存储介质上的两个区域,并更新相应的头部控制信息及CRC校验和;(5)为了可以适配E2PROM,Flash和FRAM等多种存储介质,本方法还设置了一个硬件抽象层(HAL:HardwareAbstractLayer),该抽象层总共6个独立的应用程序接口API函数,负责完成下述功能集合:(a)从存储介质读取数据的函数:charGetUserBlock(chariDevice,longdwAddress,char*pBuffer,shortiSize)参数定义以及说明:1)chariDevice:存储介质的设备编号,范围0X00-0XFF,默认数值=0X002)longdwAddress:读取存储介质的32-bits字节地址3)char*pBuffer:从存储介质读取数据的存放内存指针4)shortiSize:一次性读取的数据大小,最大64K字节返回值:0X00=操作失败,0X01=操作成功(b)向存储介质写入数据的函数:charSetUserBlock(chariDevice,longdwAddress,char*pBuffer,shortiSize)参数定义以及说明:1)chariDevice:存储介质的设备编号,范围0X00-0XFF,默认数值=0X002)longdwAddress:写入存储介质的32-bits字节地址3)char*pBuffer:需要被写入到存储介质的数据的存放内存指针4)shortiSize:一次性读取的数据大小,最大64K字节返回值:0X00=操作失败,0X01=操作成功(c)获取存储介质的本文档来自技高网
...

【技术保护点】
1.基于结构化的内存数据块和双存储区域之间的映射技术,其特征是(1)将配置参数的所有成员变量保存在一个地址连续的结构化内存数据块中;(2)在存储介质上建立两个不重叠的独立存储区域,并和结构化的内存数据块之间建立双向的映射关系;(3)每一个存储区域都有包含CRC字段的控制头部用于校验存储区域的数据正确性;(4)应用程序在初始化的时候,依据一定的规则一次性从两个存储区域中先后加载数据至内存数据块中;(5)应用程序在初始化之后,由一个独立的线程负责将这个数据块的内容分别写入到存储介质上两个不重叠的存储区域中去。/n

【技术特征摘要】
1.基于结构化的内存数据块和双存储区域之间的映射技术,其特征是(1)将配置参数的所有成员变量保存在一个地址连续的结构化内存数据块中;(2)在存储介质上建立两个不重叠的独立存储区域,并和结构化的内存数据块之间建立双向的映射关系;(3)每一个存储区域都有包含CRC字段的控制头部用于校验存储区域的数据正确性;(4)应用程序在初始化的时候,依据一定的规则一次性从两个存储区域中先后加载数据至内存数据块中;(5)应用程序在初始化之后,由一个独立的线程负责将这个数据块的内容分别写入到存储介质上两个不重叠的存储区域中去。


2.通过6个独立的函数接口实现一个存储介质抽象层,提供对于E2PROM,Flash和FRAM等存储介质的兼容性,其特征是(1)一个读取函数;(2)一个写入函数;(3)一个查询存储器工作状态的函数;(4)一个读取页面FIFO大小的函数;(5)一个读取扇区大小的函数;(6)一个扇区擦除的函数。


3.根据权利要求1所述的配置参数实时读写技术,其特征是(1)应用程序仅仅访问内存数据块中的成员变量,不直接访问存储介质;(2)应用程序初始化的过程中只有数据加载的操作,没有写入存储器的操作;(3)应用程序在初始化之后只有写入存储器的操作,没有数据加载的操作。


4.根据权利要求1所述的多线程安全技术,其特征是每个存储器读操作和写操作之前都需要查询存储器的状态,只有在存储器总线不忙碌的状态的时候才可以执行读操作或者写操作,否则需要等待。


5.根据权利要求1所述的重复写入过滤机制,其特征是向结构化的内存数据块写入成员变量之前需要检查数据是否有改变,如果没有改变则放弃写入请求,如果有改变则更新成员变量的数值,并提交写入请求。


6.根据权利要求1所述的数据正确性校验机制,其特征是...

【专利技术属性】
技术研发人员:丁元国麻忠芹
申请(专利权)人:微网智控北京科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1