找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 21561|回复: 69

大麦dw33d NAND固件安装方法和一些技巧

  [复制链接]
发表于 2019-12-27 21:27 | 显示全部楼层 |阅读模式
本帖最后由 shanpo 于 2020-1-6 09:36 编辑

2020/1/6再增加TFTP更新固件方法。

刷机有风险,一般并不建议这么玩,除非你愿意自己承担风险。当然因为我错误的指导弄出砖来,大家请随意喷。
玩固件,至少需要了解如何建立tftp/http服务器,掌握ssh/scp/telnet命令使用方法,进一步还需要了解ttl串行控制台的使用方法;本贴对相关知识不会详细说明,请大家自行在网上搜索。

从NAND闪存启动固件,原厂u-boot/breed都可以实现;不过之前dw33d固件都是安装在nor闪存上的,这两种引导加载程序默认都无法启动NAND上的固件,只能修改启动参数。

先来说说原厂u-boot下的启动和安装,请先架设好tftp服务器并测试可用。
让我们比较下两种固件uboot启动参数的差异:
bootcmd=bootm 0x9fe80000                        //NOR固件启动参数
bootcmd=nboot 0x8050000 0;bootm                 //NAND固件启动参数
可以看到nand启动是靠nboot命令实现的。u-boot启动参数存放在nor闪存的u-boot-env分区,可以通过uboot-envtools软件修改,也可以通过ttl串行连接u-boot控制台直接修改。原厂固件和本人提供的固件都可以用fw_printenv/fw_setenv命令显示和修改。
另一个重要的u-boot命令是tftp,这是一个网络启动命令,使路由器启动不再依赖内部闪存,由于固件加载到内存中运行,可以自由地切换不同的分区布局。
tftp启动的例子:
bootcmd=tftp 0x84000000 dw33d.bin;bootm 0x84000000
命令在远程tftp服务器上查找名为dw33d.bin的内存固件,如果找到,加载到0x84000000地址,然后bootm启动。因为要使用网络,还需注意两个参数ipaddr/serverip,这两个参数指示本机/tftp服务器IP地址,例如:
ipaddr=192.168.0.250
serverip=192.168.0.254
利用tftp命令,还可以修复固件错误导致的软砖,避免上ttl串行控制台救砖:
bootcmd=tftp 0x84000000 dw33d.bin;bootm 0x84000000 ||nboot 0x8050000 0;bootm
这条命令使路由器启动时总是先尝试网络启动,如果失败再执行后面的NAND启动;假如我们刷入了错误的固件,导致无法从闪存启动,只需重新架好tftp服务器,在内存固件中重新刷入正确的固件即可。注意务必设置以下参数:
netretry=no
否则,u-boot只会反复尝试tftp启动。用于tftp启动的内存固件,如果用源代码自己编译,默认会生成一个文件名带initramfs-kernel的固件,就是它。
上述命令的缺点是会增加一点启动时间。
再来说NAND固件的安装,在此我强烈建议切换固件尽可能在tftp启动的内存固件中进行,比较不容易出问题。如果从原厂固件安装,可以在web高级管理页面单击‘系统’->‘启动项’,在‘本地启动脚本’输入框中exit 0指令前输入修改uboot环境变量的命令:
  1. fw_setenv ipaddr 192.168.0.250
  2. fw_setenv serverip 192.168.0.254
  3. fw_setenv bootcmd "tftp 0x84000000 dw33d.bin;bootm 0x84000000 ||nboot 0x8050000 0;bootm"
  4. fw_setenv netretry no
复制代码



