找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 505539|回复: 493

【U-Boot】U-Boot 刷机方法大全

 火... [复制链接]
本帖最后由 hackpascal 于 2016-10-24 14:19 编辑

U-Boot 刷机方法大全

1楼: OpenWrt + SSH 刷机方法
2楼: U-Boot + TTL 刷机方法
3楼: 使用 HFS 上传文件 (配合1楼方法)


OpenWrt + SSH 刷机方法

如果要刷 U-Boot,则必须事先刷入解锁 u-boot 分区的 OpenWrt 固件。

准备工具:
PuTTY: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
WinSCP: http://winscp.net/eng/download.php

PuTTY 可以作为 SSH 客户端,登录路由器的 Shell 环境,以执行各种命令。
WinSCP 是一个图形化的 SCP 协议 (基于 SSH 的文件传输协议) 客户端,用于本地和路由的文件传输。

设置 OpenWrt 管理密码 (root 密码):
只有设置了 root 密码,才能使用 SSH 协议工具。
如果已经设置了密码,请跳过这一步。

以下步骤任选一个就行

1. 在 LuCI 里设置管理员密码(针对有 LuCI 的固件):
[系统] → [管理权]


2. 使用 telnet 登录路由设置密码(针对没有 LuCI 的固件):
telnet 协议是一种类似于 SSH 的协议,只是它不经过加密,因此在外网环境中不太安全。
OpenWrt 只有在未设置 root 密码时,才能使用 telnet 协议。

PC [开始]→[所有程序]→[附件]→[命令提示符]

Win + R 组合键→输入 cmd→回车

输入 telnet <路由IP地址>



输入 passwd,回车
输入两次密码,分别以回车结束。
注意:输入密码时,密码不会显示,直接输入即可。



使用 WinSCP 传输要刷入的文件 (以 U-Boot 为例):

打开 WinSCP
File Protocol 选择 SCP
Host name 填入路由器 IP 地址
User name 填入 root
Password 填入 root 的密码

单击 [Login]



如果是第一次使用 WinSCP 登录路由,那么 WinSCP 会弹出如下对话框:
其大意是第一次连接此主机,其 RSA 指纹 Key 未被登记,是否要信任此主机
这里单击 Yes,以确认信任此路由。



WinSCP 主界面
左侧切换到要上传的文件的目录
右侧切换到 /tmp 目录
选择 /tmp 目录的原因是:/tmp 目录挂载于内存中,而且容量较大,这样刷写固件时不会跟 Flash 产生冲突。



选择要上传的文件,右键菜单选择 [Upload]



直接单击 [OK] 继续
文件即可上传到路由中。

使用 PuTTY 登录路由:

打开 PuTTY
Host Name 填入路由器 IP 地址
Connection type 选择 SSH (默认)

单击 [Open]



跟 WinSCP 一样,如果是第一次使用 PuTTY 登录路由,那么会有如下提示:
单击 [Yes] 即可。



然后 PuTTY 会要求输入用户名和密码:
用户名填入 root
密码填入 root 密码。这里一样在输入密码时不会显示。
如果用户名密码无误,就会进入 Shell 环境。



输入 cd /tmp 命令进入 /tmp 目录。
输入 mtd write <文件名> <mtd分区名> 命令以进行刷机操作

下图是以刷入 U-Boot 为例的:



有些教程会在 mtd 命令后加入 -r 参数,此参数的意思为刷写完成后立即重启路由
但这里不建议这么做,因为一旦刷机文件选错,这里还有补救的机会。

关于获取 MTD 分区名:
运行 cat /proc/mtd 命令即可查看


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 23恩山币 +27 收起 理由
zhiqia*** + 1 试试效果怎样
ee*** + 1 强大的恩山!(以下重复1万次)
H*** + 1 率全体恩山路由党以及党魁向你学习!
lvchen*** + 1 强大的恩山!(以下重复1万次)
gooch*** + 1 强大的恩山!(以下重复1万次)
gy*** + 1 强大的恩山!(以下重复1万次)
micro*** + 1 我来恩山就是为了撩你!
yjf*** + 1 教程详细,感谢!
reged*** + 1 亲,你太牛逼了,走,我请你吃鳇鱼头去~~~
asu*** + 1 亲,你太牛逼了,走,我请你吃鳇鱼头去~~~
3ax*** + 1 亲,你太牛逼了,走,我请你吃鳇鱼头去~~.
lizhe*** + 1 楼主威武—我就想问问挖掘机技术哪家强?
oka*** + 1 高手!感谢分享。
jmp*** + 1 楼主威武—我就想问问挖掘机技术哪家强?
jimm*** + 1 太感谢大神了
CoCo*** + 1 楼主威武—我就想问问挖掘机技术哪家强?
aik*** + 1 强大的恩山!(以下重复1万次)
hs*** + 1 一看就是觉得高端、大气、上档次!
12819*** + 1 楼主威武—我就想问问挖掘机技术哪家强?
pu*** + 3 一看就是觉得高端、大气、上档次!
den*** + 1 切糕党手持切糕刀强势围观楼主!
斯琴*** + 1 楼主威武—我就想问问挖掘机技术哪家强?
WeD*** + 3 奉上最高加分

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
 楼主| | 显示全部楼层
本帖最后由 hackpascal 于 2014-12-11 23:33 编辑

U-Boot + TTL 刷机方法

此方法适用于任何 U-Boot。

准备工具:
PuTTY: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
TFTPd32: http://tftpd32.jounin.net/tftpd32_download.html

TFTPd32 是一个 TFTP 协议 (简单文件传输协议) 的服务端,用于向 U-Boot 传输文件。

使用 PuTTY 通过串口进入 U-Boot 命令行模式:
这里请自行查找相关资料

设置 PC 网络参数:
需要设置本机网卡的IP地址为静态IP,才能通过 U-Boot 传输数据

1. 查看 U-Boot 中的 IP 地址信息:
在 U-Boot 命令行中运行 printenv 命令



ipaddr 表示 U-Boot 即路由使用的 IP 地址
serverip 表示服务器即 PC 机使用的 IP 地址

这里需要将本机IP改为 serverip 的 IP 地址



设置 TFTP 服务器参数:
打开 TFTPd32
Current Directory 选择要上传文件的目录
Server interfaces 选择本机跟路由相连的网卡 (参考刚才设置的 IP 地址)



在 U-Boot 中使用 tftpboot 命令获取文件:
tftpboot 命令用于向 TFTP 服务器请求文件,并存入内存
tftpboot 命令在无歧义的情况下可简写为 tftp

tftp <内存地址> <文件名>

在 MIPS 架构下内存地址从 0x80000000 开始,一般也选择 0x80000000,因为这样可以尽可能使用更多的内存



文件传输成功的标志为 Loading: 后出现一连串 #
其中可能出现 checksum bad 的提示,这不影响数据传输。
如果每隔10s出现一个T,则表明通信超时,此时需要检查网络连接情况及IP地址是否正确。

Bytes transferred = 后面的第一个数字为传输的数据字节数,10进制;括号里的为对应的16进制大小,后面会用到16进制的大小。

在 U-Boot 中擦除 Flash:
任何一种 Flash 都有一个擦除块大小,擦除大小必须为此大小的整数倍,如果不是,则要进行对齐。

例如:
SPI Flash 的常见擦除块大小为 64KB,其字节数的16进制为 0x10000
如果擦除大小为 0x30000 (192KB),则此大小为 0x10000 的整数倍,是对齐的;
如果擦出大小为 0x12345 (72KB),则此大小未对齐,需要使用比它大但又最接近的是 0x10000 倍数的大小,即 0x20000 (128KB)。

erase <flash地址> +<擦除大小>

其中 Flash 地址在不同的芯片下有所不同,会在后文列出

以在 TP-LINK 路由中刷入 U-Boot 为例:

erase 0x9f000000 +0x20000



在 U-Boot 向 Flash 写入数据:
向 Flash 写入数据的大小可以是任意正整数

cp.b <源地址> <目的地址> <长度>

其中
cp.b 表示以字节为单位进行写入
源地址为通过 tftpboot 命令获取的文件数据的存放地址
目的地址为 Flash 地址
长度为通过 tftpboot 命令获取的文件的大小,16进制表示,带0x前缀

以在 TP-LINK 路由中刷入 U-Boot 为例:

cp.b 0x80000000 0x9f000000 0x20000




常见路由固件各成分的起始地址及大小:

TP-LINK 固件:
U-Boot固件ART
4M Flash 地址:0xbf000000 (AR71xx, AR913x) / 0x9f000000 (AR724x 及之后)
大小: 0x20000
Flash 地址:0xbf020000 / 0x9f020000
大小: 0x3c0000
Flash 地址:0xbf3f0000 / 0x9f3f0000
大小: 0x10000
8M Flash 地址:0xbf000000 (AR71xx, AR913x) / 0x9f000000 (AR724x 及之后)
大小: 0x20000
Flash 地址:0xbf020000 / 0x9f020000
大小: 0x7c0000
Flash 地址:0xbf7f0000 / 0x9f7f0000
大小: 0x10000
16MFlash 地址:0xbf000000 (AR71xx, AR913x) / 0x9f000000 (AR724x 及之后)
大小: 0x20000
Flash 地址:0xbf020000 / 0x9f020000
大小: 0xfc0000
Flash 地址:0xbfff0000 / 0x9fff0000
大小: 0x10000
32M
(仅楼主不死 U-Boot)
Flash 地址:0xbf000000 (AR71xx, AR913x) / 0x9f000000 (AR724x 及之后)
大小: 0x20000
Flash 地址:0xbf020000 / 0x9f020000
大小: 0x1fc0000
Flash 地址:0xc0ff0000 / 0xa0ff0000
大小: 0x10000


网件 WNDR3700v2/WNDR3800/WNDRMAC:
仅 U-Boot 及 ART,因为原厂升级固件不能直刷
U-BootART
16MFlash 地址:0xbf000000
大小: 0x50000
Flash 地址:0xbfff000
大小: 0x10000


AR2317 UBNT:
仅 U-Boot 及 board_config,因为原厂升级固件不能直刷
仅适用于楼主的不死 U-Boot
U-BootART
4MFlash 地址:0xa8000000
大小: 0x30000
Flash 地址:0xa83f000
大小: 0x10000
8MFlash 地址:0xa8000000
大小: 0x30000
Flash 地址:0xa87f000
大小: 0x10000
16MFlash 地址:0xa8000000
大小: 0x30000
Flash 地址:0xa8ff000
大小: 0x10000


AR7161 AR724x AR934x UBNT:
仅 U-Boot 及 EEPROM/ART,因为原厂升级固件不能直刷
U-BootART
4MFlash 地址:0xbf000000 (AR7161) / 0x9f000000 (AR724x 及之后)
大小: 0x40000
Flash 地址:0xbf3f0000 / 0x9f3f0000
大小: 0x10000
8MFlash 地址:0xbf000000 (AR7161) / 0x9f000000 (AR724x 及之后)
大小: 0x40000
Flash 地址:0xbf7f0000 / 0x9f7f0000
大小: 0x10000


MT7620 公版类型的固件 (U-Boot 大小为 192KB):
U-Boot固件EEPROM
4M Flash 地址:0xbc000000 (其它 U-Boot) / 0x9c000000 (楼主不死 U-Boot)
大小: 0x30000
Flash 地址:0xbc050000 / 0x9c050000
大小: 0x3b0000
Flash 地址:0xbc040000 / 0x9c040000
大小: 0x10000
8MFlash 地址:0xbc000000 (其它 U-Boot) / 0x9c000000 (楼主不死 U-Boot)
大小: 0x30000
Flash 地址:0xbc050000 / 0x9c050000
大小: 0x7b0000
Flash 地址:0xbc040000 / 0x9c040000
大小: 0x10000
16MFlash 地址:0xbc000000 (其它 U-Boot) / 0x9c000000 (楼主不死 U-Boot)
大小: 0x30000
Flash 地址:0xbc050000 / 0x9c050000
大小: 0xfb0000
Flash 地址:0xbc040000 / 0x9c040000
大小: 0x10000
32M
(仅楼主不死 U-Boot)
Flash 地址:0x9c000000
大小: 0x30000
Flash 地址:0x9c050000
大小: 0x1fb0000
Flash 地址:0x9c040000
大小: 0x10000

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
本帖最后由 hackpascal 于 2014-12-12 12:15 编辑

使用 HFS 上传文件
如果觉得使用 WinSCP 上传文件比较麻烦,那么可以考虑 HTTP 方式上传文件,即将PC设置为 HTTP 服务器,在路由上下载文件。
如果PC上已经搭建有 HTTP 服务器,那么可以直接将要上传的文件存放于 HTTP 根目录,再在路由上通过 wget 命令来下载。

准备工具:
HFS: http://www.rejetto.com/hfs/?f=dl

HFS 是一个轻量级的 HTTP 文件服务器 (HTTP File Server)

配置 HFS:
配置 HFS 很简单,只需指定监听 IP 地址和要下载的文件。
[Menu]→[IP address] 选择本机网卡的 IP 地址



左侧 Virtual File System 里右键菜单,Add files...,选择要上传的文件。




路由里下载文件:
参考1楼的方法,使用 SSH 或 telnet 进入路由
执行 cd /tmp 进入 /tmp 目录
执行 wget http://<HFS的监听IP地址>/<文件名> 以下载文件

如:
wget http://192.168.1.2/u-boot-tp9343.bin




之后的操作同1楼的方法。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

楼主精神可嘉
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

板凳
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

擦,沙发都被楼主占了。。自撸!!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

hack顶你。。。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

感谢分享,为大神加油
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

太好了,谢谢分享。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
支持大神,
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

支持大神,涨姿势了,虽然有些已经在实践了!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

围观大神!火前留名!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
感谢分享,为大神加油!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

老大的帖子太详细了,支持
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

最敬佩的一个高手!!  谢谢!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-27 00:34

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表