TA的每日心情 | 衰 2019-11-19 15:29 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
一下几种方法参考一下:; b; }7 v$ V% D9 p' u$ x
. t# y# U- J7 Q9 u4 c! I6 z5 ]
1 [# ^* X$ [; T, S$ `- A
方法一:采用iomux的方法5 P3 D( {- z& h
在设备树中iomux中添加复用gpio引脚如下:5 C/ k# D( P5 [$ X* Y, k9 x ^3 m' \
4 K4 c3 Z. C9 _( m
( E+ B* [# O$ U; |7 N' Yfor i in /sys/class/gpio/* ; do cat $i/label; cat $i/base; echo; done 查询gpio的base
: n _0 o2 V7 \
7 l# T! y$ _& f1 O0 g# u一般可以这样计算GPIOn_IOx = (n-1)*32 + x: {* r* @" @# Y" q6 f! n0 {9 p6 q
3 q9 r0 Z7 x) ]2 n' o此时可以使用echo命令进行控制:+ t& k& l, T$ [5 G
命令为:* m/ N6 V1 b" u: S
echo $i > /sys/class/gpio/export# n. y6 c* t h& H
3 k2 \4 J7 z6 M9 E3 o Iecho "out" > /sys/class/gpio/gpio$i/direction! S* A9 y; T7 o9 P
或echo "in" > /sys/class/gpio/gpio$i/direction
' n2 `. }. r- b' }0 H# ~; j( ? k# l* ?6 d. y
echo "1" > /sys/class/gpio/gpio$i/value
: m9 p& @. h" recho "0" > /sys/class/gpio/gpio$i/value6 P' _8 Y4 }9 C5 I8 f# }
: \* z6 P/ N( k8 K+ P
echo $i > /sys/class/gpio/unexport
1 `, }/ [. o) j8 n: }9 F或者使用 open("/sys/class/gpio/export", O_WRONLY); write函数进行控制。参考test.c。
& {3 F% h; f& B( J/ Z
& A7 ~* d+ w {: P1 ?. ^: U' A方法二:创建dev/gpio节点。5 p) @3 j8 ~. [( ~
$ h, @# X5 R* ~. j8 Z
( H! G/ P+ j- y' G添加driver/misc/gpio/gpio-user.c,修改Makefile文件编译。
; E6 h& e0 v& r9 I4 e修改 driver/misc/Makefile 添加:
, y" t9 W7 D) c$ kobj-y += gpio/
& Z+ t( X6 T$ {9 w- I在linux_imx6ul_config中添加:4 h+ e0 g9 R' a) p2 Z7 j7 i
CONFIG_GPIO_USER_INTF=y
$ [( \" I3 U) U* k编译之后。在dev下有gpio节点。
. W, W# \# Y( W8 L采用gpio-test.c为用户测试程序。编译为gpio-test。
# \ @- U/ l, B- w6 n+ z3 z7 D/ q n- U
1 p0 o+ L$ N& i使用gpio-test in 2测试DI。4 H; L9 l' ^+ S; n! G
使用gpio-test out 9 1 测试DO 输出为高电平。
1 b( D- z8 `, a$ {2 z" W使用gpio-test out 9 0 测试DO 输出为低电平
8 E' V( ~- @$ g2 p' X' A |
|