发明名称 |
嵌入式系统FLASH参数存取方法 |
摘要 |
本发明提出了嵌入式系统FLASH参数存取方法,所述方法定义了FLASH参数的存储格式,提供了驱动程序初始化方法,以及驱动程序四个功能接口:读取指定关键字参数接口、读取全部参数接口、修改参数接口和保存参数接口。本发明方法针对FLASH芯片的数据存储的特点进行优化和设计,应用程序通过驱动程序可以实现对FLASH参数的高性能、高可靠性的存取操作,解决嵌入式系统软件的应用程序在参数存取的实际问题,大幅提升应用程序参数存取的性能和可靠性。 |
申请公布号 |
CN103336749A |
申请公布日期 |
2013.10.02 |
申请号 |
CN201310216884.X |
申请日期 |
2013.05.31 |
申请人 |
南京熊猫电子股份有限公司;南京熊猫通信科技有限公司 |
发明人 |
彭涛;王勇;赵安;赵丽萍 |
分类号 |
G06F13/16(2006.01)I |
主分类号 |
G06F13/16(2006.01)I |
代理机构 |
南京经纬专利商标代理有限公司 32200 |
代理人 |
朱小兵 |
主权项 |
嵌入式系统FLASH参数存取方法,其特征在于,所述方法包括FLASH参数的存储格式定义、驱动程序初始化和驱动程序功能接口;具体过程如下:A, 参数的存储格式定义:驱动程序使用FLASH芯片的两个扇区,每个扇区逻辑上划分为数据区和校验区两部分;数据区用于保存参数关键字及对应参数值,校验区用于保存数据区的校验值;B,驱动程序初始化流程;具体步骤如下:步骤B‑1,读取FLASH芯片中保存参数扇区的内容;步骤B‑2,计算数据区上有效内容的CRC32值和校验区最后CRC32值做比较,如果相同则认为参数存储正确,然后逐一从读取的内容中解析参数,并将参数的关键字计算散列值后,跳转到散列表的指定位置,再查找参数关键字,如果该参数关键字在散列表中已有,则用新的参数值替换散列表中原参数值;如果没有该参数关键字则添加该参数值;C,驱动程序功能接口:其提供四个接口给用户程序,分别为读取指定关键字参数接口、读取全部参数接口、修改参数接口和保存参数接口; C1,读取指定关键字参数接口,其步骤如下: C1‑1,应用程序通过接口传入关键字, C1‑2,计算关键字的散列值, C1‑3,跳转到在初始化生成的散列表对应位置,查找参数值, C1‑4,返回参数值结果给应用程序;C2,读取全部参数接口,其步骤如下:C2‑1,驱动程序遍历散列表,C2‑2,将散列表中全部参数值指针加入到一个数组中去,C2‑3,对C2‑2中的数组进行排序,C2‑3,排序结束后,将数组指向的参数逐一拷贝并返回给用户程序; C3,修改参数接口,其步骤如下: C3‑1,应用程序传入参数关键字及其参数值, C3‑2,驱动程序计算参数关键字散列值, C3‑3,根据C3‑2获得的参数关键字散列值,查找散列表,如果散列表中有该散列值表项,则用该参数关键字对应的参数值替换原有参数值;否则,如果散列表中没有该散列值表项,则增加新的参数值; C3‑4,修改或添加结束后,对刚修改或添加的参数值标记为已修改,该标记由保存参数接口使用; C4,保存参数接口,其具体步骤如下: C4‑1,驱动程序先将被标记为已修改的参数值从散列表中遍历出来; C4‑2,判断数据区的剩余空间是否足够保存这些被标记的参数值,如果足够,使用数据区修改前的CRC32值和当前即将修改的参数计算一个新的CRC32值,在剩余的数据区空间写入修改的参数值,在剩余的校验区空间写入新的CRC32值;如果空间不够,则使用全部获取参数接口获取全部参数,此时计算全部参数值占用空间是否大于数据区空间的大小,如果大于,返回错误,否则擦除全部扇区,重新写入参数值和CRC32值;重新写入成功后,驱动程序将所有被标记已修改的参数重新标记为未修改。 |
地址 |
210002 江苏省南京市玄武区中山东路301号 |