Openwrt 烧uboot 需要慎重,一般买一个带不死uboot的路由器再折腾会比较安全,因为

openwrt firmware对uboot分区进行了保护,而且带有不死uboot的路由器可以通过web界面刷firmware。

传说中的不死uboot 原版可以见下面的网址:

https://github.com/pepe2k/u-boot_mod

那么uboot是如何烧写的呢?我总结了下图:

这里总结了4个方法,前两个方法是openwrt还能开起来的时候,后两个办法是openwrt挂掉的时候用的。

第1个方法是通过SSH连接来将firmware放入到可写的文件系统,并且用命令将其刷人。

因为SSH支持文件的传输,用winscp+putty可以搞定。

第2个方法通过在电脑上搭建了一个http server,用ssh命令让openwrt从电脑上下载到firmware到板子上可写的文件系统,

并且用命令将其刷人。

第3个方法需要拆路由器,通过TTL线用命令让路由器从电脑上拿uboot,并且用命令刷入uboot

第4个方法是不死uboot的方法,这里的“不死”的意思实际上是不用拆机来恢复openwrt,

这样大大方便了倒腾的过程。这个uboot一般带有一个友好的web界面,通过HTTP将uboot文件上传到路由器。

当然了,如果连uboot都挂掉了,那么只能通过其他方法刷openwrt了(比如拆下flash直接刷),下面是一个例子:

http://blog.chinaunix.net/uid-27194309-id-3405021.html

在这里(https://github.com/pepe2k/u-boot_mod)提到了如何恢复:

My device does not boot after upgrade!

I told you... bootloader, in this case U-Boot, is the most important piece of code inside your device. It is responsible for hardware initialization and booting an OS (kernel in this case), i.e. it's the bridge head for delegating to / flashing kernel and rootfs images. So, if during the upgrade something went wrong, your device will not boot any more. The only way to recover from such a situation in a mild way is via a JTAG adapter connection. In case of a lack of JTAG connection, you would even need to remove the FLASH chip, load proper image using an external programmer and solder it back.

可以看到,如果uboot都坏了,那么只能将flash拆下,用编程器刷flash,或者使用JTAG连接到路由器。这些设备都需要额外购买,

而且有些路由器也不支持JTAG,所以刷uboot要慎重。

如果你对路由器上面的文件系统有疑惑,那么请看openwrt的官方文档:

http://wiki.openwrt.org/zh-cn/doc/techref/flash.layout

我这里只是介绍了一些大体的概念,具体刷uboot的操作可以看这里:

http://www.right.com.cn/forum/thread-154561-1-1.html

Openwrt Uboot烧写的更多相关文章

  1. 通过NORFLASH中的uboot烧写uboot到nandFlash

    在mini2440的教程中,在构建nandflash系统的时候是首先通过supervivi借助dnw烧写uboot.bin到nand flash 第零块, 由于我使用的是64位操作系统,usb驱动没安 ...

  2. mini2440 uboot烧写uImage

    mini2440下烧写u-boot后,就可以用u-boot烧写linux内核了. 安装mkimage工具: apt-get install u-boot-tools 解压缩官方mini2440 lin ...

  3. 嵌入式 hi3518c裸板uboot烧写、kernel烧写、fs烧写小结

    1.在uboot中我可以添加自己的命令,添加的方法是找到一个uboot的命令,然后模仿着去增加属于自己的命令代码以及实现函数就可以 2.记住在使用printf进行调试的时候,在遇到指针或者字符串的时候 ...

  4. u-boot烧写Linux及系统整个启动过程

    一.烧写文件 u-boot: u-boot.bin linux kernel: uImage Filesystem: root.bin(yaffs) 二.烧写步骤  1.烧写u-boot tftp 0 ...

  5. uboot烧写命令--yaffs、jiffs和ubifs

    如果要烧写的镜像的格式是yaffs2或者yaffs格式的,那么在往Nand Flash中烧写该镜像是必须采用nand write.yaffs,而不能采用nand write: nand write.y ...

  6. S5PV210 固件烧写 u-boot烧写

    首先阅读CW210_CD自带光盘中CW210 开发板使用手册.pdf 使用usb 拨码开关置成usb启动.xx可以是ON或OFF.开发板上面也有丝印提示 usb线接好,串口线接好 使用DNW下载 自带 ...

  7. 004使用u-boot烧写裸版程序

  8. 烧写uboot和openwrt固件ARxx系列

      以AR9331为例. 1.用烧录器将uboot烧写到flash中 (AR9331_U-Boot_Oolite-v1-v20170713.bin) 2.登录:192.168.1.1网页烧写uboot ...

  9. 基于tiny4412原生uboot修改制作SD启动并烧写到emmc

    最近入手tiny4412的标准板,底板SDK型号为1506.但是因为友善之臂提供的superboot不能进入boot菜单,此时我就不能通过tftp下载内核和通过nfs挂载根文件系统,于是想自己做个ub ...

随机推荐

  1. 邮件群发工具(C#版)

    引言 经常会参与组织一些社区活动,涉及到和不同的人进行交流,微信当然是必须的,同样邮件也是一种不可或缺的方式. 一般群发的邮件不是很友好,如果是一对一的,收到邮件的人是不是会比较重视,而且还有他的名字 ...

  2. java Hello 出现以下结果:Bad command or the file name 可能是什么原因

    没有这个命令或文件名 原因可能是没有成功安装jdk或者没有配置好jdk 的环境变量,或者没有编译相应的文件. 2. 出现以下结果:Exception in thread “main” java.lan ...

  3. LightSpeed 相关问题处理

    1. 关于KeyTable 配置文件中有一个节点 lightSpeedContexts  该节点下存放的是一些使用LightSpeed的配置,如 <add name="myDB&quo ...

  4. PHP实战-文章发布系统学习记录

    跟随大师的步伐,一步一步向前行进,PHP学习之路中的历程. 如果图片不能正常查看请访问云笔记链接 http://note.youdao.com/share/?id=3c25d8c03ef946d9c6 ...

  5. Java读取、创建xml(通过dom方式)

    创建一个接口 XmlInterface.java public interface XmlInterface {           /**         * 建立XML文档         * @ ...

  6. Same Tree

    Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...

  7. [嵌入式开发板]iTOP-4412以模块的方式编译驱动

    本文转自迅为:http://www.topeetboard.com 大家好,本章节我们将向大家讲解如何在 linux 下实现以模块的方式加载内核驱动.我们以内核里面蜂鸣器的 驱动为例来讲解. 1)首先 ...

  8. [cocos2dx]利用NDK崩溃日志查找BUG

    摘要: 在android上开发c++应用, crash日志都是汇编码, 很难对应到c++代码中去. 通过此文, 你可以定位到程序崩溃时的C++代码, 精确查找问题. 博客: http://www.cn ...

  9. 写一个ActionFilter检测WebApi接口请求和响应

    我们一般用日志记录每次Action的请求和响应,方便接口出错后排查,不过如果每个Action方法内都写操作日志太麻烦,而且客户端传递了错误JSON或XML,没法对应强类型参数,请求没法进入方法内, 把 ...

  10. python如何控制数据库?

    http://www.w3cschool.cc/python/python-mysql.html 通过利用MySQLdb可以操作数据库 实例: 以下实例链接Mysql的TESTDB数据库: # enc ...