(57)【要約】【課題】メモリ保護装置が備えるアクセス制御レジスタの個数以上のアクセス権限定義を実現することができる車両制御装置を提供する。【解決手段】本発明に係る車両制御装置において、メモリ保護装置がアクセス権限を制御するために用いるアクセス権限定義を格納する記憶装置は、その全部または一部がメモリ領域に対してあらかじめ固定的に割り当てられ、残りは動的に割り当てられる。【選択図】図９
2018073301.tif 000002
【特許請求の範囲】
【請求項１】
車両の動作を制御するソフトウェアを実行する演算装置、
前記演算装置が前記ソフトウェアを実行する際に用いるデータを格納するメモリ、
前記メモリが有する記憶領域に対するアクセス権限を制御するメモリ保護装置、
を備え、
前記メモリ保護装置は、１つの前記記憶領域に対するアクセス権限を定義する情報を格納する記憶装置を複数備え、
複数の前記記憶装置のうち全部または一部は前記記憶領域に対してあらかじめ固定的に割り当てられており、複数の前記記憶装置のうち残りは動的に割り当てられる
ことを特徴とする車両制御装置。
【請求項２】
前記演算装置は、実行頻度または優先度が異なる複数の前記ソフトウェアを実行し、
複数の前記記憶装置のうち全部または一部は、複数の前記ソフトウェアのうち全部または一部に対して、実行頻度または優先度が高いものから順にあらかじめ固定的に割り当てられており、
前記演算装置は、複数の前記記憶装置のうち残りを、複数の前記ソフトウェアの残りに対して動的に割り当てる
ことを特徴とする請求項１記載の車両制御装置。
【請求項３】
複数の前記記憶装置のうち一部は、複数の前記ソフトウェアのうち優先度が高いものから順に固定的に割り当てられており、
複数の前記記憶装置のうち残りは、複数の前記ソフトウェアの残りのうち実行周期が短いものから順に固定的に割り当てられている
ことを特徴とする請求項１記載の車両制御装置。
【請求項４】
前記演算装置は、複数の前記ソフトウェアの前記残りである共有ソフトウェアを実行する前に、前記記憶領域に対する前記共有ソフトウェアのアクセス権限を定義する情報を複数の前記記憶装置の前記残りに対して書き込むことにより、複数の前記記憶装置の前記残りを前記共有ソフトウェアに対して動的に割り当てる
ことを特徴とする請求項１記載の車両制御装置。
【請求項５】
前記車両制御装置は、前記演算装置が実行する前記共有ソフトウェアのＩＤを格納するＩＤ記憶部を備え、
前記演算装置は、前記ＩＤ記憶部が格納しているＩＤが、実行しようとしている前記共有ソフトウェアのＩＤと異なる場合は、実行しようとしている前記共有ソフトウェアのＩＤを前記ＩＤ記憶部に対して書き込み、
前記演算装置は、前記共有ソフトウェアを実行しようとする際に、前記ＩＤ記憶部が格納しているＩＤが、実行しようとしている前記共有ソフトウェアのＩＤと異なる場合は、実行しようとしている前記共有ソフトウェアに対して複数の前記記憶装置の前記残りを動的に割り当てる
ことを特徴とする請求項４記載の車両制御装置。
【請求項６】
前記記憶装置は、前記記憶領域と前記演算装置の実行モードの組み合わせごとに、前記記憶領域に対するアクセス権限を定義する情報を格納し、
前記メモリ保護装置は、前記記憶装置が格納している情報にしたがって、前記記憶領域と前記演算装置の実行モードの組み合わせごとに、前記記憶領域に対するアクセス権限を制御する
ことを特徴とする請求項１記載の車両制御装置。
【請求項７】
前記記憶装置は、前記記憶領域と前記ソフトウェアのＩＤの組み合わせごとに、前記記憶領域に対するアクセス権限を定義する情報を格納し、
前記メモリ保護装置は、前記記憶装置が格納している情報にしたがって、前記記憶領域と前記ソフトウェアのＩＤの組み合わせごとに、前記記憶領域に対するアクセス権限を制御する
ことを特徴とする請求項１記載の車両制御装置。
【請求項８】
前記演算装置は、安全水準が異なる複数の前記ソフトウェアを実行する
ことを特徴とする請求項１記載の車両制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両の動作を制御する車両制御装置に関するものである。
【背景技術】
【０００２】
車両制御システムは、車両の動作を制御するＥＣＵ（電子制御装置：Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）を備え、ＥＣＵ同士が通信を介して連携することにより車両を制御する。近年の車両制御システムを開発する際には、ＩＳＯ２６２６２などの機能安全規格に準拠することが求められており、安全水準に応じた開発プロセスを用いてシステムを開発することが要求される。
【０００３】
１つのＥＣＵに異なる安全水準のソフトウェア群を搭載するためには、異なる安全水準のソフトウェアが互いに干渉しないようにするＦＦＩ（Ｆｒｅｅｄｏｍ  Ｆｒｏｍ  Ｉｎｔｅｒｆｅｒｅｎｃｅ）を実装する必要がある。ＦＦＩを実装するためには、メモリ保護機能、時間保護機能、データ保護機能を実装することが求められる。
【０００４】
メモリ保護機能は、メモリ保護装置（Ｍｅｍｏｒｙ  Ｐｒｏｔｅｃｔｉｏｎ  Ｕｎｉｔ）を用いることにより実装することができる。メモリ保護装置は、アクセス制御レジスタに対してアクセス権限を定義する情報を書き込むことにより、その定義にしたがってＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）がメモリへアクセスするようにアクセス制御する装置である。メモリ保護装置を用いることにより、ＣＰＵの動作モード（例えばスーパバイザモードやユーザモード）に応じて、特定のメモリアドレス領域に対するアクセス権限を制御し、アクセスが許可されていないメモリアドレス領域に対するアクセスを不正アクセスとして検知することができる。
【０００５】
下記特許文献１においては、あらかじめ複数のアクセス制御レジスタにそれぞれ異なるアクセス権限定義を格納しておき、同じメモリアドレス領域に対していずれのアクセス制御レジスタの定義を適用するかを切り替えることにより、アクセス権限を細かく制御することとしている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１５−０６７１０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記特許文献１記載の技術においては、定義すべきアクセス権限の個数がアクセス制御レジスタの個数を超えている場合は、少なくともそのまま用いることができない。例えばメモリアドレス領域ごとにアクセス権限を定義する場合、メモリアドレス領域の個数がアクセス制御レジスタの個数を超えることがある。そうすると、ＦＦＩを完全に実現することを求める機能安全規格に準拠することが困難になる可能性がある。
【０００８】
本発明は、上記のような課題を解決するためになされたものであり、メモリ保護装置が備えるアクセス制御レジスタの個数以上のアクセス権限定義を実現することができる車両制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る車両制御装置において、メモリ保護装置がアクセス権限を制御するために
用いるアクセス権限定義を格納する記憶装置は、その全部または一部がメモリ領域に対してあらかじめ固定的に割り当てられ、残りは動的に割り当てられる。
【発明の効果】
【００１０】
本発明に係る車両制御装置によれば、メモリ保護装置がアクセス権限定義を格納する記憶装置のうち少なくとも一部を動的に割り当てることにより、記憶装置の個数以上のアクセス権限定義を実現することができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態１に係る車両制御装置１の構成図である。
【図２】タスクテーブル１３１の構成とデータ例を示す図である。
【図３】アクセス権限テーブル１３２の構成とデータ例を示す図である。
【図４】共有アクセス権限テーブル１３３の構成とデータ例を示す図である。
【図５】共有Ｎｏ１３４の例である。
【図６】アクセス制御レジスタ１４１が格納するアクセス権限定義の例である。
【図７】レジスタ数データ１４２が格納するデータ例である。
【図８】プロセス識別レジスタ１５が格納するデータ例である。
【図９】車両制御装置１が備える各機能部間のデータフロー図である。
【図１０】アクセス制御レジスタ割当部１２１の動作を説明するフローチャートである。
【図１１】専有レジスタ設定部１２２の動作を説明するフローチャートである。
【図１２】共有レジスタ設定部１２３の動作を説明するフローチャートである。
【図１３】スケジューリング部１２４の動作を説明するフローチャートである。
【図１４】設定変更判定部１２５の動作を説明するフローチャートである。
【図１５】共有レジスタ更新部１２６の動作を説明するフローチャートである。
【図１６】車両制御装置１がタスクを実行するタイミングを説明するタイムチャートである。
【発明を実施するための形態】
【００１２】
＜実施の形態１＞
図１は、本発明の実施形態１に係る車両制御装置１の構成図である。車両制御装置１は、演算装置１１、メモリ１２、メモリ保護装置１４、プロセス識別レジスタ１５、入出力回路１６を備える。メモリ１２は、プログラム領域とデータ記憶領域を有する。
【００１３】
プログラム領域は、アクセス制御レジスタ割当部１２１、専有レジスタ設定部１２２、共有レジスタ設定部１２３、スケジューリング部１２４、設定変更判定部１２５、共有レジスタ更新部１２６、を格納する。プログラム領域はさらに、車両の動作を制御するソフトウェアとして、ＡＳＩＬ−Ｄソフトウェア１２７、ＡＳＩＬ−Ｂソフトウェア１２８、ＱＭソフトウェア１２９、を格納する。
【００１４】
データ記憶領域は、タスクテーブル１３１、アクセス権限テーブル１３２、共有アクセス権限テーブル１３３、共有Ｎｏ１３４を格納する。これらデータの詳細については後述する。
【００１５】
メモリ保護装置１４は、複数のアクセス制御レジスタ１４１、その個数を示すレジスタ数データ１４２を有する。メモリ保護装置１４は、アクセス制御レジスタ１４１に対して書き込まれたアクセス権限定義にしたがって、メモリ１２に対するアクセスを制御する。メモリ保護装置１４が備える各部の詳細については後述する。
【００１６】
プロセス識別レジスタ１５は、演算装置１１が現在実行中である共有ソフトウェア（後
述）のプロセスＩＤ（ＰＩＤ）を提供する。演算装置１１は入出力回路１６を介してメモリ１２に対してアクセスし、メモリ保護装置１４は入出力回路１６を介してメモリ１２に対するアクセスを監視する。
【００１７】
図２は、タスクテーブル１３１の構成とデータ例を示す図である。タスクテーブル１３１は、演算装置１１が実行するタスクの属性を定義するデータテーブルである。ここでは複数のソフトウェアによって１つのタスクが構成されているものと仮定し、タスクごとに属性を定義することとした。タスクテーブル１３１は、データフィールドとして、ＩＤ１３１１、タスク１３１２、周期１３１３、優先度１３１４、ＰＩＤ１３１５を有する。
【００１８】
ＩＤ１３１１は、タスクテーブル１３１内のレコードを識別するための識別子である。タスク１３１２は、タスクの名称を示す。ここでは各タスクに要求される安全水準をタスク名として代用している。周期１３１３は、タスクの実行周期を示す。優先度１３１４は、タスクの優先度を示す。ＰＩＤ１３１５は、各タスクに対して割り当てられた識別子である。
【００１９】
図３は、アクセス権限テーブル１３２の構成とデータ例を示す図である。アクセス権限テーブル１３２は、各ソフトウェアがアクセスするメモリアドレス領域について、アクセス権限をあらかじめ定義したデータテーブルである。１つのアクセス権限定義（アクセス権限テーブル１３２の１レコード）を１つのアクセス制御レジスタ１４１に対して格納する。アクセス権限テーブル１３２が定義するアクセス権限の個数は、アクセス制御レジスタ１４１の個数を超過する場合がある。したがって後述する手順に基づき、アクセス権限テーブル１３２が定義するアクセス権限のうち全部または一部をアクセス制御レジスタ１４１に対して固定的に格納し、残りは動的に格納する。
【００２０】
アクセス制御レジスタ１４１に対して固定的に格納されたアクセス権限定義を用いるソフトウェアは、そのアクセス権限定義を固定的に割り当てられたことになる。アクセス制御レジスタ１４１に対して動的に格納するアクセス権限定義を用いるソフトウェアは、そのアクセス制御レジスタ１４１を共有することになる。
【００２１】
アクセス権限テーブル１３２は、データフィールドとして、Ｎｏ１３２１、ソフトウェア１３２２、開始アドレス１３２３、終了アドレス１３２４、特権モード１３２５、ユーザモード１３２６、ＰＩＤ１３２７を有する。
【００２２】
Ｎｏ１３２１は、アクセス権限テーブル１３２のレコードを識別する番号である。ソフトウェア１３２２は、タスクを構成するソフトウェアの名称を示す。開始アドレス１３２３は、ソフトウェア１３２２が示すソフトウェアに対してアクセス制御を実施するメモリアドレス領域の開始アドレスを示す。終了アドレス１３２４は、対応する終了アドレスを示す。特権モード１３２５は、開始アドレス１３２３と終了アドレス１３２４が示すメモリアドレス領域に対して演算装置１１が特権モードでアクセスする際のアクセス権限を示す。ユーザモード１３２６は、開始アドレス１３２３と終了アドレス１３２４が示すメモリアドレス領域に対して演算装置１１がユーザモードでアクセスする際のアクセス権限を示す。ＰＩＤ１３２７は、ソフトウェア１３２２に対して割り当てられた識別子であり、ＰＩＤ１３１５に対応する。
【００２３】
例えば図３の２行目のレコードは、「ＰＩＤ＝１」であるソフトウェア「ＡＳＩＬ  Ｄ」が、メモリアドレス領域「０ｘ１０００」から「０ｘ１ＦＦＦ」までに対して、特権モードであれば読取／書込／実行いずれも許可され、ユーザモードであれば読取のみ許可されることを示している。
【００２４】
図４は、共有アクセス権限テーブル１３３の構成とデータ例を示す図である。メモリ保護装置１４は、必ずしも全てのアクセス権限定義を格納できる個数のアクセス制御レジスタ１４１を備えているとは限らない。そこで本発明においては、アクセス制御レジスタ１４１に対してアクセス権限定義を格納するとともに、アクセス制御レジスタ１４１に対して格納することができなかったアクセス権限定義を、共有アクセス権限テーブル１３３内に保存しておくこととした。アクセス権限定義が共有アクセス権限テーブル１３３内に保存されているソフトウェアを、便宜上「共有ソフトウェア」と呼ぶことにする。図４においては、既にいくつかの共有ソフトウェアについてのアクセス権限定義を格納済である例を示した。
【００２５】
共有アクセス権限テーブル１３３は、データフィールドとして、Ｎｏ１３３１、ソフトウェア１３３２、開始アドレス１３３３、終了アドレス１３３４、特権モード１３３５、ユーザモード１３３６、ＰＩＤ１３３７を有する。これらデータフィールドは、共有ソフトウェアについて記述している点を除き、アクセス権限テーブル１３２の各データフィールドと同様である。
【００２６】
図５は、共有Ｎｏ１３４の例である。共有Ｎｏ１３４は、共有アクセス権限テーブル１３３が保持しているアクセス権限定義のうち、アクセス制御レジスタ１４１に対して書き込まれることにより、メモリ保護装置１４がアクセス制御を実施する際に現在用いられているもののＮｏ１３３１を格納する。換言すると、共有アクセス権限テーブル１３３が保持しているアクセス権限定義のうち、共有Ｎｏ１３４内に格納されていないものは、メモリ保護装置１４によって用いられてないことになる。
【００２７】
図６は、アクセス制御レジスタ１４１が格納するアクセス権限定義の例である。１つのアクセス制御レジスタ１４１は、１つのメモリアドレス領域に対するアクセス権限を定義する。アクセス制御レジスタ１４１の具体的な個数は、メモリ保護装置１４の仕様に依拠する。
【００２８】
アクセス制御レジスタ１４１は、データフィールドとして、レジスタＩＤ１４１１、開始アドレス１４１２、終了アドレス１４１３、特権モード１４１４、ユーザモード１４１５、ＰＩＤ１４１６を有する。レジスタＩＤ１４１１は、当該アクセス制御レジスタ１４１の識別子である。その他フィールドはアクセス権限テーブル１３２の各データフィールドと同様である。
【００２９】
図７は、レジスタ数データ１４２が格納するデータ例である。レジスタ数データ１４２は、アクセス制御レジスタ１４１の個数を示すデータを格納する。ここでは１０としているがこれに限らない。
【００３０】
図８は、プロセス識別レジスタ１５が格納するデータ例である。プロセス識別レジスタ１５は、演算装置１１が現在実行している共有ソフトウェアのＰＩＤを格納する。
【００３１】
図９は、車両制御装置１が備える各機能部間のデータフロー図である。以下図９にしたがってデータフローを説明する。
【００３２】
アクセス制御レジスタ割当部１２１は、アクセス権限テーブル１３２とレジスタ数データ１４２とタスクテーブル１３１を入力として受け取る。アクセス制御レジスタ割当部１２１は、各タスクに対してアクセス制御レジスタ１４１を割り当てる。アクセス制御レジスタ割当部１２１は、アクセス制御レジスタ１４１を固定的に割り当てたタスクについてはそのレジスタＩＤ１４１１とＮｏ１３２１を専有レジスタ設定部１２２に対して通知するとともに、アクセス制御レジスタ１４１を動的に割り当てるタスクについてはそのＮｏ
１３２１を共有レジスタ設定部１２３に対して通知する。
【００３３】
専有レジスタ設定部１２２は、アクセス権限テーブル１３２とレジスタＩＤ１４１１とＮｏ１３２１を入力として受け取る。専有レジスタ設定部１２２は、Ｎｏ１３２１が指定するアクセス権限定義を、レジスタＩＤ１４１１が指定するアクセス制御レジスタ１４１に対して固定的に割り当てる。固定的に割り当てられたアクセス制御レジスタ１４１を専有レジスタと呼ぶ。タスク間で共有するアクセス制御レジスタ１４１を共有レジスタと呼ぶ。
【００３４】
共有レジスタ設定部１２３は、アクセス権限テーブル１３２とＮｏ１３２１を入力として受け取る。共有レジスタ設定部１２３は、Ｎｏ１３２１が指定するアクセス権限定義を共有アクセス権限テーブル１３３として格納する。
【００３５】
スケジューリング部１２４は、タスクテーブル１３１に基づいてタスクをスケジューリングする。スケジューリング部１２４は、実行するタスクを切り替える際に、次に実行するタスクのＰＩＤ１３１５を出力する。
【００３６】
設定変更判定部１２５は、次に実行するＰＩＤ１３１５と共有アクセス権限テーブル１３３と共有Ｎｏ１３４を入力として受け取る。設定変更判定部１２５は、タスク間で共有しているアクセス制御レジスタ１４１が格納しているアクセス権限定義を更新するか否かを判定する。更新する場合は更新後のＮｏ１３３１を共有レジスタ更新部１２６に対して通知する。
【００３７】
共有レジスタ更新部１２６は、Ｎｏ１３３１を入力として受け取る。共有レジスタ更新部は、Ｎｏ１３３１が指定するアクセス権限定義を、タスク間で共有されているアクセス制御レジスタ１４１に対して上書更新する。共有レジスタ更新部１２６は、上書更新したＮｏ１３３１を共有Ｎｏ１３４として格納する。
【００３８】
図１０は、アクセス制御レジスタ割当部１２１の動作を説明するフローチャートである。以下図１０の各ステップについて説明する。
【００３９】
（図１０：ステップＳ１２１１）
アクセス制御レジスタ割当部１２１は、タスクテーブル１３１が記述している各タスクのうち全部または一部に対して、アクセス制御レジスタ１４１を固定的に割り当てる。例えば、周期１３１３が短いタスクや優先度１３１４が高いタスクから順に、レジスタ数データ１４２１を超えないように専有レジスタを割り当てる。具体的には、ＰＩＤ１３１５に対応するＰＩＤ１３２７をアクセス権限テーブル１３２から検索し、該当するレコードを特定する。アクセス制御レジスタ１４１の個数が不足する場合は、少なくとも１つのアクセス制御レジスタ１４１を共有レジスタとして残しておく。
【００４０】
（図１０：ステップＳ１２１２）
アクセス制御レジスタ割当部１２１は、専有レジスタとして割り当てたアクセス制御レジスタ１４１のレジスタＩＤ１４１１と、そのアクセス制御レジスタ１４１に対して格納するアクセス権限定義に対応するＮｏ１３２１とを引数として、専有レジスタ設定部１２２を呼び出す。専有レジスタ設定部１２２の動作については後述する。
【００４１】
（図１０：ステップＳ１２１３）
アクセス制御レジスタ割当部１２１は、共有アクセス権限テーブル１３３に対して格納するアクセス権限に対応するＮｏ１３２１を引数として、共有レジスタ設定部１２３を呼び出す。共有レジスタ設定部１２３の動作については後述する。
【００４２】
図１１は、専有レジスタ設定部１２２の動作を説明するフローチャートである。専有レジスタ設定部１２２は、引数として受け取ったレジスタＩＤ１４１１を有するアクセス制御レジスタ１４１に対して、引数として受け取ったＮｏ１３２１に対応するアクセス権限定義を格納する（Ｓ１２２１）。
【００４３】
図１２は、共有レジスタ設定部１２３の動作を説明するフローチャートである。共有レジスタ設定部１２３は、引数として受け取ったＮｏ１３２１に対応するアクセス権限定義を、共有アクセス権限テーブル１３３に対して格納する（Ｓ１２３１）。
【００４４】
図１３は、スケジューリング部１２４の動作を説明するフローチャートである。以下、図１３の各ステップについて説明する。
【００４５】
（図１３：ステップＳ１２４１）
スケジューリング部１２４は、タスクテーブル１３１が記述しているタスクのなかで現在実行可能なものを抽出する。スケジューリング部１２４は、抽出したタスクのなかで最も優先度１３１４が高いものを選択する。
【００４６】
（図１３：ステップＳ１２４２）
スケジューリング部１２４は、ステップＳ１２４１において選択したタスクのＰＩＤ１３１５が共有ソフトウェアのものである場合は、これを引数として、設定変更判定部１２５を呼び出す。設定変更判定部１２５の動作については後述する。
【００４７】
（図１３：ステップＳ１２４３）
スケジューリング部１２４は、ステップＳ１２４１において選択したタスクを実行状態に移行させるため、ディスパッチ処理を実施する。
【００４８】
図１４は、設定変更判定部１２５の動作を説明するフローチャートである。以下、図１４の各ステップについて説明する。
【００４９】
（図１４：ステップＳ１２５１）
設定変更判定部１２５は、プロセス識別レジスタ１５が格納している、現在実行中のタスクのＰＩＤと、引数として受け取ったＰＩＤ１３１５とが一致するか否かを判定する。一致する場合は、改めてＰＩＤ１３１５に対応するアクセス権限定義を共有レジスタに格納する必要はないと判断し、本フローチャートを終了する。一致しない場合はステップＳ１２５２へ進む。
【００５０】
（図１４：ステップＳ１２５２）
設定変更判定部１２５は、引数として受け取ったＰＩＤ１３１５と等しいＰＩＤ１３３７を有するレコードを、共有アクセス権限テーブル１３３から検索する。設定変更判定部１２５は、該当するレコードのＮｏ１３３１を引数として、共有レジスタ更新部１２６を呼び出す。複数のレコードが該当する場合はそれぞれについて同様の処理を実施する。
【００５１】
図１５は、共有レジスタ更新部１２６の動作を説明するフローチャートである。以下、図１５の各ステップについて説明する。
【００５２】
（図１５：ステップＳ１２６１）
共有レジスタ更新部１２６は、引数として受け取ったＮｏ１３３１に対応する共有アクセス権限テーブル１３３内のレコードの内容を、アクセス制御レジスタ１４１に対して上書格納する。レコードを書き込むアクセス制御レジスタ１４１（すなわち共有レジスタ）
のレジスタＩＤ１４１１は、あらかじめ通知しておいてもよいし、引数として通知してもよい。
【００５３】
（図１５：ステップＳ１２６２）
共有レジスタ更新部１２６は、引数として受け取ったＮｏ１３３１を、共有Ｎｏ１３４として上書格納する。
【００５４】
図１６は、車両制御装置１がタスクを実行するタイミングを説明するタイムチャートである。ここでは、車両制御装置１のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）とＡＳＩＬ−Ｄソフトウェア１２７は専有レジスタに対して割り当てられ、ＡＳＩＬ−Ｂソフトウェア１２８とＱＭソフトウェア１２９は共有レジスタに対して割り当てられているものとする。星印は、共有レジスタ更新部１２６が共有レジスタを更新するタイミングを示す。
【００５５】
ステップＳ１２５１において、設定変更判定部１２５は、次に実行する共有ソフトウェアのＰＩＤ１３１５がプロセス識別レジスタ１５内のＰＩＤと異なる場合のみ、共有レジスタを書き換える必要があると判定する。すなわち、共有レジスタに対して割り当てられているタスクを変更するときのみ、共有レジスタの内容を変更する。例えば図１６の星印が示すように、共有レジスタに対してＡＳＩＬ−Ｂソフトウェア１２８が割り当てられている間は、共有レジスタの内容を変更する必要はない。これにより、共有レジスタの内容を動的に書き換えたとしても、処理負荷を抑えることができる。
【００５６】
＜実施の形態１：まとめ＞
本実施形態１に係る車両制御装置１は、実行頻度や優先度が低いタスクがメモリ１２に対してアクセスする際のアクセス権限については、タスク間でアクセス制御レジスタ１４１を共有し、タスクを実行する直前にそのタスクのアクセス権限定義を共有レジスタに対して書き込む。これにより、アクセス制御レジスタ１４１の個数以上のアクセス権限を定義して利用することができる。
【００５７】
本実施形態１に係る車両制御装置１は、実行頻度や優先度が高いタスクがメモリ１２に対してアクセスする際のアクセス権限については、各タスクについてアクセス制御レジスタ１４１を固定的に割り当てる。これにより、実行頻度や優先度が高いタスクについてはそのタスクのアクセス権限定義を対応するアクセス制御レジスタ１４１から常に得ることができるので、リアルタイム性が担保できる。
【００５８】
＜実施の形態２＞
本発明の実施形態２では、実施形態１で説明した各機能部やデータテーブルなどの変形例について説明する。その他構成は実施形態１と同様であるので、以下では変形例に関する差異点について主に説明する。
【００５９】
実施形態１において、メモリ１２が格納している各機能部は、演算装置１１が実行するソフトウェアとして構成されているが、これに代えて同等の機能を実装した回路デバイスなどのハードウェアを用いてこれら機能部を実装することもできる。
【００６０】
実施形態１においては、ソフトウェアごとに１つのアクセス権限を定義する例を説明したが、各ソフトウェアについて複数のアクセス権限を定義しておいてそれらを切り替えることもできる。例えば各ソフトウェアがそれぞれ３つのメモリアドレス領域に対してアクセスする場合、ソフトウェアごとに３つのアクセス権限を定義しておき、それぞれ異なるアクセス制御レジスタ１４１に格納することができる（合計９つのアクセス制御レジスタ１４１が必要になる）。
【００６１】
実施形態１においては、３種類の異なる安全水準のソフトウェアに対してメモリ保護を実施する例を説明したが、安全水準の数はこれに限らない。実施形態１においてはシングルコアの演算装置１１を備える車両制御装置１を想定したが、演算装置１１はマルチコアプロセッサであってもよい。
【００６２】
実施形態１においては、ＰＩＤ１３２７ごとにアクセス権限を定義することにより、演算装置１１の動作モードの個数よりも多くのアクセス権限を定義することができる。ＰＩＤ１３２７を用いてアクセス権限定義を識別することに代えて、ソフトウェア上の処理によりアクセス権限定義を識別してもよい。
【００６３】
実施形態１において、周期１３１３が短いタスクまたは優先度１３１４が高いタスクから順に専有レジスタを割り当てることを説明した。周期１３１３と優先度１３１４のいずれを優先して専有レジスタを割り当てるかは、任意に定めることができる。例えばまずは優先度１３１４が高い順に専有レジスタを割り当て、次に周期１３１３が短い順に専有レジスタを割り当てることが考えられる。周期１３１３が同じタスクについては、例えば優先度１３１４が高い方から先に専有レジスタを割り当てることができる。周期１３１３や優先度１３１４を用いることに代えて、ユーザが指定することにより専有レジスタを割り当ててもよい。
【００６４】
実施形態１においては周期的に実行されるタスクについて説明したが、周期的に実行されない割込処理についても周期タスクと同様にアクセス制御レジスタ１４１を割り当てることができる。割込処理については、優先度１３１４を用いてアクセス制御レジスタ１４１を割り当てることができる。周期的に実行されるタスクと割込処理を比較する場合は、優先度１３１４を比較することにより割り当てを決めることができる。ＯＳのみ例外として無条件で専有レジスタを割り当ててもよい。
【００６５】
アクセス制御レジスタ１４１の割り当ては、例えば車両制御装置１を起動するとき１度のみ実施してもよいし、適当な時点で繰り返してもよい。全てのアクセス制御レジスタ１４１を用いず、一部のみを割り当ててもよい。
【００６６】
実施形態１においては、１つのタスクに１つの安全水準を割り当てているが、これに限らない。例えば、１つのタスク内で複数の異なる安全水準の処理を実行してもよい。ただしタスク内の処理同士でＦＦＩが実現されている場合に限る。
【００６７】
専有レジスタに対して割り当てられたタスクについては、ＰＩＤ１３２７にＰＩＤが記載されていなくても常に有効になるように設定することができる。例えば、ＰＩＤをマスクすることにより、専有レジスタに対して割り当てられたタスクは常に有効となるように設定することができる。
【００６８】
実施形態１においては、ソフトウェア単位でＰＩＤ１３２７を割り当てているが、これに限らない。例えば、関数単位／グループ単位／プロセッサコア単位、などでＰＩＤ１３２７を割り当てることができる。
【符号の説明】
【００６９】
１：車両制御装置
１１：演算装置
１２：メモリ
１２１：アクセス制御レジスタ割当部
１２２：専有レジスタ設定部
１２３：共有レジスタ設定部
１２４：スケジューリング部
１２５：設定変更判定部
１２６：共有レジスタ更新部
１３１：タスクテーブル
１３２：アクセス権限テーブル
１３３：共有アクセス権限テーブル
１３４：共有Ｎｏ
１４：メモリ保護装置
１４１：アクセス制御レジスタ
１４２：レジスタ数データ
１５：プロセス識別レジスタ
１６：入出力回路
【図１】
2018073301.tif 000003
【図２】
2018073301.tif 000004
【図３】
2018073301.tif 000005
【図４】
2018073301.tif 000006
【図５】
2018073301.tif 000007
【図６】
2018073301.tif 000008
【図７】
2018073301.tif 000009
【図８】
2018073301.tif 000010
【図９】
2018073301.tif 000011
【図１０】
2018073301.tif 000012
【図１１】
2018073301.tif 000013
【図１２】
2018073301.tif 000014
【図１３】
2018073301.tif 000015
【図１４】
2018073301.tif 000016
【図１５】
2018073301.tif 000017
【図１６】
2018073301.tif 000018