JP2006350653A - リアルタイムos - Google Patents

リアルタイムos Download PDF

Info

Publication number
JP2006350653A
JP2006350653A JP2005175509A JP2005175509A JP2006350653A JP 2006350653 A JP2006350653 A JP 2006350653A JP 2005175509 A JP2005175509 A JP 2005175509A JP 2005175509 A JP2005175509 A JP 2005175509A JP 2006350653 A JP2006350653 A JP 2006350653A
Authority
JP
Japan
Prior art keywords
time
delay
real
delay time
allowable
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
JP2005175509A
Other languages
English (en)
Inventor
Shigeo Suzuki
茂夫 鈴木
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2005175509A priority Critical patent/JP2006350653A/ja
Publication of JP2006350653A publication Critical patent/JP2006350653A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】 タスクの起床遅延に起因する障害原因を究明するために必要となる繁雑な作業を削減するとともに、当該障害原因を特定するために必要となる時間を短縮することが可能となるリアルタイムOSを提供する。
【解決手段】 ハード制御タスクが実行を再開したときに、そのハード制御タスクに遅延許容時間が設定されているかどうかを、対象セマフォの構造体メンバpertimが“0”かどうかで判断する(ステップS11)。その結果、遅延許容時間が設定されている(pertim!=0)場合には、現在時刻を取得し、その値と対象セマフォの構造体メンバocrtimの値から遅延時間を計算(現在時刻−ocrtim)する(ステップS13)。そして、遅延時間が遅延許容時間(対象セマフォの構造体メンバpertimの値)を超えているかどうかを判断する(ステップS14)。その結果、遅延時間が遅延許容時間を超えていた場合には、システムを異常停止状態として、遅延許容時間を超える遅延が発生したことをユーザに報告する(ステップS16)。
【選択図】 図3

Description

