项目立项后,需要贴片,那么当然需要软件提供刷机升级包。一般第一次贴片,都会用默认代码生成的镜像制作升级包。
1.contents.xml
该文件在私有代码的根目录下,该文档主要定义了升级包中镜像的名字、路径以及相关的打包工具。注意contents.xml的选择与你编译Modem的指令要一致,不然会出现问题。在common/build/目录下,有不同后缀的contents.xml,你需要把对应的xml复制到根目录下,并改名为contents.xml。
2.common目录
这个目录中,主设计到打包,制作升级包,分区表等相关的内容。
common/config/下有,partition.xml 主要是分区信息,如需增加分区,如定制分区,需要在这里增加新的分区。
rawprogram0.xml,这个是由partition.xml生成的,用于刷机时选择分区表,与patch0.xml配合使用。
update_common.py这个文件在不同的代码下,可能名字不一样,主要用来生成升级包的。
3.镜像的说明
这里主要分析contents.xml的文件。
重要的刷写文件生成:
<step type="exec">
<exec_dir>./</exec_dir>
<params>python @tool_name -x ./../config/partition.xml</params>
<tool_name>ptool.py</tool_name>
</step>
这里主要是生成下面的文件:
gpt_backup0.bin
gpt_both0.bin
gpt_main0.bin
patch0.xml
rawprogram0.xml
<step filter="hlos" type="exec">
<exec_dir>./bin/$[flavor:.]/sparse_images</exec_dir>
<params>python @tool_name -i @rawprogram_xml -s @root_dir + @sparse_dir -o rawprogram_unsparse.xml</params>
<tool_name>checksparse.py</tool_name>
<root_dir>$[build:apps]</root_dir>
<sparse_dir>LINUX/android/out/target/product/msm8937_64/</sparse_dir>
<rawprogram_xml>./../../../rawprogram0.xml</rawprogram_xml>
</step>
这里是根据android生成的img,拆分成适合刷写的格式,大小。
<file_ref symbol="modem" minimized="true">
<file_name>M89378937.genns.prodQ*.elf</file_name>
<file_path>modem_proc/build/ms/</file_path>
</file_ref>
如需要dump分析modem时,这个就是需要的elf文件,kernel对于下面的文件
<download_file cmm_file_var="APPS_ELF" minimized="true">
<file_name>vmlinux</file_name>
<file_path>LINUX/android/out/target/product/msm8937_64/obj/KERNEL_OBJ/</file_path>
</download_file>
控制qfile或者qmsct的刷写,主要是由boot代码编译而成,生成的一部分为控制烧录的,一部分为boot,img,看下面代码
<device_programmer minimized="true">
<file_name>prog_emmc_firehose_8917_ddr.mbn</file_name>
<file_path>boot_images/build/ms/bin/LAADANAZ/</file_path>
</device_programmer>
<device_programmer_lite minimized="true">
<file_name>prog_emmc_firehose_8917_lite.mbn</file_name>
<file_path>boot_images/build/ms/bin/LAADANAZ/</file_path>
</device_programmer_lite>
//上面两个文件任选一个,一个是需要ddr才能刷写,一个直接从emmc拿镜像刷写
<download_file cmm_file_var="BOOT_BINARY" fastboot_complete="true" minimized="true">
<file_name>sbl1.mbn</file_name>
<file_path>boot_images/build/ms/bin/LAASANAZ/</file_path>
//boot镜像