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

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

[复制链接]
STMCU小助手 发布时间:2022-9-30 18:06
1.实验原理
) O7 I2 I; f/ k9 ^FS-MP1A使用的是GT911触摸芯片,通过I2C2总线与SoC进行数据交互。
7 _/ C( r+ h6 Y3 C6 j% R. P, |+ {' W/ l: ^& u
b2fd170947e7b97498991b0df32bd6f8.jpg
  v# J) f, Y, X+ p0 d' \1 t8 G% C% X+ S/ `8 h
查看原理图确认I2C2管脚对应关系:& U# k5 w( v8 e3 w3 G! k

* R3 b! l& F( E) f9 I8 N5 M( J 11e757d5ab4354868f409eb5eb698979.png
, v5 n, ~( ^& r$ N; e' D' o) ^: A' Q: U9 i
查看原理图确认中断管脚TP_IRQ和复位管脚TP_RST管脚对应关系:
/ S. k$ f. Y1 k7 n- |% E/ A' H4 A2 w: g) G
0c1c8af05845096fd372c5a8040bedee.png
- L+ P8 X' c% U3 F O9%UE0N_L[K0_5D`BF$Y6A9.png
& ^6 W9 w6 z* P$ m2 _, ?
, g. {9 c: r/ Q1.I2C2设备树节点5 S* I8 \2 `3 l) S
I2C节点添加与HDMI中对应I2C的内容一致,本节不再重复。/ R5 B5 c( }9 e! h7 e

! r2 I  B3 Q, A% d5 v: p' {2 J2.触摸屏设备树节点3 y: _9 P  V' w* ^5 U

  E2 {  F- S6 d# H  W  J参考goodix.txt及ST提供的I2C相关设备树文档,触摸屏节点内容如下:
( P% S. h# ^* ]/ A3 k1 j/ u7 Q# D. |
touchscreen@5d {
1 u6 H) l6 w  L) }: m# {' c
2 t+ }1 V+ x/ ucompatible = "goodix,gt911";' A! {. P+ D' S8 b

; a9 ]. f! P3 p+ J) ?- jreg = <0x5d>;
2 e5 u" d1 s0 B* }. h- l8 m  J2 }2 U4 L7 E& W5 [
irq-gpios = <&gpiog 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
  L1 P$ M7 s9 j' \% o
2 a, |" W9 v$ z2 f9 s4 zreset-gpios = <&gpiog 8 GPIO_ACTIVE_HIGH>;
) X6 D6 Z# p( ]; s8 a. B7 U  j- T' A! S& ]. _, E
interrupt-parent = <&gpiog>;
' O, K  X& ?9 N% v' S
! h# k1 o% j$ C# l9 B/ }interrupts = <7 IRQ_TYPE_EDGE_FALLING>;" r: s2 `  Y1 M

' u, ]+ i: ~  k$ e5 W7 l0 P* E7 Estatus = "okay";
/ i* j& C9 v! L$ Y
) w8 T4 Z  `- |// touchscreen-inverted-x;7 z* L$ `  h' r* k0 f3 F

& y8 u' Z  @$ w' Atouchscreen-inverted-y;# S- I7 }$ T0 N3 S. E

  d& {, c: j* I! u// touchscreen-swapped-x-y;# K5 ], H  Z8 k" ~4 z" ]) Y
# w; A$ M6 m' }1 ?6 i2 z
};+ Z1 M# r' T9 T8 L& b% \' x- l( K
) u& o( e8 f$ M; ?- o! T* h3 D
2.实验目的2 |: a: D3 m2 x* q& B: ?( ^! R& M
熟悉基于Linux操作系统下的MIPI 触摸屏设备驱动移植配置过程。  H1 o  O; d6 s7 |3 F$ y' u  x

' v- y+ m9 R% e' G% Z3.实验平台* w, [' d% W9 H. g1 S
华清远见开发环境,FS-MP1A平台;
! z- T, y+ a* C' |
* e: c; Y, f9 r" T+ N- A4.实验步骤$ r5 `  T6 s0 t( b" k- i% J$ F
1.导入交叉编译工具链
4 I! R  ?2 c4 [+ V. Y; F* elinux@ubuntu source /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi5 V6 j! n$ a( H. ~& {
/ E3 a' e0 i1 J9 V# X
2.修改设备树
; t- M- H5 `7 d+ |# L1 c修改arch/arm/boot/dts/stm32mp157a-fsmp1a-mipi050.dts文件,在文件末尾增加如下内容:; D: U+ t9 i7 y7 N0 ?& I' e4 y

! t- _; @1 P3 I( Z9 ]7 c; v" w% q&i2c2 {
' R0 f: y+ v0 p, T6 [3 x! v/ ^: h* v' V* G0 d
pinctrl-names = "default", "sleep";
* Z5 G) a3 N& ?7 ]( T4 ^
& Q8 p- \, X- N! X3 ?pinctrl-0 = <&i2c2_pins_a>;& L# o% d3 r3 z& C  a

% u+ L$ G6 ~- c9 Y! A4 d* spinctrl-1 = <&i2c2_pins_sleep_a>;4 }& |/ b( O- d% D
% ?7 g) m( u5 o. C# g! M1 T0 v1 K
i2c-scl-rising-time-ns = <100>;
% {+ D6 I: C$ K1 y2 h9 v2 G$ P/ R
  O  A, _& _& }+ W9 _i2c-scl-falling-time-ns = <7>;$ H' g9 _  C) Z. s, j6 t

4 q! y/ Y$ D7 c  q9 Y& c$ ]status = "okay";: s1 p# `' Y5 J6 v
/ b0 z) ~& a. g2 I3 Z, H; @
/delete-property/dmas;2 f& D8 M* J0 E! Z# B  z- L
2 e, ?& X% g6 p* W
/delete-property/dma-names;
9 E; S, [  _9 ]  L$ T# R+ p. D. ]3 ]) y9 k
touchscreen@5d {& p. b) n( U% n

+ |' h& _; X/ ]! A* jcompatible = "goodix,gt911";5 m% E- {2 n8 F8 c

5 n' W) t( b  X' U$ L3 [reg = <0x5d>;
4 A+ z4 w3 ^4 `3 A/ C3 ~% q8 `1 f
. m  t# W3 {; x1 I% y3 tirq-gpios = <&gpiog 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
- `9 O: n! ?! T+ _* c9 b) V9 |) k1 L% q# D& e5 e
reset-gpios = <&gpiog 8 GPIO_ACTIVE_HIGH>;
0 n. }; \/ B. x. o5 T+ {5 i4 G6 w) Q6 c7 _& m7 s
interrupt-parent = <&gpiog>;" V+ I, \. {& I" }6 Q- g" x
0 [* i2 J! h/ K( j4 @, b1 k% R# N
interrupts = <7 IRQ_TYPE_EDGE_FALLING>;" A; N" U$ l7 ]& ^3 i

3 g( P4 O: @0 k3 Qstatus = "okay";' C7 s. H8 R7 @3 u+ T
7 t# G2 r! w& k9 w) Y' d2 G! J1 G& d
// touchscreen-inverted-x;
% _. c& d# l# ^8 ]
( q; R; W: E- H  L9 i% Ztouchscreen-inverted-y;
! b/ n: F  z0 ]& d" R+ T. g- U* ?
! ]! e4 z7 @: u7 O* w// touchscreen-swapped-x-y;
3 A) B6 _! i. a5 d+ R! _! T  t& k) U, y. b; X  T1 _. M
};: k/ d3 N0 z8 |/ o! [( q6 y

: v# j5 D+ P& Y3 A# U9 p# n};
" y; |- N; H4 H. y( @4 i+ ~; q0 E) M6 O2 z
0 ~' Z, [+ e% Z3 S3.配置内核& M, @# q. m! z. N+ n' }
由于内核源码默认配置以及支持sii902x,本节列出主要选项,如下:
* d' G0 f6 E, S1 a! g% ~6 Z
. Z% P' L$ Q$ U5 n/ R6 p7 q7 E/ |6 }linux@ubuntu make menuconfig- x6 B' E3 D6 {2 j9 e

( P0 O! F1 ~$ F( DDevice Drivers --->
5 F& W7 f2 I3 W8 K/ e* I7 D( g0 w$ \, y4 j+ Y( V
Graphics support --->
) d* h+ h$ Z$ j2 [  U8 t1 F" j* Y4 `/ A0 M! {& y: l( ]
<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->3 f) }1 ~9 Y( u* I

  l% T' C) H7 R/ y! k2 ?<*> DRM Support for STMicroelectronics SoC Series
$ {6 f5 a/ F7 P" T8 [: ]6 _3 M$ h& ~# m* A
Display Interface Bridges --->+ Y3 ~$ J7 e# J4 C
; Y: b2 W7 p( _: ^( v8 y6 k
<*> Silicon Image sii902x RGB/HDMI bridge
. D6 Q" c6 a' ?% d/ ]. z6 s5 G4 _9 g- Y  }9 t# ]! x* R
4.编译内核级设备树:
8 c1 E$ _: Q8 H( K* ^linux@ubuntu make -j4 uImage dtbs LOADADDR=0xC2000040
6 w/ R: D, f  {3 \# T, L7 ~3 x: L% B( c: |9 z& F, U
5.重启测试
) n3 e' G1 g% y  F将编译好的设备树和内核镜像拷贝到/tftpboot目录下,通过tftp引导内核,设备连接MIPI屏幕,重启设备后查看/dev会多出event0的信息,这是点击屏幕会的到反馈。& y; A3 f0 Y* S, Q# U' J

2 \3 O% p( p/ O& \/ oroot@fsmp1a:# ls /dev/input  s- x% f" Y; e& |8 b3 p

1 i6 g# t$ N  N: C2 `* P  ~ 30bb5596ca3a6155b667790f7e3002fa.png 5 K5 K2 e2 x8 ]. g- P. e6 F
7 Q8 n0 o! n+ s! o( {
————————————————$ v9 y/ e) f' ~( E& O
版权声明:清远见IT开放实验室2 l, P2 f( V3 c4 p

% s4 T8 w4 f) _; ^
! P$ f9 R5 H& A  a9 ]* y
赞 收藏 评论0 发布时间:2022-9-30 18:06

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版