CN107783724A - 一种全镜像文件的生成方法及装置 - Google Patents

一种全镜像文件的生成方法及装置 Download PDF

Info

Publication number
CN107783724A
CN107783724A CN201610777619.2A CN201610777619A CN107783724A CN 107783724 A CN107783724 A CN 107783724A CN 201610777619 A CN201610777619 A CN 201610777619A CN 107783724 A CN107783724 A CN 107783724A
Authority
CN
China
Prior art keywords
subregion
image file
class
data
emmc
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
CN201610777619.2A
Other languages
English (en)
Inventor
冯立彬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sanechips Technology Co Ltd
Shenzhen ZTE Microelectronics Technology Co Ltd
Original Assignee
Shenzhen ZTE Microelectronics Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen ZTE Microelectronics Technology Co Ltd filed Critical Shenzhen ZTE Microelectronics Technology Co Ltd
Priority to CN201610777619.2A priority Critical patent/CN107783724A/zh
Priority to PCT/CN2017/094282 priority patent/WO2018040802A1/zh
Publication of CN107783724A publication Critical patent/CN107783724A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种全镜像文件的生成方法,包括:按照指定的分区格式对嵌入式多媒体卡进行分区,得到至少一个分区;提取所述至少一个分区中的每一个第一类分区所包含的所有数据,并根据所述所有数据生成对应所述第一类分区的镜像文件;提取所述至少一个分区中的每一个第二类分区所包含的有效数据,并根据所述有效数据生成对应所述第二类分区的镜像文件;将所述第一类分区的镜像文件和所述第二类分区的镜像文件拼接成全镜像文件。本发明同时还公开了一种全镜像文件的生成装置。

Description

