(57)【要約】【課題】  オブジェクト定義ファイル中のオブジェクト数をアプリケーションプログラム中のオブジェクト使用数に合うように調整できるオブジェクト数調整装置を提供する。【解決手段】  オブジェクト数調整装置1において、パラメータ検出処理部１１は、アプリケーションソースプログラム２１とサービスコールデータベース２２を読み込んで使用されているサービスコールのパラメータを抽出してパラメータデータベース２３に書き込み、オブジェクトＩＤ最大値抽出処理部１２は、そのパラメータの中のオブジェクトＩＤ部分を抽出してその最大値をオブジェクトＩＤ最大値データベース２４に書き込み、オブジェクト数調整処理部１３は、オブジェクト定義ファイル３４に定義されているオブジェクト数をオブジェクトＩＤ最大値に一致するよう書き換えた調整済みオブジェクト定義ファイル２６を出力する。【選択図】  図８
2005149179.tif 000002
【特許請求の範囲】
【請求項１】
コンフィギュレーション情報ファイルに基づいてコンフィギュレータにより生成されるオブジェクト定義ファイルに記載されるオブジェクト数を調整する装置であって、
アプリケーションソースプログラムを読み込んで前記アプリケーションソースプログラムに記述されたサービスコールのパラメータを抽出してサービスコールごとのパラメータデータベースを生成するパラメータ抽出処理部と、
前記パラメータデータベースを検索して前記サービスコールが呼び出すオブジェクトのオブジェクトＩＤの最大値を抽出してオブジェクトごとのオブジェクトＩＤ最大値データベースを生成するオブジェクトＩＤ最大値抽出処理部と、
前記オブジェクトＩＤ最大値データベースに記載された前記オブジェクトＩＤ最大値と前記オブジェクト定義ファイルに記載された前記オブジェクト数を前記オブジェクトごとに比較してその値が不一致のときはオブジェクト数不一致警告情報を生成するオブジェクト数不一致警告処理部と
を有することを特徴とするオブジェクト数調整装置。
【請求項２】
コンフィギュレーション情報ファイルに基づいてコンフィギュレータにより生成されるオブジェクト定義ファイルに記載されるオブジェクト数を調整する装置であって、
アプリケーションソースプログラムを読み込んで前記アプリケーションソースプログラムに記述されたサービスコールのパラメータを抽出してサービスコールごとのパラメータデータベースを生成するパラメータ抽出処理部と、
前記パラメータデータベースを検索して前記サービスコールが呼び出すオブジェクトのオブジェクトＩＤの最大値を抽出してオブジェクトごとのオブジェクトＩＤ最大値データベースを生成するオブジェクトＩＤ最大値抽出処理部と、
前記オブジェクトＩＤ最大値データベースに記載された前記オブジェクトＩＤ最大値に合わせて前記オブジェクト定義ファイルに記載された前記オブジェクト数を書き換えた調整済みオブジェクト定義ファイルを生成するオブジェクト数調整処理部と
を有することを特徴とするオブジェクト数調整装置。
【請求項３】
コンフィギュレーション情報ファイルに基づいてコンフィギュレータにより生成されるオブジェクト定義ファイルに記載されるオブジェクト数を調整する装置であって、
アプリケーションソースプログラムを読み込んで前記アプリケーションソースプログラムに記述されたサービスコールのパラメータを抽出してサービスコールごとのパラメータデータベースを生成するパラメータ抽出処理部と、
前記パラメータデータベースを検索して前記サービスコールが呼び出すオブジェクトのオブジェクトＩＤの最大値を抽出してオブジェクトごとのオブジェクトＩＤ最大値データベースを生成するオブジェクトＩＤ最大値抽出処理部と、
前記オブジェクトＩＤ最大値データベースに記載された前記オブジェクトＩＤ最大値に合わせて前記オブジェクト定義ファイルに記載された前記オブジェクト数を書き換えた調整済みオブジェクト定義ファイルを生成するオブジェクト数調整処理部と、
前記調整済みオブジェクト定義ファイルを用いて実行した前記アプリケーションソースプログラムの実行履歴を解析して前記オブジェクトごとのオブジェクトＩＤの最大値を検出し、その値が前記オブジェクトＩＤ最大値データベースに記載された前記オブジェクトＩＤ最大値と異なるときは前記調整済みオブジェクト定義ファイルに記載されたオブジェクト数を前記実行履歴から検出したオブジェクトＩＤ最大値に書き換える実行履歴解析処理部と
を有することを特徴とするオブジェクト数調整装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リアルタイムＯＳに関し、特に、システムのコンフィギュレーションにおけるオブジェクト数の調整を行うオブジェクト数調整装置に関する。
【背景技術】
【０００２】
大規模な組み込みシステムを開発する場合、アプリケーション・ソフトウェアを効率的に開発するためにリアルタイムＯＳ（ＲＴＯＳ）を用いることが一般的に行われている。このＲＴＯＳの代表的なものにＴＲＯＮがある。このうち、８ビットマイクロプロセッサやシングルチップマイクロプロセッサへの搭載を可能としたものがμＩＴＲＯＮと呼ばれ、現在、その４．０版（μＩＴＲＯＮ４．０）の仕様が公開されている。
【０００３】
このμＩＴＲＯＮ４．０では、アプリケーションプログラムからカーネルまたはソフトウェア部品を呼び出すインターフェイスをサービスコールと呼び、サービスコールの対象となるものを総称してオブジェクトと呼んでいる。オブジェクトはその種類ごとに番号を付けて識別される。その内、タスク、セマフォ、メールボックスなどのオブジェクトはユーザが識別番号を指定でき、これをＩＤ番号と呼ぶ。ＩＤ番号として、ユーザは１から順次正の整数を付与する。
【０００４】
アプリケーションプログラムの作成においては、ＩＤ番号を持つオブジェクトのサービスコールを使用する際に、そのサービスコールに対して、オブジェクトのＩＤ番号を渡す必要がある。μＩＴＲＯＮ４．０では、このようなサービスコールに渡すデータをパラメータと呼んでいる。
【０００５】
また、μＩＴＲＯＮ４．０では、アプリケーションプログラムの作成に先立って、アプリケーションプログラムで使用するオブジェクトの種類や数量を記述したコンフィギュレーションファイルを作成し、このファイルをＣ言語のプリプロセッサに通した後にコンフィギュレータで処理するように規定されている（例えば、非特許文献１参照。）。
【０００６】
このコンフィギュレータによる処理を行うと、オブジェクトの使用数量を記載したオブジェクト定義ファイルが生成される。
【非特許文献１】坂村健監修、高田広章編、“μＩＴＲＯＮ４．０仕様（Ｖｅｒ．４．０１．００）”、［ｏｎｌｉｎｅ］、２００１年５月１日、トロン協会、ｐ．３２−ｐ．３６、図２−１、［平成１５年８月２６日検索］、インターネット＜ＵＲＬ  ：http://www.ertl.jp/ITRON/SPEC/FILE/mitron-401j.pdf＞
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述のオブジェクト定義ファイルに記載されたオブジェクト数は、アプリケーションプログラム作成前に想定した値であり、アプリケーションプログラムの作成時に実際に使用されるオブジェクト数との間で不整合を生じることがある。
【０００８】
このような不整合が、オブジェクト定義ファイルに記載されている値が実際に使用するオブジェクトの数より少ない場合であるときは、プログラムの実行ができなくなるなどのエラーが生じる。
【０００９】
一方、オブジェクト定義ファイルに記載されている値が実際に使用するオブジェクトの数より多い場合、組み込みシステムの資源を無駄に使用することがある。例えば、セマフォやメールボックスなどのオブジェクトの使用を定義すると、システム制御用のコントロールブロックがその定義した数量分生成され、その分のＲＯＭ／ＲＡＭ領域が確保される。しかし、実際に使用するオブジェクトの数が予め定義した数量より少ないと、確保したＲＯＭ／ＲＡＭ領域の中に使用されない領域が生じる。このような使用されないＲＯＭ／ＲＡＭ領域が生じることは、限られた容量のＲＯＭ／ＲＡＭしか搭載されない組み込みシステムにおいては大きな問題となる。
【００１０】
そこで、本発明の目的は、オブジェクト定義ファイルに記載されたオブジェクト数をアプリケーションプログラムで使用するオブジェクト数に整合するように調整するオブジェクト数調整装置を提供することにある。
【課題を解決するための手段】
【００１１】
本発明の一態様によれば、コンフィギュレーション情報ファイルに基づいてコンフィギュレータにより生成されるオブジェクト定義ファイルに記載されるオブジェクト数を調整する装置であって、アプリケーションソースプログラムを読み込んで前記アプリケーションソースプログラムに記述されたサービスコールのパラメータを抽出してサービスコールごとのパラメータデータベースを生成するパラメータ抽出処理部と、前記パラメータデータベースを検索して前記サービスコールが呼び出すオブジェクトのオブジェクトＩＤの最大値を抽出してオブジェクトごとのオブジェクトＩＤ最大値データベースを生成するオブジェクトＩＤ最大値抽出処理部と、前記オブジェクトＩＤ最大値データベースに記載された前記オブジェクトＩＤ最大値と前記オブジェクト定義ファイルに記載された前記オブジェクト数を前記オブジェクトごとに比較してその値が不一致のときはオブジェクト数不一致警告情報を生成するオブジェクト数不一致警告処理部とを有することを特徴とするオブジェクト数調整装置が提供される。
【００１２】
また、本発明の別の一態様によれば、コンフィギュレーション情報ファイルに基づいてコンフィギュレータにより生成されるオブジェクト定義ファイルに記載されるオブジェクト数を調整する装置であって、アプリケーションソースプログラムを読み込んで前記アプリケーションソースプログラムに記述されたサービスコールのパラメータを抽出してサービスコールごとのパラメータデータベースを生成するパラメータ抽出処理部と、前記パラメータデータベースを検索して前記サービスコールが呼び出すオブジェクトのオブジェクトＩＤの最大値を抽出してオブジェクトごとのオブジェクトＩＤ最大値データベースを生成するオブジェクトＩＤ最大値抽出処理部と、前記オブジェクトＩＤ最大値データベースに記載された前記オブジェクトＩＤ最大値に合わせて前記オブジェクト定義ファイルに記載された前記オブジェクト数を書き換えた調整済みオブジェクト定義ファイルを生成するオブジェクト数調整処理部とを有することを特徴とするオブジェクト数調整装置が提供される。
【００１３】
また、本発明のさらに別の一態様によれば、コンフィギュレーション情報ファイルに基づいてコンフィギュレータにより生成されるオブジェクト定義ファイルに記載されるオブジェクト数を調整する装置であって、アプリケーションソースプログラムを読み込んで前記アプリケーションソースプログラムに記述されたサービスコールのパラメータを抽出してサービスコールごとのパラメータデータベースを生成するパラメータ抽出処理部と、前記パラメータデータベースを検索して前記サービスコールが呼び出すオブジェクトのオブジェクトＩＤの最大値を抽出してオブジェクトごとのオブジェクトＩＤ最大値データベースを生成するオブジェクトＩＤ最大値抽出処理部と、前記オブジェクトＩＤ最大値データベースに記載された前記オブジェクトＩＤ最大値に合わせて前記オブジェクト定義ファイルに記載された前記オブジェクト数を書き換えた調整済みオブジェクト定義ファイルを生成するオブジェクト数調整処理部と、前記調整済みオブジェクト定義ファイルを用いて実行した前記アプリケーションソースプログラムの実行履歴を解析して前記オブジェクトごとのオブジェクトＩＤの最大値を検出し、その値が前記オブジェクトＩＤ最大値データベースに記載された前記オブジェクトＩＤ最大値と異なるときは、前記調整済みオブジェクト定義ファイルに記載されたオブジェクト数を前記実行履歴から検出したオブジェクトＩＤ最大値に書き換える実行履歴解析処理部とを有することを特徴とするオブジェクト数調整装置が提供される。
【発明の効果】
【００１４】
本発明によれば、オブジェクト定義ファイルに記載されたオブジェクト数をアプリケーションプログラムで使用するオブジェクト数に整合させることができるので、ＲＯＭ／ＲＡＭに不使用領域を生じることがなくＲＯＭ／ＲＡＭを効率よく使用することができる。また、アプリケーションソースプログラム実行時のエラーを回避することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施例を図面を参照して説明する。
【実施例１】
【００１６】
図１は、本発明の実施例１に係るオブジェクト数調整装置の構成を示すブロック図である。
【００１７】
オブジェクト数調整装置１０１は、パラメータ抽出処理部１１と、オブジェクトＩＤ最大値抽出処理部１２と、オブジェクト数不一致警告処理部１５からなる。
【００１８】
パラメータ抽出処理部１１は、アプリケーションソースプログラム２１と、オブジェクトごとに整理されたサービスコール一覧が記述されているサービスコールデータベース２２を読み込んで、サービスコールデータベース２２に定義されているサービスコールを使用している箇所をアプリケーションソースプログラム２１から抜き出し、それぞれのサービスコールへ渡すパラメータを抽出してパラメータデータベース２３へ書き込む。
【００１９】
オブジェクトＩＤ最大値抽出処理部１２は、パラメータデータベース２３を読み込んでパラメータの中のオブジェクトＩＤ部分を抽出し、その最大値をオブジェクトＩＤ最大値としてオブジェクトＩＤ最大値データベース２４へ書き込む。
【００２０】
オブジェクト数不一致警告処理部１５は、コンフィギュレーションファイル３１をＣ言語プリプロセッサ３２を通した後コンフィギュレータで処理して得られるオブジェクト定義ファイル３４とオブジェクトＩＤ最大値データベース２４を読み込んで、オブジェクト定義ファイル３４に記載されているオブジェクト数とオブジェクトＩＤ最大値データベース２４に書き込まれているオブジェクトＩＤ最大値をオブジェクトごとに比較する。もし、その数が一致しない場合は、オブジェクト数不一致警告情報２５を出力する。
【００２１】
次に、このオブジェクト数調整装置１０１における処理の実行例を図２から図７を用いて説明する。
【００２２】
図２は、Ｃ言語で記述したアプリケーションソースプログラム２１の例である。この例では、オブジェクトの一つであるセマフォを呼び出すサービスコールの記述部分を抜き出して示している。
【００２３】
この例では、サービスコールとしてｗａｉ＿ｓｅｍ、ｓｉｇ＿ｓｅｍ、ｐｏｌ＿ｓｅｍ、ｔｗａｉ＿ｓｅｍが用いられている。これらのサービスコールの後の括弧内に記されているものがパラメータであり、このパラメータがオブジェクトすなわちセマフォのＩＤ番号を示している。
【００２４】
ここで、パラメータはＳＥＭＩＤ１、ＳＥＭＩＤ２、ＳＥＭＩＤ３と表わされており、それぞれ、ｄｅｆｉｎｅ文でその数値、ＳＥＭＩＤ１＝１、ＳＥＭＩＤ２＝２、ＳＥＭＩＤ３＝３が定義されている。すなわち、ここでは、ＩＤ番号１から３の３つのセマフォが使われている。
【００２５】
図３は、サービスコールデータベース２２に記載されているサービスコール一覧の例である。ここでは、セマフォを呼び出すサービスコールの一覧を示している。
【００２６】
図４は、パラメータ抽出処理部１１で生成されるパラメータデータベース２３の例である。ここでは、図２のアプリケーションソースプログラム２１の例から図３に示すセマフォに関するサービスコールを使用している部分を抜き出し、そのサービスコールへ渡すＩＤ番号に相当するパラメータとともに列挙している。
【００２７】
図５は、オブジェクトＩＤ最大値抽出処理部１２で生成されるオブジェクトＩＤ最大値データベース２４の例である。ここでは、図４に示したセマフォに関するサービスコールのＩＤ番号に相当するパラメータをパラメータデータベース２３から読み取って、セマフォに与えられたＩＤ番号の最大値を抽出して記述した例を示している。
【００２８】
この場合、セマフォに関するサービスコールのＩＤ番号に相当するパラメータとしては、図４に示すようにＳＥＭＩＤ１、ＳＥＭＩＤ２、ＳＥＭＩＤ３が与えられているが、この中の最大値はＳＥＭＩＤ３として定義されている３である。したがって、図５に示すようにセマフォに対するオブジェクトＩＤの最大値としては３が記される。
【００２９】
一方、図６は、コンフィギュレータ３３から出力されたオブジェクト定義ファイル３４の例を示したものである。ここでは、セマフォに対するコントロールブロックを定義している部分を示している。ここで、ＳＣＢ  ｓｃｂ［８］の記述が、セマフォに対して定義されたオブジェクト数に相応してコントロールブロックを８個生成することを示している。これは、コンフィギュレーション情報３１にてセマフォを８個使用することが定義されていることを意味する。
【００３０】
図７は、オブジェクト数不一致警告処理部１５から出力されるオブジェクト数不一致警告情報２５の例である。ここでは、セマフォに関して、図５に示すオブジェクトＩＤ最大値データベース２４に記されたオブジェクトＩＤ最大値と図６に示すオブジェクト定義ファイル３４から判明したオブジェクトの定義された使用数との間に不一致があることを警告している。すなわち、８個定義されているオブジェクト数に対してアプリケーションソースプログラム２１で使用しているオブジェクトＩＤの最大値が３であり、オブジェクトＩＤの最大値に対して定義数が過剰であることを警告している。
【００３１】
このように、本実施例では、オブジェクト定義ファイルに定義されているオブジェクトの数と、アプリケーションソースファイルで使用しているオブジェクトＩＤの最大値との間の不一致の情報が出力されるため、この情報に基づいて、ユーザはコンフィギュレーション情報に記述しているオブジェクト数の修正を行うことができる。
【実施例２】
【００３２】
図８は、本発明の実施例２に係るオブジェクト数調整装置の構成を示すブロック図である。
【００３３】
本実施例のオブジェクト数調整装置１が実施例１のオブジェクト数調整装置１０１と異なる点は、オブジェクト数調整装置１０１のオブジェクト数不一致警告処理部１５の代わりにオブジェクト数調整処理部１３を有している点である。その他は、実施例１のオブジェクト数調整装置１０１と同一であるので、図２において図１と同一の部分は図１と同一の符号を付し、ここではその詳細な説明を省略する。
【００３４】
オブジェクト数調整処理部１３は、オブジェクト定義ファイル３４とオブジェクトＩＤ最大値データベース２４を読み込んで、オブジェクト定義ファイル３４に記載されているオブジェクト数とオブジェクトＩＤ最大値データベース２４に書き込まれているオブジェクトＩＤ最大値をオブジェクトごとに比較する。もし、その数が一致しない場合は、オブジェクト定義ファイル３４に記載されているオブジェクト数をオブジェクトＩＤ最大値に書き換えて調整済みオブジェクト定義ファイル２６を出力する。また、このときオブジェクト数不一致警告情報２５も出力する。
【００３５】
図９は、このオブジェクト数調整処理部１３が出力する調整済みオブジェクト定義ファイル２６の例である。ここでは、図６に示したオブジェクト定義ファイル３４の例に対して、図５に示したオブジェクトＩＤ最大値データベース２４の例に基づきセマフォコントロールブロック定義文に記載されたセマフォのオブジェクト数を書き換えた例を示している。すなわち、セマフォのオブジェクト数が８から３に修正されている。
【００３６】
なお、このオブジェクト数調整処理部１３から出力されるオブジェクト数不一致警告情報２５は、実施例１と同じであり、その例は図４に示される。
【００３７】
このように、本実施例では、オブジェクト定義ファイルに定義されているオブジェクトの数が、アプリケーションソースファイルで使用しているオブジェクトＩＤの最大値に合わせて修正されるため、ユーザは、コンフィギュレーション情報の修正を行わなくとも、オブジェクトＩＤの最大値に合致したオブジェクト数が記載されたオブジェクト定義ファイルを得ることができる。また、ユーザは、オブジェクト数不一致警告情報により、オブジェクト定義ファイル中のオブジェクト数が書き換えられたことを知ることができる。
【実施例３】
【００３８】
図１０は、本発明の実施例３に係るオブジェクト数調整装置の構成を示すブロック図である。
【００３９】
本実施例のオブジェクト数調整装置２０１は、実施例２のオブジェクト数調整装置１にさらに実行履歴解析処理部１４を追加したものである。そこで、図３において図２にと同一の部分には同一の符号を付し、ここではその詳細な説明を省略する。
【００４０】
実行履歴解析処理部１４へは、アプリケーションソースプログラム２１をコンパイラ／リンカ４１により変換された実行可能プログラム４３をデバッガ４４で実行した結果得られるサービスコールの実行ログ４５が入力される。なお、コンパイラ／リンカ４１へは、調整済みオブジェクト定義ファイル２６およびカーネルライブラリ４２が入力される。
【００４１】
実行履歴解析処理部１４は、入力されたサービスコールの実行ログ４５を解析し、デバッガ４４が蓄積したサービスコールの実行履歴からサービスコールのパラメータに指定されたオブジェクトＩＤの最大値を検出する。その後、この検出したオブジェクトＩＤの最大値とオブジェクトＩＤ最大値データベース２４に書き込まれているオブジェクトＩＤ最大値とをオブジェクトごとに比較する。その結果、その数の間に不一致があったときは、調整済みオブジェクト定義ファイル２６に記載されているオブジェクト数をサービスコールの実行ログ４５から検出されたオブジェクトＩＤ最大値に書き換える。
【００４２】
このように、本実施例では、オブジェクト定義ファイルに定義されているオブジェクトの数を、アプリケーションソースプログラムを実際に実行した結果に合わせて修正することができる。
【図面の簡単な説明】
【００４３】
【図１】本発明の実施例１に係るオブジェクト数調整装置の構成を示すブロック図。
【図２】アプリケーションソースプログラムの例を示す図。
【図３】サービスコール一覧を記述したデータファイルの例を示す図。
【図４】本発明の実施例に係るオブジェクト数調整装置が生成するパラメータデータベースの例を示す図。
【図５】本発明の実施例に係るオブジェクト数調整装置が生成するオブジェクトＩＤ最大値データベースの例を示す図。
【図６】コンフィギュレータから生成されるオブジェクト定義ファイルの例を示す図。
【図７】本発明の実施例に係るオブジェクト数調整装置が生成するオブジェクト数警告情報の例を示す図。
【図８】本発明の実施例２に係るオブジェクト数調整装置の構成を示すブロック図。
【図９】本発明の実施例に係るオブジェクト数調整装置が生成する調整済みオブジェクト定義ファイルの例を示す図。
【図１０】本発明の実施例３に係るオブジェクト数調整装置の構成を示すブロック図。
【符号の説明】
【００４４】
１、１０１、２０１  オブジェクト数調整装置
１１  パラメータ抽出処理部
１２  オブジェクトＩＤ最大値抽出処理部
１３  オブジェクト数調整処理部
１４  実行履歴解析処理部
１５  オブジェクト数不一致警告処理部
２１  アプリケーションソースプログラム
２２  サービスコールデータベース
２３  パラメータデータベース
２４  オブジェクトＩＤ最大値データベース
２５  オブジェクト数不一致警告情報
２６  調整済みオブジェクト定義ファイル
３１  コンフィギュレーション情報
３２  Ｃ言語プリプロセッサ
３３  コンフィギュレータ
３４  オブジェクト定義ファイル
４１  コンパイラ／リンカ
４２  カーネルライブラリ
４３  実行可能プログラム
４４  デバッガ
４５  サービスコールの実行ログ
【図１】
2005149179.tif 000003
【図２】
2005149179.tif 000004
【図３】
2005149179.tif 000005
【図４】
2005149179.tif 000006
【図５】
2005149179.tif 000007
【図６】
2005149179.tif 000008
【図７】
2005149179.tif 000009
【図８】
2005149179.tif 000010
【図９】
2005149179.tif 000011
【図１０】
2005149179.tif 000012