首页 > 拆机刷机 > 正文

关于 Breed 刷新版 UBNT 固件的一点说明
2015-10-18 22:24:01   来源:恩山论坛   评论:0 点击:

知从什么时候起,UBNT 开始在其固件中加入了设置 Flash 写保护的功能,此写保护在 Flash 断电后依然存在,可通过向 Flash 发送清零状态寄存器的指令来解除写保护,或者通过编程器来解除写保护。楼主
       知从什么时候起,UBNT 开始在其固件中加入了设置 Flash 写保护的功能,此写保护在 Flash 断电后依然存在,可通过向 Flash 发送清零状态寄存器的指令来解除写保护,或者通过编程器来解除写保护。

楼主在开发 Breed 之初并未预料到会有固件会进行这样的设置,但 UBNT 确实这么做了,很恶心。

在 UBNT 固件设置了 Flash 写保护后, Bootloader 必须在每次启动固件前解除 Flash 写保护,否则固件无法正常启动。

Breed 很快跟进,加入了清除 Flash 写保护的功能,因此能够启动最新的 UBNT 固件。

以下为重点:

如果是老版的 Breed 遇到了设置写保护的固件,那么从 Breed 里面将无法进行任何更新操作,包括升级 Breed,唯一的办法就是使用替换了 U-Boot 的 UBNT 升级固件来更新最新版的 Breed。

但是。。r766 之前的 Breed 有个小缺陷,即不会检查 UBNT 所使用的 u-boot-env (U-Boot 环境变量) 的有效性。

这会导致一个问题,即如果 Flash 中没有有效的 u-boot-env (例如从空白的 Flash 刷 UBNT、用编程器刷 UBNT 固件工具生成的编程器固件、先刷 TP-LINK 固件再刷 UBNT 固件),那么从 UBNT Web 升级固件将会失败。失败的表现是 UBNT 升级页面出现 -117 的错误码。

如果存在这个问题,恰好又使用了老版 Breed 刷入了新版带写保护的固件,那么。。请看下文的终极解决办法;否则可以通过刷替换 Breed 的 UBNT 升级固件来解决此问题。

最新的 Breed r766 修复了 u-boot-env 问题,每次更新时都会自动处理此部分;UBNT 固件工具也已更新,会在生成编程器固件时自动加入 u-boot-env 数据。

========================================华丽的分割线========================================

终极解决办法:

如果升级固件替换 breed 无效,则使用此方法

原理:使用内存启动版 breed 来刷入最新版 breed

方法:
  • 根据路由是uboot还是breed,搭建tftp/http服务器
  • 下载本贴附件 breed-mem-ar724x.img,注意此文件绝不能刷入路由,否则变砖,后果自负
  • 通过 ttl 或者 telnet (仅breed)进入 uboot/breed
  • 通过 tftp (uboot)/wget (breed) 命令将 breed-mem-ar724x.img 载入内存,记下载入的内存地址 (默认是 0x80000000)
  • 通过 bootm 0x80000000 (uboot)/boot mem 0x80000000 (breed) 运行 breed-mem-ar724x.img, 将 0x80000000 改为实际的加载地址
  • 内存版 breed 启动后,就已解除了 flash 写保护,此时直接访问 192.168.1.1 刷入最新版 breed 即可

说明:
  • 具体的 tftp/wget 方法请自行搜索,本贴不再叙述
  • breed-mem-ar724x.img 是专门用于从内存中运行的特殊 breed,不会进行 CPU 频率初始化以及内存初始化,不能刷入 flash,否则必变砖

附件:
\ breed-mem-ar724x.zip (82.97 KB, 下载次数: 74) 

相关热词搜索:固件

上一篇:四大CPU体系结构:ARM、X86/Atom、MIPS、PowerPC
下一篇:最后一页

分享到: 收藏