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

分类: Android2013-09-14 09:13 1263人阅读 评论(0) 收藏 举报

目录(?)[+]

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位呢?

android LVDS屏幕驱动移植相关推荐

  1. 飞思卡尔i.MX 6Quad Android 4.2.2的LVDS屏幕驱动移植

    http://blog.csdn.net/xnwyd/article/details/11671123 1      概述 平台:freescale i.MX 6Quad 4核开发板MCIMX6Q-S ...

  2. 基于MT6752/32平台 Android L版本驱动移植步骤

    基于MT6752/32平台 Android L版本驱动移植步骤 根据MK官网所述,在Android L 版本上Turnkey ABS 架构将会phase out,而Mediatek Turnkey架构 ...

  3. 基于MT6752/32平台 Android L版本驱动移植步骤 根据MK官网所述,在Android L 版本上Turnkey ABS 架构将会phase out,而Medi

    基于MT6752/32平台 Android L版本驱动移植步骤 根据MK官网所述,在Android L 版本上Turnkey ABS 架构将会phase out,而Mediatek Turnkey架构 ...

  4. MT6752/32平台 Android L版本驱动移植

    基于MT6752/32平台 Android L版本驱动移植步骤 根据MK官网所述,在Android L 版本上Turnkey ABS 架构将会phase out,而Mediatek Turnkey架构 ...

  5. MTK6735 Android之Camera驱动移植篇

    MTK6735 Android之Camera驱动移植篇 首先我们需要向sensor原厂拿到我们对应平台型号的驱动hal层和kernel层的代码. 1.拷贝hal层代码到\vendor\mediatek ...

  6. DIY基于RTD2662的LVDS屏幕驱动

    这段时间一直在研究FPGA,机缘巧合入了好几块EBAZ4205的矿板,但是今天要说的不是他们... 在闲鱼上收了几块车载导航的显示屏,8寸+电容触控,一开始用标准的LVDS驱动板去驱动发现驱动不了,网 ...

  7. STM32F407VET6的OTM8009_800X480屏幕驱动移植

    很久之前搞了块OTM8009_800X480屏幕,同时还搞了块STM32F407VET6核心板,问题是这两个tft接口一个32针,一个34针,不能直接插,所以一直没搞.最近心血来潮,搞了下,好久没搞这 ...

  8. android 驱动是什么文件格式,android手机屏幕驱动在哪个文件夹

    线刷或卡刷. 一.线刷需要root,后附root方法.如果担心root影响保修和升级,可以解除root. 线刷可以用刷机软件,比如深度刷机.刷机精灵. 二.卡刷通常指Recovery刷机. 进入Rec ...

  9. android的wifi网卡移植详细过程已经通用驱动的问题

    这里有一篇详细的教程,看完还有一个问题 就是android的wifi驱动移植,如果有wifi网卡的驱动代码,是一定需要对android系统本身的代码修改重写编译吗?就是说,有无可能不改变android ...

最新文章

  1. Tomcat配置虚拟路径,使上传文件与服务器及工程文件分离开
  2. 浅谈函数调用的汇编实现细节(用栈来传递参数)
  3. mysql 查询 distinct_MYSQL查询数据(二)SELECT | DISTINCT
  4. 西欧八国调查:25%受访者宁要AI政府也不要民选政治家
  5. NUC1445 Euclid's Game【博弈】
  6. JavaScript 代码的加入
  7. [JavaScript] 怎么使用JS禁止复制粘贴
  8. Prometheus正式从CNCF毕业
  9. Dr_can模型预测控制笔记与代码实现
  10. ps还原上一步快捷键_ps怎么返回上一步?PS返回上一步快捷键
  11. scrapy框架入门第一天笔记记录
  12. VR/AR 技术学习园地
  13. 想进大厂必须要知道的Web安全问题
  14. 计算机(computer)俗称电脑
  15. Oracle安装提示无效条目,oracle NET 无效条目,要求有效的“服务名”
  16. vue3+echart5 遇到的报错:Cannot read properties of undefined (reading ‘type‘)
  17. vue中xe-utils的强大
  18. 【Linux 内核 内存管理】物理分配页 ⑧ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | 获取首选内存区域 | 异步回收内存页 | 最低水线也分配 | 直接分配 )
  19. 28 岁程序员身价过亿,选择退休东渡日本
  20. Ubuntu下的PROXY设置

热门文章

  1. Java主流技术、优秀工具、优秀书籍和优秀网站大罗列
  2. MRI脑成像网络构建笔记1
  3. day-01 one-day projects
  4. 监听页面关闭和刷新的总结
  5. Arch Linux gnome 终端模拟器优化
  6. 【Python】选举投票小程序
  7. 机房计算机安装的软件,关于2019-2020学年第二学期公共机房安装新软件的通知
  8. 24 前 K 个高频元素
  9. Fluent动网格【8】:网格节点运动案例
  10. MapInfo2007年用户大会参会记录