LCD调试流程总结 下载本文

LCD调试流程总结

——360OS_8909-la30分支上msm8909_x26m_q3项目调试

一、前期准备工作:

a、屏幕 b、spec

打样, datasheet会讲解该屏幕的一些特性

获取路径:PM

c、init代码

获取路径:PM---->技术支持

d、原理图

获取路径:PM---->基带---->文控

e、技术支持

(IC固定)电话沟通---->(IC不固定) 寻求PM帮助

二、代码部分

LK 部分

用到的文件路径

bootable/bootloader/lk /

dev/gcdb/display/include/panel_ili9806e_fwvga_cpt_kelai_video.h bootable/bootloader/lk / target/msm8909_x26m_q3/oem_panel.c 1、oem_panel.c

主要是识别不同IC,赋值给参数panel_id,panel_id的使用在同一文件中的 init_panel_data()函数中。

a. int oem_panel_select()函数:选择使用的屏

panel_id = ILI9806E_FWVGA_CPT_KELAI_VIDEO_PANEL ; 注: hw_id 为 board id:

uint32_t hw_id = board_hardware_id(); 这里对应的为 HW_PLATFORM_QRD

platform_subtype = board_hardware_subtype(); 这里对应的为QRD_SKUC

根据lcm_pin_id不同来给panel_id赋值。 lcm_pin_id = mipi_get_lcm_pin_id();

case QRD_SKUC:

if(lcm_pin_id) //根据lcm_pin_id不同来给panel_id赋值。

panel_id = ILI9806E_FWVGA_CPT_KELAI_VIDEO_PANEL;//此处为我们需要配置的屏

else

panel_id = ILI9881C_720P_HSD_HUASHI_VIDEO_PANEL; break;

添加方法 mipi_get_lcm_pin_id(void)

#define LCD_HW_GPIO_ID 8 static uint8_t lcm_pin_id;

uint8_t mipi_get_lcm_pin_id(void) {

uint8_t pin_status = 0;

gpio_tlmm_config(LCD_HW_GPIO_ID, 0, GPIO_INPUT, GPIO_PULL_UP, GPIO_2MA, GPIO_ENABLE);

/* Wait for the configuration to complete.*/ thread_sleep(1);

/* Get status of GPIO */

pin_status = gpio_status(LCD_HW_GPIO_ID);

dprintf(INFO,\mipi_get_lcm_pin_id(). pin[%d]_status = %d\\n\pin_status);

return pin_status; }

b. static int init_panel_data函数:初始化panel的一些数据,通过调用h文件的数据

在这里添加对应的 ILI9806E 对应的设置选项

switch (panel_id) {

case ILI9806E_FWVGA_CPT_KELAI_VIDEO_PANEL:

panelstruct->paneldata = &ili9806e_fwvga_cpt_kelai_video_panel_data;

panelstruct->panelres = &ili9806e_fwvga_cpt_kelai_video_panel_res;

panelstruct->color = &ili9806e_fwvga_cpt_kelai_video_color;

panelstruct->videopanel = &ili9806e_fwvga_cpt_kelai_video_panel;

panelstruct->commandpanel = &ili9806e_fwvga_cpt_kelai_video_command_panel;

panelstruct->state = &ili9806e_fwvga_cpt_kelai_video_state;

panelstruct->laneconfig = &ili9806e_fwvga_cpt_kelai_video_lane_config;

panelstruct->paneltiminginfo = &ili9806e_fwvga_cpt_kelai_video_timing_info;

panelstruct->panelresetseq = &ili9806e_fwvga_cpt_kelai_video_reset_seq;

panelstruct->backlightinfo = &ili9806e_fwvga_cpt_kelai_video_backlight;

pinfo->mipi.panel_cmds = ili9806e_fwvga_cpt_kelai_video_on_command;

pinfo->mipi.num_of_panel_cmds = ARRAY_SIZE(ili9806e_fwvga_cpt_kelai_video_on_command);

memcpy(phy_db->timing,ili9806e_fwvga_cpt_kelai_video_timings, TIMING_SIZE);

pinfo->mipi.signature = ILI9806E_FWVGA_CPT_KELAI_VIDEO_SIGNATURE; break; }

