LinuxGPIO操作和MTK平台GPIO

GPIO口配置是一个历史性的问题,不管我们使用什么MCU,单片机也好,ARM也好,都离不开驱动GPIO口。Linux下有一个宏,GPIO_GPIO_SYSFS,打开这个宏后,编译烧录到设备端,去看看sys/class/gpio/这个目录。你会发现很多惊喜。

虽然是一个小知识点,但是我觉得对做Linux和安卓驱动开发的同学非常有用,当别人问你怎么操作一个GPIO口的时候,你不妨直接把这个链接发给他。

#GPIO_GPIO_SYSFS打开后,GPIO基本操作

  • 导出   /sys/class/gpio# echo 12> export

  • 设置方向      /sys/class/gpio/gpio12# echo out > direction

  • 查看方向      /sys/class/gpio/gpio12# cat direction

  • 设置输出      /sys/class/gpio/gpio12# echo 1 > value

  • 查看输出值  /sys/class/gpio/gpio12# cat value

  • 取消导出     /sys/class/gpio# echo 12> unexport

#MTK平台提供节点给我们在命令行下对GPIO口进行配置,节点如下

MTK的GPIO口有点奇怪,他需要一个excel表格来对比后才能知道GPIO口是哪个。

比如:

AB2对应的是UART1的RX,对应的GPIO口编号是64。这个EXCEL表格我就不给出来了,因为不同的CPU的GPIO口标号也是有所不同。

mtk8167_bsp:/sys/devices/platform/soc/1000b000.pinctrl # cat mt_gpioPIN: [MODE] [DIR] [DOUT] [DIN] [PULL_EN] [PULL_SEL] [IES] [SMT] [DRIVE] ( [R1] [R0] )
0: 210010100
1: 210010100
2: 010010100
3: 000111100
4: 210010100
5: 210010100
6: 210010100
7: 011110100
8: 000000100
9: 011110100
10: 010010100
.......................
119: 100111112 01
120: 100111112 01
121: 00001010ffffffff
122: 10001010ffffffff
123: 10001010ffffffff
124: 10001010ffffffff

#所有的GPIO口配置信息都能看到,其中每一位的含义如下

  • [MODE]:每个GPIO可以配置的模式可以参考这个头文件kernel-4.4/arch/arm64/boot/dts/mediatek/mt8167-pinfunc.h

  • [DIR]:0=输入;1=输出

  • [DOUT]:作为输出引脚的高低电平,0=低;1=高

  • [DIN]:输入引脚的电平

  • [PULL_EN]:是指GPIO是否使能上拉或下拉,只有当GPIO作为输入模式时才生效

  • [PULL_SEL]:上面只设置了是否使能上拉或下拉,但并没有指出到底是上拉还是下拉。0=下拉;1=上拉

  • [IES]:输入使能,控制输入是否有效。

  • [SMT]:是否使能斯密特触发器

  • [DRIVE]:驱动能力,一般可取值0~7

  • ( [R1] [R0] ):

当前GPIO pin的(上下拉)并联电阻的使能状态

1 0表示enable R1,disable R0
0 1表示disable R1,enable R0
1 1表示enable R1, enable R0

不打印出来,表示当前的GPIO pin不支持PUPD状况,即只有一个上拉电阻、一个下拉电阻。

#示例

一般作为GPIO模式的时候,可以这么调试:

echo mode 66 0 > mt_gpio   /*设置66号位IO模式*/
echo dir 66 1 > mt_gpio    /*设置66号 io为输出方向*/
echo out 66 1 > mt_gpio    /*拉高66号io*/

  回复「 篮球的大肚子」进入技术群聊

回复「1024」获取1000G学习资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux cpu亲和力

最近在对项目进行性能优化,由于在多核平台上,所以了解了些进程、线程绑定cpu核的问题,在这里将所学记录一下。不管是线程还是进程,都是通过设置亲和性(affinity)来达到目的。对于[进程]的情况,一般是使用sched_setaffi…

卷积神经网络(目标分类)

文章目录目标分类基本框架数据准备数据扩充数据规范模型设计任务分类局部更改训练细节目标分类基本框架 数据准备 现有数据集的子集,网络采集,现有数据人工标注 数据扩充 原始数据切割,噪声颜色等像素变化,旋转平移 数据规范…

安卓9.0添加服务修改SELinux

#文章目录#前言#SELinux来源#SELinux基本框架#SELinux 在不同版本的表现#使用audit2allow工具生成SELinux 权限#完整代码#前言先推荐下之前的SELinux文章,但是那个是7.1的,在9.0上已经在差别很大的了。Android7.1 在init.rc 添加shell服务题外话~在企业里…

卷积神经网络-目标探测

文章目录目标探测介绍任务思路DPMRCNN1)候选区域选择2)CNN特征提取3)分类与边界回归R-CNN总结优点缺陷FAST-RCNNFASTER-RCNNYOLO目标探测介绍 任务 分类获取坐标 目标探测 图片分割 思路 回归问题:利用神经网络进行目标识别&am…

相机视场角和焦距_镜头小讲堂(一)镜头的焦距

