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

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

跟着这位博主的教程一步步复现,从中也学习到了很多知识,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然后点击更新:

更新后如上图,虽然显示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


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

3.openocd flash_uboot命令刷

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

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

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

此时可以每秒钟256字节速率写进去:

此时重启路由器的现象同上,不行。

4.uboot刷机模式刷入

这个刷机模式就是uboot刚启动时选择的9模式

此时重启路由器,现象同上。

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

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

昨晚想出来为什么了,并且刷进去uboot和自己编了一晚上的openwrt了。
原来是我犯了低级错误:之前按教程在make menuconfig页面选的是编译RAM版本

在这个页面改成如图的ROM即可,再sudo make编译
之后进入RAM里的uboot,选择9进入tftp刷uboot的模式:

这样它刷完后rebooting就可以进入flash中的uboot了。
同样,在开机的时候选择2可以进入刷openwrt的页面,下图是成功进入openwrt:

至此,flash刷写完毕。

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

HG255D刷flash记录相关推荐

  1. android+tv盒子+主界面,x96max+ 盒子 与 CoreELEC系统配置(三)AndroidTV刷机记录

    x96max+ 盒子 与 CoreELEC系统配置(三)AndroidTV刷机记录 2020-03-19 22:05:49 39点赞 211收藏 59评论 本文简要记录一下AndroidTV的刷机过程 ...

  2. Intel-Joule-570x刷板记录

    Intel-Joule-570x刷板记录 前言 准备材料 流程 Bios刷入 Ubuntu系统安装 前言 不知道你是出于什么契机和笔者一样需要使用570x这块板子,由于已经停产,网上现有的刷版资料寥寥 ...

  3. LeetCode刷题记录15——21. Merge Two Sorted Lists(easy)

    LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) 目录 LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) ...

  4. LeetCode刷题记录14——257. Binary Tree Paths(easy)

    LeetCode刷题记录14--257. Binary Tree Paths(easy) 目录 前言 题目 语言 思路 源码 后记 前言 数据结构感觉理论简单,实践起来很困难. 题目 给定一个二叉树, ...

  5. LeetCode刷题记录13——705. Design HashSet(easy)

    LeetCode刷题记录13--705. Design HashSet(easy) 目录 LeetCode刷题记录13--705. Design HashSet(easy) 前言 题目 语言 思路 源 ...

  6. LeetCode刷题记录12——232. Implement Queue using Stacks(easy)

    LeetCode刷题记录12--232. Implement Queue using Stacks(easy) 目录 LeetCode刷题记录12--232. Implement Queue usin ...

  7. LeetCode刷题记录11——290. Word Pattern(easy)

    LeetCode刷题记录11--290. Word Pattern(easy) 目录 LeetCode刷题记录11--290. Word Pattern(easy) 题目 语言 思路 源码 后记 题目 ...

  8. LeetCode刷题记录10——434. Number of Segments in a String(easy)

    LeetCode刷题记录10--434. Number of Segments in a String(easy) 目录 LeetCode刷题记录9--434. Number of Segments ...

  9. LeetCode刷题记录9——58. Length of Last Word(easy)

    LeetCode刷题记录9--58. Length of Last Word(easy) 目录 LeetCode刷题记录9--58. Length of Last Word(easy) 题目 语言 思 ...

  10. LeetCode刷题记录8——605. Can Place Flowers(easy)

    LeetCode刷题记录8--605. Can Place Flowers(easy) 目录 LeetCode刷题记录8--605. Can Place Flowers(easy) 题目 语言 思路 ...

最新文章

  1. Linux: /dev/fd/详解
  2. R语言连接MySQL报错:could not run statement: The used command is not allowed with this MySQL version
  3. java iostream_【JAVA】IOStream
  4. 在centos6.4 编译64位的hadoop 2.4.1
  5. 执行计划重编译的时机
  6. 聊聊jdk http的HeaderFilter
  7. 【BZOJ2095】【POI2010】Bridge 网络流
  8. 20145240《信息安全系统设计基础》第十四周学习总结
  9. python列表写入字典_python – 将列表字典写入CSV文件
  10. python找数字程序_程序以查找Python中从1到N的所有缺失数字
  11. 推荐系统入门必读论文
  12. java搭建线程池框架_JAVA线程池经管及分布式HADOOP调剂框架搭建
  13. MFC中Doc,View,MainFrmae,App各指针的互相获取
  14. javascript(基础)_对数组的遍历方法总结(find, findIndex, forEach,)
  15. React五——React-router
  16. 声音均衡器怎么调好听_调音师必备:如何调出最佳人声?
  17. Spring核心JAR包
  18. html自定义指针,如何自定义鼠标指针 怎样在wpf中自定义鼠标指针
  19. Win7安装CAD出现错误1606 最简单的解决方法
  20. codeforces C - Dwarves, Hats and Extrasensory Abilities

热门文章

  1. 【QT】基于HTTP通信的天气查询的实现
  2. 简单的Flash网络游戏源代码
  3. 计算机新建没有文本文档,我的电脑新建文本文档没有显示TXT,为什么?
  4. Android源码学习(一)系统源码初识
  5. ViewFlipper使用详解
  6. c语言小游戏百度云资源,c语言小游戏合集
  7. 牛顿插值法 matlab程序计算方法,牛顿插值法matlab程序
  8. 佳能ir2002g无法扫描到计算机,佳能ir2002g扫描驱动
  9. 系统同传软件_影视翻译软件可实时在线翻译多国语言
  10. vue 插槽的版本变化1.x-2.6.0-3.x(详细)