本発明は、リアルタイムOSに関し、特に、タスクの起床遅延を容易に把握できるようにしたリアルタイムOSに関する。
リアルタイムOS(Operating System)において、割り込み駆動のハードウェアを制御するプログラムを作成する場合、一般的には、以下のような構成のプログラムを作成することが多い。
すなわち、予め対象ハードウェアの割り込み処理ルーチンを登録し、またそのハードウェアを制御するタスク(以下、「ハード制御タスク」という)を起動しておく。起動されたハード制御タスクは、セマフォやイベントフラグなどの同期用OS機能を使って待機状態となる。例えばμITRON仕様OSであれば、wai_sem(),wai_flg()などを利用する(例えば、特許文献1参照)。
割り込みが発生すると、まず登録してあった割り込み処理ルーチンが実行を開始し、最低限の処理を行なった後、ハード制御タスクを起床するために、セマフォやイベントフラグなどの同期用OS機能を使って、セマフォポストやイベントセットを実行する。例えばμITRON仕様OSであれば、isig_sem(),iset_flg()などを利用する。
そして、次に割り込み処理ルーチンにより起床され、実行を再開したハード制御タスクが、発生した割り込みに対応したハードウェアの制御を行なう。
このような構成のプログラムを作成した場合、以下に示すような問題が起こる場合がある。
すなわち、タスクは、ハード制御タスク以外にも複数存在し、それらのタスクがハード制御タスクよりも優先度が高く、かつ実行可能状態(レディ状態)となっていることもある。そういった場合、割り込み処理ルーチンでセマフォポストやイベントセットを行なっても、すぐにハード制御タスクがディスパッチされない場合が起こり得る。これは、リアルタイムOSが通常、プリエンプティブな優先度ベース・スケジューリング(priority-based preemptive scheduling)を採用しているためである。こうして発生する遅延は、対象ハードウェアの仕様によりある程度は許容できても、ある閾値を越えると、対象ハードウェアが正しく動作しなくなるケースがほとんどである。プログラム全体を設計する段階で、こうした遅延の許容範囲を考慮して各処理タスクの優先度を決定するのであるが、見積りを誤り、実際の動作テストの段階で実は許容範囲を越えてしまうといった問題が発生することがある。こうした問題が発生すると、実際に起こる障害の症状から、問題の原因が上記遅延であることを特定することが困難な場合も多い。
従来、このような問題が発生すると、まず上記遅延が原因ではないかと推測し、次にその推測を基に、遅延が許容時間を超えることがあるかどうかを測定するルーチンを埋め込んだり、またはそうした測定を行なうデバッグツールを利用していた。
特開2002−229805号公報
しかしながら、障害の原因を特定するためわざわざ測定ルーチンを埋め込んだり、また測定用にデバッグツールを利用するといった作業は繁雑なものである。また、上記のように問題の原因が遅延であると推測するまでにも多くの試行錯誤が必要となりデバッグに時間のかかるケースも多い。
本発明は、この点に着目してなされたものであり、タスクの起床遅延に起因する障害原因を究明するために必要となる繁雑な作業を削減するとともに、当該障害原因を特定するために必要となる時間を短縮することが可能となるリアルタイムOSを提供することを目的とする。
上記目的を達成するため、請求項1に記載のリアルタイムOSは、プリエンプティブな優先度ベース・スケジューリングでマルチタスキングを実現しているリアルタイムOSにおいて、所定の同期用カーネルオブジェクトに対して、予め遅延許容時間を設定する設定手順と、前記遅延許容時間が設定されたタスクに対して起床が指示された時刻である事象発生時刻を記録する記録手順と、前記起床が指示されたタスクが処理を終了し、ユーザプログラムにリターンした時刻と前記記録された事象発生時刻から遅延時間を算出する算出手順と、該算出された遅延時間が前記設定された遅延許容時間を超えているか否かを判定する判定手順と、該判定の結果、前記遅延時間が前記遅延許容時間を超えていたときには、その旨をユーザに報知する報知手順とを有することを特徴とする。
本発明によれば、所定のタスクを起床したものの、実際にそのタスクの実行が再開されるまでの遅延時間が、予め設定しておいた遅延許容時間を超えてしまった場合に、ユーザはその異常状況をすぐに把握できるので、その障害原因を究明するための煩雑な作業が必要なくなるとともに、その障害原因を特定する時間が短縮される。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
図1は、本発明の一実施の形態に係るリアルタイムOSが組み込まれた組み込み機器1の概略構成を示すブロック図である。
同図に示すように、組み込み機器1は、機器1全体の制御を行うCPU11と、各種時間を計時するタイマ12と、読み書き可能なメモリ(RAM)13と、読み出し専用メモリ(ROM)14と、ハードウェア的な操作を行うためのハードウェアキー(KEY)15と,液晶表示装置(LCD)16と、メモリカードやハードディスクなどの外部メモリ17と、外部機器と接続するためのI/O18と、各デバイス11〜18間の情報の伝送を行うバス19とによって構成されている。
本実施の形態のリアルタイムOSは、ROM14に格納されている。なお、本実施の形態のリアルタイムOSは、μITRON4.0仕様OSの機能を拡張したものである。
まず、割り込み処理の同期で利用する、OSの同期オブジェクト、例えばセマフォやイベントフラグに、予め遅延許容時間を設定可能にしておく必要がある。セマフォやイベントフラグなどのオブジェクト、つまり、リアルタイムOSのカーネルで管理されるオブジェクト(カーネルオブジェクト)はそれぞれ、カーネル内部で、以下のような構造体の形式で管理される。
struct sem_cb {
UINT isemcnt; /* セマフォの資源数の初期値 */
UINT maxsem; /* セマフォの最大資源数 */
UINT semcnt; /* セマフォの現在資源値 */
...
RELTIM pertim; /* 遅延許容時間 */ /* <- 追加 */
SYSTIM ocrtim; /* 事象発生時刻 */ /* <- 追加 */
};
そして、各カーネルオブジェクト構造体に、遅延許容時間を設定するためのメンバpertimと、待機タスクを起床する事象が発生した時刻を記録するためのメンバocrtimを追加する。μITRON4.0仕様では、時間を表すデータ型は、相対時間が“RELTIM”、システム時刻が“SYSTIM”となっているので、pertimのデータ型を“RELTIM”、ocrtimのデータ型を“SYSTIM”としている。ただし、時間単位が、システム標準のものでは粒度が粗すぎるという場合には、時間単位をもっと細かい単位とし、さらにデータ型も独自のものを用いても構わない。
次に、上記遅延許容時間を設定する方法について説明する。
設定方法としては、以下のように、いくつかの方法が考えられる。
[1]プログラムの記述で行なう
(1.1) オブジェクト生成時に設定する
オブジェクト生成インタフェースcre_sem(),cre_flg()などのパラメータに遅延許容時間を追加する。そして、遅延許容時間を設定する場合には、その時間値をパラメータに設定する一方、遅延許容時間を設定しない場合には、無制限値(“0”など)をパラメータに設定する。
(1.2) 事象待機時に設定する
事象の発生を待つ際のインタフェースwai_sem(),wai_flg()などの代わりに、遅延許容時間をパラメータとして設定可能なインタフェースhwai_sem(),hwai_flg()などを追加する。そして、遅延許容時間を設定する場合には、その時間値をパラメータに設定して、hwai_sem(),hwai_flg()などを利用する一方、遅延許容時間を設定しない場合には、従来のインタフェースwai_sem(),wai_flg()などを利用する。
[2]プログラムとは独立した別ツールで行なう
カーネル内部で管理される各カーネルオブジェクト構造体のメンバpertimの値を設定する別ツールを用意し、ユーザはプログラム起動前にツールを利用して対象となるカーネルオブジェクトと遅延許容時間の値を指定することで設定する。
前記方法[1]は、ユーザが記述するプログラムに多少の変更を必要とするが、リアルタイムOSとユーザプログラム以外特に何も必要としない。それに対して方法[2]は、ユーザプログラムは従来の記述をまったく変更する必要がないものの、リアルタイムOS以外に遅延許容時間設定用の別ツールが必要となる。遅延許容時間設定用ツールは、リアルタイムOSのシンボル情報から前記各カーネルオブジェクトのメモリ配置を把握し、指定されたカーネルオブジェクトの構造体メンバpertimの値を、指定された遅延許容時間に設定できるように実現すればよい。
上記方法のいずれを採用したとしても、ハード制御タスクが事象の発生を待つために待機状態になる際には、そのカーネルオブジェクト構造体のメンバpertimには適切な値が設定されていることになる。つまり、遅延許容時間が設定されている場合には、その時間値がメンバpertimに設定され、遅延許容時間が設定さていない場合には、無制限値がメンバpertimに設定されていることになる。なお、無制限値として、本実施の形態では“0”を採るようにしている。
次に、割り込み処理ルーチンとハード制御タスクが、その同期用にセマフォを用いた場合を例に挙げ、フローチャートを用いて、本実施の形態リアルタイムOSが実行する制御の処理の流れを説明する。なお、予め、割り込み処理ルーチンは対象割り込みで実行を開始するように登録され、同期用セマフォは初期値を“0”として生成され、ハード制御タスクは生成・起動されて、wai_sem()またはhwai_sem()により待機状態になっているものとする。なお、wai_sem(),hwai_sem()により待機状態となるまでの処理の流れは、従来のμITRON4.0仕様OSでなされる処理の流れと異ならないので、その説明を省略する。ただし、待機状態から解放され、wai_sem(),hwai_sem()を呼び出したユーザプログラムに戻るまでに、後述する後処理が追加されることになる。
まず、対象割り込みの発生により処理を開始した割り込み処理ルーチンがハード制御タスクを起床するためにisig_sem()を呼び出した際の処理の流れを図1のフローチャートを用いて説明する。
同図において、まずステップS1では、指定されたセマフォに対して資源獲得を待っているタスクがあるかどうかを検査する。検査の結果、当該タスクがあった場合には、ステップS2からステップS3に進む一方、当該タスクがなかった場合には、ステップS2からステップS7に進む。本実施の形態では、ハード制御タスクがすでに待機状態になっているので、処理は、ステップS2からステップS3に進むことになる。
ステップS3では、遅延許容時間が設定されているかどうかを対象セマフォの構造体メンバpertimが“0”かどうかで判断する。そして、遅延許容時間が設定されている(pertim!=0)場合には、ステップS4からステップS5に進む一方、遅延許容時間が設定されていない(pertim==0)場合には、ステップS4からステップS6に進む。
ステップS5では、現在時刻を取得し、この取得した現在時刻を対象セマフォの構造体メンバocrtimに設定する。
続くステップS6では、待ち行列の先頭のタスクの待ち状態を解除し、レディキューに入れる。本実施の形態では、すでにハード制御タスクが待機状態になっているので、ハード制御タスクの待ち状態が解除され、レディ状態に遷移することになる。
一方、資源獲得を待っているタスクがないために、ステップS2からステップS7に進んだ場合には、対象セマフォの資源数を“1”加算する。
なお、前記ステップS6で、ハード制御タスクがレディ状態となっても、すぐにディスパッチされ実行が再開されるとは限らない。これは、レディ状態のより優先度の高いタスクが存在していたり、また同じ優先度であっても先にレディ状態になっているタスクがあったとすると、それらのタスクがレディ状態でなくなるまで、実行再開が遅延されるからである。
次に、このようなレディ状態の他のタスクがなくなり、ハード制御タスクが実行を再開したときの処理の流れを、図2のフローチャートを用いて説明する。
同図において、まずステップS11では、遅延許容時間が設定されているかどうかを対象セマフォの構造体メンバpertimが“0”かどうかで判断する。そして、遅延許容時間が設定されている(pertim!=0)場合には、ステップS12からステップS13に進む一方、設定されていない(pertim==0)場合には、終了となって、wai_sem(),hwai_sem()を呼び出したユーザプログラムにリターンする。
ステップS13では、現在時刻を取得し、その値と対象セマフォの構造体メンバocrtimの値から遅延時間を計算(現在時刻−ocrtim)する。
続くステップS14では、遅延時間が遅延許容時間(対象セマフォの構造体メンバpertimの値)を超えているかどうかを判断する。そして、遅延時間が遅延許容時間を超えていた場合には、ステップS15からステップS16に進む一方、遅延時間が遅延許容時間以下だった場合には、終了となり、ユーザプログラムにリターンする。
ステップS16では、システムを異常停止状態として、遅延許容時間を超える遅延が発生したことをユーザに報告する。
ステップS16の処理に関しては、システムを異常停止される前に、前記LCD16に、遅延許容時間を超える遅延の発生を知らせるメッセージや遅延時間情報を表示し、あるいは、前記RAM13や外部メモリ17上にエラーログ領域を確保して、そこに遅延許容時間を超える遅延の発生を知らせる情報や遅延時間情報を記録し、その後、異常停止させてるようにしてもよい。また、デバッガを利用してプログラムを実行させているような場合には、異常停止の代わりに、プログラムを一時停止し、デバッガに制御を戻すことで、遅延許容時間を超える遅延が発生したことをデバッガ操作中のユーザに知らせるようにすればよい。
また、遅延許容時間を超える遅延が発生した場合にシステムを停止させずに、異常状態であってもユーザプログラムを継続実行したい場合も考えられる。このような場合には、ステップS16で異常停止させずに、エラー状態であることを示すエラーコードをリターン値としてwai_sem(),hwai_sem()を呼び出しユーザプログラムにリターンすればよい。この場合、wai_sem(),hwai_sem()を呼び出すハード制御タスクのプログラムにおいて、リターン値が上記エラー状態であったかどうかを検査するコードおよびエラー状態であった場合のエラー処理コードを記述しておく必要がある。また、このときエラー情報として遅延時間の値を知りたいという場合には、hwai_sem()のパラメータに遅延時間を返すリターンパラメータを追加し、ステップS16で遅延時間を設定するようにしてもよい。
このように、本実施の形態では、リアルタイムOSが提供するセマフォやイベントフラグなどの同期機構に、遅延時間を計測する機能を組み込むことで、予め設定した遅延許容時間を越える遅延が発生した際に、その異常状況をユーザまたはユーザプログラムに即座に知らせることが可能となる。
なお、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムまたは装置に供給し、そのシステムまたは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記憶媒体から読出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、たとえば、フレキシブルディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。また、通信ネットワークを介してサーバコンピュータからプログラムコードが供給されるようにしてもよい。
また、コンピュータが読出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOSなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
本発明の一実施の形態に係るリアルタイムOSが組み込まれた組み込み機器の概略構成を示すブロック図である。 対象割り込みの発生により処理を開始した割り込み処理ルーチンがハード制御タスクを起床するためにisig_sem()を呼び出した際の処理の流れを示したフローチャートである。 他の優先度の高いレディ状態のタスクがなくなり起床されたハード制御タスクの実行を再開しユーザプログラムにリターンするときの処理の流れを示したフローチャートである。
符号の説明
1 組み込み機器
11 CPU
12 タイマ
13 RAM
14 ROM
15 ハードウェアキー
16 液晶表示装置
17 外部メモリ
18 I/O
19 バス