核对无误后重启路由器,路由器会再次启动原厂固件,不过这次会修改好u-boot启动参数,下次重启就会尝试tftp加载内存固件了。如果tftp启动成功,就可以用浏览器访问openwrt默认地址192.168.1.1,在WEB管理页面如日常更新固件一样选择NAND固件(文件名包含sysupgrade的固件文件)完成更新。
如果是在其他任何固件下安装,而u-boot-env分区又被锁住,那就只能通过ttl串行控制台来修改u-boot启动参数了,或者设法刷breed bootloader来解决。
breed下安装,请先将breed更新到最新版本并架设好http服务器,其实每一个运行openwrt并且安装了luci的路由器都自带http服务器。breed又称不死uboot,只要breed本身没有被破坏,任何时候都可以进入breed控制台,如何进入breed控制台请参考相关教程。有两种方法连接到控制台,telne和web;因为breed默认启动nor固件,因此必须自定义启动参数来启动NAND固件。可以在web控制台启用和设置breed环境变量,但不能刷写固件,因此还是要用到telnet访问控制台。


通过telnet控制台安装:
首先启用breed环境变量
envconf 0x6000000 0x20000
启用后需要reset重启路由器才能生效,breed环境变量存储在NAND闪存上,这是breed默认的,无法修改,我设置的存储位置位于oem-backup保留分区。
设置breed环境变量
  1. env set network.ipaddr 192.168.0.250
  2. env set network.netmask 255.255.255.0
  3. env set autoboot.disabled 0
  4. env set autoboot.delay 5
  5. env set autoboot.command "boot flash bank 0 0x0"
  6. env save
复制代码

加载内存固件
wget 0x84000000 http://192.168.0.250/firmware/dw33d.bin
boot mem 0x84000000
加载成功后telnet会中断连接,可以像前面讲过的方法在内存固件下更新NAND固件。或者如下直接刷固件:
breed> wget http://192.168.0.254/firmware/dw33d-factory.bin
wget http://192.168.0.254/firmware/dw33d-factory.bin
Connecting to 192.168.0.254:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13631488/0xd00000 (13MB) [application/octet-stream]
Saving to address 0x80000000

[========================================================================] 100%

Transmission completed in 2.0s.

breed> flash bank 0 erase 0x0 0xd00000

breed> flash bank 0 write 0x0 0x80000000 0xd00000
flash bank 0 write 0x0 0x80000000 0xd00000
Writing flash bank 0 into 0h from memory 80000000h, size d00000h
[========================================================================] 100%
Succeeded
注意直接刷机文件必须是文件名包含factory的固件文件。reset重启就ok了。在breed下刷机就无所谓之前采用的是什么固件,但必须强调不能用breed web控制台更新NAND固件。

顺便说说如何返回原厂固件
ssh连接到路由器,修改uboot启动参数:
fw_setenv bootcmd "tftp 0x84000000 dw33d.bin;bootm 0x84000000 ||bootm 0x9fe80000”
重启后uboot将启动NOR闪存上的固件,如果NOR闪存上是原厂固件,启动不会成功,因为原厂固件将nand闪存作为rootfs_data分区,而NAND闪存上已有的数据对原厂固件来说是脏数据;但不要紧,当启动卡住时只需按reset键5秒,重启就行了。刷入原厂固件的方法还是先tftp加载内存固件,用scp命令上传固件到路由器,然后刷入:
scp firmware.bin root@192.168.1.1:/tmp
ssh root@192.168.1.1
mtd erase /dev/mtd2
mtd write /tmp/firmware /dev/mtd2
在我编译的ath79固件中,mtd2分区名是oem-firmware。

最后,简单说说ttl串行控制台,对于不带键盘和显示器的嵌入式设备,ttl串行连接器是唯一能访问引导加载程序的方法,除非是breed这类专为玩家打造的引导加载程序。这需要一个USB转TTL模块,马云家很多也很便宜,模块上的一排针脚只用3个(TX、RX、GND),拆开路由器,找到主板上串行接口,一般是4针,不要接VCC,可能会烧坏TTL模块,模块TX连接主板RX,模块RX连接主板TX,GND直连。pc端ttl控制软件我也不甚了解,我在linux系统下只用过picocom:
sudo picocom -b 115200 /dev/ttyUSB0
在ttl串行控制台当你按任意键中断uboot后,输入help命令,控制台显示所有可用命令,这里只说明一下修改启动参数的命令printenv/setenv,修改参数后记到用saveenv命令保存。


