1. 程式人生 > >高通開發-升級包製作

高通開發-升級包製作

專案立項後,需要貼片,那麼當然需要軟體提供刷機升級包。一般第一次貼片,都會用預設程式碼生成的映象製作升級包。

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映象