首先贴上一位大佬的博客,对LCD有很详细的描述

https://blog.csdn.net/longxiaowu/article/details/24319933

在uboot和kernel中,都存在这样一个结构体fb_videomode 描述LCD的各项参数,结构体代码如下:

struct fb_videomode {

const char *name; //液晶屏名字(可选)

u32 refresh; //刷新频率(内核中很多例子都赋值为60,可选)

u32 xres; //每行的像素个数

u32 yres; //屏幕的行数

u32 pixclock; //每个像素时钟周期的长度,单位是皮秒(10的负12次方分之1秒

//在每行或每列的象素数据开始输出时要插入的象素时钟周期数

u32 left_margin;

//在每行或每列的象素结束到LCD 行时钟输出脉冲之间的象素时钟数

u32 right_margin;

//在垂直同步周期之后帧开头时的无效行数

u32 upper_margin;

//本帧数据输出结束到下一帧垂直同步周期开始之前的无效行数

u32 lower_margin;

//单位:像素时钟周期

u32 hsync_len;

//单位:显示一行的时间th

u32 vsync_len;

//可以根据需要设置FB_SYNC_HOR_HIGH_ACT(水平同步高电平有效)和FB_SYNC_VERT_HIGH_ACT(垂直同步高电平有效)

u32 sync;

//在内核中的大多数示例都直接置为FB_VMODE_NONINTERLACED。interlaced的意思是交错[隔行]扫描,电视中使用2:1的交错率, 即每帧分两场,垂直扫描两次,一场扫描奇数行,另一场扫描偶数行。很显然LCD目前不是这种模式。

u32 vmode;

u32 flag;

};

对于一些参数,网络有大佬给出这样一种计算方法,如下:

xres 对应于规格书中的TEP

yres 对应于规格书中的Tvd

left_margin 对应于规格书中的Thf

right_margin 对应于规格书中的Thb

hsync_len 对应于规格书中的THS

upper_margin 对应于规格书中的Tvf

lower_margin 对应于规格书中的Tvb

vsync_len 对应于规格书中的Tvs

pixclock = 1000000 / DCF

hsync_len =THS= TH-THD-THB

vsync_len = TVS=TV-TVD-TVB

还没有验证过不确定真实性,下面的参数有些都是我看了规格书自己瞎配的,运气好能用。

目前imx6ul上使用的是7寸屏,要移植一个10寸屏到板子上,在linux-4.1.15内核中lcd驱动与imx平台相关的源码路径主要如下:

arch/arm/boot/dts/tq-imx6ul.dts

drivers/video/fbdev/mxc/mxc_edid.c

drivers/video/fbdev/mxc/mxc_dispdrv.c

drivers/video/fbdev/mxc/mxc_lcdif.c

drivers/video/fbdev/mxc/mxc_ipuv3_fb.c

1.首先需要修改dts文件,截取设备树中的一段代码如下:

&lcdif {pinctrl-names = "default";pinctrl-0 = <&pinctrl_lcdif_dat&pinctrl_lcdif_ctrl>;display = <&display0>;                //指定所使用显示特性status = "okay";display0: display {                   //与上面 display0对应bits-per-pixel = <32>;           //使用的位色bus-width = <24>;             //硬件上的数据位宽display-timings {             //显示时序参数native-mode = <&timing0>;    //默认使用的模式timing0: timing0 {mode_name = "H50";    //此模式名,对应的 uboot 启动参数中的 pannel 参数clock-frequency = <45000000 52000000 63000000>;  //pixclockhactive = <1024>;      //分辨率vactive = <600>;
/*以下为时序参数*/hfront-porch = <16 210 354>;hback-porch = <46>;    //影响图像显示的竖直位置hsync-len = <41>;vback-porch = <23>;vfront-porch = <1 12 77>;//影响图像显示的水平位置vsync-len = <10>;
/*以下为同步信号属性*/hsync-active = <0>;vsync-active = <0>;};};};
};

其中 display-timings 中的 mode_name 如果不写会默认使用native-mode 指定的方式,如果有指定会将它与 uboot 中的命令行比较,相等才会使用此参数。

2.修改uboot中的相关设置,修改uboot源码,位置如下:

u-boot/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c

struct display_info_t const displays[] = {{.bus = MX6UL_LCDIF1_BASE_ADDR,.addr = 0,.pixfmt = 24,.detect = NULL,.enable = do_enable_parallel_lcd,
/*以下参数需要根据lcd的规格书修改*/.mode   = {.name                   = "H50",        //与设备树中的mode_name 相对应.xres           = 1024,.yres           = 600,.pixclock       = KHZ2PICOS(52000),.left_margin    = 50,.right_margin   = 160,.upper_margin   = 12,.lower_margin   = 23,.hsync_len      = 160,.vsync_len      = 12,.sync           = 0,.vmode          = FB_VMODE_NONINTERLACED},},
};

配置好以后还要将uboot的panel的环境变量修改为指定的屏(mode_name )

imx6ul之LCD驱动移植相关推荐