最后对本帖提供的文件做个说明,u-boot是原厂bootloader文件,firmware是原厂固件文件;uboot-unlock.bin是解锁bootloader分区的内存固件,可以tftp加载,此固件可以刷bootloader;另外三个长名文件是我编译的NAND固件,基于openwrt官方代码打上我的ath79补丁。

MD5 2a3773fba9608ea59a26e52bc101f723 u-boot
MD5 c9113ebe98b91666153b01df19cee23c firmware
MD5 fbd18b2dc6ae52db06363f99f3df24b9 uboot-unlock.bin
MD5 736315d3d091c6a8f6d5d91e0b349b16 openwrt-snapshot-r11734+63-b085e0586f-ath79-nand-domywifi_dw33d-initramfs-kernel.bin
MD5 8f131515afbc6e769ef4598ed5660601 openwrt-snapshot-r11734+63-b085e0586f-ath79-nand-domywifi_dw33d-squashfs-factory.bin
MD5 4af6b351da425776c2ee02af22c95d4c openwrt-snapshot-r11734+63-b085e0586f-ath79-nand-domywifi_dw33d-squashfs-sysupgrade.bin

附件下载地址:https://www.lanzous.com/i8b00cb

再增加一种更新固件的方法:TFTP更新固件
设置u-boot启动参数:
  1. fw_setenv bootnand 'setenv boot "nboot 0x84000000 0"&&saveenv'
  2. fw_setenv bootnor 'setenv boot "bootm 0x9fe80000"&&saveenv'
  3. fw_setenv ufoem 'tftp 0x80000000 dw33d-oem-factory.bin&&nand erase 0 8000000&&run bootnor&&run boot'
  4. fw_setenv ufop 'tftp 0x80000000 dw33d-op-factory.bin&&nand erase 0 8000000&&nand write 0x80000000 0 ${filesize}&&run bootnand&&run boot'
  5. fw_setenv bootcmd 'run ufop||run ufoem||run boot'
复制代码
启动tftp服务器并上传待更新的固件,固件文件名必须是“dw33d-xxx-factory.bin”,xxx只能是op/oem;重启路由器,路由器从tftp服务器下载固件,如果“dw33d-op-factory.bin”下载成功则将固件刷入nand并从新固件启动;如果“dw33d-oem-factory.bin”下载成功则擦除nand数据并修改启动参数从nor闪存启动固件(原厂固件),启动成功后务必关闭tftp服务器,避免重复刷机。tftp更新固件操作非常简单,也可以很方便地切换不同分区布局的固件和返回原厂固件。“dw33d-oem-factory.bin”固件实际上并不需要是真正的固件,u-boot下载此文件不会写入任何闪存,仅修改启动参数从nor闪存启动,所以它可以是任何文件,只是文件不要太大就行。




本帖子中包含更多资源

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

×
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-12-27 21:35 | 显示全部楼层
等到教程了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-12-27 22:01 | 显示全部楼层
我知道楼主还要排版多次精简一下

点评

大佬,写个大麦节点脚本吗,这么大内存浪费了  详情 回复 发表于 2019-12-29 16:02
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-12-27 22:38 | 显示全部楼层
不错的教程,域名lanzou

点评

可惜找不到了,,,,  详情 回复 发表于 2020-9-3 17:54
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-12-28 11:01 | 显示全部楼层
标记下,谢谢楼主
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-12-28 12:28 来自手机 | 显示全部楼层
厉害了,大神
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-12-29 11:50 | 显示全部楼层
大佬厉害,不知道为什么我的dw33d刷大麦专用breed,DDR只识别到64M,所以无法用你的加载内存固件指令,使用会报错,大佬你知道怎么解决吗?

点评

