高通平台Bring-up
手机Bring-up
3.1. Linux 部分编译
高通的代码分两部分:一部分是开源的,可以从codeaurora.org上下载,还有一部分是高通产权的,需要从高通的网站上下载。
将高通产权的代码放到:vendor/qcom/proprietary。
编译对应的目标:
sourcebuild/envsetup.shsourcebuild/envsetup.sh lunch msm8974-userdebug
$ make -j4
编译出来的有以下几个目标文件:
Boot.img emmc_appsboot.mbn system.img userdata.img
3.2. AMSS 部分编译
主要由以下部分构成:
Adsp, boot, debug, modem, rpm, trustzone, wcnss,分别根据高通的说明编译这些模块,不过其中有些模块我们不会改,直接用release的binary文件就行,比如:debug,rpm,trustzone,wcnss。
3.3. 打包成可刷写文件
高通没有提供一个完整的制作可刷写包的工具,我自己写了一个。
核心思想是执行:common/build/update_common_info.py生成NON-HLOS.bin和把system.img,userdata.img等大包分成小包,以及生成分区表。
pack.sh封装了update_common_info.py,能够生成一个完整的可刷写包。
3.4. 刷机
使用高通提供的工具Qfil将代码刷入手机。
3.4.1. 使手机进入Emergency Download模式
如果手机里没有任何软件,手机默认进入Emergency Download。如果没有进入,需要短接一个特定的GPIO。硬件上设计好了一个测试点,把这个点接地,然后把连接手机的USB线插入到电脑,电脑上会出现驱动安装提示,安装好驱动后,会出现一个下载端口。
3.4.2. 刷机过程
刷机完成后,自动重启。
如果手机不能进入刷机模式,需要和硬件一起检查是USB的问题,还是别的电路问题。
3.4.3. fastboot 刷机
如果手机里面已经有分区表,可以通过fastboot来分别刷入不同的模块:boot.img system.img userdata.img
fastboot flash boot boot.img
3.5. 开机测试
这是最为关键的一部,需要根据Log来定位问题。
一般可以通过串口和Jtag工具来调试,对于基于Linux的智能手机来说,一般用串口工具来调试已经足够了。
串口Log能够打出从sbl1, lk到kernel的Log,看看到底问题出在什么地方?
下面是需要注意的:
➢ 修改硬件board_id
Boot_images/core/boot/secboot3/hw/msm8974/boot_cdt_array.c
uint8 config_data_table[CONFIG_DATA_TABLE_MAX_SIZE] =
{
/* Header */
0x43, 0x44, 0x54, 0x00,
0x01, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
/* Meta data */
0x16, 0x00,
0x05, 0x00,
0x1B, 0x00,
0x88, 0x01,
/* Block data */
#ifdef BOOT_PRE_SILICON
#ifdef FEATURE_RUMI_BOOT
0x02, 0x0F, 0x01, 0x00, 0x00,
#else
0x02, 0x10, 0x01, 0x00, 0x00,
#endif
#else
- 0x02, 0x00, 0x01, 0x00, 0x00,
+ 0x02, 0x08, 0x01, 0x00, 0x00,
#endif
修改sbl1里的board_id,与dts里的匹配
/ {
model = “Qualcomm MSM 8974Pro-AA/AB MTP”;
compatible = “qcom,msm8974-mtp”, “qcom,msm8974”, “qcom,mtp”;
qcom,board-id = <8 0>;
};
➢ DDR参数
手机能进如Kernel,但是做Kernel里会死,从Log上看,bitflip或者相关的问题。在这种情况下,需要修改DDR参数。
从芯片厂商获取数据手册,根据高通的说明来改动,改动后的数据放在
Boot_images/core/boot/secboot3/hw/msm8974/boot_cdt_array.c
uint8 config_data_table[CONFIG_DATA_TABLE_MAX_SIZE] =
{
/* Block data */
}
➢ 只编译对应的dts
高通的代码编译时,把一大堆的dts都生成了,放在一起,这样对我们的系统开发会造成不利影响。系统启动时调用的dts不是我们所希望的,所以需要改动build系统,只编译相关dts。
Kernel/AndroidKernel.mk
-DTS_FILES = $(wildcard $(TOP)/kernel/arch/arm/boot/dts/$(DTS_NAME)*.dts)
+DTS_FILES = $(wildcard $(TOP)/kernel/arch/arm/boot/dts/$(DTS_NAME)*$(OEM_PROJECT_NAME).dts)
Kernel/arch/arm/mach-msm/Makefile.boot
+ dtb-$(CONFIG_ARCH_MSM8974) += msm8974pro-ac-pm8941-$(OEM_PROJECT_NAME).dtb
➢ ADB log
如果前面的问题都解决了,手机能进入Kernel,就可以用ADB log了。
$ adb shell cat /proc/kmsg |tee log.txt
3.6. 调试好LCD和TP驱动
具体的调试见4.1和4.2。
LCD,TP功能正常,手机能进入Idle界面,能正常使用,USB连接正常。这样Bring-up工作就基本完成了。
高通平台Bring-up相关推荐
- 高通平台Camera调试移植入门
camera基本代码架构 1.上层应用和HAL层交互,高通平台在HAL层里实现自己的一套管理策略.在kenrel中实现sensor的底层驱动.最核心的sensor端的底层设置.ISP效果相关代码单独进 ...
- 高通LCD bring up流程
高通LCD bring up流程 前言 kernel 添加LCD的dtsi 将屏的dtsi放到平台的dtsi中 电压配置 lk 添加屏的.h文件 Panel configuration Panel r ...
- android 高通平台有前途吗,华为鸿蒙计划要适配高通平台了,可以告别安卓搭载鸿蒙OS了?...
鸿蒙走出这一步是可以想象到的,看来华为打造这个系统希望的结果是万物皆可盘呀,所以一开始就提出了开源,也就意味着这次是高通,下次就可以是联发科,甚至更多的手机品牌也完全就可以搭载!早期我们一直在说国产手 ...
- 高通平台android7.1系统显示旋转180度
实现方法 内核层修改 kernel\msm-3.18\arch\arm\boot\dts\qcom\dsi-panel-lm215w-lvds-1080p-video.dtsi增加qcom,mdss- ...
- 高通平台modem部分mbn文件的OTA和PDC升级方法
高通平台modem部分mbn文件的OTA和PDC升级方法 最近需要采用一种移动物联网卡,发现在apns-conf.xml增加了对应apn信息后,部分设备采用新的xml就可以支持新卡,但部分设备还不行, ...
- 高通平台device tree生成platform device的过程(MSM8909)
点击打开链接 在arch/arm/kernel/setup.c中,通过customize_machine函数中的machine_desc->init_machine();来调用高通平台的mach ...
- 高通平台msm8909 LK 实现LCD 兼容
前段时间小米出现红米note2 换屏门,现在我们公司也要上演了:有两个供应商提供不同IC 的LCD panel. 软件区分的办法是读取LCD IC 的ID 寄存器,下面解析高通平台LK中LCD兼容的过 ...
- 华为鸿蒙加快完善,替换安卓!华为鸿蒙OS生态持续扩大:或适配高通平台
近段时间,鸿蒙OS手机版本逐渐揭开庐山真面目,不少网友已经上手体验了一段时间. 从目前大量网友的反馈来看,处于开发者公测阶段的鸿蒙OS手机版本已经大大出乎意料,整体体验已经非常完善,流畅度.动画效果等 ...
- matepad适配鸿蒙,消息称华为 MatePad2 搭载骁龙888 4G 华为鸿蒙OS计划适配高通平台...
今日早些时候,代号为瓦格纳和马克思 2 的两款华为 MatePad Pro 2 系列平板电脑出现在了 Geekbench 基准测试平台数据库中,工程机跑分处于主流水准,预计配合鸿蒙系统体验更佳. 据此 ...
- 高通android开源代码下载,高通平台Android源码bootloader分析之sbl1(三)
前两篇博文分析了启动流程.代码流程.cdt,接下来就分析另外几个需要格外关注的部分. ##log系统 sbl1中的log系统也是sbl1部分调试会经常接触得部分高通平台在sbl中做的log系统并不是很 ...
最新文章
- 快来支招~程序员怎么哄女朋友? | 每日趣闻
- UNIX环境编程学习笔记(6)——文件I/O之判断文件类型
- WCF系列(二) -- 使用配置文件构建和使用WCF服务
- java卡安全域_java – 在安全管理器下解析许多域后,程序内存不足?
- 西门子scl语言编程手册_西门子SCL编程PEEK指令讲解
- vue+element-ui大文件的分片上传和断点续传js-spark-md5和browser-md5-file
- web 前端 如何分享到instagram_好程序员web前端教程分享前端javascript练习题三
- OpenShift 4 Hands-on Lab (4) - 用ImageStream操作Image
- Ignite与Spark内存计算平台对比分析
- python最新技术开锁工具_Python 自动化库介绍 PySimpleGUI
- Mac字体安装的方法?Mac怎么安装新字体?Mac字体安装教程
- PHP宝塔IDC分销系统,PHP宝塔IDC分销系统,宝塔面板开虚拟主机程序–Bty1.0
- wincc安装信息服务器,常见WinCC安装问题及注意事项
- wsl2设置静态IP
- opencv保存视频编码方式
- opencv的逻辑运算bitwise详解
- 追踪任务期间fMRI功能连接的空间动态
- Stimulsoft Reports.JAVA 2022.4.3 Crack
- 关于javascript的调试
- 大众点评的大数据实践
热门文章
- 《Web前端工程师修炼之道(原书第4版)》——移动Web
- Oracle中函数/过程返回结果集的几种方式
- 弹出ifame页面(jquery.reveal.js)
- 前端是Sencha Touch+ Cordova(转)
- 从零开始学ios开发(三):第一个有交互的app
- Linux下自动备份Oracle数据库并删除指定天数前的备份
- 2016年最值得学习的五大开源项目
- 2018年AI和ML(NLP,计算机视觉,强化学习)技术概述和2019年趋势
- Error:java: Compilation failed: internal java compiler error 解决办法
- c语言程序设计及gis,C语言程序设计(西安工程大学)2020知到答案全套