Ruff救砖指南


(rourou) #1

Ruff 救砖指南

目前发现部分用户在使用 rap system upgrade 升级 Ruff 系统的时候出现了升级失败的情况。此文档可帮助大家在无法进入 Ruff 系统的情况下使用 Uboot 自带的更新功能来升级 Ruff 系统。

####原理

  • 除了使用 rap 命令在系统启动后可以升级外,Ruff 系统同样可以通过 Uboot 所提供的 TFTP 的方式升级 Ruff 系统。

####步骤

  • 安装最新 Ruff SDK

    https://ruff.io/zh-cn/docs/download.html

  • 网络连接

    因为 Uboot 是不支持无线连接的。用一根网线插入 Ruff 的 RJ45 网口接到路由器上去,同时将自己的电脑也连接到同样的网络中。

  • 安装串口驱动

    Ruff 使用的串口芯片 PL2303。
    驱动下载地址如下,请选择适合自己的版本。安装好串口驱动后,有可能会重启电脑。

    Windows: http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=225&pcid=41
    macOS: http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=229&pcid=41

  • 搭建 TFTP server

    在命令行终端执行命令 rap system upgrade ruff <path of your image> --tftp(此处的 image file 需为 bin 文件,解压 ruff-x.y.z.zip 可以得到),成功搭建 TFTP server。

    此操作可能需要管理员权限和防火墙允许,请注意提示信息。

  • 通过串口连接到板子

    将 Ruff 开发板通过 USB 线与电脑连接。在 Windows 的设备管理器或者 macOS 的查看硬件信息中就可以看到正确的串口设备了。

    如果环境是 Windows,需要一个串口调试软件。请下载诸如 putty,xshell,secureCRT 或者串口调试助手。
    串口配置信息为:

    波特率:57600
    Databits(数据位): 8bits
    Parity: None
    stopBits: 1bit
    奇偶校验:无

    如果环境为 macOS,需要安装下screen,在命令行执行:

    screen  /dev/cu.usbserial 57600,cs8,-cstopb,-parity,-crtscts 
    
  • 重启板子

    • 重启板子进入 BootLoader,在看到如下图示信息时迅速按下键盘的 2。确认一定要按 2,千万不要按 9 之类的后面的数字,否则会彻底刷坏板子。
      Please choose the operation: 
         1: Load system code to SDRAM via TFTP. 
         2: Load system code then write to Flash via TFTP. 
         3: Boot system code via Flash (default).
         4: Enter boot command line interface.
         7: Load Boot Loader code then write to Flash via Serial.
         9: Load Boot Loader code then write to Flash via TFTP. 
    
    • 看到如下提示按 Y。
     2: System Load Linux Kernel then write to Flash via TFTP. 
     Warning!! Erase Linux in Flash then burn new one. Are you sure?(Y/N)
    
    • 看到如下提示输入两个 IP。第一个 IP 是分配给 Ruff 板子的 IP,注意不要和网络中的已有的 IP 重复,可以通过查看路由器信息来确认。 第二个 IP 是自己电脑的 IP。第三个 filename 请保持 dev.bin。
    Please Input new ones /or Ctrl-C to discard
        Input device IP (10.10.10.123) ==:random-ip
        Input server IP (10.10.10.3) ==:your-PC-ip
        Input Linux Kernel filename (dev.bin) ==:dev.bin
    
    • 配置完后回车,这样就会看到开始烧写 Flash。整个过程大概需要 1 分钟,烧写完成后系统就会启动起来。这样更新系统就完成了。

【新手必看】Ruff 使用秘籍
升级固件失败
(bisunday) #2

LInux 怎么办


(libo) #3

怎样是变砖?开机后红绿灯常亮吗?


(rourou) #4

开机红绿灯常亮,有时候是USB多次插拔后接触不良导致的。重新插拔下USB看下情况。

刷机变砖不会破坏bootloader, 不会出现三灯常亮的现象


(jsyzcq) #5

感谢rourou、Bondi.BLUE以及ruff的客服人员,在你们的帮助下,我的ruff终于救砖成功!

分享下自己的救砖过程,希望能给需要救砖的人一些帮助。

故障:我的ruff在升级重启后,出现红灯常亮,长按黑色Reset键无法恢复出厂设置,只能通过烧写Flash的方式救砖。

参照这个帖子,下载最新的ruff sdk、ruff os和串口驱动,用网线连接路由器,到了搭建TFTP server这一步,按照帖子中用rap命令来搭建TFTP server时,输入 “rap system upgrade --tftp c:\ruffos.bin”(ruffos.bin是提前下载的最新的ruff os),命令提示报错:”missing required argument ‘firmware-binary-file’ “,输入"rap system upgrade --tftp -h"来看帮助,发现少了”target“参数,而且可以直接用’-t’来代替"–tftp",于是添加上本地地址,输入"rap system upgrade -t 127.0.0.1 c:\ruffos.bin"后回车,命令行显示
”TFTP server is running, the binary is being served as dev.bin.
Press ^C to exit.”
成功搭建TFTP Server。

