(57)【要約】【課題】オーバーヘッドが低減されたマイコンを提供する。【解決手段】ＣＰＵ（１０）と、記憶部（２０）と、記憶部へのＣＰＵのアクセスを規定する保護部（３０）と、を有するマイコン。記憶部には、安全基準が満たされた安全コンポーネントと、安全基準が満たされていない非安全コンポーネントと、から成るソフトウェアが記憶され、保護部は、アドレス、処理、及び、保護の有無を決定するデータが記憶されたレジスタ（３１）と、保護が有効の場合、ＣＰＵのアクセスと処理を規定する規定部（３２）と、を有し、保護の有無を決定するデータ容量は、ＣＰＵがアクセスするアドレスと処理のデータ容量の和よりも少なくなっており、ＣＰＵは、安全コンポーネントに基づいてソフトウェアを動作する際、保護を無効とし、非安全コンポーネントに基づいてソフトウェアを動作する際、保護を有効とする。【選択図】図３
2014059741.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ（１０）と、
該ＣＰＵが演算処理するためのデータを記憶する記憶部（２０）と、
前記記憶部へのＣＰＵのアクセスを規定することで、前記記憶部を保護する保護部（３０）と、を有するマイコンであって、
前記記憶部には、安全基準が満たされた安全コンポーネントと、安全基準が満たされていない非安全コンポーネントと、から成るソフトウェアが記憶され、
前記保護部は、前記ＣＰＵがアクセスするアドレス、前記ＣＰＵの処理、及び、保護の有効と無効を決定するデータが記憶されたレジスタ（３１）と、保護が有効の場合、前記ＣＰＵがアクセスするアドレス、及び、前記ＣＰＵの処理それぞれを規定し、保護が無効の場合、前記ＣＰＵがアクセスするアドレス、及び、前記ＣＰＵの処理それぞれを規定しない規定部（３２）と、を有し、
前記レジスタに記憶された、保護の有効と無効を決定するデータ容量は、前記ＣＰＵがアクセスするアドレスと前記ＣＰＵの処理のデータ容量の和よりも少なくなっており、
前記ＣＰＵは、前記安全コンポーネントに基づいてソフトウェアを動作する際、前記レジスタを書き換えることで、保護を無効とし、前記非安全コンポーネントに基づいてソフトウェアを動作する際、保護を有効とすることを特徴とするマイコン。
【請求項２】
前記ソフトウェアは、前記安全コンポーネントを複数有し、
複数の前記安全コンポーネントは、安全レベルが異なっており、
前記ＣＰＵは、所定の安全レベル以上の安全コンポーネントに基づいてソフトウェアを動作する際、前記レジスタを書き換えることで、保護を無効とし、前記所定の安全レベルよりも低い非安全コンポーネントに基づいてソフトウェアを動作する際、保護を有効とすることを特徴とする請求項１に記載のマイコン。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵと、記憶部と、記憶部へのＣＰＵのアクセスを規定することで、記憶部を保護する保護部と、を有するマイコンに関するものである。
【背景技術】
【０００２】
従来、例えば特許文献１に示されるように、ＣＰＵと、ＣＰＵで実行されるプログラムによるメモリ空間へのアクセス許可又は禁止の状態を指定するメモリ保護情報を格納する保護情報格納部と、メモリ保護情報に基づいて、ＣＰＵによるメモリアクセス要求を許可するか否かを判定するメモリアクセス制御装置と、を備えるマイクロコンピュータが提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２８７１０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ＣＰＵが実行するプログラムは、通常、複数のコンポーネントから成る。そして、このプログラムを構成するコンポーネントは、所定の安全基準を満たす安全コンポーネントと、安全基準を満たさない非安全コンポーネントと、から成る。非安全コンポーネントにバグが含まれていると、ＣＰＵが非安全コンポーネントに基づいて動作する際、ＣＰＵが、非安全コンポーネントに基づいて動作するのに不要なデータをアクセスする、という誤動作を行う虞がある。
【０００５】
そこで、特許文献１に記載のマイクロコンピュータは、メモリ保護情報を格納する保護情報格納部と、メモリ保護情報に基づいて、ＣＰＵによるメモリアクセス要求を許可するか否かを判定するメモリアクセス制御装置と、を備える。これによって、ＣＰＵが動作するのに不要なデータをアクセスする、という誤動作が起きることを抑制している。
【０００６】
しかしながら、特許文献１に記載のマイクロコンピュータでは、ＣＰＵが、安全基準を満たす安全コンポーネントに基づいて動作する場合においても、保護情報格納部と、メモリアクセス制御装置と、によって、誤動作が起きることを抑制している。したがって、ＣＰＵが安全コンポーネントから非安全コンポーネント、若しくは、非安全コンポーネントから安全コンポーネントへと移行する際、保護情報格納部に記憶されたメモリ保護情報（ＣＰＵがアクセスできるアドレスやＣＰＵが行う処理）を書き換えなければならない。そのため、オーバーヘッド（処理にかかる時間や負荷）が大きいという問題がある。
【０００７】
そこで、本発明は上記問題点に鑑み、オーバーヘッドが低減されたマイコンを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記した目的を達成するために、本発明は、ＣＰＵ（１０）と、該ＣＰＵが演算処理するためのデータを記憶する記憶部（２０）と、記憶部へのＣＰＵのアクセスを規定することで、記憶部を保護する保護部（３０）と、を有するマイコンであって、記憶部には、安全基準が満たされた安全コンポーネントと、安全基準が満たされていない非安全コンポーネントと、から成るソフトウェアが記憶され、保護部は、ＣＰＵがアクセスするアドレス、ＣＰＵの処理、及び、保護の有効と無効を決定するデータが記憶されたレジスタ（３１）と、保護が有効の場合、ＣＰＵがアクセスするアドレス、及び、ＣＰＵの処理それぞれを規定し、保護が無効の場合、ＣＰＵがアクセスするアドレス、及び、ＣＰＵの処理それぞれを規定しない規定部（３２）と、を有し、レジスタに記憶された、保護の有効と無効を決定するデータ容量は、ＣＰＵがアクセスするアドレスとＣＰＵの処理のデータ容量の和よりも少なくなっており、ＣＰＵは、安全コンポーネントに基づいてソフトウェアを動作する際、レジスタを書き換えることで、保護を無効とし、非安全コンポーネントに基づいてソフトウェアを動作する際、保護を有効とすることを特徴とする。
【０００９】
このように本発明によれば、ＣＰＵ（１０）は、安全コンポーネントから非安全コンポーネント、若しくは、非安全コンポーネントから安全コンポーネントへと移行する際、レジスタ（３１）に記憶された、保護の有効と無効とを書き換える。そして、この保護の有効と無効を決定するデータ容量は、ＣＰＵ（１０）がアクセスするアドレスとＣＰＵ（１０）の処理のデータ容量の和よりも少なくなっている。これによれば、上記したＣＰＵの読み込みの変更の際、ＣＰＵがアクセスするアドレスとＣＰＵの処理とが書き換えられる構成と比べて、オーバーヘッドが低減される。
【００１０】
ちなみに、本発明の場合、安全コンポーネントに基づいてＣＰＵ（１０）が動作する際、規定部（３２）によって、ＣＰＵ（１０）がアクセスするアドレス、及び、ＣＰＵ（１０）の処理は規定されない。しかしながら、安全コンポーネントは、非安全コンポーネントとは異なり、安全基準を満たしている。そのため、安全コンポーネントに基づいてＣＰＵ（１０）が動作する際、規定部（３２）によって、ＣＰＵ（１０）がアクセスするアドレス、及び、ＣＰＵ（１０）の処理が規定されなくとも、ＣＰＵ（１０）が誤動作することが抑制される。
【００１１】
ソフトウェアは、安全コンポーネントを複数有し、複数の安全コンポーネントは、安全レベルが異なっており、ＣＰＵは、所定の安全レベル以上の安全コンポーネントに基づいてソフトウェアを動作する際、レジスタを書き換えることで、保護を無効とし、所定の安全レベルよりも低い非安全コンポーネントに基づいてソフトウェアを動作する際、保護を有効とする構成が、本発明では好適である。これによれば、所定の安全レベルよりも低い安全コンポーネントに基づいてＣＰＵ（１０）が動作する際、誤動作が生じることが抑制される。
【図面の簡単な説明】
【００１２】
【図１】マイコンの概略構成を示すブロック図である。
【図２】常時メモリ保護が有効の場合における、記憶部の保護を説明するための概念図である。
【図３】本発明における、記憶部の保護を説明するための概念図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態を図に基づいて説明する。
（第１実施形態）
図１〜図３に基づいて、本実施形態に係るマイコンを説明する。図１に示すように、マイコン１００は、要部として、ＣＰＵ１０と、記憶部２０と、保護部３０と、を有する。ＣＰＵ１０は、記憶部２０に記憶されたデータに基づいて演算処理するものであり、記憶部２０は、ＣＰＵ１０が動作するためのデータや演算処理の際のデータを記憶するものである。そして、保護部３０は、記憶部２０に記憶されたデータへのＣＰＵ１０のアクセスを規定することで、記憶部２０を保護するものである。
【００１４】
ＣＰＵ１０は、記憶部２０にアクセスし、アクセスしたアドレスに記憶されたデータに基づいて、演算処理する。ＣＰＵ１０は、一度の処理で、複数ビットのデータを処理する。
【００１５】
記憶部２０は、ＲＡＭ、ＲＯＭ、レジスタから成る。記憶部２０には、ＣＰＵ１０が動作するためのソフトウェアが記憶されており、このソフトウェアは、所定の安全基準が満たされた安全コンポーネントと、安全基準が満たされていない非安全コンポーネントと、から成る。ちなみに、安全基準とは、例えばＩＳＯ２６２６２に定義される自動車用安全水準（ＡＳＩＬ）である。
【００１６】
保護部３０は、レジスタ３１と、規定部３２と、を有するものであり、具体的に言えば、メモリ管理ユニットである。レジスタ３１は、ＣＰＵ１０がアクセスするアドレス、ＣＰＵ１０の処理、及び、保護の有効と無効を決定するデータが記憶されている。レジスタ３１のデータの書き換えは、ＣＰＵ１０によって行われる。ＣＰＵ１０は、安全コンポーネントに基づいてソフトウェアを動作する際、レジスタ３１のデータを書き換えることで、保護を無効とし、非安全コンポーネントに基づいてソフトウェアを動作する際、保護を有効とする。しかしながら、ＣＰＵ１０は、アドレスと処理の書き換えは行わない。
【００１７】
ちなみに、保護の有効と無効を決定するデータ容量（以下、保護容量と示す）は、ＣＰＵ１０がアクセスするアドレスと処理のデータ容量の和（以下、処理容量と示す）よりも少なくなっている。より詳しく言えば、保護容量は、ＣＰＵ１０が一度で処理できる程度のデータ容量であるのに対して、処理容量は、ＣＰＵ１０が複数回で処理できる程度のデータ容量になっている。
【００１８】
規定部３２は、レジスタ３１に記憶されたデータに基づいて、記憶部２０を保護するものである。規定部３２は、保護が有効の場合、ＣＰＵ１０がアクセスするアドレス、及び、ＣＰＵ１０の処理それぞれを規定する。これとは反対に、保護が無効の場合、規定部３２は、ＣＰＵ１０がアクセスするアドレス、及び、ＣＰＵ１０の処理それぞれを規定しない。上記したように、ＣＰＵ１０は、安全コンポーネントに基づいてソフトウェアを動作する場合、保護を無効とし、非安全コンポーネントに基づいてソフトウェアを動作する場合、保護を有効とする。そのため、ＣＰＵ１０が安全コンポーネントに基づいてソフトウェアを動作する場合、記憶部２０は規定部３２によって保護されない。これとは反対に、ＣＰＵ１０が非安全コンポーネントに基づいてソフトウェアを動作する場合、記憶部２０は規定部３２によって保護される。
【００１９】
次に、記憶部２０の保護について、図２と図３に基づいて説明する。図２は、本実施形態に係るマイコン１００との比較のための概念図である。この構成では、ＣＰＵ１０が読み込むコンポーネントに限らず、保護が常時有効とされる。これに対して、図３は、本実施形態に係るマイコン１００における記憶部２０の保護を説明するための概念図である。この構成では、ＣＰＵ１０が読み込むコンポーネントに応じて、保護の有効と無効が書き換えられる。以下においては、レジスタ３１における、ＣＰＵ１０のアクセスを許可するアドレスが記憶されたメモリ領域を、アクセス領域、ＣＰＵ１０の処理内容が記憶されたメモリ領域を、処理領域、保護の有効と無効が記憶されたメモリ領域を、保護領域と示す。なお、図２及び図３に示す○は、ＣＰＵ１０の動作許可を示し、×は、ＣＰＵ１０の動作禁止を示している。
【００２０】
図２に示すように、ＣＰＵ１０が、安全コンポーネントに基づいて動作する場合、及び、非安全コンポーネントに基づいて動作する場合、いずれの場合においても、保護が有効に設定される。そのため、レジスタ３１の保護領域のデータは書き換えられない。しかしながら、これとは異なり、レジスタ３１のアクセス領域と処理領域それぞれのデータは書き換えられる。
【００２１】
ＣＰＵ１０が、安全コンポーネントに基づいて動作する場合、レジスタ３１のアドレス領域には、記憶部２０のアドレスＡからアドレスＢまでの第１メモリ領域、及び、アドレスＣからアドレスＤまでの第２メモリ領域が記憶される。また、レジスタ３１の処理領域には、第１メモリ領域にＣＰＵ１０がアクセスした際に、第１メモリ領域において、読み込み（リード）とデータに基づく処理（実行）の許可、及び、書き込み（ライト）の禁止を表すデータが記憶される。更に、レジスタ３１の処理領域には、第２メモリ領域にＣＰＵ１０がアクセスした際に、第２メモリ領域において、ライトとリードの許可、及び、実行の禁止を表すデータが記憶される。
【００２２】
この場合、規定部３２は、ＣＰＵ１０の記憶部２０へのアクセスを、第１メモリ領域と第２メモリ領域とに規定し、ＣＰＵ１０が第１メモリ領域にアクセスした際は、第１メモリ領域において、リードと実行を許可して、ライトを禁止させる。また、規定部３２は、ＣＰＵ１０が第２メモリ領域にアクセスした際は、第２メモリ領域においては、ライトとリードを許可し、実行を禁止させる。そして、規定部３２は、ＣＰＵ１０が第１メモリ領域と第２メモリ領域以外のメモリ領域にアクセスした際は、第１メモリ領域と第２メモリ領域以外のメモリ領域においては、リード、ライト、実行の全てを禁止させる。
【００２３】
次に、ＣＰＵ１０が安全コンポーネントに基づいて動作している状態から、非安全コンポーネントに基づいて動作する状態に移行する場合を説明する。この場合、レジスタ３１のデータ情報は、ＣＰＵ１０によって書き換えられる。具体的に言えば、図２に示すように、アクセス領域のデータが、記憶部２０のアドレスＢからアドレスＣまでの第３メモリ領域、及び、アドレスＤからアドレスＥまでの第４メモリ領域へと書き換えられる。また、処理領域のデータは、ＣＰＵ１０が第３メモリ領域にアクセスした際に、第３メモリ領域において、リードと実行の許可、及び、ライトの禁止を表すデータに書き換えられ、ＣＰＵ１０が第４メモリ領域にアクセスした際に、第４メモリ領域において、ライトとリードの許可、及び、実行の禁止を表すデータに書き換えられる。
【００２４】
この場合、規定部３２は、ＣＰＵ１０の記憶部２０へのアクセスを、第３メモリ領域と第４メモリ領域とに規定し、ＣＰＵ１０が第３メモリ領域にアクセスした際は、第３メモリ領域において、リードと実行を許可して、ライトを禁止させる。また、規定部３２は、ＣＰＵ１０が第４メモリ領域にアクセスした際は、第２メモリ領域においては、ライトとリードを許可し、実行を禁止させる。そして、規定部３２は、ＣＰＵ１０が第３メモリ領域と第４メモリ領域以外のメモリ領域にアクセスした際は、第３メモリ領域と第４メモリ領域以外のメモリ領域においては、リード、ライト、実行の全てを禁止させる。
【００２５】
次に、ＣＰＵ１０が非安全コンポーネントに基づいて動作している状態から、安全コンポーネントに基づいて動作する状態に移行する場合を説明する。この場合、レジスタ３１のデータ情報は、ＣＰＵ１０によって書き換えられる。具体的に言えば、図２に示すように、アクセス領域のデータが、第１メモリ領域、及び、第２メモリ領域へと書き換えられる。また、処理領域のデータは、ＣＰＵ１０が第１メモリ領域にアクセスした際は、第１メモリ領域において、リードと実行の許可、及び、ライトの禁止を表すデータに書き換えられ、ＣＰＵ１０が第２メモリ領域にアクセスした際は、第２メモリ領域において、ライトとリードの許可、及び、実行の禁止を表すデータに書き換えられる。
【００２６】
この場合、規定部３２は、ＣＰＵ１０の記憶部２０へのアクセスを、第１メモリ領域と第２メモリ領域とに規定し、ＣＰＵ１０が第１メモリ領域にアクセスした際は、第１メモリ領域において、リードと実行を許可して、ライトを禁止させる。また、規定部３２は、ＣＰＵ１０が第２メモリ領域にアクセスした際は、第２メモリ領域においては、ライトとリードを許可し、実行を禁止させる。そして、規定部３２は、ＣＰＵ１０が第１メモリ領域と第２メモリ領域以外のメモリ領域にアクセスした際は、第１メモリ領域と第２メモリ領域以外のメモリ領域においては、リード、ライト、実行の全てを禁止させる。
【００２７】
次に、本実施形態に係るマイコン１００における記憶部２０の保護を図３に基づいて説明する。ＣＰＵ１０は、安全コンポーネントに基づいて動作する場合、保護を無効に設定し、非安全コンポーネントに基づいて動作する場合、保護を有効に設定する。そのため、ＣＰＵ１０が、安全コンポーネントに基づいて動作している状態から非安全コンポーネントに基づいて動作する場合、若しくは、非安全コンポーネントに基づいて動作している状態から安全コンポーネントに基づいて動作する状態に移行する場合、レジスタ３１の保護領域のデータが書き換えられる。しかしながら、これとは異なり、レジスタ３１のアクセス領域と処理領域のデータは書き換えられない。
【００２８】
図３に示すように、ＣＰＵ１０が、安全コンポーネント、非安全コンポーネントいずれに基づいて動作する場合においても、レジスタ３１のアドレス領域には、第３メモリ領域、及び、第４メモリ領域が記憶される。また、レジスタ３１の処理領域には、第３メモリ領域にＣＰＵ１０がアクセスした際に、第３メモリ領域において、リードと実行の許可、及び、ライトの禁止を表すデータが記憶され、ＣＰＵ１０が第４メモリ領域にアクセスした際に、第４メモリ領域において、ライトとリードの許可、及び、実行の禁止を表すデータが記憶される。
【００２９】
ＣＰＵ１０が安全コンポーネントに基づいて動作する場合、メモリ保護は無効となっているので、規定部３２によって、記憶部２０の保護は行われない。しかしながら、安全コンポーネントは、非安全コンポーネントとは異なり、安全基準を満たしている。そのため、安全コンポーネントに基づいてＣＰＵ１０が動作する際、規定部３２によって、ＣＰＵ１０がアクセスするアドレス、及び、ＣＰＵ１０の処理が規定されなくとも、ＣＰＵ１０が誤動作することが抑制される。
【００３０】
ＣＰＵ１０が非安全コンポーネントに基づいて動作する場合、メモリ保護は有効となっているので、規定部３２によって、記憶部２０の保護が行われる。この場合、規定部３２は、ＣＰＵ１０の記憶部２０へのアクセスを、第３メモリ領域と第４メモリ領域とに規定し、ＣＰＵ１０が第３メモリ領域にアクセスした際は、第３メモリ領域において、リードと実行を許可して、ライトを禁止させる。また、規定部３２は、ＣＰＵ１０が第４メモリ領域にアクセスした際は、第４メモリ領域においては、ライトとリードを許可し、実行を禁止させる。そして、規定部３２は、ＣＰＵ１０が第３メモリ領域と第４メモリ領域以外のメモリ領域にアクセスした際は、第３メモリ領域と第４メモリ領域以外のメモリ領域においては、リード、ライト、実行の全てを禁止させる。
【００３１】
次に、本実施形態に係るマイコン１００の作用効果を説明する。上記したように、ＣＰＵ１０が、安全コンポーネントから非安全コンポーネント、若しくは、非安全コンポーネントから安全コンポーネントへと移行する際、レジスタ３１に記憶された、保護の有効と無効とが書き換えられる。しかしながら、この保護の有効と無効を決定するデータ容量（保護容量）は、ＣＰＵがアクセスするアドレスとＣＰＵの処理のデータ容量の和（処理容量）よりも少なくなっている。これによれば、上記したＣＰＵの読み込みの変更の際、ＣＰＵがアクセスするアドレスと処理とが書き換えられる構成（図２に示す構成）と比べて、オーバーヘッドが低減される。
【００３２】
以上、本発明の好ましい実施形態について説明したが、本発明は上記した実施形態になんら制限されることなく、本発明の主旨を逸脱しない範囲において、種々変形して実施することが可能である。
【００３３】
本実施形態では、安全コンポーネントの個数について特に述べなかった。しかしながら、安全コンポーネントの数としては、単数でも、複数でもよい。ただし、ソフトウェアが、安全コンポーネントを複数有し、複数の安全コンポーネントは、安全レベルが異なっている場合、以下に示す構成が好適である。すなわち、ＣＰＵ１０が、所定の安全レベル以上の安全コンポーネントに基づいてソフトウェアを動作する場合、保護を無効とし、所定の安全レベルよりも低い非安全コンポーネントに基づいてソフトウェアを動作する場合、保護を有効とする構成が好適である。これによれば、所定の安全レベルよりも低い安全コンポーネントに基づいてＣＰＵ１０が動作する際、誤動作が生じることが抑制される。
【符号の説明】
【００３４】
１０・・・ＣＰＵ
２０・・・記憶部
３０・・・保護部
３１・・・レジスタ
３２・・・規定部
１００・・・マイコン
【図１】
2014059741.tif 000003
【図２】
2014059741.tif 000004
【図３】
2014059741.tif 000005