|
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:Rot90 inuxFb:/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 |
|