找回密码
 注册
关于网站域名变更的通知
查看: 576|回复: 3
打印 上一主题 下一主题

iMX6Q Linux应用笔记-LCD移植、LVDS移植、QT桌面旋转

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-1-13 09:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 行者~ABC 于 2021-1-13 09:42 编辑 # g7 b4 Q9 ]* a

. [$ d1 _( B+ T3 X- x$ ]本文主要适用于飞凌OKMX6DL/Q-C平台Linux3.0.35操作系统,其他imx6Q平台也可以参考,但是不同平台之间会存在差异,需客户自行修改以适应自己的使用。通过本文您可以了解LCD移植、LVDS移植及桌面旋转的参考方法。
. l  [2 J, I: ^. A& ~# w# n第一章 LCD移植
# y0 X0 h& j. p2 [" P以添加800x600分辨率的LCD屏为例:
8 z# ~! \/ z/ A1 o" e5 Q步骤一:iMX6Q内核部分的修改:
% d$ F9 j* @& C0 N% ^: w, J修改linux-3.0.35/drivers/video/mxc/mxc_lcdif.c1 P; N6 V% N' N) m* h# l& ^# F7 u
根据屏体手册在驱动添加时钟参数:
, O( o3 P9 f+ U: b" a" Pstatic struct fb_videomode lcdif_modedb[] = {
0 X2 l; ~. H% U  n) G' s        {) P7 u6 a0 ^6 p' L9 v1 j
        /* 800x480 @ 57 Hz , pixel clk @ 27MHz */
; d+ a$ H: F9 o: `9 p        "CLAA-WVGA", 57, 800, 480, 37037, 40, 60, 10, 10, 20, 10,
' {  \4 a" ^, |, [9 [        FB_SYNC_CLK_LAT_FALL,& x; T% |2 \8 ?' ~1 C4 K/ Q
        FB_VMODE_NONINTERLACED,
" [; g- U3 u- u( R$ l, y        0,},8 B, M5 T1 U2 w; C# k4 W
      …………………………………………..中间省略N行,可参看实际代码
; n# f  _! G, P8 ^- _' _3 ?        {
2 n4 g# s+ ^; _/ }% O8 g$ F* _        "AT080-WVGA", 60, 800, 600, 21276, 46, 23, 210, 12, 1, 1,3 p  V# b/ k/ p- H4 W8 f  F
        FB_SYNC_CLK_LAT_FALL,
: D4 i% |. ?0 Z2 |4 l$ z, v        FB_VMODE_NONINTERLACED,
9 U& _# h6 W4 }! b        0,},
# E6 D. R# A# S7 y9 O  e( x* F};  v: w9 g3 `6 l  S' a* ]
步骤二:iMX6Q 关于uboot中的修改
8 y" b2 S* ?/ C5 X0 ^% U. s修改uboot-2009/include/configs/mx6q_sabrESD.h中的显示参数  T/ p2 d) R1 K* k) j
#elif defined(CONFIG_UBOOT_KERNEL_LCD)+ x$ V8 Z1 u7 Y1 C. q0 |& ^4 l
   #define MXC_FB0          "mxcfb0=video=mxcfb0:dev=lcd, AT080-WVGA,if=RGB24,bpp=32\0"
$ A# q6 U) P7 O   #define MXC_FB1          "mxcfb1=video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32\0", f  f2 h7 q5 h  R$ @% y+ e
   #define FB0BASE          "fb0base=fb0base=0x27b00000\0". Y2 f( Y: f) k- ^, a
   #define FBMEM     "fbmem=fbmem=28M\0"' L6 m) M9 X4 e6 |% q3 ?. ]5 p6 A
   #define PANEL            "panel= AT080-WVGA \0"
  e, K. @0 X- Z4 v  e#endif               
) e$ W9 g  M* U! K注意:AT080-WVGA是和内核中的配置保持一致的。代码中的具体参数需要客户根据自己的屏幕手册自行计算,不知道参数具体含义的可以百度搜索了解这方面相关的知识。
6 r( Q& u7 O: }: T  M# I
; X% [8 X& C7 x8 e6 f5 m4 R  }7 G第二章LVDS移植以飞凌的10.1吋1280x800分辨率的LVDS屏幕为例。
* m8 t- b- [. H9 F步骤一:iMX6Q 内核部分的修改9 d6 ~+ r. t. }* M$ \- x
修改linux-3.0.35/drivers/video/mxc/ldb.c
8 P8 F; u! G: U+ b; gstatic struct fb_videomode ldb_modedb[] = {
$ L; C8 U9 Y; r& ]; ~' S{
% ^/ W- {' ~. P( U5 W) f"LDB-WXGA", 60, 1280,800, 14064,! @# H1 @0 G* Y7 Z* A
           70, 80,
* X# w" [7 P* l7 u            8, 13,3 k  f# f. ~& P5 h0 u2 ~
           10, 2,$ o) ?/ N) Y  a; ^' P! {2 x
           0,- B& Y, U9 Y1 [* D7 {4 }0 h' d
FB_VMODE_NONINTERLACED,
' ]/ }" P4 _/ n% H0 P/ @. {+ ]5 g$ LFB_MODE_IS_DETAILED,},
  p2 r4 t6 J+ N9 B1 Y* b" W& w8 T: c3 s{+ o. Z' t% y3 |3 G' T
"LDB-XGA", 60, 1024, 768, 15385,
9 ^- L0 S  E' F- ]9 e9 v. }8 F# X( l220, 40,: E( H0 w$ I& x* }; C
21, 7,4 C, `, b. Y6 u* {4 F
60, 10,
- ]  L4 `4 V1 {. x, |" Y0,
  L! Z4 t) J4 }; w# g, H# f2 oFB_VMODE_NONINTERLACED,5 p  ]% X* ]7 Z# a9 z# W
FB_MODE_IS_DETAILED,},
2 w0 Z6 J& D- {, v% h$ x{
2 W. s& A$ P4 o' s: Z5 ], \5 O- q' z"LDB-1080P60", 60, 1920, 1080, 7692,# A& i. t% [+ ], W- l2 O" Q
100, 40,
% u* f. |) C% K8 x/ T! I1 v2 h, B30, 3," h7 t1 v/ L& \/ A# L, W
10, 2,
  l7 F* D+ z+ C* ]0,
