ネットワーク経由で組み込みソフトのバグを修正する ――後からモジュールを追加できるITRON仕様OSの開発
しかし,リンク機能を機器側に搭載するためには実装メモリを増やさなければなりません.なるべく容量を小さく抑えたい組み込み機器では,これは許されないと考えました.また,ローディング時にも基幹システム機能を止めないで動作させようと考えると,機器側の処理オーバヘッドも気になります.そこで,リンク機能は汎用OSが搭載されたサーバ側に,ローダ機能は機器側に持ち,通信セッションにおいて機器とサーバが協調動作することによりアドレス解決を行う方式を採用しました(図7).
具体的には,機器とサーバは以下のように動作します.
- 機器はダウンロード実行時に,機器のID番号,取得したいモジュールのID番号(ロード・モジュールID),バージョン番号,機器のメモリ・マップ情報をサーバに送る.
- サーバは,通知された情報(機器ID,ロード・モジュールID,バージョン番号)に基づき,生成するロード・モジュールを特定する.また,通知されたメモリ・マップ情報から機器の空きメモリを検索し,ロード・モジュールの各メモリ・セクションに対して,静的に物理アドレスを割り付けたロード・モジュール・ファイルを生成する.このとき,サーバはロード・モジュールが必要としているカーネル資源の生成情報もロード・モジュール・ヘッダ情報として生成する.
- 機器はロード・モジュールとヘッダ情報ファイルを取得し,実行コードを不揮発性メモリに書き込む.また,ロード・モジュールをITRONの処理単位として活性化するために必要なカーネル・オブジェクト(タスク,セマフォなど)を生成し,メモリ・オブジェクトを登録する.
〔図7〕 リンク機能とローダ機能を分離した
リンク機能は汎用OSが搭載されたサーバ側に,ローダ機能は機器側に持ち,機器とサーバが協調動作する方式を採用した.