编程器固件、uboot、fullflash

:~# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00020000 00010000 "RedBoot"
mtd1: 007c0000 00010000 "linux"
mtd2: 00270000 00010000 "rootfs"
mtd3: 00410000 00010000 "ddwrt"
mtd4: 00010000 00010000 "nvram"
mtd5: 00010000 00010000 "board_config"
mtd6: 00800000 00010000 "fullflash"
mtd7: 00020000 00010000 "fullboot"
:~#

DDWRT备份成编程器固件命令(前提是有fullash分区)

:~# dd if=/dev/mtd6 of=/tmp/741_fullflash.bin
16384+0 records in
16384+0 records out
:~#

刷成编程器固件命令(前提是有fullash分区)

:~# mtd -r write fullflash /tmp/741_fullflash.bin
16384+0 records in
16384+0 records out
:~#

 

编程openwrt固件时修改mach-tl-mr3x20.c(对应3420)增加一个fullash

}, {
  .name  = "fullflash",
  .offset  = 0,
  .size  = 0x800000,

  .mask_flags = MTD_WRITEABLE,

}

  .size  = 0x800000, 这个是flash大小8M

去掉  .mask_flags = MTD_WRITEABLE,是分区可以写,否者只可读

 

 

编程器固件包含uboot+内核固件+art/board_config (适用于ar 3240固件等)

一、准备uboot、内核固件(firmware)、art/board_config
  1、登录路由
  2、切换到tmp目录,
  3、使用dd命令备份uboot、firmware、art/board_config,
  4、使用cat命令将文件合并,假设新文件名为xxx.bin
  5、使用WinSCP将文件复制到电脑 

root@OpenWrt:~# cd /tmp
root@OpenWrt:/tmp# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00020000 00010000 "u-boot"
mtd1: 00140000 00010000 "kernel"
mtd2: 00690000 00010000 "rootfs"
mtd3: 00460000 00010000 "rootfs_data"
mtd4: 00010000 00010000 "art"
mtd5: 007d0000 00010000 "firmware"
root@OpenWrt:/tmp# dd if=/dev/mtd0 of=uboot.bin
root@OpenWrt:/tmp# dd if=/dev/mtd5 of=firmware.bin
root@OpenWrt:/tmp# dd if=/dev/mtd4 of=art.bin
root@OpenWrt:/tmp# cat uboot.bin firmware.bin art.bin > fullflash.bin

相当于windows下   copy /b 1.txt+2.txt 3.txt

 

区分固件是否带uboot

用Uedit32打开固件

这个是有uboot的

这个是有没有uboot的的openwrt固件

去掉固件的uboot  (也就是删除固件前成128k数据)
这个是有uboot的



128K*1024 =131072

 

固件加uboot

copy /b uboot.bin+固件.bin 新固件.bin

 

 

uboot下刷机

打开tftpd32 把固件放tftpd32设置的目录下
打开SecureCRT 波特率115200

这是7240 uboot下刷4M编程器的固件
ar7240> printenv
ar7240> setenv ipaddr 192.168.1.222
ar7240> setenv serverip 192.168.1.2           #PC设置网卡IP为192.168.1.2
ar7240> tftpboot 0x80000000 150r.bin
ar7240> erase 0x9f000000 +0x3fffff
ar7240> cp.b 0x80000000 0x9f000000 0x3fffff
ar7240> bootm

ubnt uboot刷机 
tftpboot 0x80000000 1508m.bin

erase 0xbf000000 +0x3fffff

cp.b 0x80000000 0xbf000000 0x3fffff
bootm

普通的uboot 和 ubnt的uboot的刷机都搞定了

 

普通的uboot一个是 0x9f000000开始

,ubnt是 0xbf000000开始

 

 

 

 

 

 

刷编程器固件
setenv ipaddr 192.168.1.111
setenv serverip 192.168.1.2
tftpboot 0x80000000 741V3_factory_all.bin
erase 0x9f000000 +0x400000
cp.b 0x80000000 0x9f000000 0x400000

刷普通固件
tftpboot 0x80000000 op.bin
erase 0x9f020000 +0x400000
cp.b 0x80000000 0x9f020000 0x400000
bootm




转载自:http://hi.baidu.com/opwrt/item/c7a7e72ff12bec98b6326362

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
U-Boot是一种开源的引导加载程序,通常用于嵌入式系统中。通过串口升级固件是指使用串口连接到设备,利用U-Boot提供的命令和功能,实现对设备固件的升级操作。 首先,我们需要通过串口连接到设备,并确认设备已经进入U-Boot环境。在U-Boot环境中,我们可以通过输入特定的命令来实现固件升级。具体的步骤如下: 1. 打开终端或串口工具,并将设备与电脑连接。确保连接的串口端口和波特率正确。 2. 启动设备并进入U-Boot环境。通常在设备加电后会显示一些启动信息,其中会包含提示如何进入U-Boot命令行界面的信息,例如按下某个键或输入特定的命令。 3. 进入U-Boot命令行界面后,我们可以通过输入特定的命令来实现固件升级。具体的命令可能会因设备而异,一般有以下几种方式: - 在U-Boot中使用TFTP协议进行固件升级。首先需要在电脑上搭建TFTP服务器,然后通过U-Boot命令从TFTP服务器下载固件并进行升级。 - 在U-Boot中使用串口进行固件升级。通过U-Boot提供的串口协议将固件文件发送到设备,并在U-Boot中执行特定的命令来进行固件升级。 - 在U-Boot中使用USB进行固件升级。连接设备的USB接口到电脑,然后通过U-Boot提供的USB协议将固件文件发送到设备并进行升级。 4. 确认固件文件的格式和正确性。在进行固件升级前,需要确保固件文件的格式和版本正确,并且与目标设备兼容。 5. 执行固件升级操作。根据具体的命令和方式,执行相关的固件升级操作。在升级过程中,确保设备电量充足,并避免中断升级过程。 通过以上步骤,我们可以通过串口连接到设备,并利用U-Boot的功能实现固件升级操作。固件升级是一项风险较高的操作,建议在操作前充分了解设备和U-Boot的相关知识,并确保备份重要数据,以避免升级失败导致设备无法正常运行。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值