优游游戏真人占成:

 找回密码
 立即注册

只需一步,快速开始

微信扫一扫,快速登录

搜索
查看: 3917|回复: 18

优游游戏真人占成: 成功获取路由器GPIO控制权

银河代理管理网手机最高占成
1#
发表于 2021-2-7 21:35:24 | 只看该作者 |倒序浏览 |阅读模式

认识众多玩家高手/拆客/DIYer,查阅更多资源,一起学习技术知识

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
经过好多个小时的努力,终于获取了路由器GPIO的控制权
不知道主板上引出来多少个GPIO引脚,但是看源码上大部分的GPIO是没有使用的


下面以7620A为例。
首先你得有源码,一般都是git clone下来的,进入target/linux/ramips目录。

  1. alvin@W500 ~/openwrt/openwrt $ cd target/linux/ramips/
  2. alvin@W500 ~/openwrt/openwrt/target/linux/ramips $ ls
  3. base-files  dts  files  image  Makefile  modules.mk  mt7620  patches-5.4
  4. alvin@W500 ~/openwrt/openwrt/target/linux/ramips $
复制代码
除了MT7620之外的几个目录被我删掉了,别觉得跟我的不一样哈。
我前面的时间都搞错方向了,一直在用grep命令,find命令查找我这块板的LED的GPIO口24和26,结果人家代码里面压根不是以24和26来定义的!


用vi打开dts/7620a.dtsi,vi的用法自己上网查,不查保证你不会用:lol:
  1. alvin@W500 ~/openwrt/openwrt/target/linux/ramips $ vi dts/mt7620a.dtsi
