TA的每日心情 | 衰 2019-11-19 15:29 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
一下几种方法参考一下:
' A: ]" `8 w2 [5 y; J+ n2 E* @
0 k5 w, e; ~3 e# j: a2 k
方法一:采用iomux的方法8 ?- ~% L6 e g K! d( p
在设备树中iomux中添加复用gpio引脚如下:7 c7 z k+ Y' b/ g% l: {
2 ]% X4 R8 B% O/ n
; w$ W( e4 C" `# O# j8 \" h! Tfor i in /sys/class/gpio/* ; do cat $i/label; cat $i/base; echo; done 查询gpio的base" D3 u" e0 a! O- C& a
8 Q/ K* C8 x- n5 S) V! w
一般可以这样计算GPIOn_IOx = (n-1)*32 + x# e- }/ H7 e$ H {, @
) s* ^% g8 ^" A1 u9 S0 z
此时可以使用echo命令进行控制:
5 U$ @7 D* X4 n: l! f命令为:7 J/ s# P% l/ L! ^0 [
echo $i > /sys/class/gpio/export
4 J; |# E1 _! w* X& r& O4 i: M! P8 W4 d. G; _' @0 i: y8 m
echo "out" > /sys/class/gpio/gpio$i/direction! F6 u2 y: a$ m" f( M/ b& W5 w
或echo "in" > /sys/class/gpio/gpio$i/direction+ x4 ^6 [$ O- x( J3 {% l( @% X D% t; I
5 Z6 P5 A7 \ b3 Mecho "1" > /sys/class/gpio/gpio$i/value
j. V* c5 H& t6 |) [echo "0" > /sys/class/gpio/gpio$i/value s" N% N2 |# F0 ~+ h, Y* ?
! c3 q1 ^. Y& k. o4 p+ i
echo $i > /sys/class/gpio/unexport7 u/ Q7 s+ y6 v. O( [
或者使用 open("/sys/class/gpio/export", O_WRONLY); write函数进行控制。参考test.c。
% u7 o' H0 i) Y! A+ l2 F& Y5 F* H$ P1 F
方法二:创建dev/gpio节点。
/ ^; L" m2 C) e y7 a) z9 k5 z) p+ p, F: L: ?
" Z( F; N: d4 w" f* ]添加driver/misc/gpio/gpio-user.c,修改Makefile文件编译。6 i: u* R& \+ l9 H/ S
修改 driver/misc/Makefile 添加:
4 j" T. [4 G* S" B8 Tobj-y += gpio/
2 }/ @3 o4 o' G2 ]) E9 {在linux_imx6ul_config中添加:
1 j" ]3 P9 I/ oCONFIG_GPIO_USER_INTF=y9 y+ m1 E4 Y6 h) m- G1 T, ^; H/ d' x
编译之后。在dev下有gpio节点。( C/ N4 X i v" G
采用gpio-test.c为用户测试程序。编译为gpio-test。 i+ N0 D" f, _1 @2 y0 u/ E- x0 v, Y2 s
- ~/ {# h( f( H. u* H1 d& M
. {/ O; o1 ]2 _8 r+ b$ Q
使用gpio-test in 2测试DI。
4 M/ K9 j8 r2 a! h使用gpio-test out 9 1 测试DO 输出为高电平。
1 \' c0 K, K; L* H1 B7 v; v使用gpio-test out 9 0 测试DO 输出为低电平' [% G' V$ V4 k ~1 w' w1 |
|
|