(57)【特許請求の範囲】
【請求項１】
リアルタイムオペレーティングシステムにより複数種類のタスクの実行を管理するとともに、各々が前記タスク単位でモジュール化されたコンパイル処理後のバイナリデータである複数種類のオブジェクトモジュールを取得する演算部と、
前記オブジェクトモジュールを格納した記憶媒体をそれぞれ物理的に着脱可能である複数の記憶媒体インタフェースと、を備え、
前記演算部は、複数種類の前記オブジェクトモジュールを、別々の前記記憶媒体からそれぞれ独立して取得するプログラム評価装置。
【請求項２】
請求項１に記載のプログラム評価装置において、
各々の記録媒体インタフェースは、装着された前記記憶媒体に記憶されている前記オブジェクトモジュールのタスク優先度、割り込み優先度、ＤＭＡ転送の設定の少なくともいずれかを決定するスイッチ部を含むプログラム評価装置。
【請求項３】
請求項１または請求項２に記載のプログラム評価装置において、
前記演算部は、前記オブジェクトモジュールの起動時にエラーが生じたときに、前記エラーに対応する前記オブジェクトモジュールを示すデータを出力するプログラム評価装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム評価装置に関する。
【背景技術】
【０００２】
従来から、組み込みシステムでは、各部の制御に必要となるプログラム群を効率的に処理するためにリアルタイムオペレーティングシステム（以下、ＲＴＯＳと表記する）が用いられている。上記の組み込みシステムのプログラム開発は、コーディングやコンパイルなどの作業をターゲットマシン（最終製品）とは異なるマシン上で行うクロス開発環境が一般的である。
【０００３】
また、組み込みシステムのバージョンアップ時に保守用端末からＲＴＯＳのタスク管理情報を書き換えて、現状のソフトウエア資産を有効に活用する技術も提案されている（一例として、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−６６９０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、新規の組み込みシステムの開発において既存の機能を流用する場合、既存機能から流用したコードもソースコードに一体的に組み込んでコンパイルする必要がある。そのため、新規の組み込みシステムのソフトウエア設計において、既存機能の流用箇所で不具合が生じた場合にはデバック時の検証作業が非常に煩雑となる。また、上記の場合には、既存機能から流用したコードについても設計プロセスや評価プロセスが必要となるので、既存機能の流用箇所であっても開発期間および開発費を計上する必要が生じる点で改善の余地があった。
【０００６】
上記事情に鑑み、組み込みシステムの開発において既存機能の流用をより容易に行うための技術を提供する。
【課題を解決するための手段】
【０００７】
一の態様のプログラム評価装置は、演算部と、複数の記憶媒体インタフェースとを備える。演算部は、ＲＴＯＳにより複数種類のタスクの実行を管理するとともに、各々がタスク単位でモジュール化されたコンパイル処理後のバイナリデータである複数種類のオブジェクトモジュールを取得する。複数の記憶媒体インタフェースは、オブジェクトモジュールを格納した記憶媒体をそれぞれ物理的に着脱可能である。また、演算部は、複数種類のオブジェクトモジュールを、別々の記憶媒体からそれぞれ独立して取得する。
【０００８】
上記の一の態様において、各々の記録媒体インタフェースは、装着された記憶媒体に記憶されているオブジェクトモジュールのタスク優先度、割り込み優先度、ＤＭＡ転送の設定の少なくともいずれかを決定するスイッチ部を含んでいてもよい。
【０００９】
上記の一の態様において、演算部は、オブジェクトモジュールの起動時にエラーが生じたときに、エラーに対応するオブジェクトモジュールを示すデータを出力してもよい。
【発明の効果】
【００１０】
一の態様のプログラム評価装置は、タスク単位でモジュール化されたコンパイル処理後のバイナリデータ（オブジェクトモジュール）を別々の記憶媒体から独立して取得する。記憶媒体の物理的な差し替えにより、組み込みシステムの開発での既存機能の流用をより容易に行うことができる。
【図面の簡単な説明】
【００１１】
【図１】一の実施形態におけるプログラム評価装置のハードウェア構成例を示すブロック図
【図２】一の実施形態におけるプログラム評価装置のソフトウエア構成例を示す図
【図３】一の実施形態のプログラム評価装置によるＲＴＯＳの起動確認処理例を示す流れ図
【図４】図３の処理でのオブジェクトモジュールの登録状態を示す図
【発明を実施するための形態】
【００１２】
図１は、一の実施形態におけるプログラム評価装置のハードウェア構成例を示すブロック図である。上記のプログラム評価装置は、例えば、組み込みシステムの開発工程で用いられる汎用の評価ボードである。また、一の実施形態では、Ｌ２スイッチの組み込みシステムの例を説明する。Ｌ２スイッチは、ＯＳＩ（Open Systems Interconnection）モデルの第２層（Layer2：Ｌ２）であるデータリンク層において、ＭＡＣ（Media Access Control）アドレスでフレームの行き先を判断してデータ転送を行う機器である。
【００１３】
プログラム評価装置のメイン基板（オブジェクトベース）１１上には、ＣＰＵ１２と、割り込みコントローラ１３と、記憶部１４と、ＤＭＡＣ（Direct Memory Access Controller）１５と、制御Ｉ／Ｆ１６と、基本機能回路１７と、複数（ｎ個、但しｎは２以上の整数）の記憶媒体Ｉ／Ｆ１８と、外部Ｉ／Ｆ１９と、バス２０とが実装されている。ここで、ＣＰＵ１２、割り込みコントローラ１３、記憶部１４、ＤＭＡＣ１５、制御Ｉ／Ｆ１６、基本機能回路１７、各記憶媒体Ｉ／Ｆ１８、外部Ｉ／Ｆ１９は、それぞれバス２０を介して接続されている。
【００１４】
ＣＰＵ１２は、組み込み機器の各部動作を制御するためのプロセッサである。ＣＰＵ１２には、ＲＴＯＳの機能の核となるカーネルにより、ＲＴＯＳに関する各プログラムの演算処理を実行する。上記のＲＴＯＳは、アプリケーションプログラムをタスクと称される処理単位で複数実行する（なお、ＲＴＯＳのタスク制御については後述する）。なお、ＣＰＵ１２内には、高速のデータアクセスが可能なワークメモリ（不図示）が内蔵されている。
【００１５】
割り込みコントローラ１３は、周辺機器からの割り込み処理要求を受信するとともに、割り込み要因の優先度に応じてＣＰＵ１２に割り込み信号を発生させる回路である。割り込みコントローラ１３の制御により、ＣＰＵ１２は１つの入力端子で複数の割り込み要因に対応できる。
【００１６】
記憶部１４は、ＲＴＯＳを記憶する不揮発性のフラッシュメモリと、各タスクの実行時のデータを一時的に記憶する揮発性のメインメモリとを有している。
【００１７】
ＤＭＡＣ１５は、オブジェクトベース１１上の各部で単位転送データ量ごとのＤＭＡ転送を実行するための回路である。ＤＭＡＣ１５は、ＣＰＵ１２の指示を受けてデータの転送方向を決定するとともにアドレスの生成を行う。
【００１８】
制御Ｉ／Ｆ１６は、外部の制御装置（例えば開発工程でのみ接続されるコンピュータ）との通信を制御するモジュールである。例えば、制御Ｉ／Ｆ１６は、外部Ｉ／Ｆ１９を介して接続された上記の制御装置からＲＴＯＳのブートプログラム等を受信する。また、基本機能回路１７は、例えばタイマ（Real Time Clock）機能や電源管理機能等を負担する回路である。
【００１９】
ｎ個の記憶媒体Ｉ／Ｆ１８は、ＲＴＯＳの各タスクに対応する複数種類のオブジェクトモジュールを読み込むために設けられている。一の実施形態でのオブジェクトモジュールは、タスク単位でモジュール化されたコンパイル処理後のバイナリデータである。また、各々のオブジェクトモジュールは、それぞれ異なる不揮発性の記憶媒体２１（メモリカードやハードディスク等）に独立して格納されている。そして、ＣＰＵ１２は、複数種類のオブジェクトモジュールを別々の記憶媒体２１からそれぞれ独立して取得する。なお、一の実施形態では、記憶媒体Ｉ／Ｆ１８の構成はいずれも同じであるので重複説明を省略する。また、図１では記憶媒体２１の一例としてメモリカードを図示する。
【００２０】
また、記憶媒体Ｉ／Ｆ１８は、記憶媒体２１を物理的に着脱可能なコネクタ１８ａと、コントローラ１８ｂと、スイッチ部１８ｃとを有している。コネクタ１８ａおよびスイッチ部１８ｃはコントローラ１８ｂに接続されている。記憶媒体Ｉ／Ｆ１８のコントローラ１８ｂは、コネクタ１８ａに接続された記憶媒体２１からオブジェクトモジュールのデータを読み込み、オブジェクトモジュールのデータをバス２０に出力する。
【００２１】
また、スイッチ部１８ｃは、記憶媒体Ｉ／Ｆ１８で読み込むオブジェクトモジュールの各種設定をスイッチングにより決定する。コントローラ１８ｂは、スイッチ部１８ｃでの設定に応じてオブジェクトモジュールのタスクの実行を調整する。例えば、スイッチ部１８ｃは、オブジェクトモジュールのタスク優先度、タスクの割り込み優先度、オブジェクトモジュールのデータ転送におけるＤＭＡ転送のオンオフおよびＤＭＡ転送時の使用チャネルをそれぞれ決定する。なお、スイッチ部１８ｃは、外部から操作可能な物理的なスイッチ（ディップスイッチ等）であってもよく、ブートプログラムで切り替えを行うソフトウェアスイッチであってもよい。
【００２２】
外部Ｉ／Ｆ１９は、プログラム評価装置と外部機器とを接続するモジュールである。例えば、外部Ｉ／Ｆ１９には、ブートプログラムを送信するコンピュータや、Ｌ２スイッチ用ＬＳＩの等価回路として機能するＦＰＧＡ等が接続される。また、外部Ｉ／Ｆ１９は、公知のシリアルバス規格に準拠して外部機器とのデータ通信を行うコントローラ１９ａと、接続される外部機器のアドレスを決定するスイッチ部１９ｂとを有している。
【００２３】
また、図２は、一の実施形態におけるプログラム評価装置のソフトウエア構成例を示す図である。ＣＰＵ１２は、ブートプログラムによる起動制御と、ＲＴＯＳのカーネルによるアプリケーション制御とを実行する。また、ＣＰＵ１２は、記憶媒体Ｉ／Ｆ１８を介してオブジェクトモジュール（コンパイル済のタスクのバイナリデータ）を各記憶媒体２１から取得する。
【００２４】
起動制御において、ＣＰＵ１２はハードウェアの各種設定を初期化する。また、ＲＴＯＳのアプリケーション制御では、ＣＰＵ１２は、タスクスケジューリング制御、割り込み制御、システムコール制御、基本機能制御（例えば、メモリプール機能、ＲＴＣによるタイマ管理など）を実行する。
【００２５】
上記のＲＴＯＳは、タスクを複数実行するときに、割り込みハンドラの要求、タスクの要求、タイマによる時限要求のいずれかを受けてシステムコールでタスクの状態を変更する。そして、タスクの状態が変更された場合には、カーネル内のタスクスケジューラが呼び出されて実行対象のタスクの選び直し（スケジューリング）が行われる。
【００２６】
ＲＴＯＳによるタスクの実行順序は各タスクの優先度に依存し、ＲＴＯＳは最も優先度の高いタスクから順番に実行する。一例として、ＲＴＯＳにおいてタスクＡの実行中に優先度が高いタスクＢが出現した場合、優先度の高いタスクＢが割り込み処理で実行状態となる一方で、実行中のタスクＡは待ち状態となる。その後、タスクＢの割り込み処理が終了すると、ＲＴＯＳは一時中断していたタスクＡの処理を再開する。
【００２７】
ここで、一の実施形態でのタスク（オブジェクトモジュール）はＬ２スイッチの各機能にそれぞれ対応する。例えば、一の実施形態でのタスクには、ＳＮＭＰ（Simple Network Management Protocol）タスク、ＣＬＩ（Command Line Interface）タスク、Ｗｅｂタスクが含まれる。ＳＮＭＰタスクは、ＳＮＭＰのプロトコルを用いて、ＩＰネットワーク上のネットワーク機器（コンピュータ、ルータ、ハブ等）を監視・制御するタスクである。ＣＬＩタスクは、ユーザに対する情報の表示を文字によって行ない、すべての操作をキーボードで行なうユーザインターフェースをＬ２スイッチに提供するタスクである。Ｗｅｂタスクは、例えばＷｅｂコンソール等の機能をＬ２スイッチに提供するタスクである。
【００２８】
以下、図３の流れ図を参照しつつ、一の実施形態のプログラム評価装置によるＲＴＯＳの起動確認処理例を説明する。図３の起動確認処理は、開発中の組み込みシステムに実装されるＲＴＯＳが正常に起動するか否かを評価するために実行される。また、図３の流れ図の処理は、外部の制御装置からのブートプログラムの実行指示に応じて、ＣＰＵ１２が開始する。
【００２９】
ステップ＃１０１：ＣＰＵ１２は、ブートプログラムでの起動制御によってハードウェアの各種設定を初期化する。例えば、ＣＰＵ１２は、メインメモリの初期化や、タスクスケジューラのタスクの初期化や、ＣＰＵ１２内のワークメモリにおけるアサインの初期化などを行う。また、記憶媒体Ｉ／Ｆ１８や外部Ｉ／Ｆ１９のスイッチ部（１８ｃ、１９ｂ）がソフトウエアスイッチの場合には、ＣＰＵ１２はブートプログラムの実行により、これらのスイッチ部の設定をそれぞれ更新する。
【００３０】
ステップ＃１０２：ＣＰＵ１２は、処理対象のオブジェクトモジュールを示す変数ｉに初期値「１」を代入する。
【００３１】
ステップ＃１０３：ＣＰＵ１２は、プログラム評価装置にオブジェクトモジュールｉが実装されているかを判定する。一例として、＃１０３でのＣＰＵ１２はオブジェクトモジュールｉに対応する記憶媒体Ｉ／Ｆ１８のコントローラ１８ｂと通信を行う。そして、ＣＰＵ１２は、オブジェクトモジュールｉが読み込み可能であれば、オブジェクトモジュールｉが実装されていると判定すればよい。上記要件を満たす場合（ＹＥＳ側）は、＃１０４に処理が移行する。一方、上記要件を満たさない場合（ＮＯ側）は、＃１０７に処理が移行する。
【００３２】
ステップ＃１０４：ＣＰＵ１２は、オブジェクトモジュールｉのデータが正常か否かを判定する。一例として、＃１０４でのＣＰＵ１２は、例えば、チェックサム、ＣＲＣ、ＭＤ５等の利用により、オブジェクトモジュールｉのデータのエラー検出を行う。そしてＣＰＵ１２は、エラーが検出されない場合にオブジェクトモジュールｉのデータを正常と判定すればよい。上記要件を満たす場合（ＹＥＳ側）は、＃１０５に処理が移行する。一方、上記要件を満たさない場合（ＮＯ側）は、＃１０６に処理が移行する。
【００３３】
ステップ＃１０５：ＣＰＵ１２は、オブジェクトモジュールｉに対応する記憶媒体Ｉ／Ｆ１８のコントローラ１８ｂと通信し、オブジェクトモジュールｉに関するハードウェア設定を行う。
【００３４】
まず、＃１０５でのＣＰＵ１２は、スイッチ部１８ｃでの「タスク優先度」および「タスクの割り込み優先度」の情報を取得する。そして、ＣＰＵ１２は、ワークメモリに用意されたタスクレベルレジスタに、オブジェクトモジュールｉの開始アドレスおよびデータサイズを記録する。また、ＣＰＵ１２は、ワークメモリに用意された割り込みポインタ上に、タスクの割り込み優先度と割り込みモジュールの相対アドレスとを記録する。
【００３５】
次に、＃１０５でのＣＰＵ１２は、スイッチ部１８ｃでの「ＤＭＡ転送のオンオフ」および「ＤＭＡ転送時の使用チャネル」の情報を取得する。また、ＣＰＵ１２は、必要に応じて外部Ｉ／Ｆ１９の情報を読み出して取得する。なお、＃１０５の処理後は、＃１０７に処理が移行する。
【００３６】
ステップ＃１０６：ＣＰＵ１２は、オブジェクトモジュールｉのデータに異常があることを示す第１異常情報をメインメモリに記録する。
【００３７】
ステップ＃１０７：ＣＰＵ１２は、処理対象のオブジェクトモジュールを示す変数ｉをインクリメントする。
【００３８】
ステップ＃１０８：ＣＰＵ１２は、現在の変数ｉの値を参照し、全オブジェクトモジュールが処理済みか否かを判定する。上記要件を満たす場合（ＹＥＳ側）には＃１０９に処理が移行する。一方、上記要件を満たさない場合（ＮＯ側）には、ＣＰＵ１２は＃１０３に戻って上記動作を繰り返す。
【００３９】
ステップ＃１０９：ＣＰＵ１２は、タスク優先度を示す変数ｊに初期値「１」を代入する。なお、変数ｊの値が小さいほどタスク優先度は高くなるものとする。
【００４０】
ステップ＃１１０：ＣＰＵ１２は、メインメモリ上において、タスク優先度ｊに対応するオブジェクトモジュールを展開する領域を指定する。
【００４１】
ステップ＃１１１：ＣＰＵ１２は、タスク優先度ｊに対応するオブジェクトモジュールを記憶媒体２１から読み出して、メインメモリ上の指定された領域（＃１１０）にオブジェクトモジュールのデータを展開する。
【００４２】
ステップ＃１１２：ＣＰＵ１２は、メインメモリ上でのオブジェクトモジュールの先頭アドレス（タスク開始アドレス）を示すポインタを、ワークメモリ上のタスクレベルレジスタに登録する（図４参照）。
【００４３】
ステップ＃１１３：ＣＰＵ１２は、メインメモリ上の指定された領域（＃１１０）のサイズと、割り込みモジュールの相対アドレスとに基づいて、メインメモリ上での割り込みモジュールの開始アドレスを設定する（図４参照）。
【００４４】
ステップ＃１１４：ＣＰＵ１２は、メインメモリ上で展開されたオブジェクトモジュールが使用するＤＭＡＣ１５のチャネルを割り振る。また、ＣＰＵ１２は、オブジェクトモジュールによって使用される外部機器に、制御Ｉ／Ｆ１６を経由して接続処理を行う。
【００４５】
ステップ＃１１５：ＣＰＵ１２は、＃１１０から＃１１４のいずれかの処理で異常が発生したか否かを判定する。上記要件を満たす場合（ＹＥＳ側）は、＃１１６に処理が移行する。一方、上記要件を満たさない場合（ＮＯ側）は、＃１１７に処理が移行する。
【００４６】
ステップ＃１１６：ＣＰＵ１２は、ＲＴＯＳによって起動時に異常が生じたオブジェクトモジュールを示す第２異常情報をメインメモリに記録する。
【００４７】
ステップ＃１１７：ＣＰＵ１２は、タスク優先度を示す変数ｊをインクリメントする。
【００４８】
ステップ＃１１８：ＣＰＵ１２は、現在の変数ｊの値を参照し、全てのタスク優先度で処理が終了したか否かを判定する。上記要件を満たす場合（ＹＥＳ側）には＃１１９に処理が移行する。一方、上記要件を満たさない場合（ＮＯ側）には、ＣＰＵ１２は＃１１０に戻って上記動作を繰り返す。
【００４９】
ステップ＃１１９：ＣＰＵ１２は、メインメモリの第１異常情報（＃１０６）および第２異常情報（＃１１６）を参照し、ＲＴＯＳ起動時における異常発生の有無を示すレポート情報を外部の制御装置などに出力する。その後、ＣＰＵ１２は一連の処理を終了する。
【００５０】
ここで、＃１１９でのレポート情報を参照することで、開発者は、ＲＴＯＳのどのタスクの展開時に問題が生じるかを容易に判断できる。その後、開発者は、例えば、問題の生じたオブジェクトモジュールを記録媒体ごと交換したり、問題の生じたオブジェクトモジュールのタスク優先度等をスイッチ部１８ｃで切り替えてから、再び図３の流れ図の処理でＲＴＯＳの動作確認を行えばよい。
【００５１】
上記実施形態のプログラム評価装置は、コンパイルされたバイナリデータの状態で各タスクのデータを記憶媒体２１から独立して取得する。上記実施形態では、ＲＴＯＳおよびタスクを一体としてコンパイルする必要がなく、記憶媒体２１の物理的な差し替えによりタスク単位でデータを差し替えることができる。よって、上記実施形態では、組み込みシステムの開発での既存機能の流用を容易に行うことができる。また、上記実施形態では、タスク単位でデータを差し替えて動作状態を確認することで、タスク間でのプログラムの干渉などに起因する不具合箇所の特定を容易に行うこともできる。
【００５２】
そして、上記実施形態によれば、オブジェクトモジュールの流用部分における開発工程および評価工程をほぼ省略できるので、組み込みシステムの開発期間および開発費を抑制できる。
【００５３】
また、上記実施形態では、スイッチ部１８ｃの設定によりタスク優先度、割り込み優先度、ＤＭＡ転送の設定をタスク単位で調整できるので、組み込みシステムの開発でのデバック作業をより容易にできる。
【００５４】
＜実施形態の補足事項＞
上記実施形態では、プログラム評価装置をＬ２スイッチの組み込みシステムの開発に用いる例を説明した。しかし、本発明のプログラム評価装置は、他の組み込みシステムの開発に広く適用できることはいうまでもない。
【００５５】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲が、その精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物によることも可能である。
【符号の説明】
【００５６】
１１…メイン基板（オブジェクトベース）、１２…ＣＰＵ、１３…割り込みコントローラ、１４…記憶部、１５…ＤＭＡＣ、１６…制御Ｉ／Ｆ、１７…基本機能回路、１８…記憶媒体Ｉ／Ｆ、１８ａ…コネクタ、１８ｂ…コントローラ、１８ｃ…スイッチ部、１９…外部Ｉ／Ｆ、１９ａ…コントローラ、１９ｂ…スイッチ部、２０…バス、２１…記憶媒体
【図１】
0005411085.tif 000002
【図２】
0005411085.tif 000003
【図３】
0005411085.tif 000004
【図４】
0005411085.tif 000005