(57)【特許請求の範囲】
【請求項１】
稼働しているリアルタイムオペレーティングシステムの複数の周期タスクのリアルタイムスケジューリングを取得して参照し、前記複数の周期タスクがアイドル状態となる時間を算出する更新管理部と、
前記時間にファームウェアの更新を実行する更新制御部と、
を備え、
前記更新制御部は、前記周期タスクの実行周期の始期から継続してアイドル状態となる期間から事前に計測した前記ファームウェアの更新処理に必要な期間を差し引いた値である調整期間を算出し、前記ファームウェアの更新を前記調整期間だけ待機させる実行調整部を有する、更新装置。
【請求項２】
前記更新制御部は、非周期タスク及び非同期割り込みが前記時間に実行されないように、前記非周期タスク及び前記非同期割り込みの実行を一時的に抑止する非周期タスク制御部を備える、請求項１に記載の更新装置。
【請求項３】
前記更新制御部は、前記複数の周期タスクがアイドル状態となる期間が前記ファームウェアの更新処理に必要な期間を超えている場合、エラー通知を実行するアイドル時間算出部を備える、請求項１又は２に記載の更新装置。
【請求項４】
請求項１乃至３のいずれか１項に記載の更新装置と、
前記複数の周期タスクを実行するプロセッサと、
を備える、リアルタイムシステム。
【請求項５】
更新装置の更新管理部が、稼働しているリアルタイムオペレーティングシステムの複数の周期タスクのリアルタイムスケジューリングを取得して参照し、前記複数の周期タスクがアイドル状態となる時間を算出する工程と、
前記更新装置の更新制御部が、前記時間にファームウェアの更新を実行する工程と、
を備え、
前記更新制御部の実行調整部は、前記周期タスクの実行周期の始期から継続してアイドル状態となる期間から事前に計測した前記ファームウェアの更新処理に必要な期間を差し引いた値である調整期間を算出し、前記ファームウェアの更新を前記調整期間だけ待機させる、更新方法。
【請求項６】
前記更新制御部が、非周期タスク及び非同期割り込みが前記時間に実行されないように、前記非周期タスク及び前記非同期割り込みの実行を一時的に抑止し、前記ファームウェアの更新を優先的に実行する工程を備える、請求項５に記載の更新方法。
【請求項７】
前記更新制御部のアイドル時間算出部が、前記複数の周期タスクがアイドル状態となる期間が前記ファームウェアの更新処理に必要な期間を超えている場合、エラー通知を実行する、請求項５又は６に記載の更新方法。
【請求項８】
稼働しているリアルタイムオペレーティングシステムの複数の周期タスクのリアルタイムスケジューリングを取得して参照し、前記複数の周期タスクがアイドル状態となる時間を算出する処理と、
前記時間にファームウェアの更新を実行する処理と、
前記周期タスクの実行周期の始期から継続してアイドル状態となる期間から事前に計測した前記ファームウェアの更新処理に必要な期間を差し引いた値である調整期間を算出し、前記ファームウェアの更新を前記調整期間だけ待機させる処理と、
をコンピュータに実行させる、更新プログラム。
【請求項９】
非周期タスク及び非同期割り込みが前記時間に実行されないように、前記非周期タスク及び前記非同期割り込みの実行を一時的に抑止し、前記ファームウェアの更新を優先的に実行する処理をコンピュータに実行させる、請求項８に記載の更新プログラム。
【請求項１０】
前記複数の周期タスクがアイドル状態となる期間が前記ファームウェアの更新処理に必要な期間を超えている場合、エラー通知を実行する処理をコンピュータに実行させる、請求項８又は９に記載の更新プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、更新装置、リアルタイムシステム、更新方法及び更新プログラムに関する。
【背景技術】
【０００２】
制御装置などは、複数の周期タスクが予め定められた実行周期で実行されており、当該複数の周期タスクが実行されない期間にファームウェアが更新される。例えば、特許文献１の自動車制御ユニットは、スリープモード中に書換用ファームウェアによるプログラム書換処理を実行する。また、特許文献２の制御装置は、複数の周期タスクの実行が完了してから当該複数の周期タスクが再び実行されるまでの間にプログラム構成単位を更新する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−３０１９６０号公報
【特許文献２】国際公開第２０１２／１２４１９７号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１及び２の技術は、複数の周期タスクのリアルタイムスケジューリングを取得し、当該リアルタイムスケジューリングを考慮してファームウェアを更新していない。そのため、特許文献１及び２の技術は、複数の周期タスクのリアルタイムスケジューリングを乱す可能性がある。
【０００５】
本明細書に開示される実施形態が達成しようとする目的の１つは、当該課題の解決に寄与する更新装置、リアルタイムシステム、更新方法及び更新プログラムを提供することである。なお、この目的は、本明細書に開示される複数の実施形態が達成しようとする複数の目的の１つに過ぎないことに留意されるべきである。その他の目的又は課題と新規な特徴は、本明細書の記述又は添付図面から明らかにされる。
【課題を解決するための手段】
【０００６】
第１の態様の更新装置は、
稼働しているリアルタイムオペレーティングシステムの複数の周期タスクのリアルタイムスケジューリングを取得して参照し、前記複数の周期タスクがアイドル状態となる時間を算出する更新管理部と、
前記時間にファームウェアの更新を実行する更新制御部と、
を備える。
【０００７】
第２の態様のリアルタイムシステムは、
上述の更新装置と、
前記複数の周期タスクを実行するプロセッサと、
を備える。
【０００８】
第３の態様の更新方法は、
稼働しているリアルタイムオペレーティングシステムの複数の周期タスクのリアルタイムスケジューリングを取得して参照し、前記複数の周期タスクがアイドル状態となる時間を算出する工程と、
前記時間にファームウェアの更新を実行する工程と、
を備える。
【０００９】
第４の態様の更新プログラムは、
稼働しているリアルタイムオペレーティングシステムの複数の周期タスクのリアルタイムスケジューリングを取得して参照し、前記複数の周期タスクがアイドル状態となる時間を算出する処理と、
前記時間にファームウェアの更新を実行する処理と、
をコンピュータに実行させる。
【発明の効果】
【００１０】
上述の態様によれば、複数の周期タスクのリアルタイムスケジューリングの乱れを抑制しつつ、ファームウェアの更新が可能な更新装置、リアルタイムシステム、更新方法及び更新プログラムを実現できる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１の更新装置の構成を示すブロック図である。
【図２】実施の形態１の更新方法の流れを示すフローチャート図である。
【図３】周期タスク及びファームウェアの更新処理のスケジューリングを例示する図である。
【図４】実施の形態２のリアルタイムシステムの構成を示すブロック図である。
【図５】ＲＴＯＳの機能ブロック図である。
【図６】カーネルの機能ブロック図である。
【図７】実施の形態２の更新装置の構成を示すブロック図である。
【図８】実施の形態２の更新管理部の処理の流れを示すフローチャート図である。
【図９】スケジューリング情報の登録処理の流れを示すフローチャート図である。
【図１０】アイドル状態となる時間の算出処理の流れを示すフローチャート図である。
【図１１】更新タイミングの算出処理の流れを示すフローチャート図である。
【図１２】更新制御部におけるファームウェアの更新処理の流れを示すフローチャート図である。
【図１３】ファームウェアの更新処理を実行する際のプログラム領域の切り替えを説明するための図である。
【図１４】カーネルの処理フローを示す図である。
【図１５】実施の形態３の更新装置の構成を示すブロック図である。
【図１６】実施の形態３の更新制御部におけるファームウェアの更新処理の流れを示すフローチャート図である。
【図１７】周期タスク及びファームウェアの更新処理のスケジューリングを例示する図である。
【図１８】他の実施の形態のリアルタイムシステムの構成を示すブロック図である。
【図１９】他の実施の形態のリアルタイムシステムの構成を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下、本開示を実施するための最良の形態について、添付図面を参照しながら説明する。但し、本開示が以下の実施の形態に限定される訳ではない。また、説明を明確にするため、以下の記載及び図面は、適宜、簡略化されている。
【００１３】
＜実施の形態１＞
先ず、本実施の形態の更新装置の構成を説明する。図１は、本実施の形態の更新装置の構成を示すブロック図である。図１に示すように、更新装置１は、更新管理部２及び更新制御部３を備えている。更新管理部２は、稼働しているリアルタイムオペレーティングシステムの複数の周期タスクのリアルタイムスケジューリングを取得して参照し、複数の周期タスクがアイドル状態となる時間を算出する。更新制御部３は、算出した時間にファームウェアの更新を実行する。
【００１４】
次に、本実施の形態の更新方法の流れを説明する。図２は、本実施の形態の更新方法の流れを示すフローチャート図である。先ず、更新管理部２は、稼働しているリアルタイムオペレーティングシステムの複数の周期タスクのリアルタイムスケジューリングを取得して参照する（Ｓ１）。そして、更新管理部２は、取得したリアルタイムスケジューリングに基づいて、複数の周期タスクがアイドル状態となる時間を算出する（Ｓ２）。
【００１５】
次に、更新制御部３は、算出した時間にファームウェアの更新を実行する（Ｓ３）。例えば、周期タスクＡが３周期内で１回実行し、周期タスクＢが４周期内で１回実行し、周期タスクＣが６周期内で２回実行し、優先度がファームウェアの更新＞周期タスクＡ＞周期タスクＢ＞周期タスクＣと設定されたリアルタイムスケジューリングの場合、図３に示すように、周期タスクＡ、Ｂ及びＣの全てがアイドル状態となる時間にファームウェアを更新する。
【００１６】
このように本実施の形態の更新装置１及び更新方法は、複数の周期タスクのリアルタイムスケジューリングを取得して参照するので、複数の周期タスクのリアルタイムスケジューリングの乱れを抑制しつつ、ファームウェアの更新が可能である。
【００１７】
＜実施の形態２＞
図４は、本実施の形態のリアルタイムシステムの構成を示すブロック図である。図４に示すように、リアルタイムシステム１０は、プロセッサ２０、主記憶装置３０及び更新装置４０を備えており、処理のリアルタイム性を保証するためにオペレーティングシステムとしてリアルタイムオペレーティングシステム（ＲＴＯＳ）が稼働している。
【００１８】
ここで、図５は、ＲＴＯＳの機能ブロック図である。図６は、カーネルの機能ブロック図である。図５に示すように、ＲＴＯＳ５０は、ある処理（タスク）が一定期間内に終了すること（リアルタイム性）を保証するＯＳであり、ＯＳ管理タスク５１を備えている。
【００１９】
ＯＳ管理タスク５１は、タスク５２及びカーネル５３を備えている。タスク５２としては、周期的に実行される周期タスクと、非周期タスクと、の２種類のタスクが存在する。カーネル５３は、ＲＴＯＳ５０において実行するタスク５２の管理を行う領域であり、図６に示すように、スケジューラ５３１及びタスク管理情報５３２を備えている。カーネル５３は、特別な優先度を持つ周期タスクとして定期的に自分自身を実行し、タスク５２をディスパッチする。
【００２０】
スケジューラ５３１は、リアルタイム性を保証したタスク５２の実行順序割り当て（スケジューリング）を提供する。詳細には、スケジューラ５３１は、どのタスク５２がいつ実行されるかを、予め定められたアルゴリズムにより決定し、タスク管理情報５３２の管理情報に基づいて、実行するタスク５２をディスパッチする。ここでは、スケジューリングアルゴリズムとして、レートモノトニックスケジューリング（Rate Monotonic Scheduling）を用いることができる。
【００２１】
タスク管理情報５３２は、タスク５２に固有の情報を表すデータ構造であり、ＲＴＯＳ５０で生成されるＴＣＢ（Task Control Block）である。タスク管理情報５３２は、タスク５２の優先度、実行時間、実行周期及びコンテキスト情報などが格納されている。これらのタスク５２やカーネル５３は、図５に示すように、デバイスドライバ６０と協働して制御される。
【００２２】
プロセッサ２０は、主記憶装置３０のプログラム領域から実行するプログラムを読み取って実行する中央演算処理装置（ＣＰＵ：Central Processing Unit）であり、命令実行部２１、プログラムカウンタ２２及び割り込みコントローラ２３を備えている。
【００２３】
命令実行部２１は、主記憶装置３０のプログラム領域から読み取ったプログラム（命令）を実行する。プログラムカウンタ２２は、プロセッサ２０が実行するプログラムのアドレスを格納する。割り込みコントローラ２３は、プロセッサ２０に対する割り込み処理を制御する。
【００２４】
主記憶装置３０は、データ領域３１及びプログラム領域３２を備えている。データ領域３１は、プログラムの変数情報を格納する。プログラム領域３２は、プログラム（ＲＴＯＳ５０を含むファームウェア）のテキスト情報を格納する。ここで、ファームウェア７１は、外部記憶装置７０に格納されている。外部記憶装置７０は、ＬＡＮ（Local Area Network）などの通信路でリアルタイムシステム１０と接続されている。
【００２５】
主記憶装置３０は、プログラム領域３２として運用中又は更新用のプログラムを格納するメモリ領域を２個以上有する。例えば、本実施の形態では、第１のプログラム領域３２１及び第２のプログラム領域３２２を備えており、プロセッサ２０が実行するプログラムの読み取り先を切り替えることにより、実行するファームウェア７１を切り替える（更新する）。
【００２６】
更新装置４０は、実施の形態１の更新装置１に対してより好ましい構成とされている。ここで、図７は、本実施の形態の更新装置の構成を示すブロック図である。更新装置４０は、図７に示すように、更新管理部４１及び更新制御部４２を備えている。更新管理部４１は、スケジューリング算出部４１１、スケジューリングテーブル４１２及びアイドル時間算出部４１３及びアドレス格納部４１４を備えている。
【００２７】
更新管理部４１は、ＲＴＯＳ５０のスケジューラ５３１及びタスク管理情報５３２（即ち、リアルタイムスケジューリング）を参照し、将来の周期タスクのスケジューリング内容（即ち、スケジューリングアルゴリズム）をスケジューリングテーブル４１２に記録する。また、更新管理部４１は、外部記憶装置７０からファームウェア７１の更新要求を受け取ると、更新タイミングとなる周期タスクがアイドル状態となる時間を算出し、当該時間を示す情報を更新制御部４２に伝達する。ここで、アイドル状態となる時間とは、詳細は後述するが、アイドル状態となる時刻及び期間である。
【００２８】
詳細には、スケジューリング算出部４１１は、スケジューラ５３１及びタスク管理情報５３２のスケジューリングアルゴリズムを参照し、ＲＴＯＳ５０が将来実行する周期タスクの実行順序を算出する。スケジューリング算出部４１１は、算出した将来実行する周期タスクの実行順序を示す情報をスケジューリングテーブル４１２に記録する。スケジューリングテーブル４１２は、算出した将来実行する周期タスクの実行順序を示す情報などを記録する。
【００２９】
アイドル時間算出部４１３は、スケジューリングテーブル４１２を参照し、全ての周期タスクがアイドル状態となる時間を算出する。アイドル時間算出部４１３は、算出した全ての周期タスクがアイドル状態となる時間を示す情報を更新制御部４２に伝達する。
【００３０】
アドレス格納部４１４は、複数のプログラム領域３２の先頭アドレスを指し示す値を格納する。アドレス格納部４１４は、更新制御部４２のアドレス切り替え処理部４２２に切り替え先のプログラム領域３２のアドレスを提供する。ここで、アドレス格納部４１４には、現在のオフセットアドレス４１４ａ及び更新先のオフセットアドレス４１４ｂが格納されている。
【００３１】
更新制御部４２は、非周期タスク制御部４２１及びアドレス切り替え処理部４２２を備えている。更新制御部４２は、更新管理部４１から全ての周期タスクがアイドル状態となる時間を示す情報を受け取り、ファームウェア７１の更新制御を行う。
【００３２】
非周期タスク制御部４２１は、非周期タスクを一時的に抑止する命令をカーネル５３に発行し、非同期割り込みを一時的に抑止する命令をプロセッサ２０の割り込みコントローラ２３に発行する。
【００３３】
アドレス切り替え処理部４２２は、ファームウェア７１の格納先を切り替えるために、プログラムカウンタ２２のアドレス値を切り替える命令を発行する。切替先としては、アドレス格納部４１４のアドレス値を用いる。
【００３４】
次に、本実施の形態の更新管理部４１の処理の流れを説明する。図８は、本実施の形態の更新管理部の処理の流れを示すフローチャート図である。先ず、更新管理部４１は、ネットワークやＲＴＯＳ５０のタスク５２などからファームウェア更新要求が存在するか否かを確認する（Ｓ１０１）。更新要求が存在する場合（Ｓ１０１のＹＥＳ）、更新要求フラグに１を代入する（Ｓ１０２）。
【００３５】
次に、更新管理部４１は、更新要求フラグを確認し（Ｓ１０３）、更新要求フラグに１が代入されていない場合（Ｓ１０１のＮＯ、Ｓ１０３のＮＯ）、詳細を後述するように、周期タスクのスケジューリング情報の登録処理を行い（Ｓ１０８）、更新管理部４１の処理を終了する。
【００３６】
一方、更新要求フラグに１が代入されている場合（Ｓ１０３のＹＥＳ）、更新管理部４１は、詳細を後述するように、全ての周期タスクがアイドル状態となる時間を算出する（Ｓ１０４）。その後、更新管理部４１は、更新用のファームウェア７１が用意されているか否かを確認する（Ｓ１０５）。ファームウェア７１が用意されていない場合（Ｓ１０５のＮＯ）、更新管理部４１は、エラー通知を行い更新要求フラグに０を代入し、周期タスクのスケジューリング情報の登録処理を行い（Ｓ１０８）、更新管理部４１の処理を終了する。
【００３７】
一方、更新用のファームウェア７１の用意が完了している場合（Ｓ１０５のＹＥＳ）、Ｓ１０４の工程で算出した周期タスクがアイドル状態となる時間において更新処理を実施するように、更新制御部４２に当該更新処理をスケジューリングする（Ｓ１０７）。
【００３８】
次に、上述のスケジューリング情報の登録処理の流れを説明する。図９は、スケジューリング情報の登録処理の流れを示すフローチャート図である。先ず、スケジューリング算出部４１１は、タスク管理情報５３２から周期タスクの情報を取得する（Ｓ２０１）。そして、周期タスクの情報及びスケジューラ５３１のアルゴリズムに基づいて、実行周期ｔ＋Ｎまでの周期タスクの割り当てを算出する（Ｓ２０２）。
【００３９】
但し、ｔは現在の周期タスクの実行周期であり、Ｎは算出する実行周期の上限である。Ｎは、例えば１００ｔｉｃｋである。１ｔｉｃｋは、ＲＴＯＳ５０が周期タスクの実行を切り替える最小単位を表している。その後、算出した周期タスクの割り当て順序を示す情報をスケジューリングテーブル４１２に格納する（Ｓ２０３）。
【００４０】
次に、上述のアイドル状態となる時間の算出処理及び更新タイミングの算出処理の流れを説明する。図１０は、アイドル状態となる時間の算出処理の流れを示すフローチャート図である。図１１は、更新タイミングの算出処理の流れを示すフローチャート図である。
【００４１】
先ず、アイドル時間算出部４１３は、周期タスクが全てアイドル状態となる時刻を算出する（図１０のＳ３０１）。つまり、アイドル時間算出部４１３は、現在の周期タスクの実行周期ｔから１ｔｉｃｋ後の値を実行周期Ａに代入し（図１１のＳ４０１）、実行周期Ａにおける周期タスクの割り当てをスケジューリングテーブル４１２より確認する（図１１のＳ４０２）。
【００４２】
次に、アイドル時間算出部４１３は、実行周期Ａにおいて全ての周期タスクがアイドル状態であるか否かを確認する（図１１のＳ４０３）。実行周期Ａにおいて全ての周期タスクがアイドル状態である場合（図１１のＳ４０３のＹＥＳ（図１０のＳ３０２のＹＥＳ））、アイドル時間算出部４１３は、実行周期Ａの始期から継続してアイドル状態となる期間Ｔを記録し（図１１のＳ４０４）、事前に設定した閾値と期間Ｔの値とを比較する（図１１のＳ４０５）。当該閾値は、事前に算出したファームウェア７１の更新に要する期間を閾値として設定することができる。
【００４３】
Ｔが閾値よりも大きい場合（図１１のＳ４０５のＹＥＳ）、アイドル時間算出部４１３は、実行周期Ａ（即ち、アイドル状態となる時刻）及び期間Ｔを更新制御部４２に通知する(図１１のＳ４０６)。一方、Ｔが閾値よりも小さい場合（図１１のＳ４０５のＮＯ）、アイドル時間算出部４１３は、エラーを通知して終了する（図１１のＳ４０９）。
【００４４】
周期期間Ａにおいて全ての周期タスクがアイドル状態ではない場合（図１１のＳ４０３のＮＯ）、アイドル時間算出部４１３は、さらに１ｔｉｃｋ後の周期タスクの割り当てを算出する（図１１のＳ４０７）。Ａがスケジューリングテーブル４１２に記録した範囲を超過する場合（図１１のＳ４０８のＹＥＳ）、アイドル時間算出部４１３は、エラーを通知して終了する（図１１のＳ４０９）。
【００４５】
エラーが通知された場合、即ち、全ての周期タスクがアイドル状態である実行周期を算出できなかった場合（図１０のＳ３０２のＮＯ）、アイドル時間算出部４１３は、アイドル時刻の算出をランダム期間だけ待機し（図１０のＳ３０３）、再びアイドル時刻を算出する（Ｓ３０４）。このような処理を一定回数以上実行しても（図１０のＳ３０５、Ｓ３０６、図１１のＳ４０８）、全ての周期タスクがアイドル状態となる時刻を算出できない場合（図１０のＳ３０６のＹＥＳ）、更新管理部４１にエラーを通知する（図１０のＳ３０７）。一方、全ての周期タスクがアイドル状態となる時刻を算出できた場合（図１０のＳ３０２のＹＥＳ、図１０のＳ３０５のＹＥＳ）、図１１のＳ４０４の工程を実行する。
【００４６】
次に、更新制御部４２におけるファームウェア７１の更新処理の流れを説明する。図１２は、更新制御部におけるファームウェアの更新処理の流れを示すフローチャート図である。非周期タスク制御部４２１は、更新中にスケジューリングが乱されることを防止するため、非周期タスク及び非同期割り込みが実行された場合、非周期タスク及び非同期割り込みの一時停止命令を発行する（Ｓ５０１）。その後、非周期タスク制御部４２１は、更新後のファームウェア７１へ非周期タスク及び非同期割り込みを再開する指示を与えるために、更新完了を表すフラグに１を代入する（Ｓ５０２）。
【００４７】
そして、アドレス切り替え処理部４２２は、図１３に示すように、現在実行中の第１のプログラム領域３２１から、更新用の第２のプログラム領域３２２に切り替える。詳細には、アドレス切り替え処理部４２２は、タスク管理情報５３２に含まれるコンテキスト情報に格納されている更新前の第１のプログラム領域３２１を指し示すアドレスに、更新先の第２のプログラム領域３２２を指し示す更新先のオフセットアドレス４１４ｂを足す（Ｓ５０３）。
【００４８】
同様に、プログラムカウンタ２２に、更新先のファームウェア７１が格納されているメモリ領域のアドレス値を足し合わせることでプログラムカウンタ２２の値を更新する（Ｓ５０４）。なお、図１３に示すように、更新前後のファームウェア７１は同じデータ領域を参照するため、運用は中断されない。
【００４９】
次に、ファームウェア７１の更新管理処理が実行される間隔及び更新後の後処理の流れを説明する。ファームウェア７１の更新管理処理及び更新処理は、カーネル５３の処理と協調し、一定周期毎に繰り返し実行される。図１４は、カーネルの処理フローを示す図である。
【００５０】
先ず、カーネル５３は、更新管理処理を実行する（Ｓ６０１）。これにより、割り込み管理やメモリ管理などのカーネル５３の内部処理を行い（Ｓ６０２）、周期タスクのスケジューリングを実行する（Ｓ６０３）。次に、カーネル５３は、更新処理がスケジューリングされているか否かを判定し（Ｓ６０４）、更新処理がスケジュールされている場合（Ｓ６０４のＹＥＳ）、更新処理を実行する（Ｓ６０６）。一方、更新処理がスケジューリングされていない、即ち、周期タスクが割り当てられている場合（Ｓ６０４のＮＯ）、当該周期タスクを実行する（Ｓ６０５）。
【００５１】
次に、カーネル５３は、更新完了フラグを確認し（Ｓ６０７）、ファームウェア７１の更新処理の有無を確認する。更新完了フラグに１が代入され（Ｓ６０７のＹＥＳ）、更新処理において非周期タスク及び非同期割り込みの実行が一時的に停止されている場合、非周期タスク及び非同期割り込みの再開命令を発行し（Ｓ６０８）、更新完了した旨を外部に通知する（Ｓ６０９）。
【００５２】
このとき、通知先は、例えば、外部記憶装置７０やＲＴＯＳ５０で実行中の周期タスクなどが挙げられる。最後に、更新完了フラグと更新要求フラグに０を代入し（Ｓ６１０）、ファームウェア７１の更新後の後処理を終了する。
【００５３】
一方、更新完了フラグに０が代入されている場合（Ｓ６０７のＮＯ）、Ｓ６０１の工程に戻る。ちなみに、更新処理において非周期タスク及び非同期割り込みの実行が一時的に停止されていない場合は、Ｓ６０８の工程は省略される。
【００５４】
本実施の形態の更新装置４０、リアルタイムシステム１０及び更新方法は、実施の形態１と同様に、複数の周期タスクのリアルタイムスケジューリングを取得して参照するので、複数の周期タスクのリアルタイムスケジューリングの乱れを抑制しつつ、ファームウェア７１の更新が可能である。
【００５５】
しかも、本実施の形態の更新装置４０、リアルタイムシステム１０及び更新方法は、更新中にスケジューリングが乱されることを防止するため、非周期タスクの割り込みを一時的に抑止する。そのため、確実にファームウェア７１の更新を実行することができる。
【００５６】
また、本実施の形態の更新装置４０、リアルタイムシステム１０及び更新方法は、ファームウェア７１の更新に要する期間が当該ファームウェア７１の更新に要する期間を超えている場合、ファームウェア７１の更新を実行しないので、周期タスクのリアルタイムスケジューリングの乱れを抑制することができる。
【００５７】
＜実施の形態３＞
図１５は、本実施の形態の更新装置の構成を示すブロック図である。図１５に示すように、本実施の形態の更新装置４０１は、実施の形態２の更新装置４０と略等しい構成とされているが、更新制御部４２に実行調整部４２３を備えている。実行調整部４２３は、複数の周期タスクのリアルタイムスケジューリングが乱されないように、ファームウェア７１の更新処理を実行するタイミングを調整する。
【００５８】
図１６は、本実施の形態の更新制御部におけるファームウェアの更新処理の流れを示すフローチャート図である。図１６に示すように、実施の形態２の更新制御部４２におけるファームウェア７１の更新処理の流れと略等しいが、Ｓ５０１の工程の後に、更新制御部４２の実行調整部４２３は、周期タスクの実行周期の調整期間Ｐを算出する（Ｓ５０５）。ここで、Ｐは、期間Ｔから事前に計測したファームウェアの更新処理に必要な期間Ｕを引いた値である。
【００５９】
次に、実行調整部４２３は、調整期間Ｐの値が１ｔｉｃｋよりも大きいか否かを判定し（Ｓ５０６）、調整期間Ｐの値が１ｔｉｃｋよりも大きい場合（Ｓ５０６のＹＥＳ）、ファームウェア７１の更新が周期タスクのリアルタイムスケジューリングを乱さないように、ファームウェア７１の更新をＰｔｉｃｋだけ待機させる（Ｓ５０７）。
【００６０】
ここで、図１７に示すように、例えば、周期タスクＡが３周期内で１回実行し、周期タスクＢが６周期内で１回実行し、周期タスクＣが７周期内で１回実行し、優先度が周期タスクＡ＞周期タスクＢ＞周期タスクＣと設定されたリアルタイムスケジューリングの場合、調整期間Ｐの値が１ｔｉｃｋになるようにファームウェアの更新をＰｔｉｃｋだけ待機させる。
これにより、周期タスクのリアルタイムスケジューリングが乱されることを抑制できる。
【００６１】
上記実施の形態は本件発明者により得られた技術思想の適用に関する例に過ぎない。すなわち、当該技術思想は、上述した実施の形態のみに限定されるものではなく、種々の変更が可能であることは勿論である。
【００６２】
例えば、図１８に示すように、ＲＴＯＳ５０を含むファームウェアを取り外し可能なＲＯＭ８０、９０上のプログラム領域８１、９１に格納してもよい。このとき、更新管理部は、更新用のファームウェア７１が準備できたことを判別することが出来ない。
【００６３】
そのため、更新装置の運用者は、更新装置の入力部や外部システムから更新用のファームウェア７１の準備が完了した旨を更新管理部に伝達する必要がある。このように取り外し可能なＲＯＭ８０、９０のプログラム領域８１、９１にプログラムを格納することにより、外部記憶装置７０を用意する必要がなくなる。
【００６４】
例えば、図１９に示すように、主記憶装置３０とＲＯＭ８０、９０の双方にプログラム領域３２、８１、９１を設けてもよい。複数のプログラム領域３２、８１、９１を用意するため、外部記憶装置７０を用意する必要があるが、外部記憶装置７０又はＲＯＭ領域のどちらかが故障した場合においても、ファームウェア７１を更新することができる。
【００６５】
なお、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータ（情報通知装置を含むコンピュータ）に供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）を含む。さらに、この例は、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗを含む。さらに、この例は、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、フラッシュＲＯＭ、ＲＡＭ）を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００６６】
上記実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
稼働しているリアルタイムオペレーティングシステムの複数の周期タスクのリアルタイムスケジューリングを取得して参照し、前記複数の周期タスクがアイドル状態となる時間を算出する更新管理部と、
前記時間にファームウェアの更新を実行する更新制御部と、
を備える、更新装置。
【００６７】
（付記２）
前記更新制御部は、非周期タスクが前記時間に実行されないように、前記非周期タスクの割り込みを一時的に抑止する非周期タスク制御部を備える、付記１に記載の更新装置。
【００６８】
（付記３）
前記更新制御部は、前記複数の周期タスクのリアルタイムスケジューリングが乱されないように、前記ファームウェアの更新処理を実行するタイミングを調整する実行調整部を備える、付記１又は２に記載の更新装置。
【００６９】
（付記４）
前記更新制御部は、前記複数の周期タスクがアイドル状態となる期間が前記ファームウェアの更新処理に必要な期間を超えている場合、前記エラー通知を実行するアイドル時間算出部を備える、付記１乃至３のいずれか１項に記載の更新装置。
【００７０】
（付記５）
付記１乃至４のいずれか１項に記載の更新装置と、
前記複数の周期タスクを実行するプロセッサと、
を備える、リアルタイムシステム。
【００７１】
（付記６）
稼働しているリアルタイムオペレーティングシステムの複数の周期タスクのリアルタイムスケジューリングを取得して参照し、前記複数の周期タスクがアイドル状態となる時間を算出する工程と、
前記時間にファームウェアの更新を実行する工程と、
を備える、更新方法。
【００７２】
（付記７）
非周期タスクが前記時間に実行されないように、前記非周期タスクの割り込みを一時的に抑止し、前記ファームウェアの更新を優先的に実行する工程を備える、付記６に記載の更新方法。
【００７３】
（付記８）
前記複数の周期タスクのリアルタイムスケジューリングが乱されないように、前記ファームウェアの更新処理を実行するタイミングを調整する工程を備える、付記６又は７に記載の更新方法。
【００７４】
（付記９）
前記複数の周期タスクがアイドル状態となる期間が前記ファームウェアの更新処理に必要な期間を超えている場合、エラー通知を実行する工程を備える、付記６乃至８のいずれか１項に記載の更新方法。
【００７５】
（付記１０）
稼働しているリアルタイムオペレーティングシステムの複数の周期タスクのリアルタイムスケジューリングを取得して参照し、前記複数の周期タスクがアイドル状態となる時間を算出する処理と、
前記時間にファームウェアの更新を実行する処理と、
をコンピュータに実行させる、更新プログラム。
【００７６】
（付記１１）
非周期タスクが前記時間に実行されないように、前記非周期タスクの割り込みを一時的に抑止し、前記ファームウェアの更新を優先的に実行する処理を備える、付記１０に記載の更新プログラム。
【００７７】
（付記１２）
前記複数の周期タスクのリアルタイムスケジューリングが乱されないように、前記ファームウェアの更新処理を実行するタイミングを調整する処理を備える、付記１０又は１１に記載の更新プログラム。
【００７８】
（付記１３）
前記複数の周期タスクがアイドル状態となる期間が前記ファームウェアの更新処理に必要な期間を超えている場合、エラー通知を実行する工程を備える、付記１０乃至１２のいずれか１項に記載の更新プログラム。
【符号の説明】
【００７９】
１  更新装置
２  更新管理部
３  更新制御部
１０  リアルタイムシステム
２０  プロセッサ、２１  命令実行部、２２  プログラムカウンタ、２３  コントローラ
３０  主記憶装置、３１  データ領域、３２  プログラム領域
４０  更新装置
４１  更新管理部、４１１  スケジューリング算出部、４１２  スケジューリングテーブル、４１３  アイドル時間算出部、４１４  アドレス格納部
４２  更新制御部、４２１  非周期タスク制御部、４２２  アドレス切り替え処理部、４２３  実行調整部
５１  ＯＳ管理タスク、５２  タスク、５３  カーネル、５３１  スケジューラ、５３２  タスク管理情報
６０  デバイスドライバ
７０  外部記憶装置、７１  ファームウェア
４０１  更新装置
【要約】      （修正有）【課題】複数の周期タスクのリアルタイムスケジューリングの乱れを抑制しつつ、ファームウェアの更新が可能な更新装置を実現する。【解決手段】本開示に係る一形態の更新装置４０は、稼働しているリアルタイムオペレーティングシステムの複数の周期タスクのリアルタイムスケジューリングを取得して参照し、複数の周期タスクがアイドル状態となる時間を算出する更新管理部４１と、当該時間にファームウェアの更新を実行する更新制御部４２と、を備える。【選択図】図７【図１】
0006863628.tif 000002
【図２】
0006863628.tif 000003
【図３】
0006863628.tif 000004
【図４】
0006863628.tif 000005
【図５】
0006863628.tif 000006
【図６】
0006863628.tif 000007
【図７】
0006863628.tif 000008
【図８】
0006863628.tif 000009
【図９】
0006863628.tif 000010
【図１０】
0006863628.tif 000011
【図１１】
0006863628.tif 000012
【図１２】
0006863628.tif 000013
【図１３】
0006863628.tif 000014
【図１４】
0006863628.tif 000015
【図１５】
0006863628.tif 000016
【図１６】
0006863628.tif 000017
【図１７】
0006863628.tif 000018
【図１８】
0006863628.tif 000019
【図１９】
0006863628.tif 000020