高通sdm845_la2.0源码编译及使用QFIL刷机
一、下载源码
高通芯片代码下载地址:https://chipcode.qti.qualcomm.com/
. *_amss_standard_oem : 高通私有源码(*为sdm845-la--0缩略,分支版本:CS2.16 0.0.137.1a)
2. *_cam_core : 所含camx部分代码
. *_test_device : 高通编译 amss_standard_oem 的二进制文件
. CAF : 高通对应的谷歌源码
二、编译源码:
1.将高通私有部分源码拷贝到谷歌源码(caf)对应目录下:
cp -rf amss_standard_oem/LINUX/android/vendor/qcom/proprietary caf/vendor/qcom/
2.拷贝camx部分代码到对应目录下:
cp -rf cam_core/LINUX/android/vendor/qcom/proprietary/camx caf/vendor/qcom/proprietary/
3.进入caf目录,配置编译:
source build/envsetup.sh
lunch sdm845-userdebug
make -j32
编译成功后会在caf/out/target/product/sdm845目录下生成相关img和其他文件,如图:

三、meta_build & QFIL刷机:
1.参考test_device的contents.xml内容拷贝caf部分文件到test_device\LINUX\android目录下(如果嫌麻烦就整个out目录cp过来或者mv过来更快),
在contents.xml里搜索"LINUX"和"ignore"关键字,从搜索结果中获知需要将哪些文件从caf拷贝到test_device对应目录下,
注意:<ignore="true"> 代表可忽略,不用拷贝:

如下:

2.拷贝caf的vendor到test_device\LINUX\android对应目录下;

3.进入sdm845-la-2-0_test_device/common/build目录下执行python build.py脚本,生成meta_build刷机文件:

4.将845mtp设备上的 S4-1 键拨到 on,重新上电进入EDL mode;
或者通过指令进入9008(edl)模式:
()ADB模式:
$ adb reboot edl ()FASTBOOT模式:
$ fastboot oem edl
or
$ fastboot reboot emergency
5.QFIL配置如下:

线刷前,最好双清一下设备,adb reboot bootloader后,选择进入到recovery mode,再选择wipe data/factory reset,
也可以线刷时选择Erase all Before Download
6.上电,并接数据线到电脑,QFIL工作可以检测到端口:

如果无法自动检测到端口,点击 Select Port .
主界面 选择Meta build,然后选择content xml,选择sdm845-la-2-0_test_device目录下的contents.xml即可,随即自动加载 Programmer Path、 RawProgram 和 Patch。
选择所需 Product Flavors,也可通过点击 Browse 选择不同程序。

Ps: 如果Download没有跳出rawprogram.xml、patch0.xml,可以试试点Tools->flat meta build, Flat Build Path选一个空文件夹。 OK之后,也是可以改成Flat build。
在部分 META 编译版本中,系统要求用户更新 CDT 二进制文件,此时 CDT config 不明确,需要选择 CDT config,之后将 CDT 与此 META 编译版本一同下载。也可以将其留空, CDT 二进制文件不会更新
。

四、flat_build & QFIL刷机:
1.flat build 需要将加载版本所需的全部文件导入同一文件夹,具体操作:Tools -> Flat Meta Build -> 选择Content XML(contents.xml) 和 Flat Build Path(自定义输出路径) -> 选择ufs或emmc -> OK 。
2.参考之前方法连接好设备,在 Select Programmer 字段中,点击 Browse 并指向 flat build 路径,然后选择 FireHose
Programmer.mbn 或 .elf 文件,例如 prog_<type>_firehose_<msm>.mbn。注:<type> – 可为 emmc 或 ufs <msm> – 对应于平台名称,例如
3.点击 Load XML 加载配置文件
a. 选择原始程序的 XML 文件: rawprogram_unsprase0.xml 并点击对话框中的 Open。
b. 选择 patch0.xml 文件并点击 Open
4. 点击 Download 开始下载。
五、UFS Provision 配置:
(1)Configuration -》FireHose Configuration:

(2)选择对应.elf 和.xml -》点击Provision ,成功则如Status框所示:

