TA的每日心情 | 衰 2019-11-19 15:29 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
一下几种方法参考一下:6 A' W; @, M0 @8 Y9 t, P0 |
5 Y3 B1 m2 g L6 \9 Q% v
8 l4 K# f+ c9 n( E方法一:采用iomux的方法
2 q, s# N/ |6 V7 J/ T在设备树中iomux中添加复用gpio引脚如下:
" Y5 t2 ~/ e. A' P4 b8 B4 g/ s8 i' E5 O9 f& z A
: n6 D, B' U2 [& D3 K0 }: ^
for i in /sys/class/gpio/* ; do cat $i/label; cat $i/base; echo; done 查询gpio的base* C% J8 \ S( z, }4 s
+ Q4 Z8 j) ?: T0 C( @ \% W一般可以这样计算GPIOn_IOx = (n-1)*32 + x
0 M4 i0 Y6 N. E* g( W) m g
6 C) x' J- M) b+ v1 i. m1 `4 P1 `此时可以使用echo命令进行控制:. X* i: G4 X* x' b4 R
命令为:
, }2 X. C! O$ L0 f- V- E, }echo $i > /sys/class/gpio/export' D |& ]. s1 M, \& w3 ^' [
# ^4 C' N7 i5 Q, ]
echo "out" > /sys/class/gpio/gpio$i/direction
j" o) u9 `4 `2 b2 @0 d或echo "in" > /sys/class/gpio/gpio$i/direction
7 X+ Y! T0 q) ^7 t: u/ {' f+ ^* q6 |2 w! u A' k
echo "1" > /sys/class/gpio/gpio$i/value
2 D6 |3 @2 h0 S5 n& a' _ r/ Necho "0" > /sys/class/gpio/gpio$i/value( ?% W9 p- C+ Q( k! ]* M) T
, q0 c4 G3 `, |- s' b' [echo $i > /sys/class/gpio/unexport
) k' p8 ?5 L8 T0 C" D2 L/ F或者使用 open("/sys/class/gpio/export", O_WRONLY); write函数进行控制。参考test.c。- v! |% M! U* f3 [
" w2 y; w' p+ u1 i8 l# M方法二:创建dev/gpio节点。5 k( P8 a5 A6 s
* ]/ w% }# w/ r0 P2 R4 y+ M6 Y& w5 b1 y) C6 S9 U
添加driver/misc/gpio/gpio-user.c,修改Makefile文件编译。
2 |* L/ l+ f' E3 F' o修改 driver/misc/Makefile 添加:: {: _3 V) E# q/ q/ M {
obj-y += gpio/$ m: r: x' f7 o
在linux_imx6ul_config中添加:
9 O( a' N8 N7 K6 ACONFIG_GPIO_USER_INTF=y( w( |, m! A. `
编译之后。在dev下有gpio节点。
0 C$ n/ a1 N0 |& ~4 ]+ G, @* G* k采用gpio-test.c为用户测试程序。编译为gpio-test。
& L" H: Y9 E X$ n' n( N0 g" q& V
" h% M/ L! j2 u. k9 u
使用gpio-test in 2测试DI。
( f- k; m' F* n, f使用gpio-test out 9 1 测试DO 输出为高电平。
. I* u# n% g$ ^$ H; ~使用gpio-test out 9 0 测试DO 输出为低电平
+ A* H0 t# Z. M& K/ ^0 J, j0 z l |
|