JP2014074995A - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP2014074995A
JP2014074995A JP2012221415A JP2012221415A JP2014074995A JP 2014074995 A JP2014074995 A JP 2014074995A JP 2012221415 A JP2012221415 A JP 2012221415A JP 2012221415 A JP2012221415 A JP 2012221415A JP 2014074995 A JP2014074995 A JP 2014074995A
Authority
JP
Japan
Prior art keywords
interrupt
application
processor
peripheral circuit
protection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012221415A
Other languages
English (en)
Inventor
Kazuhiro Kajio
和弘 梶尾
Shinya Honda
晋也 本田
Hiroaki Takada
広章 高田
Hirotaka Kawashima
裕崇 川島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nagoya University NUC
Toyota Motor Corp
Original Assignee
Nagoya University NUC
Toyota Motor Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nagoya University NUC, Toyota Motor Corp filed Critical Nagoya University NUC
Priority to JP2012221415A priority Critical patent/JP2014074995A/ja
Publication of JP2014074995A publication Critical patent/JP2014074995A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】プロセッサの変更を抑制して保護機能を実現することができる情報処理装置を提供すること。
【解決手段】第一のアプリがアクセスする第一の周辺回路と、第二のアプリがアクセスする第二の周辺回路と、前記第一の周辺回路の割込み要求をプロセッサのマスク禁止割込み端子(NMI)に出力し、前記第二の周辺回路の割込み要求をプロセッサのマスク可能割込み端子(IRQ)に出力する割り込み管理手段12と、前記第一の周辺回路及び前記第二の周辺回路とバスを介して接続され、前記割り込み管理手段がマスク禁止割込み端子に割込み要求した場合、前記第一のアプリを実行するプロセッサ14と、前記第一の周辺回路が割込み要求したことを記憶する割込み状態記憶手段22と、前記割込み状態記憶手段が前記第一の周辺回路が割込み要求したことを記憶していない場合、前記プロセッサが前記第一の周辺回路にアクセスすることを禁止するアクセス制御手段21と、を有することを特徴とする情報処理装置100を提供する。
【選択図】図4

Description

