ネットワーク経由で組み込みソフトのバグを修正する ――後からモジュールを追加できるITRON仕様OSの開発
●ITRONにおける課題
従来のITRON仕様OSでは,OSを含むすべてのソフトウェアを一つのオブジェクト・ファイルにリンクしてロード・モジュールを作成していました(図3(a)).この場合,不ぐあい箇所のみを修正したとしてもロード・モジュール全体が修正の影響を受けるので,ソフトウェアをバージョンアップするためには全体を書き換えるしかありません.そこで本開発では,機能ごとにロード・モジュールを分け,ソフトウェアの部分更新や機能追加を実現できるような複数リンク・モデルをITRON仕様OSで実現することから検討を開始しました(図3(b)).
ベース・モジュールはシステムの基幹機能で,いわゆるOSにあたる部分(カーネルとローダ)です.別の言いかたをすれば,ロード・モジュールを動的に装着するための受け皿です.この性質上,ベース・モジュールは工場出荷時に機器に組み込むのみで,ダウンロードによる更新を行えないものとしました.
このシステム・モデルでダウンロードのしくみを実現するために,以下のような検討課題がありました.
- ローディングの基本スキームはどうするか?
- ロード・モジュールの作成方法は?
- ロード・モジュール間のシンボル参照方法は?
- 保護ドメインとロード・モジュールの関係は?
- カーネル,コンフィグレータにはどのような機能を追加するか?
以降,それぞれの検討内容について説明します.
〔図3〕リンク・モデルの異なるシステム構成
(a)のような1リンク・モデルの場合,不ぐあい箇所(この例ではネットワーク・システム)のみを差し替えることは難しい.(b)のような複数リンク・モデルの場合,リンク単位で不ぐあい箇所(この例ではJava仮想マシン・ロード・モジュール)のみ差し替えることが容易となる.