基于MTD分区的软件升级方法和装置制造方法及图纸

技术编号:8366716 阅读:196 留言:0更新日期:2013-02-28 05:01
本发明专利技术公开了一种基于MTD分区的软件升级方法和装置。所述方法包括下述步骤:将预升级MTD分区描述信息和升级数据添加到软件升级文件中;升级过程中读取软件升级文件,解析出预升级MTD分区描述信息和升级数据;根据原MTD分区描述信息和预升级MTD分区描述信息中的MTD分区对应关系将预升级MTD分区描述信息和升级数据依次写入至相应存储位置;启动系统uboot,读取存储在存储器中的预升级MTD分区描述信息,组装MTD分区描述信息写入参数,并写入到系统内核中。应用本发明专利技术的方法能够在升级过程中对MTD分区描述信息进行升级,提高了存储器MTD分区的可调性和使用灵活性。

【技术实现步骤摘要】

本专利技术涉及软件升级技术,具体地说,是涉及一种基于MTD分区的软件升级方法和装置
技术介绍
MTD (memory technology device内存技术设备)是用于访问存储器设备(如Rom)的Linux系统的子系统,Iinux系统中必须通过MTD来读写ROM等存储器。在基于Iinux系统的机顶盒等产品中,作为存储器的flash (最常见的ROM)都被分成若干个MTD分区,每个分区占用一部分flash空间,用来存放独立的程序,完成特定功能。flash的具体分区情况,包括各分区的分区号、分区起始地址、分区大小等通过MTD分区描述信息来描述。由系统物理特性所决定,在Iinux系统下,只能通过MTD操作读写数据,而不能直接访问flash。以机顶盒产品为例,目前,基于Iinux系统的机顶盒,其升级过程通常无法完成MTD分区描述信息的升级,原因在于 一方面,MTD分区数据是在启动时由uboot通过特定参数写入到内核中的,在整个程序运行期间,MTD分区不能调整。如果要更改特定参数,必须要更改该参数所在的一个存储分区,而由于现有技术中该分区都是没有备份的,对其升级将会存在风险,如果升级失败会导致整个系统无法启动。另一方面,Iinux系统下进行的数据升级更新都是基于MTD分区的,且只能通过MTD进行读写,其擦除分区和写入数据都必须在指定分区内操作。如果要进行数据升级的某个MTD分区和原有MTD分区不一致,单独使用基于MTD的指令不能完成软件升级需求。由于无法对MTD分区描述信息进行升级,因而不能对flash的MTD分区进行调整,致使存储器分区灵活性较差,升级实用性不强,不利于产品的灵活升级和产品周期维护成本的降低。
技术实现思路
本专利技术针对现有技术中MTD分区描述信息不能升级而存在的上述缺点提供了一种基于MTD分区的软件升级方法和装置,应用该方法能够在升级过程中对MTD分区描述信息进行升级,从而提高了存储器MTD分区的可调性和使用灵活性。为实现上述专利技术目的,本专利技术提供的升级方法采用下述技术方案予以实现一种基于MTD分区的软件升级方法,在基于MTD分区的存储器中预先设置至少两个分区,分别存储相同内容的、升级之前的原MTD分区描述信息,所述升级方法包括下述步骤al、将预升级MTD分区描述信息和升级后的每个MTD分区中的升级数据添加到软件升级文件中,预升级MTD分区描述信息对应的升级后的MTD分区中包括有至少两个用来存储预升级MTD分区描述信息的MTD分区; a2、升级过程中读取软件升级文件,解析出预升级MTD分区描述信息和升级数据;a3、读取存储器的原MTD分区描述信息,根据原MTD分区描述信息和预升级MTD分区描述信息中的MTD分区对应关系将预升级MTD分区描述信息和升级数据依次写入至相应存储位置; a4、启动系统的uboot,读取存储在存储器中的预升级MTD分区描述信息,组装MTD分区描述信息写入参数,并将该参数写入到系统内核中。如上所述的方法,所述原MTD分区描述信息优选以XML文件形式存储在存储器中,所述预升级分区描述信息优选以XML文件形式添加到软件升级文件中。如上所述的方法,为减少对存储器存储区域的占用,在基于MTD分区的存储器中预先设置有两个存储所述原MTD分区描述信息的分区;所述预升级分区描述信息对应的升级后的MTD分区中包括有两个用来存储预升级MTD分区描述信息的MTD分区。如上所述的方法,为简化数据写入过程、提高升级速度,所述步骤a3具体包括下 述子步骤 a31、将预升级MTD分区描述信息和升级数据分别分割成若干个指定大小的子块;a32、根据预升级MTD分区描述信息中的MTD分区起始地址和当前要写入的子块在其所属预升级MTD分区描述信息或升级数据的所有子块中的位置计算子块的起始地址; a33、读取所述原MTD分区描述信息,根据该原MTD分区描述信息和子块的起始地址获取该子块所对应的原MTD分区的起始地址和偏移地址; a34、根据原MTD分区的起始地址和偏移地址擦除与子块大小相等的存储区域; a35、将子块的数据写入到擦除后的存储区域中。如上所述的方法,所述子块的大小优选与所述基于MTD分区的存储器的一个擦除操作单元的大小相等。如上所述的方法,为简化数据结构,便于数据的传输和正确解析,所述软件升级文件包括有依次存储的预升级MTD分区描述信息校验字段、预升级MTD分区描述信息长度字段、预升级MTD分区描述信息、升级后的每个MTD分区中的升级数据校验字段、升级数据的长度字段及升级数据。优选的,所述预升级MTD分区描述信息校验字段和所述升级数据校验字段均为CRC校验字段。为实现前述专利技术目的,本专利技术提供的升级装置采用下述技术方案来实现 一种基于MTD分区的软件升级装置,该装置包括 原MTD分区描述信息存储单元,用来存储原MTD分区描述信息; 至少一个原MTD分区描述信息备份存储单元,作为备份存储单元,存储与原MTD分区描述信息存储单元相同内容的原MTD分区描述信息; 软件升级文件接收和存储单元,用来接收外部传输的软件升级文件并存储; 预升级MTD分区描述信息解析单元,与软件升级文件接收和存储单元相连接,用来从软件升级文件中解析出预升级MTD分区描述信息; 升级数据解析单元,与软件升级文件接收和存储单元相连接,用来从软件升级文件中解析出升级后的每个MTD分区中的升级数据; 数据写入单元,与预升级MTD分区描述信息解析单元、升级数据解析单元及原MTD分区描述信息存储单元和原MTD分区描述信息备份存储单元相连接,用来根据原MTD分区描述信息和预升级MTD分区描述信息中的MTD分区对应关系将预升级MTD分区描述信息和升级数据依次写入至相应存储位置; uboot处理单元,用来执行uboot有关工作,并将相关写入参数写入到系统内核中;写入参数组装单元,与预升级MTD分区描述信息解析单元和uboot处理单元相连接,用来组装MTD分区描述信息写入参数,并将该参数传输至uboot处理单元。如上所述的装置,所述原MTD分区描述信息存储单元及所述原MTD分区描述信息备份存储单元中优选以XML文件形式存储MTD分区描述信息;所述预升级MTD分区描述信息优选以XML文件形式存储在所述软件升级文件中。如上所述的装置,为简化升级数据写入过程、提高升级速度,所述数据写入单元包括下述子单元 子块分割子单元,用来将预升级MTD分区描述信息和升级数据分别分割成若干个指定大小的子块; 子块起始地址确定子单元,与所述预升级MTD分区描述信息解析单元和子块分割子单元相连接,用来根据预升级MTD分区描述信息中的MTD分区起始地址和当前要写入的子块在其所属预升级MTD分区描述信息或升级数据的所有子块中的位置计算子块的起始地址;子块映射地址确定子单元,与子块起始地址确定子单元和所述原MTD分区描述信息存储单元及原MTD分区描述信息备份存储单元相连接,根据原MTD分区描述信息和子块的起始地址获取该子块所对应的原MTD分区的起始地址和偏移地址,作为子块的映射地址;数据擦除子单元,与子块映射地址确定子单元相连接,用来根据原MTD分区的起始地址和偏移地址擦除与子块大小相等的存储区域中的数据; 子块数据写入子单元,与本文档来自技高网
...

【技术保护点】
一种基于MTD分区的软件升级方法,其特征在于,在基于MTD分区的存储器中预先设置至少两个分区,分别存储相同内容的、升级之前的原MTD分区描述信息,所述升级方法包括下述步骤:a1、将预升级MTD分区描述信息和升级后的每个MTD分区中的升级数据添加到软件升级文件中,预升级MTD分区描述信息对应的升级后的MTD分区中包括有至少两个用来存储预升级MTD分区描述信息的MTD分区;a2、升级过程中读取软件升级文件,解析出预升级MTD分区描述信息和升级数据;a3、读取存储器的原MTD分区描述信息,根据原MTD分区描述信息和预升级MTD分区描述信息中的MTD分区对应关系将预升级MTD分区描述信息和升级数据依次写入至相应存储位置;a4、启动系统的uboot,读取存储在存储器中的预升级MTD分区描述信息,组装MTD分区描述信息写入参数,并将该参数写入到系统内核中。

【技术特征摘要】

【专利技术属性】
技术研发人员:李铁柱
申请(专利权)人:青岛海信宽带多媒体技术有限公司
类型:发明
国别省市:

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

1