CN112486514B - eMMC烧录文件的制作方法、装置和计算机设备 - Google Patents
eMMC烧录文件的制作方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN112486514B CN112486514B CN202011364123.5A CN202011364123A CN112486514B CN 112486514 B CN112486514 B CN 112486514B CN 202011364123 A CN202011364123 A CN 202011364123A CN 112486514 B CN112486514 B CN 112486514B
- Authority
- CN
- China
- Prior art keywords
- file
- emmc
- partition
- burning
- size
- 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.)
- Active
Links
- 238000004519 manufacturing process Methods 0.000 title claims abstract description 40
- 238000005192 partition Methods 0.000 claims abstract description 236
- 238000000034 method Methods 0.000 claims abstract description 39
- 238000004590 computer program Methods 0.000 claims description 13
- 238000012795 verification Methods 0.000 claims description 12
- 238000006243 chemical reaction Methods 0.000 claims description 5
- 230000006835 compression Effects 0.000 claims description 5
- 238000007906 compression Methods 0.000 claims description 5
- 125000004122 cyclic group Chemical group 0.000 claims description 2
- 238000013515 script Methods 0.000 description 31
- 238000011084 recovery Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及烧录文件制作技术领域,揭示了一种Android eMMC烧录文件的制作方法,包括以下步骤:创建初始eMMC烧录文件,所述初始eMMC烧录文件为一空文件;Android系统编译完成后,生成各个分区所需要的img镜像文件;获取每个分区的img镜像文件的分区大小size,并根据分区大小size计算每个分区的img镜像在烧录文件中的offset偏移地址;将simg格式的img镜像文件转换为raw格式的img镜像文件;使用Linux dd命令根据所述offset偏移地址,将每个分区的img镜像文件拷贝到所述初始eMMC烧录文件的对应起始位置,得到最终的eMMC烧录文件。本发明提供的方法,解决了现有技术中需要硬件平台制作eMMC烧录文件,且制作方式低效、高成本、稳定性不高的技术问题。
Description
技术领域
本发明涉及烧录文件制作技术领域,特别涉及一种eMMC烧录文件的制作方法、装置和计算机设备。
背景技术
eMMC(Embedded Multi Media Card)是MMC协会订立、主要针对手机或平板电脑等产品的内嵌式存储器标准规格。由一个嵌入式存储解决方案组成,带有MMC(多媒体卡)接口、快闪存储器设备及主控制器。所有都在一个小型的BGA封装。接口速度高达每秒400MBytes,eMMC具有快速、可升级的性能。同时其接口电压可以是1.8V或者是3.3V。
Android方案传统的eMMC烧录bin制作的方式,首先需要通过U盘或者升级工具将软件升级到TV主板,然后在Android系统中访问eMMC的数据并读取,将所有eMMC的所有数据保存到U盘的一个文件中,这个文件就是eMMC烧录文件。
此方式需要使用硬件平台,具有一定的限制性,制作时间周期长,并且比较容易因为U盘稳定性导致烧录文件制作出来后不能使用。因此该方法低效、高成本、稳定性不高。
发明内容
本发明的主要目的为提供一种Android eMMC烧录文件的制作方法,旨在解决现有技术中需要硬件平台制作eMMC烧录文件,且制作方式低效、高成本、稳定性不高的技术问题。
本发明提出一种Android eMMC烧录文件的制作方法,包括以下步骤:
创建初始eMMC烧录文件,所述初始eMMC烧录文件为一空文件;
Android系统编译完成后,生成各个分区所需要的img镜像文件;
获取每个分区的img镜像文件的分区大小size,并根据分区大小size计算每个分区的img镜像在烧录文件中的offset偏移地址;
将simg格式的img镜像文件转换为raw格式的img镜像文件;
使用Linux dd命令根据所述offset偏移地址,将每个分区的img镜像文件拷贝到所述初始eMMC烧录文件的对应起始位置,得到最终的eMMC烧录文件。
进一步地,所述使用Linux dd命令根据步骤所述offset偏移地址,将每个分区的img镜像文件拷贝到所述初始eMMC烧录文件的对应起始位置,得到最终的eMMC烧录文件的步骤之后,还包括:
计算最终的eMMC烧录文件的CRC校验值,将最终的eMMC烧录文件压缩并将CRC校验值加到压缩后的eMMC烧录文件命名中,形成烧录器校验文件。
进一步地,所述获取每个分区的img镜像文件的分区大小size,并根据分区大小size计算每个分区的img镜像在烧录文件中的offset偏移地址的步骤,包括:
读取Boardconfig.mk里面各个分区大小的数据,得出size的数据;
根据分区大小和分区的顺序计算得出offset的数据,并根据offset的数据得到offset偏移地址;其中,所述分区的顺序通过分区挂载配置文件fstab得到。
进一步地,所述读取Boardconfig.mk里面各个分区大小的数据,得出size的数据的步骤,包括:
修改Boardconfig.mk里面分区镜像配置来修改分区大小size;
读取Boardconfig.mk里面各个分区大小的数据,得出size的数据。
进一步地,所述将simg格式的img镜像文件转换为raw格式的img镜像文件的步骤,包括:使用simg2img命令将simg格式的img镜像文件转换为raw格式的img镜像文件,其中,所述simg格式的img镜像文件包括vendor、system、odm、product。
进一步地,所述计算最终的eMMC烧录文件的CRC校验值,将最终的eMMC烧录文件压缩并将CRC校验值加到压缩后的eMMC烧录文件命名中,形成烧录器校验文件的步骤,包括:通过linux的md5sum命令计算eMMC烧录文件的md5值,将最终的eMMC烧录文件压缩并将md5值加到压缩后的eMMC烧录文件命名中,形成烧录器校验文件。
本发明还提供了一种Android eMMC烧录文件的制作装置,包括:
创建模块,用于创建初始eMMC烧录文件,所述初始eMMC烧录文件为一空文件;
生成模块,用于Android系统编译完成后,生成各个分区所需要的img镜像文件;
计算模块,用于获取每个分区的img镜像文件的分区大小size,并根据分区大小size计算每个分区的img镜像在烧录文件中的offset偏移地址;
转换模块,用于将simg格式的img镜像文件转换为raw格式的img镜像文件;
拷贝模块,用于使用Linux dd命令根据所述offset偏移地址,将每个分区的img镜像文件拷贝到所述初始eMMC烧录文件的对应起始位置,得到最终的eMMC烧录文件。
进一步地,还包括:
压缩模块,用于计算最终的eMMC烧录文件的CRC校验值,将最终的eMMC烧录文件压缩并将CRC校验值加到压缩后的eMMC烧录文件命名后,形成烧录器校验文件。
本发明还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
本发明的有益效果为:在Android系统编译完成后,脚本获取每个分区的img镜像文件的分区大小size,并计算每个分区的img镜像的offset偏移地址,Linux dd命令根据步offset偏移地址,将每个分区的img镜像文件拷贝到烧录文件的对应起始位置,得到最终的eMMC烧录文件。从而使得本发明直接通过编译Android系统之后可以利用脚本自动生成eMMC烧录文件,不需要硬件平台,相比传统方式需要搭建硬件平台和U盘,更加稳定、低成本。
附图说明
图1为本申请一实施例的方法流程示意图。
图2为本申请一实施例中步骤S2的拷贝结果示意图。
图3为本申请一实施例的装置结构示意图。
图4为本申请一实施例的计算机设备内部结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供了一种Android eMMC烧录文件的制作方法,在Android系统ROM编译完成之后就可以利用脚本自动生成eMMC烧录文件,不需要硬件平台,相比传统方式需要搭建硬件平台和U盘,更加稳定、低成本。同时,制作烧录文件的时间短,编译完Android系统后,平均只需要30s就能生成eMMC烧录文件,相比传统方式制作烧录文件需要30min以上,极大提高了效率。
参照图1,本发明提供的一种Android eMMC烧录文件的制作方法,包括以下步骤:
S1、创建初始eMMC烧录文件,所述初始eMMC烧录文件为一空文件;
S2、Android系统编译完成后,生成各个分区所需要的img镜像文件;
S3、获取每个分区的img镜像文件的分区大小size,并根据分区大小size计算每个分区的img镜像在烧录文件中的offset偏移地址;
S4、将simg格式的img镜像文件转换为raw格式的img镜像文件;
S5、使用Linux dd命令根据所述offset偏移地址,将每个分区的img镜像文件拷贝到所述初始eMMC烧录文件的对应起始位置,得到最终的eMMC烧录文件。
如上述步骤S1所述,创建初始eMMC烧录文件,制作开始时将其设置为空文件,使得后续能够不断的把对应的img镜像文件拷贝到这个烧录文件的对应位置,形成最终的eMMC烧录文件。
如上述步骤S2所述,Android系统编译完成之后会生成各个分区所需要的img镜像文件,其中包括了recovery.img、boot.img、system.img、vendor.img等系统镜像,以便后续对这些镜像文件进行相应的处理后拷贝到上述创建的空文件中。
如上述步骤S3所述,使用脚本获取每个分区进项文件的分区大小size,并根据分区大小size能够计算出每个分区镜像文件在初始eMMC烧录文件的offset偏移地址,以便后续能够将这些镜像文件拷贝到对应的位置。脚本(Script),是使用一种特定的描述性语言,依据一定的格式编写的可执行文件。脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序,脚本通常是以文本(ASCⅡ)保存,只是在被调用时进行解释或者编译。
如上述步骤S4所述,使用脚本将simg格式的img镜像文件转换为raw格式的img镜像文件后,保证simg格式的img镜像文件在后续步骤中拷贝到烧录文件对应的位置时,其格式为raw格式的img镜像文件。
如上述步骤S5所述,Linux dd命令:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。根据前面得到的offset偏移地址,可以顺利的找到每个分区镜像文件的对应的位置,从而将每个分区的img镜像文件以及转换了格式的img镜像文件拷贝到对应的位置,得到最终的eMMC烧录文件。
offset是dd命令执行时的参数,在某一实例中,步骤S3中得到的结果如下述中的表格所示;如图2所示,脚本使用linuxdd命令按照下述表格中的分区信息,依次将各个img镜像文件拷贝到eMMC烧录文件的对应起始位置,最终得到的文件即eMMC烧录bin文件。如:system分区:dd if=system.img.raw of=EMMC.bin seek=2791309312oflag=seek_bytesconv=notruncbs=4096,其中,命令中的seek=2791309312,这个数据即下述表格中计算而来的system分区对应的偏移地址offset。
Android方案传统的eMMC烧录bin制作的方式,首先需要通过U盘或者升级工具将软件升级到TV主板,然后在Android系统中访问eMMC的数据并读取,将所有eMMC的所有数据保存到U盘的一个文件中。
本发明中,首先,Android系统编译完成之后会生成各个分区所需要的img镜像文件,其中包括了recovery.img、boot.img、system.img、vendor.img等系统镜像,最后会将所有的img打包生成一个文件,但是此文件不能用于eMMC烧录使用。但是,通过本发明的方法可以在Android系统编译完成之后利用脚本直接生成eMMC烧录文件用于eMMC烧录使用,不需要硬件平台,并且提高了Android方案TV板卡烧录文件制作的效率,减少了硬件成本,并提高稳定性,解决传统方式低效、高成本、稳定性不高的缺点。
在一个实施例中,所述使用Linux dd命令根据所述offset偏移地址,将每个分区的img镜像文件拷贝到所述初始eMMC烧录文件的对应起始位置,得到最终的eMMC烧录文件的步骤S5之后,还包括:
S6、计算最终的eMMC烧录文件的CRC校验值,将最终的eMMC烧录文件压缩并将CRC校验值加到压缩后的eMMC烧录文件命名中,形成烧录器校验文件。
如上述步骤S6所述,使用脚本来计算最终的eMMC烧录文件的CRC校验值。最终得到的烧录器校验文件为用于量产烧录前在烧录器检验的文件。生成校验值的目的是为了保证了文件在网络传输、拷贝等操作下可能造成的数据丢失等,通过比较生产前使用烧录器计算的校验值和最开始制作的校验值比较,如果一致说明烧录文件是正确的,如果不一致,有可能是因为传输过程出现了问题,可以降低风险。
在一个实施例中,所述Android系统编译完成后,生成各个分区所需要的img镜像文件的步骤S3,具体包括:
S31、读取Boardconfig.mk里面各个分区大小的数据,得出size的数据。
S32、根据分区大小和分区的顺序计算得出offset的数据,并根据offset的数据得到offset偏移地址;其中,所述分区的顺序通过分区挂载配置文件fstab得到。
如上述步骤S31和步骤S32所述,分区大小的数据可以直接读取,而读取size数据后可以计算得到offset的数据,进而得出offset偏移地址,使得后续拷贝过程中可以顺利的找到各个区分镜像文件的对应位置。
分区排布的顺序取决于分区挂载配置文件fstab,offset的数据可以根据分区大小和分区的顺序计算得出,分区的大小时前文提到的Boardconfig.mk里面的参数配置所确定的,需要计算的是每个分区的偏移地址,这个文件应该在最终制作出来的烧录文件的哪一个位置。如第一个分区的偏移地址是0,第二个分区的偏移地址为第一个分区的大小加上第一个分区与第二个分区之间的保留空间大小;第三个分区的偏移地址为第一个分区的大小+第一个分区到第二个分区的保留空间+第二个分区的大小+第二个分区到第三个分区的保留空间大小,以此类推。其中,保留空间的大小不定,不同的芯片厂商在设计上不同。
某一结果如下表所示:
id | partition | offset | size |
0 | bootloader | 0 | 2097152 |
0 | unifykey | 37748736 | 262144 |
0 | _aml_dtb | 41943040 | 524288 |
1 | cache | 113246208 | 0x46000000 |
2 | env | 1296039936 | 8388608 |
6 | logo | 1312817152 | 0x800000 |
7 | recovery | 1329594368 | 0x1800000 |
8 | misc | 1363148800 | 0x800000 |
9 | dtbo | 1379926016 | 0x800000 |
10 | cri_data | 1396703232 | 0x800000 |
11 | param | 1413480448 | 0x1000000 |
12 | boot | 1438646272 | 0x1000000 |
13 | rsv | 1463812096 | 0x1000000 |
14 | metadata | 1488977620 | 0x1000000 |
15 | vbmeta | 1514143744 | 0x200000 |
16 | tee | 1524629504 | 0x2000000 |
17 | vendor | 1566572544 | 0x40000000 |
18 | odm | 2648702976 | 0x8000000 |
19 | system | 2791309312 | 0x40000000 |
20 | product | 3873439744 | 0x8000000 |
21 | factorydata | 4016046080 | 0x600000 |
22 | data | 4129292288 | 0xffffffff |
在一个实施例中,所述读取Boardconfig.mk里面各个分区大小的数据,得出size的数据的步骤S31之前,还可以通过修改Boardconfig.mk里面分区镜像配置来修改分区大小size,得到其步骤为:
S30、修改Boardconfig.mk里面分区镜像配置来修改分区大小size。
S31、读取Boardconfig.mk里面各个分区大小的数据,得出size的数据。
S32、根据分区大小和分区的顺序计算得出offset的数据,并根据offset的数据得到offset偏移地址;其中,所述分区的顺序通过分区挂载配置文件fstab得到。
如上述步骤S30、步骤S31和步骤S32所述,分区大小的数据可以直接读取,也可以修改后在进行读取,为的是将各个分区的大小根据不同平台的需求来配置,而读取size数据后可以计算得到offset的数据,进而得出offset偏移地址,使得后续拷贝过程中可以顺利的找到各个区分镜像文件的对应位置。
在Android系统中,可以通过修改Boardconfig.mk里面分区镜像配置,来修改分区的大小,比如将system分区大小设置为1G:BOARD_SYSTEMIMAGE_PARTITION_SIZE:=1073741824(16进制就是0x40000000)。各个分区的大小都是可以根据不同平台的需求来配置,而脚本读取的数据来源就是这部分数据。
在一个实施例中,所述将simg格式的img镜像文件转换为raw格式的img镜像文件的步骤S4,包括:
使用simg2img命令将simg格式的img镜像文件转换为raw格式的img镜像文件,其中,所述simg格式的img镜像文件包括vendor、system、odm、product。
其中,只有vendor、system、odm、product这几个分区的镜像文件是simg格式,脚本中转换使用的是simg2img命令,这个是Android原生带有的工具,可以将simg格式的分区镜像文件转换为raw格式的原始分区数据;命令如:simg2img system.imgsystem.raw.img。
在一个实施例中,所述计算最终的eMMC烧录文件的CRC校验值,将最终的eMMC烧录文件压缩并将CRC校验值加到压缩后的eMMC烧录文件命名中,形成烧录器校验文件的步骤S6,包括:
通过linux的md5sum命令计算eMMC烧录文件的md5值;将最终的eMMC烧录文件压缩并将md5值加到压缩后的eMMC烧录文件命名中,形成烧录器校验文件。
计算校验值一般是计算eMMC烧录文件的md5值,只需要通过linux的md5sum命令即可计算;如:md5sum package.img|cut-d""-f1,可以获取该文件的校验值。
如图3所示,本发明还提供了一种Android eMMC烧录文件的制作装置,包括:
创建模块1,用于创建初始eMMC烧录文件,所述初始eMMC烧录文件为一空文件。
生成模块2,用于Android系统编译完成后,生成各个分区所需要的img镜像文件。
计算模块3,用于获取每个分区的img镜像文件的分区大小size,并根据分区大小size计算每个分区的img镜像在烧录文件中的offset偏移地址。
转换模块4,用于将simg格式的img镜像文件转换为raw格式的img镜像文件。
拷贝模块5,用于使用Linux dd命令根据所述offset偏移地址,将每个分区的img镜像文件拷贝到所述初始eMMC烧录文件的对应起始位置,得到最终的eMMC烧录文件。
如上述创建模块1,创建初始eMMC烧录文件,制作开始时将其设置为空文件,使得后续能够不断的把对应的img镜像文件拷贝到这个烧录文件的对应位置,形成最终的eMMC烧录文件。
如上述生成模块2,Android系统编译完成之后会生成各个分区所需要的img镜像文件,其中包括了recovery.img、boot.img、system.img、vendor.img等系统镜像,以便后续对这些镜像文件进行相应的处理后拷贝到上述创建的空文件中。
如上述计算模块3,使用脚本获取每个分区进项文件的分区大小size,并根据分区大小size能够计算出每个分区镜像文件在初始eMMC烧录文件的offset偏移地址,以便后续能够将这些镜像文件拷贝到对应的位置。脚本(Script),是使用一种特定的描述性语言,依据一定的格式编写的可执行文件。脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序,脚本通常是以文本(ASCⅡ)保存,只是在被调用时进行解释或者编译。
如上述转换模块4,使用脚本将simg格式的img镜像文件转换为raw格式的img镜像文件后,保证simg格式的img镜像文件在后续步骤中拷贝到烧录文件对应的位置时,其格式为raw格式的img镜像文件。
如上述拷贝模块5,Linux dd命令:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。根据前面得到的offset偏移地址,可以顺利的找到每个分区镜像文件的对应的位置,从而将每个分区的img镜像文件以及转换了格式的img镜像文件拷贝到对应的位置,得到最终的eMMC烧录文件。
拷贝模块5中,offset是dd命令执行时的参数,在某一实例中,计算模块中得到的结果如下述中的表格所示;如图2所示,脚本使用linuxdd命令按照下述表格中的分区信息,依次将各个img镜像文件拷贝到eMMC烧录文件的对应起始位置,最终得到的文件即eMMC烧录bin文件。如:system分区:dd if=system.img.raw of=EMMC.bin seek=2791309312oflag=seek_bytesconv=notruncbs=4096,其中,命令中的seek=2791309312,这个数据即下述表格中计算而来的system分区对应的偏移地址offset。
Android方案传统的eMMC烧录bin制作的方式,首先需要通过U盘或者升级工具将软件升级到TV主板,然后在Android系统中访问eMMC的数据并读取,将所有eMMC的所有数据保存到U盘的一个文件中。
本发明中,首先,Android系统编译完成之后会生成各个分区所需要的img镜像文件,其中包括了recovery.img、boot.img、system.img、vendor.img等系统镜像,最后会将所有的img打包生成一个文件,但是此文件不能用于eMMC烧录使用。但是,通过本发明的方法可以在Android系统编译完成之后利用脚本直接生成eMMC烧录文件用于eMMC烧录使用,不需要硬件平台,并且提高了Android方案TV板卡烧录文件制作的效率,减少了硬件成本,并提高稳定性,解决传统方式低效、高成本、稳定性不高的缺点。
在一个实施例中,还包括压缩模块,用于脚本计算eMMC烧录文件的CRC校验值,将eMMC烧录文件压缩并将CRC校验值加到压缩后的eMMC烧录文件命名后,形成烧录器校验文件。
如上述压缩模块,使用脚本来计算最终的eMMC烧录文件的CRC校验值。最终得到的烧录器校验文件为用于量产烧录前在烧录器检验的文件。生成校验值的目的是为了保证了文件在网络传输、拷贝等操作下可能造成的数据丢失等,通过比较生产前使用烧录器计算的校验值和最开始制作的校验值比较,如果一致说明烧录文件是正确的,如果不一致,有可能是因为传输过程出现了问题,可以降低风险。
在一个实施例中,计算模块,包括:
读取单元,用于读取Boardconfig.mk里面各个分区大小的数据,得出size的数据。
运算单元,根据分区大小和分区的顺序计算得出offset的数据,并根据offset的数据得到offset偏移地址;其中,所述分区的顺序通过分区挂载配置文件fstab得到。
如上述读取单元和运算单元,分区大小的数据可以直接读取,而读取size数据后可以计算得到offset的数据,进而得出offset偏移地址,使得后续拷贝过程中可以顺利的找到各个区分镜像文件的对应位置。
分区排布的顺序取决于分区挂载配置文件fstab,offset的数据可以根据分区大小和分区的顺序计算得出,分区的大小时前文提到的Boardconfig.mk里面的参数配置所确定的,需要计算的是每个分区的偏移地址,这个文件应该在最终制作出来的烧录文件的哪一个位置。如第一个分区的偏移地址是0,第二个分区的偏移地址为第一个分区的大小加上第一个分区与第二个分区之间的保留空间大小;第三个分区的偏移地址为第一个分区的大小+第一个分区到第二个分区的保留空间+第二个分区的大小+第二个分区到第三个分区的保留空间大小,以此类推。其中,保留空间的大小不定,不同的芯片厂商在设计上不同。
某一结果如下表所示:
在一个实施例中,在读取Boardconfig.mk里面各个分区大小的数据,得出size的数据之前,可以通过修改Boardconfig.mk里面分区镜像配置来修改分区大小size,得到其装置为:
修改单元,用于修改Boardconfig.mk里面分区镜像配置来修改分区大小size。
读取单元,读取Boardconfig.mk里面各个分区大小的数据,得出size的数据。
运算单元,根据分区大小和分区的顺序计算得出offset的数据,并根据offset的数据得到offset偏移地址;其中,所述分区的顺序通过分区挂载配置文件fstab得到。
如上述修改单元、读取单元、运算单元,分区大小的数据可以直接读取,也可以修改后在进行读取,为的是将各个分区的大小根据不同平台的需求来配置,而读取size数据后可以计算得到offset的数据,进而得出offset偏移地址,使得后续拷贝过程中可以顺利的找到各个区分镜像文件的对应位置。
在Android系统中,可以通过修改Boardconfig.mk里面分区镜像配置,来修改分区的大小,比如将system分区大小设置为1G:BOARD_SYSTEMIMAGE_PARTITION_SIZE:=1073741824(16进制就是0x40000000)。各个分区的大小都是可以根据不同平台的需求来配置,而脚本读取的数据来源就是这部分数据。
在一个实施例中,转换模块使用simg2img命令将simg格式的img镜像文件转换为raw格式的img镜像文件,其中,所述simg格式的img镜像文件包括vendor、system、odm、product。
其中,只有vendor、system、odm、product这几个分区的镜像文件是simg格式,脚本中转换使用的是simg2img命令,这个是Android原生带有的工具,可以将simg格式的分区镜像文件转换为raw格式的原始分区数据;命令如:simg2img system.imgsystem.raw.img。
在一个实施例中,压缩模块,包括:计算eMMC烧录文件的CRC校验值具体包括:通过linux的md5sum命令计算eMMC烧录文件的md5值;将最终的eMMC烧录文件压缩并将md5值加到压缩后的eMMC烧录文件命名中,形成烧录器校验文件。
计算校验值一般是计算eMMC烧录文件的md5值,只需要通过linux的md5sum命令即可计算;如:md5sum package.img|cut-d""-f1,可以获取该文件的校验值。
如图4所示,本发明还提供了一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储编译生成Android eMMC烧录文件的制作的过程需要的所有数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现Android eMMC烧录文件的制作方法。
上述处理器执行Android eMMC烧录文件的制作方法,包括:S1、创建初始eMMC烧录文件,所述初始eMMC烧录文件为一空文件;S2、Android系统编译完成后,生成各个分区所需要的img镜像文件;S3、获取每个分区的img镜像文件的分区大小size,并根据分区大小size计算每个分区的img镜像在烧录文件中的offset偏移地址;S4、将simg格式的img镜像文件转换为raw格式的img镜像文件;S5、使用Linux dd命令根据所述offset偏移地址,将每个分区的img镜像文件拷贝到所述初始eMMC烧录文件的对应起始位置,得到最终的eMMC烧录文件。
上述计算机设备,通过在Android系统编译完成后,脚本获取每个分区的img镜像文件的分区大小size,并计算每个分区的img镜像的offset偏移地址,Linux dd命令根据步offset偏移地址,将每个分区的img镜像文件拷贝到烧录文件的对应起始位置,得到最终的eMMC烧录文件。从而使得本发明直接通过编译Android系统之后可以利用脚本自动生成eMMC烧录文件,不需要硬件平台,相比传统方式需要搭建硬件平台和U盘,更加稳定、低成本。
在一个实施例中,上述处理器在使用Linux dd命令根据所述offset偏移地址,将每个分区的img镜像文件拷贝到所述初始eMMC烧录文件的对应起始位置,得到最终的eMMC烧录文件之后,还包括:S6、计算最终的eMMC烧录文件的CRC校验值,将最终的eMMC烧录文件压缩并将CRC校验值加到压缩后的eMMC烧录文件命名中,形成烧录器校验文件。
在一个实施例中,上述处理器在脚本获取每个分区的img镜像文件的分区大小size,并根据分区大小size计算每个分区的img镜像在烧录文件中的offset偏移地址,包括S31、读取Boardconfig.mk里面各个分区大小的数据,得出size的数据。S32、根据分区大小和分区的顺序计算得出offset的数据,并根据offset的数据得到offset偏移地址;其中,所述分区的顺序通过分区挂载配置文件fstab得到。
在一个实施例中,上述处理器读取Boardconfig.mk里面各个分区大小的数据,得出size的数据的步骤,包括:修改Boardconfig.mk里面分区镜像配置来修改分区大小size;读取Boardconfig.mk里面各个分区大小的数据,得出size的数据。
在一个实施例中,上述处理器将simg格式的img镜像文件转换为raw格式的img镜像文件的步骤,包括:使用simg2img命令将simg格式的img镜像文件转换为raw格式的img镜像文件,其中,所述simg格式的img镜像文件包括vendor、system、odm、product。
在一个实施例中,上述处理器计算最终的eMMC烧录文件的CRC校验值,将最终的eMMC烧录文件压缩并将CRC校验值加到压缩后的eMMC烧录文件命名中,形成烧录器校验文件的步骤,包括:通过linux的md5sum命令计算eMMC烧录文件的md5值,将最终的eMMC烧录文件压缩并将md5值加到压缩后的eMMC烧录文件命名中,形成烧录器校验文件。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现Android eMMC烧录文件的制作方法,包括:S1、创建初始eMMC烧录文件,所述初始eMMC烧录文件为一空文件;S2、Android系统编译完成后,生成各个分区所需要的img镜像文件;S3、获取每个分区的img镜像文件的分区大小size,并根据分区大小size计算每个分区的img镜像在烧录文件中的offset偏移地址;S4、将simg格式的img镜像文件转换为raw格式的img镜像文件;S5、使用Linux dd命令根据所述offset偏移地址,将每个分区的img镜像文件拷贝到所述初始eMMC烧录文件的对应起始位置,得到最终的eMMC烧录文件。
上述计算机可读存储介质,通过在Android系统编译完成后,脚本获取每个分区的img镜像文件的分区大小size,并计算每个分区的img镜像的offset偏移地址,Linux dd命令根据步offset偏移地址,将每个分区的img镜像文件拷贝到烧录文件的对应起始位置,得到最终的eMMC烧录文件。从而使得本发明直接通过编译Android系统之后可以利用脚本自动生成eMMC烧录文件,不需要硬件平台,相比传统方式需要搭建硬件平台和U盘,更加稳定、低成本。
在一个实施例中,上述处理器在使用Linux dd命令根据所述offset偏移地址,将每个分区的img镜像文件拷贝到所述初始eMMC烧录文件的对应起始位置,得到最终的eMMC烧录文件之后,还包括:S6、计算最终的eMMC烧录文件的CRC校验值,将最终的eMMC烧录文件压缩并将CRC校验值加到压缩后的eMMC烧录文件命名中,形成烧录器校验文件。
在一个实施例中,上述处理器在脚本获取每个分区的img镜像文件的分区大小size,并根据分区大小size计算每个分区的img镜像在烧录文件中的offset偏移地址,包括S31、读取Boardconfig.mk里面各个分区大小的数据,得出size的数据。S32、根据分区大小和分区的顺序计算得出offset的数据,并根据offset的数据得到offset偏移地址;其中,所述分区的顺序通过分区挂载配置文件fstab得到。
在一个实施例中,上述处理器读取Boardconfig.mk里面各个分区大小的数据,得出size的数据的步骤,包括:修改Boardconfig.mk里面分区镜像配置来修改分区大小size;读取Boardconfig.mk里面各个分区大小的数据,得出size的数据。
在一个实施例中,上述处理器使用脚本将simg格式的img镜像文件转换为raw格式的img镜像文件的步骤,包括:使用simg2img命令将simg格式的img镜像文件转换为raw格式的img镜像文件,其中,所述simg格式的img镜像文件包括vendor、system、odm、product。
在一个实施例中,上述处理器计算最终的eMMC烧录文件的CRC校验值,将最终的eMMC烧录文件压缩并将CRC校验值加到压缩后的eMMC烧录文件命名中,形成烧录器校验文件的步骤,包括:通过linux的md5sum命令计算eMMC烧录文件的md5值,将最终的eMMC烧录文件压缩并将md5值加到压缩后的eMMC烧录文件命名中,形成烧录器校验文件。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (9)
1.一种Android eMMC烧录文件的制作方法,其特征在于,包括以下步骤:
创建初始eMMC烧录文件,所述初始eMMC烧录文件为一空文件;
Android系统编译完成后,生成各个分区所需要的img镜像文件;
获取每个分区的img镜像文件的分区大小size,并根据分区大小size计算每个分区的img镜像在烧录文件中的offset偏移地址;
将simg格式的img镜像文件转换为raw格式的img镜像文件;
使用Linux dd命令根据所述offset偏移地址,将每个分区的img镜像文件拷贝到所述初始eMMC烧录文件的对应起始位置,得到最终的eMMC烧录文件;
所述获取每个分区的img镜像文件的分区大小size,并根据分区大小size计算每个分区的img镜像在烧录文件中的offset偏移地址的步骤,包括:
读取Boardconfig.mk里面各个分区大小的数据,得出size的数据;
根据分区大小和分区的顺序计算得出offset的数据,并根据offset的数据得到offset偏移地址;其中,所述分区的顺序通过分区挂载配置文件fstab得到;
每个分区的所述offset偏移地址通过每个分区的大小和每个分区之间的保留空间大小进行累加得到。
2.根据权利要求1所述的Android eMMC烧录文件的制作方法,其特征在于,所述使用Linux dd命令根据步骤所述offset偏移地址,将每个分区的img镜像文件拷贝到所述初始eMMC烧录文件的对应起始位置,得到最终的eMMC烧录文件的步骤之后,还包括:
计算最终的eMMC烧录文件的CRC校验值,将最终的eMMC烧录文件压缩并将CRC校验值加到压缩后的eMMC烧录文件命名中,形成烧录器校验文件。
3.根据权利要求1所述的Android eMMC烧录文件的制作方法,其特征在于,所述读取Boardconfig.mk里面各个分区大小的数据,得出size的数据的步骤,包括:
修改Boardconfig.mk里面分区镜像配置来修改分区大小size;
读取Boardconfig.mk里面各个分区大小的数据,得出size的数据。
4.根据权利要求1所述的Android eMMC烧录文件的制作方法,其特征在于,所述将simg格式的img镜像文件转换为raw格式的img镜像文件的步骤,包括:使用simg2img命令将simg格式的img镜像文件转换为raw格式的img镜像文件,其中,所述simg格式的img镜像文件包括vendor、system、odm、product。
5.根据权利要求2所述的Android eMMC烧录文件的制作方法,其特征在于,所述计算最终的eMMC烧录文件的CRC校验值,将最终的eMMC烧录文件压缩并将CRC校验值加到压缩后的eMMC烧录文件命名中,形成烧录器校验文件的步骤,包括:通过linux的md5sum命令计算eMMC烧录文件的md5值,将最终的eMMC烧录文件压缩并将md5值加到压缩后的eMMC烧录文件命名中,形成烧录器校验文件。
6.一种Android eMMC烧录文件的制作装置,用于实现权利要求1-5中任意一项所述的方法,其特征在于,包括:
创建模块,用于创建初始eMMC烧录文件,所述初始eMMC烧录文件为一空文件;
生成模块,用于Android系统编译完成后,生成各个分区所需要的img镜像文件;
计算模块,用于获取每个分区的img镜像文件的分区大小size,并根据分区大小size计算每个分区的img镜像在烧录文件中的offset偏移地址;
转换模块,用于将simg格式的img镜像文件转换为raw格式的img镜像文件;
拷贝模块,用于使用Linux dd命令根据所述offset偏移地址,将每个分区的img镜像文件拷贝到所述初始eMMC烧录文件的对应起始位置,得到最终的eMMC烧录文件。
7.根据权利要求6所述的Android eMMC烧录文件的制作装置,其特征在于,还包括:
压缩模块,用于计算最终的eMMC烧录文件的CRC校验值,将最终的eMMC烧录文件压缩并将CRC校验值加到压缩后的eMMC烧录文件命名后,形成烧录器校验文件。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011364123.5A CN112486514B (zh) | 2020-11-27 | 2020-11-27 | eMMC烧录文件的制作方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011364123.5A CN112486514B (zh) | 2020-11-27 | 2020-11-27 | eMMC烧录文件的制作方法、装置和计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112486514A CN112486514A (zh) | 2021-03-12 |
CN112486514B true CN112486514B (zh) | 2024-01-16 |
Family
ID=74936626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011364123.5A Active CN112486514B (zh) | 2020-11-27 | 2020-11-27 | eMMC烧录文件的制作方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112486514B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157282B (zh) * | 2021-03-31 | 2024-06-04 | 惠州华阳通用电子有限公司 | 一种烧录镜像文件生成方法 |
CN113741954A (zh) * | 2021-08-04 | 2021-12-03 | 深圳Tcl新技术有限公司 | 系统软件生成方法、装置、电子设备及存储介质 |
CN114217824A (zh) * | 2021-12-08 | 2022-03-22 | 航天科技控股集团股份有限公司 | 汽车仪表核心板eMMC的程序烧写方法 |
CN116737189B (zh) * | 2023-08-15 | 2023-10-27 | 中电科申泰信息科技有限公司 | 一种申威平台嵌入式系统安装镜像及其制作方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693283A (zh) * | 2012-05-07 | 2012-09-26 | 深圳市共进电子股份有限公司 | 一种嵌入式系统的数据分区存储方法及系统引导启动方法 |
CN103577211A (zh) * | 2012-08-08 | 2014-02-12 | 上海赤炫信息科技有限公司 | 一种新的Android ROM系统打包和烧录、更新方式 |
CN105511911A (zh) * | 2015-11-27 | 2016-04-20 | 青岛海信移动通信技术股份有限公司 | 系统固件升级包的生成方法及装置 |
CN106598769A (zh) * | 2016-12-15 | 2017-04-26 | 广州视源电子科技股份有限公司 | Emmc烧录文件检验的方法及装置 |
CN111158697A (zh) * | 2019-12-25 | 2020-05-15 | 惠州华阳通用电子有限公司 | 一种烧录镜像制作方法 |
CN111708541A (zh) * | 2020-06-22 | 2020-09-25 | 深圳市友华通信技术有限公司 | 镜像文件的编译方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI484337B (zh) * | 2014-01-06 | 2015-05-11 | 威盛電子股份有限公司 | 記憶體晶片與資料保護方法 |
-
2020
- 2020-11-27 CN CN202011364123.5A patent/CN112486514B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693283A (zh) * | 2012-05-07 | 2012-09-26 | 深圳市共进电子股份有限公司 | 一种嵌入式系统的数据分区存储方法及系统引导启动方法 |
CN103577211A (zh) * | 2012-08-08 | 2014-02-12 | 上海赤炫信息科技有限公司 | 一种新的Android ROM系统打包和烧录、更新方式 |
CN105511911A (zh) * | 2015-11-27 | 2016-04-20 | 青岛海信移动通信技术股份有限公司 | 系统固件升级包的生成方法及装置 |
CN106598769A (zh) * | 2016-12-15 | 2017-04-26 | 广州视源电子科技股份有限公司 | Emmc烧录文件检验的方法及装置 |
CN111158697A (zh) * | 2019-12-25 | 2020-05-15 | 惠州华阳通用电子有限公司 | 一种烧录镜像制作方法 |
CN111708541A (zh) * | 2020-06-22 | 2020-09-25 | 深圳市友华通信技术有限公司 | 镜像文件的编译方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112486514A (zh) | 2021-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112486514B (zh) | eMMC烧录文件的制作方法、装置和计算机设备 | |
WO2015070521A1 (zh) | 将ubi格式的系统文件制作成工厂烧录映像文件方法 | |
US20190243635A1 (en) | Firmware update in a storage backed memory package | |
WO2017067175A1 (zh) | 一种加载elf文件的方法、装置、设备和计算机存储介质 | |
WO2016091071A1 (zh) | 加载Linux内核驱动的方法及装置 | |
CN111263354B (zh) | 一种ota差分升级方法及装置 | |
US20130067455A1 (en) | Memory online update system and method | |
US20190317920A1 (en) | Write operation verification method and apparatus | |
CN102163155A (zh) | 存储设备的升级方法及升级控制装置 | |
JP2016501417A (ja) | リードライトメモリデバイスのデータ画像中の仮想境界コード | |
US9292429B1 (en) | Off-chip non-volatile memory access | |
WO2017000637A1 (zh) | 一种闪存烧写方法、单板、上位机及系统 | |
CN112181471A (zh) | 差分升级方法及装置、存储介质、计算机设备 | |
CN106303707A (zh) | 一种版本烧录方法、系统及终端 | |
CN110688141B (zh) | 固件更新方法 | |
US7809878B2 (en) | Apparatus and method for controlling flash memory | |
US9652416B2 (en) | Storage device for performing in-storage computing operations, method of operation the same, and system including the same | |
CN113157282B (zh) | 一种烧录镜像文件生成方法 | |
CN112181446A (zh) | 一种基于stm32的软件在线升级方法 | |
CN107977222A (zh) | 适用于eMMC的升级文件的转换、生成方法及装置 | |
US8874981B2 (en) | Method of creating target storage layout table referenced for partitioning storage space of storage device and related electronic device and machine-readable medium | |
CN113791814B (zh) | 一种Android平台上生产预置更新方法、装置、设备和介质 | |
CN109683914B (zh) | 一种flash烧录方法、上位机及烧录系统 | |
CN108958795B (zh) | 一种嵌入式系统中BootLoader代码重利用方法和开发板 | |
CN113626091A (zh) | 固态硬盘的启动优化方法、装置、计算机设备及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |