PHS経由でネットに接続できるEthernetアダプタのファームウェアをハック・前編 ―― 無線インターネット・アクセスを組み込みシステム開発の手駒に

中本伸一

tag: 組み込み

技術解説 2007年10月11日

● スタックやファイル・システムを備えるOSを開発

 TCP/IPを利用したネットワーク関連のプログラミングでは,通信用のプロトコル・スタックを独自に用意するのが難しいという問題があります.そのため,一般にはLinuxやμITRONなどのOSを利用する場合が多いようです.

 一方,本機は,ネットワーク・プロトコル・スタックをはじめとして,スレッド管理やメモリ管理,ファイル・システム,レジストリ管理や入出力などのサービスを提供する独自OSを搭載しています.筆者らはこのOSをSilent Moon(サイレントムーン)と呼んでいます.

 ユーザは,SilentMoonのシステム・コールを呼び出すことで,本機のすべての機能を利用できます.

 ネットワーク・プロトコル・スタックは一般的なソケット・ライブラリの仕様を踏襲しています.そのため,一般的なOSの上に作られたネットワーク用プログラムを比較的容易に移植できると思います.例えばサーバとして動作させる場合には,CreateSocketで作成したソケットにBindを用いてポート番号を割り当て,Acceptで接続を待ちます.相手とセッションが確立するとAcceptから戻るので,新しいソケットのハンドルを引き数にCreateThreadでスレッドを生成してパケットを処理します.これは,ネットワーク用プログラムの作成ではごく一般的な方法です.

 なお,ユーザがファームウェアを書き換えても,リカバリ操作を行うことで,ユーザからアクセスできない隠し領域に記録されている工場出荷時の状態に復帰できます.思いり中身を書き換えても心配ありません.心置きなく,カスタマイズの実験を行えます.

● セルフ環境でソフトウェア開発が可能

 プログラムを作成するためには,SilentC(サイレント・シー)という独自言語を利用します.SilentCは一般的なC言語のサブセットで,対話型のインタープリタ言語です.20年ほど前のマイコンには,必ずBASICという対話型言語が内蔵されていました.SilentCは,まさにその時代のBASIC言語を現代流のC言語に直したものだと考えてください.

 従来までの小型ネットワーク機器上のユーザ・プログラムの開発では,ほとんどの場合,クロスCコンパイラが利用されていました.パソコン上で製作したプログラムをターゲットに送り込んでデバッグする,というスタイルで開発していました.そのため,デバッグにはICE(In-circuit Emulator)やJTAG(Joint Test Action Group)デバッガが必要で,C言語のランタイム・ライブラリのサイズもかなり大きくなってしまいます.Linuxなどの汎用OSのカーネルのサイズも大きく,結果的にフラッシュROMやSDRAMなどのメモリ・デバイスのサイズが大きくなってしまい,高価になりがちでした.また,プログラムを変更するためにユーザランド(ユーザ用データの格納領域)の再構成が必要になったりと,必ずしも使い勝手が良いとは言えなかったと思います.

 考えてみると,ちょっとした開発であれば,20年前のBASICを利用した時代の方が短時間で作業が終了していたものです.これは,ポートや変数などの状態を確認しながら対話的にプログラミングを進められるインタープリタ型の言語だったからだと思います.現代においても,ポートやA-D変換の値を監視して,ある条件になったらネットワーク経由でデータを送ったり,携帯電話にメールを送信するという程度の簡単な動作であれば,SilentCのようなインタープリタ言語で十分記述できると考えました.

 さすがに昔ながらのBASICにはローカル変数やポインタがサポートされていないので,現代のネットワーク用プログラムを記述するには無理があります.「やはり21世紀のインタープリタはC言語であるべきだ」と考えて,SilentCの処理系を開発・搭載しました.

 このように,プログラム開発に必要な機材は本機本体とtelnetで接続できるパソコンだけです.パソコンは,Windowsに標準で内蔵されているハイパーターミナルやtelnetコマンドを利用できれば,それでOKです.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日