Android APP控制GPIO(操作节点方式)

Android APP控制GPIO(操作节点方式)

注意:核心是APP层通过脚本操作节点方式控制 GPIO

资料下载:https://download.csdn.net/download/qq_33544860/81172366

概要

通过该文章可以收获:

1.Android selinux知识
2.APP非root环境下调用脚本
3.通过节点控制gpio
4.把脚本/命令编译内置到系统
5.调用系统属性运行脚本
6.Android init.rc知识
7.等等

该模式不需要再写繁琐的代码接口。(局限性:只能控制单一的gpio口)

流程如下:
在这里插入图片描述

具体实现方式

接下来会对每个步骤进行详细的介绍,以及拓展相关知识点。
实现流程从gpio到app进行讲解。

⚠️注意:由于该文章会涉及其他的内容,如需快速集成只需关注 > 功能步骤1-6

环境

  • 硬件环境:
    把相关的外设连接到对应的gpio口

  • 软件环境:
    Android源码(基本在源码基础上进行修改)(Autochip平台)
    ADB调试工具(测试)
    AndroidStudio(编写APP层代码)

GPIO

GPIO的英文全称为General-Purpose IO ports,即通用IO接口。
GPIO的概念自行查阅相关资料。

可参考:https://blog.csdn.net/weixin_31849265/article/details/112213882

在这里需要通过GPIO功能配置引脚映射表获取需要GPIO口对应的PIN脚。(一般硬件工程师会提供原理图,或者告知具体GPIO口)

⚠️一个 PIN 脚同一时间只能被配成其中一种功能
⚠️每个 GPIO 功能同一时间只能被配置到一个 PIN 脚上

软件上:Kernel 中的实现是基于 Pinctrl 及 Gpiolib 架构。内核模块在 Kernel 中使用
GPIO 功能,需要通过 Pinctrl 及 Gpiolib 的 API 。

确定GPIO口对应的PIN脚

例如:该原理图中显示CPU风扇控制的GPIO口
[9] CPU_FAN >>------------<<GPIO_0_17 [2,12]

通过映射表的这GPIO_0_17对应的PIN为80

节点操作指令

查看或配置 GPIO 状态的调试节点位置
(平台不一样,位置可能不一样,可在/sys/目录下查找)

/sys/devices/platform/soc/11090000.pinctrl/gpio_debug

通过USB线连接设备和电脑,在电脑中打开终端,通过adb shell指令进入Android设备。

adb root
adb remount
adb shell

在shell中查看单前所有GPIO配置信息
⚠️显示-1值表示不支持。

cat /sys/devices/platform/soc/11090000.pinctrl/gpio_debug

结果如下

gpio base: 0x0, pins: 171
PIN: (MODE)(DIR)(DIN)(DRV)(SMT)(PULLEN)(PULLSEL)
000: 0-1-10010
001: 0-1-10010
002: 0-1-10010
003: 0-1-10010

内容解析如下

MODE:引脚模式
DIR:引脚方向(0:输入 /1: 输出)
DIN:引脚电平值(只读)
DRV:引脚驱动能力(0~3)
SMT:施密特触发器使能
PULLEN:上拉使能
PULLSEL:上拉选择(0:下拉 / 1:上拉)

配置GPIO引脚状态
⚠️格式: echo 属性 引脚编号 值 > gpio_debug

echo mode 80 1 > gpio_debug // 配置模式
echo dir 80 0 > gpio_debug // 配置方向为输入 
echo dir 80 1 > gpio_debug // 配置方向为输出 
echo out 80 1 > gpio_debug // 配置输出为高电平 
echo out 80 0 > gpio_debug // 配置输出为低电平 
echo pullen 80 1 > gpio_debug //配置上拉使能 
echo pullsel 80 1 > gpio_debug //配置上拉 
echo pullsel 80 0 > gpio_debug //配置下拉 
echo drv 80 3 > gpio_debug /
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猿成长

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值