专利名称:数字电视设备及spi存储器的存储方法
技术领域:
本发明涉及一种存储方法,尤其是涉及一种SPI FLASH的数据存储操作方法,以及使用该存储方法的数字电视设备。
背景技术:
随着数字技术,网络技术不断发展和普及,消费类电子也同步加快向数字化和智能化,网络化方向迈进。电视终端的技术也在不断的更新和换代,原来的模拟电视也将逐渐的退出历史的舞台,取而代之的是数字电视、智能电视会不断涌现出人们的视野。在之前模拟电视中,一般采用8位单片机作为电视的主控制芯片。因为操作比较简单,功能相对较少,故程序代码数据和需要处理存储数据比较少。基于此,我们数据一般会采用串行外围接口(Serial Peripheral Interface , SPI) FLASH和电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory ,EEPROM)混合存储的方式。程序代码存储在比较小的SPI FLASH中,而我们经常要处理的数据(比如,频道信息, 音量,图像的亮度,对比度等参数)都存储到EEPROM中。然而,现在电视趋向数字和网络化,功能越来越多,系统复杂度越来越高,需要多任务处理,处理的数据量越来越多,原来的8位单片机已经无法满足开发平台的要求。随之而来,主控制芯片大多采用32位操作系统进行处理,这就造成了程序代码空间迅速加大, 而且需要存储的数据量也急剧膨胀。之前SPI FLASH和EEPROM存储方式已经不能满足要求,因为需要储存的数据单靠EEPROM已经无法实现。考虑到大容量的EEPROM成本比较高, 行业内越来越倾向用SPI FLASH存储的方法,把EEPROM中的数据转存到SPI FLASH中。SPI FLASH是可在线擦写的存储器,但每次擦除操作的单位为一个扇区,擦写次数为20万次,掉电不易失,数据保存可靠时间长。相比EEPROM来说,SPI FLASH的寿命比较短,而且不像EEPROM能够单字节的进行擦写,SPI FLASH的擦除方式必须是扇区为单位。也就是如果我们要改变FLASH中的某一字节的数据,就得先把整个扇区里面的数据全部读出来,更改某一字节的数据,然后要擦除整个扇区,最好把更改完的数据一次全部写入扇区。 对于我们电视里面经常要改动的数据比如音量数据,这样的读写方式会使本来使用寿命不长的SPI FLASH使用的时间更短。
发明内容
本发明提出一种SPI FLASH的数据存储操作方法,以解决目前SPI FLASH每次更新数据时需要擦除一个扇区导致使用寿命短的技术问题。本发明采用如下技术方案实现设置SPI存储器中的一个或连续的至少两个扇区用于存储需要频繁更新的数据块,并将所述扇区划分为M+1个存储容量大小相等,且存储容量大于或等于所述数据块的存储容量的页面,该M+1个页面按序编号为第0页面、第1页面、…、第M页面,其中,数据块存储在第N页面,而用于记录存储数据块的页面编号的索引号存储在第0页面,0<N彡M,且N为整数;
3当检测到所述数据块中的数据发生改动时,判断N+1是否大于M,若是,将所述索引号清零,擦除所述扇区,并将改动后的所述数据块写入所述扇区的第1页面,并更新索引号为 1,否则,将改动后的所述数据块写入至第N+1页面,将第0页面的索引号更新为N+1。其中,当SPI存储器上电时,检测SPI存储器中用于表示存放数据块的标志位是否被置位;若否,则初始化SPI存储器,将所述数据块的初始数据从与SPI存储器搭配使用的内存中写入至所述扇区的第1页面;否则,依据所述索引号寻址从所述扇区将所述数据块读至所述内存。其中,当所述数据块中的数据发生改动时,将改动后的数据块在内存中进行更新。其中,当改动后的数据块在内存中更新后,从内存中读取改动后的所述数据块,并写入至所述扇区。其中,所述数据块的存储地址是通过二进制读写文件工具判断代码空间的容量后进行确认的。相应的,本发明公开一种使用了所述SPI存储器的存储方法的电视设备。与现有技术相比,本发明具有如下有益效果
本发明将SPI FLASH中用于存储需要频繁更新的数据块的一个或连续的多个扇区划分为多个大小一致页面,其中,每个页面的存储空间大于或等于所述需要频繁更新的数据块的存储容量;当所述需要频繁更新的数据块的数据发生变化时,将更新后的数据块写入至下一个页面的存储空间,从而避免了每更新一次数据块就需要擦除整个扇区的擦写操作,而是等到写满所有页面之后才擦除一次扇区。因此,通过以上过程就把用户更改的数据快捷的写入到SPI FLASH中去,不会频繁的去擦写SPI FLASH,从而延长了 SPI FLASH的使用寿命。
图1是本发明提出的SPI FLASH存储结构示意图; 图2是本发明提出的SPI FLASH的分页存储结构示意图; 图3是本发明的实现流程示意图。
具体实施例方式本发明提出一种SPI存储器(即SPI FLASH)存储方法,解决需要频繁更新的数据在SPI FLASH中存储方式以延长SPI FLASH的使用寿命。为实现本发明的目的,将SPI FLASH作如下设置
预先对存储在SPI FLASH的数据进行分类,将程序代码数据存储在SPI FLASH中开始的若干个扇区,而将数据块存储在SPI FLASH末尾的一个或连续的若干个扇区。如图1所示的SPI FLASH数据存储的架构。程序代码数据存放在SPI FLASH第 0-59个扇区(代码空间的容量大小决定了数据块存储的起始地址,即起始于FLASH的哪一个扇区,代码空间的容量大小是可以通过各种二进制读写文件工具来确认的);需要更新的数据块存放在SPI FLASH的倒数4个扇区中。比如将SPI FLASH使用在数字电视设备之中,将反映图像和音频参数设置的最需要频繁更新的数据块存放在第60—61这两个扇区中,较少更新的数据块(比如,电视频道信息等数据)存放在第62—63这两个扇区内。
另外,在扇区中划分页面的大小,根据频繁更新的数据块的大小,将用于存储频繁更新的数据块的扇区划分成若干个大小相等的页面。如图2所示,假设频繁更新的数据块的大小为2KB,则将图2所示的第60 — 61这两个扇区的U8KB划分为64个2KB的页面。为了不引起歧义,以下描述所提到的数据,是指需要频繁更新的数据块中的数据; 并且,以下描述所提到的扇区,是指用于存储需要频繁更新的数据块的扇区,例如,图1所示的第60—61扇区;将扇区分成M+1个大小相等的页面,且每个页面的存储空间大小大于或等于数据块的存储大小;将M+1个页面依次编号为第0页面、第1页面、…、第M页面,其中,第0页面用于存储索引号。如图3所示,本发明提出的SPI FLASH的存储方法包括如下实现方法
步骤Sll 上电时,首先检测SPI FLASH中用于表示存放数据块的标志位是否被置位, 其作用是用来判断SPI FLASH的扇区中的数据是否为空。若标志位没有被置位,则转入步骤S13,若是,则转入步骤S12。比如,数字电视设备启动时,电视主控芯片运行程序做一些必要的初始化动作, 接着检测SPI FLASH中用于表示存放数据块的标志位,如果标志位没有被置位,说明SPI FLASH中没有写入数据,则转入步骤S13,否则转入步骤S12。步骤S12 读出SPI FLASH中的各种数据加载至内存。先从第0页面读取索引号,假设索引号为Ν(0<Ν<Μ,且N为整数),根据索引号寻址(页面的起始地址=当前扇区的起始地址+索引号*页面大小),从第N页面读出数据块并加载到内存的指定地址段。步骤S13 初始化SPI FLASH,将各种数据对应的初始数据一次写入SPI FLASH,同时置位标志位。步骤S14 实时检测内存中数据是否有改动,若是,则转入步骤S15。当上电后,把SPI FLASH加载到内存的数据的总和会保存到内存中的一个地址段中,数字电视设备会实时比较所述地址段中的数据是否变化。比如用户调节电视音量时就会修改电视音量的数据,数字电视设备就会实时检测出数据的变化,就会置位标志位。步骤S15 将变化的数据在内存中更新。步骤S16 判断存储数据块的当前页面的索引号加1的指向是否超出了扇区中最后一页,即判断N+1是否大于M,若否,转入步骤S17,否则转入步骤S18。步骤S17 更新SPI FLASH页面的数据,即从内存中把更新的数据块保存到当前页面索引号指向的下一页面(即第N+1页面)的存储空间中,并及时更新索引号,将第0页面存储的索引号更新为N+1。步骤S18 把第0页面存储的索引号清零,擦除扇区,并从内存中把更新的数据块写入扇区的第1页面的存储空间,并更新索引号(即此时第0页面保存的索引号为1)。综上,本发明将SPI FLASH中用于存储需要频繁更新的数据块的至少一个扇区划分为至少两个大小一致的页面,其中,每个页面的存储空间大于或等于所述需要频繁更新的数据块的存储容量;当所述需要频繁更新的数据块的数据发生变化时,将更新后的数据块写入至下一个页面的存储空间,从而避免了每更新一次数据块就需要擦除整个扇区的擦写操作,而是等到写满所有页面之后才擦除一次扇区。因此,通过以上过程就把用户更改的数据快捷的写入到SPI FLASH中去,不会频繁的去擦写SPI FLASH,从而延长了 SPI FLASH的使用寿命。 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种SPI存储器的存储方法,其特征在于,包括步骤设置SPI存储器中的一个或连续的至少两个扇区用于存储需要频繁更新的数据块,并将所述扇区划分为M+1个存储容量大小相等,且存储容量大于或等于所述数据块的存储容量的页面,该M+1个页面按序编号为第0页面、第1页面、…、第M页面,其中,数据块存储在第N页面,而用于记录存储数据块的页面编号的索引号存储在第0页面,0<N < M,且N为整数;当检测到所述数据块中的数据发生改动时,判断N+1是否大于M,若是,将所述索引号清零,擦除所述扇区,并将改动后的所述数据块写入所述扇区的第1页面,并更新索引号为 1,否则,将改动后的所述数据块写入至第N+1页面,将第0页面的索引号更新为N+1。
2.根据权利要求1所述SPI存储器的存储方法,其特征在于,当SPI存储器上电时,检测SPI存储器中用于表示存放数据块的标志位是否被置位;若否,则初始化SPI存储器,将所述数据块的初始数据从与SPI存储器搭配使用的内存中写入至所述扇区的第1页面;否则,依据所述索引号寻址从所述扇区将所述数据块读至所述内存。
3.根据权利要求1或2所述SPI存储器的存储方法,其特征在于,当所述数据块中的数据发生改动时,将改动后的数据块在内存中进行更新。
4.根据权利要求3所述SPI存储器的存储方法,其特征在于,当改动后的数据块在内存中更新后,从内存中读取改动后的所述数据块,并写入至所述扇区。
5.根据权利要求1所述SPI存储器的存储方法,其特征在于,所述数据块的存储地址是通过二进制读写文件工具判断代码空间的容量后进行确认的。
6.一种数字电视设备,其特征在于,使用了上述根据权利要求1-5任何一项所述SPI存储器的存储方法。
全文摘要
本发明公开一种数字电视设备及SPI存储器的存储方法。其中,所述存储方法包括将所述扇区划分为M+1个存储容量大小相等且大于或等于所述数据块的存储容量的页面,数据块存储在第N页面,而用于记录存储数据块的页面编号的索引号存储在第0页面;当检测到所述数据块中的数据发生改动时,判断N+1是否大于M,若是,将所述索引号清零,擦除所述扇区,并将改动后的所述数据块写入所述扇区的第1页面,并更新索引号为1,否则,将改动后的所述数据块写入至第N+1页面,将第0页面的索引号更新为N+1。本发明不会频繁的去擦写SPI存储器,从而延长了SPI存储器的使用寿命。
文档编号G06F12/06GK102279806SQ20111012893
公开日2011年12月14日 申请日期2011年5月18日 优先权日2011年5月18日
发明者吴志新, 马万乐 申请人:深圳创维-Rgb电子有限公司