手机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. 高通平台Camera调试移植入门

    camera基本代码架构 1.上层应用和HAL层交互,高通平台在HAL层里实现自己的一套管理策略.在kenrel中实现sensor的底层驱动.最核心的sensor端的底层设置.ISP效果相关代码单独进 ...

  2. 高通LCD bring up流程

    高通LCD bring up流程 前言 kernel 添加LCD的dtsi 将屏的dtsi放到平台的dtsi中 电压配置 lk 添加屏的.h文件 Panel configuration Panel r ...

  3. android 高通平台有前途吗,华为鸿蒙计划要适配高通平台了,可以告别安卓搭载鸿蒙OS了?...

    鸿蒙走出这一步是可以想象到的,看来华为打造这个系统希望的结果是万物皆可盘呀,所以一开始就提出了开源,也就意味着这次是高通,下次就可以是联发科,甚至更多的手机品牌也完全就可以搭载!早期我们一直在说国产手 ...

  4. 高通平台android7.1系统显示旋转180度

    实现方法 内核层修改 kernel\msm-3.18\arch\arm\boot\dts\qcom\dsi-panel-lm215w-lvds-1080p-video.dtsi增加qcom,mdss- ...

  5. 高通平台modem部分mbn文件的OTA和PDC升级方法

    高通平台modem部分mbn文件的OTA和PDC升级方法 最近需要采用一种移动物联网卡,发现在apns-conf.xml增加了对应apn信息后,部分设备采用新的xml就可以支持新卡,但部分设备还不行, ...

  6. 高通平台device tree生成platform device的过程(MSM8909)

    点击打开链接 在arch/arm/kernel/setup.c中,通过customize_machine函数中的machine_desc->init_machine();来调用高通平台的mach ...

  7. 高通平台msm8909 LK 实现LCD 兼容

    前段时间小米出现红米note2 换屏门,现在我们公司也要上演了:有两个供应商提供不同IC 的LCD panel. 软件区分的办法是读取LCD IC 的ID 寄存器,下面解析高通平台LK中LCD兼容的过 ...

  8. 华为鸿蒙加快完善,替换安卓!华为鸿蒙OS生态持续扩大:或适配高通平台

    近段时间,鸿蒙OS手机版本逐渐揭开庐山真面目,不少网友已经上手体验了一段时间. 从目前大量网友的反馈来看,处于开发者公测阶段的鸿蒙OS手机版本已经大大出乎意料,整体体验已经非常完善,流畅度.动画效果等 ...

  9. matepad适配鸿蒙,消息称华为 MatePad2 搭载骁龙888 4G 华为鸿蒙OS计划适配高通平台...

    今日早些时候,代号为瓦格纳和马克思 2 的两款华为 MatePad Pro 2 系列平板电脑出现在了 Geekbench 基准测试平台数据库中,工程机跑分处于主流水准,预计配合鸿蒙系统体验更佳. 据此 ...

  10. 高通android开源代码下载,高通平台Android源码bootloader分析之sbl1(三)

    前两篇博文分析了启动流程.代码流程.cdt,接下来就分析另外几个需要格外关注的部分. ##log系统 sbl1中的log系统也是sbl1部分调试会经常接触得部分高通平台在sbl中做的log系统并不是很 ...

最新文章

  1. 快来支招~程序员怎么哄女朋友? | 每日趣闻
  2. UNIX环境编程学习笔记(6)——文件I/O之判断文件类型
  3. WCF系列(二) -- 使用配置文件构建和使用WCF服务
  4. java卡安全域_java – 在安全管理器下解析许多域后,程序内存不足?
  5. 西门子scl语言编程手册_西门子SCL编程PEEK指令讲解
  6. vue+element-ui大文件的分片上传和断点续传js-spark-md5和browser-md5-file
  7. web 前端 如何分享到instagram_好程序员web前端教程分享前端javascript练习题三
  8. OpenShift 4 Hands-on Lab (4) - 用ImageStream操作Image
  9. Ignite与Spark内存计算平台对比分析
  10. python最新技术开锁工具_Python 自动化库介绍 PySimpleGUI
  11. Mac字体安装的方法?Mac怎么安装新字体?Mac字体安装教程
  12. PHP宝塔IDC分销系统,PHP宝塔IDC分销系统,宝塔面板开虚拟主机程序–Bty1.0
  13. wincc安装信息服务器,常见WinCC安装问题及注意事项
  14. wsl2设置静态IP
  15. opencv保存视频编码方式
  16. opencv的逻辑运算bitwise详解
  17. 追踪任务期间fMRI功能连接的空间动态
  18. Stimulsoft Reports.JAVA 2022.4.3 Crack
  19. 关于javascript的调试
  20. 大众点评的大数据实践

热门文章

  1. 《Web前端工程师修炼之道(原书第4版)》——移动Web
  2. Oracle中函数/过程返回结果集的几种方式
  3. 弹出ifame页面(jquery.reveal.js)
  4. 前端是Sencha Touch+ Cordova(转)
  5. 从零开始学ios开发(三):第一个有交互的app
  6. Linux下自动备份Oracle数据库并删除指定天数前的备份
  7. 2016年最值得学习的五大开源项目
  8. 2018年AI和ML(NLP,计算机视觉,强化学习)技术概述和2019年趋势
  9. Error:java: Compilation failed: internal java compiler error 解决办法
  10. c语言程序设计及gis,C语言程序设计(西安工程大学)2020知到答案全套