1.实验目的
. g$ p( l. t5 \ Y ?熟悉基于Linux操作系统下的触摸屏设备驱动移植配置过程。
" I% O* {3 _9 z! N% S' y, [4 o4 K h3 t) o/ h5 p
2.实验平台" p$ G, C1 ^: T
华清远见开发环境,FS-MP1A平台;" g8 F0 `1 y; N6 K
( s2 j' d* ? [7 M/ A8 x: U3.实验目的
$ E/ _) T4 k' e4 j/ h1 c* @# x0 P0 _熟悉基于Linux操作系统下的块设备驱动移植配置过程。- U$ j* k5 G( t
9 w; H6 K4 c) ^4.实验步骤
+ E+ z" Q& W' _- M# r7 u% K+ |1.导入交叉编译工具链% m% c" I) H3 N D: P. w1 T
- linux@ubuntu:$ source /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
复制代码 0 M m, N$ m. y- ?* r8 r
过程与5寸触摸屏移植过程相同,如果步骤重复请跳过。
' V6 x/ J+ |% H) m2 P2 k0 t* X3 }0 ~' e, p# X$ s9 {( u
2.修改设备树
- d8 K1 [& b# H" Y& @8 a修改arch/arm/boot/dts/stm32mp157a-fsmp1a-rgb070.dts文件,在文件末尾增加如下内容:) z1 Q6 h7 F0 O+ A2 U5 B5 h
. f# [; P5 t. y" a" v4 J' i9 r: L
- &i2c2 {
% W# n" k/ p& F% g/ l, c1 B - " l5 G5 @$ q! {% d0 P. M3 m5 i
- pinctrl-names = "default", "sleep";/ U* Q! n$ q) e! X
- ) ]: ~" l# s! C' F, @
- pinctrl-0 = <&i2c2_pins_a>;
4 K, T0 C2 b. ?- v( y - 1 a" p) I5 P! R% c. M9 J
- pinctrl-1 = <&i2c2_pins_sleep_a>;7 p y- R$ O* J7 C4 a3 M
9 M' ^+ I& a5 z$ W! m& o- i2c-scl-rising-time-ns = <100>;( k3 u% e/ c+ L
- / h% I9 C. t B0 Y
- i2c-scl-falling-time-ns = <7>;( r, p; O. ^, v0 L; f5 q5 c4 {
5 z r; D; r: @" I/ R6 g$ s- status = "okay";
5 O4 k$ J3 Q1 q& b5 a6 _9 G; j4 B - 6 T# }, d1 W$ u7 o# ~
- /delete-property/dmas;* g7 w5 e6 ?5 v) z$ F" m6 e- x
, k! e& d, I1 j2 E {. D( S8 L- /delete-property/dma-names;
$ a9 a$ q) r8 ^# [# ^ D& F - ! x/ g5 t _" O, e! R! l& b5 z3 u- D( `
- touchscreen@5d {1 S3 \* a3 o& V5 T/ J
- * F( v6 u0 u9 d5 H3 ]/ j; i
- compatible = "goodix,gt911";. c+ @5 a E5 `4 P
7 H/ y. v9 P# o2 P t- w) K- I3 h- reg = <0x5d>;4 K, [; V& x5 u+ U/ G. E& R* Z9 l
( f) {8 |8 ~# Q* {- irq-gpios = <&gpiog 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
( F X% S: p/ _& L' D1 O: {$ E4 y
1 ~7 A/ g) t1 h0 p- reset-gpios = <&gpiog 8 GPIO_ACTIVE_HIGH>;
4 G% @4 q( B; S2 `6 { - 2 G5 ]. s8 W5 @' I% d& g/ n3 i
- interrupt-parent = <&gpiog>;
( X, G: u, m0 i4 B& t - & B9 \6 T1 L: a/ ]7 A0 b
- interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
, ]; [- S& P8 h3 Q1 d' _& ]1 `
2 c! c/ l# d, Z @4 K: t- status = "okay";6 `4 R/ D/ Z6 m5 R, J1 q D2 X
- 7 h2 T% Y8 i6 D1 K1 j$ T* y; [
- // touchscreen-inverted-x;
3 Q' ^# H) v5 _% {; @. ~0 G# S' I
; |4 u+ l# O6 T+ E, f i- touchscreen-inverted-y;
4 [5 {% b/ o4 s5 p) E, _; k
* C1 d& `3 q* }$ A. t- touchscreen-swapped-x-y;
) S, }8 `5 x) K. p; O& D) Y - ' r8 P/ C9 w9 C
- };
. |' `0 x6 T# N$ m# A( p+ w+ L - ( F) Y/ k' C# F, F: h `1 S
- };
- _. J2 o3 h* H* e% g8 M
复制代码
& @, M6 H/ h9 M+ ?3.配置内核
7 v3 y9 i" Y% |由于内核源码默认配置以及支持sii902x,本节列出主要选项,如下:
1 P: b3 ?6 p& M" }# }* [
! r2 T) z2 ^/ S1 a# p- linux@ubuntu:$ make menuconfig- V5 z& O& y0 g
- . S4 t$ W% u5 p& X/ b
- Device Drivers ---># c9 L% o, L& t; @: O9 B" l
3 p& I n6 x& l7 x- Graphics support --->" T8 F) y2 Q. w4 V- B
- + I% k( R t0 U9 n" I
- <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
) N9 K% a+ K5 l8 @) X# l- p - 1 \ ~( w3 q, j
- <*> DRM Support for STMicroelectronics SoC Series. `! l5 @9 u( {- S8 C, }, V
- 5 v0 Y0 h' i8 q+ f O
- Display Interface Bridges --->
; {# Z+ D; s4 O- \' \7 f) {" a. D( t - 1 `! g# d$ u- g. b. n
- <*> Silicon Image sii902x RGB/HDMI bridge
复制代码
' U6 C& P. Y. |- W4.编译内核级设备树:
7 T0 ^ M- f% R+ w! l( Hlinux@ubuntu make -j4 uImage dtbs LOADADDR=0xC2000040( w- ~4 j' U+ ?1 }
( w1 L9 S8 z* ?0 Q5 b5.重启测试
5 r' M( O0 s4 ?4 X& ]0 a# z将编译好的设备树和内核镜像拷贝到/tftpboot目录下,通过tftp引导内核,设备连接七寸屏,重启设备后查看/dev会多出event0的信息,这是点击屏幕会的到反馈。
3 g: Y0 k9 w# y- z- g! K
! g- |7 N: b7 w" C5 E3 n% v" @root@fsmp1a:# ls /dev/input
R; J7 K: V* w+ d0 q( _: b# D0 y$ B/ G2 u0 C) n4 ]- u& j& F
8 [% ?1 Q7 v0 ]( V* x" |
: z# E, Y+ M$ i1 \————————————————5 G5 G1 L) m# F D' b) c0 u
版权声明:华清远见IT开放实验室6 Y7 {2 T3 K1 e. e- @3 d
`6 z5 C5 S+ s' x |