一种全镜像文件的生成方法及装置
技术领域
本发明涉及镜像制作、烧写和升级技术,尤其涉及一种全镜像文件的生成方法及装置。
背景技术
集成电路行业的快速发展,使得各式各样的电子产品相继出现,而大部分电子产品都采用以片上系统(System on Chip,SOC)作为处理器、并以NOR FLASH、NAND FLASH或嵌入式多媒体卡(Embeded Multi Media Card,EMMC)等非易失性存储器作为存储介质。
从软件开发角度来看,电子产品的软件开发大都包含有以下几个部分:内核启动的引导程序(uboot)、内核(kernel)、根文件系统(rootfs)、安全模式(recovery)和应用程序(app)等。上述几个部分,通常以二进制形式保存在非易失性存储器里。此外,可对非易失性存储器进行分区,例如将非易失性存储器划分为uboot分区、kernel分区、rootfs分区、recovery分区和app分区等,而每个分区存储相应分区的镜像。然而,从产品生产、开发以及维护的角度来看,需要一个包含有上述uboot镜像、kernel镜像、rootfs镜像、recovery镜像和app镜像等内容和版本号的全镜像文件,以便于使用烧片器对非易失性存储器进行烧写和后续产品的升级处理。
随着半导体工艺的发展,EMMC的容量越来越大,例如常见的EMMC的大小有8Gb、16Gb和32Gb等,然而EMMC中的大部分空间都是给用户预留的,也就是说EMMC中的大部分空间内没有有效数据。传统的全镜像文件的制作方法,是直接把非易失性存储器中各分区的镜像拼接到一块,例如将uboot分区、kernel分区、rootfs分区、recovery分区以及app分区的镜像拼接到一块,以形成一个全镜像文件。但是,根据上述方法生成的全镜像文件的体积很大,在非易失性存储器进行烧写和升级时不仅费时,而且处理效率很低。
发明内容
有鉴于此,本发明实施例提供了一种全镜像文件的生成方法及装置,能够减小全镜像文件的体积,从而加速烧写和升级过程,提高烧写和升级过程的处理效率。
为达到上述目的,本发明的技术方案是这样实现的:
本发明实施例提供了一种全镜像文件的生成方法,所述方法包括:
按照指定的分区格式对嵌入式多媒体卡EMMC进行分区,得到至少一个分区;
提取所述至少一个分区中的每一个第一类分区所包含的所有数据,并根据所述所有数据生成对应所述第一类分区的镜像文件;
提取所述至少一个分区中的每一个第二类分区所包含的有效数据,并根据所述有效数据生成对应所述第二类分区的镜像文件;
将所述第一类分区的镜像文件和所述第二类分区的镜像文件拼接成全镜像文件。
上述方案中,所述按照指定的分区格式对所述EMMC进行分区,得到至少一个分区,包括:
根据设置的分区参数对EMMC进行分区,以将所述EMMC划分为与所述分区参数对应的至少一个分区;所述分区参数包括分区名称、分区数量、分区大小。
上述方案中,所述按照指定的分区格式对所述EMMC进行分区,得到至少一个分区后,所述方法还包括:
根据所述至少一个分区中每一个分区所包含的有效数据的实际大小与分区自身大小的关系,将所述至少一个分区划分为第一类分区和第二类分区。
上述方案中,所述根据所述所有数据生成对应所述第一类分区的镜像文件,包括:将从每一个第一类分区中提取的所有数据压缩后生成对应每一个第一类分区的M个镜像文件,M为大于或等于1的正整数;
所述根据所述有效数据生成对应所述第二类分区的镜像文件,包括:将从每一个第二类分区中提取的有效数据压缩后生成对应每一个第二类分区的N个镜像文件,N为大于或等于1的正整数。
上述方案中,所述将所述第一类分区的镜像文件和所述第二类分区的镜像文件拼接成全镜像文件,包括:
所述生成对应每一个第一类分区的M个镜像文件时,记录所述每一个第一类分区的起始地址位置和结束地址位置;
所述生成对应每一个第二类分区的N个镜像文件时,记录所述每一个第二类分区的起始地址位置和结束地址位置;
按照指定的数据格式,将M个镜像文件根据所述每一个第一类分区的起始地址位置和结束地址位置进行填充,将N个镜像文件根据所述每一个第二类分区的起始地址位置和结束地址位置进行填充,以得到所述全镜像文件。
本发明实施例提供了一种全镜像文件的生成装置,所述装置包括:第一处理单元、第二处理单元、第三处理单元;其中,
所述第一处理单元,用于按照指定的分区格式对EMMC进行分区,得到至少一个分区;
所述第二处理单元,用于提取所述至少一个分区中的每一个第一类分区所包含的所有数据,并根据所述所有数据生成对应所述第一类分区的镜像文件;提取所述至少一个分区中的每一个第二类分区所包含的有效数据,并根据所述有效数据生成对应所述第二类分区的镜像文件;
所述第三处理单元,用于将所述第一类分区的镜像文件和所述第二类分区的镜像文件拼接成全镜像文件。
上述方案中,所述第一处理单元,具体用于:
根据设置的分区参数对EMMC进行分区,以将所述EMMC划分为与所述分区参数对应的至少一个分区;所述分区参数包括分区名称、分区数量、分区大小。
上述方案中,所述第一处理单元,还用于在所述按照指定的分区格式对所述EMMC进行分区,得到至少一个分区后,根据所述至少一个分区中每一个分区所包含的有效数据的实际大小与分区自身大小的关系,将所述至少一个分区划分为第一类分区和第二类分区。
上述方案中,所述第二处理单元根据所述所有数据生成对应所述第一类分区的镜像文件为:将从每一个第一类分区中提取的所有数据压缩后生成对应每一个第一类分区的M个镜像文件,M为大于或等于1的正整数;
所述第二处理单元根据所述有效数据生成对应所述第二类分区的镜像文件为:将从每一个第二类分区中提取的有效数据压缩后生成对应每一个第二类分区的N个镜像文件,N为大于或等于1的正整数。
上述方案中,所述第三处理单元,具体用于:
在所述第二处理单元生成对应每一个第一类分区的M个镜像文件时,记录所述每一个第一类分区的起始地址位置和结束地址位置;
在所述第二处理单元生成对应每一个第二类分区的N个镜像文件时,记录所述每一个第二类分区的起始地址位置和结束地址位置;
按照指定的数据格式,将M个镜像文件根据所述每一个第一类分区的起始地址位置和结束地址位置进行填充,将N个镜像文件根据所述每一个第二类分区的起始地址位置和结束地址位置进行填充,以得到所述全镜像文件。
本发明实施例提供的全镜像文件的生成方法及装置,按照指定的分区格式对EMMC进行分区,得到至少一个分区;提取所述至少一个分区中的每一个第一类分区所包含的所有数据,并根据所述所有数据生成对应所述第一类分区的镜像文件;提取所述至少一个分区中的每一个第二类分区所包含的有效数据,并根据所述有效数据生成对应所述第二类分区的镜像文件;将所述第一类分区的镜像文件和所述第二类分区的镜像文件拼接成全镜像文件。可见,本发明实施例通过提取所述每一个第二类分区所包含的有效数据,并根据所述有效数据生成对应所述第二类分区的镜像文件,减小了所述第二类分区的镜像文件的体积,即减小了全镜像文件的体积,从而可加速烧写和升级过程,提高了烧写和升级过程的处理效率。
附图说明
图1为本发明实施例全镜像文件的生成方法的实现流程示意图;
图2为本发明实施例全镜像文件的生成方法的具体实现流程示意图;
图3为本发明实施例全镜像文件的生成装置的组成结构示意图。
具体实施方式
图1为本发明实施例全镜像文件的生成方法的实现流程示意图,该方法包括:
步骤101:按照指定的分区格式对嵌入式多媒体卡进行分区,得到至少一个分区;
具体地,获取嵌入式多媒体卡后,根据设置的分区参数对EMMC进行分区,以将所述EMMC划分为与所述分区参数对应的至少一个分区;所述分区参数包括分区名称、分区数量、分区大小。
这里,由于EMMC中的地址空间是以块的形式存在的,即EMMC中的地址空间由许多块组成,每个块对应有一个编号;因此,根据设置的分区参数对EMMC进行分区后,所述至少一个分区中每一个分区分别对应有块的起始编号和结束编号,即根据每一个分区所对应的块的起始编号和结束编号,可获取所述每一个分区在EMMC中的地址空间。
进一步地,在步骤101之后,该方法还包括:根据所述至少一个分区中每一个分区所包含的有效数据的实际大小与分区自身大小的关系,将所述至少一个分区划分为第一类分区和第二类分区。
这里,由于所述至少一个分区中每一个分区所包含的有效数据的实际大小与分区自身大小之间存在差距,根据每一个分区所包含的有效数据的实际大小与分区自身大小之间的差距,将所述至少一个分区划分为第一类分区和第二类分区,以在生成镜像文件时对所述第一类分区和第二类分区分别进行不同的处理。
这里,所述第一类分区是指分区所包含的有效数据的实际大小与分区自身大小之间相差较小的分区,比如分区所包含的有效数据的实际大小与分区自身大小之间的差值小于或等于设置的第一阈值的分区;所述第二类分区是指分区所包含的有效数据的实际大小与分区自身大小之间相差较大的分区,比如分区所包含的有效数据的实际大小与分区自身大小之间的差值大于设置的第一阈值的分区。
这里,也可根据所述至少一个分区中每一个分区的自身大小与所述EMMC地址空间大小之间的关系,即根据每一个分区在EMMC中所占用的地址空间与EMMC中的地址空间的关系,将所述至少一个分区划分为第一类分区和第二类分区;比如,将占用EMMC地址空间大于设置的第二阈值的分区划分为第二类分区,将占用EMMC地址空间小于或等于设置的第二阈值的分区划分为第一类分区。
这里,为尽量确保后面生成的全镜像文件的体积最小,也可不将所述至少一个分区划分为第一类分区和第二类分区,即将所述至少一个分区全部划分为第二类分区。
例如,根据预先设置的对EMMC进行分区的分区数量、每一个分区名称、每一个分区大小等分区参数,将EMMC划分为uboot、misc、kernel、rootfs、recovery、app和data等七个分区;然后,可根据每一个分区所包含的有效数据的实际大小与分区自身大小的关系,将所述七个分区划分为第一类分区和第二类分区,过程如下:对于任意一个分区,计算该分区所包含的有效数据的实际大小与该分区自身大小之间的差值,若所述差值大于设置的阈值,则将该分区划分为第二类分区,否则将该分区划分为第一类分区。
步骤102:提取所述至少一个分区中的每一个第一类分区所包含的所有数据,并根据所述所有数据生成对应所述第一类分区的镜像文件;
具体地,提取所述至少一个分区中的每一个第一类分区所包含的所有数据,将从每一个第一类分区中提取的所有数据压缩后生成对应每一个第一类分区的M个镜像文件,M为大于或等于1的正整数,记录每一个第一类分区的起始地址位置和结束地址位置、以及所述M个镜像文件中每一个镜像文件的起始地址位置与大小。
这里,也可提取所述至少一个分区中的每一个第一类分区所包含的有效数据,将从每一个第一类分区中提取的有效数据压缩后生成对应每一个第一类分区的M个镜像文件,以减小所述第一类分区的镜像文件的体积,从而进一步减小全镜像文件的体积。
这里,所述起始地址位置为起始块编号;所述结束地址位置为结束块编号;所述所有数据包括有效数据和无效数据;所述有效数据是指分区所保存的对系统的启动、参数配置等操作具有重要作用的数据;所述无效数据是指分区中为弥补有效数据的空缺而填充的数据,通常采用数字0进行填充。
例如,若第一类分区包括uboot、misc和kernel等三个分区,第二类分区包括rootfs、recovery、app和data等四个分区;对于uboot和kernel分区,可通过分别修改已有的uboot和kernel编程代码,在对所述修改后的编程代码编译分别生成uboot和kernel分区的镜像文件;对于misc分区,可手动创建一个包含全镜像文件的版本号和系统中一些关键参数等内容的二进制文件,然后根据所述二进制文件生成misc分区镜像。
步骤103:提取所述至少一个分区中的每一个第二类分区所包含的有效数据,并根据所述有效数据生成对应所述第二类分区的镜像文件;
具体地,提取所述至少一个分区中的每一个第二类分区所包含的有效数据,将从每一个第二类分区中提取的有效数据压缩后生成对应每一个第二类分区的N个镜像文件,N为大于或等于1的正整数,记录每一个第二类分区的起始地址位置和结束地址位置、以及所述N个镜像文件中每一个镜像文件的起始地址位置与大小。
这里,由于所述每一个第二类分区所包含的有效数据的大小不相同,所述每一个第二类分区对应的镜像文件的数量不仅会大于或等于1个,而且每一个第二类分区对应的镜像文件的数量之间会存在一定差异;所述将从每一个第二类分区中提取的有效数据压缩后生成对应每一个第二类分区的N个镜像文件可采用现有技术的方法实现,比如采用linux下制作镜像文件的方法。
例如,若第一类分区包括uboot、misc和kernel等三个分区,第二类分区包括rootfs、recovery、app和data等四个分区;对于rootfs、recovery、app和data分区,分别准备好每个分区对应的文件夹以及每个分区在EMMC中的起始地址和结束地址后,采用linux下制作镜像文件的方法以每个分区所包含的有效数据为基础制作rootfs、recovery、app和data分区分别所对应的镜像文件。
步骤104:将所述第一类分区的镜像文件和所述第二类分区的镜像文件拼接成全镜像文件。
具体地,根据所述生成对应每一个第一类分区的M个镜像文件时,记录的所述每一个第一类分区的起始地址位置和结束地址位置;根据所述生成对应每一个第二类分区的N个镜像文件时,记录的所述每一个第二类分区的起始地址位置和结束地址位置;按照指定的数据格式,将M个镜像文件根据所述每一个第一类分区的起始地址位置和结束地址位置进行填充,将N个镜像文件根据所述每一个第二类分区的起始地址位置和结束地址位置进行填充,以得到所述全镜像文件。
这里,所述全镜像文件包括对应每一个分区的镜像文件,即所述全镜像文件包括每一个第一类分区的镜像文件和每一个第二类分区的镜像文件。
下面将通过一个具体示例对本发明实施例作进一步地的说明,图2为本发明实施例全镜像文件的生成方法的具体实现流程示意图,该方法包括:
步骤201:按照指定的分区格式对EMMC进行分区,获得uboot、misc、kernel、rootfs、recovery、app和data分区;
这里,由于EMMC中的地址空间是以块的形式存在的,即EMMC中的地址空间由许多块组成;因此,按照指定的分区格式对EMMC进行分区后,所述uboot、misc、kernel、rootfs、recovery、app和data等七个分区中的每一个分区分别对应有块的起始编号和结束编号,即每一个分区分别对应有起始地址位置和结束地址位置;根据每一个分区所对应的块的起始编号和结束编号,可获取所述每一个分区在EMMC中的地址空间;所述块的起始编号可称为起始块号,所述块的结束编号可称为结束块号。
这里,Uboot分区为内核启动的引导程序分区,作为嵌入式操作系统的引导部分,用于引导常见的Linux、VxWorks或NETBSD等操作系统;Misc分区为混杂分区,用于保存全镜像文件的版本号、系统的启动参数或关键信息等内容;Kernel分区为内核分区,用于保存操作系统的内核镜像;Rootfs分区为根文件系统分区,用于保存系统正常启动时加载的文件系统,常见的根文件系统的格式有:ext2/ext3/ext4、UBI和ramdisk等;Recovery分区为安全模式分区,用于保存系统升级时的文件系统镜像,常用于升级过程中,即在系统升级时会从该分区启动并在安全模式下进行升级,待升级完成后,系统会重启并从正常启动模式启动;App分区为应用程序分区,用于保存系统的应用程序等内容;Data分区为数据分区,主要是给客户预留的,用于保存常见的示例音视频文件等内容。
步骤202:制作uboot、misc、kernel分区的镜像文件;
这里,对于uboot和kernel分区,可通过分别修改已有的uboot和kernel分区编程代码,在对所述修改后的编程代码编译后分别生成uboot和kernel分区的镜像文件;对于misc分区,可手动创建一个包含全镜像文件的版本号和系统中一些关键参数等内容的二进制文件,然后根据所述二进制文件生成misc分区镜像。
步骤203:准备rootfs、recovery、app和data分区分别所对应的文件夹、起始地址和结束地址;
这里,rootfs分区对应的文件夹一般包含有由busybox制作的文件夹和文件,以及产品启动时所需的一些必要的文件等内容;recovery分区对应的文件夹一般包含有由busybox制作的文件夹和文件,以及产品升级时所需的一些必要的文件等内容;app分区对应的文件夹一般包含产品的应用程序等内容;data分区对应的文件夹一般包含示例音视频文件等内容。
这里,EMMC中的地址空间由许多块组成,每一个块对应有一个编号,而每一个分区由一个或一个以上的且编号连续的块组成;当步骤201中对EMMC进行分区后,则可获得所述uboot、misc、kernel、rootfs、recovery、app和data等七个分区中的每一个分区对应的起始地址和结束地址,即块的起始编号和结束编号。
步骤204:对rootfs、recovery、app和data分区进行压缩前准备;
这里,根据步骤203中获取的每一个分区对应的起始地址和结束地址以及每一个分区的属性信息,对占用EMMC较大空间且利用率不高的rootfs、recovery、app和data等四个分区进行压缩前准备,包括:
1)利用linux下的/dev/zero设备和dd命令来创建一个与EMMC大小相同的镜像文件,记为FS_on_file;
2)利用linux下的loop块设备文件例如/dev/loop6和losetup命令将镜像文件FS_on_file关联到该loop块设备上;
3)利用linux下的fdisk命令,对该loop块设备进行分区;
这里,利用linux下的fdisk命令,对该loop块设备进行分区,以将该loop块设备分成4个区,分别对应rootfs、recovery、app和data分区。
这里,fdisk命令中输入参数的单位为块;对于EMMC而言,块的大小一般为512B;所述利用linux下的fdisk命令,对该loop块设备进行分区时,需要根据rootfs、recovery、app和data分区分别对应的起始块号和结束块号进行分区。
4)利用linux下的kpartx-av命令生成和分区表相对应的分区设备;
这里,所述分区设备分别对应分区表所包含的rootfs、recovery、app和data等四个分区;当利用linux下的kpartx-av命令生成和分区表相对应的分区设备后,则在/dev/mapper/目录下就可以看到loop6p1,loop6p2,loop6p3和loop6p4等四个分区设备文件。
5)利用linux下的mke2fs命令对loop6pX进行格式化;
这里,所述loop6pX包括loop6p1,loop6p2,loop6p3和loop6p4;所述利用linux下的mke2fs命令对loop6pX进行格式化,可以把所述四个分区格式化为ext4文件系统。
6)利用linux下的mount命令对分区设备进行挂载:
具体地,新建四个文件夹,分别为rootfs_temp、recovery_temp、app_temp和data_temp;然后,将loop6p1挂载到rootfs_temp,将loop6p2挂载到recovery_temp、将loop6p3挂载到app_temp,以及将loop6p4挂载到data_temp。
7)利用linux下的cp命令拷贝文件夹;
具体地,将步骤203中已准备好的rootfs、recovery、app和data分区对应的文件夹的内容分别拷贝到rootfs_temp、recovery_temp、app_temp和data_temp文件夹中,即将rootfs分区对应的文件夹的内容拷贝到rootfs_temp文件夹中、将recovery分区对应的文件夹的内容拷贝到recovery_temp文件夹中、将app分区对应的文件夹的内容拷贝到app_temp文件夹中、将data分区对应的文件夹的内容拷贝到data_temp文件夹中。
步骤205:压缩rootfs、recovery、app和data分区,生成rootfs、recovery、app和data分区对应的镜像文件;
这里,所述压缩的依据是:对于大部分的存储介质而言,文件系统中的文件一般是按分区、顺序存放的;如果某个分区中文件很少的话,则该分区只有开始的部分有数据,而后面大部分的内容均为零;这样,通过提取出该分区中的有效数据,从而可达到对分区压缩的目的。
具体地,读取设备/dev/loop6,一次读取128KB;如果该128KB的内容为零,则继续读取下一个128KB;如果该128KB的内容不为零,则依次读取下一个128KB,直至读取到128KB的内容全部为零;把第一个内容不为零的128KB至最后一个内容不为零的128KB之间的内容记录到一个或一个以上fragment镜像中,可以把这些fragment镜像依次命名为fragment_1、fragment_2、……、Fragment_T;记录每个fragment对应的起始块号和每个fragment的大小至fragment_list中;读取完成后,得到fragment_1、fragment_2、……、Fragment_T等镜像以及fragment_list文件。
步骤206:按照指定的数据格式,填充全镜像文件;
这里,根据表1所示的EMMC中镜像的数据格式,以uboot、misc、kernel、rootfs、recovery、app和data分区的镜像文件填充EMMC的全镜像文件,包括:
表1
11)填充固定的镜像头,大小为128字节;
12)填充总的Partitions大小,大小为4个字节;
这里,所述总的Partitions大小等于所述Fragment的个数T加3。
13)填充uboot分区的起始块号,以块(BLOCK)为单位,大小为4字节;填充uboot分区的大小,以BLOCK为单位,大小为4字节;填充00000000,大小为4字节;
14)填充misc分区的起始块号,以BLOCK为单位,大小为4字节;填充misc分区的大小,以BLOCK为单位,大小为4字节;填充00000000,大小为4字节;
15)填充kernel分区的起始块号,以BLOCK为单位,大小为4字节;填充kernel分区的大小,以BLOCK为单位,大小为4字节;填充00000000,大小为4字节;
16)填充Fragment_1分区的起始块号,以BLOCK为单位,大小为4字节;填充Fragment_1分区的大小,以BLOCK为单位,大小为4字节;填充00000000,大小为4字节;
这里,所述Fragment_1分区的起始块号和大小可在所述fragment_list中获得。
17)依次填充Fragment_2、Fragment_3、……、Fragment_T的起始块号、大小和00000000;
18)填充uboot的镜像;
19)填充misc的镜像;
20)填充kernel的镜像;
21)填充Fragment_1的镜像;
22)依次填充Fragment_2、Fragment_3、……、Fragment_T的镜像。
步骤207:生成全镜像文件;
这里,当步骤206执行完毕后,还未完全生成由uboot、misc、kernel、rootfs、recovery、app和data等七个分区的镜像文件所组成的全镜像文件,此时还需进行收尾工作,包括:
31)利用linux下的umount命令卸载rootfs_temp、recovery_temp、app_temp、data_temp;
32)利用linux下的kpartx-dv命令卸载/dev/mapper/下的loop6p1、loop6p2、loop6p3和loop6p4等四个设备;
33)利用linux下的losetup-d命令卸载/dev/loop6块设备:
34)利用linux下的rm命令删除文件FS_on_file。
这里,利用uboot镜像和制作出来的所述全镜像文件,可以使用EMMC烧片器将所述全镜像文件烧写到EMMC中。
对于uboot、misc、kernel分区的镜像,从表1所示的EMMC中镜像的数据格式以及根据uboot、misc、kernel分区的起始块地址和大小,可以分别获取到uboot、misc、kernel分区的镜像,这样便可以对uboot、misc、kernel分区进行升级。
对于rootfs、recovery、app和data分区的镜像,可通过rootfs、recovery、app和data分区的起始地址和结束地址以及根据表1所示的EMMC中镜像的数据格式得到的各个fragement镜像的起始地址和大小进行获取;根据rootfs、recovery、app和data分区的起始地址和结束地址,比对各个fragement镜像的起始地址和大小,便可以知道哪些fragement镜像属于rootfs分区、哪些fragement镜像属于recovery分区、哪些fragement镜像属于app分区、以及哪些fragement镜像属于data分区;取出全镜像文件中rootfs分区对应的fragment镜像,并写入rootfs分区,以完成rootfs分区镜像的写入;类似的,可依次完成recovery、app和data分区镜像的写入。
为实现上述方法,本发明实施例还提供了一种全镜像文件的生成装置,图3为本发明实施例全镜像文件的生成装置的组成结构示意图,该装置包括:第一处理单元41、第二处理单元42、第三处理单元43;其中,
所述第一处理单元41,用于按照指定的分区格式对EMMC进行分区,得到至少一个分区;
所述第二处理单元42,用于提取所述至少一个分区中的每一个第一类分区所包含的所有数据,并根据所述所有数据生成对应所述第一类分区的镜像文件;提取所述至少一个分区中的每一个第二类分区所包含的有效数据,并根据所述有效数据生成对应所述第二类分区的镜像文件;
所述第三处理单元43,用于将所述第一类分区的镜像文件和所述第二类分区的镜像文件拼接成全镜像文件。
其中,所述第一处理单元41,具体用于:获取嵌入式多媒体卡后,根据设置的分区参数对EMMC进行分区,以将所述EMMC划分为与所述分区参数对应的至少一个分区;所述分区参数包括分区名称、分区数量、分区大小。
这里,由于EMMC中的地址空间是以块的形式存在的,即EMMC中的地址空间由许多块组成,每个块对应有一个编号;因此,根据设置的分区参数对EMMC进行分区后,所述至少一个分区中每一个分区分别对应有块的起始编号和结束编号,即根据每一个分区所对应的块的起始编号和结束编号,可获取所述每一个分区在EMMC中的地址空间。
进一步地,所述第一处理单元41,还用于根据所述至少一个分区中每一个分区所包含的有效数据的实际大小与分区自身大小的关系,将所述至少一个分区划分为第一类分区和第二类分区。
这里,由于所述至少一个分区中每一个分区所包含的有效数据的实际大小与分区自身大小之间存在差距,根据每一个分区所包含的有效数据的实际大小与分区自身大小之间的差距,将所述至少一个分区划分为第一类分区和第二类分区,以在生成镜像文件时对所述第一类分区和第二类分区分别进行不同的处理。
这里,所述第一类分区是指分区所包含的有效数据的实际大小与分区自身大小之间相差较小的分区,比如分区所包含的有效数据的实际大小与分区自身大小之间的差值小于或等于设置的第一阈值的分区;所述第二类分区是指分区所包含的有效数据的实际大小与分区自身大小之间相差较大的分区,比如分区所包含的有效数据的实际大小与分区自身大小之间的差值大于设置的第一阈值的分区。
这里,也可根据所述至少一个分区中每一个分区的自身大小与所述EMMC地址空间大小之间的关系,即根据每一个分区在EMMC中所占用的地址空间与EMMC中的地址空间的关系,将所述至少一个分区划分为第一类分区和第二类分区;比如,将占用EMMC地址空间大于设置的第二阈值的分区划分为第二类分区,将占用EMMC地址空间小于或等于设置的第二阈值的分区划分为第一类分区。
这里,为尽量确保后面生成的全镜像文件的体积最小,也可不将所述至少一个分区划分为第一类分区和第二类分区,即将所述至少一个分区全部划分为第二类分区。
例如,根据预先设置的对EMMC进行分区的分区数量、每一个分区名称、每一个分区大小等分区参数,将EMMC划分为uboot、misc、kernel、rootfs、recovery、app和data等七个分区;然后,可根据每一个分区所包含的有效数据的实际大小与分区自身大小的关系,将所述七个分区划分为第一类分区和第二类分区,过程如下:对于任意一个分区,计算该分区所包含的有效数据的实际大小与该分区自身大小之间的差值,若所述差值大于设置的阈值,则将该分区划分为第二类分区,否则将该分区划分为第一类分区。
所述第二处理单元42,具体用于:提取所述至少一个分区中的每一个第一类分区所包含的所有数据,将从每一个第一类分区中提取的所有数据压缩后生成对应每一个第一类分区的M个镜像文件,M为大于或等于1的正整数,记录每一个第一类分区的起始地址位置和结束地址位置、以及所述M个镜像文件中每一个镜像文件的起始地址位置与大小。
这里,也可提取所述至少一个分区中的每一个第一类分区所包含的有效数据,将从每一个第一类分区中提取的有效数据压缩后生成对应每一个第一类分区的M个镜像文件,以减小所述第一类分区的镜像文件的体积,从而进一步减小全镜像文件的体积。这里,所述起始地址位置为起始块编号;所述结束地址位置为结束块编号;所述所有数据包括有效数据和无效数据;所述有效数据是指分区所保存的对系统的启动、参数配置等操作具有重要作用的数据;所述无效数据是指分区中为弥补有效数据的空缺而填充的数据,通常采用数字0进行填充。
例如,若第一类分区包括uboot、misc和kernel等三个分区,第二类分区包括rootfs、recovery、app和data等四个分区;对于uboot和kernel分区,可通过分别修改已有的uboot和kernel编程代码,在对所述修改后的编程代码编译分别生成uboot和kernel分区的镜像文件;对于misc分区,可手动创建一个包含全镜像文件的版本号和系统中一些关键参数等内容的二进制文件,然后根据所述二进制文件生成misc分区镜像。
所述第二处理单元42,具体用于:提取所述至少一个分区中的每一个第二类分区所包含的有效数据,将从每一个第二类分区中提取的有效数据压缩后生成对应每一个第二类分区的N个镜像文件,N为大于或等于1的正整数,记录每一个第二类分区的起始地址位置和结束地址位置、以及所述N个镜像文件中每一个镜像文件的起始地址位置与大小。
这里,由于所述每一个第二类分区所包含的有效数据的大小不相同,所述每一个第二类分区对应的镜像文件的数量不仅会大于或等于1个,而且每一个第二类分区对应的镜像文件的数量之间会存在一定差异;所述将从每一个第二类分区中提取的有效数据压缩后生成对应每一个第二类分区的N个镜像文件可采用现有技术的方法实现,比如采用linux下制作镜像文件的方法。
例如,若第一类分区包括uboot、misc和kernel等三个分区,第二类分区包括rootfs、recovery、app和data等四个分区;对于rootfs、recovery、app和data分区,分别准备好每个分区对应的文件夹以及每个分区在EMMC中的起始地址和结束地址后,采用linux下制作镜像文件的方法以每个分区所包含的有效数据为基础制作rootfs、recovery、app和data分区分别所对应的镜像文件。
所述第三处理单元43,具体用于:在所述第二处理单元生成对应每一个第一类分区的M个镜像文件时,记录所述每一个第一类分区的起始地址位置和结束地址位置;在所述第二处理单元生成对应每一个第二类分区的N个镜像文件时,记录所述每一个第二类分区的起始地址位置和结束地址位置;按照指定的数据格式,将M个镜像文件根据所述每一个第一类分区的起始地址位置和结束地址位置进行填充,将N个镜像文件根据所述每一个第二类分区的起始地址位置和结束地址位置进行填充,以得到所述全镜像文件。
这里,所述全镜像文件包括对应每一个分区的镜像文件,即所述全镜像文件包括每一个第一类分区的镜像文件和每一个第二类分区的镜像文件。
在实际应用中,所述第一处理单元41、第二处理单元42、第三处理单元43均可由位于终端中的中央处理器(CPU)、数字信号处理器(DSP)等实现。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。

