最开始并没有注意到这个问题, 因为从设备拿到手, 用USB Burning Tool刷入潜龙版的安卓4.4.2, 再到运行EmuELEC, Armbian, 再到给Kernel 5.3的Armbian编译RTL8189FTV的驱动, 都还算顺利. 因为Kernel 5.3也差不多搞定了, 开始打安卓的主意, 想看看能不能跑7.x版本的安卓. 固件包下了几个, 要开始刷的时候出了状况, 发现按着reset键再也无法进入USB Burning Mode了.

几经调查, 试了另外两台一样已经刷过的R3300L, 百度上查类似的案例, 发现其他人也存在这种情况. 而且网友们提供的处理方法(4R19接地)完全无效.

于是开始研究UBOOT

这个设备跑过的系统不外乎潜龙的安卓4.4.2, 以及各种版本的EmuELEC, 各种版本的Armbian, 通过查资料, 发现Linux下面的fw_printenv和fw_setenv命令可以查看及修改UBOOT下的配置. EmuELEC下可以直接运行, 但是在高版本的Armbian下, 仅有可执行文件, 缺/etc/fw_env.config, 于是又查资料找到了对应S905L的config.

通过分析UBOOT的配置, 可以确认EmuELEC和Armbian都会对UBOOT配置进行修改, 但是它们的修改只是在bootcmd里加东西, 加上从sdcard和usb启动的方法, 不应该会影响到组合键.

于是将其中一台焊上了TTL线座, 翻出来以前买的PL2303的USB串口线. 连的过程也是各种摸石头过河. 首先是TX和RX的连线, 尝试几次后确定是PL2303的TX和RX分别接盒子的RX, TX. 然后是VCC线, 每次一连接, 盒子就上电启动了, 根本没法主动观察启动过程, 于是把VCC和GND拔掉, 这下不会自己启动了, 但是启动后看到的全是方块状乱码, 最终是VCC不连, 只连GND, 才算又不自己启动, 又能显示正常.

观察UBOOT的启动日志发现, 按不按reset键, 连不连HDMI, 启动日志基本完全一样.

其中一行"Hit any key to stop autoboot:  0"给我造成了很大困惑, 因为不管怎么敲Enter键, 都不会进入UBOOT命令行, 我怀疑是因为这个0, 导致无法停下来. 查阅资料, 发现有个配置项bootdelay, 于是从0改成了5, 发现根本不起作用, UBOOT还是一路狂飙不停下来, 又查资料, 发现还有用Ctrl+C的, 再试依然无效. 再查资料, 发现还有用空格键的, 这个起作用了, 只要拍空格键, 就能进入UBOOT

继续查资料, 发现还有个配置项叫 upgrade_key , 这个值是 "if gpio input GPIOH_6; then echo detect upgrade key; sleep 3; run update;fi;" 在日志中有这么一行"gpio: pin GPIOH_6 (gpio 55) value is 1", 凭借着曾经做过一些电路的经验感觉这个不对. 如果reset键输入是GPIOH_6, 那么在按下的时候肯定处于接地状态, 不可能是高电平, 所以这行日志对应的就是upgrade_key当中 gpio input GPIOH_6 这行执行的结果, 并没有检测到reset键按下的状态, 所以可以说是GPIOH_6这个写错了.

要找正确的gpio pin该怎么办呢? 又查资料, 发现 gpio status -a 这个命令可以显示所有的gpio状态, 这就好办了, 在reset键未按下和按下两个状态下, 分别执行一下这个命令, 把输出的结果对比一下就出来了, 得到的正确pin是GPIOAO_2, 在按下前是GPIOAO_2: input: 1 [ ], 在按下之后变成了 GPIOAO_2: input: 0 [ ]

再通过fw_setenv将正确的值设上

fw_setenv upgrade_key "if gpio input GPIOAO_2; then echo detect upgrade key; sleep 3; run update;fi;"

.按住reset重启, 就可以观察到usb burn的状态了.

解决这个问题断断续续花了我大概三天时间, 从周五到周日, 可能对于对于专业选手很简单, 但对于我很多是新事物, 要慢慢摸索.