c. 添加头文件:#include \

d. 添加对应的 enum:

enum {

HX8394D_480P_VIDEO_PANEL, HX8394D_720P_VIDEO_PANEL, SHARP_QHD_VIDEO_PANEL, TRULY_WVGA_CMD_PANEL,

HX8379A_FWVGA_SKUA_VIDEO_PANEL, ILI9806E_FWVGA_VIDEO_PANEL, HX8394D_QHD_VIDEO_PANEL, HX8379C_FWVGA_VIDEO_PANEL, FL10802_FWVGA_VIDEO_PANEL, AUO_QVGA_CMD_PANEL, AUO_CX_QVGA_CMD_PANEL, HX8394F_720P_VIDEO_PANEL,

ILI9881C_720P_HSD_HUASHI_VIDEO_PANEL,

ILI9806E_FWVGA_CPT_KELAI_VIDEO_PANEL,//此处添加 UNKNOWN_PANEL };

2、bootable/bootloader/lk/dev/gcdb/display/include/ 目录下添加对应的 .h 文件

在这里添加panel_ili9806e_fwvga_cpt_kelai_video.h文件,做如下设置:

panel_config、panel_reslution、panel on/off 、panel color、panel lane config、timing config、 reset config、backlight config 等

KERNEL 部分 相关文件路径

kernel / arch/arm/boot/dts/msm8909_x26m_q3/msm8909-qrd-skuc.dtsi kernel /

arch/arm/boot/dts/msm8909_x26m_q3/dsi-panel-ili9806e-fwvga-cpt-kelai-video.dtsi

1、kernel / arch/arm/boot/dts/msm8909_x26m_q3/目录下添加 dsi-panel-ili9806e-fwvga-cpt-kelai-video.dtsi文件 2、msm8909-qrd-skuc.dtsi 添加头文件

#include \ 添加节点

&dsi_ili9806e_fwvga_cpt_kelai_video { qcom,cont-splash-enabled; };

注意:.h和.dtsi命名规则:

IC+玻璃屏+模组+分辨率+数据传输模式

举例:panel_ili9806e_fwvga_cpt_kelai_video.h

dsi-panel-ili9806e-fwvga-cpt-kelai-video.dtsi IC:ili9806e 玻璃屏:cpt 模组:kelai 分辨率:fwvga 数据传输模式:video

数据传输模式有两种:vedio和command

DSI(Video Mode)视频模式.

这种工作模式与传统RGB接口相似,主机需要持续刷新显示器。由于不使用专用的数据信号传输同步信息,控制信号和RGB数据是以报文的形式通过MIPI总线传输的。因为主机需要定期刷新显示器,显示器就不需要帧缓冲器。这才MX LCD不需要RAM的关键原因。 DCS(Command mode)命令模式

MIPI总线控制器使用显示命令报文来向显示器发送像素数据流。显示器应该有一个全帧长的帧缓冲器来存储所有的像素数据。一旦数据被放在显示器的帧缓冲器中,定时控制器就从帧缓冲器中取出数据,并自动把它们显示在屏幕上。MIPI总线控制器不需要定期刷新显示器。

三、编译

在根目录下分别make aboot和make bootimage后,在out目录下会生成 boot.img和emmc_appsboot.mbn两个文件。

四、烧录版本

这里用手机到服务器上用下载一个非熔断非签名的userdebug版本,然后fastboot将上面那两个文件烧进去。如果fastboot模式不能进入可以参考田鹏之前发过的烧写单个镜像文件文档。

五、拆机换屏验证

需要螺丝刀和镊子小心拆开后壳后,将需要调试的屏幕插入接口然后通电开机,屏幕可以正常点亮进入开机动画正常开机了。