2015年7月15日水曜日

二種類の JTAG ケーブルの比較

バッファロー WLA-G54 のフラッシュメモリの書き込みのために、抵抗器で構成れた DLC5 タイプのケーブルとバッファ回路を備えた WIGGLER ケーブルの二種類を製作しました。このことは本ブログにて紹介済みです。

二種類の JTAG ケーブルです。どちらもケーブル長はおよそ 15 センチです。
左側が DLC5 タイプで、右側が WIGGLER タイプです。

この二つの JTAG ケーブルを使っても WLA-G54 にバックアップデータを正常に書き込むことが出来ませんでした。このフラッシュメモリへデータを正常に書き込めない現象の原因の切り分けのため、今回二種類の JTAG ケーブルを使って、他の機種ではフラッシュメモリへデータを正常に書き込めるのか確認してみました。

WLA-G54C の場合

WLA-G54 と型番が非常に似ていますが、イーサネットスイッチを持っていない無線 LAN ルータです。ただしプロセッサは WLA-G54 と同じ BCM4702 となっています。以前にも JTAG でフラッシュメモリのバックアップを取得しようとしましたが、動作が不安定で上手く取得することができませんでした。

今回は以前の長いケーブル長(およそ 50 センチ)の JTAG ケーブルではなく 15 センチほどのケーブルとなっています。そのためか動作は安定している感じを受けました。

DLC5 ケーブルと WIGGLER ケーブルでそれぞれ二回データを取得して合計四つのバックアップデータの MD5 のハッシュ値を計算してみました。すると DLC5 ケーブルの二つのバックアップデータではハッシュ値が一致していましたが、WIGGLER ケーブルで取得したバックアップデータのハッシュ値とは異なっていました。また WIGGLER ケーブルで取得した二つのバックアップデータのハッシュ値は一致していました。ケーブルによってバックアップデータが異なる現象が発生しました。

そして DLC ケーブルで取得した CFE のバックアップデータを DLC ケーブルと WIGGLER ケーブルの両方で書き込みをしてみましたが、DLC ケーブルで書き込んで、読みだしたものも、WIGGLER ケーブルで書き込んで読みだしたものもハッシュ値が異なる結果となりました。

どうも(1)フラッシュメモリのデータを読み出す時点でデータが改変されてしまうことと(2)フラッシュメモリへデータを書き込む時点でもデータが改変されてしまうようです。

バックアップしたデータも当てにならず、書き込みも怪しい状態という最悪の結果となりました。

-- 付記事項 --
付記事項として、この WLA-G54C と WLA-G54 の両方ともデータの読み出しの前やデータの書き込みの前のマシンの状態確認の時点で DMA エラーの表示が出ていました。JTAG ソフトウェアの TJTAG のオプションの /nodma や /dma を付加すると動作がマシンの状態確認の途中で停止してしまいます。そこで /nobreak オプションを付加して動作させていました。なお /noemw, /nocwd, /noreset のオプションでも DMA エラーの解消とはなりませんでした。

WHR2-A54G54 の場合

WLA-G54 と WLA-54C が、プロセッサとして BCM4702 を使用していましたが、他のプロセッサで適当なものはないかと選んだのが BCM4704 搭載の WHR2-A54G54 です。

JTAG によるフラッシュメモリのデータ書き込み・読み出し試験を行なっているところです。

CFE のデータバックアップでは、二種類のケーブルでそれぞれ二回データを取得しました。合計四つのバックアップデータの MD5 のハッシュ値を計算したところ、全て一致しました。なんとも言えない感動がありました。当たり前のことが当たり前でなかったのですから。また以前にも長いケーブル長の DLC5 ケーブルで取得していたバックアップデータともハッシュ値が一致していました。これも当然といえば当然なのですが・・・。

さて CFE の書き込みを行なってみました。ここで違いが発生しました。DLC5 ケーブルでは、書き込みデータが改変されてしまいました。CFE を書き込んで読みだしたデータのハッシュ値が一致しないのです。複数回読み出しましたが、読みだしたデータ同士はハッシュ値が一致しますが、書き込んだバックアップデータとは一致しないのです。

そして WIGGLER ケーブルで確認すると、書き込みも読み出しも正常に行われて、全て一致しました。

正常に動作していると思われた WHR2-A54G54 では、WIGGLER ケーブルで正常にフラッシュメモリの書き込みができるということでした。フラッシュメモリの読み出しは、DLC5 も WIGGLER の両方とも正常にできるということでした。

-- 付記事項 --
付記事項として、プローブ動作(-porbeonly)を繰り返して行なっていると、WIGGLER ケーブルに限って、DMA エラーやフラッシュメモリの型番の取得に失敗することがありました。電源を投入して一発目で発生することはありませんでしたが、ちょっと不安定な印象を受けました。

WHR3-AG54 の場合

WHR2-A54G54 と同様に BCM4704 を使用している無線 LAN ルータです。

もう時間が無かったので、書き込み試験は行いませんでしたが、フラッシュメモリの読みだしては、二種類の JTAG ケーブルでバックアップのデータに差が発生することがありませんでした。これは WHR2-A54G54 と一緒です。また過去に取得した CFE バックアップデータとも一致していました。

そしてプローブ動作をひたすら繰り返してみましたが、WHR2-A54G54 の時のように WIGGLER ケーブルでエラーが発生することはありませんでした。どうも WHR3-AG54 と WHR-A54G54 の JTAG 回路に違いがあるのかもしれません。関連するかどうか不明ですが、シリアルコンソールの端子において、WHR3-AG54 は正常に動作しますが、WHR2-A54G54 は配線が途中でなくなっているようで、全くの無反応な状態でした。もしかするとこのシリアルコンソールのようなトラブルが WHR2-A54G54 の JTAG 端子にも潜んでいるのかもしれません。

結論

結局 DLC5 と WIGGLER のどちらが良いのか?という結論は出ませんでした。

ただ今回の教訓としては、フラッシュメモリのバックアップは複数回(最低二回)行なって、バックアップしたデータに差異がないか確認して保存しておく必要がありました。

またフラッシュメモリへの書き込みでは、必ずバックアップ動作をさせて、書き込んだデータと読みだしたデータを比較して一致することの確認も必要だと判明しました。

JTAG 端子はメーカが動作を保証している機能ではないため、慎重に万全を期しながら操作する必要がありそうです。

0 件のコメント:

コメントを投稿

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