HG255D刷flash记录

前些天看到了这位博主的《路由器就是开发板》教程:

目录 《路由器就是开发板》

跟着这位博主的教程一步步复现,从中也学习到了很多知识,uboot也可以拷贝到RAM中运行。
只不过在刷写flash这部分卡住了,刷完之后拔掉JLINK,手动关闭开启电源,然后TTL并没有输出任何log。 我使用了下面四种教程介绍的方法:

1.通过Web Failsafe刷

代码中本机的ip我通过改rt2880.h改为了

#define CONFIG_SERVERIP 192.168.1.10
#define CONFIG_IPADDR 192.168.1.20

由于我编译出来的uboot.bin超出了这个网页更新大小的限制,于是改了uboot代码:
还是rt2880.h

//#define WEBFAILSAFE_UPLOAD_UBOOT_SIZE_IN_BYTES		( 128 * 1024 )
//改为如下
#define WEBFAILSAFE_UPLOAD_UBOOT_SIZE_IN_BYTES		( 192 * 1024 )

我看代码是一开机不管选什么都会自动选"5",即web failsafe模式,于是改代码board.c,1605行:

				BootType = getc();
			//	if ((BootType < '1' || BootType > '5') && (BootType != '7') && (BootType != '8') && (BootType != '9'))
					//BootType = '5';
				printf("\n\rYou choosed %c\n\n", BootType);

BootType = '5';注释掉
通过编译成功的带httpd的uboot.bin,用openocd拷贝到内存中运行,开机选择5进入web failsafe模式,此时打开浏览器输入192.168.1.20,进入带openwrt字样的网页,选择uboot.bin然后点击更新:
web failsafe更新uboot
串口输出的log

更新后如上图,虽然显示Rebooting...,但是板子并没有重启,而且没有log输出,网络也不通,很明显uboot没有启动,具体原因不明,如果有知道的小伙伴欢迎下方留言,不胜感激!

2.通过uboot command,用tftp32刷

还是使用刚才的uboot,加载到内存运行后,开机输入4进入命令行
此时将tftp32.exe复制到uboot.bin文件夹下,并点开(不需要额外配置)
进入命令行模式后按行输入:

setenv serverip 192.168.1.103  //设置默认连接的tftp服务器的地址,我台式电脑的ip
tftpboot 0x80100000 uboot.bin  //连接tftp服务器,下载uboot.bin文件到RAM中的0x80100000地址中
protect off all  //取消flash写保护功能
erase 0xBF000000 0xBF03FFFF  //将flash中0xbf000000~0xbf03ffff的内容擦除
cp.b 0x80100000 0xBF000000 0x40000  //将RAM中 0x80100000开始内容复制到flash中0xbf000000内,大小为0x40000
protect on all  //打开flash写保护功能
saveenv   //保存变量到flash

uboot命令行
此时可以看到擦除并写入flash成功,我重启了路由器,但是现象和第一种一样,开机没log,网络不通,uboot应该还是没有启动。

3.openocd flash_uboot命令刷

由于在openocd下使用flash_uboot命令刷写会报错误:

error writing to flash at address 0xbf000000 at offset 0x00000000
 
         flash write_bank bank_id filename offset

根据这篇文章下面的评论,修改了 openocd-ralink.cfg文件:第十七期 U-Boot norflash 操作原理分析 《路由器就是开发板》

此时可以每秒钟256字节速率写进去:
openocd界面
此时重启路由器的现象同上,不行。

4.uboot刷机模式刷入

这个刷机模式就是uboot刚启动时选择的9模式
串口输出
此时重启路由器,现象同上。

分享出来我刷机的过程,希望能找出问题所在,欢迎热心的大家在下面留言!

================ 2021/3/14更新 ================

昨晚想出来为什么了,并且刷进去uboot和自己编了一晚上的openwrt了。
原来是我犯了低级错误:之前按教程在make menuconfig页面选的是编译RAM版本
make menuconfig页面
在这个页面改成如图的ROM即可,再sudo make编译
之后进入RAM里的uboot,选择9进入tftp刷uboot的模式:
串口输出页面
这样它刷完后rebooting就可以进入flash中的uboot了。
同样,在开机的时候选择2可以进入刷openwrt的页面,下图是成功进入openwrt:
uboot引导openwrt
至此,flash刷写完毕。

但是问题是这个我编译的openwrt并没有什么作用,在浏览器输入192.168.1.1192.168.1.20都连接无响应,并且上不了网,估计openwrt固件编译的不对。后面我再熟悉一下openwrt功能,可能会再更新,希望复刻这个项目的朋友可以少走一些弯路。谢谢观看!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值