ネットワーク経由で組み込みソフトのバグを修正する ――後からモジュールを追加できるITRON仕様OSの開発

原田雅章

tag: 組み込み

技術解説 2003年7月28日

2)コンフィグレータ機能

 カーネルに動的なサービス・コールを実装することに連動して,システム・コンフィグレータとモジュール・コンフィグレータにも静的APIを追加しました.

 システム・コンフィグレータには,ベース・モジュール属性を定義する「VATR_BSM」やベース・モジュール内部シンボルをエクスポートする「EXPORT」,動的に生成可能な各オブジェクトの数を把握する静的API「VAID_***」などを追加しました.

 モジュール・コンフィグレータには,ロード・モジュール属性を定義する「VATR_LDM」やロード・モジュール内部シンボルをエクスポートする「EXPORT」,ロード・モジュールの初期化処理を定義する「EXPORT_INI」と終了処理を定義する「EXPORT_TER」を追加しました.

 EXPORT_INI,EXPORT_TERはそれぞれロード・モジュールの活性化時とアンロード時に,ローダ機能からコールバックされる(サーバ側から呼び出される)ユーザ・ルーチンを定義する静的APIです.本コールバック・ルーチンはカーネルの特権モードで実行されます.これらにはアプリケーション・レベルの初期化処理と終了処理を記述することを想定しています.

 なお,ロード・モジュールのアンロード時には注意が必要です.本開発では,ロード・モジュールから外部のカーネル資源に対する操作責任をユーザ側が負うものとしました.例えば,ロード・モジュールのアンロードが発生したとき,そのロード・モジュールが外部のセマフォ資源を獲得した状態であったとしても,カーネル機能やローダ機能は関知せずにアンロードを実行する仕様としています.モジュール終了処理では,ユーザがそれらの後始末の処理を記述しなくてはなりません.

 VATR_LDMはロード・モジュールの属性を設定するAPIで,名称,属性(基幹属性またはオプション属性),バージョン番号を設定できます.基幹属性ロード・モジュールとしては,工場出荷時にベース・モジュールとともに機器に組み込まれるもので,バージョンアップは可能だが存在しないとシステムがまともに動作しないような必須機能のロード・モジュールを想定しています.基幹属性ロード・モジュールの場合,何らかの原因でバージョンアップが失敗したとしても,新旧どちらかのロード・モジュールがシステムに残って動作することを保証します.一方,オプション属性ロード・モジュールは,ロードに失敗しても再ロードすればよいものを想定しています.内部的には,オプション属性ロード・モジュールを入れ替えるとき,いったん旧モジュールをアンロードした後に新モジュールをロードします.それに対し,基幹属性ロード・モジュールは新モジュールのローディングが成功した後に旧モジュールのアンロードを行います(そのために実装メモリにある程度の余裕を必要とする).

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! 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日