Claims (10)

1.一种全镜像文件的生成方法,其特征在于,所述方法包括:
按照指定的分区格式对嵌入式多媒体卡EMMC进行分区,得到至少一个分区;
提取所述至少一个分区中的每一个第一类分区所包含的所有数据,并根据所述所有数据生成对应所述第一类分区的镜像文件;
提取所述至少一个分区中的每一个第二类分区所包含的有效数据,并根据所述有效数据生成对应所述第二类分区的镜像文件;
将所述第一类分区的镜像文件和所述第二类分区的镜像文件拼接成全镜像文件。
2.根据权利要求1所述的方法,其特征在于,所述按照指定的分区格式对所述EMMC进行分区,得到至少一个分区,包括:
根据设置的分区参数对EMMC进行分区,以将所述EMMC划分为与所述分区参数对应的至少一个分区;所述分区参数包括分区名称、分区数量、分区大小。
3.根据权利要求1所述的方法,其特征在于,所述按照指定的分区格式对所述EMMC进行分区,得到至少一个分区后,所述方法还包括:
根据所述至少一个分区中每一个分区所包含的有效数据的实际大小与分区自身大小的关系,将所述至少一个分区划分为第一类分区和第二类分区。
4.根据权利要求1所述的方法,其特征在于,
所述根据所述所有数据生成对应所述第一类分区的镜像文件,包括:将从每一个第一类分区中提取的所有数据压缩后生成对应每一个第一类分区的M个镜像文件,M为大于或等于1的正整数;
所述根据所述有效数据生成对应所述第二类分区的镜像文件,包括:将从每一个第二类分区中提取的有效数据压缩后生成对应每一个第二类分区的N个镜像文件,N为大于或等于1的正整数。
5.根据权利要求5所述的方法,其特征在于,所述将所述第一类分区的镜像文件和所述第二类分区的镜像文件拼接成全镜像文件,包括:
所述生成对应每一个第一类分区的M个镜像文件时,记录所述每一个第一类分区的起始地址位置和结束地址位置;
所述生成对应每一个第二类分区的N个镜像文件时,记录所述每一个第二类分区的起始地址位置和结束地址位置;
按照指定的数据格式,将M个镜像文件根据所述每一个第一类分区的起始地址位置和结束地址位置进行填充,将N个镜像文件根据所述每一个第二类分区的起始地址位置和结束地址位置进行填充,以得到所述全镜像文件。
6.一种全镜像文件的生成装置,其特征在于,所述装置包括:第一处理单元、第二处理单元、第三处理单元;其中,
所述第一处理单元,用于按照指定的分区格式对EMMC进行分区,得到至少一个分区;
所述第二处理单元,用于提取所述至少一个分区中的每一个第一类分区所包含的所有数据,并根据所述所有数据生成对应所述第一类分区的镜像文件;提取所述至少一个分区中的每一个第二类分区所包含的有效数据,并根据所述有效数据生成对应所述第二类分区的镜像文件;
所述第三处理单元,用于将所述第一类分区的镜像文件和所述第二类分区的镜像文件拼接成全镜像文件。
7.根据权利要求6所述的装置,其特征在于,所述第一处理单元,具体用于:
根据设置的分区参数对EMMC进行分区,以将所述EMMC划分为与所述分区参数对应的至少一个分区;所述分区参数包括分区名称、分区数量、分区大小。
8.根据权利要求6所述的装置,其特征在于,所述第一处理单元,还用于在所述按照指定的分区格式对所述EMMC进行分区,得到至少一个分区后,根据所述至少一个分区中每一个分区所包含的有效数据的实际大小与分区自身大小的关系,将所述至少一个分区划分为第一类分区和第二类分区。
9.根据权利要求6所述的装置,其特征在于,
所述第二处理单元根据所述所有数据生成对应所述第一类分区的镜像文件为:将从每一个第一类分区中提取的所有数据压缩后生成对应每一个第一类分区的M个镜像文件,M为大于或等于1的正整数;
所述第二处理单元根据所述有效数据生成对应所述第二类分区的镜像文件为:将从每一个第二类分区中提取的有效数据压缩后生成对应每一个第二类分区的N个镜像文件,N为大于或等于1的正整数。
10.根据权利要求9所述的装置,其特征在于,所述第三处理单元,具体用于:
在所述第二处理单元生成对应每一个第一类分区的M个镜像文件时,记录所述每一个第一类分区的起始地址位置和结束地址位置;
在所述第二处理单元生成对应每一个第二类分区的N个镜像文件时,记录所述每一个第二类分区的起始地址位置和结束地址位置;
按照指定的数据格式,将M个镜像文件根据所述每一个第一类分区的起始地址位置和结束地址位置进行填充,将N个镜像文件根据所述每一个第二类分区的起始地址位置和结束地址位置进行填充,以得到所述全镜像文件。
CN201610777619.2A 2016-08-30 2016-08-30 一种全镜像文件的生成方法及装置 Withdrawn CN107783724A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201610777619.2A CN107783724A (zh) 2016-08-30 2016-08-30 一种全镜像文件的生成方法及装置
PCT/CN2017/094282 WO2018040802A1 (zh) 2016-08-30 2017-07-25 一种全镜像文件的生成方法及装置、计算机存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610777619.2A CN107783724A (zh) 2016-08-30 2016-08-30 一种全镜像文件的生成方法及装置

