2015年8月9日日曜日

Linksys WAP54G のシステムメモリ交換

リンクシス WAP54G のシステムメモリを一枚 8MB から二枚 32MB へ交換しました。

メモリチップの交換作業

以下は交換作業の様子を記録したものです。

現状の様子です。表面には 4Mx16bit=8MB のメモリ(GLT5640L16-6TC)が搭載されています。そして裏面はメモリチップは搭載されておらず、ランドだけが存在している状態です。

表面にあるメモリチップ(GLT5640L16-6TC)です。
背面にはランドだけが存在していました。
なお周辺部品は何故か取り付けられている状態でした。

お手軽にメモリを増量するには、背面に表面と同じチップの 4Mx16bit=8MB のメモリを搭載すれば 16MB のシステムメモリとなります。しかし 16MB のシステムメモリでは新しいファームウェアをインストールして動作させるには少々容量不足気味であることは確かです。そこで 32MB のシステムメモリになるように 8Mx16bit=16MB のメモリチップを二枚載せることとしました。

使用したメモリチップはノートパソコン用の SDRAM 133MHz のもののうち、両面に合計4枚で 64MB のメモリカードからメモリチップ(一枚当たり 16MB)を取り出すこととしました。メモリチップの型番は W981216AH-75 です。8Mx16bit=16MB / 133MHz の仕様です。

今回使用した 64MB のメモリカードです。

万力でメモリチップを固定した後、コテライザーによるホットブローでメモリチップを取り外しました。最近ではメモリカードからメモリチップを引き剥がすのに苦労することもなく作業できるようになりました。

表面の 16MB のメモリチップ二枚を取り外しました。

メモリチップが用意出来たところで、WAP54G のボードからメモリチップを取り外します。この場合、メモリチップよりもボード上のパターンの方が大切なため、無理な力で引き剥がそうとしないことが大切です。さすがに時間が掛かりました。

WAP54G の表面の 8MB のメモリチップを撤去したところです。

パターン剥がれなどなく綺麗にメモリチップが撤去出来ましたので、表面から 16MB のメモリチップをハンダ付けしました。

WAP54G の表面に 16MB のメモリチップをハンダ付けしたところです。

そして背面にもメモリチップをハンダ付けしましたが、ここで意外なトラブルが発生しました。それはハンダをけちって、製造時の付着していたハンダを利用してメモリチップのハンダ付けを行うとしました。これが失敗でした。アースパターンに接続したランド部分のハンダはなかなか溶けないために、メモリチップのリード線が浮いた状態でハンダ付けされた状態となってしまいました。ボードの側面から肉眼で確認しても明らかに浮き上がって、ハンダで接触していないリード線が存在するのです(涙)。コテライザーのホットブローやハンダゴテを使って、全てのリード線がランドに接触するようにメモリチップを押さえ込みながら熱を加える作業を繰り返して、何とか使える状態までにすることができました。今後、空いたランドへメモリチップなどをハンダ付けするときには、ハンダの吸取り線などを使って、ハンダを除去した後にハンダ付けするようにしたいと思いました。

WAP54G の背面に 16MB のメモリチップをハンダ付けしたところです。

動作確認

とりあえず、メモリチップを交換した状態でも動作するのか確認しました。ファームウェアは Linksys 純正の 3.04 で確認しました。シリアルコンソールを接続して、free コマンドでメモリの使用量を確認すると 8MB の認識となっていました。おそらく表面の 16MB のメモリチップのうち、半分の容量だけで動いているようです。
シリアルコンソール上で起動直後の表示を見ると "Total memory" の項目で 32MB の表示があり、何の設定も無しにハードウェア上では 32MB を認識しているようです。

メモリ設定の変更

現状のメモリ設定を確認しておきました。
sdram_init=0x0002
sdram_config=0x0032
sdram_ncdl=0x25
sdram_refresh=0x0000

変更するのはとりあえず sdram_init となります。ただこの設定が躓きました(汗)。
WLA-G54 の時にもシステムメモリを交換して設定した値などを設定するとことごとく WAP54G が起動しなくなるのです。そのたびに JTAG を使って NVRAM の消去を行なって、設定を消去して初期状態にすることで復活させる状態でした。

だいたいが sdram_init の初期値が 0x0002 という意味不明なものとなっていて、 16Mbit (2MB) のメモリチップを使用していることとなっています。実際には 64Mbit (8MB) のチップが使われています。せめて 64Mbit (8MB) のメモリチップを使用する 0x0012 であれば理解も可能でしたが、これではお手上げ状態となってしまいました。

この NVRAM の消去を繰り返しながら、一つだけ発見したことがありました。それは sdram_init へ値を入力するときに Hex コードで入力するところ間違って、単純な英数字として入力してしまったのです。"0x0c22" と入力すべきときに "0c22" とやってしまったのです。すると 16MB までメモリを認識できるようになりました。単純な英数字として入力した場合、値に関係なく 16MB を認識するようです。

[追記] 32MB を認識しました!

下記掲示板にてヒントがありました。
DD-WRT Forum :: View topic - Question about 32M ram WRT54
http://www.dd-wrt.com/phpBB2/viewtopic.php?t=2235
メモリの設定は下記の通り実行したところ、32MB のメモリとして認識しました。
nvram set sdram_init=0x0008
nvram set sdram_ncdl=0x000
nvram commit
reboot

今後の予定

このシステムメモリを 32MB として認識させることを最優先で行いたいと思っています。このシステムメモリの認識が出来たところで、フラッシュメモリの交換へと進みたいと思っています。

0 件のコメント:

コメントを投稿