Claims (6)

  1. プリエンプティブな優先度ベース・スケジューリングでマルチタスキングを実現しているリアルタイムOSにおいて、
    所定の同期用カーネルオブジェクトに対して、予め遅延許容時間を設定する設定手順と、
    前記遅延許容時間が設定されたタスクに対して起床が指示された時刻である事象発生時刻を記録する記録手順と、
    前記起床が指示されたタスクが処理を終了し、ユーザプログラムにリターンした時刻と前記記録された事象発生時刻から遅延時間を算出する算出手順と、
    該算出された遅延時間が前記設定された遅延許容時間を超えているか否かを判定する判定手順と、
    該判定の結果、前記遅延時間が前記遅延許容時間を超えていたときには、その旨をユーザに報知する報知手順と
    を有することを特徴とするリアルタイムOS。
  2. 前記報知手順では、遅延許容時間を超える遅延が発生したこと、および、発生した遅延時間のうち、少なくとも一方を表示するための信号を出力することを特徴とする請求項1に記載のリアルタイムOS。
  3. 前記報知手順では、当該リアルタイムOSが組み込まれているシステムが備えている記憶手段上にエラーログ領域を確保し、該エラーログ領域に、遅延許容時間を超える遅延が発生したこと、および、発生した遅延時間のうち、少なくとも一方を示す情報を記録することを特徴とする請求項1に記載のリアルタイムOS。
  4. 当該リアルタイムOSが組み込まれているシステムを異常停止状態にする停止信号を出力する出力手順をさらに有することを特徴とする請求項1〜3のいずれかに記載のリアルタイムOS。
  5. 請求項1〜4のいずれかに記載のリアルタイムOSを格納した、コンピュータ読み取り可能な記憶媒体。
  6. 請求項1〜4のいずれかに記載のリアルタイムOSを組み込んだ組み込みシステム。
