(57)【要約】【課題】システムの動作時にエラーが検出された場合であっても、プログラムの修正作業を容易にすることが可能なマルチタスクシステム等を提供する。【解決手段】マルチタスクシステム１では、ＣＰＵ１０１が、ＯＳ１２１の各プログラム１０５〜１０８に基づいて、「例外」を検出すると起動するタスクを指定して、その指定タスクのために設けられたタスク割付テーブル１０９に従って、実行単位を順次実行する際に、その実行単位が属するコンポーネントソフトウェアに割り当てられた論理アドレス空間の論理アドレスを物理アドレスに変換する。このため、当該システム１の動作時にタスクのエラーが検出されても、そのエラーの検出時に使用していた論理アドレス空間を基にエラーの原因となるコンポーネントソフトウェアを特定することができる。【選択図】図１
2011118830.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが異なる論理アドレス空間に割り当てられる複数のコンポーネントソフトウェアを用い、該コンポーネントソフトウェアによって提供される実行単位を組み合わせることで構成された複数のタスクを実行するマルチタスクシステムであって、
前記タスク毎に設けられ該タスクを構成する前記実行単位の実行順序が示された実行テーブルと、
予め設定された条件に従って、起動するタスクを指定するタスク指定手段と、
前記タスク指定手段により指定されたタスクである指定タスクのために設けられた前記実行テーブルに従って、該指定タスクを構成する前記実行単位を順次実行する実行制御手段と、
前記実行制御手段によって実行される前記実行単位が属する前記コンポーネントソフトウェアに割り当てられた前記論理アドレス空間の論理アドレスを物理アドレスに変換するアドレス変換手段と、
を備えることを特徴とするマルチタスクシステム。
【請求項２】
複数の前記実行単位のうち、あるコンポーネントソフトウェアの実行単位を他のコンポーネントソフトウェアの実行単位としても利用できるように公開された実行単位を公開実行単位として、
前記指定タスクを構成する前記実行単位からのＡＰＩ呼び出しをトリガとして、該ＡＰＩにより指定される前記公開実行単位を、前記実行制御手段に実行させるＡＰＩ制御手段を備えることを特徴とする請求項１に記載のマルチタスクシステム。
【請求項３】
コンピュータに、請求項１または請求項２に記載のマルチタスクシステムを構成する各手段としての機能を実現させるためのプログラム。
【請求項４】
請求項３に記載のプログラムにおいて、
前記ＡＰＩ制御手段に対応するプログラムが、該ＡＰＩ制御手段以外の各手段に対応する各プログラムとは異なる前記論理アドレス空間に割り当てられていることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オペレーティングシステム（ＯＳ）等の管理下で複数のタスクが実行されるマルチタスクシステム、及び、プログラムに関する。
【背景技術】
【０００２】
従来より、この種のマルチタスクシステムでは、プログラムに予め記述されている論理アドレスによって規定されるメモリ領域の範囲（以下「論理アドレス空間」という）をタスク毎に分割して、各論理アドレス空間における同一の論理アドレスを異なる物理アドレスに変換することにより、複数のタスクが同じ物理アドレスに書き込みを行うことを防止する空間保護技術が知られている（例えば、特許文献１参照）。
【０００３】
具体的に言うと、上記技術では、論理アドレス空間の論理アドレスと実際のメモリ領域（以下「物理メモリ領域」という）の物理アドレスとを関連付けたアドレス変換テーブルがタスク毎に予め設定されており、メモリ管理装置が、ＯＳ等からのタスク切り替えの指示に応じて、そのタスクに対応する論理アドレス空間のアドレス変換テーブルに切り替える処理を実行する。これにより、異なるタスク間で同一の物理メモリ領域にアクセスすることを禁止している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−３４７９４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、組み込みシステムの開発（特に自動車の分野）では、制御の広範囲化・高度化・高精度化が進むにつれて制御ソフトウェアの規模も増加の一途を辿っており、そういった大規模な制御システムの信頼性向上や開発コスト削減、ソフトウェアの再利用性向上等のために、タスクをさらにコンポーネントソフトウェア毎に分割し、ソフトウェア開発を分散化することが行われている。
【０００６】
また、製造コスト削減等の理由から搭載されるリソース（メモリの容量等）に制約が課せられることが多く、ソフトウェア開発時に各コンポーネントソフトウェアのプログラム（タスクを構成する実行単位）に不具合が見つからない場合であっても、実際にシステムを動作させてみると、あるタスクの実行単位がそのタスク内における他の実行単位のデータを誤って書き換えてしまうことにより、タスクのエラーが検出されることがある。
【０００７】
この場合、従来の空間保護技術では、タスク毎に異なる論理アドレス空間が割り当てられているため、エラーの検出時に使用していた論理アドレス空間を基にエラーの原因となるタスクを特定することはできても、そのタスクのうち、どのコンポーネントソフトウェアに対応するプログラムに不具合があるかを特定することができず、プログラムの修正作業が煩雑であるという問題があった。
【０００８】
本発明は、上記問題点を解決するために、システムの動作時にエラーが検出された場合であっても、プログラムの修正作業を容易にすることが可能なマルチタスクシステム及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するためになされた第１発明である請求項１に記載のマルチタスクシステムは、それぞれが異なる論理アドレス空間に割り当てられる複数のコンポーネントソフトウェアを用い、これらコンポーネントソフトウェアによって提供される実行単位を組み合わせることで構成された複数のタスクを実行するように構成されている。
【００１０】
ここで、本発明のマルチタスクシステムは、タスク毎に設けられてタスクを構成する実行単位の実行順序が示された実行テーブルを有し、タスク指定手段が、予め設定された条件に従って起動するタスクを指定し、実行制御手段が、タスク指定手段により指定されたタスク（以下、指定タスクという）のために設けられた実行テーブルに従って、指定タスクを構成する実行単位を順次実行する。そして、アドレス変換手段が、実行制御手段によって実行される実行単位が属するコンポーネントソフトウェアに割り当てられた論理アドレス空間の論理アドレスを物理アドレスに変換するように構成される。
【００１１】
このように構成されたマルチタスクシステムでは、コンポーネントソフトウェアによって提供された実行単位がタスクの実行時に所定の順序に従って起動され、その実行単位の起動毎にコンポーネントソフトウェアに対応する論理アドレス空間が切り替えられて、その論理アドレス空間に対応する論理アドレスから物理アドレスへのアクセスがなされる。
【００１２】
つまり、本発明のマルチタスクシステムでは、コンポーネントソフトウェア毎に論理アドレス空間が割り当てられているため、システムの動作時にタスクのエラーが検出された場合であっても、そのエラーの検出時に使用していた論理アドレス空間を基にエラーの原因となるコンポーネントソフトウェアを特定することが可能になる。
【００１３】
したがって、本発明のマルチタスクシステムによれば、システム動作時にエラーが検出された場合であっても、どのコンポーネントソフトウェアに対応するプログラムに不具合があるかを特定でき、その結果、特定のコンポーネントソフトウェアの開発元によるプログラムの修正作業だけで済み、プログラムの修正作業を容易にすることができる。
【００１４】
なお、上記の指定タスク内において、例えば、ある実行単位が他の実行単位を利用する際に、論理アドレス空間がタスク毎に割り当てられていれば、同一の論理アドレス空間から実行単位毎に個別の物理アドレスを指定することができるが、論理アドレス空間がコンポーネントソフトウェア毎に割り当てられている場合には、論理アドレス空間を切り替える必要がある。
【００１５】
このため、本発明のマルチタスクシステムにおいては、請求項２に記載のように、複数の実行単位のうち、あるコンポーネントソフトウェアの実行単位を他のコンポーネントソフトウェアの実行単位としても利用できるように公開された実行単位を公開実行単位として、ＡＰＩ制御手段が、上記の指定タスクを構成する実行単位からのＡＰＩ呼び出しをトリガとして、そのＡＰＩにより指定される公開実行単位を実行制御手段に実行させることが好ましい。
【００１６】
このように構成されたマルチタスクシステムでは、アドレス変換手段が、実行手段によって実行される公開実行単位が属するコンポーネントソフトウェアに割り当てられた論理アドレス空間の論理アドレスを物理アドレスに変換する。即ち、公開実行単位の起動毎にコンポーネントソフトウェアに対応する論理アドレス空間に切り替えられて、その論理アドレス空間に対応する論理アドレスから物理アドレスへのアクセスがなされる。
【００１７】
したがって、このように構成されたマルチタスクシステムによれば、論理アドレス空間をコンポーネントソフトウェア毎に割り当てつつ、各コンポーネントソフトウェアの製造元が、実行単位から呼び出す公開実行単位の仕様（ＡＰＩリファレンス）を活用してプログラムを作成可能となり、ひいてはプログラムの作成作業を容易にすることができる。
【００１８】
ところで、第１発明のマルチタスクシステムを実現するための各手段は、ハードウェアで構成することも可能であるが、請求項３に示すように、コンピュータに実行させるためのプログラムとして構成するのが一般的である。即ち、第２発明のプログラムとして、プロセッサやメモリ等からなるマイコンを有するコンピュータを、第１発明のマルチタスクシステムとして機能させるためのプログラムを構成することができる。
【００１９】
このようなプログラムは、例えば、フロッピー（登録商標）ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ハードディスク、ＲＯＭ、ＲＡＭ等のコンピュータ読み取り可能な記録媒体に記録し、必要に応じてコンピュータにロードして起動することにより用いたり、ネットワークを介してロードして起動することにより用いたりすることができる。
【００２０】
なお、本発明のプログラムにおいて、上記のＡＰＩ制御手段に対応するプログラムが、ＡＰＩ制御手段以外の各手段に対応する各プログラム（具体的には、ＯＳのプログラム）とは異なる論理アドレス空間に割り当てられていることが望ましい。
【００２１】
このように構成されたプログラムによれば、ＯＳがＡＰＩの管理を行う必要がなくなり、ＯＳの機能を増加させずに済むため、ＯＳに割り当てられる論理アドレス空間を肥大化させることを防止し、ひいてはシステムの可用性を向上することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明が適用されたマルチタスクシステム１の構成を示すブロック図である。
【図２】タスク割付テーブル１０９の概略構成を示すマトリックス図である。
【図３】実行制御プログラム１０７に基づいてＣＰＵ１０１が実行する処理を示すフローチャートである。
【図４】ＡＰＩ管理テーブル１１５，１１６の概略構成を示すマトリックス図である。
【図５】ＡＰＩプログラム１１２，１１４に基づいてＣＰＵ１０１が実行する処理を示すフローチャートである。
【図６】マイコンをマルチタスクシステム１として機能させるためのプログラム（実行ファイル）を生成するツール（ＰＣ４１）の概略構成を示すブロック図である。
【図７】ソースコードから実行ファイルが生成される過程を表す説明図である。
【図８】ＰＣ４１のＣＰＵ５１が実行するアドレス領域指定処理の詳細を示すフローチャートである。
【図９】実行単位マッピングデータ６９のデータ構造の概略を表す説明図である。
【図１０】実行単位マッピングデータ６９のデータ構造の詳細を表す第１の説明図である。
【図１１】実行単位マッピングデータ６９のデータ構造の詳細を表す第２の説明図である。
【図１２】実行単位マッピングデータ６９のデータ構造の詳細を表す第３の説明図である。
【発明を実施するための形態】
【００２３】
以下に、本発明の実施形態を図面と共に説明する。
＜マルチタスクシステムの構成＞
図１は、本発明が適用されたマルチタスクシステム１の構成を示すブロック図である。
【００２４】
図１に示すように、マルチタスクシステム１は、車両のエンジンを制御する電子制御装置（エンジンＥＣＵ）のマイクロコンピュータ（マイコン）に実装され、オペレーティングシステム（ＯＳ）１２１やマルチタスク機能を実現するための周知の処理を実行するＣＰＵ１０１と、ＯＳ１２１やコンポーネントソフトウェア毎に割り当てられた複数の論理アドレス空間（以下、メモリ空間という）１０２〜１０４とを有して構成されている。
【００２５】
なお、コンポーネントソフトウェアは、エンジンの構成部品毎に開発されるプログラムであり、そのプログラムの最小単位である複数の実行単位から構成されている。また、タスクは、エンジンの動作を制御するエンジン制御や、エンジンの状態を診断するダイアグ制御等に係る処理をＣＰＵ１０１に実行させるためのプログラムであり、複数のコンポーネントソフトウェアの実行単位を組み合わせることで構成されている。
【００２６】
例えば、エンジン制御に対応するタスク１は、エンジンの燃料制御に対応する実行単位１−１と、エンジンの点火制御に対応する実行単位２−１と、エンジンのスイッチ制御に対応する実行単位３−１とにより構成され、ダイアグ制御に対応するタスク２は、インジェクタに対応する実行単位１−２と、イグナイタに対応する実行単位２−２と、エンジンスイッチに対応する実行単位３−２とにより構成される。
【００２７】
そして、エンジンの構成部品のうち、インジェクタに関係する実行単位１−１，１−２は、インジェクタ専用に開発されるコンポーネントソフトウェア（以下、コンポーネントという）１によって提供され、イグナイタに関係する実行単位２−１，２−２は、イグナイタ専用に開発されるコンポーネント２によって提供される。そして、エンジンスイッチに関係する実行単位３−１，３−２は、エンジンスイッチ専用に開発されるコンポーネント３によって提供される。
【００２８】
また、メモリ空間は、ＣＰＵ１０１の仮想記憶技術により作り出された論理的な記憶装置であり、ＯＳ１２１またはコンポーネントに対応するプログラムやデータなどの情報を保存する。ちなみに、仮想記憶技術とは、上記の情報を、ハードディスク装置等の外部記憶装置やマイコン内の各物理的メモリ装置に分散させて記憶し、記憶された情報の配置を必要に応じて入れ替えることにより、実際に装備されている物理的メモリ装置よりも大きなサイズのメモリ装置がシステムに装備されているかのように見せる技術である。
【００２９】
そして、メモリ空間は、ＯＳ１２１のメモリ空間１０２と、コンポーネント１およびコンポーネント２のメモリ空間１０３と、コンポーネント３のメモリ空間１０４とから構成される。つまり、本実施形態では、コンポーネント１およびコンポーネント２とコンポーネント３とがそれぞれ異なるメモリ空間に割り当てられている。ちなみに、コンポーネント１とコンポーネント２は、メモリ空間およびそのメモリ空間に記憶されているユーザプログラムやデータを共有している。
【００３０】
＜ＯＳの構成＞
ＯＳ１２１は、タスクを管理するための例外処理プログラム１０５およびタスク切り替えプログラム１０６、タスクを構成する実行単位を管理するための実行制御プログラム１０７、実行単位の論理アドレスを物理アドレスに変換するアドレス変換プログラム１０８からなるカーネルタスク１１０と、後述するタスク割付テーブル１０９とが格納されている。
【００３１】
このうち、例外処理プログラム１０５は、ＣＰＵ１０１が、「例外」を検出したときに、自動的に実行中のユーザタスク（タスク１，２）を中断し、そのタスクをカーネルタスク１１０に切り替えて実行するプログラムであり、例外事象を解析するとともに、必要に応じて外部機器の制御等を行うように構成されている。
【００３２】
なお、「例外」とは、予め設定された条件を満たす事象をいい、具体的には、「周期的なタスク切り替えを起こすべき時間になったことがタイマから通知された」場合（事象１）や、「外部機器から緊急の処理が必要であることを示す信号が入力された」場合（事象２）、「実行単位からＡＰＩ呼び出しがなされた」場合（事象３）などが相当する。
【００３３】
そして、例外処理プログラム１０５は、「例外」として、事象１，２を検出した場合にはタスク切り替えプログラム１０６に制御を移し、事象３を検出した場合にはアドレス変換プログラム１０８に制御を移すように構成されている。
【００３４】
タスク切り替えプログラム１０６は、ＣＰＵ１０１が「次に実行すべきタスク」を選択するために実行するプログラムである。具体的には、タスク間の優先度や各タスクの実行履歴などに基づいて、ＣＰＵ１０１に実行させるべきタスクを一つ選択し、そのタスクへのタスク切り替えを行う。つまり、タスク切り替えプログラム１０６は、「例外」により中断されたタスクの実行を再開する「例外復帰処理」や、「例外」により新たに実行する必要が生じたタスクを起動する「例外起動処理」をＣＰＵ１０１に実行させるプログラムである。
【００３５】
タスク割付テーブル１０９は、図２に示すように、タスク１，２，・・・毎に設けられて、各タスク１，２，・・・を構成する実行単位１−１，２−１，・・・の実行順序が示されている。また、タスク割付テーブル１０９は、各実行単位１−１，２−１，・・・に対応して、コンポーネント１〜３毎に割り当てられている論理アドレス空間（メモリ空間）と、実行単位毎にそのコンテキスト（データ）を格納するためのスタック領域とが示されている。
【００３６】
実行制御プログラム１０７は、タスク切り替えプログラム１０６によるタスクの切り替え時に起動し、図３に示すように、タスク割付テーブル１０９から実行すべきタスクに割り付けられている実行単位を特定し（Ｓ２１０）、その特定した実行単位が属するコンポーネントに割り当てられたメモリ空間を指定する（Ｓ２２０）。そして、アドレス変換プログラム１０８を介してＳ２２０で指定したメモリ空間の論理アドレスを物理アドレスに変換して（Ｓ２３０）、再びＳ２１０を実行するように構成されている。
【００３７】
なお、アドレス変換プログラム１０８は、図示を省略するが、メモリ空間Ｂ，Ｃ毎に論理アドレスと物理アドレスとを関連付けたアドレス変換テーブルを、実行制御プログラム１０７により指定されたメモリ空間に対応するアドレス変換テーブルに切り替えるように構成されている。
【００３８】
つまり、ＯＳ１２１は、例外処理プログラム１０５およびタスク切り替えプログラム１０６によって、ＣＰＵ１０１に実行させるべきタスクを特定するとともに、実行制御プログラム１０７によって、タスク内の実行単位を特定し、実行単位を実行する度に必要に応じてメモリ空間Ｂ，Ｃの切り替えを行い、アドレス変換プログラム１０８を介してアドレス変換を行うように構成されている。
【００３９】
＜コンポーネントソフトウェアのメモリ空間の構成＞
図１に戻り、コンポーネント１およびコンポーネント２のメモリ空間１０３は、コンポーネント１およびコンポーネント２によって提供される実行単位１−１，１−２，２−１，２−２，公開実行単位Ｘ，Ｙ，・・・からなるユーザプログラム１１１と、コンポーネント１およびコンポーネント２用のＡＰＩプログラム１１２とを記憶している。また、コンポーネント３のメモリ空間１０４は、コンポーネント３によって提供される実行単位３−１，３−２，公開実行単位Ｚからなるユーザプログラム１１３と、コンポーネント３用のＡＰＩプログラム１１４とを記憶している。
【００４０】
なお、公開実行単位Ｘ，Ｙは、コンポーネント１およびコンポーネント２によって提供される実行単位をコンポーネント３の実行単位としても利用できるように公開された実行単位であり、公開実行単位Ｚは、コンポーネント３によって提供される実行単位をコンポーネント１およびコンポーネント２の実行単位としても利用できるように公開された実行単位である。
【００４１】
また、ＡＰＩプログラム１１２，１１４は、ＯＳ１２１の機能を利用するミドルウェア１２２としてメモリ空間Ｂ，Ｃに組み込まれており、実行中の実行単位を公開実行単位Ｘ，Ｙ，Ｚに接続するための公開ＡＰＩ（アプリケーションインターフェース）が示されたＡＰＩ管理テーブル１１５，１１６をそれぞれ有している。
【００４２】
ＡＰＩ管理テーブル１１５，１１６は、公開実行単位Ｘ，Ｙ，Ｚ毎に公開ＡＰＩ（ＡＰＩ−Ｘ，ＡＰＩ−Ｙ，ＡＰＩ−Ｚ）が割り当てられており、図４に示すように、各ＡＰＩ−Ｘ，ＡＰＩ−Ｙ，ＡＰＩ−Ｚに対応して、コンポーネント１〜３毎に割り当てられているメモリ空間Ｂ，Ｃと、公開実行単位Ｘ，Ｙ，Ｚ毎に割り当てられたスタック領域ＢＸ，ＢＹ，ＣＺとが示されている。
【００４３】
そして、ＡＰＩプログラム１１２，１１４は、実行制御プログラム１０７により実行される実行単位からのＡＰＩ呼び出しをトリガとして起動し、図５に示すように、ＡＰＩ管理テーブル１１５，１１６から公開ＡＰＩを特定し（Ｓ３１０）、その特定した公開ＡＰＩが属するコンポーネントに割り当てられたメモリ空間を指定する（Ｓ３２０）。そして、ＯＳの例外処理プログラム１０５およびアドレス変換プログラム１０８を介してＳ３２０で指定したメモリ空間の論理アドレスを物理アドレスに変換して（Ｓ３３０）、再びＳ３１０を実行するように構成されている。
【００４４】
つまり、ＡＰＩプログラム１１２，１１４は、実行中の実行単位が利用する公開実行単位を特定するとともに、その公開実行単位を実行する度に必要に応じてメモリ空間Ｂ，Ｃの切り替えを行い、アドレス変換プログラム１０８を介してアドレス変換を行うように構成されている。
【００４５】
なお、上記実施形態において、タスク割付テーブル１０９が対応テーブル、タスク切り替えプログラム１０６に基づいてＣＰＵ１０１が実行する処理がタスク指定手段、実行制御プログラム１０７に基づいてＣＰＵ１０１が実行する処理が実行制御手段、アドレス変換プログラム１０８に基づいてＣＰＵ１０１が実行する処理がアドレス変換手段、ＡＰＩプログラム１１２，１１４に基づいてＣＰＵ１０１が実行する処理がＡＰＩ制御手段に相当する。
【００４６】
＜実行ファイルの生成プロセス＞
ところで、マイコンを上述したマルチタスクシステムとして動作させるための、ＯＳ１２１やミドルウェア１２２といった各種プログラムは、実行形式コード（機械語）からなる実行ファイルとしてメモリ空間Ａ〜Ｃに書き込まれている。この実行ファイルは、プログラマが直接作成することも不可能ではないが、通常は、高水準言語で記述されたソースコードをコンパイル、リンク等の過程を経て生成される。以下、マイコンに搭載される実行ファイルの生成プロセスについて説明する。
【００４７】
まず、ソースコードから実行ファイルを生成するためのハード環境（ツール）の一例として、パーソナルコンピュータ（以下「ＰＣ」という）４１の概略構成を図６に示す。ＰＣ４１は、そのハード構成自体は、よく知られている一般的なＰＣと同様であり、ＣＰＵ５１、ＲＯＭ５３、ＲＡＭ５５、ハードディスク５７、画像出力インターフェイス５９、入力インターフェイス６１、通信インターフェイス６３などがバス７０を介して接続されている。
【００４８】
ＰＣ４１による処理内容は画像出力インターフェイス５９を介してディスプレイ４３に表示される。また、プログラマ等のユーザがキーボード４５やマウス４７にて入力した情報は、入力インターフェイス６１を介してＰＣ４１内に取り込まれて処理される。通信インターフェイス６３は、ＰＣ４１をＬＡＮ等の外部ネットワークに接続するためのものである。
【００４９】
ハードディスク５７には、ＰＣ５７の動作全体を管理するＯＳや各種アプリケーションソフトが搭載されているほか、図示の如く、プログラマ等がＣ言語等の高水準言語によるソースコードを入力・作成するためのソフトウェアであるエディタ６６、ソースコードをオブジェクトコードに変換するためのソフトウェアであるコンパイラ６７、オブジェクトコードや他の必要なコード・ライブラリ等をリンクさせて実行ファイル（即ちＣＰＵ１０１が直接解釈可能な形式のコード群）を生成するソフトウェアであるリンカ６８が搭載されている。
【００５０】
そして更に、ハードディスク５７には、ソースコード中の実行単位とコンポーネントとの対応関係および実行単位とタスクとの対応関係をテーブル化した実行単位マッピングデータ６９も搭載される。この実行単位マッピングデータ６９は、実際には、ユーザがＰＣ４１へ必要な情報を入力することにより生成されるものである。
【００５１】
このように構成されたＰＣ４１を用いて、ユーザは、各コンポーネント１，２，３のソースコードを入力・作成すると共に、実行単位マッピングデータ６９を作成し、最終的に所望の実行ファイルを得ることができる。
【００５２】
次に、ソースコードから実行ファイルが生成される過程について、図７に基づいて説明する。図７に示すように、実行単位マッピングデータ６９は、各コンポーネントによって提供される実行単位とタスクとの対応関係を示すタスク・実行単位対応テーブル７３と、公開実行単位と公開ＡＰＩとの対応関係を示すＡＰＩ・実行単位対応テーブル７５とを有して構成されている。
【００５３】
タスク・実行単位対応テーブル７３では、タスク１を構成する実行単位として、実行単位１−１（燃料制御）、実行単位２−１（点火制御）、実行単位３−１（スイッチ制御）がリストアップされて対応付けられると共に、タスク２を構成する実行単位として、実行単位１−２（監視制御；インジェクタ）等がリストアップされて対応付けられている。
【００５４】
ＡＰＩ・実行単位対応テーブル７５では、公開実行単位Ｘに対応した公開ＡＰＩが「ＡＰＩ−Ｘ」として対応付けられ、公開実行単位Ｙに対応した公開ＡＰＩが「ＡＰＩ−Ｙ」として対応付けられ、公開実行単位Ｚに対応した公開ＡＰＩが「ＡＰＩ−Ｚ」として対応付けられている。このようにして、ユーザは、リンカ６８によるリンク処理に先立ち、前もって実行単位マッピングデータ６９を用意しておくのである。
【００５５】
一方、Ｃ言語等の高水準言語で記述された各実行単位のソースコード７１は、コンパイラ６７でコンパイルすることにより、中間言語形式のオブジェクトコードに変換される。このようにして生成されたオブジェクトコード７７は、まだアドレス解決されていない状態となっており、そのままではＣＰＵ１０１にて実行させることはできない。そこで、このオブジェクトコード７７と、実行単位マッピングデータ６９と、リアルタイムＯＳ７８（詳細にはカーネルライブラリ）と、ミドルウェア７９とをリンカ６８にてリンクさせ、実行形式コードからなる実行ファイル８０を生成する。
【００５６】
リンカ６８は、オブジェクトコード７７から各コンポーネントの実行単位をコンポーネント毎に抽出する。この際、どの実行単位がどのタスクのものであるかを、タスク・実行単位対応テーブル７３に基づいて識別する。そして、抽出した各実行単位それぞれに対し、コンポーネント毎に対応するメモリ空間およびスタック領域を選択するアドレス領域指定処理を行う。
【００５７】
アドレス領域指定処理では、図８に示すように、設定対象のマイコンを指定し（Ｓ４１０）、実行単位マッピングデータ６９のデータ構造（図９参照）に基づいて、論理アドレス空間の構成を設定する（Ｓ４２０）。なお、Ｓ４２０では、論理アドレス空間に割り当てるコンポーネント毎に実行ファイルを生成し、その実行ファイル内において、実行単位毎に公開ＡＰＩと割付タスクとを関連付ける（図１０参照）とともに、実行単位毎に論理アドレス空間内に割り当てる領域（メモリオブジェクト）を指定する。
【００５８】
ちなみに、メモリオブジェクトとしては、ＥＬＦファイル（textセクション，dataセクション，bssセクション）やＲＯＭ、フラッシュメモリ、メモリマップトＩ／Ｏ、スタック領域などが指定されるとともに、指定された領域の開始アドレスや、その開始アドレスからの相対値（オフセット）、論理領域に対するアクセス権が指定される（図１１参照）。なお、アクセス権としては、読み出し可能・禁止や、書き込み可能・禁止、実行可能・禁止、又はそれらの組み合せが指定される（図１２参照）。
【００５９】
図８に戻り、アドレス領域指定処理では、Ｓ４１０にて指定されたマイコンに関する情報と、Ｓ４２０にて設定された論理アドレス空間の構成とに基づいて、マイコンの制約により生じる論理アドレス空間の構成の制限をチェックする（Ｓ４３０）。例えば、マイコンの制約には、「異なるメモリオブジェクトの論理アドレスを同じ物理アドレスに配置することができない」場合や、「一つのメモリオブジェクトの論理アドレスは同じ物理アドレスに配置される」場合などがある。これらの場合、同一の論理アドレス空間内で同じメモリオブジェクトを異なる領域に対応付けることができないため、これをチェックし、エラーを検出すると（Ｓ４４０；ＹＥＳ）、エラー内容を表示するとともに、Ｓ４２０を再実行する。一方、エラーを検出しない場合は（Ｓ４４０；ＮＯ）、Ｓ４５０に移行する。そして、Ｓ４５０では、Ｓ４２０にて設定された論理アドレス空間の構成に基づいて、タスク割付テーブル１０９とＡＰＩ管理テーブル１１５，１１６とを生成し、本処理を終了する。
【００６０】
このようなアドレス領域指定処理によりメモリオブジェクトを配置することで、各実行単位につき、対応する論理アドレス空間の領域が得られることとなり、これにより全ての実行単位のアドレス解決がなされるのである。
【００６１】
＜本実施形態の効果＞
以上説明したように、本実施形態のマルチタスクシステム１では、ＣＰＵ１０１が、ＯＳ１２１の各プログラム１０５〜１０８に基づいて、「例外」を検出すると起動するタスクを指定して、その指定タスクのために設けられたタスク割付テーブル１０９に従って、実行単位を順次実行する際に、その実行単位が属するコンポーネントソフトウェアに割り当てられた論理アドレス空間の論理アドレスを物理アドレスに変換する。
【００６２】
したがって、本実施形態のマルチタスクシステム１では、コンポーネントソフトウェア毎に論理アドレス空間が割り当てられているため、当該システム１の動作時にタスクのエラーが検出された場合であっても、そのエラーの検出時に使用していた論理アドレス空間を基にエラーの原因となるコンポーネントソフトウェアを特定することができる。
【００６３】
これにより、当該システム１に不具合があっても、特定のコンポーネントソフトウェアの開発元によるプログラムの修正作業だけで対応でき、ひいてはプログラムの修正作業を容易にすることができる。
【００６４】
また、マルチタスクシステム１では、ＣＰＵ１０１が、ミドルウェア１２２のＡＰＩプログラム１１２，１１４に基づいて、指定タスクを構成する実行単位からのＡＰＩ呼び出しをトリガとして、そのＡＰＩにより指定される公開実行単位を特定するとともに、その公開実行単位が属するコンポーネントソフトウェアに割り当てられた論理アドレス空間の論理アドレスを物理アドレスに変換する。
【００６５】
このため、マルチタスクシステム１では、ある実行単位が他の実行単位を利用する際にも、論理アドレス空間を切り替えることができるため、論理アドレス空間をコンポーネントソフトウェア毎に割り当てつつ、各コンポーネントソフトウェアの製造元がＡＰＩリファレンスを活用してプログラムを作成可能となり、ひいてはプログラムの作成作業を容易にすることができる。
【００６６】
なお、マルチタスクシステム１では、ツール（ＰＣ４１）によりタスク割付テーブル１０９およびＡＰＩ管理テーブル１１５，１１６が予め組み込まれることにより、コンポーネントソフトウェア毎に割り当てられる論理アドレス空間と、実行単位毎に割り当てられるスタック領域とが固定されるため、ＯＳ１２１が動的にメモリマップを行わずに済み、これにより、ＯＳ１２１の機能を削減することができる。
【００６７】
［他の実施形態］
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において、様々な態様にて実施することが可能である。
【００６８】
例えば、上記実施形態のマルチタスクシステム１では、コンポーネント１とコンポーネント２とが同じメモリ空間に割り当てられているが、これらを異なるメモリ空間に割り当てるようにしてもよい。換言すれば、各コンポーネント１〜３をそれぞれ異なるメモリ空間に割り当てるようにしてもよい。
【００６９】
また、上記実施形態のマルチタスクシステム１は、ミドルウェア１２２を有して構成されているが、これに限定されるものではなく、例えばＡＰＩプログラム１１２，１１４をミドルウェア１２２の代わりにＯＳ１２１のプログラムとして備えるようにしてもよい。
【００７０】
なお、上記実施形態のマルチタスクシステム１は、車両用の電子制御装置のマイコンに実装される場合を例示したが、これに限らず、携帯電話やデジタルカメラ、オーディオビジュアル機器などのマイコンに組み込まれてもよい。
【符号の説明】
【００７１】
１…マルチタスクシステム、１０１…ＣＰＵ、１０２…ＯＳのメモリ空間（Ａ）、１０３…コンポーネント１およびコンポーネント２のメモリ空間（Ｂ）、１０４…コンポーネント３のメモリ空間（Ｃ）、１０５…例外処理プログラム、１０６…タスク切り替えプログラム、１０７…実行制御プログラム、１０８…アドレス変換プログラム、１０９…タスク割付テーブル、１１０…カーネルタスク、１１１，１１３…ユーザプログラム、１１２，１１４…ＡＰＩプログラム、１１５，１１６…ＡＰＩ管理テーブル、１２１…オペレーティングシステム（ＯＳ）、１２２…ミドルウェア。
【図１】
2011118830.tif 000003
【図２】
2011118830.tif 000004
【図３】
2011118830.tif 000005
【図４】
2011118830.tif 000006
【図５】
2011118830.tif 000007
【図６】
2011118830.tif 000008
【図７】
2011118830.tif 000009
【図８】
2011118830.tif 000010
【図９】
2011118830.tif 000011
【図１０】
2011118830.tif 000012
【図１１】
2011118830.tif 000013
【図１２】
2011118830.tif 000014