特開2020-60909(P2020-60909A)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ SCSK株式会社の特許一覧

<>
  • 特開2020060909-処理プログラム、及び処理システム 図000003
  • 特開2020060909-処理プログラム、及び処理システム 図000004
  • 特開2020060909-処理プログラム、及び処理システム 図000005
  • 特開2020060909-処理プログラム、及び処理システム 図000006
  • 特開2020060909-処理プログラム、及び処理システム 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2020-60909(P2020-60909A)
(43)【公開日】2020年4月16日
(54)【発明の名称】処理プログラム、及び処理システム
(51)【国際特許分類】
   G06F 9/48 20060101AFI20200319BHJP
【FI】
   G06F9/48 110E
【審査請求】未請求
【請求項の数】4
【出願形態】OL
【全頁数】15
(21)【出願番号】特願2018-191001(P2018-191001)
(22)【出願日】2018年10月9日
(71)【出願人】
【識別番号】399104844
【氏名又は名称】SCSK株式会社
(74)【代理人】
【識別番号】100107364
【弁理士】
【氏名又は名称】斉藤 達也
(72)【発明者】
【氏名】高橋 浩和
(57)【要約】
【課題】処理時間を短縮しつつ割り込みの禁止についての柔軟性を向上させることが可能となる処理プログラム、及び処理システムを提供すること。
【解決手段】
コンピュータを、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを制御する処理手段、として機能させ、CPU3は、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みが禁止されるべき区間である禁止区間中に、所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、禁止区間中に、所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとしない場合、禁止処理を行わない。
【選択図】図1
【特許請求の範囲】
【請求項1】
コンピュータを、
実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを制御する処理手段、として機能させ、
前記処理手段は、
前記実行中の処理ルーチンへの前記所定の割り込み処理ルーチンの割り込みが禁止されるべき区間である禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、
前記禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとしない場合、前記禁止処理を行わない、
処理プログラム。
【請求項2】
前記処理手段は、
前記実行中の処理ルーチンが前記禁止区間中に実行されているか否かを特定する実行区間特定情報を前記コンピュータに格納し、
前記所定の割り込み処理ルーチンが割り込もうとした場合において、前記実行中の処理ルーチンが前記禁止区間中に実行されていることを特定する情報が前記実行区間特定情報として格納されている場合、前記禁止処理を行い、
前記所定の割り込み処理ルーチンが割り込もうとしていない場合、前記実行区間特定情報に関わらず、前記禁止処理を行わない、
請求項1に記載の処理プログラム。
【請求項3】
前記処理手段は、
前記禁止区間中に前記禁止処理を行った場合において、前記実行中の処理ルーチンの前記禁止区間中での実行を終了した場合、前記所定の割り込み処理ルーチンを前記実行中の処理ルーチンへ割り込ませて実行させる、
請求項1又は2に記載の処理プログラム。
【請求項4】
実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを制御する処理手段、を備え、
前記処理手段は、
前記実行中の処理ルーチンへの前記所定の割り込み処理ルーチンの割り込みが禁止されるべき区間である禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、
前記禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとしない場合、前記禁止処理を行わない、
処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、処理プログラム、及び処理システムに関する。
【背景技術】
【0002】
従来、組み込みシステムとして用いられるマイクロコンピュータが知られていた(例えば、特許文献1)。この特許文献1のマイクロコンピュータを含めて、一般的なマイクロコンピュータについては、実行中の処理ルーチンに対して、適宜のタイミングで割り込みハンドラを割り込ませて実行するように構成されていた。
【0003】
しかしながら、マイクロコンピュータにおいて正常な動作を実現するために、例えば、実行中の処理ルーチンが共有データを操作するタイミング等の任意のタイミングに禁止区間を設定し、設定した禁止区間中に、当該共有データを操作する割り込みハンドラの駆動要求が発生した場合、実行中の処理ルーチンへの当該割り込みハンドラによる禁止区間中の割り込みを禁止する技術が提案されていた。
【0004】
そして、このような割り込みを禁止する技術としては、例えば、禁止区間中に、マイクロコンピュータのCPUをロックすることにより、全ての割り込みハンドラの割り込みを一括して禁止する技術、あるいは、割り込みハンドラの割り込みレベルを指定して、指定した割り込みレベルよりも低いレベルの割り込みハンドラの割り込みを禁止する技術等が提案されていた。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平11−219299号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、例えば、全ての割り込みハンドラの割り込みを一括して禁止する技術においては、禁止区間に割り込みハンドラの駆動要求が発生したか否かに関わらず、禁止区間にマイクロコンピュータのCPUをロックする必要があり、禁止区間の個数に対応する回数だけCPUのロック及びアンロックが繰り返されることになり、マイクロコンピュータによる処理時間が増大する可能性があった。また、例えば、禁止区間に割り込みを禁止する必要がない割り込みハンドラ(例えば、前述の共有データを操作しない割り込みハンドラ等)についても一括して割り込みが禁止されてしまい、割り込みの禁止についての柔軟性が低下してしまう可能性があった。
【0007】
また、例えば、割り込みレベルを指定して割り込みを禁止する技術においては、割り込みレベルを基準に割り込みの禁止を行うことができるので、全ての割り込みハンドラの割り込みを一括して禁止する技術に比べて、割り込みの禁止についての柔軟性が向上するものの、指定した割り込みレベルよりも低いレベルの割り込みハンドラの割り込みが全て禁止されてしまうために、割り込みの禁止についての柔軟性を更に向上させることが要望されていた。また、例えば、割り込みレベルを指定して割り込みを禁止する技術においても、全ての割り込みハンドラの割り込みを一括して禁止する技術と同様に、禁止区間に割り込みハンドラの駆動要求が発生したか否かに関わらず、禁止区間に指定したレベルを基準に割り込みを禁止する処理を行う必要があり、禁止区間の個数に対応する回数だけ当該処理が繰り返されることになり、マイクロコンピュータによる処理時間が増大する可能性があった。また、例えば、割り込みレベルを指定して割り込みを禁止する技術を用いるためには、マイクロコンピュータにおいて割り込みレベルによる制御機能が実装されていることが前提となり、当該技術を適用するためのマイクロコンピュータが一部のみの機種に制限されてしまう可能性があった。
【0008】
本発明は、上記に鑑みてなされたものであって、処理時間を短縮しつつ割り込みの禁止についての柔軟性を向上させることが可能となる処理プログラム、及び処理システムを提供することを目的とする。
【課題を解決するための手段】
【0009】
上述した課題を解決し、目的を達成するために、請求項1に記載の処理プログラムは、コンピュータを、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを制御する処理手段、として機能させ、前記処理手段は、前記実行中の処理ルーチンへの前記所定の割り込み処理ルーチンの割り込みが禁止されるべき区間である禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、前記禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとしない場合、前記禁止処理を行わない。
【0010】
請求項2に記載の処理プログラムは、請求項1に記載の処理プログラムにおいて、前記処理手段は、前記実行中の処理ルーチンが前記禁止区間中に実行されているか否かを特定する実行区間特定情報を前記コンピュータに格納し、前記所定の割り込み処理ルーチンが割り込もうとした場合において、前記実行中の処理ルーチンが前記禁止区間中に実行されていることを特定する情報が前記実行区間特定情報として格納されている場合、前記禁止処理を行い、前記所定の割り込み処理ルーチンが割り込もうとしていない場合、前記実行区間特定情報に関わらず、前記禁止処理を行わない。
【0011】
請求項3に記載の処理プログラムは、請求項1又は2に記載の処理プログラムにおいて、前記処理手段は、前記禁止区間中に前記禁止処理を行った場合において、前記実行中の処理ルーチンの前記禁止区間中での実行を終了した場合、前記所定の割り込み処理ルーチンを前記実行中の処理ルーチンへ割り込ませて実行させる。
【0012】
請求項4に記載の処理システムは、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを制御する処理手段、を備え、前記処理手段は、前記実行中の処理ルーチンへの前記所定の割り込み処理ルーチンの割り込みが禁止されるべき区間である禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、前記禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとしない場合、前記禁止処理を行わない。
【発明の効果】
【0013】
請求項1に記載の処理プログラムによれば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとしない場合、禁止処理を行わないことにより、例えば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合にのみ禁止処理を行うことになるので、禁止処理の実行回数を低減することができ、処理時間を短縮することが可能となる。また、複数の割り込み処理ルーチンが存在する場合において、一部の割り込み処理ルーチンのみを禁止処理の対象となる所定の割り込み処理ルーチンとして設定することにより、一部のみの割り込み処理ルーチンのみを禁止処理の対象とすることができるので、割り込みの禁止についての柔軟性を向上させることが可能となる。
【0014】
請求項2に記載の処理プログラムによれば、実行中の処理ルーチンが禁止区間中に実行されているか否かを特定する実行区間特定情報を格納することにより、例えば、格納されている実行区間特定情報を参照するという比較的単純な処理にて禁止区間であるか否かを特定することができるので、処理時間を確実に短縮することが可能となる。
【0015】
請求項3に記載の処理プログラムによれば、禁止処理を行った場合において実行中の処理ルーチンの禁止区間中での実行を終了した場合、所定の割り込み処理ルーチンを実行中の処理ルーチンへ割り込ませて実行させることにより、例えば、所定の割り込み処理ルーチンを確実に実行することが可能となる。
【0016】
請求項4に記載の処理システムによれば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとしない場合、禁止処理を行わないことにより、例えば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合にのみ禁止処理を行うことになるので、禁止処理の実行回数を低減することができ、処理時間を短縮することが可能となる。また、複数の割り込み処理ルーチンが存在する場合において、一部の割り込み処理ルーチンのみを禁止処理の対象となる所定の割り込み処理ルーチンとして設定することにより、一部のみの割り込み処理ルーチンのみを禁止処理の対象とすることができるので、割り込みの禁止についての柔軟性を向上させることが可能となる。
【図面の簡単な説明】
【0017】
図1】本発明の実施の形態に係るマイクロコンピュータを例示するブロック図である。
図2】マイクロコンピュータで実行されるタスク及びISRを示す図である。
図3】タスク及びISRのタイミングチャートである。
図4】被割り込み側処理のフローチャートである。
図5】割り込み側処理のフローチャートである。
【発明を実施するための形態】
【0018】
以下、本発明に係る処理プログラム、及び処理システムの実施の形態について図面を参照しつつ詳細に説明する。ただし、実施の形態によって本発明が限定されるものではない。
【0019】
本発明に係る処理プログラムは、コンピュータを制御するプログラムであり、例えば、コンピュータを制御するための専用プログラム、あるいは、汎用的に用いられるプログラム(一例としては、汎用コンピュータ等で用いられる基本ソフトであるオペレーティングシステム(OS)、あるいは、マイクロコンピュータの如き組み込みシステムで用いられるリアルタイムオペレーティングシステム(リアルタイムOS))の一部として実現されるプログラム等を含む概念である。また、この処理プログラムは、コンピュータを、処理手段として機能させるものである。
【0020】
また、「処理システム」とは、処理プログラムによって処理されるシステムであり、例えば、前述のコンピュータ等を含む概念である。すなわち、この処理システムを、前述のコンピュータに対応するものと解釈してもよい。
【0021】
また、「処理システム」(つまり、「コンピュータ」)は、例えば、マイクロコンピュータの如き組み込みシステム、あるいは、当該組み込みシステムの一部の要素(一例としては、中央演算処理装置であるCPU、あるいは、割り込み制御回路等)等に対応する概念であり、例えば、処理手段を備えるものである。
【0022】
また、「処理手段」とは、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを制御する手段であり、具体的には、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みが禁止されるべき区間である禁止区間中に、所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、禁止区間中に、所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとしない場合、禁止処理を行わない手段である。また、「処理手段」とは、例えば、実行中の処理ルーチンが禁止区間中に実行されているか否かを特定する実行区間特定情報をコンピュータに格納し、所定の割り込み処理ルーチンが割り込もうとした場合において、実行中の処理ルーチンが禁止区間中に実行されていることを特定する情報が実行区間特定情報として格納されている場合、禁止処理を行い、所定の割り込み処理ルーチンが割り込もうとしていない場合、実行区間特定情報に関わらず、禁止処理を行わない手段、あるいは、禁止区間中に禁止処理を行った場合において、実行中の処理ルーチンの禁止区間中での実行を終了した場合、所定の割り込み処理ルーチンを実行中の処理ルーチンへ割り込ませて実行させる手段等を含む概念である。
【0023】
また、「処理ルーチン」とは、コンピュータで実行される処理群であり、具体的には、例えば、リアルタイムOSにおけるタスク又は割り込み処理(つまり、割り込みハンドラであるISR)に対応する処理群等を含む概念である。また、「実行中の処理ルーチン」とは、現在実行されている処理ルーチンであり、タスク又はISRに対応する概念である。また、「所定の割り込み処理ルーチン」とは、予め定められたISRであり、例えば、ISRの割り込みレベルを設定できる機能が実装されているハードウエアにおける任意の割り込みレベルのISRであり、禁止区間中に割り込みを禁止するべきISRである。
【0024】
また、「禁止区間」とは、実行中の処理ルーチンへの割り込みが禁止されるべき区間であり、具体的には、割り込みが禁止されるべき任意のタイミング(時間帯を含む)であって、ユーザによって定義可能な任意のタイミングである。なお、この禁止区間は任意に設定することができるが、以下の実施の形態では、例えば、実行中の処理ルーチンと所定の割り込み処理ルーチンとが相互に共通するデータを操作するように構成されており、当該実行中の処理ルーチンが当該データを操作するタイミングが「禁止区間」として設定されている場合を例示して説明する。
【0025】
また、「禁止処理」とは、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを禁止する処理であり、例えば、禁止区間中において割り込みを禁止する処理である。
【0026】
また、「実行区間特定情報」とは、実行中の処理ルーチンが禁止区間中に実行されているか否かを特定する情報であり、例えば、禁止区間中に実行されていることを特定する情報、及び実行中の処理ルーチンが禁止区間中に実行されていないことを特定する(つまり、実行中の処理ルーチンが許可区間中に実行されていることを特定する)情報を含む概念である。また、「許可区間」とは、実行中の処理ルーチンへの割り込みが許可され得る区間であり、具体的には、禁止区間以外の区間である。
【0027】
そして、以下に示す実施の形態では、「処理システム」又は「コンピュータ」が、マイクロコンピュータであり、「処理プログラム」が、マイクロコンピュータのリアルタイムOSである場合を例示して説明する。
【0028】
(構成)
まず、本実施の形態に係るマイクロコンピュータについて説明する。図1は、本発明の実施の形態に係るマイクロコンピュータを例示するブロック図である。なお、実際には、マイクロコンピュータ100には、図示されている要素以外にも、割り込み制御回路、クロック発振器、タイマー、AD変換器、DA変換器等の公知の要素も含まれ得るが、ここでは、主な要素のみ図示し、図示した要素以外の要素については、必要に応じて適宜説明する。また、図示されている各要素については、本願に特徴的な内容以外については、公知の内容を適用することができるので、本願に特徴的な内容のみについて説明する。
【0029】
マイクロコンピュータ100は、処理システム又はコンピュータであり、例えば、ROM1、RAM2、及びCPU3を備える。
【0030】
(構成−ROM)
ROM1は、マイクロコンピュータ100の動作に必要なプログラム及び各種のデータを記録する記録手段であり、例えば、外部記録装置としてのフラッシュメモリ(図示省略)等を用いて構成されている。
【0031】
(構成−RAM)
RAM2は、マイクロコンピュータ100の動作に必要なプログラム及び各種のデータを一時的に記録する記録手段(記録領域)であり、例えば、外部記録装置としてのDRAM(Dynamic Random Access Memory)等を用いて構成されている。このRAM2には、例えば、実行区間特定情報、及び要求情報が格納されている。
【0032】
(構成−RAM−実行区間特定情報)
「実行区間特定情報」とは、例えば、フラグ情報であり、一例としては、禁止区間中に実行されていることを特定する「ON」、あるいは、禁止区間中に実行されていないこと(つまり、許可区間中に実行されていること)を特定する「OFF」が択一的に格納される情報である。なお、この実行区間特定情報の具体的な格納手法は任意であるが、例えば、後述する被割り込み側処理にて格納される。
【0033】
(構成−RAM−要求情報)
「要求情報」とは、実行することを要求しているISRを特定する情報であり、具体的には、現時点で実行待ちとなっているISRを特定する情報であり、例えば、ISRを実行するためのプログラムが格納されているアドレスを特定する情報である。なお、現時点で実行待ちとなっているISRが存在しない場合には、「NULL」が格納されていることとする。また、この要求情報の具体的な格納手法は任意であるが、例えば、後述する割り込み側処理にて格納される。
【0034】
(構成−CPU)
CPU3は、ROM1又はRAM2に適宜アクセスして、マイクロコンピュータ100を制御する制御手段であり、具体的には、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを制御する処理手段であり、例えば、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みが禁止されるべき区間である禁止区間中に、所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、禁止区間中に、所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとしない場合、禁止処理を行わない手段である。
【0035】
(処理)
次に、このように構成されるマイクロコンピュータ100によって実行される割り込み制御処理について説明する。「割り込み制御処理」とは、実行中の処理ルーチンへの所定のISRの割り込みを制御する処理であり、例えば、割り込まれる側の処理ルーチンで実行される処理である被割り込み側処理、及び割り込む側の処理ルーチンで実行される処理である割り込み側処理を含む概念である。
【0036】
図2は、マイクロコンピュータで実行されるタスク及びISRを示す図であり、図3は、タスク及びISRのタイミングチャートである。ここでは、例えば、マイクロコンピュータ100のタスク41、ISR51、及びISR52のうちのタスク41及びISR51のみが、相互に共通する共有データ(RAM2に記録されているデータ)を操作する処理を含んでいることとし、タスク41の少なくとも一部の処理として被割り込み側処理が組み込まれており、また、ISR51の少なくとも一部の処理(詳細には、ISR51の前段部の処理)として割り込み側処理が組み込まれており、また、ISR52には割り込み側処理が組み込まれていない場合を例示して説明する。つまり、実行中の処理ルーチンがタスク41であり、また、所定の割り込み処理ルーチンがISR51であり、ISR52が所定の割り込み処理ルーチン以外の割り込み処理ルーチンである場合を例示して説明する。また、RAM2の実行区間特定情報については、「OFF」が初期値として格納されていることとして、以下説明する。
【0037】
(処理−被割り込み側処理)
まず、被割り込み側処理について説明する。「被割り込み側処理」とは、割り込まれる側の処理ルーチンで実行される処理であり、概略的には、マイクロコンピュータ100の任意の要素(例えば、CPU3)が実行する処理である。図4は、被割り込み側処理のフローチャートである(以下の各処理の説明ではステップを「S」と略記する)。この被割り込み側処理を実行するタイミングは任意であり、例えば、CPU3がタスク41のプログラムにおける当該処理に対応する部分を処理する場合(一例としては、共有データを操作する直前のタイミング)に、被割り込み側処理が実行される。なお、この被割込み側処理の終了のタイミングは、例えば、CPU3がタスク41のプログラムにおける当該処理に対応する部分の処理を終了したタイミングとなる。
【0038】
図4のSA1においてCPU3は、実行中の処理ルーチンにおいて実行区間特定情報を格納する。具体的には任意であるが、例えば、禁止区間中に実行されていることを特定する情報を、実行区間特定情報として格納する。ここでは、例えば、図3のタスク41におけるタイミングT1(つまり、共有データを操作する直前のタイミング)において、実行区間特定情報を「OFF」から「ON」に更新することにより、「実行区間特定情報」=「ON」を格納する。
【0039】
図4のSA2においてCPU3は、実行中の処理ルーチンにおいて共有データを操作する処理を行う。具体的には任意であるが、例えば、共有データにアクセスして、アクセスした共有データに対して、プログラムに沿って任意の処理を行う。
【0040】
図4のSA3においてCPU3は、実行中の処理ルーチンにおいて実行区間特定情報を格納する。具体的には任意であるが、例えば、禁止区間中に実行されていないこと(許可区間中に実行されていること)を特定する情報を、実行区間特定情報として格納する。ここでは、例えば、図3のタスク41におけるタイミングT2(つまり、共有データを操作した直後のタイミング)において、実行区間特定情報を「ON」から「OFF」に更新することにより、「実行区間特定情報」=「OFF」を格納する。
【0041】
図4のSA4においてCPU3は、RAM2に要求情報が格納されているか否かを判定する。具体的には任意であるが、例えば、「NULL」以外のアドレスが要求情報として格納されているか否かに基づいて判定する。そして、「NULL」が格納されている場合、「NULL」以外のアドレスが要求情報として格納されているわけではないので、RAM2に要求情報が格納されていないものと判定し(SA4のNO)、処理を終了する。また、「NULL」以外のアドレスが要求情報として格納されている場合、RAM2に要求情報が格納されているものと判定し(SA4のYES)、SA5に移行する。ここでは、例えば、要求情報として図2のISR51を特定するアドレスが格納されている場合、RAM2に要求情報が格納されているものと判定する。
【0042】
図4のSA5においてCPU3は、ISRを実行する。具体的には任意であるが、例えば、実行中の処理ルーチンに対してISRを割り込ませることにより、ISRの実行を開始する。具体的には任意であるが、例えば、SA4にて格納されているものと判定した要求情報を取得し、取得した要求情報が特定するISRを、現在実行中の処理ルーチンに対して割り込ませて実行を開始する。ここでは、例えば、要求情報として図2のISR51を特定するアドレスが格納されている場合、図3に示すタイミングT2(つまり、共有データを操作する直後のタイミング)において、現在実行中のタスク41に対して、ISR51を割り込ませて当該ISR51の実行を開始する。なお、この後、要求情報としてISR51を特定するアドレスを消去して「NULL」を格納した後、終了する。これにて、被割り込み側処理を終了する。
【0043】
(処理−割り込み側処理)
次に、割り込み側処理について説明する。「割り込み側処理」とは、割り込む側の処理ルーチンで実行される処理であって、禁止処理を含む処理であり、概略的には、マイクロコンピュータ100の任意の要素(例えば、CPU3)が実行する処理であり、例えば、所定の割り込み処理ルーチンの駆動要求の発生直後に実行される処理である。図5は、割り込み側処理のフローチャートである。この割り込み側処理を実行するタイミングは任意であり、例えば、ISR51の駆動要求が発生した場合に、起動が開始される。
【0044】
図5のSB1においてCPU3は、割り込み側処理を起動する場合に駆動を要求されたISRを実行するか否かを判定する。具体的には任意であるが、例えば、RAM2の実行区間特定情報を取得し、取得した実行区間特定情報が、実行中の処理ルーチンが禁止区間中に実行されていることを特定しているか否かに基づいて判定する。そして、実行区間特定情報が「ON」であり、実行中の処理ルーチンが禁止区間中に実行されていることを特定している場合、ISRを実行しないものと判定し(SB1のNO)、ISRの実行を禁止して、SB3に移行する。また、実行区間特定情報が「OFF」であり、実行中の処理ルーチンが禁止区間中に実行されていないことを特定している場合、ISRを実行するものと判定し(SB1のYES)、ISRの実行を許可して、SB2に移行する。ここでは、例えば、図3のタイミングT1よりも前のタイミング、あるいは、タイミングT2よりも後のタイミングに、ISRの駆動要求が発生した場合、「実行区間特定情報」=「OFF」であるので、ISRを実行するものと判定し、また、タイミングT1とタイミングT2との間のタイミングにISRの駆動要求が発生した場合、「実行区間特定情報」=「ON」であるので、ISRを実行しないものと判定する。
【0045】
図5のSB2においてCPU3は、ISRを実行する。具体的には任意であるが、例えば、実行中の処理ルーチンに対してISRを割り込ませることにより、ISRの実行を開始する。具体的には任意であるが、例えば、割り込み側処理を起動する場合に駆動を要求されたISRを、現在実行中の処理ルーチンに対して割り込ませて実行を開始する。
【0046】
一方、図5のSB1にてISRを実行しないものと判定した(SB1のNO)後にSB3においてCPU3は、要求情報を格納する。具体的には任意であるが、例えば、割り込み側処理を起動する場合に駆動を要求されたISRを特定するアドレスを取得し、取得したアドレスを要求情報としてRAM2に格納する。ここでは、例えば、図3のISR51を特定するアドレスを要求情報として格納する。これにて、割り込み側処理を終了する。
【0047】
(動作)
次に、被割り込み側処理及び割り込み側処理に関するマイクロコンピュータ100の動作について説明する。ここでは、例えば、図3におけるタスク41の実行中において、ISRの駆動要求が何ら発生しない場合(以下、第1の場合)、許可区間にISR51の駆動要求が発生する場合(以下、第2の場合)、禁止区間にISR51の駆動要求が発生する場合(以下、第3の場合)、及び許可区間であるか禁止区間であるかに関わらずISR52の駆動要求が発生する場合(以下、第4の場合)を例示して説明する。
【0048】
(動作−第1の場合)
第1の場合においては、図3におけるタスク41の実行中においてISRの駆動要求が何ら発生しなかった場合、図5の割り込み側処理は起動されず、図4の被割り込み側処理におけるSA1〜SA3を実行した後、RAM2の要求情報が「NULL」のままとなっているので、SA4にて要求情報が格納されていないものと判定し(SA4のNO)、タスク41が継続して実行されることになる。この場合、図3の禁止区間が存在するものの、ISRの割り込みを禁止する処理は、実行されないことになる。
【0049】
(動作−第2の場合)
第2の場合において、図3におけるタスク41の実行中においてタイミングT1よりも前のタイミング(つまり、図4の被割り込み側処理起動される前のタイミング)である許可区間に、ISR51の駆動要求が発生した場合、図5の割り込み側処理は起動されて、SB1のYESの後のSB2において、実行中のタスク41に対してISR51が割り込むことにより、タスク41の実行が中断してISR51が実行されることになる。この後、当該ISR51が終了した場合、タスク41が復帰して「第1の場合」と同様にして実行されることになる。
【0050】
(動作−第3の場合)
第3の場合において、図3におけるタスク41の実行中においてタイミングT1とタイミングT2の間のタイミング(つまり、図4のSA2のタイミング)である禁止区間に、ISR51の駆動要求が発生した場合、図5の割り込み側処理は起動されて、SB1のNOの後のSB3において、(ISR51が実行されずに)ISR51のアドレスが要求情報として格納される。そして、図4の被割り込み側処理におけるSA2及びSA3を実行した後、RAM2の要求情報としてISR51のアドレスが格納されているので、SA4にて要求情報が格納されているのと判定し(SA4のYES)、SA5にて実行中のタスク41に対してISR51が割り込むことにより、タスク41の実行が中断してISR51が実行されることになる。この場合、図3の禁止区間(タイミングT1とタイミングT2の間のタイミング)でISR51の駆動要求が発生するが、当該ISR51は禁止区間中は実行されず(つまり、禁止区間にてISRの割り込みを禁止する禁止処理が行われ)、図3に示すように、許可区間が開始したタイミング(タイミングT2)に割り込んで実行されることになる。
【0051】
(動作−第4の場合)
第4の場合において、前述のように、図3のISR52には、割り込み側処理が組み込まれていないので、禁止区間にISR52の駆動要求が発生した場合、不図示であるが、タスク41に対してISR52が割り込むことにより、タスク41の実行が中断してISR52が実行されることになる。また、許可区間にISR52の駆動要求が発生した場合も、不図示であるが、タスク41に対してISR52が割り込むことにより、タスク41の実行が中断してISR52が実行されることになる。なお、この第4の場合、禁止区間のISR52の実行中にISR51の駆動要求が発生する場合があるが、この場合、前述の第3の場合と同様にして、禁止区間が終了するまでは当該ISR51の実行は保留され、禁止区間が終了した場合に、ISR51が実行されることになる。
【0052】
(実施の形態の効果)
このように本実施の形態によれば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとしない場合、禁止処理を行わないことにより、例えば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合にのみ禁止処理を行うことになるので、禁止処理の実行回数を低減することができ、処理時間を短縮することが可能となる。また、複数の割り込み処理ルーチンが存在する場合において、一部の割り込み処理ルーチンのみを禁止処理の対象となる所定の割り込み処理ルーチンとして設定することにより、一部のみの割り込み処理ルーチンのみを禁止処理の対象とすることができるので、割り込みの禁止についての柔軟性を向上させることが可能となる。
【0053】
また、実行中の処理ルーチンが禁止区間中に実行されているか否かを特定する実行区間特定情報を格納することにより、例えば、格納されている実行区間特定情報を参照するという比較的単純な処理にて禁止区間であるか否かを特定することができるので、処理時間を確実に短縮することが可能となる。
【0054】
また、禁止処理を行った場合において実行中の処理ルーチンの禁止区間中での実行を終了した場合、所定の割り込み処理ルーチンを実行中の処理ルーチンへ割り込ませて実行させることにより、例えば、所定の割り込み処理ルーチンを確実に実行することが可能となる。
【0055】
〔実施の形態に対する変形例〕
以上、本発明に係る実施の形態について説明したが、本発明の具体的な構成及び手段は、特許請求の範囲に記載した本発明の技術的思想の範囲内において、任意に改変及び改良することができる。以下、このような変形例について説明する。
【0056】
(解決しようとする課題や発明の効果について)
まず、発明が解決しようとする課題や発明の効果は、上述の内容に限定されるものではなく、発明の実施環境や構成の細部に応じて異なる可能性があり、上述した課題の一部のみを解決したり、上述した効果の一部のみを奏したりすることがある。
【0057】
(分散や統合について)
また、上述した各電気的構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散や統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散又は統合して構成できる。また、本出願における「装置」とは、単一の装置によって構成されたものに限定されず、複数の装置によって構成されたものを含む。
【0058】
(形状、数値、構造、時系列について)
実施の形態や図面において例示した構成要素に関して、形状、数値、又は複数の構成要素の構造若しくは時系列の相互関係については、本発明の技術的思想の範囲内において、任意に改変及び改良することができる。
【0059】
(禁止区間で割り込みを禁止するISRと許可するISRについて)
また、上記実施の形態の技術を用いて、禁止区間にて全てのISRについて割り込みを禁止してもよく、あるいは、一部のみのISRの割り込みを禁止してもよい。全てのISRについて割り込みを禁止する場合、図5の割り込み側処理を全てのISRに組み込むことにより実現してもよい。また、禁止区間にて一部のみのISRの割り込みを禁止する場合、図5の割り込み側処理を複数のISRのうちの一部のみのISRに組み込むことにより実現してもよい。図5の割り込み側処理を複数のISRのうちの一部のみのISRに組み込むことにより、禁止区間において、割り込みレベルに関わらず任意のISRの割り込みを禁止又は許可することが可能となる。
【0060】
(禁止区間について)
また、上記実施の形態では、禁止区間に実行される処理が共有データを操作する処理である場合について例示したが、禁止区間に実行される処理がその他の任意の処理であることとしてもよい。また、上記実施の形態では、タスクに禁止区間が設けられている場合を例示したが、これに限らず、ISRに禁止区間を設定して、図4の被割込み側処理を当該ISRの少なくとも一部に組み込んだ上で、当該ISRに対する他のISRが割り込もうとする場合に、上記実施の形態の技術を適用してもよい。
【0061】
(実行区間特定情報について)
また、上記実施の形態では、実行区間特定情報にて禁止区間であるか許可区間であるかを特定する場合を例示して説明したが、これに限らない。例えば、禁止区間を、所定のイベント発生を基準にした経過時間で定義できる場合、マイクロコンピュータ100のタイマー等を用いて禁止区間であるか許可区間であるかを特定するように構成してもよい。
【0062】
(バリエーションについて)
また、上記実施の形態では、図2のタスク41及びISR51が共有データにアクセス処理を含む場合、つまり、1つのタスクと1つのISRで共有データの排他アクセスを行う場合を例示して説明したが、ハードウエア環境及びプログラム内容により、様々な場合が想定される。例えば、1つのタスクと2つ以上のISRで共有データの排他アクセスを行う場合も想定され、この場合、要求情報には同時に複数のISRの実行要求(つまり、複数のISRを特定する情報)が保留される場合が想定される。また、タスクには共有データへのアクセス処理が含まれておらず、複数のISRで共有データを排他アクセスする場合も想定されるが、この場合も、要求情報に複数のISRの実行要求が保留されることが想定される。なお、これら以外にも、本願の趣旨を逸脱しない範囲で様々なバリエーションが想定される。
【0063】
(適用について)
また、上記実施の形態の技術を適用する場面は任意であるが、例えば、禁止区間にISRの駆動要求が発生する可能性が比較的低い場面に適用してもよく、この場合、特に効果的となる。また、上記実施の形態の技術を、任意の分野に適用してもよく、例えば、マイクロコンピュータ100を車載装置の分野、あるいは、当該車載装置の分野以外の任意の分野に適用してもよい。
【0064】
(付記)
付記1の処理プログラムは、コンピュータを、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを制御する処理手段、として機能させ、前記処理手段は、前記実行中の処理ルーチンへの前記所定の割り込み処理ルーチンの割り込みが禁止されるべき区間である禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、前記禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとしない場合、前記禁止処理を行わない。
【0065】
付記2の処理プログラムは、付記1に記載の処理プログラムにおいて、前記処理手段は、前記実行中の処理ルーチンが前記禁止区間中に実行されているか否かを特定する実行区間特定情報を前記コンピュータに格納し、前記所定の割り込み処理ルーチンが割り込もうとした場合において、前記実行中の処理ルーチンが前記禁止区間中に実行されていることを特定する情報が前記実行区間特定情報として格納されている場合、前記禁止処理を行い、前記所定の割り込み処理ルーチンが割り込もうとしていない場合、前記実行区間特定情報に関わらず、前記禁止処理を行わない。
【0066】
付記3の処理プログラムは、付記1又は2に記載の処理プログラムにおいて、前記処理手段は、前記禁止区間中に前記禁止処理を行った場合において、前記実行中の処理ルーチンの前記禁止区間中での実行を終了した場合、前記所定の割り込み処理ルーチンを前記実行中の処理ルーチンへ割り込ませて実行させる。
【0067】
付記4の処理システムは、実行中の処理ルーチンへの所定の割り込み処理ルーチンの割り込みを制御する処理手段、を備え、前記処理手段は、前記実行中の処理ルーチンへの前記所定の割り込み処理ルーチンの割り込みが禁止されるべき区間である禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、前記禁止区間中に、前記所定の割り込み処理ルーチンが前記実行中の処理ルーチンへ割り込もうとしない場合、前記禁止処理を行わない。
【0068】
(付記の効果)
付記1に記載の処理プログラムによれば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとしない場合、禁止処理を行わないことにより、例えば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合にのみ禁止処理を行うことになるので、禁止処理の実行回数を低減することができ、処理時間を短縮することが可能となる。また、複数の割り込み処理ルーチンが存在する場合において、一部の割り込み処理ルーチンのみを禁止処理の対象となる所定の割り込み処理ルーチンとして設定することにより、一部のみの割り込み処理ルーチンのみを禁止処理の対象とすることができるので、割り込みの禁止についての柔軟性を向上させることが可能となる。
【0069】
付記2に記載の処理プログラムによれば、実行中の処理ルーチンが禁止区間中に実行されているか否かを特定する実行区間特定情報を格納することにより、例えば、格納されている実行区間特定情報を参照するという比較的単純な処理にて禁止区間であるか否かを特定することができるので、処理時間を確実に短縮することが可能となる。
【0070】
付記3に記載の処理プログラムによれば、禁止処理を行った場合において実行中の処理ルーチンの禁止区間中での実行を終了した場合、所定の割り込み処理ルーチンを実行中の処理ルーチンへ割り込ませて実行させることにより、例えば、所定の割り込み処理ルーチンを確実に実行することが可能となる。
【0071】
付記4に記載の処理システムによれば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合、当該所定の割り込み処理ルーチンの割り込みを禁止する禁止処理を行い、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとしない場合、禁止処理を行わないことにより、例えば、禁止区間中に所定の割り込み処理ルーチンが実行中の処理ルーチンへ割り込もうとする場合にのみ禁止処理を行うことになるので、禁止処理の実行回数を低減することができ、処理時間を短縮することが可能となる。また、複数の割り込み処理ルーチンが存在する場合において、一部の割り込み処理ルーチンのみを禁止処理の対象となる所定の割り込み処理ルーチンとして設定することにより、一部のみの割り込み処理ルーチンのみを禁止処理の対象とすることができるので、割り込みの禁止についての柔軟性を向上させることが可能となる。
【符号の説明】
【0072】
1 ROM
2 RAM
3 CPU
41 タスク
51 ISR
52 ISR
100 マイクロコンピュータ
T1 タイミング
T2 タイミング
図1
図2
図3
図4
図5