(57)【特許請求の範囲】
【請求項１】
複数のタスクから一つのタスクを選択し、シーケンシャルに実行するマイクロコントローラを有し、タスクの実行処理が終了するとタスク切り替えを行うタスクスケジューリング装置であって、
実行中のタスクにおいて特定の命令を発行すると、タスクの実行処理が終了していなくても、前記特定の命令の発行から所定サイクル後にタスク切り替えを行い、前記所定サイクル数は前記特定の命令によって設定されることを特徴とするタスクスケジューリング装置。
【請求項２】
複数のタスクから一つのタスクを選択し、タスクの実行処理が終了すると、タスクを切り替えて実行するタスクの切り替え方法であって、実行中のタスクでの特定の命令によって、前記特定の命令が発行されてからタスク切り替えが行われるまでのサイクル数を設定値として指定する第１のステップと、毎サイクルごとに値をカウント値としてカウントする第２のステップと、前記第2のステップにおいてカウントされた前記カウント値と前記第１のステップにおいて指定された前記設定値とを比較する第３のステップと、次に実行すべきタスクを選択する第４のステップとを含み、
前記第３のステップにおいて、前記カウント値と前記設定値とが等しい場合には、前記タスクの実行処理が終了していなくてもタスク切り替えを発生することを特徴とするタスクの切り替え方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マルチタスキング機能を備えたタスクスケジューリング装置およびタスク切り替え方法に関するものである。
【０００２】
【従来の技術】
マルチタスキング機能を備えたマイクロコントローラにおいて、プロセッサが単一の場合、複数のタスクの中から１つのタスクが選択され、その選択されたタスクがプロセッサによって実行される。
【０００３】
処理サイクル数が異なる複数のハードウェアエンジンをマルチタスクによって制御しようとする場合、複数のハードウェアエンジンのそれぞれに複数のタスクを対応させ、ハードウェアエンジンの実行処理が終了すると、タスクの切り替えが行なわれる。
【０００４】
【発明が解決しようとする課題】
しかしながら、上記従来のマイクロコントローラでは、タスク切り替えをハードウェアエンジンの実行終了によって行なうため、マイクロコントローラのプログラム上から、タスク切り替えが起きるタイミングを制御することが非常に困難である。
【０００５】
そのため、マルチタスクを用いたコントローラでは、タスク切り替えのタイミングに依存したハードウェアの機能テストおよびプログラムの開発には手間が掛かるという課題があった。
【０００６】
本発明は、上記従来の課題を解決するもので、タスク切り替えのタイミング制御を容易に行なうことができるタスクスケジューリング装置およびタスク切り替え方法を提供することを目的とする。
【０００７】
【課題を解決するための手段】
この目的を達成するために、本発明のタスクスケジューリング装置は、命令によって設定されたサイクル数後にタスク切り替えが発生する機構を設けた構成をとっている。
【０００８】
すなわち、本発明のタスクスケジューリング装置は、複数のタスクから一つのタスクを選択し、シーケンシャルに実行するマイクロコントローラを有し、実行中のタスクで命令を発行すると所定サイクル後に、タスク切り替えを行なうことを特徴とする。
【０００９】
また、本発明のタスクの切り替え方法は、実行中のタスクでの命令によって設定値を指定する第１のステップと、値をカウントする第２のステップと、前記カウントされた値と前記設定値とを比較する第３のステップと、次に実行すべきタスクを選択する第４のステップとを含み、前記第３のステップにおいて、前記カウントされた値と前記設定値とが等しい場合にタスク切り替えを発生することを特徴とする。
【００１０】
【発明の実施の形態】
以下、本発明の実施形態について、図面を参照しながら説明する。
【００１１】
（実施の形態１）
図１は、本発明の実施形態１に係るタスクスケジューリング装置の構成を示すものである。
【００１２】
図１において、１０１はプロセッサであり、タスクのプログラムが解読され、命令が実行される。
【００１３】
１２０〜１２２はハードウェアエンジン０、１、２であり、プロセッサ１０１からの起動信号１３０、１３１、１３２によって起動され、それぞれの処理実行が開始され、処理が終了すると、終了信号１４０、１４１、１４２が生成される。
【００１４】
１０２はスケジューラであり、タスク切り替え時にタスクの選択が行なわれる。
１１０、１１１、１１２はタスク０、１、２であり、各タスクについてのプログラムのどの位置まで実行されたなどの情報が退避される。
【００１５】
１０３はカウンタであり、プロセッサ１０１からの命令１３４により、カウントが開始され、そのカウント値がカウンタ出力１３５として出力される。
【００１６】
１０４は比較器であり、カウンタ出力１３５と所定の値とが比較され、その結果が比較出力１３６として出力される。
【００１７】
１０５は、論理和であり、終了信号１４０〜１４２、比較出力１３６の論理和を生成し、タスク切り替え信号１３７として出力される。
【００１８】
以上のように構成された本実施形態について、以下に、タスク切り替え時の動作を説明する。
【００１９】
プロセッサ１０１においてタスク０が実行されており、タスク０のプログラムによって命令１３４が発行されたとする。
【００２０】
カウンタ１０３では、命令１３４が発行されると、0を初期値としてサイクル毎に、0,1,2,3,...とインクリメントが行なわれ、それがカウンタ出力１３５として出力される。
【００２１】
比較器１０４では、カウンタ出力１３５が入力されると、所定の値、例えば、"10"と比較される。
【００２２】
カウンタ出力１３５が"10"でない場合、比較出力１３６として、"0"が出力される。カウンタ出力１３５が"10"である場合、比較出力１３６として、"1"が出力される。比較出力１３６は、論理和１０５で、終了信号１４０〜１４２との論理がとられ、タスク切り替え信号１３７が生成される。
【００２３】
スケジューラ１０２では、タスク切り替え信号１３７が入力されると、それまで実行されていたタスク０のプログラム上の実行位置がタスク０（１１０）に退避され、次に実行すべきタスクが選択される。
【００２４】
例えば、タスク１が選択されたとすると、タスク１（１１１）に退避されているタスク１の実行位置がプロセッサに送られ、タスク１のプログラム実行が開始される。
【００２５】
以上、説明したように、本実施形態によれば、タスク０に記述された命令の発行から、所定値"10"サイクル後にタスク切り替えを発生することができる。
【００２６】
（実施の形態２）
図２は、本発明の実施形態２に係るタスクスケジューリング装置の構成を示すものである。
【００２７】
図２において、２０３はカウンタであり、プロセッサ１０１からの初期値設定命令２３４により、カウントの初期の設定がされると、カウントが開始され、そのカウント値がカウンタ出力２３５として出力される。
【００２８】
１０４は比較器であり、カウンタ出力２３５と所定の値とが比較され、その結果が比較出力２３６として出力される。
【００２９】
以上のように構成された本実施形態について、以下に、タスク切り替え時の動作を説明する。
【００３０】
プロセッサ１０１においてタスク０が実行されており、タスク０のプログラムによって初期値設定命令２３４が発行されたとする。
【００３１】
カウンタ２０３では、初期値設定命令２３４が発行されると、初期値設定命令２３４で指定された値を初期値として、サイクル毎に、デクリメントが行なわれる。
【００３２】
例えば、初期値が"10"である場合、サイクル毎に、10,9,8,7,...とデクリメントが行なわれ、それがカウンタ出力２３５として出力される。
【００３３】
比較器２０４では、カウンタ出力２３５が入力されると、所定の値、例えば、"0"と比較される。
【００３４】
カウンタ出力２３５が"0"でない場合、比較出力２３６として、"0"が出力される。カウンタ出力２３５が"0"である場合、比較出力２３６として、"1"が出力される。以下、同様に、タスク切り替え信号１３７が生成され、タスク切り替えが行なわれる。
【００３５】
以上、説明したように、タスク０に記述された命令によって、設定されたサイクル後にタスク切り替えを発生することができる。
【００３６】
（実施の形態３）
図３は、本発明の実施形態３に係るタスクスケジューリング装置の構成を示すものである。
【００３７】
図３において、３２２はハードウェアエンジン３であり、プロセッサ１０１からの起動信号３３４によって起動され、それぞれの処理実行が開始され、処理が終了すると、終了信号３４３が生成される。
【００３８】
論理和１０５では、終了信号３４３と終了信号１４０〜１４２との論理和が生成され、タスク切り替え信号１０７として出力される。
【００３９】
以上のように構成された本実施形態について、以下に、タスク切り替え時の動作を説明する。
【００４０】
プロセッサ１０１においてタスク０が実行されており、タスク０のプログラムによってハードウェアエンジン３の起動命令が発行されたとする。
【００４１】
ハードウェアエンジン３の起動命令が発行されると、起動信号３（３３４）が生成され、同時にカウンタ初期値がハードウェアエンジン３（３２２）に送られる。
【００４２】
ハードウェアエンジン３（３２２）では、送られてきたカウンタ初期値から、サイクル毎にデクリメントが行なわれ、カウント値が、"0"である場合、終了信号３（３４３）が生成される。以下、同様に、タスク切り替え信号１０７が生成され、タスク切り替えが行なわれる。
【００４３】
以上、説明したように、タスク０に記述された命令によって設定されたサイクル後にタスク切り替えを発生することができる。
【００４４】
（実施の形態４）
図４は、本発明の実施形態４に係るタスク切り替え方法のフローチャートである。
【００４５】
図４において、第１のステップS1において、実行中のタスクのプログラム中の命令によって設定値が指定される。この設定値は、命令が発行されてからタスク切り替えが行なわれるまでのサイクル数を指定するものである。
【００４６】
第２のステップS2において、カウントが開始される。カウントの初期値は"0"とし、毎サイクルごとにカウント値をインクリメントされる。
【００４７】
第３のステップS3において、第１のステップS1で指定された設定値と第２のステップでカウントされたカウント値とが比較される。
【００４８】
設定値とカウント値が等しくない場合、第２のステップS2へ戻る。設定値とカウント値が等しい場合、第４のステップS4へ進む。
【００４９】
第４のステップS4において、次に実行すべきタスクの選択が行なわれる。
【００５０】
以上のように、本実施形態によれば、実行中のタスクに記述された命令によって設定されたサイクル後にタスク切り替えを発生することができる。
【００５１】
【発明の効果】
本発明は、命令によって設定されたサイクル数後にタスク切り替えが発生する機構を設けることにより、タスク切り替えのタイミング制御を容易に行なうことができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１におけるタスクスケジューリング装置を示すブロック図
【図２】本発明の実施の形態２におけるタスクスケジューリング装置を示すブロック図
【図３】本発明の実施の形態３におけるタスクスケジューリング装置を示すブロック図
【図４】本発明の実施の形態４におけるタスク切り替え方法のフローチャート
【符号の説明】
１００  マイクロコントローラ
１０１  プロセッサ
１０２          スケジューラ
１０３          カウンタ
１０４          比較器
１０５          論理和
１１０  タスク０
１１１  タスク１
１１２  タスク２
１２０  ハードウェアエンジン０
１２１  ハードウェアエンジン１
１２２  ハードウェアエンジン２
１３０  起動信号０
１３１  起動信号１
１３２  起動信号２
１３４  命令
１３５  カウンタ出力
１３６  比較出力
１３７  タスク切り替え信号
１４０  終了信号０
１４１  終了信号１
１４２  終了信号２
２０３  カウンタ
２０４  比較器
２３４  初期値設定命令
２３５  カウンタ出力
２３６  比較出力
３２２  ハードウェアエンジン３
３３４  起動信号３
３４３  終了信号３
【図１】
0004156148.tif 000002
【図２】
0004156148.tif 000003
【図３】
0004156148.tif 000004
【図４】
0004156148.tif 000005