メモリチップを交換して 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上記の Memory Controller Configuretion の解説内容からすると現在の sdram_init の値は 0x2000 です。内部クロックを使用する設定として 13 ビット目が 1 となるため、一覧表の中の 0x0000 が 0x2000 と変化します。そこへ 16MB の SDRAM チップの読み出し CAS に 9 ビット幅を使用する設定とすることから 0x2008 となります。
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 の設定一覧 |
しかしこれでは、起動直後の 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 モードでしか動作しませんでした。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。