Publications (1)

Publication Number Publication Date
CN107783724A true CN107783724A (zh) 2018-03-09

Family

ID=61299986

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610777619.2A Withdrawn CN107783724A (zh) 2016-08-30 2016-08-30 一种全镜像文件的生成方法及装置

Country Status (2)

Country Link
CN (1) CN107783724A (zh)
WO (1) WO2018040802A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111158697A (zh) * 2019-12-25 2020-05-15 惠州华阳通用电子有限公司 一种烧录镜像制作方法
CN112527745A (zh) * 2020-12-18 2021-03-19 厦门市美亚柏科信息股份有限公司 嵌入式文件系统多分区解析方法、终端设备及存储介质
WO2021129056A1 (zh) * 2019-12-26 2021-07-01 晶晨半导体(深圳)有限公司 大容量emmc镜像制作方法和装置
CN117289956A (zh) * 2023-10-12 2023-12-26 北京首都在线科技股份有限公司 镜像制作方法、装置、电子设备和存储介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112463178A (zh) * 2020-12-10 2021-03-09 福州创实讯联信息技术有限公司 一种嵌入式设备的文件系统烧写方法与终端
CN113377391B (zh) * 2021-07-21 2023-11-21 北京百度网讯科技有限公司 镜像文件的制作和烧录的方法、装置、设备和介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101632066A (zh) * 2007-03-30 2010-01-20 爱信艾达株式会社 数据更新系统及计算机程序
CN105590072A (zh) * 2015-12-18 2016-05-18 上海华测导航技术股份有限公司 一种实现嵌入式系统自动烧录的方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104317618B (zh) * 2014-10-24 2018-03-27 福州瑞芯微电子股份有限公司 一种固件分区处理方法和装置
CN105653330A (zh) * 2015-12-30 2016-06-08 国家电网公司 一种基于SD卡的NorFlash烧写系统和方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101632066A (zh) * 2007-03-30 2010-01-20 爱信艾达株式会社 数据更新系统及计算机程序
CN105590072A (zh) * 2015-12-18 2016-05-18 上海华测导航技术股份有限公司 一种实现嵌入式系统自动烧录的方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111158697A (zh) * 2019-12-25 2020-05-15 惠州华阳通用电子有限公司 一种烧录镜像制作方法
WO2021129056A1 (zh) * 2019-12-26 2021-07-01 晶晨半导体(深圳)有限公司 大容量emmc镜像制作方法和装置
CN112527745A (zh) * 2020-12-18 2021-03-19 厦门市美亚柏科信息股份有限公司 嵌入式文件系统多分区解析方法、终端设备及存储介质
CN112527745B (zh) * 2020-12-18 2022-07-12 厦门市美亚柏科信息股份有限公司 嵌入式文件系统多分区解析方法、终端设备及存储介质
CN117289956A (zh) * 2023-10-12 2023-12-26 北京首都在线科技股份有限公司 镜像制作方法、装置、电子设备和存储介质
CN117289956B (zh) * 2023-10-12 2024-06-11 北京首都在线科技股份有限公司 镜像制作方法、装置、电子设备和存储介质