本発明は、複数のアプリケーションが動作した場合にアプリケーションの機能を保護する情報処理装置に関する。
プロセッサによっては、保護機能が搭載されることがある。保護機能とは、アプリケーションがその機能を提供できるようにデータや処理の実行を確保するための機能であり、具体的にはメモリ保護機能や時間保護機能が知られている。メモリ保護を実現する装置としてMPU(Memory Protection Unit)又はMMU(Memory Management Unit)がある。MPU又はMMUは、メモリ保護として、複数のプロセスが動作する場合にあるプロセスが他のプロセスのメモリ領域にアクセスすることを禁止する。メモリ保護を実現するため、MPU又はMMUを操作できるプロセスを制限する必要があり、多くのプロセッサでは特権モードとユーザモードという動作モードを有している。特権モードはOS等のシステムソフトウェアが動作する動作モードであり、ユーザモードはアプリケーションが動作する動作モードである。システムソフトウェアがプロセッサを管理しやすいように、特権モードではメモリ保護機能は無効にされ、ユーザモードでのみメモリ保護機能が有効になる。
時間保護機能は、重要な機能を提供するプロセスが許容可能な最長期限(デッドライン)までに実行されることを保証する機能である。このため、システムソフトウェアは、プロセッサ内部のカウンタや外付けのタイマを用いて、特定のプロセスがCPUを専有することを防止したり、各プロセスへのCPUの割り当て時間を制限する。
しかしながら、低コストに調達可能なマイコンでは保護機能を有していないものが多く、保護機能を追加する技術が考えられている(例えば、特許文献1参照。)。特許文献1には、アプリケーションのメモリアクセスを制限するアクセス監視装置が開示されている。アクセス監視装置は、アクセス許可テーブルを内蔵しており、CPUからメモリに出力される信号を取得し、アクセス許可テーブルと比較することで、CPUからの信号のアクセス違反を検出する。
特開2001−325150号公報
しかしながら、特許文献1のアクセス監視装置は、アクセス許可テーブルによりアクセス制限しているが、アプリケーションがアクセス許可テーブルを書き換える可能性について考慮されていない。アクセス許可テーブルの書き換えを禁止するには、アプリケーションはユーザモードでのみ動作可能とすることが考えられるが、特権モードとユーザモードをサポートするためにはプロセッサの変更が必要になるという問題がある。
本発明は、上記課題に鑑み、プロセッサの変更を抑制して保護機能を実現することができる情報処理装置を提供することを目的とする。
本発明は、第一のアプリがアクセスする第一の周辺回路と、第二のアプリがアクセスする第二の周辺回路と、前記第一の周辺回路の割込み要求をプロセッサのマスク禁止割込み端子に出力し、前記第二の周辺回路の割込み要求をプロセッサのマスク可能割込み端子に出力する割り込み管理手段と、前記第一の周辺回路及び前記第二の周辺回路とバスを介して接続され、前記割り込み管理手段がマスク禁止割込み端子に割込み要求した場合、前記第一のアプリを実行するプロセッサと、前記第一の周辺回路が割込み要求したことを記憶する割込み状態記憶手段と、前記割込み状態記憶手段が前記第一の周辺回路が割込み要求したことを記憶していない場合、前記プロセッサが前記第一の周辺回路にアクセスすることを禁止するアクセス制御手段と、を有することを特徴とする。
プロセッサの変更を抑制して保護機能を実現することができる情報処理装置を提供することができる。
マイコンの概略的な特徴を説明する図の一例である。 従来技術の課題を説明するための図の一例である。 実行時間の増大について説明する図の一例である。 マイコンのハードウェア構成図の一例である。 ソフトウェアブロック図の一例である。 安全系アプリと非安全系アプリの周辺回路へのアクセス許否をまとめたテーブルの一例を示す図である。 プロセッサが安全系アプリを実行中のメモリ保護について説明する図の一例である。 プロセッサが非安全系アプリを実行中のメモリ保護について説明する図の一例である。 安全系アプリが動作中の時間保護について説明する図の一例である。 非安全系アプリが動作中の時間保護について説明する図の一例である。 保護ブリッジが2つ存在する場合のマイコンの一例を示す図である。 安全系アプリがアクセスする周辺回路が複数、設けられたマイコンの構成図の一例である。
以下、本発明の実施の形態について説明する。しかしながら、本発明の技術的範囲が、本実施の形態に限定されるものではない。
図1は、本実施形態のマイコンの概略的な特徴を説明する図の一例である。
本実施形態では、プロセッサが主に安全系アプリと非安全系アプリを実行し、安全系アプリは周辺回路Aを、非安全系アプリは周辺回路Bを使用する。メモリ保護を実現するには、少なくとも非安全系アプリが周辺回路Aにアクセスすることを防止する必要がある。そこで、プロセッサと周辺回路Aの間に保護ブリッジを設ける。保護ブリッジは、REG_WORLDレジスタの値に応じてプロセッサによる周辺回路Aへのアクセスを制御する。
REG_WORLDレジスタの値は、安全系アプリが実行する契機となるNMI(Non Maskable Interrupt)端子への割込みにより"1"となる。非安全系アプリが実行する場合はREG_WORLDレジスタの値は"0"のままである。
図1(a)ではプロセッサが非安全系アプリを実行している。この場合、REG_WORLDレジスタの値は"0"である。保護ブリッジはREG_WORLDレジスタの値が"0"なので周辺回路Aへのアクセスを禁止する。
図1(b)ではプロセッサが安全系アプリを実行している。この場合、NMI端子に割込みが生じたためREG_WORLDレジスタの値は"1"である。保護ブリッジはREG_WORLDレジスタの値が"1"なので周辺回路Aへのアクセスを許可する。
このように、非安全系アプリが実行される場合はREG_WORLDレジスタの値は"0"のままなので、非安全系アプリが周辺回路Aにアクセスを試みても禁止できる。よって、アプリ間のメモリ保護が可能になる。
また、NMI端子への割込みは周辺回路Aによってのみ生じる。この割込みはマスクされないので、プロセッサは周辺回路Aから割込みが発生したことを契機に安全系アプリを実行できる。これに対し、周辺回路Bの割込みはIRQ端子に入力される。安全系アプリはIRQをマスクできるので、周辺回路Bから割込みが発生しても、プロセッサは安全系アプリを優先して実行できる。したがって、安全系アプリの実行を優先するという時間保護が可能になる。
〔従来技術の課題〕
図2は、従来技術の課題を説明するための図の一例である。はじめに従来技術の下記の5つの課題について説明する。
1.プロセッサの変更
メモリ保護や時間保護のような保護機能を実現するためには、一般にプロセッサで特権モードとユーザモードをサポートする必要があるとされている。しかし、保護機能を有さないプロセッサに特権モードとユーザモードを導入するにはプロセッサの設計変更が必要になる(例えば、モード変更の命令のデコード、デコード結果に応じた信号の処理・制御など)。
また、メモリ保護を行うMPU又はMMUはプロセッサと密接に関連しているため、MPU又はMMUを搭載するためにプロセッサの変更が必要になる。本実施形態ではMPU又はMMUは使用しないがこれらについて簡単に説明する。MPUは、メモリ保護機能を有するハードウェアである。アプリケーションの起動時に、RTOS(Real Time Operating System)などのシステムソフトウェア(以下、単にRTOSという)はアプリケーション毎にアクセス可能なアドレス範囲とそのアクセス属性(Read Write 実行)の対応テーブルをMPUに登録する。アプリケーションがメモリにアクセスする際、MPUは、そのアドレスがアプリケーションのアクセス可能なアドレス範囲としてMPUに登録されているか否かを比較する。アクセスが許可されたアドレス範囲であり、かつ、アクセス属性が許可されている場合にだけ、MPUはメモリにアクセス先のアドレスを出力する。
MMUはアドレス変換機能とメモリ保護機能を有している。アドレス変換とは、プロセッサがプログラムの実行時に指定する論理アドレスから、実際のRAMの物理アドレスに変換することをいう。RTOSはページ単位に物理アドレス空間と論理アドレス空間を区切り、アプリケーションからの要求に応じて、ページを割り当てる。論理アドレスと物理アドレスとを紐づけるテーブルをページテーブルという。ページテーブルをアプリケーション毎に用意することで、RTOSはアプリケーション毎に異なる論理アドレス空間を生成する。プロセッサが実行するアプリケーションに応じてRTOSはページテーブルを切り替えるので、アプリケーションが別のアプリケーションの物理アドレスにアクセスすることを防止でき、メモリ保護が可能になる。
しかしながら、このようなページテーブルの内容はRTOSによりレジスタに設定されるため、プロセッサにレジスタを新たに設けることが必要である。また、対応テーブルや
レジスタの内容をアプリケーションが書き換えないようにユーザモードを用意するなどプロセッサの変更が必要になってしまう。
2.ハードウェア規模の増大
メモリ保護機能を実現するMPU又はMMUはハードウェアなので、プロセッサに外付けするとしても内部に搭載するにしても、その分の搭載スペースが必要になる。図2ではプロセッサの内部にMPU又はMMUが搭載されているが、その分ハードウェア規模が増大している。
また、時間保護を可能とするには、タイマやカウンタが必要になるので、図2では時間保護機能としてタイマも追加されているが、その分、ハードウェア規模が増大してしまう。
3.ソフトウェアの変更
MPUがメモリ保護するためのアドレス範囲が登録された対応テーブルやMMUがアドレス変換するためのページテーブルはRTOSが管理するため、MMU又はMPUに対応したRTOSを搭載するか、又は、RTOSを変更する必要がある。このようなRTOSを図2では、保護対応RTOSと記載している。このため、既存のRTOSを変更する必要がある。
4.ソフトウェア規模の増大
ソフトウェア(RTOS)の変更により、RTOSはMMU又はMPUを制御するための機能を搭載する必要があるため、ソフトウェア規模も該機能がない場合と比べて大きくなる。ソフトウェア規模が大きくなるとそれを記憶するためのメモリ容量も大きくなる。図2では、保護機能がないRTOSよりも保護対応RTOSの面積が大きくなっている。
5.実行時間の増大
図3は、実行時間の増大について説明する図の一例である。保護機能がない場合、アプリケーションはRTOSと同じアドレス範囲にアクセス可能であるため、この意味ではプロセッサは常に特権モードで動作する。よって、保護機能がない場合、アプリケーションは次のようにRTOSを呼び出す。
(i)アプリケーションからRTOSの機能を呼び出すためにRTOSのAPI(Application Interface)として関数を呼び出す(図では「タスク起動API呼び出し」となっているが、これはRTOSではタスク単位に処理を実行するためで、ここでは1つの関数が1つのタスクという状況を想定している。処理としては関数呼び出しと同じである。)。
(ii)関数を呼び出すと、プログラムカウンタの値がスタックに退避され、プログラムカウンタに関数の命令が記憶されたアドレスがセットされRTOSが実行される。このように、保護機能がない場合、特権モードのままジャンプ命令と同程度の時間でプロセッサはRTOSの関数を実行できる。
これに対し保護機能がある場合、アプリケーションはユーザモードでしか動作しない。また、RTOSは特権モードでしか動作しない。アプリケーションが自由に動作モードを切り替えることは禁止すべきであるので、アプリケーションがRTOSの関数を呼び出す場合は、以下のようにしてRTOSに処理が切り替わる。
(i)アプリケーションがRTOSの機能を呼び出す際、例外(例えばTRAP命令、INT命令等)を発生させる。これらの命令の引数には、呼び出す関数に対応した値が記述されている。例外命令の実行により、プロセッサは特権モードに移行して、図の例外出入口処理を実行する。
(ii)例外出入口処理において、例えば割込みコントローラは例外又は割込みを発生させた命令の引数である割り込みベクタを取り出し、該割り込みベクタが指示する割込みハンドラや割り込み処理ルーチン(以下、単に割込みハンドラというが、便宜上の記載であり例外出入口処理を行うソフトウェアの名称は問わない)を実行する。割り込みハンドラはまずレジスタの内容などプロセッサのコンテキストを退避する。MPUを搭載している場合は対応テーブルを変更し、MMUを搭載している場合はページテーブルを変更する。
(iii)そして、割込みハンドラは自身が呼び出す関数として予め定められている、関数を呼び出す。
(iv)プログラムカウンタにRTOSの呼び出された関数のアドレスが設定されるので、プロセッサはアプリケーションが呼び出した関数を実行する。
(v)関数の実行の完了時には、関数はプログラムカウンタに割込みハンドラのアドレスを設定する。
(vi)割込みハンドラは、例外出入り口処理を行う。すなわち、退避したコンテキストを復帰させ、対応テーブル、ページテーブルを元に戻す。
(vii)割込みハンドラは、RTOSに依頼して動作モードをユーザモードに変更する。特権モードからユーザモードへの変更はモード切り替え命令により行うことができる。
(viii)アプリケーションはプロセスを再開する。
なお、ユーザモードと特権モードの切り換えタイミングなどは一例であり、プロセッサの仕様によって変わるものである。しかし、図示するように、保護機能がある場合、例外出入り口処理や動作モードの変更のため、実行時間が増大してしまう。
〔構成例〕
本実施形態では、既存のプロセッサに追加するハードウェアとハードウェアを制御するソフトウェアにより上記の課題1〜5を解決する。既存のプロセッサには、MPUやMMUのメモリ保護機能はなく、動作モードは特権モードのみであるとする。
本実施形態ではメモリ保護を、「重要なアプリケーションが使用するメモリが重要性が低いアプリケーションからアクセスされないこと」と定義する。これは、あるアプリAのメモリは他のアプリBから保護されるという意味では、従来のメモリ保護と同様である。アプリBのメモリはアプリAから保護されなくてもよいし、保護されてもよい。
また、本実施形態では時間保護を「重要なアプリケーションが、重要性が低いアプリケーションよりも優先的に実行されること」と定義する。時間保護機能についてはRTOSが提供する場合がある。RTOSの定義は明確でないが、一般に、タスク毎に予め定められた最長期限をこえないことを監視することで、各タスクの実行時間を保証する機能を有するもの、とされる。本実施形態ではタイマを用いずに(マイコンに搭載されているとしても)時間保護を行うため、いわゆるRTOSとしての時間保護機能は組み込まれていない。しかし、「重要なアプリケーションが、重要性が低いアプリケーションよりも優先的に実行されること」で、擬似的に、重要なアプリケーションは最長期限を超えないように処理されることができる。
図4(a)は、本実施形態のマイコン100のハードウェア構成図の一例を示し、図4(b)は、比較のために示した従来のマイコンのハードウェア構成図の一例である。マイコン100は、車両の例えばECU(Electronic Control Unit)に搭載される。ECUにはエンジンECUのような高性能なものから、モータを制御して開閉部材のロック/アンロック、開閉等を行う比較的、簡易なものまであるが、用途は限定されない。
図4(a)と図4(b)を比較すると、マイコン100は、新たに保護状態コントローラ11、保護割込みコントローラ12、及び、保護ブリッジ21を有している。
まず、バス31には割込みコントローラ13、プロセッサ14、及び、保護対応周辺回路が接続されている。また、2つの外部バス32,33にそれぞれ周辺回路A,Bが接続されている。周辺回路A,Bが有するMEM15,18はRAMなどのランダムアクセスメモリであり、アプリケーションやRTOS等が配置される。MEM15,18の他にプログラムが記憶されたフラッシュROMを有しているが図では省略されている。UART16、19はシリアル通信の回路の一例であり、I2Cなどの通信プロトコルの回路を搭載してもよい。TIMER17,20はプロセッサ14により設定された時間を、クロックをカウントして計測し該時間が経過するとプロセッサ14に割り込みする。このTIMERはRTOSが時間保護に使用するものではなく、アプリケーションが処理のタイミング制御などに使用するための回路である。なお、これらの周辺回路は一例であり、種々の周辺回路を有していてよい。
バス31に接続されたDZMC27とMEM24、DZUZRT25、及び、DZTIMER26は保護対応周辺回路である。これらについては後述する。
周辺回路Aは安全系アプリにより使用され、周辺回路Bは非安全系アプリにより使用される。安全系アプリとは車両の安全性が影響するアプリケーションであり、非安全系アプリとはそれ以外のアプリケーションである。安全系アプリと非安全系アプリについては後述する。
周辺回路Aと周辺回路Bの物理アドレス空間は連続しており、安全系アプリは周辺回路A及び周辺回路Bの物理アドレスを指定してアクセスし、非安全系アプリは周辺回路Bのみの物理アドレスを指定してアクセスする。安全系アプリが動作する周辺回路Aに非安全系アプリがアクセスすると車両の安全性が阻害されるおそれがあるためである。
しかし、非安全系アプリも周辺回路Aにアクセスしないように設計されているが、なんらかのアプリケーションが周辺回路BのMEMに侵入して、プロセッサ14が実行することで周辺回路Aにアクセスしないとも限らない。
そこで、周辺回路Aとプロセッサ(バス31と外部バス32)14は保護ブリッジ21を介して接続されている。保護ブリッジ21は、保護状態コントローラ11のREG_WORLDレジスタ22の値に応じて、プロセッサ14が周辺回路Aにアクセスすることを禁止又は許可する。REG_WORLDレジスタ22は1bitあればよい。
保護状態コントローラ11はREG_WORLDレジスタ22を有している。REG_WORLDレジスタ22はプロセッサ14で動作しているアプリケーションの種類を示す。
安全系アプリ :REG_WORLDレジスタ=1
非安全系アプリ:REG_WORLDレジスタ=0
保護状態コントローラ11は、保護割込みコントローラ12がプロセッサ14のNMI端子に出力するREQ_NMI信号を監視し、REG_WORLDレジスタ22を操作する。なお、NMI端子はRTOS及びアプリケーションがマスクできない割込み端子である。
REQ_NMI信号の立ち上がり(又は立ち下がり)→ REG_WORLDレジスタ=1
REG_WORLDレジスタ22を"0"に戻すのはプロセッサ(後述する保護制御モニタ)14であるため、保護状態コントローラ11はREG_WORLDレジスタ22を"0"に戻す処理を行わない。安全系アプリは処理の終了時に保護制御モニタを呼び出すため、安全系アプリが処理を終了するとREG_WORLDレジスタ22は"0"になる。
保護割込みコントローラ12は、周辺回路A及び周辺回路Bの割込み要求線が接続される割込みコントローラである。保護割込みコントローラ12は、プロセッサ14及び割込みコントローラ13に接続されている。保護割込みコントローラ12は周辺回路Aからの割込み要求(REQ_NMI)をプロセッサ14のNMI端子に出力し、周辺回路Bからの割込み要求を保護割込みコントローラ12に出力する。割込みコントローラ13はプロセッサ14のIRQ端子に割込み要求する。IRQ端子はマスク可能な割込み端子である。
したがって、周辺回路Aからの割込み要求は必ずプロセッサ14に伝達される。これにより、周辺回路Aからの割込みがあればプロセッサ14は安全系アプリを非安全系アプリよりも優先して実行することができる。一方、周辺回路Bからの割込み要求は、従来どおり、マスクされていなければプロセッサ14に伝達される。なお、周辺回路Bの割込みは、保護割込みコントローラ12でなく従来の割込みコントローラ13に入力されていてもよい。
保護ブリッジ21はREG_WORLDレジスタ22の値を監視し、プロセッサ14が非安全系アプリを実行中に周辺回路Aにアクセスすることを禁止する。すなわち、「REG_WORLDレジスタ=0」の場合、保護ブリッジ21はプロセッサ14によるアクセスを無視するか又は例外を発生させる。なお、保護ブリッジ21は、保護対応周辺回路を搭載する場合は不要とすることができる。
保護対応周辺回路は、周辺回路A,Bと同等の機能を有する周辺回路であるが、保護状態コントローラ11のREG_WORLDレジスタ22の値を参照可能になっている。したがって、保護ブリッジ21と同等の制御をMEM24、DZUART25又はDZTIMER26毎に実現できる。プロセッサ14がMEM24、DZUART25、又は、DZTIMER27にアクセスした場合、保護対応周辺回路の各回路はREG_WORLDレジスタ22の値が"1"であればアクセスを受け付け、"0"であればアクセスを受け付けない。したがって、安全系アプリだけが保護対応周辺回路にアクセスできる。
また、保護対応周辺回路は、非安全系アプリも使用できるように、RTOSなどが設定することもできる。すなわち、保護対応周辺回路の回路毎に、REG_WORLDレジスタ22の値を参照しないように予め設定しておけばよい。これにより、プロセッサ14はREG_WORLDレジスタ22の値に関係なく保護対応周辺回路にアクセスできる。
また、例えばRTOSは保護対応周辺回路を、安全系アプリのみがアクセス可能か、安全系アプリと非安全系アプリの両方がアクセス可能かを時分割して制御することもできる。すなわち、RTOSは保護対応周辺回路に例えばフラグを配置し、安全系アプリのみがアクセス可能か、安全系アプリと非安全系アプリの両方がアクセス可能かを動的に切り替える。これにより、例えば、安全系アプリの処理負荷が大きくなった場合にだけ、保護対応周辺回路を安全系アプリに優先的に使用させることができる。
〔ソフトウェアブロック〕
図5は、ソフトウェアブロック図の一例を示す。プロセッサ上で1つの保護制御モニタ40が動作し、その上で2つの保護機能なしRTOS41が動作し、各保護機能なしRTOS上で安全系アプリ42と非安全系アプリ43とが動作している。非安全系アプリと安全系アプリはそれぞれ1つ以上の割込みハンドラとタスクを有している。なお、図では同時に安全系アプリと非安全系アプリが動作するように図示されているが、安全系アプリと非安全系アプリは同時に実行されない。安全系アプリと非安全系アプリの処理内容には、従来の保護機能がないマイコンに搭載された時点と比較して、変更の必要がないか、変更があってもわずかである。
本実施形態では安全系アプリをASIL(Automotive Safety Integrity Level)が所定値以上のアプリであると定義する。ASILはISO26262に規定される自動車の安全要求と安全対策を指定する指標である。ASILでは5段階の安全性レベルが定められており、安全性の基準が高い順にD,C,B,A、QMとなっている。ASILは、ハザード(障害)によって生じる被害の大きさ、ハザードの生じる頻度、及び、ハザードが生じた場合の制御難易度を検討し、車両メーカ等が決定する。車両メーカは、ISO26262の認証機関に対し、ASILのランクに応じた措置が施されていることの資料を提出するなどして、認証機関から認証を受ける。これにより、車両メーカ等は、決定したASILのランクに応じた措置が施していることを保証することができる。
高いランクのASILで開発すべきアプリケーションとは、車両の基本性能(走る、曲がる、止まる)に関する制御を行うアプリケーションである。これ以外の例えば外部のネットワークのサーバと通信するアプリケーション(例えば、制御に関係ないエンターテイメント系のアプリケーション)や、AV系のアプリケーションは低いASILのランクで開発される。例えば、安全系アプリは、ASIL−D,ASIL−C,ASIL−B又はASIL−Aとし、非安全系アプリをASIL−QMと区別することができるが、安全系アプリ・非安全系アプリとASILの対応は任意である。
後述する時間保護にて説明するが、プロセッサ14は安全系アプリを優先して実行する。安全系アプリのタスクがなくなると、非安全系アプリが実行される。非安全系アプリの実行中に周辺回路Aから割込みが発生すると、プロセッサ14は安全系アプリの割込み内容に応じた処理を開始する。したがって、安全系アプリが優先して実行される。
保護制御モニタ40は安全系アプリが優先されるようにプロセッサ14が実行するアプリケーションを、安全系アプリから非安全系アプリへ、又は、非安全系アプリから安全系アプリに切り替える。安全系アプリの動作中、保護制御モニタ40が呼び出されるのは安全系アプリのタスクがなくなった場合であるので、安全系アプリは、安全系アプリから非安全系アプリへ切り替える処理を行う保護制御モニタ40のアドレスをプログラムカウンタに設定する。
非安全系アプリの動作中、保護制御モニタ40が呼び出されるのは、NMIへ割込みが生じた場合なので、プロセッサ14はNMIへの割込みに対し、非安全系アプリから安全系アプリへ切り替える処理を行う保護制御モニタ40のアドレスをプログラムカウンタに設定する。
または、保護制御モニタ40が呼び出される直前のREG_WORLDレジスタ22の値を判別して、安全系アプリと非安全系アプリのどちらへ切り替えるかを判断してもよい。
〔メモリ保護について〕
図6は、安全系アプリと非安全系アプリの周辺回路へのアクセス許否をまとめたテーブルの一例を示す図である。REG_WORLDレジスタ22が"1"の場合、安全系アプリは周辺回路A,Bにアクセスでき、REG_WORLDレジスタ22が"0"の場合、非安全系アプリは周辺回路Bにだけアクセスできる。また、REG_WORLDレジスタ22が"1"の場合に非安全系アプリが動作することはなく、REG_WORLDレジスタ22が"0"の場合に安全系アプリが動作することはない。
図7は、プロセッサ14が安全系アプリを実行中のメモリ保護について説明する図の一例である。安全系アプリが周辺回路Aにアクセスするためには、REG_WORLDレジスタ22が"1"である必要がある。マイコン100の起動時、RTOSが起動してから安全系アプリが実行されるが、この時のREG_WORLDレジスタ22が"1"であることが好ましい。このため、マイコン100の起動時、REG_WORLDレジスタ22は"1"に初期化される(リセット値"1"である)。
保護ブリッジ21は、プロセッサ14からアクセス要求があると、REG_WORLDレジスタ22が"1"の場合にだけアクセスを許可する。したがって、図示するように安全系アプリが動作中に保護ブリッジ21にアクセス要求があると、保護ブリッジ21はアクセスを許可する。なお、バス31と外部バス33には保護ブリッジ21がないので、安全系アプリが周辺回路Bにアクセスすることは可能である。
また、安全系アプリが処理の終了時に保護制御モニタ40を呼び出し、REG_WORLDレジスタ22が"0"になり、非安全系アプリが実行される。この後、周辺回路Aが割り込みすればREG_WORLDレジスタ22が"1"になり安全系アプリが再度、実行される。
図8は、プロセッサ14が非安全系アプリを実行中のメモリ保護について説明する図の一例である。非安全系アプリが動作している場合、REG_WORLDレジスタ22は"0"である。したがって、保護ブリッジ21は、非安全系アプリが動作中にアクセス要求があると、REG_WORLDレジスタ22が"0"なので、アクセスを禁止すると共に例外を発生させる。
例外の発生により、例えばプロセッサ14がリセットされる。または、RTOSが例外に対応した処理を開始して、非安全系アプリの実行を禁止するなどのフェールセーフ処理を行う。
なお、REG_WORLDレジスタ22の値に関係なく、非安全系アプリは周辺回路Bにアクセスすることができる。
〔時間保護について〕
周辺回路Aの割込みはマスクされないので、安全系アプリが非安全系アプリよりも優先的に実行される。また、安全系アプリは動作中にIRQをマスクする。これらにより、時間保護が実現される。
図9は、安全系アプリが動作中の時間保護について説明する図の一例である。
t0:安全系アプリが動作するため、REG_WORLDレジスタ22が"1"となる。安全系アプリは動作の開始後、割込みを禁止する命令(例えばDI命令)を実行してIRQをマスクする。
t1:周辺回路Bから割込みが発生する。IRQがマスクされているので、安全系アプリは処理を継続する。
t2:周辺回路Aから割込みが発生する。保護割込みコントローラ12はNMI端子に割込みするので、割込みが受け付けられる。安全系アプリはプログラムカウンタの値をスタックに退避して、割込みハンドラを呼び出す。割込みハンドラは割込み内容に応じた処理などを行う。
t3:割込みハンドラは処理を終了すると、スタックに退避している値をプログラムカウンタにセットするので、処理が安全系アプリに戻る。安全系アプリは処理を再開する。
t4:安全系アプリは処理が終了すると、割込みを許可する命令(例えばEI命令)を実行してIRQのマスクを解除する。そして、保護制御モニタ40を呼び出す。この場合はジャンプ命令のように、保護制御モニタ40の所定のアドレスをプログラムカウンタにセットすればよい。
t4〜t5:保護制御モニタ40は、REG_WORLDレジスタ22を"1"から"0"に設定する。
t5:保護制御モニタ40は安全系アプリから呼び出されたので、非安全系アプリに切り替えるためプロセッサ14に非安全系アプリの割込みハンドラを実行させる。
t6:非安全系アプリの割込みハンドラは非安全系アプリの実行を開始する。
このように、安全系アプリの実行中は、周辺回路Aからの割込みだけが受け付けられるので、安全系アプリを非安全系アプリよりも優先して実行できる。
図10は、非安全系アプリが動作中の時間保護について説明する図の一例である。
t0:非安全系アプリが動作するため、REG_WORLDレジスタ22が"0"となっている。
t1:周辺回路Bから割込みが発生する。保護割込みコントローラ12はIRQ端子に割込みするので、マスクされていなければ割込みが受け付けられる。非安全系アプリはプログラムカウンタの値をスタックに退避して、割込みハンドラを呼び出す。割込みハンドラは割込み内容に応じた処理などを行う。
t2:割込みハンドラは処理を終了すると、スタックに退避している値をプログラムカウンタにセットするので、処理が非安全系アプリに戻る。非安全系アプリは処理を再開する。
t3:非安全系アプリは動作の必要上、割込みを禁止する命令(例えばDI命令)を実行してIRQをマスクする。
t4:周辺回路Aから割込みが発生する。保護割込みコントローラ12はNMI端子に割込みするので、IRQがマスクされていても割込みが受け付けられる。
また、保護割込みコントローラ12がNMI端子に割込みするので、REG_WORLDレジスタ22は"1"になる。保護割込みコントローラ12がNMI端子に割込みすることで、プロセッサ14は保護制御モニタ40を実行する。
t5:割込みにより実行される保護制御モニタ40は、安全系アプリを起動するので、プロセッサ14に安全系アプリの割込みハンドラを実行させる。
t6:安全系アプリの割込みハンドラは安全系アプリの実行を開始する。
このように、非安全系アプリの実行中は、周辺回路Aからの割込みにより安全系アプリに切り替えられるので、安全系アプリを非安全系アプリよりも優先して実行できる。
〔課題が解決されていること〕
以上説明したように、本実施形態のマイコン100は上記1〜5の課題を解決することができる。
1.保護状態コントローラ11、保護割込みコンコントローラ及び保護ブリッジ21を追加するが、これらの追加はプロセッサ14の変更が不要なので、メモリ保護や時間保護を実現するためにプロセッサ14を変更する必要がない。
2.保護状態コントローラ11、保護割込みコンコントローラ及び保護ブリッジ21というハードウェアを追加する必要があっても、MPUやMMUと比べると単純なハードウェアでよいため、ハードウェアの増加は少なくて済む。
3.アプリケーションやRTOSにはほとんど変更がなく、保護制御モニタ40を追加しても、全体的なソフトウェアの変更が少なくて済む。
4.アプリケーションやRTOSにはほとんど変更がなく、保護状態コントローラ11、保護割込みコンコントローラ及び保護ブリッジ21は簡易な構成であるため、保護制御モニタ40を追加してもソフトウェアは小規模で実現できる。
5.ユーザモードがないので、アプリケーションからRTOSの関数を呼び出す際、例外出入り口処理が不要であり実行時間の増大を抑制できる。
〔変形例〕
図11に示すように保護ブリッジ34を更に1つ追加して、周辺回路Bを保護することも可能である。保護ブリッジ21の動作は上述したとおりである。これに対し、保護ブリッジ34は次のように動作する。
REG_WORLDレジスタ=1
→ プロセッサ14が周辺回路Bにアクセスすることを禁止する。
REG_WORLDレジスタ=0
→ プロセッサ14が周辺回路Bにアクセスすることを許可する。
すなわち、REG_WORLDレジスタ22が"0"の場合、プロセッサ14は非安全系アプリを実行しているので、非安全系アプリが周辺回路Bにアクセスする。しかし、REG_WORLDレジスタ22が"1"であり、プロセッサ14が安全系アプリを実行している場合は、周辺回路Bへのアクセスを禁止できるので、アプリ間のメモリ保護が可能になる。
また、REG_WORLDレジスタ22のbit数を複数bitにしてもよい。例えば2bitとした場合、REG_WORLDレジスタ22は「00、01、10、11」の4つの状態を保持する。この場合、保護割込みコントローラ12は、周辺回路Aのうち割込み要求した回路に応じてREG_WORLDレジスタ22の状態を変える(例えば、MEMの場合は01、UARTの場合は10、TIMERの場合は11)。
保護ブリッジ21は、例えば以下のようにアクセスを制御する。
00:周辺回路Aへのアクセスを禁止する
01:MEMへのアクセスのみ許可する
10:UARTへのアクセスのみ許可する
11:TIMERへのアクセスのみ許可する
こうすれば、割込み要求した回路にのみアクセス許可できるので、厳密な保護が可能になる。
また、REG_WORLDレジスタ22が複数bit有することは、図12のようにマイコン100が安全系アプリがアクセスする周辺回路を複数、設けた場合に有効である。例えば、安全系アプリに安全系アプリ1,安全系アプリ2の2種類があり、安全系アプリ1は周辺回路Aに、安全系アプリ2は周辺回路Cにアクセスするものとする。
この場合、保護割込みコントローラ12は、周辺回路Aが割り込みした場合はREG_WORLDレジスタ22を01、周辺回路Cが割り込みした場合はREG_WORLDレジスタ22を10、に設定する。
保護ブリッジ35は、例えば以下のようにアクセスを制御する。
00:周辺回路A、Cへのアクセスを禁止する
01:周辺回路Aへのアクセスを許可する
10:周辺回路Cへのアクセスを許可する
こうすれば、安全系アプリが複数種類あっても、プロセッサ14が実行する安全系アプリに応じて周辺回路へのアクセスを制御できる。
11 保護状態コントローラ
12 保護割込みコントローラ
13 割込みコントローラ
14 プロセッサ
21 保護ブリッジ
22 REG_WORLDレジスタ
100 マイコン

Claims (7)

  1. 第一のアプリがアクセスする第一の周辺回路と
    第二のアプリがアクセスする第二の周辺回路と、
    前記第一の周辺回路の割込み要求をプロセッサのマスク禁止割込み端子に出力し、前記第二の周辺回路の割込み要求をプロセッサのマスク可能割込み端子に出力する割り込み管理手段と、
    前記第一の周辺回路及び前記第二の周辺回路とバスを介して接続され、前記割り込み管理手段がマスク禁止割込み端子に割込み要求した場合、前記第一のアプリを実行するプロセッサと、
    前記第一の周辺回路が割込み要求したことを記憶する割込み状態記憶手段と、
    前記割込み状態記憶手段が前記第一の周辺回路が割込み要求したことを記憶していない場合、前記プロセッサが前記第一の周辺回路にアクセスすることを禁止するアクセス制御手段と、
    を有する情報処理装置。
  2. 前記プロセッサが実行するアプリを前記第一のアプリから前記第二のアプリに、又は、前記第二のアプリから前記第一のアプリに切り替えるアプリ切り換えソフトを記憶しており、
    前記アプリ切り換えソフトは、前記第一のアプリから呼び出された場合、前記プロセッサが実行するアプリを前記第二のアプリに切り換え、
    前記割り込み管理手段が前記プロセッサのマスク禁止割込み端子に割込み要求したことで前記アプリ切り換えソフトが実行された場合、前記プロセッサが実行するアプリを前記第一のアプリに切り換える、
    ことを特徴とする請求項1記載の情報処理装置。
  3. 前記第一のアプリは、マスク可能割込み端子をマスクして処理を実行し、
    前記プロセッサが前記第一のアプリを実行中に、前記割り込み管理手段がマスクされているマスク可能割込み端子に割込み要求した場合、前記プロセッサは前記第一のアプリを継続して実行し、
    前記プロセッサが前記第一のアプリを実行中に、前記割り込み管理手段がマスク禁止割込み端子に割込み要求した場合、前記プロセッサは割込みの種類に応じた処理を実行後、前記第一のアプリの実行を再開し、
    前記第一のアプリは処理が終了した場合に前記アプリ切り換えソフトを呼び出す、
    ことを特徴とする請求項2記載の情報処理装置。
  4. 前記プロセッサが前記第二のアプリを実行中に、前記割り込み管理手段がマスクされていないマスク可能割込み端子に割込み要求した場合、前記プロセッサは割込みの種類に応じた処理を実行後、前記第二のアプリの実行を再開し、
    前記割り込み管理手段がマスク禁止割込み端子に割込み要求した場合、前記プロセッサは前記アプリ切り換えソフトを呼び出す、
    ことを特徴とする請求項2記載の情報処理装置。
  5. 前記アプリ切り換えソフトは、前記プロセッサに前記第二のアプリを実行させる前に、前記割込み状態記憶手段が前記第一の周辺回路が割込み要求したという記憶を消去する、
    ことを特徴とする請求項3記載の情報処理装置。
  6. 複数の回路のそれぞれと前記プロセッサの間に個別用アクセス制御手段を有する第三の周辺回路を有し、
    前記個別用アクセス制御手段は、前記割込み状態記憶手段が前記第一の周辺回路が割込み要求したことを記憶していない場合、前記プロセッサがアクセス要求した前記回路にアクセスすることを禁止する、
    ことを特徴とする請求項1〜5いずれか1項記載の情報処理装置。
  7. 前記個別用アクセス制御手段のそれぞれは、前記回路へのアクセス制御を行うか否かを動的に設定可能である、ことを特徴とする請求項6記載の情報処理装置。
