高通平台点亮LCD个人总结
高通平台LCD模块大致分为两部分:KERNEL和LK。在进行点屏之前,应该认真查看LCD原理图,弄清楚LCD亮屏需要满足的条件和上电时序,同时可以跟LCD IC原厂拿到初始化代码。
首先点亮KERNEL。
在点亮KERNEL之前,先进入bootable/bootloader/lk/target/msm****/rules.mk文件,将DEFINES += DISPLAY_SPLASH_SCREEN=1置0,disable掉LK中的显示。然后正式进入内核开始点亮LCD。对于一个新的项目,建议先进入msm****-mtp.dtsi或者msm****-mdss.dtsi文件,找到它include的相应的屏配置文件,因为这个是平台默认使用的LCD,我们可以借鉴它来实现点亮屏。我这里项目中默认使用的是#include "dsi-panel-sharp-dualmipi0-wqxga-video.dtsi",而我需要点亮的是信利CMD屏,于是复制dsi-panel-sharp-dualmipi0-wqxga-video.dtsi并重命名为dsi-panel-truly-dualmipi0-wqxga-cmd.dtsi,因为是双DSI,所以需要重命名两个dtsi文件。进入重命名后的dsi-panel-truly-dualmipi0-wqxga-cmd.dtsi文件,将sharp修改为truly,将video修改为cmd,将“qcom,mdss-dsi-panel-width” 和“qcom,mdss-dsi-panel-height” 修改成相应的分辨率(其他比如hfp属性可以先不修改),将屏初始化代码写入“qcom,mdss-dsi-on-command”,同时大致浏览一下其他属性值,比如broadcast,如果双dsi使用的只有一个IC,那么这个属性必须去掉,否则会导致系统进入Android动画之后,机器挂掉。具体去掉方法是在dualmipi0中删除“qcom,cmd-sync-wait-broadcast”,在dualmipi1中删除“qcom,cmd-sync-wait-broadcast”和“qcom,cmd-sync-wait-trigger”。当然这个还是不会影响LCD的显示的。接着进入msm****-mtp.dtsi文件,将屏的dtsi文件include进来,比如#include "dsi-panel-truly-dualmipi0-wqxga-cmd.dtsi"和#include "dsi-panel-truly-dualmipi1-wqxga-cmd.dtsi",然后将DSI设置成主要接口,即qcom,mdss-pref-prim-intf = "dsi",再设置PANEL NODE,即qcom,dsi-pref-prim-pan = <&dsi_dual_truly_cmd_0>和qcom,dsi-pref-prim-pan = <&dsi_dual_truly_cmd_1>,注意的是这个值需要和屏dtsi文件里面的值保持一致。然后再添加&dsi_dual_truly_cmd_0相关代码,注意由于LK中disable掉显示的,这里面的qcom,cont-splash-enabled也应该disabled掉。接下来就需要根据原理图来设置LCD和背光的各路电压了,一般系统默认是有添加Reset的gpio口的,找到qcom,platform-reset-gpio的位置,仿照添加其他gpio口,比如lcd_reg_en供电1.8v,tps的正负5V,背光的使能口等等。这个时候注意各GPIO口的分类,PMU端和CPU端的GPIO口配置是不一样的。到此dtsi文件就处理完毕了,接下来进入MDSS文件夹下,打开mdss_dsi.c文件,还是仿照Reset口,获取其他gpio相应的属性节点,同时在mdss_dsi.h中声明。然后进入mdss_dsi_panel.c文件,在mdss_dsi_request_gpios中模仿Reset口申请其余gpio口,接下来就是重中之中的复位函数mdss_dsi_panel_reset了,这里面一定要根据上电时序来设置各路gpio口的高低电平的有效值以及下电时关闭各路电压。
到此理论上来说,KERNEL应该可以点亮了。接下来介绍下LK的点亮,记得先将将DEFINES += DISPLAY_SPLASH_SCREEN=1,再将qcom,cont-splash-enabled。
在bootable\bootloader\lk\dev\gcdb\display\include目录下,复制panel_sharp_wqxga_dualdsi_video.h并重命名panel_truly_wqxga_dualdsi_cmd.h,进入文件将sharp改为truly,video改为cmd,这里需要注意几点,一是结构体panel_config中的panel_node_id,需要跟dtsi中的名称保持一致;二是panel_config中的panel_type,video是MIPI_VIDEO_PANEL(0),cmd是MIPI_CMD_PANEL(1);三是初始化代码,小于或等于2个参数的,数据占一行,参数写在前面,datatype写在后面,dtsi里面datatype是29的且只有2个数值的,在LK里面如果只写成一行,则datatype写成23,写成二行就用29,并补0xff;大于2个参数的,第一行第一个数和第二个数之和是数值的个数(第2个一般是0x00),后面两个是datatype,第二行开始写数值,结尾一行不足4个的填写0xff. (23,15,05对应80,29和39对应c0).四是在结构体mipi_dsi_cmd中,第一个参数是相应数组的总个数,包括填充的oxff在内,同时初始化命令的个数一定要修改正确,否则会导致屏不亮。在点亮LK时,建议打开命令发送完成的打印信息mipi_dsi.c--》mdss_dual_dsi_cmd_dma_trigger_for_panel--》dprintf(INFO, "Panel CMD: command mode dma tested successfully\n");有多少条命令发送成功,就有多少个successfully打印的信息。然后将此panel_truly_wqxga_dualdsi_cmd.h文件include进oem_panel.c文件,然后仿照参考的panel_sharp_wqxga_dualdsi_video.h文件对应的SHARP_WQXGA_DUALDSI_VIDEO_PANEL添加相应的truly代码,主要是oem_panel_select和init_panel_data两个函数,添加case TRULY_WQXGA_DUALDSI_CMD_PANEL和修改panel_id;接下来就是在display.h中仿照Reset添加各路gpio口,等同于内核中mtp文件中的添加gpio口代码。最后就是target_display.c文件中的target_panel_reset复位函数,还是仿照Reset的配置和电平设置,来配置和设置其他各路GPIO相应的高低电平,注意gpio口的分类即可,这个和内核中的复位有点类似,只是LK和KERNEL中使用的函数可能有差异。
此致,点亮LCD的相关代码已经完成,这个时候LK和KERNEL应该都已经可以点亮了,如果不行,连接串口查看打印信息,解决跟LCD相关的异常信息;将各路GPIO口飞线测量各路电压是否正常;使用示波器测试reset时序是否正常。
当然,首先需要观察的就是背光是否起来,如果背光不亮,也可以先使背光常亮,来排除其他的问题。
高通平台点亮LCD个人总结的更多相关文章
- Android高通平台调试Camera驱动全纪录
项目比较紧,3周内把一个带有外置ISP,MIPI数据通信,800万像素的camera从无驱动到实现客户全部需求. 1日 搭平台,建环境,编译内核,烧写代码. 我是一直在Window下搭个虚拟机登服务器 ...
- 高通平台启动log概述(PBL log、sbl1 log、kernel log)【转】
本文转自:https://blog.csdn.net/RadianceBlau/article/details/78416776?utm_source=blogxgwz9 高通平台启动log概述(PB ...
- 高通平台手机开发之LCD
4.1. LCD 参考文档: 1) 80-NA157-174_E_DSI_Programing_Guide_B-Family_Android_Devices.pdf 2) 80-NN766-1_A_L ...
- 高通平台读写nv总结
一,引言 1. 什么是NV 高通平台的NV,保存了系统运行过程中各个模块可能用到的一些参数值,它是以单个文件的形式保存在EFS中,但用户是不能随意访问的,只能通过QXDM来进行读 ...
- 高通平台读写nv总结【转】
本文转载自:https://blog.csdn.net/suofeng12345/article/details/52713993 一,引言 1. 什么是NV 高通平台的NV,保 ...
- 高通平台如何避免误入FFBM模式
前面两篇博客分别介绍了通过fastboot和QFIL工具退出FFBM模式的方法.虽然售后的同学可以这么指导用户做恢复,但步骤多操作也麻烦,且属于事后处理,如果大面积高概率地出现,会严重影响用户体验.这 ...
- 高通平台获取secure boot,串号等状态
adb shell下 运行./system/bin/r address 其中address对应各个flag参数的地址,具体如下: 无法打开/dev/mem节点(没有该节点),这时只需在内核配置中选上C ...
- 高通平台如何使用QPST抓DUMP
一 :确认手机状态 手机系统死机白屏后,使用USB线 连接手机和计算机.打开计算机设备管理器 ,当其中与手机相关的端口只有DIAG 口 项(9006端口)时,表明手机处于DUMP 模式,可以抓DUMP ...
- 【shell】分享高通平台刷版本简单的一个shell脚本
#!/bin/shadb wait-for-deviceadb reboot bootloaderecho "start download"wait 5sudo fastboot ...
随机推荐
- paper 68 :MATLAB中取整函数(fix, floor, ceil, round)的使用
MATLAB取整函数 1)fix(x) : 截尾取整. >> fix( [3.12 -3.12]) ans = 3 -3 (2)floor(x):不超过x 的最大整数.(高 ...
- 夺命雷公狗---node.js---16之项目的构建在node+express+mongo的博客项目1
废话不多说我们直接开工... 直接在目录下打开黑窗口: 然后就开始看看我们创建出来的文件了: 然后就开始创建项目下的目录了: 从这里就可以清晰的看得到我们的目录都是以前后台来分离开来的,引入模版也很简 ...
- php 环境的搭建
---恢复内容开始--- 在win7下配置 PHP + Apache + Mysql 环境 1. 准备环境 php: php-5.3.2-Win32-VC6-x86.VC9是专门为IIS定制的,VC6 ...
- 关于陈冰、陈良乔以及《我的第一本C++书》【转】
出处:如何在淘宝上卖出 600 本自己写的 C++ 入门书? 陈冰:<我的第一本C++书> 策划编辑,现为图灵公司副总编,<C程序设计伴侣>策划编辑 陈良乔:<我的第一本 ...
- Job类
当我们在写MapReduce程序的时候,通常,在main函数里,我们会像下面这样做.建立一个Job对象,设置它的JobName,然后配置输入输出路径,设置我们的Mapper类和Reducer类,设置I ...
- android记住密码和自动登陆
import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences ...
- 华为项目管理10大模板Excel版(可直接套用_非常实用)
项目管理是管理学的一个分支学科 ,对项目管理的定义是:指在项目活动中运用专门的知识.技能.工具和方法,使项目能够在有限资源限定条件下,实现或超过设定的需求和期望的过程.项目管理是对一些与成功地达成一系 ...
- Delphi 中将一些 Dll等生成资源文件打包成一个独立的EXE程序方法步骤
资源文件一般为扩展名为res的文件,其自带的资源编译工具BRCC32.EXE(位于/Delphi/BIN目录下) 1.编写rc脚本文本 用记事本或其它文本编辑器编写一个扩展名为rc的文件,格式分别为在 ...
- 非常好!!!【从头开始写操作系统系列】实现一个-GDT(1)【转】
转自:http://blog.csdn.net/luoyhang003/article/details/47338019 权声明:本文为博主原创文章,未经博主允许不得转载.(文章来源:http://b ...
- Java中常见数据结构:list与map
1:集合 Collection(单列集合) List(有序,可重复) ArrayList 底层数据结构是数组,查询快,增删慢 线程不安全,效率高 Vector 底层数据结构是数组,查询快,增删慢 线程 ...