原址

手机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相关推荐

  1. 手机MODEM 开发(14)----高通平台手机开发之Modem

    高通平台手机开发之Modem 1.检查原理图,把每个频段的发送,接收通道都整理清楚形成表格. a) 一般每个频段有一个发送通路,两个接受通路(4G要求的),主天线通路和分集天线通路.rx0, rx1, ...

  2. 高通平台手机开发之LCD

    4.1. LCD  参考文档:  1) 80-NA157-174_E_DSI_Programing_Guide_B-Family_Android_Devices.pdf 2) 80-NN766-1_A ...

  3. 高通平台手机开发之Sensor

    点击打开链接 4.6. Sensor  高通文档  1) 80-N7635-1_E_Snapdragon_Sensors_Core_New_Sensor_Driver_Integration_LA.p ...

  4. 高通平台手机开发之Modem

    原文地址:https://blog.csdn.net/winva/article/details/50739719 1.检查原理图,把每个频段的发送,接收通道都整理清楚形成表格. a) 一般每个频段有 ...

  5. 教你去除开机root字样(酷派大神F2、酷派高通平台手机)

    2019独角兽企业重金招聘Python工程师标准>>> 有必要再一次强调:刷机有风险,需慎重! 首先说说酷派高通平台去除root字样的方法:         给酷派手机刷过机的朋友是 ...

  6. 高通平台手机运行opencl

    最近有个小米的K30 5G手机不用了,解锁BL后,root, 用来测试opencl ,芯片是骁龙765G. 1 首先 从高通平台下载 opencl-sdk, 我下载的是opencl-sdk-1.4.2 ...

  7. 高通平台手机开发之充电

    4.4. 充电 高通文档 1) 80-NL239-4_F_PMIC_SW_Driver_Overview_MSM8916.pdf 在手机能够充电以后,需要把向电池厂商要电池曲线,然后集成到dts里. ...

  8. 高通平台环境搭建,编译,系统引导流程分析 .

    1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通开发板上烧录文件系统 建立高通平台开发环境 高通平台,android和 modem 编译流程分析 高通平台 7620 启动流 ...

  9. 开机动画适配方案_高通平台刷机包定制方案适配-ROM定制开发入门到精通

    高通平台刷机包定制方案适配-ROM定制开发入门到精通 根据新老平台,高通平台线刷包至少要这样几个基本文件,但不一定全部都需要: 8x10_msimage.mbn----平台镜像,是个完整的磁盘,就是s ...

最新文章

  1. 虚幻引擎5(UE5)实时VFX游戏特效制作入门到精通
  2. Css Font 详细研究
  3. 如何使用Spring优雅地处理REST异常?
  4. 记录:通过SSH远程连接Ubuntu
  5. java隐藏与覆盖_java中方法的隐藏和覆盖问题?
  6. zabbix磁盘的自动发现与磁盘指标监控
  7. oracle ebs wsh picking batch,ebs 11i 订单相关表结构学习及销售到出仓所经历的表
  8. eclipse 快捷键
  9. 随想录(内存屏障示例代码)
  10. Linux之shell编程基础
  11. LuaForUnity10:框架配置与AssetBundle
  12. java读取欧姆龙plc,寄存器读取命令响应超时 欧姆龙plc寄存器读取命
  13. 骚操作!快速创建JSON数据和解析JSON数据
  14. windows云服务器,如何使用windows云服务器
  15. rsync 远程同步
  16. Cocos2dx游戏开发系列笔记5:继续润色《忍者飞镖射幽灵》(VS2013快捷键)
  17. unraid虚拟linux系统,unRAID Linux环境下自作启动U盘
  18. 30 道 Vue 面试题,内含详细讲解(涵盖入门到精通,自测 Vue 掌握程度)
  19. 教小白使用Vmware安装苹果虚拟机
  20. C语言 输入一个字符,并判断这个字符属于哪一类字符

热门文章

  1. 老旧小区安防升级改造有机遇也有难度
  2. Linux内存管理--基本概念【转】
  3. Spring帖子汇总
  4. IT也要健康:帮助你保持健康的几个重要因素
  5. oracle学习总结一(基础)
  6. 乳化液稳定剂php,乳化液稳定剂PHP对小于0.1mm煤泥浮选的影响
  7. python输入文字字符串、如何提取字符_如何使用python从字符串中提取url?
  8. 北邮 复习 软件工程_软件工程专业考研——上交、北邮、南大对比分析
  9. stm32呼吸灯程序_STM32裸机开发基础篇02点亮LED
  10. 使用android日志工具