JP2012221415A 2012-10-03 2012-10-03 情報処理装置 Pending JP2014074995A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012221415A JP2014074995A (ja) 2012-10-03 2012-10-03 情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012221415A JP2014074995A (ja) 2012-10-03 2012-10-03 情報処理装置

Publications (1)

Publication Number Publication Date
JP2014074995A true JP2014074995A (ja) 2014-04-24

Family

ID=50749119

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012221415A Pending JP2014074995A (ja) 2012-10-03 2012-10-03 情報処理装置

Country Status (1)

Country Link
JP (1) JP2014074995A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017002939A1 (ja) * 2015-07-01 2017-01-05 日立オートモティブシステムズ株式会社 電子制御装置及びスタック使用方法
JP2017058873A (ja) * 2015-09-15 2017-03-23 ルネサスエレクトロニクス株式会社 半導体装置
JP2017215738A (ja) * 2016-05-31 2017-12-07 株式会社日立超エル・エス・アイ・システムズ 計算機システム、及び、計算機システムの制御方法
JP2020159344A (ja) * 2019-03-28 2020-10-01 株式会社デンソーテン 制御装置および制御方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017002939A1 (ja) * 2015-07-01 2017-01-05 日立オートモティブシステムズ株式会社 電子制御装置及びスタック使用方法
JP2017016409A (ja) * 2015-07-01 2017-01-19 日立オートモティブシステムズ株式会社 電子制御装置及びスタック使用方法
JP2017058873A (ja) * 2015-09-15 2017-03-23 ルネサスエレクトロニクス株式会社 半導体装置
JP2017215738A (ja) * 2016-05-31 2017-12-07 株式会社日立超エル・エス・アイ・システムズ 計算機システム、及び、計算機システムの制御方法
JP2020159344A (ja) * 2019-03-28 2020-10-01 株式会社デンソーテン 制御装置および制御方法

