2015年8月1日土曜日

Tomato ファームウェアの SD カードのデータ破壊問題

Shibby 版の Tomato ファームウェアをリンクシス WRT54G へインストールして SD カードの動作検証をしています。この検証の中で結構重要な問題を発見しました。それは SD カードのデータを破壊してしまうことです。

再び SD ソケット部分に改造を加えた WRT54G です。

Tomato ファームウェアの設定画面上の [Basic] 設定のところでネットワークの設定を行うと SD カードのデータが破壊されてしまいます。フォーマット情報の部分を破壊してしまうようで、再フォーマットを行うと SD カードを再度使用出来るようになりますが、データは永久に失われてしまいます。

どうも原因として、ネットワーク設定を行うとき、イーサネット・スイッチの初期化と再設定を行なっているようで、この過程で SD カードへ間違った情報を送ってしまい、データを破損してしまっている可能性がありました。SD カードの CS 信号は DMZ の LED ランプと共用されています。ネットワーク設定を行ったとき、この DMZ の LED ランプが点灯しないまま(SD カードが選択されている)設定が終了していることから、SD カードへ誤った情報を発信している可能性がありました。

本来であれば、ファームウェア内のコードを検査して修正すべきところですが、現在のところ私にはコードを検査して修正する能力がないため、とりあえずイーサネット・スイッチ IC の CS 信号が有効になったとき、ハードウェア的に SD カードの CS 信号を無効となるように簡単なトランジスタ回路を付加して対応してみました。

トランジスタ回路は、単純にイーサネット・スイッチの CS 信号が有効になったとき、トランジスタがオンとなって、コレクタに接続した SD カードの CS 信号を強制的にオフにするようにしました。

このトランジスタ回路を付加してネットワーク設定を行なってみました。するとネットワーク設定を行うときに、瞬間的に DMZ の LED ランプが点滅することがありました。やはりネットワークの設定を行うとイーサネット・スイッチへアクセスしているようです。そして DMZ の LED ランプが点灯することは、強制的に SD カードの CS 信号がオフとなっているはずです。

トランジスタ回路を付加した SD ソケット周りです。
イーサネット・スイッチの CS 信号を集合抵抗器 RP3 のところから取り出しました。

期待がもてます!・・・・

しかし何故か SD カードのデータは再び破壊されてしまいました。どうも本当の原因は別にあるようです。

どうもこのままでは、ネットワーク設定を行うときには、SD カードを抜いた後、設定する必要があります。

WRT54G では、すでに USB ポートが有効に働いていることから、もう無理に SD カードを設置する意味がないのかもしれません。SD カードについては、だんだんと疲れが溜まってきた感じです(涙)。

0 件のコメント:

コメントを投稿

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