http://blog.csdn.net/xnwyd/article/details/11671123

1      概述

平台:freescale i.MX 6Quad 4核开发板MCIMX6Q-SDB(不带屏幕)

操作系统:Android 4.2.2_1

内核:3.0.35

显示屏:LG的LP101WX1-SLN2

显示屏参数:分辨率1280*800,色彩18位,色彩数262K,时钟频率69.3M Hz

接口:LVDS0

2      移植步骤

2.1    硬件连接

显示屏通过LVDS0接口与开发板连接,开发板提供的LVDS0接口如下:

如上图所示,LVDS0接口共有33Pin,包括:

1)  使能脚CABC_EN0,亮度调节DSP0_CONTRAST

2)  一组I2C Pin6~7

3)  三组数据线Pin8~Pin15,一组时钟线Pin17~18

4)  电源、地等

显示屏LP101WX1的硬件接口如下:


如上图,显示屏提供的LVDS接口共有40Pin,包括3组数据线,1组时钟线,PWM脚和LED_EN脚等。它与开发板的连接方式如下:

1)  把LP101WX0的3组时钟线和1组时钟线对应连接到开发板的LVDS0接口上:

ORX0-    =>   LVDS0_TX0_N

ORX0+   =>   LVDS0_TX0_P

...

ORXC-   =>   LVDS0_CLK_N

ORXC+ =>   LVDS0_CLK_P

2) 连接电源、地

2     VCC              =>   3.3V

3     VCC      =>   3.3V

10   GND       =>   接地

13  GND       =>  接地

16  GND       =>  接地

19  GND       =>  接地

3) 连接背光

31    GND       =>   接地

35    PWM      =>   3V3(背光亮度脉冲输出,前期先接3V3,方便调试)

36    LED_EN =>   3V3(背光使能)

38    VLED     =>   5V

2.2    驱动移植

1、  从freescale官网下载【i.MX 6Software Updates and Releases】->【SABRE Board for Smart Devices】->【Android 4.2Jellybean】->【Source Code for i.MX 6Quad/Dual】软件包,即android_jb4.2.2_1.0.0-ga_source,然后参考android_jb4.2.2_1.0.0-ga_source\docs\Android_User_Guide.pdf的步骤下载android-4.2.2_r1源码,以及kernel(版本为3.0.35)和u-boot(版本为2009.08),并打上补丁android_jb4.2.2_1.0.0-ga_source。

2、  编译android4.2.2源码,lunch选项为【sabresd_6dq-eng】,生成u-boot-6q.bin,boot.img,system.img和recovery.img。

3、  修改drivers/video/mxc/ldb.c的fb_videomode类型的ldb_modedb变量,把LDB-XGA成员改为:

[cpp] view plaincopy
  1. {
  2. "LDB-XGA", 60,1280, 800, 14430,
  3. 80, 48,
  4. 15, 2,
  5. 32, 47,
  6. 0,
  7. FB_VMODE_NONINTERLACED,
  8. FB_MODE_IS_DETAILED,
  9. },

4、  重新编译内核uImage,并重新生成boot.image,启动系统,设置u-boot启动参数为:

[html] view plaincopy
  1. setenv bootargs console=ttymxc0,115200 init=/initvideo=mxcfb0:dev=ldb,ldb=sin0 video=mxcfb1:off video=mxcfb2:off fbmem=10Mfb0base=0x27b00000 vmalloc=400M androidboot.console=ttymxc0androidboot.hardware=freescale

5、  系统启动后,屏幕可以点亮并输出图像,但图像效果不好,分辨率不对,显示效果如下:

但系统输出hdmi显示是正常的。

3      调试步骤

1、  去掉u-boot启动参数bootargs中的ldb=sin0,默认显示是sin1,然后把屏幕的数据线接到LVDS1接口上,显示效果相同。

2、  修改u-boot启动参数:

video=mxcfb0:dev=ldb,LDB-XGA,if=RGB666,bpp=16video=mxcfb1:off video=mxcfb2

video=mxcfb0:dev=ldb, bpp=16 video=mxcfb1:off video=mxcfb2

显示效果仍是一样。

3、  修改u-boot-imx/board/freescale/mx6q_sabresd.c的lvds_xga变量,使之与kernel的ldb.c里面的fb_videomode相同:

[cpp] view plaincopy
  1. {
  2. " XGA", 60,1280, 800, 14430,
  3. 80, 48,
  4. 15, 2,
  5. 32, 47,
  6. 0,
  7. FB_VMODE_NONINTERLACED,
  8. FB_MODE_IS_DETAILED,
  9. },

编译,重新生成u-boot-6q.bin,启动系统后,显示效果仍是一样。

4、  改u-boot-imx/board/freescale/mx6q_sabresd.c的lvds_xga变量,使之name成员为LDB-XGA:

[cpp] view plaincopy
  1. {
  2. " LDB-XGA",60, 1280, 800, 14430,
  3. 80, 48,
  4. 15, 2,
  5. 32, 47,
  6. 0,
  7. FB_VMODE_NONINTERLACED,
  8. FB_MODE_IS_DETAILED,
  9. },

编译,重新生成u-boot-6q.bin,启动系统后,显示效果仍是一样。

5、因屏幕的色彩数是18位的,在bootargs中添加bpp=18,效果未有改进。

3.1    Android 4.0.4调试

因我之前在sabrelite iMX 6Quad开发板,android 4.0.4调试过相同的屏幕,显示效果是正常的,所以怀疑有可能是系统版本的原因,我按以下步骤在sabre-sd开发板,android 4.0.4上验证显示效果:

1、     从freescale官网下载imx-android-13.4.1.tar.gz,解压后按里面的文档Android_User_Guide.pdf下载android-4.0.4_r1.1源码,以及kernel(版本为3.0.35)和u-boot(版本为2009.08),并打上补丁imx-android-13.4.1

2、     修改drivers/video/mxc/ldb.c的fb_videomode类型的ldb_modedb变量,把LDB-XGA成员改为:

[cpp] view plaincopy
  1. {
  2. "LDB-XGA", 60,1280, 800, 14430,
  3. 80, 48,
  4. 15, 2,
  5. 32, 47,
  6. 0,
  7. FB_VMODE_NONINTERLACED,
  8. FB_MODE_IS_DETAILED,
  9. },

3、     按lunch选项【sabresd_6dq-eng】编译系统,把镜像烧录到sabre-sd开发板上,连接屏幕到lvds1接口,设置u-boot参数为:

[html] view plaincopy
  1. setenv bootargs console=ttymxc0,115200 androidboot.console=ttymxc0vmalloc=400M init=/init video=mxcfb0:dev=ldb,LDB-XGA,if=RGB666,bpp=16video=mxcfb1:off video=mxcfb2:off fbmem=10M fb0base=0x27b00000

然后启动系统。

4、     启动系统后,屏幕显示效果比android 4.2的较好,屏幕分辨率也是对的,显示效果如下:

3.2    解决方法

经过艰苦的调试,终于发现在bootargs中添加bpp=32即可解决问题,完整的bootargs如下:

[plain] view plaincopy
  1. console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb,bpp=32 ldb=sin0 video=mxcfb1:off video=mxcfb2:off fbmem=64M vmalloc=400M androiconsole=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb,bpp=32 ldb=sin0 video=mxcfb1:off video=mxcfb2:off fbmem=64M vmalloc=400M androidboot.console=ttymxc0 androidboot.hardware=freescale fb0base=0x27b00000dboot.console=ttymxc0 androidboot.hardware=freescale fb0base=0x27b00000

启动系统后,分辨率、色彩都显示正常。

但仍有疑问,bpp表示像素位数,我的屏幕的bpp是18,用的是3组数据线,为什么是32位呢?

