搜索

[嵌入式linux] iMX6Q Linux应用笔记-LCD移植、LVDS移植、QT桌面旋转

[复制链接]
49|1
 楼主 | 2021-1-13 09:03 | 显示全部楼层 |阅读模式
本文主要适用于飞凌OKMX6DL/Q-C平台Linux3.0.35操作系统,其他imx6Q平台也可以参考,但是不同平台之间会存在差异,需客户自行修改以适应自己的使用。通过本文您可以了解LCD移植、LVDS移植及桌面旋转的参考方法。
第一章 LCD移植
以添加800x600分辨率的LCD屏为例:
步骤一:iMX6Q内核部分的修改:
修改linux-3.0.35/drivers/video/mxc/mxc_lcdif.c
根据屏体手册在驱动添加时钟参数:
static struct fb_videomode lcdif_modedb[] = {
        {
        /* 800x480 @ 57 Hz , pixel clk @ 27MHz */
        "CLAA-WVGA", 57, 800, 480, 37037, 40, 60, 10, 10, 20, 10,
        FB_SYNC_CLK_LAT_FALL,
        FB_VMODE_NONINTERLACED,
        0,},
      …………………………………………..中间省略N行,可参看实际代码
        {
        "AT080-WVGA", 60, 800, 600, 21276, 46, 23, 210, 12, 1, 1,
        FB_SYNC_CLK_LAT_FALL,
        FB_VMODE_NONINTERLACED,
        0,},
};
步骤二:iMX6Q 关于uboot中的修改
修改uboot-2009/include/configs/mx6q_sabresd.h中的显示参数
#elif defined(CONFIG_UBOOT_KERNEL_LCD)
   #define MXC_FB0          "mxcfb0=video=mxcfb0:dev=lcd, AT080-WVGA,if=RGB24,bpp=32\0"
   #define MXC_FB1          "mxcfb1=video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32\0"
   #define FB0BASE          "fb0base=fb0base=0x27b00000\0"
   #define FBMEM     "fbmem=fbmem=28M\0"
   #define PANEL            "panel= AT080-WVGA \0"
#endif               
注意:AT080-WVGA是和内核中的配置保持一致的。代码中的具体参数需要客户根据自己的屏幕手册自行计算,不知道参数具体含义的可以百度搜索了解这方面相关的知识。

第二章LVDS移植以飞凌的10.1吋1280x800分辨率的LVDS屏幕为例。
步骤一:iMX6Q 内核部分的修改
修改linux-3.0.35/drivers/video/mxc/ldb.c
static struct fb_videomode ldb_modedb[] = {
{
"LDB-WXGA", 60, 1280,800, 14064,
           70, 80,
            8, 13,
           10, 2,
           0,
FB_VMODE_NONINTERLACED,
FB_MODE_IS_DETAILED,},
{
"LDB-XGA", 60, 1024, 768, 15385,
220, 40,
21, 7,
60, 10,
0,
FB_VMODE_NONINTERLACED,
FB_MODE_IS_DETAILED,},
{
"LDB-1080P60", 60, 1920, 1080, 7692,
100, 40,
30, 3,
10, 2,
0,
FB_VMODE_NONINTERLACED,
FB_MODE_IS_DETAILED,},
};
步骤二:iMX6Q Uboot部分的修改
修改uboot-2009/include/configs/mx6q_sabresd.h
#if defined(CONFIG_UBOOT_KERNEL_LVDS)
   #define MXC_FB0          "mxcfb0=video=mxcfb0:dev=ldb,LDB-WXGA,if=RGB24,bpp=32\0"
   #define MXC_FB1          "mxcfb1=video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32\0"
   #define FB0BASE          "fb0base=fb0base=0x27b00000\0"
   #define FBMEM     "fbmem=fbmem=28M\0"
   #define PANEL            "panel=LDB-WXGA\0"
  注意:
LDB-WXGA是和内核中的配置保持一致的。代码中的具体参数需要客户根据自己的屏幕手册自行计算,不知道参数具体含义的可以百度搜索了解这方面相关的知识。

第三章 QT桌面旋转90度通过以下方法可以将屏幕上的QT旋转90度,180度或者是270度。以旋转90度为例:
修改iMX6Q文件系统中的QT环境变量脚本:
root@freescale /$ vi  /etc/rc.d/qt_env.sh
将 export QWS_display="linuxfb:mmWidth50:mmHeight130:0"
修改为export QWS_DISPLAY=”Transformed:Rot90:LinuxFb:/dev/fb0”
修改完成后保存该文件并执行sync命令后,重启iMX6Q开发板即可;有些QT界面不能够适应旋转后的宽高等,需要重新编译调整下qt界面的图形界面。也可以修改文件系统源码下的etc/rc.d/qt_env.sh 文件,改动方法同上,然后重新制作文件系统映像并烧写到平台。

原文链接:https://www.forlinx.com/article_view_618.html

使用特权

评论回复
| 2021-1-13 09:27 | 显示全部楼层
大家老老实实 去 学  UBUNTU 下的 QT /OPENCV   C/C++开发, 在 电脑下面学会软件的开发, UBUNTU 系统编程。
等你学好,    转嵌入式开发就是很容易的。

这些所谓的开发板厂家,都是葫芦画瓢的。 按  LINUX系统的规定来搞些低端工作。  核心的软件都不会去研究。 他们就是买PCB给你赚钱。
你买个PCB 有毛线用?   家里的  PC 硬件不香吗?  把那个用好,学好不香吗?  然后就是稍微移植一下,这个芯片厂家都已经做好的。

好比  ST,全志, 瑞芯微,  NXP等等他们必须为他们的 CORTEX-A7、A53/A73芯片提供  LINUX SDK, 否则谁知道他们的硬件底层如何驱动设计。  硬件驱动底层,只有芯片厂家自己最清楚,能不能用,他们自己测试过,否则 ST的 CORTEX-A7设计出来竟然不能在LINUX下驱动液晶,DMA, 定时器,中断等等, 芯片厂家不大面自己吗?

  因此 ,  移植的工作大家不要操心!!!     你只要学好系统的APP开发,系统开发,就好了,其他工作交个厂家为你提供SDK的移植驱动。




使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /6 下一条

在线客服 快速回复 返回顶部 返回列表