2015年8月14日金曜日

Buffalo WHR-AMPG の 32MB 化成功

昨日の時点でメモリチップの交換をした後、メモリ設定に誤りがあり、起動しなくなっていた バッファロー WHR-AMPG が起動するようになり、そして 32MB のシステムメモリ全域を認識するようになりました。

メモリチップを交換して 32MB 化した WHR-AMPG ですが、32MB の認識ができていませんでした。

JTAG による NVRAM の消去

昨日は JTAG でフラッシュメモリを認識しなくなり、NVRAM の消去ができなくなっていました。どうもメモリ設定を間違えて設定すると JTAG はフラッシュメモリを認識しなくなるようです。

ではどうしたか・・・他の機種にもあった電源投入直後のアクセスでした。

WHR-AMPG の電源を投入する瞬間に合わせて JTAG でアクセスするとフラッシュメモリなどを認識するようになるようです。JTAG を操作するパソコンには、JTAG コマンドを入力してリターンキーを打鍵するだけの状態にしておきます。そして WHR-AMPG の電源を投入すると同時に JTAG コマンドのリターンキーを打鍵します。すると運が良ければそのまま JTAG コマンドが実行されます。ちょっと運が悪いとフラッシュメモリの認識のところで停止する状態となります。この状態でも JTAG コマンドを中止して、そのまま電源を切らずに再度 JTAG コマンドを実行するとコマンドを受け付けてくれます。

上記のようにして JTAG コマンドにて NVRAM を消去しながら 32MB のシステムメモリを認識させる設定を探し出しました。

32MB を認識させる設定

下記のウェブサイトを参考にしました。
BCM3302 Memory Controller Configuration - Oleg's
http://oleg.wl500g.info/sdram.html

DD-WRT Forum :: View topic - Enabling 64 MB ram after sdra
http://www.dd-wrt.com/phpBB2/viewtopic.php?t=24579
上記の Memory Controller Configuretion の解説内容からすると現在の sdram_init の値は 0x2000 です。内部クロックを使用する設定として 13 ビット目が 1 となるため、一覧表の中の 0x0000 が 0x2000 と変化します。そこへ 16MB の SDRAM チップの読み出し CAS に 9 ビット幅を使用する設定とすることから 0x2008 となります。

Memory Controller Configuretion の設定一覧

しかしこれでは、起動直後の CFE の起動途中で停止してしまいます。どうも BCM53xx 系の CFE では各種メモリ設定の初期値(memc_config)と現在値について齟齬があった場合には、起動を停止してしまうようです。そこでメモリ設定の初期値も一緒に変更しておく必要がありました。

sdram_init=0x2008 を設定したことが原因で CFE の途中で停止したコンソール画面です。
memc_config の値の比較が表示されています。

メモリ設定の初期値の memc_config の値は sdram_init, sdram_config などの値を何らかの法則で並べたもののようです。CFE の起動途中で停止したときに表示される memc_config の値から sdram_init=0x2008 と設定した時に対応する値を推測しました。
0x0004a000(16MB 対応)
0x0004a008(32MB 対応)
(英数字は小文字)

成功した WHR-AMPG の 32MB 化設定

そして次のように CFE のコンソール上からコマンドを入力して設定を行いました。なお sdram_ncdl の値は 0x0 に設定しておくと、ブート時に CFE によって最適値に変更して書き換えられます。
nvram set memc_config=0x0004a008
nvram set sdram_init=0x2008
nvram set sdram_ncdl=0x0
nvram commit
reboot

メモリ設定の注意事項

間違ったメモリ設定の値を設定した場合、上記のようなシリアルコンソールすら動作しない状態になってしまいます。おそらく起動も出来ない状態だと思われます。その場合も上記の JTAG による NVRAM の消去にて異常状態から脱出することができます。

動作確認

すでにインストール済みの DD-WRT のステータス画面で 32MB になっているのを確認しました。またシリアルコンソール上でも free コマンドで確認ができました。

DD-WRT のステータス画面


OpenWrt Barrier Breaker 14.07 をインストール

システムメモリの使用量が多い OpenWrt Barrier Breaker 14.07 (openwrt-brcm47xx-legacy-squashfs.trx) を 32MB 化した WHR-AMPG へインストールしてみました。

DD-WRT のアップグレードの画面からインストールを行いました。NVRAM の値を消去する設定としたため、シリアルコンソールの画面を観察しながら OpenWrt が起動する前に Ctrl + C  で CFE のコンソールへと移行して、再度上記の 32MB 化のメモリ設定を行なって起動させました。

起動した OpenWrt のステータス画面を確認してもちゃんと 32MB のシステムメモリを認識していました。

OpenWrt Barrier Breaker 14.07 のステータス画面

この OpenWrt Barrier Breaker 14.07 では、無線 LAN 部分を動作させるカーネル・モジュールに b43 を使用しているために 2.4GHz 帯の IEEE 802.11 b/g モードでしか動作しませんでした。

[ 補足事項 ]

バッファローの WHR-AMPG は DD-WRTなどでは WHR-AM54G54 と認識されます。CFE 上に記録されているボードナンバーが WHR-AMPG と WHR-AM54G54 と同一のようです。これらの無線 LAN ルータは、同一のハードウェア上に内容を改良したファームウェアをインストールして製品型番を変更して販売していた模様です。そのため、上記のメモリ設定の値もそのまま流用できるものと思われます。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。