  1. [lcm] Qualcomm平台的显示屏lcd驱动移植步骤

    1lk部分 1-1 target_displayc 1-2 oem_panelc 1-3 panel_innont51021b_1200p_videoh 2Kernel 2-1 dsi-panel-b ...

  2. Barebox for Tiny6410(LCD驱动移植)

    一.目的 熟悉Barebox的Frame buffer框架.LCD驱动的移植和测试命令的编写. 二.主要内容 1.1 为Barebox移植基于Tiny6410的LCD驱动. 1.2 编写lcd命令测试 ...

  3. rtthread工业使用_RT-Thread三探--LCD驱动移植(使用GUI Engine)

    既网络之后又一个比较重要的功能--GUI 对于RT-Thread使用的GUI我还没有什么概念,本文只是针对LCD驱动部分的移植,并使用GUI运行本身提供的demo样例. 当然还是和ETH一样,在STM ...

  4. linux-2.6.32在mini2440开发板上移植 ---W35型LCD驱动移植

    转载:http://blog.csdn.net/viewsky11/article/details/11846359 编者注:本移植主要步骤还是按照手册来,里面讲解了一些有用的基础知识.但书册上提供了 ...

  5. linux在开发板LCD上显,W35型LCD驱动移植 - linux-2.6.32在mini2440开发板上移植_Linux编程_Linux公社-Linux系统门户网站...

    编者注:本移植主要步骤还是按照手册来,里面讲解了一些有用的基础知识.但书册上提供了集中屏幕的方案,我们这里主要就用一种,也就是开发板自带的W35型号.液晶驱动的源程序在src/drivers/vide ...

  6. LCD驱动移植之开机logo

    移植环境 BootLoader:u-boot-1.1.6 kernel:linux-2.6.30.4 CPU:s3c2440 开发板:TQ2440 LCD:TFT480*272 参考资料:<天嵌 ...

  7. 基于正点原子F103精英板和CubeIDE的Hal库LCD驱动移植(从零开始)

    最近在学习王维波老师的<STM32Cube高效开发教程>,王老师移植的是普中科技的驱动,而我手动移植了一下正点原子的lcd驱动,看了网上的诸多教程,有的博客存在一些bug,于是乎手动整理了 ...

  8. STM32MP157 Linux系统移植开发篇14:Linux内核RGB LCD驱动移植

    本文章为<STM32MP157 Linux系统移植开发篇>系列中的一篇,笔者使用的开发平台为华清远见FS-MP1A开发板(STM32MP157开发板).stm32mp157是ARM双核,2 ...

  9. LCD驱动移植(二)

    LCD驱动的话会在MINI2440里是向Plaform注册的一个驱动 Plaform的话可以在网上查查这方面的资料,主要要注意这两个函数,如下: (1)platform_device_register ...

  10. mtk平台lcd驱动移植

    mtk平台lcd驱动分为两个部分:lk和kernel.两部分基本流程相同,除了GPIO操作及头文件. 1. lk:需要修改的目录 vendor/mediatek/proprietary/bootabl ...

最新文章

  1. malloc,calloc,realloc,free函数
  2. 创业公司做数据分析(三)用户行为数据采集系统 (转)
  3. harbor pull 失败
  4. IOS开发基础知识--碎片13
  5. Jena Fuseki安装完成后不能添加数据库
  6. Ansible 学习总结(1)—— Ansible 入门详解
  7. OAuth2.0 使用 JWT令牌
  8. JAVA-常量、运算符、类型转换、Scanner
  9. C# 正则表达式 匹配IP地址
  10. 服务器下 读取springboot application配置文件_一文读懂 Spring Boot 配置文件 application.properties !...
  11. php云人才伪静态,骑士cms(骑士人才系统)伪静态设置方法
  12. eyoucms使用入门 四
  13. Android Adb命令恢复出厂设置
  14. 山海经鸿蒙手游iOS 版本,山海经鸿蒙异兽手游下载,山海经鸿蒙异兽手游最新官方版 v1.0-手游汇...
  15. 转:C# 中 MSCHART 饼状图显示百分比
  16. hapi mysql项目实战路由初始化_Hapi+MySql项目实战数据库操作(四)
  17. python小程序抢购脚本怎么写_Python茅台抢购脚本的使用说明!!
  18. (十八)树莓派3B+ wiringPi库的使用--外部中断
  19. SpringBoot--访问静态页面
  20. python 学术论文,python论文_python 论文_python

热门文章

  1. 小学数学思维导图集合 小学数学思维导图怎么画
  2. 湖北省襄阳市谷歌高清卫星地图下载
  3. linux ospf 命令,Linux_防火墙入门22:常用路由协议(OSPF)配置实例
  4. 华为路由器配置OSPF实例
  5. 注册表的保存位置在哪里?注册表文件保存在哪里?
  6. 第三方验收测试-功能测试方案
  7. 推荐一本Python数据挖掘的好书
  8. 小程序 - 修改头像功能
  9. Hutool常用工具
  10. 前端加密js库--CryptoJs