TA的每日心情 | 衰 2019-11-19 15:29 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
一下几种方法参考一下:- i3 V; u: C2 V6 m
2 C0 L/ t2 ^$ {0 V) r. X5 V4 P
c6 _8 W8 q" |- t$ I/ V6 e" N方法一:采用iomux的方法- \5 I9 |/ Y2 g1 D
在设备树中iomux中添加复用gpio引脚如下:
B+ a2 d. |! ?% s. J; A- q5 [# I. l& E7 P+ [5 W# x, r J3 q+ s: x
; k0 Y4 O2 e* X
for i in /sys/class/gpio/* ; do cat $i/label; cat $i/base; echo; done 查询gpio的base
* O" T/ v9 Z+ ^( M% u2 ^* ?: y9 ]/ Q8 y7 t* R
一般可以这样计算GPIOn_IOx = (n-1)*32 + x3 c3 c3 G0 M) o& |+ ]2 _: [8 e
- M( G$ l; q% P* k9 h此时可以使用echo命令进行控制:
5 V+ _/ ~. }, i: {0 D5 n+ y4 J4 S0 l命令为:
) x/ N& w0 t& v3 ]. Z) V' recho $i > /sys/class/gpio/export) V8 ]* U; g* I) f& z
1 R$ L7 Y: ~4 b5 k
echo "out" > /sys/class/gpio/gpio$i/direction: _2 u- b' z9 i: [& w
或echo "in" > /sys/class/gpio/gpio$i/direction( J' r* l: E2 f; A& v& u) p
$ V0 P( \ h* r) \
echo "1" > /sys/class/gpio/gpio$i/value3 h, f3 Y* ~3 H+ |" i/ R2 h
echo "0" > /sys/class/gpio/gpio$i/value
, V# w, Z) ^, ~7 Y8 U! k* _) f" k7 Q$ g' f
echo $i > /sys/class/gpio/unexport7 w. q" }6 I7 f
或者使用 open("/sys/class/gpio/export", O_WRONLY); write函数进行控制。参考test.c。
) |! T6 r2 z; o7 ?& P
) O a. Z' k% U2 ~* \方法二:创建dev/gpio节点。- k2 n9 ^, w: N- u
8 e& O8 G: k: K2 ^
* U3 M3 i4 s. ?- g! C9 E4 w) k4 y
添加driver/misc/gpio/gpio-user.c,修改Makefile文件编译。
% V- E' \/ x. O. ]修改 driver/misc/Makefile 添加:; K! g5 F( x* u1 F, d$ _6 S
obj-y += gpio/
0 E6 ]: o* c% J) d7 O) w在linux_imx6ul_config中添加:9 V7 g( K# _1 V g# q7 M
CONFIG_GPIO_USER_INTF=y
6 A; ]" R+ l; J编译之后。在dev下有gpio节点。4 u5 z6 `( f1 b" q7 f' {5 @* O ~$ f
采用gpio-test.c为用户测试程序。编译为gpio-test。" v$ B& D8 ]6 j5 ?4 W2 @
1 i' x& A! Q6 s2 p: `" D
. R; }2 z* c* U' C# s c
使用gpio-test in 2测试DI。) m3 H8 i4 i6 y1 N( E. f
使用gpio-test out 9 1 测试DO 输出为高电平。
, E- {; Z) N" H( D2 ?) I* T使用gpio-test out 9 0 测试DO 输出为低电平3 B6 f; U+ W& s6 i/ [* @
|
|