(57)【要約】【課題】判り易く階層化して処理記述部１８０を作成でき、ハードウエアや制御方法の変更時にも、ソフトウエアの変更工数を局所化できるとともに、アプリケーションの実行速度と、記憶装置の必要容量を削減する。【解決手段】各階層の処理を階層Ｌ１，Ｌ２毎のラベルを用いてマクロで記述する処理記述部１８０、階層間の接続関係を階層毎のラベルをマクロ化し定義した階層構成記述部１９１、マクロ展開を行う識別子展開部１９２を設け、これらとコンパイラ９１４を用いることにより、ただひとつの階層に展開された制御ソフトウエアを得て、得られたソフトウエアを、自動車用制御装置のコントロールユニット２００内のＲＯＭ２０５等に記憶させる。【選択図】図１
2011238297.tif 000002
【特許請求の範囲】
【請求項１】
自動車の制御を行うアプリケーションと、前記アプリケーションの要求を受け付けてマイクロコンピュータを制御する、複数の階層に階層化されたデバイスドライバとを有する自動車用制御装置のソフトウエアを、計算機を用いて作成するためのソフトウエア作成方法において、
前記計算機は、前記デバイスドライバのソースコードと、
前記デバイスドライバの各階層の変数名または前記マイクロコンピュータの入出力信号名を表す識別子の階層間の対応関係を、前記自動車用制御装置の仕様に基づいてソースコードで記述された階層構成記述部と、
呼び出し処理を表す文字列によりある識別子を他の識別子に置換して単一のものであるとコンパイラに認識させる連結処理がソースコードで記述された識別子展開部と、
を記憶手段から読み出し、
前記階層構成記述部に記述された対応関係に基づいて、前記識別子展開部に記述された連結処理により異なる層の対応する識別子を単一の識別子に置換して、階層化された前記デバイスドライバのソースコードを１つの階層のソースコードにマクロ展開し、
マクロ展開された前記デバイスドライバのソースコードと、
前記アプリケーションのソースコードとから、
コンパイラを用いて、前記デバイスドライバと前記アプリケーションそれぞれのオブジェクト形式ファイルを作成し、
前記オブジェクト形式ファイルをリンカによってリンクして前記ソフトウエアを作成することを特徴とする自動車用制御装置のソフトウエア作成方法。
【請求項２】
請求項１において、前記階層構成記述部は、前記マイクロコンピュータの出力端子名の記述を含むことを特徴とする自動車用制御装置のソフトウエア作成方法。
【請求項３】
請求項１又は２において、前記識別子展開部は、プログラミング言語の識別子連結命令の記述を含むことを特徴とする自動車用制御装置のソフトウエア作成方法。
【請求項４】
請求項１〜３のいずれかにおいて、ハードウエアデバイスとマイクロコンピュータを含むコントロールユニットの入出力端子の対応を記載した入出力端子一覧表に基いて前記階層構成記述部を生成するステップを備えたことを特徴とする自動車用制御装置のソフトウエア作成方法。
【請求項５】
請求項１〜３のいずれかにおいて、前記階層構成記述部を作成するステップは、自動車用制御装置の仕様書に記載されている入出力端子一覧表に基いて階層構成記述部を作成するステップを含むことを特徴とする自動車用制御装置のソフトウエア作成方法。
【請求項６】
請求項１〜５のいずれかにおいて、自動車用制御装置のコントロールユニットで実行させるソフトウエアを構成するアプリケーションプログラムのソースコードを作成するステップと、このアプリケーションソースコードをオブジェクト形式ファイルに変換するステップと、展開された前記第２の処理記述部をオブジェクト形式ファイルに変換するステップと、これらオブジェクト形式ファイルに変換されたアプリケーション及び第２の処理記述部を結合して前記マイクロコンピュータの記憶装置に制御用ソフトウエアとして書き込むステップとを備えたことを特徴とする自動車用制御装置のソフトウエア作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は自動車用制御装置を構成するマイクロコンピュータのソフトウエアの作成方法に関する。
【背景技術】
【０００２】
従来より自動車エンジン制御などの制御装置として、ＣＰＵ、ＲＯＭ、ＲＡＭ、入出力信号処理装置などを内蔵したマイクロコンピュータ（以下マイコンと記す）が用いられている。マイコンに搭載されるソフトウエアは、目的とする制御動作が行えるように、制御処理を行うアプリケーションプログラムと入出力を行うデバイスドライバによって構成されている。入出力を行うデバイスドライバは、使用するハードウエアが変更になった場合に影響を受け易く、その変更工数の大きさが問題となっている。
【０００３】
ハードウエアの変更には、大きく分けると、制御対象であるセンサやアクチュエータの変更と、制御を行うマイコンの変更の２通りがある。センサやアクチュエータなどの制御対象ハードウエアの変更の場合、その特性や仕様を記載したハードウエアマニュアル等を参照し、目的とする制御動作を実現できるようにソフトウエアを開発する。また、マイコンの変更の場合には、マイコンの仕様を記載したマニュアルを参照しながら変更個所の抽出、変更仕様の決定、変更作業、及び検証を行う必要があり多大な工数を要していた。
【０００４】
ハードウエアの変更に伴うソフトウエアの変更工数を削減するものとして、非特許文献１に開示されているように、情報系の汎用オペレーティングシステム（ＯＳ）であるＵＮＩＸ（登録商標）がある。ここでは、制御対象ハードウエアとのインターフェースをブロック型、メッセージチャネル型、及びキャラクタ型の３種類に標準化し、全ての入出力プログラムは、上記３種類のうちいずれかの仮想インターフェースを介する。これにより、ソフトウエアは、アプリケーション、仮想ドライバ、実ドライバプログラムの三階層構成となり、アプリケーションプログラム側は対象ハードウエア変更を意識することなく開発できる。
【０００５】
また、特許文献１には、デバイスドライバを三階層化することによりデバイスの変更に伴なうプログラムの変更を局所化している。
【０００６】
他方、非特許文献２によれば、デバイスドライバを上位ドライバと下位ドライバに分割して作成し、上位ドライバでは下位ドライバのインターフェースを用いて処理を行うことで、マイコンやハードウエアの変更の影響を受けない構成としている。
【０００７】
さらに、インターフェースを介した処理を高速化する手法として、マクロにより展開する手法が知られており、特許文献２に開示されているように、インターフェースを介した処理呼び出しをマクロ置換により高速化している。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】Ｓ．Ｊ．Ｌｅｆｆｌｅｒ他著  中村明他訳「ＵＮＩＸ  ４．３  ＢＳＤの設計と実装」丸善株式会社（１９９１）
【非特許文献２】μＩＴＲＯＮ４．０仕様研究会著「デバイスドライバ設計ガイドライン」μＩＴＲＯＮ４．０仕様研究会（１９９９）
【特許文献】
【０００９】
【特許文献１】特開２０００−９７１０２号公報
【特許文献２】特開２００２−２８７９８１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、一般に用いられるＣ言語等のマクロ処理を行うプリプロセッサは、逐次処理による文字列置換処理であることから、複数の階層から構成される処理を高速化することが不可能である。このため、これらの従来技術では、階層を経るたびに発生する処理のオーバーヘッドを抑制することができない。例えば、三階層で構成されたデバイスドライバの場合、一つの入出力処理を行うために、三つの階層の呼び出し処理を行うプログラムとなり、プログラムの実行時間の遅延とサイズの増大とを招く。自動車などの制御に好適なリアルタイム制御を実現するためには、演算、入出力処理などの各処理を最適なタイミングで行う必要があり、数マイクロ秒の遅延も許されない場合も多い。階層型ソフトウエアを通常の実装方法で実装した場合、それぞれの階層間で関数呼び出しやシステムコール呼び出しが生じ、これらは無視できない遅延となる。また、これらはマイコン上のコンパイラなどを用いて機械語命令に変換すると、１〜８命令からなる呼び出し処理に変換され、数マイクロ秒から数十マイクロ秒の実行時間を要する。また、階層間の接続に対応するデータが、ＲＯＭ、ＲＡＭ、あるいはディスクなどの記憶手段上に必要となり、必要メモリ容量が増大する。
【００１１】
自動車エンジン制御装置などの組み込みシステムは、コストに直接影響のあるＲＯＭ、ＲＡＭ容量の削減要求や、リアルタイム制御であることから応答速度に対する要求も厳しいため、これらのオーバーヘッドは実用上の大きな障害となる。
【００１２】
本発明の目的は、ハードウエアや制御方法の変更時におけるソフトウエアの変更工数を削減し、アプリケーションの実行速度と、記憶装置の必要容量を削減することである。
【課題を解決するための手段】
【００１３】
本発明はその一面において、自動車の制御を行うアプリケーションと、前記アプリケーションの要求を受け付けてマイクロコンピュータを制御する、複数の階層に階層化されたデバイスドライバとを有する自動車用制御装置のソフトウエアを、計算機を用いて作成するためのソフトウエア作成方法において、
前記計算機は、前記デバイスドライバのソースコードと、
前記デバイスドライバの各階層の変数名または前記マイクロコンピュータの入出力信号名を表す識別子の階層間の対応関係を、前記自動車用制御装置の仕様に基づいてソースコードで記述された階層構成記述部と、
呼び出し処理を表す文字列によりある識別子を他の識別子に置換して同一のものであるとコンパイラに認識させる連結処理がソースコードで記述された識別子展開部と、
を記憶手段から読み出し、
前記階層構成記述部に記述された対応関係に基づいて、前記識別子展開部に記述された連結処理により異なる層の対応する識別子を同一の識別子に置換して、階層化された前記デバイスドライバのソースコードを１つの階層のソースコードにマクロ展開し、
マクロ展開された前記デバイスドライバのソースコードと、
前記アプリケーションのソースコードとから、
コンパイラを用いて、前記デバイスドライバと前記アプリケーションそれぞれのオブジェクト形式ファイルを作成し、
前記オブジェクト形式ファイルをリンカによってリンクして前記ソフトウエアを作成することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、複数階層で設計したソフトウエアをコンパイルした結果として、一つの階層のみのソフトウエアとすることにより、階層間オーバーヘッドのないソフトウエアを得ることができる。
【００１５】
本発明によるその他の目的と特徴は、以下に述べる実施例の説明で明らかにする。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施例によるデバイスドライバ開発時におけるデバイスドライバとアプリケーション及びハードウエアの構成図。
【図２】本発明の一実施例の対象とする自動車エンジン制御システムの構成図。
【図３】図１における処理記述部の上位層（Ｌ１）内の具体例の詳細図。
【図４】図１における処理記述部の下位層（Ｌ２）内の具体例の詳細図。
【図５】図１のデバイスドライバ中の階層構成記述部の詳細図。
【図６】図１のデバイスドライバ中の識別子展開部の詳細図。
【図７】本発明の一実施例による開発手順図。
【図８】本発明の一実施例により階層間オーバーヘッドの無いソースコードの一例図。
【図９】本発明の一実施例によるデバイスドライバ作成方法の開発環境及び開発手順図。
【図１０】本発明の一実施例による入出力端子一覧表の一例を示す図。
【発明を実施するための形態】
【００１７】
以下、本発明の実施例を図面を参照して説明する。
【００１８】
図１は、本発明の一実施例によるデバイスドライバ開発時におけるデバイスドライバとアプリケーション及びハードウエアの構成図である。ここでは、各種センサから得られた入力を、マイコン１３０の入出力ポート１３１〜１３３をもとに、吸入空気量演算と、吸気温度演算を実行するデバイスドライバ１２０の例を示している。その詳細に入る前に、制御対象とする自動車エンジン制御システムの概要から先に説明する。
【００１９】
図２は、本発明の一実施例の対象とする自動車エンジン制御システムの構成図である。コントロールユニット２００は、ＣＰＵ２０１、割込みコントローラ２０２、タイマ・パルスコントローラ２０３、ＡＤ変換器２０４、ＲＯＭ２０５、ＲＡＭ２０６を備えている。これらは、バス２０７で結ばれ、入出力ポート２０８から外部とアクセスする。これらの各要素２０２〜２０８は、一つの素子上に内蔵する場合と、別素子を用いて接続する場合がある。２１０は、コントロールユニット２００の電源部である。
【００２０】
コントロールユニット２００には、入出力ポート２０８を介して、その制御対象であるセンサ・アクチュエータ２２０が接続されている。センサ・アクチュエータ２２０は、エアフローセンサ２２１、電制スロットル２２２、インジェクタ２２３、点火プラグ２２４、ＬＡＦセンサ等の空燃比センサ２２５、及びクランク角センサ２２６等からなり、コントロールユニット２００がこれらの制御を行う。すなわち、ＣＰＵ２０１をはじめとする構成要素から、入出力ポート２０８内のレジスタへの読み書きにより、制御が行われる。制御の方法を記述したソフトウエアは、コントロールユニット２００内のＲＯＭ２０５及びＲＡＭ２０６に書き込まれる。
【００２１】
本実施例は、このソフトウエアにおいて、例えば、ハードに変更が生じた場合などにも、このソフトウエアの変更が容易で、かつ、アプリケーションの実行速度が速く、メモリ容量も節約できるソフトウエアの作成方法に関する。
【００２２】
図２のコントロールユニット２００が実行するソフトウエアの構成を、図１に戻って説明する。ソフトウエアは、大きく分けて、アプリケーションプログラム１００、オペレーティングシステム（ＯＳ）１１０、デバイスドライバ１２０の３つに分類される。アプリケーションプログラム１００は、アプリケーションプログラムインターフェース（ＡＰＩ）１４０を通して、ＯＳ１１０やデバイスドライバ１２０と情報や処理の受け渡しを行う。接続されるハードウエアの如何によらず、ＡＰＩ１４０を標準化することにより、ハードウエアが変更されても、その影響がアプリケーションプログラム１００へ及ぶことを避けることができる。ＯＳ１１０、デバイスドライバ１２０は、マイコン１３０の入出力ポート１３１〜１３３等のハードウエアインターフェース（ＨＷＩ）１５０を通して、これらの制御を行う。
【００２３】
ここでは、マイコン１３０の入出力ポート１３１〜１３３を通してセンサから得られた入力に基いて、吸入空気量演算１２１及び吸気温度演算１２２を実行するデバイスドライバ１２０の例を示している。デバイスドライバ１２０は、アプリケーションプログラム１００の噴射制御１０１や点火制御１０２等から、ＡＰＩ１４０を通じて要求を受け付ける。その制御対象は、ＣＰＵ１３０であり、ＨＷＩ１５０を経て、アナログ入出力ポート１３１〜１３３等を読み書きすることにより、目的とする制御を行う。
【００２４】
デバイスドライバ１２０の開発時には、上位層（Ｌ１）１６０、下位層（Ｌ２）１７０のように、階層化することにより変更点の局所化を行う。この階層数は特に限定はなく、制御対象やソフトウエアの規模に応じて適切な階層数で実現できる。ここでは、２階層の場合について説明する。
【００２５】
処理記述部１８０において、上位層（Ｌ１）１６０には、吸入空気量演算１２１や吸気温度演算１２２等、アプリケーション１００が必要とする入力値を求めるモジュールを設ける。また、下位層（Ｌ２）１７０には、入力値を取り込んで汎用的な入力処理を行うモジュールを設け、処理内容を記述する。ここでは、１次フィルタアナログ入力（ＦＡＩ）１７１と、Ｖｃｃ補正アナログ入力（ＶＡＩ）１７２を示している。階層構成記述部１９１には、どの上位層がどの下位層を用いるかという階層間の具体的な構成を記述する。識別子展開部１９２を用いて、階層構成記述部１９１で定めた階層構成を、処理記述部１８０に対応させ、所望の出力を得る。
【００２６】
図３及び図４は、図１の処理記述部１８０の上位層（Ｌ１）１６０及び下位層（Ｌ２）１７０内の具体例の詳細図であり、これらについて説明する。
【００２７】
図３は、図１における上位層（Ｌ１）１６０の吸入空気量演算（ＩＡＡ）１２１の詳細図である。
【００２８】
図３（Ａ）は処理の概略を示すものである。図示するように、吸入空気量演算モジュールには、、処理名１の吸入空気量更新処理と、処理名２の吸入空気量取得処理を有し、かつ、この演算のために必要な入力処理として、Ｖｃｃ補正アナログ入力があることを示している。図３（Ｂ）は、上記吸入空気量更新処理の概略を示すフローチャート、図３（Ｃ）は、同じく吸入空気量取得処理の概略を示すフローチャートである。図３（Ｄ）は、図３（Ａ），（Ｂ），及び（Ｃ）を実装したプログラムコードの例である。
【００２９】
図３（Ｂ）の吸入空気量演算処理では、まず、ステップ３０１において、下位層Ｌ２におけるＶｃｃ補正アナログ入力（ＶＡＩ）により入力値の更新を行い、次に、ステップ３０２において、更新した値を取得する。ステップ３０３では、取得した値をもとに、エアフローセンサの特性を補正するためのマップにより補正を行い、ステップ３０４では、前記補正によって得られた値をバッファへ保持する。
【００３０】
また、図３（Ｃ）の吸入空気量取得の処理は、ステップ３０５において、上記バッファの値を返すことによって実現する。
【００３１】
図３（Ｄ）は、これらの処理を、Ｃ言語のマクロを用いて記述したプログラムソースの例である。マクロ記述は、他モジュールの呼び出しを「Ｌｎ＿Ｐｒｏｃ（＿Ｌｎ（ＩＤ））」と記述し、データの参照を「Ｌｓ＿（ＩＤ）」と記述する。但し、Ｌｎは呼び出すモジュールの層名称、Ｐｒｏｃは呼び出す処理名、ＩＤは自モジュール名、Ｌｓは自モジュールの層名称である。
【００３２】
図４は、図１における下位層（Ｌ２）１７０の要素であるＶｃｃ補正アナログ入力（ＶＡＩ）１７２のの詳細図である。
【００３３】
図４（Ａ）は処理の概要を示すものである。図示するように、Ｖｃｃ補正アナログ入力モジュールには、処理名１のＶｃｃ補正アナログ入力値更新処理と、処理名２のＶｃｃ補正アナログ入力値取得処理を有し、かつ、この処理のために必要な入力種別として、マイコンポートからの入力があることを示している。図４（Ｂ）は、Ｖｃｃ補正アナログ入力値更新処理のフローチャート、図４（Ｃ）は、同じくＶｃｃ補正アナログ入力値取得処理のフローチャートである。図４（Ｄ）は、これら図４（Ａ），（Ｂ），及び（Ｃ）を実装したソースコードの例である。
【００３４】
図４（Ｂ）のＶｃｃ補正アナログ入力値更新処理では、まず、ステップ４０１において、ハードウエアインターフェース（ＨＷＩ）１５０を介して、マイコンポートからＶｃｃを入力する。次に、ステップ４０２において、Ｖｃｃ補正係数を乗算し、更新値を得る。ステップ４０３では、取得した更新値をバッファへ保持する。
【００３５】
また、図４（Ｃ）のＶｃｃ補正アナログ入力値所得の処理は、ステップ４０４において、上記バッファの値を返すことによって実現する。
【００３６】
図４（Ｄ）は、これらの処理を、Ｃ言語のマクロを用いて記述したプログラムソースの例である。マクロ記述は、図３（Ｄ）と同一要領である。
【００３７】
図５は、図１のデバイスドライバ１２０中の階層構成記述部１９１の詳細図である。
【００３８】
図５（Ａ）は、構成の概要を示すものである。それぞれの処理モジュールのラベル名ＩＡＴ，ＩＡＡ，ＶＡＩ，及びＦＡＩと、これらの下位に属する処理モジュールのラベル名が、ＦＡＩ，ＶＡＩ，ＡＮ１，及びＡＮ２であることを示している。すなわち、吸気温度演算（ＩＡＴ）１２２の下位モジュールが１次フィルタアナログ入力１７１であり、そのラベルがＦＡＩ、吸入空気量演算（ＩＡＡ）１２１の下位モジュールがＶｃｃ補正アナログ入力１７２であり、そのラベルがＶＡＩである。また、１次フィルタアナログ入力１７１、すなわちラベルＦＡＩの対応ハードウエアが、アナログ入出力ポートでありラベルがＡＮ２、Ｖｃｃ補正アナログ入力１７２、すなわちラベルＶＡＩの対応ハードウエアが、アナログ入出力ポートでありラベルがＡＮ１であることを示している。
【００３９】
図５（Ｂ）は、図５（Ａ）の階層構成を基に実装した階層構成記述部１９１のソースコードである。このソースコードは、マクロを用いて記述し、「＃ｄｅｆｉｎｅ  ＩＤ＿Ｌｎ  ＩＤｎ」あるいは「＃ｄｅｆｉｎｅ  ＩＤ＿ＡＤＤＲ  ｘｘｘｘ」の形式である。ここで、ＩＤはデバイスドライバモジュールの識別子（ラベル）、ＩＤｎは当該モジュールと関連する他のモジュールの識別子（ラベル）、＿ＡＤＤＲはマイコンのポートを示す識別子（ラベル）でありｘｘｘはポート名を示す。
【００４０】
図６は、図１のデバイスドライバ１２０中の識別子展開部１９２の詳細図である。識別子展開部は「＃ｄｅｆｉｎｅ  ＿Ｌｎ（ｌｙ）  ｌｙ＃＃＿Ｌｎ」、「＃ｄｅｆｉｎｅ  ＿ＡＤＤＲ（ｌｙ）  ｌｙ＃＃＿ＡＤＤＲ」、「＃ｄｅｆｉｎｅ  Ｌｎ＿（ｌｙ）  Ｌｎ＿＃＃ｌｙ」の形式である。ここで、Ｌｎは上位下位層の名称、ＡＤＤＲはマイコンのポートを示す任意の識別子を示すものであり、その他は、前述と同じである。これらはＣ言語の識別子連結機能「＃＃」を用い、他の層のラベルと置換することにより、層間のマクロ展開を実現するものである。
【００４１】
図７は、以上で説明した処理記述部、階層構成記述部、及び識別子展開部を用いた開発手順図である。前記のように作成したデバイスドライバプログラムソースコード７１の階層構成記述部７１１、識別子展開部７１２、処理記述部７１３を、ビルド７２を通して、デバイスドライバオブジェクトファイル７３を得る。すなわち、プリプロセッサ７２１、コンパイラ７２２を用いて、機械語コードに変換すると、デバイスドライバのオブジェクトファイル７３が出力される。このオブジェクトファイル７３では、階層化して構築した処理記述部が、プリプロセッサ７２１によって一つの層に展開されるため、階層間のオーバーヘッドが除去される。
【００４２】
図８は、本発明の一実施例により階層間のオーバーヘッドが除去されたソースコードの一例図である。呼び出し側のソースコードが図８（Ａ）であり、これをプリプロセッサ７２１によって展開した後のコードが図８（Ｂ）である。プリプロセッサ７２１によるマクロ展開により、図３（Ｂ）のステップ３０１，３０２、並びに図４（Ｂ）のステップ４０１の階層間の呼び出し処理が１層内に展開されている。このため、他階層呼び出し処理に伴う引数や、スタックポインタの退避処理が不要となり、処理の高速化とコードサイズの削減を実現できる。
【００４３】
図８（Ｃ）は、従来の手法による機械語コードであり、図８（Ｄ）が、本発明の一実施例による削減分の例である。すなわち、図３（Ｂ）のステップ３０１の呼び出しを行う機械語コードが図８（Ｃ）に破線枠で囲った８１であり、ひとつの階層間呼び出しにつき、８１の分が削減できる。
【００４４】
図９は、本発明の一実施例によるデバイスドライバ作成方法を実現するための開発環境及び開発手順図である。作成済みのデバイスドライバ１２０である識別子展開部１９２と処理記述部１８０を、ステップ９０１にて登録する。これを保存するデバイスドライバリポジトリ９０２から、ステップ９０３にて、必要な識別子展開部１９２と処理記述部１８０を取得する。他方、ハードウエア設計の結果得られる制御装置仕様９０４のうち、マイコンのポートとデバイスの対応を記述した入出力端子一覧表９０５を入力し、階層構成生成装置９０６を用いて、ステップ９０７にて階層構成記述部９０８を取得する。このようにして得られた階層構成記述部９０８、識別子展開部９０９、及び処理記述部９１０を、プリプロセッサ９１１により、ステップ９１２にてマクロ展開を行う。これにより、階層を用いて記述された処理記述部９１０から、識別子展開部９０９と階層構成記述部９０８に基いて階層構造を展開された処理記述部９１３を得ることができる。ここで得られた展開された処理記述部９１３は、階層構造をもたず、ただひとつの階層からなり、階層間の処理オーバーヘッドが削減されている。次に、コンパイラ９１４を用いたコンパイルステップ９１５で、デバイスドライバオブジェクト形式ファイル９１６を得る。このドライバオブジェクト形式ファイル９１６は、アプリケーションソースコード９１７をコンパイルして得られたアプリケーションオブジェクト形式ファイル９１８とともにリンカ９１９を用いて、ステップ９２０でリンクされ、制御ソフトウエア９２１が得られる。
【００４５】
図１０は、入出力端子一覧表９０５の一例を示す図である。入出力端子一覧表９０５は、ハードウエアデバイスとコントロールユニットの端子の対応を示すものである。これを用い、上位層（Ｌ１）１６０をハードウエアデバイスに対応する層とし、下位層をハードウエアポート１３１〜１３３に対応する層とすると、図１０は図５（Ａ）に対応する。階層構成生成装置９０６は、これを基に、図５（Ｂ）を出力するものである。階層構成生成装置９０６を用いることにより、ハードウエア設計結果である入出力端子一覧表９０５から階層構成記述部９０８を、計算機を用いて自動生成可能となり、生産性を向上できる。階層構成生成装置９０６、デバイスドライバリポジトリ９０２、コンパイラ９１４としては、キーボード、マウス、ネットワークなどの入力手段と、ＣＲＴなどの表示手段、ハードディスクなどの記憶手段を備えた計算機を用いることで実現できる。
【産業上の利用可能性】
【００４６】
本発明によるマイクロコンピュータのソフトウエアの作成方法や作成システムは、処理の迅速性と高信頼性が要求され、しかも、ハードウエアの変更頻度も激しい自動車のエンジン制御装置の電子制御ユニットに適用することによって、開発者の負担を大きく低減でき、高い利用可能性が期待される。
【符号の説明】
【００４７】
１００…アプリケーションプログラム、１０１…噴射制御アプリケーション、１０２…点火制御アプリケーション、１１０…オペレーティングシステム、１２０…デバイスドライバ、１２１…吸入空気量演算（ＩＡＡ）、１２２…吸気温度演算（ＩＡＴ）、１３０，２０１…マイコン（ＣＰＵ）、１３１〜１３３，２０３…入出力ポート、１４０…アプリケーションプログラムインターフェース（ＡＰＩ）、１５０…ハードウエアインターフェース（ＨＷＩ）、１６０…上位層（Ｌ１）、１７０…下位層（Ｌ２）、１７１…１次フィルタアナログ入力（ＦＡＩ）、１７２…Ｖｃｃ補正アナログ入力（ＶＡＩ）、１８０…識別子展開部、１９１…階層構成記述部、１９２…識別子展開部、２００…コントロールユニット、２２０…センサ・アクチュエータ、７１…デバイスドライバプログラムソースコード、７２…ビルド、７３…デバイスドライバオブジェクトファイル、９０２…デバイスドライバリポジトリ、９０５…入出力端子一覧表、９０６…階層構成生成装置、９１１…プリプロセッサ、９１３…展開された処理記述部、９１４…コンパイラ、９１６…デバイスドライバオブジェクト形式ファイル、９１７…アプリケーションソースコード、９１８…アプリケーションオブジェクト形式ファイル、９１９…リンカ、９２１…制御ソフトウエア。
【図１】
2011238297.tif 000003
【図２】
2011238297.tif 000004
【図３】
2011238297.tif 000005
【図４】
2011238297.tif 000006
【図５】
2011238297.tif 000007
【図６】
2011238297.tif 000008
【図７】
2011238297.tif 000009
【図８】
2011238297.tif 000010
【図９】
2011238297.tif 000011
【図１０】
2011238297.tif 000012