openwrt gpio控制与使用

查看datasheet和确认GPIO复用引脚scheme

通过查看mt7628 datasheet可以明确复用关系:


在这里我以I2S对应的GPIO引脚为例。


查看 mt7628an.dtsi 文件中对gpio的注册

$(TOPDIR)假定为宿主机上 OpenWrt 的编译目录。
在$(TOPDIR)/target/linux/ramips/dts/mt7628an.dtsi 里找到gpio注册,结合 datasheet 中 GPIO pin share scheme 与 mt7628an.dtsi 中的定义可以知道:

mt7628 的 GPIO 一共被分为3组,gpio0,gpio1,gpio2,@后紧跟的数字为寄存器起始地址。



查看 mt7620.c 文件中对 gpio 及相应复用功能的定义

引脚复用的定义在$(TOPDIR)/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7620n/linux-3.18.29/arch/mips/ralink/mt7620.c 文件中,(注:内核版本因实际情况而定,我选用的为3.18.29)在这里我们只需要查看我们关注的gpio即可,在这里只需要注意 i2s 功能相应的定义,结果如下:


可以看到其中164 行FUNC中对于功能和引脚的说明,其中第一个参数 "i2s" 为功能名称,第二个参数 “0” 为功能编号,第三个参数 "0" 为起始的 GPIO 编号,第四个参数 “4” 为该功能共占用的 GPIO 管脚数目,总结起来就是 i2s 复用的 gpio 是从 GPIO#0 开始,共4个引脚,为 GPIO#0~GPIO#3。

之后需要查看 ralink group 包括的 group,结果如下:

 

可以看到 234 行 i2s 被包括在其中,下面就需要进行最关键的操作了。


修改 WRTNODE2R.dts 中的 ralink group 设定

也即把要使用的gpio对应的复用功能释放掉,将功能名称添加到 ralink group 即可。如下所示,添加 "i2s"。



在 WRTNODE2R.dts 中对 GPIO 进行注册

注册的方法可以参照 $(TOPDIR)/target/linux/ramips/dts/RT-N14U.dts
注:dts里对设备的注册很简单,如gpio-leds的注册,compatible要与Led的驱动leds-gpio.c里compatible对应,label是设备的名字,设备注册成功,在WRTnode文件系统下就会有相应的label设备名,在这里我以i2s 功能中 I2S_SDO对应的 GPIO#1 为例,注册如下:

gpios = <&gpio0 1 1>, 这是指定对应的gpio引脚为gpio0分组中的1号引脚 GPIO#1,编号从0号开始。到了这一步就已经万事具备了,我们重编译内核,然后把新的 firmware 烧录到我们的板子里面就可以啦。

查看GPIO对应设备名与使用

新的固件烧录重启后,进入 /sys/class/leds 查看即可。

在这里,就看到我们在上一步执行成功的结果了。控制也很容易,进入该设备目录,里面会有 brigtness 文件,往该sysfs文件写入 0 或者 1 就可以控制高低电平了,这里默认direction 为输出,需要改变方向,修改 direction 文件。如下所示:


到了这里,完整的分析与注册使用过程就结束了。

如果觉得对你有帮助,就给我点赞吧,有问题也可以直接给我评论或者补充,:-D

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

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

相关文章

git 配置图形比较工具

2019独角兽企业重金招聘Python工程师标准>>> 以meld为例&#xff0c;安装方式是sudo apt-get install A. 在/usr/local/bin 目录下创建extDiff 文件(注意: 目录可以是任意) cd /usr/local/bin sudo gedit /usr/local/bin 内容为: #!/bin/bash /usr/bin/meld "$…

推荐!!!前端将url转成blob和blob转成url;前端将文件流读取成url;前端将blob文件读取出url预览和下载

一般后端返回的地址&#xff0c;前端通过返回blob读取出url&#xff0c;然后使用a标签下载 方式一&#xff1a;通过接口将后端返回的文件流blob读取出url&#xff08;推荐推荐&#xff09; downLoadFileImg (fileUrl, fileName) {// 可下载&#xff0c;名称也有效 -- 推荐cons…

CH340电路设计

最近选用USB转串口芯片进行开发调试&#xff0c;在调研了各主流芯片的之后&#xff0c;觉得 CH340 系列的性价比很高&#xff0c;而且技术支持在国内&#xff0c;如果遇到问题解决起来也会方便很多。但是 CH340 / CH341 型号很多&#xff0c;具体选型就就该结合需求和芯片手册了…

Windows Phone 的后台代理不支持的 API

适用于&#xff1a; Windows Phone 8 | Windows Phone OS 7.1 有一组 API 不能在由计划任务执行的代码中使用。这包括以从 ScheduledTaskAgent 调用的任何库中代码的形式实现ScheduledTaskAgent 的类中包含的代码。其中一些 API 由开发工具进行检测&#xff0c;并且在运行时或编…

CH340芯片选型

CH340是一个USB总线的转接芯片&#xff0c;其中转串口的应用场合居多&#xff0c;且市场占有率很高。CH340芯片根据不同的功能可以实现为USB转串口、打印口和IrDA红外接口&#xff0c;因此选型的时候就首先需要根据功能加以区分了。如下表所示&#xff1a;&#xff08;以下数据…

