(57)【特許請求の範囲】
【請求項１】
車両を制御する動作を記述した第１プログラムと、前記車両を制御する動作のうち前記第１プログラムが記述しているものよりも安全度水準が低い動作を記述した第２プログラムとを記憶する記憶部、
前記第１プログラムと前記第２プログラムを実行するプロセッサ、
前記プロセッサが前記第１プログラムを実行するときの優先度と前記プロセッサが前記第２プログラムを実行するときの優先度を制御する優先度制御部、
前記プロセッサによって実行されることを待機しているジョブの一覧を記述した実行待ジョブリスト、
を備え、
前記プロセッサは、前記第１プログラムが記述している処理を実行するときは、前記第２プログラムが記述している処理を実行するときよりも優先度が高い動作モードに遷移する割込処理を実施するように構成されており、
前記実行待ジョブリストは、前記プロセッサが実行すべき優先度が高い順に前記ジョブの一覧を記述しており、
前記優先度制御部は、前記第２プログラムから前記第１プログラムを呼び出す要求を前記第２プログラムから受け取り、前記第２プログラムから前記第１プログラムを呼び出すときに前記第２プログラムが指定した優先度に対応する前記実行待ジョブリスト内の位置に、前記第１プログラムを呼び出すジョブを挿入し、
前記プロセッサは、前記実行待ジョブリストが記述している優先度順にしたがって、前記ジョブの一覧内に含まれるジョブを実行する
ことを特徴とする車両制御装置。
【請求項２】
前記車両制御装置は、
前記第２プログラムから前記第１プログラムを呼び出す要求が正当であるか否かを検査する正当性検査部、
前記第２プログラムが前記第１プログラムを呼び出すときに指定すべき認証コードを保持する認証コードテーブル、
を備え、
前記第２プログラムは、前記第１プログラムを呼び出すとき前記認証コードを併せて指定するように構成されており、
前記正当性検査部は、前記第２プログラムが前記第１プログラムを呼び出すとき指定する認証コードと前記認証コードテーブル内に保持されている認証コードを比較することにより、前記第２プログラムから前記第１プログラムを呼び出す要求が正当であるか否かを検査し、正当な要求である場合は呼び出しを許可し、不正な要求である場合は呼び出しを拒否する
ことを特徴とする請求項１記載の車両制御装置。
【請求項３】
前記車両制御装置は、
前記プロセッサが実行するジョブの割込制御を実施する割込制御部、
前記割込制御部からの指示にしたがって前記プロセッサが割込実行すべきジョブの識別子を格納する割込レジスタ、
を備え、
前記優先度制御部は、前記実行待ジョブリストが記述している優先度順にしたがって、前記ジョブの一覧内に含まれるジョブの識別子を前記割込レジスタ内に格納し、
前記割込制御部は、前記割込レジスタ内に格納されている前記ジョブが前記第１プログラムを実行するジョブである場合は、前記ジョブの識別子に対応するジョブを実行するように、前記プロセッサに対して割込命令を出力し、
前記プロセッサは、前記割込制御部が出力した前記割込命令にしたがってジョブを実行することにより、前記実行待ジョブリストが記述している優先度順にしたがって、前記ジョブの一覧内に含まれるジョブを実行する
ことを特徴とする請求項２記載の車両制御装置。
【請求項４】
前記車両制御装置は、前記プロセッサが実行するジョブの割込制御を実施する割込制御部を備え、
前記優先度制御部は、前記実行待ジョブリストが記述しているジョブが前記第１プログラムを実行するジョブである場合は、前記実行待ジョブリストが記述している優先度順にしたがって、前記ジョブの一覧内に含まれるジョブを割込起動するように前記割込制御部に対して要求し、
前記割込制御部は、前記優先度制御部から指定された前記ジョブの識別子に対応するジョブを実行するように、前記プロセッサに対して割込命令を出力し、
前記プロセッサは、前記割込制御部が出力した前記割込命令にしたがってジョブを実行することにより、前記実行待ジョブリストが記述している優先度順にしたがって、前記ジョブの一覧内に含まれるジョブを実行する
ことを特徴とする請求項２記載の車両制御装置。
【請求項５】
前記車両制御装置は、前記正当性検査部による検査結果を保持する結果保持部を備え、
前記結果保持部は、前記検査結果とともに前記検査結果の時系列を示す情報を保持する
ことを特徴とする請求項２記載の車両制御装置。
【請求項６】
前記車両制御装置は、前記第２プログラムから前記優先度制御部を介さずに前記第１プログラムを呼び出す要求が発生したとき、その旨を検出してその要求内容を記述したログを保存するメモリ保護部を備える
ことを特徴とする請求項１記載の車両制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両制御装置に関する。
【背景技術】
【０００２】
自動車のエンジン制御などを実施する車両制御装置として、マイクロコントローラ（マイコン）を搭載したＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）が用いられている。マイコンに搭載されるソフトウェアは、一般的には制御処理を記述したアプリケーションプログラム、入出力処理を記述したデバイスドライバ、オペレーティングシステム（ＯＳ）などによって構成されている。
【０００３】
車両制御装置は、車両乗員の安全性に直接関係する制御を実施するため、高い安全性が要求されている。近年における制御の高度化と規模の増大にともない、高い安全性を満足する車両制御装置を実装するため、大きな開発工数を要することが課題となっている。そこで、車両制御装置の全開発要素を高い安全度水準に対応した開発プロセスに準じて開発するのではなく、高い安全性が求められる部分については高い安全度水準に対応した開発プロセスに準じて開発し、その他の部分については通常の開発プロセスなどに準じて開発することが考えられる。これにより、高い安全性と開発工数の抑制を両立させることができる。このような手法は、安全度の分離（Ｄｅｃｏｍｐｏｓｉｔｉｏｎ）と呼ばれている（非特許文献１）。
【０００４】
開発工程における安全度の分離に加えて、安全度水準が異なるソフトウェアが相互に干渉しないようにして同一のマイコン上に搭載することができれば、高い安全度水準を維持したままＥＣＵの実装コストを最適化することができると考えられる。特に、各ソフトウェアがアクセスするメモリ領域が互いに干渉しないようにする技術は、メモリ保護と呼ばれている。
【０００５】
メモリ保護は通常、マイコン内のメモリ領域に対してアクセスするためのアドレスバスを監視する、ＭＰＵ（Ｍｅｍｏｒｙ  Ｐｒｏｔｅｃｔｉｏｎ  Ｕｎｉｔ）と呼ばれる専用のハードウェアによって実現される。ＭＰＵを用いてメモリ保護を実施するマイコンは異なる動作モードを持ち、それぞれの動作モードをそれぞれの安全度水準に対応させる。典型的には、ＭＰＵを用いてメモリを保護するマイコンは動作モードとしてユーザモードと特権モードを持ち、ユーザモードに低安全ソフトウェア（要求される安全性が低い）を対応させ、特権モードに高安全ソフトウェア（要求される安全性が高い）を対応させる。
【０００６】
動作モードを切り替える際には、現在の動作モードを示す値を格納する権限設定レジスタを書き換える。ユーザモードから特権モードへ遷移する際には、ユーザモードで動作している低安全ソフトウェアが権限設定レジスタを書き換えることが禁止されるのが一般的である。これは、ユーザモードで動作している低安全ソフトウェアの不具合などによって不測の動作が高安全ソフトウェア側に伝搬することを防ぐことを目的としている。そこでユーザモードから特権モードへ遷移する際には、割込制御装置を経由して所定の割込処理を発生させることにより、特権モードへ遷移する。
【０００７】
下記特許文献１は、安全関連アプリケーションと非安全管理アプリケーションを同一のハードウェア上に搭載し、ユーザモードと特権モードを切り替えながら各アプリケーションを実行する構成例を記載している。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１２−２４７９７８号公報
【非特許文献】
【０００９】
【非特許文献１】ＩＳＯ２６２６２  Ｆｕｎｃｔｉｏｎａｌ  Ｓａｆｅｔｙ：Ａｕｔｏｍｏｔｉｖｅ  Ｒｏａｄ  Ｖｅｈｉｃｌｅ
【発明の概要】
【発明が解決しようとする課題】
【００１０】
車両の制御演算は車両動作に合わせて最適なタイミングで実施する必要があり、各制御パラメータを算出するのに適した実行周期がある。一般的には、実行周期が短いジョブほど実行優先度を高く設定し、実行周期が長いジョブほど優先度を低く設定する。他方、上述のような割込制御はマイコン内に搭載された割込コントローラによって管理される。割込コントローラは、割込要因に対応する割込処理を起動する。割込処理は上記実行周期毎の処理とは別に起動されるため、割込処理によって実行周期毎の処理が遅延しないように割込処理の優先度を適切に設定する必要がある。
【００１１】
マイコンの動作モードがユーザモードと特権モードの間で遷移するとき、上述のように割込処理が発生する。この割込処理には、割込処理を要求したソフトウェアの安全度とは別に一律に同一の優先度が付与される。したがって、各割込処理は発生した順序で実行されることになる。
【００１２】
しかし実際には、割込処理を要求するソフトウェアの安全度は様々である。例えば低安全ソフトウェアから高安全ソフトウェア上の機能を呼び出すための割込処理は、低安全ソフトウェアと同程度の優先度であると考えられるが、この割込処理が先に実行されることにより後続の優先度が高い処理が待機させられる可能性がある。この現象は優先度逆転と呼ばれており、所定の実行周期以内に処理が完了しない原因となる。
【００１３】
本発明は、上記のような課題に鑑みてなされたものであり、安全度水準が異なる複数の制御ソフトウェアを実行する車両制御装置において、安全度水準に応じた適切な実行優先度で制御ソフトウェアを実行して優先度逆転を抑制することを目的とする。
【課題を解決するための手段】
【００１４】
本発明に係る車両制御装置は、プロセッサによって実行されることを待機しているジョブ一覧を保持する実行待ジョブリストを備え、低安全ソフトウェアから高安全ソフトウェアを呼び出す要求は、低安全ソフトウェアの実行優先度に応じた実行待ジョブリスト内の位置に挿入される。
【発明の効果】
【００１５】
本発明に係る車両制御装置によれば、低安全ソフトウェアから高安全ソフトウェアを呼び出す要求を実行待ジョブリスト内にいったん格納することにより、割込要求に起因する優先度逆転を抑制することができる。
【図面の簡単な説明】
【００１６】
【図１】実施形態１に係る車両制御装置１００の機能ブロック図である。
【図２】演算装置１１２が実行する制御ソフトウェア１５０の構成図である。
【図３】低安全プログラム１５６が高安全プログラム１５１を呼び出す際に実施するＡＰＩ関数３００を例示する図である。
【図４】優先度制御部１５３２が管理する実行待ジョブリスト４００の構成図である。
【図５】低安全プログラム１５６から高安全プログラム１５１内の関数を呼び出す要求が発生したときの動作を説明するフローチャートである。
【図６】割込処理を実施する処理を説明するフローチャートである。
【発明を実施するための形態】
【００１７】
＜実施の形態１＞
図１は、本発明の実施形態１に係る車両制御装置１００の機能ブロック図である。車両制御装置１００は、マイクロコントローラ（マイコン）１１０、信号入力回路１２０、駆動回路１３０、通信回路１４０を備える。信号入力回路１２０は、センサ２１０による計測結果を受け取り、マイコン１１０に出力する。マイコン１１０は、受け取った計測結果を用いて制御演算を実施し、その結果に基づき駆動回路１３０を介してアクチュエータ２２０を駆動する。マイコン１１０は、通信回路１４０を介して制御装置２３０から受信した信号に基づき制御演算を実施する場合もある。
【００１８】
マイコン１１０は、入力回路１１１、演算装置１１２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１３、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１１４、割込制御装置１１５、メモリ保護装置１１６、出力回路１１７、通信制御装置１１８を備える。演算装置１１２は、制御プログラムが規定している制御演算を実行する。ＲＡＭ１１３は演算装置１１２が一時的に使用するデータなどを格納する。ＲＯＭ１１４は、後述の図２で説明する制御プログラムを格納する。割込制御装置１１５については後述する。メモリ保護装置１１６は、メモリ領域を保護するＭＰＵである。
【００１９】
図２は、演算装置１１２が実行する制御ソフトウェア１５０の構成図である。制御ソフトウェア１５０はＲＯＭ１１４内に格納されており、必要に応じてＲＡＭ１１３内に読み込まれる。制御ソフトウェア１５０は、高安全プログラム１５１、正当性検査部１５２、処理要求管理部１５３、権限制御部１５４、結果保持部１５５、低安全プログラム１５６を有する。処理要求管理部１５３はさらに、優先度判定部１５３１、優先度制御部１５３２を有する。
【００２０】
高安全プログラム１５１は、高い安全度水準が要求されるプログラムであり、例えば車両が正常状態にあることを監視して正常状態から逸脱した場合には車両動作を安全状態へ遷移させるプログラムなどがこれに相当する。マイコン１１０は、高安全プログラム１５１を実行する際には、特権モードに遷移する。低安全プログラム１５６は、高安全プログラム１５１よりも低い安全度水準が要求されるプログラムであり、例えば制御演算そのものを実施するプログラムなどがこれに相当する。低安全プログラム１５６は高安全プログラム１５１が備えている機能を呼び出すことができるが、必ず処理要求管理部１５３を経由する必要がある。詳細は後述する。
【００２１】
正当性検査部１５２は、低安全プログラム１５６から高安全プログラム１５１を呼び出す要求が正当であるか否かを検査する。処理要求管理部１５３は、低安全プログラム１５６から高安全プログラム１５１を呼び出す要求を受け付けるインターフェースである。優先度判定部１５３１と優先度制御部１５３２については後述する。権限制御部１５４は、低安全プログラム１５６から高安全プログラム１５１を呼び出す割込処理を実施するように割込制御装置１１５に対して依頼する。結果保持部１５５は、割込処理の実施結果を保持する。
【００２２】
制御ソフトウェア１５０は、１つのプログラムとして構成することもできるし、図２に示す各部を個別のプログラムとして構成することもできる。説明の便宜上、高安全プログラム１５１と低安全プログラム１５６はそれぞれ１つずつ示したが、これらの個数は任意である。
【００２３】
割込制御装置１１５は、割込レジスタ１１５１内に格納されている処理ＩＤに対応するジョブを実行する割込処理を発生させる。演算装置１１２は、その割込処理にしたがって当該ジョブを割込実行する。
【００２４】
以下においては、記載の便宜上、制御ソフトウェア１５０内の各部を動作主体として説明する場合があるが、実際にこれら制御ソフトウェア１５０内の各部を実行するのは演算装置１１２であることを付言しておく。
【００２５】
図３は、低安全プログラム１５６が高安全プログラム１５１を呼び出す際に実施するＡＰＩ関数３００を例示する図である。処理要求管理部１５３は、図３に例示するようなＡＰＩ関数３００を提供し、低安全プログラム１５６はＡＰＩ関数３００を用いて、高安全プログラム１５１を呼び出す要求を処理要求管理部１５３に対して発行する。低安全プログラム１５６から高安全プログラム１５１を呼び出すためには、マイコン１１０が特権モードに遷移する必要があるので、モード遷移のための割込処理が発生する。
【００２６】
処理ＩＤ３０１は、呼び出そうとしている高安全プログラム１５１内の関数の識別子である。認証コード３０２は、当該要求が正当であることを示すための認証情報である。詳細は後述する。実行優先度３０３は、呼び出そうとしている高安全プログラム１５１内の関数を実行するときの優先度を指定する値である。引数３０４は、呼び出そうとしている高安全プログラム１５１内の関数に対して指定する引数である。
【００２７】
正当性検査部１５２は、処理ＩＤ３０１と認証コード３０２の対応関係を記述した認証コードテーブルをあらかじめ保持しており、ＡＰＩ関数３００が指定する処理ＩＤ３０１と認証コード３０２が認証コードテーブル内の記述と合致しているか否かに基づき、当該要求が正当なものであるか否かを認証することができる。
【００２８】
実行優先度３０３は低安全プログラム１５６の実行優先度に応じた値が設定されるが、モード遷移のための割込処理の優先度が実行優先度３０３よりも高いと割込処理のほうが優先されてしまい、先に説明した優先度逆転が生じる。そこで本発明においては、処理要求管理部１５３が割込処理の実行優先度を制御することにより、優先度逆転を抑制する。詳細は後述の図４以降を用いて説明する。
【００２９】
図４は、優先度制御部１５３２が管理する実行待ジョブリスト４００の構成図である。実行待ジョブリスト４００は、優先度制御部１５３２がジョブの実行優先度を制御するために用いるものであり、演算装置１１２によって実行されることを待機しているジョブの一覧を保持する。ここでいうジョブとは、例えば低安全プログラム１５６が呼び出した高安全プログラム１５１内の関数を演算装置１１２が実行する処理である。実行待ジョブリスト４００は、優先度４０３が高い順に整列されている。
【００３０】
先頭ポインタ４０１は、実行待ジョブリスト４００が保持しているジョブ一覧のうち最初に実行すべきジョブを指すポインタである。処理ＩＤ４０２は実行すべきジョブの識別子であり、低安全プログラム１５６から高安全プログラム１５１内の関数を呼び出す場合は処理ＩＤ３０１に相当する。優先度４０３は当該ジョブを実行する際の優先度であり、低安全プログラム１５６から高安全プログラム１５１内の関数を呼び出す場合は実行優先度３０３に相当する。引数４０４は当該ジョブに対して引き渡す引数であり、低安全プログラム１５６から高安全プログラム１５１内の関数を呼び出す場合は引数３０４に相当する。次ポインタ４０５は、実行待ジョブリスト４００内の次要素を指すポインタである。
【００３１】
優先度制御部１５３２は、実行待ジョブリスト４００内に新たなジョブを登録するときは、ジョブ一覧が優先度４０３の値にしたがって降順となる位置にその新規ジョブを登録する。優先度制御部１５３２は、実行待ジョブリスト４００内のジョブを先頭から順に取り出して権限制御部１５４に引き渡す。権限制御部１５４は、受け取ったジョブを割込レジスタ１１５１に格納する。これにより、実行待ジョブリスト４００内のジョブは必ず優先度４０３が高い順に割込実行されるので、割込処理が高い優先度で実施される場合であっても、優先度逆転を抑制することができる。
【００３２】
図５は、低安全プログラム１５６から高安全プログラム１５１内の関数を呼び出す要求が発生したときの動作を説明するフローチャートである。以下、図５の各ステップについて説明する。
【００３３】
（図５：ステップＳ５００）
低安全プログラム１５６は、処理要求管理部１５３に対して、図３で説明したＡＰＩ関数３００を用いて、高安全プログラム１５１内の関数を呼び出す要求を発行する。処理要求管理部１５３がその要求を受け取ると、本フローチャートが開始される。
【００３４】
（図５：ステップＳ５０１）
正当性検査部１５２は、ステップＳ５００において処理要求管理部１５３が受け取った処理ＩＤ３０１が所定の上下限範囲内にあるか否かをチェックする。範囲内にある場合はステップＳ５０３へ進み、範囲内にない場合はステップＳ５０２へ進む。
【００３５】
（図５：ステップＳ５０２）
正当性検査部１５２は、低安全プログラム１５６が発行した要求の処理結果として、処理ＩＤ３０１の範囲が不正であった旨のエラーを設定する。本ステップの後はステップＳ５０８にスキップする。
【００３６】
（図５：ステップＳ５０３）
正当性検査部１５２は、ステップＳ５００において処理要求管理部１５３が受け取った実行優先度３０３が所定の上下限範囲内にあるか否かをチェックする。範囲内にある場合はステップＳ５０５へ進み、範囲内にない場合はステップＳ５０４へ進む。
【００３７】
（図５：ステップＳ５０４）
正当性検査部１５２は、低安全プログラム１５６が発行した要求の処理結果として、実行優先度３０３の範囲が不正であった旨のエラーを設定する。本ステップの後はステップＳ５０８にスキップする。
【００３８】
（図５：ステップＳ５０５）
正当性検査部１５２は、ステップＳ５００において処理要求管理部１５３が受け取った処理ＩＤ３０１／認証コード３０２のペアを認証コードテーブル内の記述と比較することにより、当該要求が正当なものであるか否かをチェックする。認証に成功した場合はステップＳ５０７へ進み、失敗した場合はステップＳ５０６へ進む。
【００３９】
（図５：ステップＳ５０６）
正当性検査部１５２は、低安全プログラム１５６が発行した要求の処理結果として、認証コード３０２が不正であった旨のエラーを設定する。本ステップの後はステップＳ５０８にスキップする。
【００４０】
（図５：ステップＳ５０７）
優先度判定部１５３１は、実行優先度３０３の値に基づき、実行待ジョブリスト４００内において当該要求を挿入すべき位置を決定する。優先度制御部１５３２は、その位置へ当該要求を挿入する。優先度制御部１５３２は、低安全プログラム１５６が発行した要求の処理結果として、正常処理された旨を設定する。
【００４１】
（図５：ステップＳ５０８）
結果保持部１５５は、低安全プログラム１５６が発行した要求の処理結果を保存する。このとき、後にエラー解析などを実施する際の便宜に鑑みて、処理結果のタイムスタンプなどのように時系列を示す情報を併せて保存することもできる。
【００４２】
図６は、割込処理を実施する処理を説明するフローチャートである。以下、図６の各ステップについて説明する。
【００４３】
（図６：ステップＳ６００）
優先度制御部１５３２は、本フローチャートを例えば十分に短い実行周期で実施する。またはステップＳ６０３が完了すると即座に改めて本フローチャートを開始するようにしてもよい。
【００４４】
（図６：ステップＳ６０１〜Ｓ６０２）
優先度制御部１５３２は、実行待ジョブリスト４００内の先頭要素から順にジョブを取り出す（Ｓ６０１）。優先度制御部１５３２は、ステップＳ６０１において取り出したジョブの処理ＩＤ４０２を、割込レジスタ１１５１に格納する（Ｓ６０２）。
【００４５】
（図６：ステップＳ６０３）
権限制御部１５４は、割込レジスタ１１５１内に格納されている処理ＩＤ４０２の値を割込制御装置１１５に引き渡す。割込制御装置１１５は、その処理ＩＤ４０２の値に対応するジョブを割込実行するように、演算装置１１２に対して指示する。演算装置１１２はそのジョブを割込実行する。
【００４６】
（図６：ステップＳ６０３：補足その１）
実行待ジョブリスト４００内に、低安全プログラム１５６から高安全プログラム１５１内の関数を呼び出すジョブが登録されている場合、本ステップにおいてそのジョブは割込実行されることになる。実行待ジョブリスト４００は優先度４０３の順に整列されているので、割込処理自体の優先度が高いとしても、低安全プログラム１５６が指定した実行優先度３０３の値に応じた優先度で当該ジョブを実行することができる。したがって、優先度逆転を抑制することができる。
【００４７】
（図６：ステップＳ６０３：補足その２）
低安全プログラム１５６の不具合などにより、処理要求管理部１５３を経由することなく低安全プログラム１５６から高安全プログラム１５１内の関数が直接呼び出された場合は、メモリ保護装置１１６がその旨を検出し、その要求内容を保存しておく。開発者はその保存された要求内容を解析することにより、不具合の原因などを分析する。
【００４８】
＜実施の形態１：まとめ＞
以上のように、本実施形態１に係る車両制御装置１００は、低安全プログラム１５６から高安全プログラム１５１を呼び出す要求が発生すると、そのジョブを実行待ジョブリスト４００内における実行優先度３０３の値に応じた位置に格納する。割込制御装置１１５は、実行待ジョブリスト４００内に格納されている順序で、演算装置１１２に各ジョブを割込実行させる。これにより、割込制御装置１１５が発生させる割込処理の優先度が高い場合であっても、低安全プログラム１５６が指定した実行優先度３０３に応じた優先度でマイコン１１０を特権モードに遷移させて高安全プログラム１５１を呼び出すことができる。したがって、優先度逆転を抑制することができる。
【００４９】
また、本実施形態１に係る車両制御装置１００は、低安全プログラム１５６から高安全プログラム１５１を呼び出す要求が発生すると、認証コード３０２の値に基づき当該要求が正当なものであるか否かをチェックする。これにより、当該要求が不具合によって発生した不正要求である場合は、これを排除することができる。
【００５０】
＜実施の形態２＞
実施形態１においては、割込実行するジョブの識別子を割込レジスタ１１５１内に格納し、割込制御装置１１５がその値に対応するジョブを割込実行させることを説明した。しかしマイコン１１０によっては割込レジスタ１１５１を利用して任意の処理ＩＤに対応するジョブを起動する機能を備えていない場合もある。この場合は、割込レジスタ１１５１に処理ＩＤを格納することに代えて、割込実行すべき処理ＩＤをプログラム内にハードコードすることもできる。
【００５１】
具体的には、処理要求管理部１５３内に割込実行すべき高安全プログラム１５１内の関数の識別子一覧をあらかじめハードコードしておき、いずれかの関数について低安全プログラム１５６から呼び出す要求が生じた場合は、その関数の識別子に対応する処理ＩＤを割込制御装置１１５に直接引き渡す。これにより、割込レジスタを利用する機能を備えていないマイコン１１０であっても、実施形態１と同様の機能を実現することができる。
【００５２】
ただし本実施形態２においては、高安全プログラム１５１内のいずれの関数に対して低安全プログラム１５６から呼び出しが生じるかについてあらかじめ把握してハードコードしておかなければならないため、汎用性の観点においては実施形態１よりも低いと考えられる。
【００５３】
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。上記実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【符号の説明】
【００５４】
１００：車両制御装置、１１０：マイクロコントローラ、１１１：入力回路、１１２：演算装置、１１３：ＲＡＭ、１１４：ＲＯＭ、１１５：割込制御装置、１１６：メモリ保護装置、１１７：出力回路、１１８：通信制御装置、１２０：信号入力回路、１３０：駆動回路、１４０：通信回路、１５０：制御ソフトウェア、１５１：高安全プログラム、１５２：正当性検査部、１５３：処理要求管理部、１５４：権限制御部、１５５：結果保持部、１５６：低安全プログラム、４００：実行待ジョブリスト。
【図１】
0006029553.tif 000002
【図２】
0006029553.tif 000003
【図３】
0006029553.tif 000004
【図４】
0006029553.tif 000005
【図５】
0006029553.tif 000006
【図６】
0006029553.tif 000007