JP2005175509A 2005-06-15 2005-06-15 リアルタイムos Pending JP2006350653A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005175509A JP2006350653A (ja) 2005-06-15 2005-06-15 リアルタイムos

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005175509A JP2006350653A (ja) 2005-06-15 2005-06-15 リアルタイムos

Publications (1)

Publication Number Publication Date
JP2006350653A true JP2006350653A (ja) 2006-12-28

Family

ID=37646425

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005175509A Pending JP2006350653A (ja) 2005-06-15 2005-06-15 リアルタイムos

Country Status (1)

Country Link
JP (1) JP2006350653A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011005382A1 (de) 2010-03-11 2011-10-13 Toyota Jidosha Kabushiki Kaisha Aufgabenausführungs-Steuereinheit und Aufzeichnungsmedium, auf dem ein Aufgabenausführungs-Steuerprogramm aufgezeichnet ist

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011005382A1 (de) 2010-03-11 2011-10-13 Toyota Jidosha Kabushiki Kaisha Aufgabenausführungs-Steuereinheit und Aufzeichnungsmedium, auf dem ein Aufgabenausführungs-Steuerprogramm aufgezeichnet ist
US8418188B2 (en) 2010-03-11 2013-04-09 Toyota Jidosha Kabushiki Kaisha Task execution controller and recording medium on which task execution control program is recorded

