一种在norflash中配置参数的方法

文档序号:6848920阅读:475来源:国知局
专利名称:一种在nor flash中配置参数的方法
技术领域
本发明涉及嵌入式系统中对存储设备flash存储空间划分与利用。
背景技术
NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。NOR的特点是芯片内执行,这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。NOR FLASH的传输效率很高,在1~4MB的小容量时具有很高的成本效益,因此在嵌入式系统得到广泛的应用。
NOR Flash芯片中划分为多个block(擦除块单元),常见的block大小为64KB,128KB。系统对flash的操作在底层主要有读、写、擦除等。其中擦除是以block为单位进行的,即擦除操作至少需要擦除一个bock的区域。
在嵌入式系统设备中,flash存储空间通常划分为多个区域如boot区、参数区、内核区、文件系统区,如图1所示。参数区要占用一个或者多个block区(flash最小擦除单元)。如果参数不多,在大擦除块而且没有参数区的flash中,单独分配一个block存储参数往往造成对flash存储空间的浪费,在低成本设备中,flash芯片的价格就显得很突出。例如,某个终端设备的硬件总设备为100元,而2M的flash与4M的flash价格就相差10元左右。同时,如果某些参数改变,系统就要擦除整个参数区所在的block,经常擦除,可能会在断电的时候出现致命错误。
如果在一个系统中,flash的某个block中除了分配的存储程序之外,还有较大的剩余空间,则可以利用这些空间用来存储一些不经常改变的参数。如果该block的程序不能被擦除,则又面临这这些参数需要修改的难题。

发明内容
本发明要解决的技术问题是,针对现有技术中存在的问题,提出一种在NORFLASH中配置参数的方法,充分利用存储程序的block剩余的空间,可以对参数进行更新。
本发明的技术方案为1.1将NOR FLASH中存储有程序并且有剩余空间的擦除块单元(block)区域划分为若干个存储单元,每个存储单元作为一个参数的存储空间,记录每个单元的起始与结束地址;1.2根据每个参数长度与可以修改的次数,确定该参数的存储空间1.3将需要存储的参数存储到上述存储单元中;1.4需要修改某个参数时,找到该参数的存储单元,将修改的参数值紧接着存储在当前值的后面;1.5调用某个参数时,从该参数存储空间的结束地址反向查找不为空的区域,第一个不为空的区域存储的值就是当前最新的参数值。
在上述方案中,当某个参数的存储空间被占满时,系统程序将该擦除块单元的内容拷贝到存储器(RAM)中,然后将原有的程序代码及其每个参数的最新值重新写到该擦除块单元中。
本发明能够有效的节省flash存储空间,特别是在按照传统分区方法时,程序大小刚超过flash所有存储空间的情况下,该方法的效果更是突出。对于某些不经常被修改的参数,采用该方法,可以减少因为其他参数经常被修改而参数block被擦除导致的参数丢失风险。


图1是嵌入式系统中flash分区示意图;图2是应用本发明的方法配置参数和调用参数的流程图;图3是boot区存储参数示意图;图4是MAC地址设置示意图。
具体实施例方式图2是应用本发明的方法配置参数和调用参数的流程图。
先配置参数。将NOR FLASH中存储有程序并且有剩余空间的擦除块单元(block)区域划分为若干个存储单元,每个存储单元作为一个参数的存储空间,记录每个单元的起始与结束地址;再根据每个参数长度与可以修改的次数,确定该参数的存储空间;然后将需要存储的参数存储到上述存储单元中,即写入FLASH中。
需要修改某个参数时,找到当前参数位置,即该参数的存储单元,将修改的参数值紧接着存储在当前值的后面。可以多次修改。当某个参数的存储空间被占满时,系统程序将该擦除块单元的内容拷贝到RAM中,然后将原有的程序代码及其每个参数的最新值重新写到该擦除块单元中,重新开始配置参数。
需要调用某个参数时,查找当前参数位置,从该参数存储空间的结束地址反向查找不为空的区域,第一个不为空的区域存储的值就是当前最新的参数值,查找到后可以调用。
实例一当flash的block比较大时,boot程序往往不能占满一个block区。将参数存储在boot程序所在的block中。如图3所示。由于boot区的程序不能被破坏,所以修改该区的参数不能进行擦除操作。在boot程序尾部,给每个参数分配一定字节数的区域作为该参数的存储空间,每个参数的首地址是固定的,并且已知的。程序修改某个参数的值时,将新设置的值存放在该参数上次设置的值后面。“参数i_n”表示参数i第n次设置的值,n增大表示程序对参数进行修改。当程序调用某个参数时,首先根据该参数的首地址确定该参数的存储位置,然后从该参数存储空间的尾部反向查找最新的参数值,即查找不为空区域,然后取该参数长度区域内的值即为该参数的最新值。数修改次数等记录可以定位当前需要调用参数的物理地址。
实例二MAC地址是一个常见的重要参数,而且该参数被修改的可能性比较小,采用该方法存储MAC地址很有优势。存储空间分配如图4所示。
flash的block大小为128KB,某部分程序占用64KB,那么参数可以占用剩下的64KB空间。分配给MAC地址参数存储空间为0x10000至0x10078,这样,可以存储20个MAC地址值,即该参数最多可以修改19次。初始MAC地址参数MAC_0存放在0x10000开始的6个Byte中,第一次修改MAC_1紧接MAC_0存放,再次修改依此类推。当系统调用该MAC地址参数时,程序从MAC地址参数的存储空间尾部0x10078开始,以6个Byte为单位反向查找为不为空的字节。第一个不为空的单位存储空间的值即为最新的参数值。读取该值,供程序使用。
权利要求
1.一种在NOR FLASH中配置参数的方法,包括1.1将NOR FLASH中存储有程序并且有剩余空间的擦除块单元区域划分为若干个存储单元,每个存储单元作为一个参数的存储空间,记录每个单元的起始与结束地址;1.2根据每个参数长度与可以修改的次数,确定该参数的存储空间;1.3将需要存储的参数存储到上述存储单元中;1.4需要修改某个参数时,找到该参数的存储单元,将修改的参数值紧接着存储在当前值的后面;1.5调用某个参数时,从该参数存储空间的结束地址反向查找不为空的区域,第一个不为空的区域存储的值就是当前最新的参数值。
2.权利要求1所述的在NOR FLASH中配置参数的方法,其特征在于,当某个参数的存储空间被占满时,系统程序将该擦除块单元的内容拷贝到存储器中,然后将原有的程序代码及其每个参数的最新值重新写到该擦除块单元中。
全文摘要
一种在NOR FLASH中配置参数的方法,将NORFLASH中存储有程序并且有剩余空间的擦除块单元区域划分为若干个存储单元,每个存储单元存储一个参数,记录该单元的起始与结束地址;根据每个参数长度与可以修改的次数,确定该参数的存储空间;将需要存储的参数存储到上述存储单元中;需要修改某个参数时,找到该参数的存储单元,将修改的参数值紧接着存储在当前值的后面;调用某个参数时,从该参数存储空间的结束地址反向查找到的第一个不为空的区域存储的值就是当前最新的参数值。本发明能够有效的节省flash存储空间,对于不经常被修改的参数,可以减少丢失风险。
文档编号H01L21/8247GK1913040SQ20051003663
公开日2007年2月14日 申请日期2005年8月12日 优先权日2005年8月12日
发明者阳彦字, 唐建国, 王民, 宋明 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1