vue拖拽列表----vuedraggable组件;ElementUI 实现Table组件实现拖拽效果

vue-draggable中文文档 简单的遍历list列表拖拽 部分元素不可拖拽参考&#xff1b; 部分不可拖拽参考 ElementUI 实现Table组件实现拖拽效果 列表的拖拽功能&#xff1a; 一、下载依赖 npm i -S vuedraggable二、页面使用 <template><div><vuedraggable cla…

Linux 如何加载并口/打印口驱动

实际上Linux是自带并口驱动的&#xff0c;因此不需要再使用第三方驱动编译加载了。 设置并口的具体步骤如下&#xff1a; rmmod lp rmmod parport_pcinsmod /usr/lib/modules/$(shell uname -r)/kernel/drivers/parport/parport_pc io0xb000 irq10 或者 modprobe parport_pc …

[DB]mysql 及sql server2005下实现分页效果的sql语句

简要做一下总结&#xff1a; 为实现类似top的功能&#xff0c;我们在SQL Server中和MySQL中使用到的SQL语句是不同的。 1、在SQL Server中&#xff0c;我们使用 select top N * from tablename来查询tablename表中前N条记录。 根据所给变量的不同还有其他方法&…

filters获取data中的数据;filters使用data中的数据

如果直接在filters中通过this引入data数据&#xff0c;则无效获取不到。 可以通过filter方法传值 来获取data的数据使用 <div >{{formInline.bjthObj.insuranceCompanyName | CompanyVal(cops)}}</div>data () {return {insuranceCompanyName: ,cops:[],}}filters:…

条件运算符(?:)和 $替代string.Format()

1. 条件运算符&#xff08;&#xff1f;&#xff1a;&#xff09;根据Boolean表达式的值返回两个值之一。表达式如下&#xff1a; condition ? first_expression : second_expression 2. $""替代String.Format()方法&#xff0c;""中包含字符&#xff0c;…

spring MVC配置详解

From: http://www.cnblogs.com/superjt/p/3309255.html 现在主流的Web MVC框架除了Struts这个主力 外&#xff0c;其次就是Spring MVC了&#xff0c;因此这也是作为一名程序员需要掌握的主流框架&#xff0c;框架选择多了&#xff0c;应对多变的需求和业务时&#xff0c;可实行…

Altium Designer如何画虚线

流程如下&#xff1a; 在原理图上右键 --> Place --> Drawing Tools --> Line&#xff0c;在画线的时候按 Tab 键&#xff0c;然后将 Line Style 改为 Dashed&#xff0c;就可以画虚线了。

Promise等待后端接口返回数据;Promise等待异步结果

参考&#xff1a;要就来45道Promise面试题一次爽到底 注意 resolve是指成功的函数 reject是指向失败 changeFlag (item, index) {let p new Promise((resolve, reject) > {let id_val item.plyIdPayPost(G_CGI_PHP.group.suzexianGetszcp ?id${id_val}, {}).then((res) …

JavaScript:JavaScript中常见获取对象元素的方法

介绍&#xff1a; javascript中常见的3种获取元素的方法&#xff0c;分别是通过元素ID、通过标签名字和通过类名字来获取 操作如下&#xff1a; 1、getElementById DOM提供了一个名为getElementById的方法&#xff0c;这个方法将返回一个与之对应id属性的节点对象。使用的时候请…

node.js 和 HTML5-Canvas 结合实现截图上传交互

楼主要做一个简单的图片上传服务器&#xff0c; node.js实现服务端&#xff0c; 页面使用HTML5-Canvas实现截图。 为什么用Nodejs呢&#xff0c;因为用Js写后台很爽-。- 而且比较简单 为什么用canvas呢&#xff0c;其实我不想用的 因为有些低版本的IE对HTML5的支持不好&#xf…

Altium Designer原理图库引脚名字添加上划线

双击引脚在输入名字的时候每一个字母后面加上反斜杠 \ 就可以了。 Exp: R\S\T\

得到classpath和当前类的绝对路径的一些方法

From&#xff1a; http://my.oschina.net/u/1583086/blog/521259 下面是一些得到classpath和当前类的绝对路径的一些方法。 1.this.getClass().getResource&#xff08;""&#xff09; 得到的是当前类class文件的URI目录。如&#xff1a;file&#xff1a;/D&#…

通过文件url地址获取base64;通过图片url地址获取base64;js获取文件的base64

本篇是通过url地址获取文件的base64 如果想要通过File文件获取base64查看这篇 以下代码可直接复制使用&#xff01;注意第9行的图片地址更改下 <template><div class"content"><div>获取图片的base64</div><input type"file" …

使用CrpytAPI编码和解码PKCS#7消息

为了在不同体系结构的网络和计算机之间交互加密消息&#xff0c;加密通信各方需要对传送的消息使用标准的方式进行编码。CryptAPI支持PKCS #7标准加密消息语法格式消息。PKCS #7标准采用了CCITT X.208定义的ASN.1 BER编码规则&#xff0c;定义了加密消息相关的类型和编码方式。…