复制代码
往下翻到gpio0,gpio1的地方
  1. gpio0: gpio@600 {
  2.                         compatible = "ralink,mt7620a-gpio", "ralink,rt2880-gpio";
  3.                         reg = <0x600 0x34>;

  4.                         resets = <&rstctrl 13>;
  5.                         reset-names = "pio";

  6.                         interrupt-parent = <&intc>;
  7.                         interrupts = <6>;

  8.                         gpio-controller;
  9.                         #gpio-cells = <2>;

  10.                         ralink,gpio-base = <0>;
  11.                         ralink,num-gpios = <24>;
  12.                         ralink,register-map = [ 00 04 08 0c
  13.                                                 20 24 28 2c
  14.                                                 30 34 ];
  15.                 };

  16.                 gpio1: gpio@638 {
  17.                         compatible = "ralink,mt7620a-gpio", "ralink,rt2880-gpio";
  18.                         reg = <0x638 0x24>;

  19.                         interrupt-parent = <&intc>;
  20.                         interrupts = <6>;

  21.                         gpio-controller;
  22.                         #gpio-cells = <2>;

  23.                         ralink,gpio-base = <24>;
  24.                         ralink,num-gpios = <16>;
  25.                         ralink,register-map = [ 00 04 08 0c
  26.                                                 10 14 18 1c
  27.                                                 20 24 ];

  28.                 /*      status = "disabled";  */
  29.                 };

  30.                 gpio2: gpio@660 {
  31.                         compatible = "ralink,mt7620a-gpio", "ralink,rt2880-gpio";
  32.                         reg = <0x660 0x24>;

  33.                         interrupt-parent = <&intc>;
  34.                         interrupts = <6>;

  35.                         gpio-controller;
  36.                         #gpio-cells = <2>;

  37.                         ralink,gpio-base = <40>;
  38.                         ralink,num-gpios = <32>;
  39.                         ralink,register-map = [ 00 04 08 0c
  40.                                                 10 14 18 1c
  41.                                                 20 24 ];

  42.                         status = "disabled";
  43.                 };

  44.                 gpio3: gpio[url=home.php?mod=space&uid=827553]@688[/url] {
  45.                         compatible = "ralink,mt7620a-gpio", "ralink,rt2880-gpio";
  46.                         reg = <0x688 0x24>;

  47.                         interrupt-parent = <&intc>;
复制代码
仔细看,看出不同了吗?除了GPIO0这组,其它gpio1,gpio2,gpio3三组GPIO都被停用了!
我们要把这行代码注释掉
  1.                /*      status = "disabled";  */
复制代码

C语言的注释就是用  /*      aaaaaaaaaaa          */把aaaaaaaaaa围起来.
因为我的板子上的LED用的GPIO口是24和26,我注释掉GPIO1就够了,然后保存,编译,刷机,ssh进去。
进去/sys/class/gpio目录。
  1. root@OpenWrt:~# cd /sys/class/gpio
复制代码
我们把相应的GPIO口从内核中释放到用户空间,比如我这里要用gpio24,用下面的命令
  1. root@OpenWrt:/sys/class/gpio# echo 24 > export
复制代码
然后当前目录就会多出来一个gpio24文件夹,我们要操作里面的两个文件direction和value
direction控制的是GPIO的方向是输出还是输入,value是开关
  1. echo out > gpio24/direction
  2. echo  1 > gpio24/value
复制代码
点亮LED都是输出,然后开关的话试下0和1,因为有的是0开有的是0关。


到这里我的LED就已经点亮了:lol:
可以在外围加个三极管放大电流接继电器控制开关:lol:智能家居!


板上引出的GPIO口肯定不止一个,TTL刷机那里就有两个,要找的话可以进breed运行btntst命令然后一个一个试,用个几百欧的电阻把电流限制到几ma,把引脚拉到正或者负,如果是GPIO口就会显示是哪个GPIO口,这个也是坛友昨天告诉我的:lol:


完了,欢迎讨论。






打赏

参与人数 4M币 +76 收起 理由
200birds + 20
hfsp + 20 謝謝分享
阿睦 + 30
nokia5320 + 6

查看全部打赏

2#
发表于 2021-2-7 22:05:06 来自手机浏览器 | 只看该作者
这个不错。路由器本身就是12 V供电,配合12V的继电器简直不要太舒服。7620更好玩了
3#
发表于 2021-2-7 22:06:09 | 只看该作者
这个有点深哦,不懂学习一下
4#
发表于 2021-2-7 22:06:36 来自手机浏览器 | 只看该作者
早就有这个想法 对电路不怎么懂  试过LED触发不了继电器   gpio肯定很多但路由电路都需要硬改  
5#
 楼主| 发表于 2021-2-7 22:32:31 | 只看该作者
fht260 发表于 2021-2-7 22:06
早就有这个想法 对电路不怎么懂  试过LED触发不了继电器   gpio肯定很多但路由电路都需要硬改   ...

LED一般是3.3V的电压,电流也小,肯定要用三极管放大的。
6#
发表于 2021-2-7 22:48:22 | 只看该作者
没啥必要,有些高级点的用来点个屏看个状态而已,问题是谁没事去盯着路由看啊
7#
发表于 2021-2-8 12:02:39 | 只看该作者
TTL那个是uart tx rx吧, 这个改了没法用串口了吧
其它的也就是reset引出了, 能改成输出
LED也能直接当成输出, 好多是开漏输出

其它的GPIO引脚一般没有引出焊盘吧
8#
 楼主| 发表于 2021-2-8 12:35:01 | 只看该作者
o535913 发表于 2021-2-8 12:02
TTL那个是uart tx rx吧, 这个改了没法用串口了吧
其它的也就是reset引出了, 能改成输出
LED也能直接当成输 ...

有些有的,自己在电路板上量
我昨天网上看到uart就是TTL电平,谁正常用的路由要用串口的。
9#
发表于 2021-2-8 20:21:23 | 只看该作者
lfs0a 发表于 2021-2-8 12:35
有些有的,自己在电路板上量
我昨天网上看到uart就是TTL电平,谁正常用的路由要用串口的。 ...

我就用串口啊
调试固件的启动脚本的时候只能用串口看, 这个时候dropbear还没启动呢
另外串口可以和另外的MCU通信, 然后这个mcu可以扩展出更多GPIO pwm spi i2c 1-wire等接口
10#
 楼主| 发表于 2021-2-8 22:52:50 | 只看该作者
o535913 发表于 2021-2-8 20:21
我就用串口啊
调试固件的启动脚本的时候只能用串口看, 这个时候dropbear还没启动呢
另外串口可以和另外的 ...

看来你玩得比我还6啊
一般如果要玩GPIO口的话可以买LED多的板,引出的GPIO肯定多
真要用的时候网口的LED也是可以拿用的这个也是GPIO驱动的。
11#
发表于 2021-2-10 09:01:50 | 只看该作者
这个有点深哦,不懂学习一下
12#
发表于 2021-2-10 14:28:13 来自手机浏览器 | 只看该作者
lfs0a 发表于 2021-2-8 22:52
看来你玩得比我还6啊
一般如果要玩GPIO口的话可以买LED多的板,优游游戏真人占成:引出的GPIO肯定多
真要用的时候 ...

有些路由器的网口灯没有出现在DTS文件里面,好像是硬件层次直接控制的。
13#
 楼主| 发表于 2021-2-10 16:04:27 | 只看该作者
o535913 发表于 2021-2-10 14:28
有些路由器的网口灯没有出现在DTS文件里面,好像是硬件层次直接控制的。 ...

硬件控制应该更复杂吧?软件反而容易点,这个没研究。
14#
发表于 2021-2-18 16:16:48 | 只看该作者
7620 这样玩 这个有点深哦, 学习了。。。。。。
15#
发表于 2021-2-19 09:16:05 | 只看该作者
软硬件都会,厉害啊
16#
发表于 2021-2-19 10:03:30 | 只看该作者
那么路由器如何扩充出更多的GPIO口,甚至I2C或者SPI口呢?
17#
发表于 2021-2-20 22:01:34 | 只看该作者
设备树都来了,搞这个都是牛人
18#
 楼主| 发表于 2021-2-20 22:44:32 | 只看该作者
sadate 发表于 2021-2-19 10:03
那么路由器如何扩充出更多的GPIO口,甚至I2C或者SPI口呢?

在主板上找,看运气了
19#
发表于 5 天前 | 只看该作者
8266不香吗
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|关于我们|联系我们|网站条款|数码之家

GMT+8, 2021-2-28 00:17 , Processed in 0.265200 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2001-2019 Comsenz Inc.

银河代理管理网手机最高占成
www.vni99.com登入 返回顶部 返回列表
大发888幸运农场时时彩软件 澳门码头到威尼斯人酒店时间登入 188金宝博平台导航 澳门永利注册送38彩金下注登入 新葡京开户地址
永利开户优惠最高占成 澳门官方赌场手机app 大发888赌场盘口 登峰娱乐在线即时到账 通博网上投注最高占成
卫浴和成卫浴 海天娱乐现金网网站 奔驰宝马娱乐线上平台最高占成 永利高网上娱乐 优发最高占成
博世界平台注册 时时彩怎么玩 www.sun8066.com 名人娱乐真人游戏最高占成 大有会员注册官网