飞思卡尔i.MX 6Quad Android 4.2.2的LVDS屏幕驱动移植相关推荐

  1. 3g android4 移植 飞思卡尔i.MX 6Quad Android 4.2.2的中兴和Ublox 3G驱动移植 Android——4.2 - 3G移植之路

    点击打开链接 3g android4 移植 点击打开链接 飞思卡尔i.MX 6Quad Android 4.2.2的中兴和Ublox 3G驱动移植 点击打开链接  Android--4.2 - 3G移 ...

  2. android LVDS屏幕驱动移植

    飞思卡尔i.MX 6Quad Android 4.2.2的LVDS屏幕驱动移植 分类: Android2013-09-14 09:13 1263人阅读 评论(0) 收藏 举报 目录(?)[+] 1   ...

  3. 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU启动那些事(8)- 从Raw NAND启动

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列MCU的Raw NAND启动. 前面铺垫了七篇启动系列文章,终于该讲具体Boot Device了,我们 ...

  4. 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU特性介绍(3)- 命名规则

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列MCU的命名规则. 打开任何一款i.MX RTyyyy系列芯片的Data Sheet均可找到如下命名规 ...

  5. Android(4.2) Sensors 学习——G-sensor,Gyroscope驱动移植

    Android(4.2) Sensors 学习--G-sensor,Gyroscope驱动移植 目录(?)[-] Sensors 种类和功能 G-sensor驱动code G-sensor HAL 注 ...

  6. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU量产神器RT-Flash用户指南

    RT Flash English | 中文 1 软件概览 1.1 介绍 RT-Flash是一个专为基于NXP i.MX RT系列芯片的产品量产而设计的工具,其功能与官方MfgTool2工具类似,但是解 ...

  7. 天嵌TQ_E9卡片电脑移植飞思卡尔yocto L4.1.15_1.0.0_ga 第五篇 LCD+触摸屏移植

    经过前面的移植,我们的板子已经可以成功进入linux,但是这个时候看不到画面的,还需要进一步调通LCD显示和触摸屏驱动. 1.uboot环境变量. 为了LCD能显示需要如下设置uboot变量: $se ...

  8. 从飞思卡尔到NXP,经久不衰的i.MX系列产品背后的“成功学”

    从飞思卡尔到NXP,i.MX系列经久不衰 近日,恩智浦半导体(NXP)宣布其EdgeVerse™产品系列新增了跨界应用处理器,包括i.MX 8ULP.经Microsoft Azure Sphere认证 ...

  9. 物联网改变生活——飞思卡尔技术论坛中国站侧记

    近日,飞思卡尔技术论坛(FTF)中国站在深圳举行.飞思卡尔总裁兼首席执行官Gregg Lowe亲临论坛,布道物联网.论坛提供了超过110个小时的技术培训课程,涵盖汽车.消费电子.医疗保健.工业.网络. ...

最新文章

  1. 电脑壁纸励志_励志壁纸 | 要乖 要长大 要努力 要不负众望
  2. openssl、x509、crt、cer、key、csr、ssl、tls
  3. 基于ESP8266-01s 增加对于FZ35恒流电子负载WiFi接口
  4. 开发板与pc之间文件传输:kermit and lrzsz
  5. python在哪里写代码比较适合-AI辅助写代码,Python之父都爱不释手的工具
  6. myeclipse的buildpath 和lib引入的区别
  7. spring event的事件驱动模型的最佳实践@EventListener
  8. WEB_面试题_第三阶段
  9. Bootstrap 幻灯片效果
  10. idea中Tomcat启动乱码问题
  11. Atitit 数据库抽象层jdbc pdo ado.net等比较与异常点 目录 1. 应该具有的功能 1 1.1. 元数据 API 1 1.2. 分布式事务 vs事务中使用 Savepoint 1
  12. Android仿微信APP实现源码
  13. 哈夫曼编码c语言例题,关于哈夫曼编码试题的计算
  14. stl文件用proe怎么打开_3D建模软件Proe怎么转换3d打印的stl文件?
  15. 使用Proteus 8.9仿真STM32F103流水灯实验
  16. iOS打包静态库(完整篇)
  17. xilinx PCIe PIO工程仿真及验证
  18. 类似于wps的linux软件,出了Office、WPS还有哪些好用的办公软件?
  19. Mac使用数据线连接安卓手机传输文件
  20. YARN中的任务队列调度器-容量调度器(Capacity Scheduler)

热门文章

  1. 【电机应用控制】——步进电机控制原理(四相五线/两相四线/细分驱动)驱动器梯形/S形加减速算法直线/圆弧插补
  2. Python与OpenCV(一)——基于帧差法的运动目标检测程序分析
  3. 目前用于微型计算机系统的光盘有哪些,目前用于计算机系统的光盘,分为这三类...
  4. 【IDE-Visual Studio】无法启动程序 xxx exe 由于应用程序配置不正确,未能启动此应用程序
  5. 概率论和数理统计笔记之事件的概率
  6. Docker部署onlyoffice并完成20最大连接数破解
  7. Dell Insprion 7590安装Window7记录
  8. 解决mac dock栏全屏时不自动隐藏
  9. libnet编译linux,libnids libpcap libnet 安装
  10. 这可能是我使用百度网盘以来最好用的高速下载器了