• openwrt(三) 固件的烧录


    导航:

      方法1: tftp;

      方法2: 在线升级

      方法3: BIOS烧录

    方法1:TFTP

      这应该是最万能的一种方法了。TFTP是一种依靠网口传送数据的一种通信协议,没错,只是传输数据,并不是烧录,所以实现烧录这个功能的还是uboot的功能。
      准备:机子有uboot。

      步骤:

    1. 连线。将电脑的网口连上路由器的随便一个口。然后用ssh也好,用串口也好,(我一般用串口),进入到路由器的后台linux系统。
    2. 电脑ip设置。
      1.  在路由器后台,执行reboot,在路由器重启时,根据提示进入boot模式。
      2.  用帮助命令查看  查询当前环境变量的命令。我的是printenv。找到我们要的server_ip.
      3.  在电脑上,将IPV4设置为静态地址,就填刚刚的服务器地址。保存,退出。
    3.  将固件放在TFTP指定的路径下,(可百度TFTP的使用方法),然后执行uboot命令。
      1. 传输: tftp 0x80060000 lede.bin  //0x80060000是flash的固件保存地址,这个根据UNI自己的uboot决定,每个人都不同,可以执行2.2命令查看。lede.bin是我要烧录的文件。
      2. 擦除:erase 0x9f050000 +$filesize   //0x9f050000 是固件的启动地址 $filesize 是变量,会自动带入固件的大小。不要漏掉了+号。
      3. 拷贝:cp.b 0x80060000 0x9f050000 $filesize
      4. 设置启动地址:set bootcmd 0x9f050000;save;
        1. 这里可真的是一个坑。我也不知道怎么描述,我的情况是,
        2. 当我烧录openwrt15版本的时候,启动地址是0x9f050000
        3. 当我烧录lede17版本的时候,启动地址要设置为0x9f800000,才能启动。
      5. 启动:boot。

    方法2:在线升级

      这是最方便的方法了。但是仅仅支持同一版本的系统才行在线更新。比如我15版本只能更新15,而不能刷lede版本。

      步骤:进入路由器网页管理界面,找到系统升级,选择固件升级即可。

    方法3:BIOS烧录(最终版)

      为什么会写这么一个版本呢?因为我有一次在用TFTP烧录,erase的时候,记错地址 ,把uboot给擦没了。这样子uboot用不了,系统又无法启动,彻彻底底成为砖了。

    这个时候我只能把flash芯片卸下来,然后把uboot重新烧录进去。BIOS烧录要用到烧录器,就是一个专门烧写falsh的小设备。然后配合烧录软件,就可以完成烧录。这是最底层的烧录。也是uboot的烧录。然后再把flash重新焊接上去,成功救活。

    上面是我自己使用过的烧录方法。好修昂还有其他方法,我就不研究了。工作中慢慢总会碰到很多烧写固件的方法,再总结。

    以上。

  • 相关阅读:
    斯坦福大学机器学习第四课“多变量线性回归(Linear Regression with Multiple Variables)”笔记
    面向对象基础知识二、对象的创建和销毁
    英语思维20210907
    英语思维20210908
    3.2 Dependencies of the Projects in the Solution 解决方案中项目间的依赖项
    面向对象基础知识三、对象组合
    面向对象基础知识四、对象复制
    3 Implementation: The Big Picture 实现:蓝图
    面向对象基础知识五、对象序列化
    英语思维20210906
  • 原文地址:https://www.cnblogs.com/kmist/p/9864049.html
Copyright © 2020-2023  润新知