Similar Documents

Publication Publication Date Title
US7992042B2 (en) Debug support device, and program for directing computer to perform debugging method
JP2006107430A (ja) コンピュータプログラムの無応答部分を識別するための方法、システムおよび装置
JP2010086364A (ja) 情報処理装置、動作状態監視装置および方法
JP2004504667A (ja) 実時間システム内のタスクのラン時間の測定方法及び装置
CN103257922A (zh) 一种快速测试bios与os接口代码可靠性的方法
US7716526B2 (en) Information processing apparatus, control apparatus therefor, and control method therefor
JP2009289234A (ja) 情報処理装置、エラー通知プログラム、エラー通知方法
CN110597601A (zh) 一种控制器任务切换方法、装置、设备及可读存储介质
JP2008225929A (ja) 情報処理装置
KR101196494B1 (ko) 다수의 클록 도메인 사이의 결정을 촉진하는 장치, 시스템,방법 및 머신 판독 가능한 매체
JP2009176146A (ja) マルチプロセッサシステム、障害検出方法および障害検出プログラム
JP2006350653A (ja) リアルタイムos
US20060230316A1 (en) Method ensuring normal operation at early power-on self test stage
TW201117102A (en) Method for self-diagnosing system management interrupt handler
TW201416855A (zh) 系統啟動監控方法以及電子裝置
JP5327591B2 (ja) 情報処理装置の保守管理方法、その装置及びそのプログラム
JP2009098910A (ja) 電子機器およびメモリ管理プログラム
JP2005352591A (ja) マルチプロセッサシステム、デバッグ方法、及びプログラム
JP2015114675A (ja) アプリケーションソフトウェア加速試験装置および試験方法
CN110968486A (zh) 一种脚本运行方法及装置
CN102053907A (zh) 系统管理中断处理程序的自我诊断方法
JP2005107757A (ja) プログラムの暴走検出方法およびプログラムの暴走検出装置
JP2002215428A (ja) タスク監視装置、タスク監視方法及びこの方法を記録した記録媒体
CN117149494A (zh) 关中断超时的处理方法及装置、电子设备、存储介质
JP6024742B2 (ja) 情報処理装置、情報処理方法、情報処理プログラム、及び記録媒体

Legal Events

Date Code Title Description
RD05 Notification of revocation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7425

Effective date: 20070626