android 查看gpio状态_Android(Linux)控制GPIO的方法及实时性分析-阿里云开发者社区...

Linux下控制GPIO的方法有N种,详细请参考《RPi GPIO Code Samples》,文中用十多种语言演示了如何控制GPIO,非常全面详尽。因此,这里不再多做赘述,仅把调试过程中整理的脚本贴上并做简单的分析。特别说明,Linux必须有root权限!!!否则会出现/system/bin/sh: can't create /sys/class/gpio/export: Permission denied等错误。

@echo offechoadb root

adb root>%temp%\_tmp

@findstr"already" %temp%\_tmp

@if NOT errorlevel1goto config

timeout/T 10:config

@echo on

adb shellchmod 0666 /sys/class/gpio/export

adb shellchmod 0666 /sys/class/gpio/unexport

adb shellecho 62 ">" /sys/class/gpio/export

adb shellecho 63 ">" /sys/class/gpio/export

adb shellchmod 0666 /sys/class/gpio/gpio62/direction

adb shellchmod 0666 /sys/class/gpio/gpio63/direction

adb shellchmod 0666 /sys/class/gpio/gpio62/value

adb shellchmod 0666 /sys/class/gpio/gpio63/value

adb shellecho out ">" /sys/class/gpio/gpio62/direction

adb shellecho out ">" /sys/class/gpio/gpio63/direction

adb shellecho 1 ">" /sys/class/gpio/gpio62/value

adb shellecho 1 ">" /sys/class/gpio/gpio63/value

@echo off

:top

adb shellecho 1 ">" /sys/class/gpio/gpio62/value

adb shellecho 1 ">" /sys/class/gpio/gpio63/value

rem @timeout/T 1

for /l %%i in (1,1,768) do echo %%i>nul

remping 0.0.0.1 -n 1 -w 500>nul

adb shellecho 0 ">" /sys/class/gpio/gpio62/value

adb shellecho 0 ">" /sys/class/gpio/gpio63/value

rem @timeout/T 1

for /l %%i in (1,1,768) do echo %%i>nul

remping 0.0.0.1 -n 1 -w 500>nul

goto top

pause.

该批处理文件运行在PC上,通过adb发送shell命令操作/sys/class/gpio以控制GPIO。

在MSM8996的开发板上测试,运行结果如下图所示。

从图中可以看出,两个GPIO的控制时间间隔相差约40ms,说明GPIO控制延时较为严重。

#!/system/bin/sh

chmod 0666 /sys/class/gpio/exportchmod 0666 /sys/class/gpio/unexportecho 62 > /sys/class/gpio/exportecho 63 > /sys/class/gpio/exportchmod 0666 /sys/class/gpio/gpio62/directionchmod 0666 /sys/class/gpio/gpio63/directionchmod 0666 /sys/class/gpio/gpio62/valuechmod 0666 /sys/class/gpio/gpio63/valueecho out > /sys/class/gpio/gpio62/directionecho out > /sys/class/gpio/gpio63/directionecho 1 > /sys/class/gpio/gpio62/valueecho 1 > /sys/class/gpio/gpio63/valuewhile:do

echo 1 > /sys/class/gpio/gpio62/valueecho 1 > /sys/class/gpio/gpio63/value

usleep100000

echo 0 > /sys/class/gpio/gpio62/valueecho 0 > /sys/class/gpio/gpio63/value

usleep100000

done

该脚本运行在MSM8996开发板上,通过操作/sys/class/gpio以控制GPIO,执行结果如下图所示。

从图中可以看出,两个GPIO的控制时间间隔相差约0.6ms,说明GPIO控制延时较小。

Android脚本文件可通过如下命令发送到开发板上,并修改其属性。

pushd %~dp0

adb push.\gpio.sh /data/local/adbshell chmod 777 /data/local/gpio.sh

参考:

Device Tree Usage

BeagleBone Black (BBB) Pin Muxes

Beaglebone Pin Muxes

Using Device Trees To Configure PRU IO Pins

BeagleBone Black GPIOs

gpio-header

beaglebone-universal-io

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值