高通平台手机开发之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相关推荐
- 手机MODEM 开发(14)----高通平台手机开发之Modem
高通平台手机开发之Modem 1.检查原理图,把每个频段的发送,接收通道都整理清楚形成表格. a) 一般每个频段有一个发送通路,两个接受通路(4G要求的),主天线通路和分集天线通路.rx0, rx1, ...
- 高通平台手机开发之LCD
4.1. LCD 参考文档: 1) 80-NA157-174_E_DSI_Programing_Guide_B-Family_Android_Devices.pdf 2) 80-NN766-1_A ...
- 高通平台手机开发之Sensor
点击打开链接 4.6. Sensor 高通文档 1) 80-N7635-1_E_Snapdragon_Sensors_Core_New_Sensor_Driver_Integration_LA.p ...
- 高通平台手机开发之Modem
原文地址:https://blog.csdn.net/winva/article/details/50739719 1.检查原理图,把每个频段的发送,接收通道都整理清楚形成表格. a) 一般每个频段有 ...
- 教你去除开机root字样(酷派大神F2、酷派高通平台手机)
2019独角兽企业重金招聘Python工程师标准>>> 有必要再一次强调:刷机有风险,需慎重! 首先说说酷派高通平台去除root字样的方法: 给酷派手机刷过机的朋友是 ...
- 高通平台手机运行opencl
最近有个小米的K30 5G手机不用了,解锁BL后,root, 用来测试opencl ,芯片是骁龙765G. 1 首先 从高通平台下载 opencl-sdk, 我下载的是opencl-sdk-1.4.2 ...
- 高通平台手机开发之充电
4.4. 充电 高通文档 1) 80-NL239-4_F_PMIC_SW_Driver_Overview_MSM8916.pdf 在手机能够充电以后,需要把向电池厂商要电池曲线,然后集成到dts里. ...
- 高通平台环境搭建,编译,系统引导流程分析 .
1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通开发板上烧录文件系统 建立高通平台开发环境 高通平台,android和 modem 编译流程分析 高通平台 7620 启动流 ...
- 开机动画适配方案_高通平台刷机包定制方案适配-ROM定制开发入门到精通
高通平台刷机包定制方案适配-ROM定制开发入门到精通 根据新老平台,高通平台线刷包至少要这样几个基本文件,但不一定全部都需要: 8x10_msimage.mbn----平台镜像,是个完整的磁盘,就是s ...
最新文章
- 虚幻引擎5(UE5)实时VFX游戏特效制作入门到精通
- Css Font 详细研究
- 如何使用Spring优雅地处理REST异常?
- 记录:通过SSH远程连接Ubuntu
- java隐藏与覆盖_java中方法的隐藏和覆盖问题?
- zabbix磁盘的自动发现与磁盘指标监控
- oracle ebs wsh picking batch,ebs 11i 订单相关表结构学习及销售到出仓所经历的表
- eclipse 快捷键
- 随想录(内存屏障示例代码)
- Linux之shell编程基础
- LuaForUnity10:框架配置与AssetBundle
- java读取欧姆龙plc,寄存器读取命令响应超时 欧姆龙plc寄存器读取命
- 骚操作!快速创建JSON数据和解析JSON数据
- windows云服务器,如何使用windows云服务器
- rsync 远程同步
- Cocos2dx游戏开发系列笔记5:继续润色《忍者飞镖射幽灵》(VS2013快捷键)
- unraid虚拟linux系统,unRAID Linux环境下自作启动U盘
- 30 道 Vue 面试题,内含详细讲解(涵盖入门到精通,自测 Vue 掌握程度)
- 教小白使用Vmware安装苹果虚拟机
- C语言 输入一个字符,并判断这个字符属于哪一类字符