Similar Documents

Publication Publication Date Title
US9633231B2 (en) Hardware-protective data processing systems and methods using an application executing in a secure domain
US8595487B2 (en) Virtualization hardware for device driver isolation
RU2313126C2 (ru) Система и способ для защиты от недоверенного кода режима управления с системой с помощью переадресации прерывания режима управления системой и создания контейнера виртуальной машины
JP4759059B2 (ja) メモリページをプログラムに対応付けるページカラーリング
EP3241149B1 (en) Method to isolate real-time or safety-critical software and operating system from non-critical software and operating system
US8984245B2 (en) Memory protection unit and method for controlling an access to memory device
CN111414626B (zh) 基于tee扩展的实时性保证方法及系统
US7523229B2 (en) Memory protection during direct memory access
US11675526B2 (en) Memory-access control
US9740636B2 (en) Information processing apparatus
US8185952B2 (en) Static and dynamic firewalls
US9652348B2 (en) Debugging in a data processing apparatus
JP2013161299A (ja) 情報処理装置、インタフェースアクセス方法
CN112818327A (zh) 基于TrustZone的用户级代码和数据安全可信保护方法及装置
JP2014074995A (ja) 情報処理装置
EP2433238B1 (en) Systems and methods of determining a trust level from system management mode
CN117234729B (zh) 动态内存保护方法、装置、计算机设备及存储介质
JP6838223B2 (ja) 車両制御装置
Masti et al. Enabling trusted scheduling in embedded systems
US7774517B2 (en) Information processing apparatus having an access protection function and method of controlling access to the information processing apparatus
TWI676935B (zh) 處理中斷優先級的電路系統
WO2013125012A1 (ja) 計算機、アクセス管理方法およびアクセス管理プログラム
Farrall et al. Hardware and software support for mixed-criticality multicore systems
JP2006338426A (ja) 計算機システム
JP2013084219A (ja) 情報処理装置、異常判定方法