TA的每日心情 | 衰 2019-11-19 15:29 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
一下几种方法参考一下:0 [2 n. G c0 k" p' C
F: b/ L% `8 \7 ` W" J# y! z
8 [" n( b& w U8 j. ]方法一:采用iomux的方法/ K1 a5 F1 `0 e' y
在设备树中iomux中添加复用gpio引脚如下:1 ]' X7 P7 A' m) _. s
' t( z. Z! {! x; e% x, k3 F( g" t: X/ V. c: I7 b3 n
for i in /sys/class/gpio/* ; do cat $i/label; cat $i/base; echo; done 查询gpio的base; a3 l) A. N/ j. z" \' h# o6 N4 R
. i: [! K/ m: |* I/ b$ E
一般可以这样计算GPIOn_IOx = (n-1)*32 + x. f" a: X \+ x% Q
# i' k: V. f" M+ ]* @
此时可以使用echo命令进行控制:+ G3 K, `. @ c4 ?' r; y
命令为:; j7 t+ U" f2 J' Q) f1 |, G
echo $i > /sys/class/gpio/export
, w! B0 Y5 s! R5 ]2 }
8 o& @5 K5 c1 v, M, B5 D* p2 W4 Pecho "out" > /sys/class/gpio/gpio$i/direction
1 z& |$ p" b. n3 W+ i# l, j2 ~+ ?或echo "in" > /sys/class/gpio/gpio$i/direction
" Y( t5 X6 u$ K- c0 F1 I8 `, {: ^5 @6 a8 s5 u: m
echo "1" > /sys/class/gpio/gpio$i/value
; w* {' w! o9 o6 S6 e; cecho "0" > /sys/class/gpio/gpio$i/value' _8 w' { X0 U1 T! L5 u- X
; L1 W+ L: `* R, F4 L2 Aecho $i > /sys/class/gpio/unexport
0 w; Z: w1 f2 ~/ d5 c或者使用 open("/sys/class/gpio/export", O_WRONLY); write函数进行控制。参考test.c。) \* Y; H) {1 y* h7 }
- s) X5 g# U) q; N. y4 g方法二:创建dev/gpio节点。5 |1 {9 E: v# N$ x* k
# _. U& W) `% f3 M# A" x& Q7 Q9 T
添加driver/misc/gpio/gpio-user.c,修改Makefile文件编译。
% e. F8 W8 O0 r, ]* w7 |! O修改 driver/misc/Makefile 添加:; [% Y) ~' S9 S' n* k0 s
obj-y += gpio/
+ S$ a6 S, Y) j" I N; L |- t在linux_imx6ul_config中添加:
8 m" p% q' E" n/ `CONFIG_GPIO_USER_INTF=y0 s: _- R& e8 E7 M) e6 p1 r- @
编译之后。在dev下有gpio节点。
$ `+ j9 c* w# T5 Q% |3 s. o采用gpio-test.c为用户测试程序。编译为gpio-test。
- @1 e. J1 ]( n. H( {
, j q! r, J* e3 |% E, k, }' j( P# d7 a5 V
使用gpio-test in 2测试DI。9 W8 S9 ~( F S# Z( Z
使用gpio-test out 9 1 测试DO 输出为高电平。
4 W, m* Q7 x! y1 z/ f6 O8 F7 F使用gpio-test out 9 0 测试DO 输出为低电平9 a4 i8 Z5 i5 e5 X- f
|
|