ネットワーク経由で組み込みソフトのバグを修正する ――後からモジュールを追加できるITRON仕様OSの開発
リスト1のTSKID_DEMOは,ユーザが定義したタスクID(識別子)です.μITRON4.0仕様におけるシステム・コンフィグレータは,これらのタスクIDにID値(定数値)を静的に割り当てます.割り当てた値はC言語マクロ・ヘッダ・ファイル(kernel_id.h)に出力されます.一方,本開発のモジュール・コンフィグレータの場合,ロード時の機器の状態で割り当てるID値が異なってくるため,定数値を割り当てることはできません.ID値を格納する変数領域を確保して,ローダ機能内に出力する仕様としました.
機器で動作するローダ機能は,ロード・モジュールが活性化したときにロード・モジュール構成情報を解釈し,ID値を自動で割り付けるサービス・コールを発行します.このとき割り付けられたID値は前述のモジュール・コンフィグレータが確保した変数領域に格納するものとしました.
なお,アプケーション・ソフトウェアはこの内部的な差異を意識する必要はありません.つまり,開発初期段階ではベース・モジュール機能として開発していたものを後でロード・モジュール機能として切り出したり,その逆の変更を容易に行えます.
次に,ロード・モジュールを構成するカーネル資源を外部のロード・モジュールに公開する場合,どのように開発者に記述させるかという課題が残ります.この課題については,後述するシンボルのエクスポート機能を利用してコンフィグレータが確保した変数領域を公開する,という仕様にしました.