R3300L按reset键无法进入USB Burning模式的问题分析的更多相关文章

  1. 关于键盘冲突那点事(3键冲突/7键冲突/PS2/USB的各种原理)

    转自关于键盘冲突那点事(3键冲突/7键冲突/PS2/USB的各种原理) 最近闲得无聊,正好看到有人发帖提问,于是就来详细说说所谓键位冲突和无冲突的各种原理--基本上这也是个老生常谈的话题了,但相关的技 ...

  2. 850 USB 烧录模式

    /************************************************************************* * 850 USB 烧录模式 * 说明: * 本文 ...

  3. OPPO realme 2在哪里打开Usb调试模式的简单步骤

    每当我们使用PC通过数据线链接到安卓手机的时候,如果手机没有开启USB调试模式,PC则没能成功识别我们的手机,这时我们需要找解决方法将手机的USB调试模式开启,下文我们记录一下OPPO realme ...

  4. OPPO K3在哪里打开USB调试模式的完美方法

    当我们使用pc链接安卓手机的时候,如果手机没有开启USB调试模式,pc则无法成功识别我们的手机,这个时候我们需要找解决方法将手机的USB调试模式打开,今天我们介绍OPPO K3如何开启USB调试模式的 ...

  5. (详细)华为Mate7 MT7-TL00的usb调试模式在哪里开启的步骤

    就在我们使用pc连接安卓手机的时候,如果手机没有开启usb调试模式,pc则不能够成功识别我们的手机,在一些情况下,我们使用的一些功能较好的工具好比之前我们使用的一个工具引号精灵,老版本就需要打开usb ...

  6. OPPO A7x在哪里开启usb调试模式的详细经验

    当我们使用Pc连接安卓手机的时候,如果手机没有开启Usb调试模式,Pc则没法成功读到我们的手机,这时我们需要想办法将手机的Usb调试模式开启,这里我们讲解OPPO A7x如何开启Usb调试模式的方法. ...

  7. (最完美)MIUI12系统的Usb调试模式在哪里开启的步骤

    当我们使用安卓手机通过数据线链接到Pc的时候,或者使用的有些app比如我们公司营销小组当使用的app引号精灵,之前的老版本就需要开启usb调试模式下使用,现当新版本不需要了,如果手机没有开启usb调试 ...

  8. (简单)华为Nova青春 WAS-AL00的USB调试模式在哪里开启的流程

    就在我们使用Pc接通安卓手机的时候,如果手机没有开启usb开发者调试模式,Pc则无办法成功检测到我们的手机,在一些情况下,我们使用的一些功能较强的app好比之前我们使用的一个app引号精灵,老版本就需 ...

  9. OPPO A3在哪里打开usb调试模式的详细教程

    当我们使用电脑通过数据线连接上安卓手机的时候,如果手机没有开启Usb开发者调试模式,电脑则无办法成功读到我们的手机,这时我们需要找方法将手机的Usb开发者调试模式打开,这里我们叙述OPPO A3如何开 ...

随机推荐

  1. 没有用到React,为什么我需要import引入React?

    没有用到React,为什么我需要import引入React? 本质上来说JSX是React.createElement(component, props, ...children)方法的语法糖. 所以 ...

  2. Python 栈、队列的实现

    在python中,列表既可以作为栈使用,又可以作为队列使用. 把列表作为栈使用 栈:后进先出 stack=[1,2,3] stack.append(4) #入栈,以列表尾部为栈顶 print(stac ...

  3. 史上最全的整合第三方登录的工具JustAuth

    JustAuth,如你所见,它仅仅是一个第三方授权登录的工具类库,它可以让我们脱离繁琐的第三方登录SDK,让登录变得So easy! 参考图例 授权gitee 授权github 授权weibo 授权钉 ...

  4. Linux上安装GO开发环境+第一个程序编译运行

    首先官网下载包: 使用wget命令下载到自己的目录里 wget https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz 解压: tar -xvf go ...

  5. CentOS7 编译安装MySQL5.6.38(一)

    一.下载MySQL5.6.38安装包 下载地址:https://www.mysql.com/downloads/  打开网站之后选择Archives 然后再选择开源版本 选择我们要下载的版本: htt ...

  6. JS实现俄罗斯方块

    在80后.90后的儿时记忆里,俄罗斯方块是必备的消遣小游戏,它的玩法非常简单基本大家都懂,但如何用编程语言开发一款儿时同款「俄罗斯方块」,恐怕知道的同学就很少啦. 位置掩码和旋转掩码 俄罗斯方块游戏中 ...

  7. P1850 换教室[dp+期望]

    流下了不会概率的眼泪,由于不会概率,转移少写了点东西... 这个dp很简单,就是一个普通的线性dp加点期望.(刚开始写这道题时信笔写下) \(dp[0/1][i][j]\)表示到第\(i\)个时间段时 ...

  8. discuz添加标签聚合页

    discuz使用视频教程前段时间把discuz原本的标签聚合页修改了一下,原本的标签聚合页只显示100条最新的标签,把它修改成了所有标签都显示,并加上分页. 修改方法: 1.修改/source/mod ...

  9. 【大数据】设置SSH免密钥(转)

    设置SSH免密钥 关于ssh免密码的设置,要求每两台主机之间设置免密码,自己的主机与自己的主机之间也要求设置免密码. 这项操作可以在admin用户下执行,执行完毕公钥在/home/admin/.ssh ...

  10. java.util. Arrays.sort(scores);

    import java.util.*; public class ArraySortScore { //完成 main 方法 public static void main(String[] args ...