-end-
高通sdm845_la2.0源码编译及使用QFIL刷机的更多相关文章
- hadoop-1.2.0源码编译
以下为在CentOS-6.4下hadoop-1.2.0源码编译步骤. 1. 安装并且配置ant 下载ant,将ant目录下的bin文件夹加入到PATH变量中. 2. 安装git,安装autoconf, ...
- hadoop-2.6.0源码编译问题汇总
在上一篇文章中,介绍了hadoop-2.6.0源码编译的一般流程,因个人计算机环境的不同, 编译过程中难免会出现一些错误,下面是我编译过程中遇到的错误. 列举出来并附上我解决此错误的方法,希望对大家有 ...
- Spark1.0.0 源码编译和部署包生成
问题导读:1.如何对Spark1.0.0源码编译?2.如何生成Spark1.0的部署包?3.如何获取包资源? Spark1.0.0的源码编译和部署包生成,其本质只有两种:Maven和SBT,只不过针对 ...
- ambari 2.5.0源码编译安装
参考:https://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari/index.html Ambari 是什么 Ambar ...
- Tomcat8.0源码编译
最近打算开始研究一下Tomcat的工作原理,拜读一下源码.所以先从编译源码开始了.尽管网上有那么多的资料,但是总是觉得,自己研究一遍,写一遍,在动手做一遍能够让我们更加深入的了解.现在整个社会都流行着 ...
- 使用Maven将Hadoop2.2.0源码编译成Eclipse项目
编译环境: OS:RHEL 6.3 x64 Maven:3.2.1 Eclipse:Juno SR2 Linux x64 libprotoc:2.5.0 JDK:1.7.0_51 x64 步骤: 1. ...
- hadoop-2.0.0-mr1-cdh4.2.0源码编译总结
准备编译hadoop-2.0.0-mr1-cdh4.2.0的同学们要谨慎了.首先看一下这篇文章: Hadoop作业提交多种方案 http://www.blogjava.net/dragonHadoop ...
- Ubantu16.04进行Android 8.0源码编译
参考这篇博客 经过测试,8.0源码下载及编译之后,占用100多G的硬盘空间,尽量给ubantu系统多留一些硬盘空间,如果后续需要在编译好的源码上进行开发,需要预留更多的控件,为了防止后续出现文件权限问 ...
- jmeter4.0 源码编译 二次开发
准备: 1.jmeter4.0源码 - apache-jmeter-4.0_src.zip 2.IDE Eclipse - Oxygen.3 Release (4.7.3) 3.JDK - 1.8.0 ...
随机推荐
- 王之泰201771010131《面向对象程序设计(java)》第十三周学习总结
第一部分:理论知识学习部分 第11章 事件处理 11.1 事件处理基础 a)事件源(event source):能够产生事件的对象都可 以成为事件源,如文本框.按钮等.一个事件源是一个 能够注册监听 ...
- 每天一套题打卡|河南省第十一届ACM/ICPC
A 计划日 题意:已知李明在YYYY年MM月DD日星期W订了学习计划,现在想看看李明N天后的完成情况和个人总结,你能告诉我那天的日期和星期几吗? 模拟日期计算: 计算星期可以用基姆拉尔森公式 //中国 ...
- 3、Docker镜像管理基础
Docker image # docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE redis -alpine 23d561d12e92 d ...
- 读书笔记--《编写高质量代码:改善Python程序的91个建议》
第一章 引论 建议写Pythonic式的代码,我理解为充分利用pythonAPI,用最简洁方式写出代码 1.两个变量交换: a, b = b, a 2.翻转list: a = [1, 2, 3, ...
- Java核心知识盘点(一)- 数据存储
MySQL 索引使用的注意事项 1.索引的目的:在于提高查询效率,插入和更新的操作,数据库的操作是慢的,但是查询操作会非常快,索引可以对表中一个或多个字段进行加索引动作. 2.索引的类型: 1.唯一索 ...
- python 在字典中添加键值对的方法。
list 添加元素的方法是 list.append(a).将 a 添加到 list 里. dict 添加元素的方法是 dict.update(dict2).意为,将 dict2 的内容添加到 di ...
- 两两交换链表中的节点(java实现)
题目: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2->3->4, 你应该返回 ...
- Unity --- 设置选择的图片的格式
static void Setting(string assetPath, int maxSize, TextureImporterFormat androidFormat, TextureImpor ...
- python之做一个简易的翻译器(一)
平时经常在网上翻译一些单词,突发奇想,可不可以直接调某些免费翻译网站的接口呢?然后做一个图形界面的翻译小工具?下面开始实践 1.先找一下有哪些免费翻译的接口 百度了一下关键字“免费翻译接口”,然后找到 ...
- 虚拟机中安装Linux系统
本教程的运行环境:Windows 10 , 虚拟机 VirtualBox,Ubuntu 16.04 1.准备 下载 VirtualBox 下载OVA镜像64位 http://releases.ubun ...