HG255D刷flash记录

HG255D刷flash记录前些天看到了这位博主的《路由器就是开发板》教程:目录《路由器就是开发板》跟着这位博主的教程一步步复现,从中也学习到了很多知识,uboot也可以拷贝到RAM中运行。只不过在刷写flash这部分卡住了,刷完之后拔掉JLINK,手动关闭开启电源,然后TTL并没有输出任何log。我使用了下面四种教程介绍的方法:1.通过WebFailsafe刷代码中本机的ip我通过改rt2880.h改为了#defineCONFIG_SERVERIP192.168.1.10#defineCONFIG_IPAD

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

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

跟着这位博主的教程一步步复现,从中也学习到了很多知识,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功能,可能会再更新,希望复刻这个项目的朋友可以少走一些弯路。谢谢观看!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/36997.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注