. k. l; ?5 ?/ o* QFB_VMODE_NONINTERLACED,
) ~  A4 P& `# t6 Z2 p8 c/ p1 o3 \: mFB_MODE_IS_DETAILED,},
9 B% z$ H3 a' {. B2 f. c1 v};
( w+ l* d  G4 a5 x6 R步骤二:iMX6Q Uboot部分的修改3 ^: R- @; e4 ]" I; D+ \/ p
修改uboot-2009/include/configs/mx6q_sabresd.h
  K8 T0 I( C4 k. n  y" N1 Q#if defined(CONFIG_UBOOT_KERNEL_LVDS)4 I8 q6 U1 L6 T: D* z: @' A
   #define MXC_FB0          "mxcfb0=video=mxcfb0:dev=ldb,LDB-WXGA,if=RGB24,bpp=32\0"
8 z) ~# C4 s3 W( @+ y   #define MXC_FB1          "mxcfb1=video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24,bpp=32\0"
1 L1 J% K$ c, U! Y% m" T   #define FB0BASE          "fb0base=fb0base=0x27b00000\0", O$ J2 t1 u' q  [
   #define FBMEM     "fbmem=fbmem=28M\0"' B$ D* z" S/ g" `- Q. x& e: B
   #define PANEL            "panel=LDB-WXGA\0"
( |8 o) Y( F; L% Q: \  注意:/ j  Y/ \# U. P
LDB-WXGA是和内核中的配置保持一致的。代码中的具体参数需要客户根据自己的屏幕手册自行计算,不知道参数具体含义的可以百度搜索了解这方面相关的知识。
: h: W: V0 j: R$ N4 Y: m/ O4 `1 j' U8 t: h8 Q! e
第三章 QT桌面旋转90度通过以下方法可以将屏幕上的QT旋转90度,180度或者是270度。以旋转90度为例:& G1 z4 q: q: S! d+ _, V5 h
修改iMX6Q文件系统中的QT环境变量脚本:: w3 y6 s4 ^$ u/ y# ]
root@freescale /$ vi  /etc/rc.d/qt_env.sh
4 J/ p5 l  b( x, K将 export QWS_display="linuxfb:mmWidth50:mmHeight130:0"
8 z$ h5 @' v! k$ `3 M3 y修改为export QWS_DISPLAY=”Transformed:Rot90inuxFb:/dev/fb0”
& y4 ^! C0 X1 H% r修改完成后保存该文件并执行sync命令后,重启iMX6Q开发板即可;有些QT界面不能够适应旋转后的宽高等,需要重新编译调整下qt界面的图形界面。也可以修改文件系统源码下的etc/rc.d/qt_env.sh 文件,改动方法同上,然后重新制作文件系统映像并烧写到平台。
4 q( R& f$ n  _6 i% X3 b- _4 [: c( ]( Y5 J# H  n! _1 \
9 f- M( j; B5 [) j# \

% `& j! e  M1 [3 e& F
  • TA的每日心情

    1684134877
  • 签到天数: 1 天

    推荐
    发表于 2021-1-13 17:32 | 只看该作者
    Heaven_1 发表于 2021-1-13 13:200 s& R9 r* v/ g- ]" s4 T+ c) ~
    现在QT在ARM里面用的多不多
    8 x* F+ e8 z- ^! C" B
    用linux的比较多/ s7 Z  F9 X  K) F! P

    该用户从未签到

    2#
    发表于 2021-1-13 09:58 | 只看该作者
    请问有合适的开发板嘛,* s6 K4 i6 c) j$ c0 c; x& ~
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2021-1-13 13:20 | 只看该作者
    现在QT在ARM里面用的多不多
    6 I+ g6 I/ w, Q

    点评

    用linux的比较多  详情 回复 发表于 2021-1-13 17:32
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-18 06:30 , Processed in 0.140625 second(s), 28 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表