你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32MP157 Linux系统移植开发篇13:Linux内核5寸触摸屏驱动移植

[复制链接]
STMCU小助手 发布时间:2022-9-30 18:06
1.实验原理* Z( K) @! B- N0 i, c$ L& M
FS-MP1A使用的是GT911触摸芯片,通过I2C2总线与SoC进行数据交互。+ l% s; V# S. N; M

# T  @! |- F8 ?1 x b2fd170947e7b97498991b0df32bd6f8.jpg 3 x! |3 f3 `0 \2 r

8 ?' d8 E& |$ W; Q查看原理图确认I2C2管脚对应关系:
- i4 s7 b$ f/ L, X0 J+ d, Z0 c) K) L1 w. L, j& v
11e757d5ab4354868f409eb5eb698979.png
6 m0 h( g- }" d9 @/ d* {4 l. }0 i* Y) h; A/ B2 I% {; i# c- v3 O
查看原理图确认中断管脚TP_IRQ和复位管脚TP_RST管脚对应关系:
$ ~% d5 Y' K7 |! F
" X; G% m; u# s- X& u" h! L% p 0c1c8af05845096fd372c5a8040bedee.png $ n5 z0 ?' Y% p1 o5 {
O9%UE0N_L[K0_5D`BF$Y6A9.png ; H, i% I0 J. V6 @+ w  j% s
* u: D" V$ I$ d8 w9 c. G( V+ z
1.I2C2设备树节点
; j9 P$ q! u0 N2 P, B5 b! u* B9 m3 _I2C节点添加与HDMI中对应I2C的内容一致,本节不再重复。
# Y8 e" [3 \* B' M; F& d' H  `# i& F8 l  C
2.触摸屏设备树节点8 b2 ^- J+ V3 r' E

/ y# `& G$ F4 n. b' P* x: R参考goodix.txt及ST提供的I2C相关设备树文档,触摸屏节点内容如下:
( [- F2 `) `+ P9 y- \$ g6 K4 O3 K& q# {8 x6 G9 z  n
touchscreen@5d {% k( b- {8 r& Q! d6 u( B
* z7 t# ]+ Y( E" x! Q
compatible = "goodix,gt911";* r! v& ^' p# G7 }. x6 B$ ]
7 p5 T& h2 |! `
reg = <0x5d>;
2 Y- g! w8 E" r: J" _. P) n9 e: Q: U; ?  f6 I* l9 O
irq-gpios = <&gpiog 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;9 `) E9 o6 j0 I  l
/ o# @) I& r5 [" a) {2 n1 M( {& h
reset-gpios = <&gpiog 8 GPIO_ACTIVE_HIGH>;
% e% {: Y( ^  I& q. g( j5 }+ E# V
$ o1 I0 L& [+ A, e8 m) Zinterrupt-parent = <&gpiog>;( O* G# e5 t" I, R$ E! t! C  F1 `
* K; E2 `. r  F9 f  g
interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
0 U! D0 g, t/ z% \2 U
7 P4 L2 M2 J; ]$ qstatus = "okay";
+ M3 u. G6 M0 k9 w6 b# j$ H1 D" C$ d+ J6 u3 s
// touchscreen-inverted-x;1 \5 g0 T: i9 A, p

2 l5 {/ y1 t. c* g# P6 @touchscreen-inverted-y;) I+ f6 S" @( ^8 ]* M! W( t! n# }! m

8 `, X/ {* u0 t" g; a3 u+ G// touchscreen-swapped-x-y;
# _6 e; _7 P2 C
+ X& M! y5 m8 M$ n% f1 u};# E1 j7 u: |* \6 v* M+ F

% T: M! }* D$ l- g2.实验目的
6 Z! Z3 q: K; ]2 g  P熟悉基于Linux操作系统下的MIPI 触摸屏设备驱动移植配置过程。3 a6 ?* v- f& p. J/ t$ u, u

9 w3 r9 _" f( D3.实验平台" v5 h+ r" X7 s7 I# z& S
华清远见开发环境,FS-MP1A平台;
/ q: _; x' i5 i& S0 H! T7 i; q$ Y0 F! M5 c
4.实验步骤
7 ^3 j& s( _. _9 w4 A0 A1.导入交叉编译工具链- B  q0 G( P, p& k7 I  D% T/ j
linux@ubuntu source /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi) {7 S- u5 s$ p
/ k* G3 |& w! I8 y
2.修改设备树
* w$ w, j! i# d0 g* m修改arch/arm/boot/dts/stm32mp157a-fsmp1a-mipi050.dts文件,在文件末尾增加如下内容:% y3 v( ]4 T; q' J% D4 f
4 h3 D, V0 M% f1 K8 u$ A2 x
&i2c2 {
: [' _2 z) s2 g+ Q, C! z' T% e- s9 g  w
pinctrl-names = "default", "sleep";
* M5 F4 E) a; _4 H$ d# o9 M. s4 \- U3 v$ u9 e+ z( Q& L7 s' D
pinctrl-0 = <&i2c2_pins_a>;
) z% q! Y5 e. k. d8 _
7 @# i) _9 Y$ N3 O6 ~; M5 B3 y  Lpinctrl-1 = <&i2c2_pins_sleep_a>;
* f/ I( H0 [: v* N. Y
/ I2 T3 R2 I' `6 D* F! m4 li2c-scl-rising-time-ns = <100>;: f4 R1 a" k0 |& W

5 `; [; I! z' U& Q: Y# Mi2c-scl-falling-time-ns = <7>;
0 E' ]7 E9 j: O8 ]) G$ d2 |1 J" d- m2 f) e6 A
status = "okay";
. [* {" }) ^% B- y0 {, L
( w4 ~& Z0 ?7 o3 I2 x/delete-property/dmas;/ A0 C  C1 K* Y
% S2 @  `1 H- I0 q  D4 j
/delete-property/dma-names;8 ~" J5 S( B$ F. s, z6 H& H
7 N0 m1 U. e+ l( {# M* w9 Q2 q
touchscreen@5d {
3 K) M0 B; m# c8 F* U' _: \, W. p$ k3 E2 i3 I" W' ^9 \
compatible = "goodix,gt911";7 S8 `0 u- }4 y. Z/ R
+ w; r) f0 H0 p- y" {( Z
reg = <0x5d>;$ f; l' `: ~1 M9 ?
7 F8 M, h/ v0 b1 L5 z0 i
irq-gpios = <&gpiog 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
$ D4 S- V9 ^5 B- T- {1 k0 B& e; @! a. r5 O
reset-gpios = <&gpiog 8 GPIO_ACTIVE_HIGH>;
( O: w, L7 w! s1 y1 B$ B( W- `) F% g
interrupt-parent = <&gpiog>;
+ f! e8 _4 O  m# l  p. A- D
* R6 Q) b' f; a3 Z5 Rinterrupts = <7 IRQ_TYPE_EDGE_FALLING>;; w1 [$ D8 X" O- m3 O- D6 i- X
; m8 L, x6 l$ n3 l& F5 {$ \( E
status = "okay";
+ z5 C+ ~0 W* S, T& X! m. y
% w7 L$ X2 e/ q+ [0 Z( D9 }. t! ~/ o// touchscreen-inverted-x;, G* ]! T* ?, [& U- m
1 X8 }, ]% N) P" w' K! z" x# U
touchscreen-inverted-y;" Z4 l# V) Z) \5 S2 H8 u

( o) }0 C1 w( l/ z- s// touchscreen-swapped-x-y;
# I8 V2 L! ^6 T7 n1 O1 O
0 f! l8 w& n' H' [};
  Z( h, c; ]# k- g0 x4 W- q: Y0 m# v# s1 p
};
8 T/ j: z1 s( _  _$ g9 B
8 c" Q4 n# C) ~( c1 y1 _# Z6 D7 K3.配置内核
9 _4 K# f% A6 R7 A& i由于内核源码默认配置以及支持sii902x,本节列出主要选项,如下:
. }/ e! ^2 C2 y; D
9 C4 Z4 J+ z. U/ |linux@ubuntu make menuconfig, e$ Q# m  r3 k# h* l$ B

1 F/ o. ^- M; m) p) w& CDevice Drivers --->- z$ h  ]% g: {# Z( v3 w

6 r' X# u) k# q' l6 j- NGraphics support --->. S1 y7 d4 C: V* Z$ G) ?: @% N4 t" h
1 ]0 D- i5 C, s2 v; b8 {4 M
<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
: |' S/ E9 h# q
4 e2 y4 J+ ?6 B6 ?<*> DRM Support for STMicroelectronics SoC Series
' W( ^4 h( p# i) R
4 z  e. G- H7 mDisplay Interface Bridges --->% P5 M$ l3 }  Q) Z* v4 ^# X& m

% e7 Z2 i2 v% L  j0 l3 B<*> Silicon Image sii902x RGB/HDMI bridge, K* h! |, o$ w6 n7 }, Q+ q

% O# J7 E! Y' d  b2 I4.编译内核级设备树:* k( z0 \3 H) @$ h
linux@ubuntu make -j4 uImage dtbs LOADADDR=0xC2000040
* |/ w% C2 \& \: j/ g. g6 \5 f" m* u2 Y, k2 d1 r1 H
5.重启测试# L& f' _5 B8 \( q
将编译好的设备树和内核镜像拷贝到/tftpboot目录下,通过tftp引导内核,设备连接MIPI屏幕,重启设备后查看/dev会多出event0的信息,这是点击屏幕会的到反馈。
5 k9 j' o" O, d" n
, |1 h+ K( Y5 E% c. jroot@fsmp1a:# ls /dev/input
. \! x6 s$ s" @! u, O! T
6 P" e) k3 q! H! p* g1 S$ g 30bb5596ca3a6155b667790f7e3002fa.png
& O) ?9 h; N; @3 t9 j$ I2 ?: }1 {* j) K. h
————————————————
7 B# q+ F8 z4 K9 U3 i版权声明:清远见IT开放实验室! S: z9 Z; h- C% T

- u! e* q9 ^4 C+ |0 H
2 I) {, q: S; K: `1 p7 W
收藏 评论0 发布时间:2022-9-30 18:06

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版