下一步就是通过串口连接板子。以前没有用过串口调试软件,在某度里下载了一个串口调试软件,按照帖子设置好参数,重启板子后进入BootLoader,进入设置Ruff板子的IP地址界面,结果下载的串口调试软件有问题,无法输入并保存IP地址。于是重新下载putty,下载完成后可以按照帖子中提示的输入IP地址后烧写Flash,再次看到wifi绿灯亮起后长舒一口气,ruff救砖成功。

注:
(1)帖子中 “Please Input new ones /or Ctrl-C to discard
Input device IP (10.10.10.123) ==:random-ip”
这一步实际显示是 “Please Input new ones /or Ctrl-C to discard
Input device IP (10.10.10.123) ==:10.10.10.123”,光标在“123”后,这里的IP地址是默认IP地址,是可以用退格键删除的,删除后输入配置给板子的IP地址即可。
(2)关于烧写过程中出现“ARPCheckTimeOut”的情况:我在烧写过程中花时间最长的就是这个问题。
最初看帖子时没注意,以为ruff连接上路由器后会在路由器中显示一个IP地址,这样在输入板子的IP地址时就输入路由器中的IP地址。比较碰巧的是烧写板子的时候连接的路由器里除了个人PC外,当时没有关闭手机,结果输入了手机的IP地址,自己也没太注意,烧写过程中就出现了这个“ARPCheckTimeOut”的提示。从提示上看应该是没有连接上板子或者板子没有成功连接TFTP服务器。在电脑上ping了一下输入的IP地址,ping通了;(这个是手机的IP地址,当时没注意,结果就造成了后面的诸多事情!粗心害死人!)由于自己是第一次用TFTP服务器,当时的想原因会不会是TFTP服务器没有配置成功,于是就用笔记本连接用rap命令配置的TFTP服务器看看,发现可以正常下载,这样排除了TFTP服务器的原因;然后就在网上查资料,有的说路由器不行必须用交换机,于是找同事借了个路由器。连接PC和ruff板子,打开路由器客户端列表页面,查看ruff板子的IP地址,结果发现在路由器的客户端列表里面没有发现ruff!网线问题、路由器端口问题都一一排除了,难道是ruff板子的RJ45网口坏掉了?我百思不得其解。重新看帖子中的内容,发现了最初的错误:帖子中说的是”第一个 IP 是分配给 Ruff 板子的 IP,注意不要和网络中的已有的 IP 重复,可以通过查看路由器信息来确认。“也就是说是需要自己给板子分配一个未被路由器使用的IP,而不是说路由器会自动给板子分配IP。于是,自己输入一个新的IP地址,回车运行,终于看到了久违的”Got it!“
(3)提前关闭PC的防火墙、杀毒软件和路由器中自带的防火墙,连接TFTP服务器时需要过防火墙。

这次的事情更进一步增加了对ruff的一些理解,感谢ruff的工作人员提供的各种帮助!


checksum bad
(wanli) #6

精华帖啊,收藏~


(wanli) #7

重启如何进入bootloader呢?


(jerry) #8

文章中有提到,选择 2


(wanli) #9

嗯嗯,这一步我已经进去了。但是我用的串口工具一直没办法修改
Please Input new ones /or Ctrl-C to discard
Input device IP (10.10.10.123) ==:random-ip
Input server IP (10.10.10.3) ==:your-PC-ip
Input Linux Kernel filename (dev.bin) ==:dev.bin

这里面的两个ip地址(就是加粗部分,因为串口工具的数据接收区和数据发送区并不是一个窗口,而且在数据发送区敲入的数据也不能实时显示在数据接收区哪里,也不知道光标在哪里,导致我敲入的ip地址没有写入对应的位置)。

还有,device ip这里面填一个路由器未分配的随机ip就行了是吧?因为,我的网上插上了开发板,路由器并没有检查到我的开发板已经接入。


(wanli) #10

请看看我的问题,谢谢`


(jerry) #11

不清楚你用的是哪种串口工具,在数据接收的窗口应该是可以输入数据的。
所有的操作和路由器没有关系,需要用一根网线连接开发板和 PC,然后 PC 需要设置为静态 IP,在 server IP 中输入的就是 PC 的静态 IP,device IP 中输入的是和 PC 在同一个局域网的 IP 即可。


(wanli) #12

那你有相应的工具推荐嘛?


(wanli) #13

老哥~


(wanli) #14

@jerry 我已经走到这一步了,ip都设置好了,但最后还是没有成功,请问是怎么回事?tftp已经打开,网线也插到开发板上面去了,网线没有问题。