识别出mem的型号贴一下,说不定这也会被置换???  详情 回复 发表于 2019-12-29 16:09
你这情况要么是刷错了breed版本,要么是硬件有问题。  详情 回复 发表于 2019-12-29 14:13
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-12-29 14:13 | 显示全部楼层
佩戴的剑穗 发表于 2019-12-29 11:50
大佬厉害,不知道为什么我的dw33d刷大麦专用breed,DDR只识别到64M,所以无法用你的加载内存固件指令,使用 ...

你这情况要么是刷错了breed版本,要么是硬件有问题。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-12-29 16:02 来自手机 | 显示全部楼层
ntgeralt 发表于 2019-12-27 22:01
我知道楼主还要排版多次精简一下

大佬,写个大麦节点脚本吗,这么大内存浪费了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-12-29 16:05 来自手机 | 显示全部楼层
膜拜大佬实力,好好学习测试下
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-12-29 16:09 | 显示全部楼层
佩戴的剑穗 发表于 2019-12-29 11:50
大佬厉害,不知道为什么我的dw33d刷大麦专用breed,DDR只识别到64M,所以无法用你的加载内存固件指令,使用 ...

识别出mem的型号贴一下,说不定这也会被置换???
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-12-29 22:34 | 显示全部楼层
本帖最后由 bell9000 于 2019-12-29 22:52 编辑

@shanpo,大佬好

我的dw33d是GIGA版,2.4G不能用(无限重启)的那种。不知道用您的NAND固件会不会好。这个问题我自己试试;多谢提供教程!

另外,我还有一个问题。我的这台大麦也遇到了先接好TTL-USB线(到电脑)再接电源,就能正常启动。但是,不接TTL线,正常接电源开机就无限重启的现象。
故事是这样发生滴........

"这台DW33D开始没刷机,用原厂固件是2.4G和5G都没问题;
但是有一天忽然重接电源后就死机了(只有电源灯亮),而且没有IP地址。尝试了长按reset再接电源也没有用;
所以,我就焊上TTL线+CH-341A,刷了Breed(最新版吧 R1226);
然后就遇到只有接TTL才能用2.4G的怪事。。"


目前,dw33d是Breed+论坛中找的屏蔽2.4G的固件,使用中(只有5G);


我是小白,不明白问题原因。只是感觉似乎不是硬件问题,好像接了TTL,启动环境变量会有改动而造成的吗?
请大佬帮忙指教!

点评

请问兄弟ttl刷机有没有碰到乱码的情况,软件怎么选择的,我一直乱码抑郁了,感谢兄弟  详情 回复 发表于 2020-1-14 23:26
我觉得你这个设备硬件应该是有问题了。我买了3个大麦,两个都是giga,没有这些奇怪的问题,倒是有一个led灯已经不正常了。  详情 回复 发表于 2019-12-29 22:55
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-12-29 22:55 | 显示全部楼层
bell9000 发表于 2019-12-29 22:34
@shanpo,大佬好

我的dw33d是GIGA,2.4G不能用(无限重启)的那种。不知道用您的NAND固件会不会好。这个 ...

我觉得你这个设备硬件应该是有问题了。我买了3个大麦,两个都是giga,没有这些奇怪的问题,倒是有一个led灯已经不正常了。

点评

我三个LED灯坏了,倒是他们说的GIGA版的问题一个没碰见  详情 回复 发表于 2020-1-6 15:26
谢谢这么快回复!我知道了。  详情 回复 发表于 2019-12-29 23:03
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-12-29 23:02 来自手机 | 显示全部楼层
哦,知道了。谢谢这么快回复!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-12-29 23:03 来自手机 | 显示全部楼层
shanpo 发表于 2019-12-29 22:55
我觉得你这个设备硬件应该是有问题了。我买了3个大麦,两个都是giga,没有这些奇怪的问题,倒是有一个led ...

谢谢这么快回复!我知道了。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 02:51

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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