您尚未登录。

楼主 #1 2017-12-20 13:18:33

lzx1044364960
会员
注册时间: 2017-12-15
已发帖子: 35
积分: 35

MT7620如何实现一键弹出U盘

openwrt在MT7620a中实现了自动挂载U盘或硬盘,




但是不能自动卸载,还得手动umount,

请问各大神如何实现一键umonut弹出u盘?

离线

楼主 #3 2017-12-20 14:45:31

lzx1044364960
会员
注册时间: 2017-12-15
已发帖子: 35
积分: 35

Re: MT7620如何实现一键弹出U盘

这个脚本是什么情况下卸载呢?是拔掉U盘就自动卸载么?

离线

楼主 #6 2017-12-20 15:07:43

lzx1044364960
会员
注册时间: 2017-12-15
已发帖子: 35
积分: 35

Re: MT7620如何实现一键弹出U盘

我现在想添加一个按键,当自动挂载上以后按下按键就umount,但是我现在不明白的是当按键按下触发异常以后是调用哪些路径下的脚本

离线

楼主 #9 2017-12-20 15:30:16

lzx1044364960
会员
注册时间: 2017-12-15
已发帖子: 35
积分: 35

Re: MT7620如何实现一键弹出U盘

嗯嗯!对!我参考了一键复位来做的,一键复位中修改了DTS中MT7620a.dts文件来修改GPIO口:(下面的S2用来复位,准备用S3来做一键U盘弹出)
  gpio-keys-polled {
                compatible = "gpio-keys";
                #address-cells = <1>;
                #size-cells = <0>;
                poll-interval = <20>;
                s2 {
                        label = "reset";
                        gpios = <&gpio0 1 1>;
                        linux,code = <0x198>;
                };
                s3 {
                        label = "S3";
                        gpios = <&gpio0 2 1>;
                        linux,code = <0x101>;
                };
        };

然后cd /etc/rc.button
     vi reset   如下:   

#!/bin/sh

[ "${ACTION}" = "released" ] || exit 0

. /lib/functions.sh

logger "$BUTTON pressed for $SEEN seconds"

if [ "$SEEN" -lt 1 ]
then
        echo "REBOOT" > /dev/console
        sync
        reboot
elif [ "$SEEN" -gt 5 ]
then
        echo "FACTORY RESET" > /dev/console
        jffs2reset -y && reboot &
fi

return 0


这样就可以实现一键复位了,可是一键弹出U盘就不知该如何下手了

离线

楼主 #11 2017-12-20 15:58:29

lzx1044364960
会员
注册时间: 2017-12-15
已发帖子: 35
积分: 35

Re: MT7620如何实现一键弹出U盘

在/etc/rc.button目录下有如下文件:
  failsafe  power     reset     rfkill 
我是要在/etc/rc.button目录下建一个文件调用umount.sh 呢?还是在上面的哪一个文件里调用umount.sh  按键按下系统是怎么找到这个脚本文件的呢?这点我一直没想明白 

离线

楼主 #15 2017-12-20 17:43:57

lzx1044364960
会员
注册时间: 2017-12-15
已发帖子: 35
积分: 35

Re: MT7620如何实现一键弹出U盘

大哥你在贴子上的回复我看到了,我非常感谢你的热心帮助,,不过有点没太明白,具体疑问如下:我在DTS中定义了
tp1.png
tp2.png
就相当于给
tp3.png
BUTTON赋值为“reset”所以就去执行/etc/rc.button/下的reset里的脚本文件?如果在DTS里改成
tp4.png
是不是就去执行/etc/rc.button/下的hello(当然前提得有这个文件),你看我的理解对么?

离线

楼主 #16 2017-12-20 17:51:01

lzx1044364960
会员
注册时间: 2017-12-15
已发帖子: 35
积分: 35

Re: MT7620如何实现一键弹出U盘

我在DTS中定义了:
label = "reset";

gpio-keys-polled {
                compatible = "gpio-keys";
                #address-cells = <1>;
                #size-cells = <0>;
                poll-interval = <20>;
                s2 {
                        label = "reset";
                        gpios = <&gpio0 1 1>;
                        linux,code = <0x198>;
                };
                s3 {
                        label = "S3";
                        gpios = <&gpio0 2 1>;
                        linux,code = <0x101>;
                };
        };

就相当于给
hotplug.json中有描述, 如果 uevent 中含有BUTTON 字符串, 而且SUBSYSTEM 为 "button", 则执行/etc/rc.button/下的 %BUTTON%脚本来处理。 
BUTTON赋值为“reset”所以就去执行/etc/rc.button/下的reset里的脚本文件?如果在DTS里改成
label = "hello";
是不是就去执行/etc/rc.button/下的hello(当然前提得有这个文件),你看我的理解对么?

离线

楼主 #18 2017-12-21 13:36:46

lzx1044364960
会员
注册时间: 2017-12-15
已发帖子: 35
积分: 35

Re: MT7620如何实现一键弹出U盘

不对!好像不是这样的,我在DTS中改了 label = "hello";

gpio-keys-polled {
                compatible = "gpio-keys";
                #address-cells = <1>;
                #size-cells = <0>;
                poll-interval = <20>;
                s2 {
                        label = "hello";
                        gpios = <&gpio0 1 1>;
                        linux,code = <0x198>;
                };
                s3 {
                        label = "S3";
                        gpios = <&gpio0 2 1>;
                        linux,code = <0x101>;
                };
        };

编译后固件里/etc/rc.button/ 没有hello这个脚本文件还是reset ,an按下按键依然可以复位,所以好像不是上面描述那样的

   failsafe  power     reset     rfkill

离线

楼主 #20 2017-12-21 14:10:02

lzx1044364960
会员
注册时间: 2017-12-15
已发帖子: 35
积分: 35

Re: MT7620如何实现一键弹出U盘

我的意思是说经过我刚刚的改动 ,按之前的理解

hotplug.json中有描述, 如果 uevent 中含有BUTTON 字符串, 而且SUBSYSTEM 为 "button", 则执行/etc/rc.button/下的 %BUTTON%脚本来处理。
 
BUTTON赋值为“hello”了所以就去执行/etc/rc.button/下的hello脚本文件,但是/etc/rc.button/下没有hello这个文件,所以应该没有任何反应才对,但实际上板子却复位了

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn