TA的每日心情 | 衰 2019-11-19 15:29 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
一下几种方法参考一下:5 I1 W1 v1 E7 [2 H' T
, Z% Q' @) ~3 U# R/ ~ _
' B, k: [/ b% ` w
方法一:采用iomux的方法
3 F( p* {# D: |在设备树中iomux中添加复用gpio引脚如下: w% O9 V6 ]3 U( M+ Q8 ~/ y
- K _0 C/ }; k( C. j, n
* \* e$ v' n8 n$ w) S7 W8 H3 L
for i in /sys/class/gpio/* ; do cat $i/label; cat $i/base; echo; done 查询gpio的base: A& b c ~* r2 C
3 a# i$ Z! h( A' P% d5 \0 b3 p+ s一般可以这样计算GPIOn_IOx = (n-1)*32 + x4 k2 e% z* c' l% D$ {5 ?" x
7 ?2 w1 f9 Y2 ^1 B% k5 _
此时可以使用echo命令进行控制:6 a7 E9 @4 q6 p- W6 U! w9 h& i
命令为:
. Z! G" T( o- f( j7 u1 Eecho $i > /sys/class/gpio/export1 B( L. `2 I X! ~8 m6 Y7 n
4 g9 x+ Q5 }! @9 f U0 z$ Y2 Y# \
echo "out" > /sys/class/gpio/gpio$i/direction
! u$ x- f- N6 s& J或echo "in" > /sys/class/gpio/gpio$i/direction; X/ p5 ?, W* T! R* g$ J3 @& e
' W5 K. {0 j/ h
echo "1" > /sys/class/gpio/gpio$i/value
8 e+ W" P W$ O7 E4 lecho "0" > /sys/class/gpio/gpio$i/value
' v5 i1 K: K! w9 G1 o2 b# D/ A
: {6 u! n( ]5 Q( i @6 U, Fecho $i > /sys/class/gpio/unexport* m$ [" W6 P; z" {* F
或者使用 open("/sys/class/gpio/export", O_WRONLY); write函数进行控制。参考test.c。' L+ @$ g( ^6 Y% x6 {8 e
3 u2 E6 ^" ]- g, _- |# `! J方法二:创建dev/gpio节点。7 ^2 d q4 [3 P W/ L6 M2 V) I
9 h" u0 O k' J1 _" c5 ?* l/ G& P7 C" O! T, Y' }2 f
添加driver/misc/gpio/gpio-user.c,修改Makefile文件编译。7 n* t" p5 m$ L. Z+ t7 C
修改 driver/misc/Makefile 添加:
9 y H8 v2 v- Iobj-y += gpio/
1 O0 N& \5 U" @7 J' ]$ ?在linux_imx6ul_config中添加:. Y3 S) X3 f4 w+ |5 H
CONFIG_GPIO_USER_INTF=y& o3 b+ ^2 R8 D; s
编译之后。在dev下有gpio节点。
# Z9 y y* e% e. z采用gpio-test.c为用户测试程序。编译为gpio-test。
1 g! j5 \1 D" L" X6 v: m1 r X+ o0 u3 y) W$ q+ V0 I
' T! L$ t0 J: q' l* a! e$ b
使用gpio-test in 2测试DI。# k+ H+ F4 X: Z& T" J) N+ W$ `
使用gpio-test out 9 1 测试DO 输出为高电平。
: U- J" O1 a. {使用gpio-test out 9 0 测试DO 输出为低电平% e# M+ q' C. k" ~
|
|