在刚购买完相机的时候,我们久会考虑需要什么样的镜头来配合机身来使用。而市场上的镜头种类是在太多了,所以我们就要学习了解下镜头都有哪些种类,选择哪种镜头比较有优势。这也是学习摄影必备的基础知识。01 镜头的焦距焦距是镜头的重要指标&…

C语言指定初始化器解析及其应用

由于笔者能力有限,文中如果出现错误的地方,欢迎大家给我指出来,我将不胜感激,谢谢~#指定初始化器的概念C90 标准要求初始化程序中的元素以固定的顺序出现,与要初始化的数组或结构体中的元素顺序相同。但是在…

递归神经网络

文章目录LSTM![在这里插入图片描述](https://img-blog.csdnimg.cn/20200609171449198.pngLSTM 4INPUTS 1outputs

CNN+RNN

文章目录相同点不同点组合意义组合方式图片标注基本思路模型设计-数据准备视频行为识别视频行为识别图片问答相同点 传统神经网络的扩展 前向计算产生结果,反向计算模型更新 每层神经网络横向可以多个神经元共存,纵向可以多层神经网络链接 …

深入理解Linux内核链表

之前写过的链表文章,再结合这篇,我觉得是一道硬菜。Linux内核链表C语言,链表大家五一节日快乐,我知道劳动节大家都辛苦了,吃点硬菜好顶住饿肚子~#一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构&#x…

GAN

文章目录生成对抗网络(GAN)基础生成对抗网络 优点:缺点:生成对抗网络深度GANDCGAN结构细节特征研究DCGAN总结条件GAN模型结构INFOGANInfoGAN: 自动学习z中部分变量意义Wasserstein GANGAN存在问题原因WGAN特点改进方法:生成对抗网络(GAN)基础…

1200可以读取modbus tcp_S7-1200 作 MODBUS TCP服务器

S7-1200 Modbus TCP 通信指令块STEP 7 V13 SP1 软件版本中的Modbus TCP库指令目前最新的版本已升至V4.0,该版本的使用需要具备以下两个条件:1. 软件版本: STEP 7 V13 SP1及其以上2. 固件版本: S7-1200 CPU 的固件版本V4.1图1. Mod…

Linux一定需要文件系统吗?

开篇题外话:对于Linux初学者来说,这是一个很纠结的问题,但这也是一个很关键的问题! 一语破天机:“尽管内核是 Linux 的核心,但文件却是用户与操作系统交互所采用的主要工具。这对 Linux 来说尤其如…

迁移学习

文章目录为什么需要迁移学习模型Fine-‐tune![在这里插入图片描述](https://img-blog.csdnimg.cn/20200612000845217.png)保守训练层迁移Multitask Learning渐进式神经网络/Progressive Neural Networks域对抗零样本学习Self-‐taught learning为什么需要迁移学习 使用深度学习…

怎么撤回操作_微信又更新,拍一拍能撤回了

微信拍一拍功能在 6 月份刚上线时,「微信之父」张小龙就发朋友圈表示,微信史上仅需一行代码的有趣功能终于来了,拍一拍,像蚂蚁一样打招呼。拍一拍功能将大家在现实世界的肢体交流带到了虚拟世界,相信大家都有儿时和三俩…

吹牛

起了一个不太雅观的标题,我很想给我们的会晤起一个响亮的名字,比如「三方会谈」或者「新一代5.4事件」,再或者牛逼点的,我们可以叫「西乡起义」。好吧,我摊牌了,这次吃饭就是三个屌丝和一个大佬的闲暇吹牛&…

Spring MVC-视图解析器(View Resolverr)-内部资源视图解析器(Internal Resource View Resolver)示例(转载实践)...

以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_internalresourceviewresolver.htm 说明:示例基于Spring MVC 4.1.6。 InternalResourceViewResolver用于将提供的URI解析为实际的URI。以下示例显示如何使用Spring Web MVC框架使用I…

手机是怎么确定位置信息的?

#手机是怎么定位的?定位是一个老生常谈的话题,最近几年还在讨论一个热点技术话题「室内定位」,从我知道这个技术到现在已经过了好几年了,也出现了一些室内定位的方案,而我们的手机是如何进行定位的,又有哪些…

tablestore列式存储原理_10分钟搞透:技术人必会的MySQL体系结构与存储引擎!

MySQL是目前使用最广的开源数据库,不管从装机量、使用人群、专职人员、社区发展,还是基于MySQL的其他分支,都是当之无愧的No.1。 本文将从以下4个方面,带你搞透MySQL体系结构与存储引擎。主要包括:1、MySQL数据库的体系…

使用Adobe Audition生成基本音频

#首先打开软件 #新建一个音频 #在效果菜单栏插入基本音频

更多网络类型

文章目录丰富网络类型CPPN孪生网络Triplet Network应用Variational Auto-encoder强化学习Markov decision processesBellman公式丰富网络类型 深度学习除了经典卷积神经网络,循环神经网络还有广泛的网络类型 CPPN 网络输入是像素坐标值(x,…