PHS経由でネットに接続できるEthernetアダプタのファームウェアをハック・前編 ―― 無線インターネット・アクセスを組み込みシステム開発の手駒に
● ファームウェアを書き換える
工場出荷時の本機には,デフォルトのファームウェアとして,W-SIMでダイアルアップしてPPP(Point to Point Protocol)接続を行い,Ethernetにブリッジする,というプログラムが書き込まれています.このプログラムはSilentMoonのシステム・コールを呼び出して動作しています.つまり,出荷時のファームウェアはSilentMoon上のユーザ・プログラムなのです.OSX-1をカスタマイズするということは,このユーザ・プログラムを入れ替えるということにほかなりません.
これから,このデフォルトのファームウェアを消去して,インタープリタ型のC言語であるSilentCに入れ替え,さまざまなプログラムを対話的に作成してみましょう.本機に実装されているリカバリ機能により,どのような状態になっても簡単に工場出荷状態に復帰できるので,安心してファームウェアをどんどん入れ替えてみてください.
まず,サイレントシステムのWebサイトからSilentCのプログラム・ファイルであるUserProgram.binとSilentC用のレジストリであるSilentC_Registryの二つをダウンロードしてください.次に,この二つのファイルをC:エに移動させます.そして以下のTFTPコマンドで,二つのファイルを本体に送り込みます.コマンド・プロンプトを起動したら,最初にcdエでCドライブのルートに移動してから作業します.さらにdirlistを取得して転送が成功し,新しい二つのファイル名が表示されるかどうかを確認してください.
C:¥>tftp -i 192.168.1.10 put UserProgram.bin
Transfer successful: 23552 bytes in 1 second,23552 bytes/s
C:¥>tftp- i 192.168.1.10 put SilentC_Registry
Transfer successful: 79 bytes in 1 second,79 bytes/s
C:¥>tftp 192.168.1.10 get dirlist
うまくファイルが転送されれば準備完了です.一度ACアダプタを抜いて,数秒待ってから再度挿入します.電源表示ランプが緑になれば,ファームウェアの書き換えは成功です.SilentMoonの起動時にUserProgram.binというファイルがあれば,現在のユーザ・プログラムを消去して新しいユーザ・プログラムを書き込みます.書き込みが成功し,UserProgram.binを消去すれば,次回以降はもうプログラムされない状態になります.
同じ手順を利用すれば,本機のファームウェアを最新のバージョンにアップデートできるので,この手順に慣れておくと良いかもしれません.
● telnetでSilentCにアクセス
これでSilentCが動作する環境が整いました.早速SilentCでプログラムを作成してみましょう.まずWindowsに付属しているコマンド・プロンプトかハイパーターミナルを利用して,telnetで本機にアクセスしてみてください.筆者はフリーの本格的なターミナル・ソフトウェアであるTeraTermを利用することをお勧めします.コマンド・プロンプトであれば,以下のコマンドを実行します.
C:¥>telnet 192.168.1.10
接続すると,SilentCのバージョンが表示されてOKというプロンプトが表示されます.これ以降は対話的にSilentCとやりとりしながら,ネットワークやW-SIMを利用したプログラムを作成していきます.まずはdirコマンドでファイルの一覧を表示してみてください.ファイル・システム内のすべてのファイルの名前とサイズが表示されます.次に type index.htmというコマンドを実行して,ファイルの内容を画面に表示することができれば成功です.ここで使えるコマンドについては表1を参照してください.
そのほかのファイル操作系のコマンドですが,deleteコマンドは対象のファイルを削除します.
本機のファイル・システムはフラッシュROM上に構築されています.ファイルを削除した場合,ファイル領域が上書きされないように領域有効ビットをクリアするだけです.これは,フラッシュROMのデータは'1'から'0'にはプログラムできるが,逆に'0'から'1'にはプログラムできないという性質があるためです.このため,ファイルの作成と削除を繰り返すと,フラッシュROMの中にたちまち無効な領域が虫食い状態で広がってしまいます.
こうした無効領域を整理してファイル・システムを最適化するためのコマンドがdefragです.dirコマンドでファイルの一覧を表示させたときに?? fragmentと表示されるのが,この無効領域のサイズです.このサイズが500,000バイトを超えたら,なるべく早急にdefragコマンドを実行してください.最適化処理は数分ほどかかる場合もあります.最適化中は絶対にリセットしたり,電源を切ったりしないでください.