给路由器更换flash(结尾有彩蛋)

刚刚休着闲两天,于是论坛又开展一轮DIY的活动。

这次还真是少不了从论坛拿到的宝贝……

首先这就是曾经从论坛得到的无线小路由WR700N了,

楼主期待有一天能给它刷个openwrt。

话说我倒也不缺路由器,只是这两天闲下来,想起了这个事,于是来搞一个。

由于这个路由的Flash只有2MB,根本不足以写入op,所以不得不给它换个flash啦。

楼主是纯软件出身,这个焊活,虽然只有8个脚,那也是个老大难问题了,所以一直也没有做过尝试,不过这次真是豁出来了,拿出来练练手吧。

提前准备好各种材料:W25Q64(8MB的Flash)芯片若干,相应的烧写座一个。

思来想去的,不买烧写器了,DIY嘛,就得自己动手,丰衣足食。OK,DIY一个简单的烧写器——烧写器,二楼见~

东西都到手,等到中秋节,咱沐浴更衣焚香祷告,开始动手。

首先肯定是拆……拆WR700N这个东西,需要到网上参考一个内容(China[拆哪],破拆高手多,先请教一下机壳的卡点,避免损坏外壳)。于是根据指示开始暴力开壳。

得到了WR700N的核心,正面处理器和内存贴着签不拍照了,后面的SPI Flash坦荡荡。

拆的话应该是比较容易的……可是楼主还是很悲催的伤到了焊盘,5脚的焊盘就那样悬着…这家伙那可是数据输入信号啊……不会最后悲剧了吧。

步骤一,利用烧写器将拆下的Flash中,最后64K的数据取出来,留下备用。这个东西在路由界被称为art,里面存有路由信号有关的调整数据,没有了它,剩下的硬件就无法发挥它的最佳水平。

步骤二,从网上下载一个叫breed的东西,这个可以替代uboot启动路由器,而且利用它,可以随时随意刷路由的系统了。

步骤三,将breed烧写到Flash的0起始的位置上,内容并不大,所以可以再读出来,干脆读出来0x15000,和原始的breed比较一下,发现有效数据是一致的,OK可以继续了。

步骤四,(此步骤可省略,当时我不懂,之后我懂了。该步骤烧写art到Flash上,但实际breed可以直接写art,所以最好让breed来做这件事)

步骤五,接下来就把Flash焊回到板子上。我没做过这个,还是需要很小心的处理……

接下来就可以上电操作啦……所以后续就仅是调试过程了。

Orz起不来。

蓝色的指示灯亮了,但还是很暗,我甚至怀疑这个是不是板子坏掉了。事实证明,只是起不来,所以灯也是异常状态了。

于是插上逻辑分析仪排错。这个过程中,我发现,电源电路到主板电路转换的过程中,留下了5V的测试TP,所以只需要找一个5V电源,接过来就可以方便的调试了,不必插在墙上看效果。事实上,我直接用测试夹夹在相连的电容脚上,很方便。

于是一个脚一个脚看,发现/Hold脚拉低了。查一查类似的路由器的电路图,发现这个脚是在外部利用电阻直接拉高使用的,所以……是不是我把焊盘焊坏了……

就是这么果断,立刻找了个10K电阻焊上了。继续启动……还是起不来。

再检查,发现逻辑分析仪上是有正确数据的,这回惨了,看来板子出问题了。

喝了一杯酸奶压压惊,之后决定继续差错看看,结果很偶然地,用万用表发现Flash的4脚(GND)信号上,电压不为0,而且还有浮动。

再一想,糟了个糕,我一直关注的是Flash引脚上有没有数据,可是这样是不能保证焊盘上也能正确的得到这些数据的……也就是说,输入到Flash的信号,目前来看都是正确的,但是输出出去的信号,可能有虚焊!所以,起先我所担心的5脚,竟然完全没问题~,再所以,/Hold脚也许也是虚连了所以看起来是拉低的……

于是用万用表使劲测4脚,发现确实和下面的焊盘虚连着,甚至稍使劲压,也接触不到,看来是中间有松香层阻碍电流了。

所以拿起烙铁,把这几个脚又焊一次,顺便把自己加的电阻摘除。这一次每个脚都稍用力往焊盘上压实一点。看来第一次焊太小心,虽然焊锡融得很漂亮,可是反倒是没有焊上。

之后再通电,终于一切正常,灯也亮了,接在PC上,PC网口也亮了。Oh Yeah~

再然后用PC登陆192.168.1.1,设置breed里的信息,主要包括Mac地址和art上传,

之后找到可用的openwrt固件包,上传启动 ~

Orz,完全不能用。……

后来利用uart接收主板上的TP数据,发现启动linux内核时,内存不足,挂了。

按理说不应该的,网上说WR700N是2M ROM 16M RAM呀,应该可以啊……额,网上说??……起开内存上的贴签,发现这个货是8M内存。

所以……又要DIY改66pin的内存颗粒了??

好吧,暂且认为本次DIY完成,毕竟原始目标也就是换个大点的Flash。

换RAM的事情,就滚到下一期DIY再说吧。

总结了经验教训。第二天,楼主把另外一个路由的Flash给换了,很快就完成了。

恩,心情不错。

接下来说说用D21的板子做的烧写器,

对于SPI Flash来说,只要一个SPI,就可以进行读写等各种操作了。

所以D21绰绰有余。

装上AStudio,驱动SPI,找到读写代码(针对我买的Flash,我发现D21原带的那个AT25DFX驱动有点不匹配),做个试验,利用uart将读出来的东西发回到电脑上。为了避免干扰,连接上我换了一个SPI

数据可以正常发送到PC,可是怎么能保存到文件呢?这个方向其实很好解决,利用强大的putty,使用串口方式连接,然后修改连接设定中的logging,选择保存全部的log,指定目标的文件,应用以后,串口收到的内容就会直接写到文件里啦。

经过测试,读和写都没有问题啦,那么就可以利用这个家伙把breed写到Flash中了。

可是楼主还是懒于写一个程序来控制上下位的通信,所以干脆,把breed直接放在D21的程序里,幸亏breed才100k,D21还容得下它。

烧写.JPG (48.05 KB, 下载次数: 0)

下载附件 保存到相册

2015-9-30 03:04 上传

于是可以继续使用了,通用的Flash烧写工具……还是以后再做吧。

可以看到,自己动手做的烧写器真的非常实用,而且还避免了板子吃灰,有效提升了板子的价值,特别是这类体积小、功能多的精品开发板。

所以……如果不是有特殊的需求,……

我劝你还是尽量花几十块钱去大TB买个烧写器吧……

DIY时,还无意中发现了自己刚进入工作的时候,不懂硬件不懂电子,为了大概学习一下,后来根据网上一个帖子,DIY的4位加法计算机……全是非门……

最后又帮朋友做了这么个东西……我只负责提供线和加工,不负责提供主要原料,所以配色样式就无可挑剔了……

是个插笔的挂帘……

顺手给闺女做了副鞋垫,资源有限,也没给包个边……

严格遵守了老人的要求:线要密要多,才结实……这下大家满足了吧

以上图文内容均是EEWORLD论坛网友:sjtitr 原创,在此感谢。

欢迎微博@EEWORLD

如果你也写过此类原创干货请关注微信公众号:EEWORLD(电子工程世界)回复“投稿”,也可将你的原创发至:bbs_service@eeworld.com.cn,一经入选,我们将帮你登上头条!

与更多行业内网友进行交流请登陆EEWORLD论坛。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平