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模式不能进入可以参考田鹏之前发过的烧写单个镜像文件文档。
五、拆机换屏验证
需要螺丝刀和镊子小心拆开后壳后,将需要调试的屏幕插入接口然后通电开机,屏幕可以正常点亮进入开机动画正常开机了。