Also Published As

Publication number Publication date
WO2018040802A1 (zh) 2018-03-08

Similar Documents

Publication Publication Date Title
CN107783724A (zh) 一种全镜像文件的生成方法及装置
TWI667590B (zh) 資料儲存裝置以及韌體加密及更新方法
US10552044B2 (en) Storage apparatus, data processing method and storage system wherein compressed data is read in parallel, said data stored in buffer by size and read from said buffer, in order of when said data is stored in said buffer
KR101555210B1 (ko) 휴대용 단말기에서 내장 대용량 메모리를 이용한 컨텐츠 다운로드 방법 및 장치
US9697668B2 (en) Automatically configurable smart card and method of automatically configuring a smart card
CN106293782A (zh) 一种系统升级方法及终端
CN112306368B (zh) 一种emmc扩展用户数据分区的方法及装置
WO2017000637A1 (zh) 一种闪存烧写方法、单板、上位机及系统
JP6123766B2 (ja) データ読み出し装置、プログラムおよびデータ読み出し方法
CN107148612B (zh) 一种扩展用户分区的方法和装置
US20100153622A1 (en) Data Access Controller and Data Accessing Method
TWI762275B (zh) 借助專用位元資訊來執行一記憶體裝置之存取管理之方法、記憶體裝置、電子裝置、應用於一記憶體裝置之控制器以及主機裝置
US8909684B2 (en) Semiconductor device with a plurality of write conditions and memory system
CN101571808B (zh) 提高电信智能卡生产效率的方法
JP2008084184A (ja) メモリコントローラ
TWI233616B (en) Silicon storage media and controller thereof, controlling method thereof, and data frame based storage media
CN101382961A (zh) 升级文件的制作与数据升级方法
CN102467522B (zh) 一种基于nand闪存的文件系统的自编程方法及装置
CN106293620B (zh) intel平台检测Flash Rom中参数的方法
US10860533B1 (en) File size as an indicator of file properties
TWI616819B (zh) 用於電視的軟體更新方法及相關的電路
US20170269835A1 (en) Data storage device and data management method thereof
CN109683914B (zh) 一种flash烧录方法、上位机及烧录系统
CN109684870B (zh) 一种自包含的文件信息配置方法及系统
JP2009217588A (ja) ファイルシステム、電子カメラ、ファイルアクセス方法及びプログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication

Application publication date: 20180309

WW01 Invention patent application withdrawn after publication