(57)【要約】【課題】通信路障害、電源断及び起動しているリモートダウンローダ自身の不具合等による障害が発生しても、リセット後のターゲットシステムが起動可能であって、常にリモートダウンロード機能段を確保する。【解決手段】フラッシュＲＯＭ１０２上にＦＤＰ格納領域２面と、各面に起動面判定情報を用意し、ＦＤＰが各面の起動面判定情報を適切に制御することにより、特にＦＤＰ自身のリモートダウンロード処理中に、通信路障害、電源断及び起動しているＦＤＰ自身の不具合等による障害が発生しても、リセット後のターゲットシステムが起動可能であり、基本的にフラッシュＲＯＭ以外の特別なメモリを必要とせずに、常にリモートダウンロード機能を確保することができる。【選択図】　　図１
2004102893.tif 000002
【特許請求の範囲】
【請求項１】
自身をリモートダウンロードする機能を有する電子機器を制御するプログラムを、リモートダウンロードを実施するリモートダウンロードプログラムと前記電子機器を制御するメインとなる制御プログラムの２つに分割し、それぞれ独立してリモートダウンロードすることを特徴とするリモートダウンローダ。
【請求項２】
フラッシュＲＯＭに前記リモートダウンロードプログラムを格納するＡ面及びＢ面の２つのリモートダウンローダ格納領域が設定されるとともに、それぞれの面のリモートダウンローダ格納領域内に、起動するリモートダウンローダの起動面に関する情報を格納する起動面判定情報が設定され、それぞれのリモートダウンローダ格納領域内の起動面判定情報のみにより起動面を判定することを特徴とする請求項１に記載のリモートダウンローダ。
【請求項３】
ＲＡＭにバージョンアップ判定に関する情報を格納するバージョンアップ判定情報が設定され、前記２つのリモートダウンローダ格納領域内の起動面判定情報に加えて、前記バージョンアップ判定情報により起動面を判定することを特徴とする請求項２に記載のリモートダウンローダ。
【請求項４】
前記リモートダウンロードプログラムを前記フラッシュＲＯＭから前記ＲＡＭへ展開するために最低限必要なブート処理とその他残りのブート処理を実施するブート手段と、
起動面判定情報よりリモートダウンローダの起動面を判定するリモートダウンローダ起動面判定手段と、
前記リモートダウンローダ起動面判定手段からの要求により、リセットされるのを待ち続けるリセット待ち手段と、
リモートダウンローダ起動面からリモートダウンローダを展開し、展開したリモートダウンローダのエントリポイントに分岐するリモートダウンローダ展開手段と、
起動面判定情報の報告及びバージョンアップに伴う起動面判定情報の更新を行う起動面判定情報管理手段と、
バージョン情報の報告及びバージョン情報の更新を行うバージョン情報管理手段と、
ダウンロードされたファームウェアを前記フラッシュＲＯＭに格納し、前記起動面判定情報管理手段にバージョンアップに伴う起動面判定情報の更新を指示し、前記バージョン情報管理手段にバージョンアップに伴うバージョン情報の更新を指示するファームウェアバージョンアップ手段と、
ファームウェアのバージョンアップを管理するファームウェアバージョンアップ管理手段と、
前記ファームウェアバージョンアップ管理手段からの指示により上位装置からファームウェアをダウンロードするファームウェアダウンロード手段と、
前記ファームウェアバージョンアップ管理手段からの指示により、指示された制御ソフト起動面から制御プログラムを前記ＲＡＭ上に展開し、制御プログラムのエントリポイントに分岐する制御ソフト展開手段とを具備し、
前記リモートダウンローダ起動面判定手段は、前記ブート手段にて最低限必要なブート処理が行われた後、前記起動面判定情報管理手段からの起動面判定情報の報告よりリモートダウンローダの起動面を判定し、正常に判定できた場合は判定結果を前記リモートダウンローダ展開手段に報告し、正常に判定できなかった場合は前記リセット待ち手段にリセット待ちを要求し、
前記起動面情報判定管理手段は、前記リモートダウンローダ起動面判定手段からの要求により起動面判定情報を報告し、前記ファームウェアバージョンアップ手段からの指示により、バージョンアップに伴う起動面判定情報の更新を実施し、
前記バージョン情報管理手段は、前記ファームウェアバージョンアップ管理手段からのバージョン情報報告要求によりバージョン情報を報告するとともに前記ファームウェアバージョンアップ手段からの要求によりバージョン情報を更新し、
前記ファームウェアバージョンアップ管理手段は、前記バージョン情報管理手段から報告されたファームウェアのファームウェアバージョン情報を前記上位装置に報告し、前記上位装置に対してファームウェアバージョンアップの必要性を問い合わせ、前記上位装置より必要との指示を受けた場合はファームウェアダウンロード手段を経由してファームウェアダウンロードを実施し、ファームウェアダウンロード直後にファームウェアダウンロード処理の合否を判断し、失敗と判断した場合はバージョンアップ処理を中止して前記制御ソフト展開手段に制御プログラムの展開を要求し、ファームウェア内リモートダウンローダのバージョンアップの必要性については前記バージョン情報管理手段から報告されたリモートダウンローダのリモートダウンローダ個別バージョン情報とダウンロードしたファームウェア内のリモートダウンローダ個別バージョン情報より判定し、必要と判定した場合は前記ファームウェアバージョンアップ手段にリモートダウンローダのバージョンアップを要求し、同様にファームウェア内の制御プログラムのバージョンアップの必要性をリモートダウンローダと同様の方法で判定し、必要と判定した場合は前記ファームウェアバージョンアップ手段に制御プログラムのバージョンアップを要求し、前記上位装置にバージョンアップ結果を報告し、前記制御ソフト展開手段に制御ソフトの展開を要求し、
前記ファームウェアバージョンアップ手段は、前記ファームウェアバージョンアップ管理手段からの指示により、ダウンロードしたファームウェアを前記フラッシュＲＯＭに格納し、前記起動面判定情報管理手段にバージョンアップに伴う起動面判定情報の更新を指示し、前記バージョン情報管理手段にバージョンアップに伴うバージョン情報の更新を指示する、
ことを特徴とする請求項３に記載のリモートダウンローダ。
【請求項５】
前記起動面判定情報管理手段は、リモートダウンローダのバージョンアップを実施するフラッシュＲＯＭ上のリモートダウンローダ格納領域のバージョンアップ対象面を起動面の次の面であるＡ面に対してはＢ面又はＢ面に対してはＡ面として管理し、リモートダウンローダのバージョンアップに伴うバージョンアップ対象面のイレーズ及びリモートダウンローダの書込を完了した際に現在の起動面の起動面判定情報を参照し、現在のバージョンアップ対象面が次回起動時の起動面と判定されるように現在のバージョンアップ対象面の起動面判定情報を書き換えることを特徴とする請求項４に記載のリモートダウンローダ。
【請求項６】
現在の起動面の起動面判定情報を参照し、現在のバージョンアップ対象面が次回起動時の起動面と判定されるように現在のバージョンアップ対象面の起動面判定情報を書き換える方法として「じゃんけん」論理を適用し、起動時の起動面判定においては「じゃんけん」に「勝った」方が起動面と判定されることとして、現在の起動面の起動面判定情報を「先出し」、現在のバージョンアップ対象面の起動面判定情報を「後出し」と例え、「先出し」の論理に対して「勝つ」ように「後出し」の論理を決定し、前記起動面判定情報管理手段は、現在のバージョンアップ対象面の起動面判定情報を書き換えることを特徴とする請求項５に記載のリモートダウンローダ。
【請求項７】
前記起動面判定情報管理手段は、リモートダウンローダのバージョンアップに伴うバージョンアップ対象面のイレーズを実施する直前に、バージョンアップ対象面の起動面判定情報の全ビットを“０”に設定するを具備することを特徴とする請求項４から請求項６いずれかに記載のリモートダウンローダ。
【請求項８】
リモートダウンロード処理におけるソフトウェア不具合等の処理異常を検出し、前記起動面判定情報管理手段に起動面判定情報の制御を要求し、前記リセット待ち手段にリセット待ちを要求するリモートダウンローダプログラム障害検出手段を具備し、
前記起動面判定情報管理手段は、前記リモートダウンローダプログラム障害検出手段からの起動面判定情報の制御要求により、現起動面が次起動面と判定されないように現起動面の起動面判定情報を書き換え、
前記リモートダウンローダ起動面判定手段は、前記起動面判定情報管理手段から報告される、書き換えられた起動面判定情報より、前回起動した起動面を現在の起動面と判定しないことを特徴とする請求項４から請求項７いずれかに記載のリモートダウンローダ。
【請求項９】
前記リモートダウンローダ起動面判定手段は、システム初期立ち上げ時、Ａ面であるリモートダウンローダ格納領域にリモートダウンローダが格納されていれば、当該リモートダウンローダ格納領域の起動面判定情報及びＢ面のリモートダウンローダ格納領域全体の全ビットが“１”であるフラッシュＲＯＭにおけるイレーズ完了状態であっても、その後のシステム運用における起動面の判定処理を正常に実施することを特徴とする請求項４から請求項８いずれかに記載のリモートダウンローダ。
【請求項１０】
前記ブート手段及び前記リモートダウンローダ起動面判定手段及び前記ファームウェアバージョン管理手段からのバージョンアップ判定情報の制御要求によりバージョンアップ判定情報を制御し、前記ファームウェアバージョン管理手段からのバージョンアップ判定情報の報告要求に対してバージョンアップ判定情報を報告するバージョンアップ判定情報管理手段を具備し、
前記ブート手段は、リモートダウンロードプログラムを前記フラッシュＲＯＭから前記ＲＡＭへ展開するために最低限必要なブート処理と、その他残りのブート処理を実施し、バージョンアップ判定情報の初期化を前記バージョンアップ判定情報管理手段に要求し、
前記リモートダウンローダ起動面判定手段は、前記ブート手段による最低限必要なブート処理後、前記起動面判定情報管理手段からの起動面判定情報の報告よりリモートダウンローダの起動面を判定し、正常に判定できた場合はその判定結果を前記リモートダウンローダ展開手段と前記バージョンアップ判定情報管理手段に報告し、正常に判定できなかった場合は前記リセット待ち手段にリセット待ちを要求し、
前記ファームウェアバージョンアップ管理手段は、前記バージョン情報管理手段から報告されたファームウェアバージョン情報を前記上位装置に報告し、前記上位装置に対してファームウェアバージョンアップの必要性を問い合わせ、前記上位装置より必要との指示を受けた場合は前記ファームウェアダウンロード手段を経由してファームウェアダウンロードを実施し、ファームウェアダウンロード処理の合否を確認し、失敗と判断された場合はバージョンアップ処理を中止し、前記制御ソフト展開手段に制御プログラムの展開を要求し、ファームウェア内リモートダウンローダのバージョンアップの必要性については前記バージョン情報管理手段から報告されたリモートダウンローダ個別バージョン情報とダウンロードしたファームウェア内のリモートダウンローダ個別バージョン情報より判定しその判定結果を前記バージョンアップ判定情報管理手段に報告し、同様にファームウェア内制御プログラムのバージョンアップの必要性をリモートダウンローダと同様の方法で判定しその判定結果を前記バージョンアップ判定情報管理手段に報告し、必要と判定された場合は前記制御ソフト展開手段にダウンロードしたファームウェアを一時的に格納しているＲＡＭ上の領域であるファームウェア一次格納領域からの制御プログラムの展開を要求し、不要と判定された場合は前記制御ソフト展開手段にフラッシュＲＯＭ上の制御ソフト面からの制御プログラムの展開を要求し、制御ソフト起動後前記バージョンアップ判定情報管理手段からの報告により、リモートダウンローダ処理においてリモートダウンローダのバージョンアップ必要と判定されていた場合は前記ファームウェアバージョンアップ手段にリモートダウンローダのバージョンアップを要求し、同様にリモートダウンローダ処理において制御プログラムのバージョンアップ必要と判定されていた場合は前記ファームウェアバージョンアップ手段に制御プログラムのバージョンアップを要求し、正常にリモートダウンローダ又は制御プログラムのバージョンアップの必要性が判定されていなかった場合は前記リセット待ち手段にリセット待ちを要求し、前記上位装置にバージョンアップ結果を報告する、ことを特徴とする請求項４から請求項９いずれかに記載のリモートダウンローダ。
【請求項１１】
前記ファームウェアバージョンアップ管理手段からの報告によりファームウェア内リモートダウンローダのバージョンアップ必要と判定された場合、リモートダウンローダの自律再起動処理を行う自律再起動手段を具備し、
前記リモートダウンローダ起動面判定手段は、前記ブート手段による最低限必要なブート処理後、前記起動面判定情報管理手段からの起動面判定情報の報告と前記バージョンアップ判定情報管理手段からのバージョンアップ判定情報の報告よりリモートダウンローダの起動面を判定し、正常に判定できた場合はその判定結果を前記リモートダウンローダ展開手段と前記バージョンアップ判定情報管理手段に報告し、正常に判定できなかった場合は前記リセット待ち手段にリセット待ちを要求し、
前記リモートダウンローダ展開手段は、前記リモートダウンローダ起動面判定手段からのリモートダウンローダ起動面の報告よりファームウェア一次格納領域からの展開を報告された場合はファームウェア一次格納領域上のリモートダウンロードプログラムを展開し、フラッシュＲＯＭ上のリモートダウンローダ格納領域からの展開を報告された場合は報告されたリモートダウンローダ格納領域の起動面からリモートダウンロードプログラムを展開し、展開したリモートダウンロードプログラムのエントリポイントに分岐し、
前記ファームウェアバージョンアップ管理手段は、前記バージョンアップ判定情報管理手段からのバージョンアップ判定情報よりファームウェアバージョンアップ判定実施不要と判定された場合は、前記上位装置からのファームウェアダウンロード処理及びファームウェアバージョンアップの必要性判定を実施せず、ファームウェアバージョンアップ判定実施必要と判定された場合は、前記バージョン情報管理手段から報告されたファームウェアのバージョン情報を前記上位装置に報告し、前記上位装置に対してファームウェアバージョンアップの必要性を問い合わせ、前記上位装置より必要との指示を受けた場合は、前記ファームウェアダウンロード手段を経由してファームウェアダウンロードを実施し、ファームウェアダウンロード処理の合否を確認し、失敗と判断した場合はバージョンアップ処理を中止し、前記制御ソフト展開手段に制御プログラムの展開を要求し、ファームウェア内リモートダウンローダのバージョンアップの必要性については、前記バージョン情報管理手段から報告されたリモートダウンローダ個別バージョン情報とダウンロードしたファームウェア内のリモートダウンローダ個別バージョン情報より判定し、その判定結果を前記バージョンアップ判定情報管理手段に報告し、必要と判定された場合は前記自律再起動手段にリモートダウンローダの自律再起動を要求し、同様にファームウェア内制御ソフトのバージョンアップの必要性をリモートダウンローダと同様の方法で判定し、その判定結果を前記バージョンアップ判定情報管理手段に報告し、必要と判定された場合は前記制御ソフト展開手段に前記ＲＡＭ上の一次格納面からの制御プログラムの展開を要求し、不要と判定された場合は、前記制御ソフト展開手段に前記フラッシュＲＯＭ上の制御ソフト面からの制御プログラムの展開を要求し、制御ソフト起動後、前記バージョンアップ判定情報管理手段からの報告によりリモートダウンローダ処理においてリモートダウンローダのバージョンアップ必要と判定されていた場合は、前記ファームウェアバージョンアップ手段にリモートダウンローダのバージョンアップを要求し、同様にリモートダウンローダ処理において制御プログラムのバージョンアップ必要と判定されていた場合は、前記ファームウェアバージョンアップ手段に制御プログラムのバージョンアップを要求し、正常にリモートダウンローダ又は制御プログラムのバージョンアップの必要性が判定されていなかった場合は、前記リセット待ち手段にリセット待ちを要求し、前記上位装置にバージョンアップ結果を報告する、ことを特徴とする請求項４から請求項１０いずれかに記載のリモートダウンローダ。
【請求項１２】
前記起動面判定情報管理手段は、起動面判定情報の各情報要素を、冗長ビットを持った複数ビット構成で管理することを特徴とする請求項４から請求項１１いずれかに記載のリモートダウンローダ。
【請求項１３】
前記バージョンアップ判定情報管理手段は、バージョンアップ判定情報の各情報要素を、冗長ビットを持った複数ビット構成で管理することを特徴とする請求項１０から請求項１２いずれかに記載のリモートダウンローダ。
【請求項１４】
請求項１から請求項１３いずれかに記載のリモートダウンローダを具備することを特徴とする基地局装置。
【請求項１５】
リモートダウンローダをフラッシュＲＯＭからＲＡＭへ展開するために最低限必要なブート処理を実施し、起動面判定情報よりリモートダウンローダの起動面を判定し、正常に判定できなかった場合はリセット待ちを行い、正常に判定できた場合は判定結果が示す起動面からリモートダウンローダを展開し、展開したリモートダウンローダのエントリポイントに分岐し、その他残りのブート処理を実施し、ファームウェアバージョン情報を上位装置に報告し、上位装置に対してファームウェアバージョンアップの必要性を問い合わせ、上位装置より必要との指示を受けた場合はファームウェアダウンロードを実施し、ファームウェアダウンロード処理の合否を確認し、失敗と判断された場合はバージョンアップ処理を中止して制御プログラムを展開し、ファームウェア内リモートダウンローダのバージョンアップの必要性については、リモートダウンローダ個別バージョン情報とダウンロードしたファームウェア内のリモートダウンローダ個別バージョン情報とより判定し、必要と判定された場合はリモートダウンローダのバージョンアップを実施し、バージョンアップに伴い起動面判定情報の更新及びバージョン情報の更新を行い、同様にファームウェア内制御プログラムのバージョンアップの必要性をリモートダウンローダと同様の方法で判定し、必要と判定された場合は制御プログラムのバージョンアップを実施し、バージョンアップに伴いバージョン情報の更新を行い、上位装置にファームウェアバージョンアップ結果を報告し、フラッシュＲＯＭから制御プログラムをＲＡＭ上に展開し、制御プログラムのエントリポイントに分岐する、ことを特徴とするリモートダウンロード方法。
【請求項１６】
バージョンアップ対象面を起動面の次面として管理し、リモートダウンローダのバージョンアップに伴うバージョンアップ対象面のイレーズ及びリモートダウンローダの書込を完了した際に現起動面の起動面判定情報を参照し、現バージョンアップ対象面が次起動面と判定されるように現バージョンアップ対象面の起動面判定情報を書き換えることを特徴とする請求項１５に記載のリモートダウンロード方法。
【請求項１７】
現起動面の起動面判定情報を参照し、現バージョンアップ対象面が次起動面と判定されるように現バージョンアップ対象面の起動面判定情報を書き換える方法として「じゃんけん」論理を適用し、起動時の起動面判定においては「じゃんけん」に「勝った」方が起動面と判定されることとして、現起動面の起動面判定情報を「先出し」、現バージョンアップ対象面の起動面判定情報を「後出し」と例え、「先出し」の論理に対して「勝つ」ように「後出し」の論理を決定し、現バージョンアップ対象面の起動面判定情報を書き換える、ことを特徴とする請求項１５に記載のリモートダウンロード方法。
【請求項１８】
リモートダウンローダのバージョンアップに伴うバージョンアップ対象面のイレーズを実施する直前に、バージョンアップ対象面の起動面判定情報の全ビットを“０”に設定する、ことを特徴とする請求項１５から請求項１７いずれかに記載のリモートダウンロード方法。
【請求項１９】
リモートダウンローダによるリモートダウンロード処理においてソフトウェア不具合等の処理異常を検出した際、現起動面が次起動面と判定されないように現起動面の起動面判定情報を書き換え、リセット待ちを行い、リセットされ次回起動時には、前起動面で前回起動時に異常が検出された面を現起動面と判定しない、ことを特徴とする請求項１５から請求項１８いずれかに記載のリモートダウンロード方法。
【請求項２０】
システム初期立ち上げ時、一方の面であるリモートダウンローダ格納領域にリモートダウンローダが格納されていれば、当該リモートダウンローダ格納領域の起動面判定情報及び他方の面であるリモートダウンローダ格納領域全体の全ビットがフラッシュＲＯＭにおけるイレーズ完了状態を示す“１”であっても、その後のシステム運用における起動面の判定処理を正常に実施することができる、ことを特徴とする請求項１５から請求項１９いずれかに記載のリモートダウンロード方法。
【請求項２１】
リモートダウンローダをフラッシュＲＯＭからＲＡＭへ展開するために最低限必要なブート処理後、バージョンアップ判定情報の初期化を実施し、起動面判定情報よりリモートダウンローダの起動面を判定し、正常に判定できた場合は判定結果が示す起動面からリモートダウンローダを展開し、展開したリモートダウンローダのエントリポイントに分岐すると共に、判定結果を先程初期化したバージョンアップ判定情報に格納し、ファームウェア内リモートダウンローダのバージョンアップの必要性については、リモートダウンローダ個別バージョン情報と、ダウンロードしたファームウェア内のリモートダウンローダ個別バージョン情報より判定し、判定結果をバージョンアップ判定情報に格納し、同様にファームウェア内制御ソフトのバージョンアップの必要性をリモートダウンローダと同様の方法で判定し、その判定結果をバージョンアップ判定情報に格納し、バージョンアップ判定情報より制御プログラムのバージョンアップが必要と判定された場合は、ＲＡＭ上の一次格納面からの制御プログラムを展開し、不要と判定された場合は、フラッシュＲＯＭ上の制御ソフト面からの制御プログラムを展開し、制御ソフト起動後、バージョンアップ判定情報を参照し、リモートダウンローダ処理においてリモートダウンローダのバージョンアップ必要と判定されていた場合は、リモートダウンローダのバージョンアップを実施し、バージョンアップに伴い起動面判定情報の更新及びバージョン情報の更新を行い、同様に、バージョンアップ判定情報を参照し、リモートダウンローダ処理において制御プログラムのバージョンアップ必要と判定されていた場合は、制御プログラムのバージョンアップを実施し、バージョンアップに伴いバージョン情報の更新を行い、更にバージョンアップ情報を参照し、正常にリモートダウンローダまたは制御プログラムのバージョンアップの必要性が判定されていなかった場合は、リセット待ちを行う、ことを特徴とする請求項１５から請求項２０いずれかに記載のリモートダウンロード方法。
【請求項２２】
最低限必要なブート処理後、起動面判定情報とバージョンアップ判定情報よりリモートダウンローダの起動面を判定し、正常に判定でき且つファームウェア一次格納領域からの起動と判定された場合はファームウェア一次格納領域上のリモートダウンローダを展開し、バージョンアップ判定情報より、ファームウェアバージョンアップ判定実施不要と判定された場合は上位装置からのファームウェアダウンロード処理及びファームウェアバージョンアップの必要性判定を実施せず、ファームウェアバージョンアップ判定実施必要と判定された場合のみ上位装置からのファームウェアダウンロード処理及びファームウェアバージョンアップの必要性判定を実施し、上位装置からのファームウェアダウンロード処理及びファームウェアバージョンアップの必要性判定を実施した場合でリモートダウンローダ個別バージョンアップが必要と判定された場合はリモートダウンローダの自律再起動を実施し、リモートダウンローダ個別バージョンアップが不要と判定された場合は引き続きリモートダウンローダと同様の方法でファームウェア内制御ソフトのバージョンアップの必要性判定を実施する、ことを特徴とする請求項１５から請求項２１いずれかに記載のリモートダウンロード方法。
【請求項２３】
起動面判定情報の各情報要素を、冗長ビットを持った複数ビット構成で管理し、同様にバージョンアップ判定情報の各情報要素を、冗長ビットを持った複数ビット構成で管理する、の両方またはいずれかを実施する、ことを特徴とする請求項１５から請求項２２いずれかに記載のリモートダウンロード方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えば移動体通信システムにおける基地局に適用され、上位装置が保持するプログラムをターゲットシステムに通信路を介してダウンロードし、プログラムのバージョンアップを遠隔操作により実現するリモートダウンローダ及びリモートダウンロード方法に関する。
【０００２】
【従来の技術】
従来、この種のリモートダウンローダ及びリモートダウンロード方法としては、特開平１１―４５１８２号公報で開示されたものが知られている。この公報で開示された従来の技術では、リモートダウンローダがリセット時に自分自身をフラッシュＲＯＭ上からＲＡＭ上に展開し動作する。ＲＡＭ上で動作しているリモートダウンローダは、バージョンアップが必要な時に上位装置から新しいバージョンのリモートダウンローダをダウンロードし、フラッシュＲＯＭ上の古いバージョンのリモートダウンローダに対して上書きすることにより、バージョンアップを実現する。
【０００３】
また、フラッシュＲＯＭ上に２面リモートダウンローダ格納領域を確保しているリモートダウンローダ及びリモートダウンロード方法としては、特開２０００―１６３２６８号公報で開示されたものが知られている。この公報で開示された従来の技術では、フラッシュＲＯＭとは別に読み書き可能な不揮発性メモリであるＮＶＲＡＭを用意し、このＮＶＲＡＭ上に起動するリモートダウンローダの面に関する情報を格納し制御することにより、リモートダウンローダの２面管理を実現している。
【０００４】
【発明が解決しようとする課題】
しかしながら、上記特開平１１―４５１８２号公報に記載された従来のリモートダウンローダ及びリモートダウンロード方法においては、現在起動しているリモートダウンローダが格納されていたフラッシュＲＯＭ上のリモートダウンローダ格納エリアに直接新しいバージョンのリモートダウンローダが上書きされるので、新しいバージョンのリモートダウンローダに問題が有る場合、これ以降のリセットに対してターゲットシステムが起動できないという問題がある。
【０００５】
ターゲットシステムが移動体通信システムにおける基地局である場合を考えると、ターゲットシステムが起動しないということは、基地局の存在する現地に技術者が実際に赴く必要があることを意味する。しかし、基地局は全国各地に膨大な数存在し、中には山間部等現地に技術者が実際に赴くことが困難である場合も少なくない。バージョンアップ作業を含め、リモートメンテナンスを基本とする移動体通信システムにとっては、ターゲットシステムが起動できないという事態は絶対に避けなければならなく、いかなるケースにおいても、ターゲットシステムが起動可能であり、リモートダウンロード機能が確保されていることが重要である。
【０００６】
新しいバージョンのリモートダウンロードプログラムに問題が生じるケースとしては、下記３つのケースが考えられる。
１つ目のケースとしては、上位装置１０１とターゲットシステム１００の間の通信路２００に通信路障害等が発生し、新しいバージョンのリモートダウンローダのプログラムの一部にビット化けが生じている。
【０００７】
２つ目のケースとしては、リモートダウンロード中に、上位装置１０１またはターゲットシステム１００で停電等の理由による電源断が発生し、リモートダウンロード処理が途中で中断し、新しいバージョンのリモートダウンローダの一部分が存在しない。
３つ目のケースとしては、そもそも新しいバージョンのリモートダウンローダに不具合が存在し、プログラムの暴走等の障害が発生する。３つ目のケースについては、本来、運用で解決しなければならない課題であり、本来起こってはいけないケースである。
【０００８】
しかし、近年の開発サイクルの短縮化に伴い、開発のスピードアップは必須で、開発工程とテスト工程が並行に行われ、膨大な数のプログラムバージョンが存在するのも事実であり、間違えて不具合のあるリモートダウンローダを新しいバージョンとして上位装置に設定してしまった等の上位装置運用者の運用（人為）ミスが絶対に起こらないとは言い切れない。また、プログラムリリース後に、ターゲットシステムが起動できなくなる等の致命的な不具合がリモートダウンローダに絶対に存在しないとも言い切れない。更に、３つ目のケースが発生した場合、ターゲットシステムが起動できないという問題は、上位装置配下の全てのターゲットシステムに及ぶ。以上より、３つ目のケースについても、ターゲットシステムの１機能として実装することが望まれる。
【０００９】
また、特開２０００―１６３２６８号公報で開示された従来のリモートダウンローダ及びリモートダウンロード方法においては、上記２つ目のケースが発生した場合については、ターゲットシステムが起動できないという問題を回避できるが、上記１つ目及び３つ目のケースが発生した場合は、ターゲットシステムを起動できないという問題が発生する。また、フラッシュＲＯＭの他に、高価なＮＶＲＡＭを必要とし、ターゲットシステムの複雑化及びコストアップにつながることがあげられる。
【００１０】
本発明は、上記従来の問題を解決するもので、新しいバージョンのリモートダウンロードプログラムに不具合が生じた際のターゲットシステムの起動を可能にする２面管理管理方式を簡易に実現することができるリモートダウンローダ及びリモートダウンロード方法を提供することを目的とする。また、新しいバージョンのリモードダウンロードプログラムに対して上記３つのケースのいずれが発生しても、特に３つ目のケースが発生してもリセット後ターゲットシステムが起動可能であり、リモートダウンロード機能を常に確保することができるリモートダウンローダ及びリモートダウンロード方法を提供することを目的とする。
【００１１】
【課題を解決するための手段】
請求項１に係る発明のリモートダウンローダは、自身をリモートダウンロードする機能を有する電子機器を制御するプログラムを、リモートダウンロードを実施するリモートダウンロードプログラムと前記電子機器を制御するメインとなる制御プログラムの２つに分割し、それぞれ独立してリモートダウンロードすることを特徴とする。
【００１２】
この構成によれば、フラッシュＲＯＭ上に２面管理するのはリモートダウンローダのみで、制御ソフトについては１面管理となるので、フラッシュＲＯＭ容量を必要最小限に抑えて２面管理方式を実現することができる。
【００１３】
請求項２に係る発明のリモートダウンローダは、請求項１に係る発明のリモートダウンローダにおいて、フラッシュＲＯＭに前記リモートダウンロードプログラムを格納するＡ面及びＢ面の２つのリモートダウンローダ格納領域が設定されるとともに、それぞれの面のリモートダウンローダ格納領域内に、起動するリモートダウンローダの起動面に関する情報を格納する起動面判定情報が設定され、それぞれのリモートダウンローダ格納領域内の起動面判定情報のみにより起動面を判定することを特徴とする。
【００１４】
この構成によれば、フラッシュＲＯＭ以外の特別な装置（メモリ等）を必要とせず、容易に２面管理方式を実現することができる。
【００１５】
請求項３に係る発明のリモートダウンローダは、請求項２に係る発明のリモートダウンローダにおいて、ＲＡＭにバージョンアップ判定に関する情報を格納するバージョンアップ判定情報が設定され、前記２つのリモートダウンローダ格納領域内の起動面判定情報に加えて、前記バージョンアップ判定情報により起動面を判定することを特徴とする。
【００１６】
この構成によれば、起動処理の短縮を目的としたフラッシュＲＯＭへのファームウェア遅延書き込みや、リモートダウンローダの自律再起動といった、よりきめ細かな２面管理方式を実現することができる。
【００１７】
請求項４に係る発明のリモートダウンローダは、請求項３に係る発明のリモートダウンローダにおいて、前記リモートダウンロードプログラムを前記フラッシュＲＯＭから前記ＲＡＭへ展開するために最低限必要なブート処理とその他残りのブート処理を実施するブート手段と、起動面判定情報よりリモートダウンローダの起動面を判定するリモートダウンローダ起動面判定手段と、前記リモートダウンローダ起動面判定手段からの要求により、リセットされるのを待ち続けるリセット待ち手段と、リモートダウンローダ起動面からリモートダウンローダを展開し、展開したリモートダウンローダのエントリポイントに分岐するリモートダウンローダ展開手段と、起動面判定情報の報告及びバージョンアップに伴う起動面判定情報の更新を行う起動面判定情報管理手段と、バージョン情報の報告及びバージョン情報の更新を行うバージョン情報管理手段と、ダウンロードされたファームウェアを前記フラッシュＲＯＭに格納し、前記起動面判定情報管理手段にバージョンアップに伴う起動面判定情報の更新を指示し、前記バージョン情報管理手段にバージョンアップに伴うバージョン情報の更新を指示するファームウェアバージョンアップ手段と、ファームウェアのバージョンアップを管理するファームウェアバージョンアップ管理手段と、前記ファームウェアバージョンアップ管理手段からの指示により上位装置からファームウェアをダウンロードするファームウェアダウンロード手段と、前記ファームウェアバージョンアップ管理手段からの指示により、指示された制御ソフト起動面から制御プログラムを前記ＲＡＭ上に展開し、制御プログラムのエントリポイントに分岐する制御ソフト展開手段とを具備し、前記リモートダウンローダ起動面判定手段は、前記ブート手段にて最低限必要なブート処理が行われた後、前記起動面判定情報管理手段からの起動面判定情報の報告よりリモートダウンローダの起動面を判定し、正常に判定できた場合は判定結果を前記リモートダウンローダ展開手段に報告し、正常に判定できなかった場合は前記リセット待ち手段にリセット待ちを要求し、前記起動面情報判定管理手段は、前記リモートダウンローダ起動面判定手段からの要求により起動面判定情報を報告し、前記ファームウェアバージョンアップ手段からの指示により、バージョンアップに伴う起動面判定情報の更新を実施し、前記バージョン情報管理手段は、前記ファームウェアバージョンアップ管理手段からのバージョン情報報告要求によりバージョン情報を報告するとともに前記ファームウェアバージョンアップ手段からの要求によりバージョン情報を更新し、前記ファームウェアバージョンアップ管理手段は、前記バージョン情報管理手段から報告されたファームウェアのファームウェアバージョン情報を前記上位装置に報告し、前記上位装置に対してファームウェアバージョンアップの必要性を問い合わせ、前記上位装置より必要との指示を受けた場合はファームウェアダウンロード手段を経由してファームウェアダウンロードを実施し、ファームウェアダウンロード直後にファームウェアダウンロード処理の合否を判断し、失敗と判断した場合はバージョンアップ処理を中止して前記制御ソフト展開手段に制御プログラムの展開を要求し、ファームウェア内リモートダウンローダのバージョンアップの必要性については前記バージョン情報管理手段から報告されたリモートダウンローダのリモートダウンローダ個別バージョン情報とダウンロードしたファームウェア内のリモートダウンローダ個別バージョン情報より判定し、必要と判定した場合は前記ファームウェアバージョンアップ手段にリモートダウンローダのバージョンアップを要求し、同様にファームウェア内の制御プログラムのバージョンアップの必要性をリモートダウンローダと同様の方法で判定し、必要と判定した場合は前記ファームウェアバージョンアップ手段に制御プログラムのバージョンアップを要求し、前記上位装置にバージョンアップ結果を報告し、前記制御ソフト展開手段に制御ソフトの展開を要求し、前記ファームウェアバージョンアップ手段は、前記ファームウェアバージョンアップ管理手段からの指示により、ダウンロードしたファームウェアを前記フラッシュＲＯＭに格納し、前記起動面判定情報管理手段にバージョンアップに伴う起動面判定情報の更新を指示し、前記バージョン情報管理手段にバージョンアップに伴うバージョン情報の更新を指示することを特徴とする。
【００１８】
この構成によれば、特にリモートダウンローダ自身のリモートダウンロード処理中に、リモートダウンローダが起動面判定情報を適切に制御し、通信路障害、電源断の障害が発生しても、リセット後ターゲットシステムは起動可能であり、常にリモートダウンロード機能を確保することができる。
【００１９】
請求項５に係る発明のリモートダウンローダは、請求項４に係る発明のリモートダウンローダにおいて、前記起動面判定情報管理手段は、リモートダウンローダのバージョンアップを実施するフラッシュＲＯＭ上のリモートダウンローダ格納領域のバージョンアップ対象面を起動面の次の面であるＡ面に対してはＢ面又はＢ面に対してはＡ面として管理し、リモートダウンローダのバージョンアップに伴うバージョンアップ対象面のイレーズ及びリモートダウンローダの書込を完了した際に現在の起動面の起動面判定情報を参照し、現在のバージョンアップ対象面が次回起動時の起動面と判定されるように現在のバージョンアップ対象面の起動面判定情報を書き換えることを特徴とする。
【００２０】
この構成によれば、起動面の判定を、フラッシュＲＯＭ上の起動面判定情報のみで実施するので、フラッシュＲＯＭ以外の特別な装置（メモリ）を必要とせず、容易に２面管理方式を実現することができる。
【００２１】
請求項６に係る発明のリモートダウンローダは、請求項５に係る発明のリモートダウンローダにおいて、現在の起動面の起動面判定情報を参照し、現在のバージョンアップ対象面が次回起動時の起動面と判定されるように現在のバージョンアップ対象面の起動面判定情報を書き換える方法として「じゃんけん」論理を適用し、起動時の起動面判定においては「じゃんけん」に「勝った」方が起動面と判定されることとして、現在の起動面の起動面判定情報を「先出し」、現在のバージョンアップ対象面の起動面判定情報を「後出し」と例え、「先出し」の論理に対して「勝つ」ように「後出し」の論理を決定し、前記起動面判定情報管理手段は、現在のバージョンアップ対象面の起動面判定情報を書き換えることを特徴とする。
【００２２】
この構成によれば、「じゃんけん」という非常に簡単なロジックを使用して、容易に起動面の判定処理を実現することができる。
【００２３】
請求項７に係る発明のリモートダウンローダは、請求項４から請求項６のいずれかに係る発明のリモートダウンローダにおいて、前記起動面判定情報管理手段は、リモートダウンローダのバージョンアップに伴うバージョンアップ対象面のイレーズを実施する直前に、バージョンアップ対象面の起動面判定情報の全ビットを“０”に設定するを具備することを特徴とする。
【００２４】
この構成によれば、フラッシュＲＯＭの特性を利用することにより、容易にフラッシュＲＯＭのイレーズ処理及び書き込み処理完了状況を判定することができる。
【００２５】
請求項８に係る発明のリモートダウンローダは、請求項４から請求項７のいずれかに係る発明のリモートダウンローダにおいて、モートダウンロード処理におけるソフトウェア不具合等の処理異常を検出し、前記起動面判定情報管理手段に起動面判定情報の制御を要求し、前記リセット待ち手段にリセット待ちを要求するリモートダウンローダプログラム障害検出手段を具備し、前記起動面判定情報管理手段は、前記リモートダウンローダプログラム障害検出手段からの起動面判定情報の制御要求により、現起動面が次起動面と判定されないように現起動面の起動面判定情報を書き換え、前記リモートダウンローダ起動面判定手段は、前記起動面判定情報管理手段から報告される、書き換えられた起動面判定情報より、前回起動した起動面を現在の起動面と判定しないことを特徴とする。
【００２６】
この構成によれば、特にリモートダウンローダ自身のリモートダウンロード処理中に、リモートダウンローダが起動面判定情報を適切に制御し、通信路障害、電源断の障害に加えて、起動しているリモートダウンローダ自身の不具合等によるプログラム暴走等の障害が発生しても、リセット後ターゲットシステムは起動可能であり、常にリモートダウンロード手段を確保することができる。
【００２７】
請求項９に係る発明のリモートダウンローダは、請求項４から請求項８のいずれかに係る発明のリモートダウンローダにおいて、前記リモートダウンローダ起動面判定手段は、システム初期立ち上げ時、Ａ面であるリモートダウンローダ格納領域にリモートダウンローダが格納されていれば、当該リモートダウンローダ格納領域の起動面判定情報及びＢ面のリモートダウンローダ格納領域全体の全ビットが“１”であるフラッシュＲＯＭにおけるイレーズ完了状態であっても、その後のシステム運用における起動面の判定処理を正常に実施することを特徴とする。
【００２８】
この構成によれば、システム初期立ち上げ時にフラッシュＲＯＭ全体をイレーズ後、Ａ面のみにリモートダウンロードプログラムを書き込めばシステム初期立ち上げ可能であり、両面の起動面判定情報に正常な値を書き込むといった作業や、Ｂ面にリモートダウンロードプログラムを書き込むといった作業は不要となる。
【００２９】
請求項１０に係る発明のリモートダウンローダは、請求項４から請求項９のいずれかに係る発明のリモートダウンローダにおいて、前記ブート手段及び前記リモートダウンローダ起動面判定手段及び前記ファームウェアバージョン管理手段からのバージョンアップ判定情報の制御要求によりバージョンアップ判定情報を制御し、前記ファームウェアバージョン管理手段からのバージョンアップ判定情報の報告要求に対してバージョンアップ判定情報を報告するバージョンアップ判定情報管理手段を具備し、前記ブート手段は、リモートダウンロードプログラムを前記フラッシュＲＯＭから前記ＲＡＭへ展開するために最低限必要なブート処理と、その他残りのブート処理を実施し、バージョンアップ判定情報の初期化を前記バージョンアップ判定情報管理手段に要求し、前記リモートダウンローダ起動面判定手段は、前記ブート手段による最低限必要なブート処理後、前記起動面判定情報管理手段からの起動面判定情報の報告よりリモートダウンローダの起動面を判定し、正常に判定できた場合はその判定結果を前記リモートダウンローダ展開手段と前記バージョンアップ判定情報管理手段に報告し、正常に判定できなかった場合は前記リセット待ち手段にリセット待ちを要求し、前記ファームウェアバージョンアップ管理手段は、前記バージョン情報管理手段から報告されたファームウェアバージョン情報を前記上位装置に報告し、前記上位装置に対してファームウェアバージョンアップの必要性を問い合わせ、前記上位装置より必要との指示を受けた場合は前記ファームウェアダウンロード手段を経由してファームウェアダウンロードを実施し、ファームウェアダウンロード処理の合否を確認し、失敗と判断された場合はバージョンアップ処理を中止し、前記制御ソフト展開手段に制御プログラムの展開を要求し、ファームウェア内リモートダウンローダのバージョンアップの必要性については前記バージョン情報管理手段から報告されたリモートダウンローダ個別バージョン情報とダウンロードしたファームウェア内のリモートダウンローダ個別バージョン情報より判定しその判定結果を前記バージョンアップ判定情報管理手段に報告し、同様にファームウェア内制御プログラムのバージョンアップの必要性をリモートダウンローダと同様の方法で判定しその判定結果を前記バージョンアップ判定情報管理手段に報告し、必要と判定された場合は前記制御ソフト展開手段にダウンロードしたファームウェアを一時的に格納しているＲＡＭ上の領域であるファームウェア一次格納領域からの制御プログラムの展開を要求し、不要と判定された場合は前記制御ソフト展開手段にフラッシュＲＯＭ上の制御ソフト面からの制御プログラムの展開を要求し、制御ソフト起動後前記バージョンアップ判定情報管理手段からの報告により、リモートダウンローダ処理においてリモートダウンローダのバージョンアップ必要と判定されていた場合は前記ファームウェアバージョンアップ手段にリモートダウンローダのバージョンアップを要求し、同様にリモートダウンローダ処理において制御プログラムのバージョンアップ必要と判定されていた場合は前記ファームウェアバージョンアップ手段に制御プログラムのバージョンアップを要求し、正常にリモートダウンローダ又は制御プログラムのバージョンアップの必要性が判定されていなかった場合は前記リセット待ち手段にリセット待ちを要求し、前記上位装置にバージョンアップ結果を報告することを特徴とする。
【００３０】
この構成によれば、起動時にファームウェアのフラッシュＲＯＭへの書き込み処理を実施する必要が無くなり、起動後、メインとなる制御処理に影響を与えないような低優先度の処理としてファームウェアのフラッシュＲＯＭへの書き込み処理を実施することにより、メインとなる制御処理開始までの起動時間を大幅に短縮することができる。
【００３１】
請求項１１に係る発明のリモートダウンローダは、請求項４から請求項１０のいずれかに係る発明のリモートダウンローダにおいて、前記ファームウェアバージョンアップ管理手段からの報告によりファームウェア内リモートダウンローダのバージョンアップ必要と判定された場合、リモートダウンローダの自律再起動処理を行う自律再起動手段を具備し、前記リモートダウンローダ起動面判定手段は、前記ブート手段による最低限必要なブート処理後、前記起動面判定情報管理手段からの起動面判定情報の報告と前記バージョンアップ判定情報管理手段からのバージョンアップ判定情報の報告よりリモートダウンローダの起動面を判定し、正常に判定できた場合はその判定結果を前記リモートダウンローダ展開手段と前記バージョンアップ判定情報管理手段に報告し、正常に判定できなかった場合は前記リセット待ち手段にリセット待ちを要求し、前記リモートダウンローダ展開手段は、前記リモートダウンローダ起動面判定手段からのリモートダウンローダ起動面の報告よりファームウェア一次格納領域からの展開を報告された場合はファームウェア一次格納領域上のリモートダウンロードプログラムを展開し、フラッシュＲＯＭ上のリモートダウンローダ格納領域からの展開を報告された場合は報告されたリモートダウンローダ格納領域の起動面からリモートダウンロードプログラムを展開し、展開したリモートダウンロードプログラムのエントリポイントに分岐し、前記ファームウェアバージョンアップ管理手段は、前記バージョンアップ判定情報管理手段からのバージョンアップ判定情報よりファームウェアバージョンアップ判定実施不要と判定された場合は、前記上位装置からのファームウェアダウンロード処理及びファームウェアバージョンアップの必要性判定を実施せず、ファームウェアバージョンアップ判定実施必要と判定された場合は、前記バージョン情報管理手段から報告されたファームウェアのバージョン情報を前記上位装置に報告し、前記上位装置に対してファームウェアバージョンアップの必要性を問い合わせ、前記上位装置より必要との指示を受けた場合は、前記ファームウェアダウンロード手段を経由してファームウェアダウンロードを実施し、ファームウェアダウンロード処理の合否を確認し、失敗と判断した場合はバージョンアップ処理を中止し、前記制御ソフト展開手段に制御プログラムの展開を要求し、ファームウェア内リモートダウンローダのバージョンアップの必要性については、前記バージョン情報管理手段から報告されたリモートダウンローダ個別バージョン情報とダウンロードしたファームウェア内のリモートダウンローダ個別バージョン情報より判定し、その判定結果を前記バージョンアップ判定情報管理手段に報告し、必要と判定された場合は前記自律再起動手段にリモートダウンローダの自律再起動を要求し、同様にファームウェア内制御ソフトのバージョンアップの必要性をリモートダウンローダと同様の方法で判定し、その判定結果を前記バージョンアップ判定情報管理手段に報告し、必要と判定された場合は前記制御ソフト展開手段に前記ＲＡＭ上の一次格納面からの制御プログラムの展開を要求し、不要と判定された場合は、前記制御ソフト展開手段に前記フラッシュＲＯＭ上の制御ソフト面からの制御プログラムの展開を要求し、制御ソフト起動後、前記バージョンアップ判定情報管理手段からの報告によりリモートダウンローダ処理においてリモートダウンローダのバージョンアップ必要と判定されていた場合は、前記ファームウェアバージョンアップ手段にリモートダウンローダのバージョンアップを要求し、同様にリモートダウンローダ処理において制御プログラムのバージョンアップ必要と判定されていた場合は、前記ファームウェアバージョンアップ手段に制御プログラムのバージョンアップを要求し、正常にリモートダウンローダ又は制御プログラムのバージョンアップの必要性が判定されていなかった場合は、前記リセット待ち手段にリセット待ちを要求し、前記上位装置にバージョンアップ結果を報告することを特徴とする。
【００３２】
この構成によれば、リモートダウンロードプログラムをバージョンアップ後、リセット処理を実施することなく、バージョンアップしたリモートダウンロードプログラムを自律的に再起動することが可能となる。
【００３３】
請求項１２に係る発明のリモートダウンローダは、請求項４から請求項１１のいずれかに係る発明のリモートダウンローダにおいて、前記起動面判定情報管理手段は、起動面判定情報の各情報要素を、冗長ビットを持った複数ビット構成で管理することを特徴とする。
【００３４】
この構成によれば、メモリ装置の劣化等のハードウェア故障や、リモートダウンロードプログラムの不具合等のソフトウェア故障を、簡単な手段によって実現することができる。
【００３５】
請求項１３に係る発明のリモートダウンローダは、請求項４から請求項１１のいずれかに係る発明のリモートダウンローダにおいて、前記バージョンアップ判定情報管理手段は、バージョンアップ判定情報の各情報要素を、冗長ビットを持った複数ビット構成で管理することを特徴とする。
【００３６】
この構成によれば、メモリ装置の劣化等のハードウェア故障や、リモートダウンロードプログラムの不具合等のソフトウェア故障を、簡単な手段によって実現することができる。
【００３７】
請求項１４に係る発明の基地局装置は、請求項１から請求項１３のいずれかに係る発明のリモートダウンローダを具備することを特徴とする。
【００３８】
この構成によれば、無線通信装置において、上記いずれかと同様の作用効果を得ることができる。
【００３９】
請求項１５に係る発明のリモートダウンロード方法は、リモートダウンローダをフラッシュＲＯＭからＲＡＭへ展開するために最低限必要なブート処理を実施し、起動面判定情報よりリモートダウンローダの起動面を判定し、正常に判定できなかった場合はリセット待ちを行い、正常に判定できた場合は判定結果が示す起動面からリモートダウンローダを展開し、展開したリモートダウンローダのエントリポイントに分岐し、その他残りのブート処理を実施し、ファームウェアバージョン情報を上位装置に報告し、上位装置に対してファームウェアバージョンアップの必要性を問い合わせ、上位装置より必要との指示を受けた場合はファームウェアダウンロードを実施し、ファームウェアダウンロード処理の合否を確認し、失敗と判断された場合はバージョンアップ処理を中止して制御プログラムを展開し、ファームウェア内リモートダウンローダのバージョンアップの必要性については、リモートダウンローダ個別バージョン情報とダウンロードしたファームウェア内のリモートダウンローダ個別バージョン情報とより判定し、必要と判定された場合はリモートダウンローダのバージョンアップを実施し、バージョンアップに伴い起動面判定情報の更新及びバージョン情報の更新を行い、同様にファームウェア内制御プログラムのバージョンアップの必要性をリモートダウンローダと同様の方法で判定し、必要と判定された場合は制御プログラムのバージョンアップを実施し、バージョンアップに伴いバージョン情報の更新を行い、上位装置にファームウェアバージョンアップ結果を報告し、フラッシュＲＯＭから制御プログラムをＲＡＭ上に展開し、制御プログラムのエントリポイントに分岐することを特徴とする。
【００４０】
この方法によれば、特にリモートダウンローダ自身のリモートダウンロード処理中に、リモートダウンローダが起動面判定情報を適切に制御し、通信路障害、電源断の障害が発生しても、リセット後ターゲットシステムは起動可能であり、常にリモートダウンロード機能を確保することができる。
【００４１】
請求項１６に係る発明のリモートダウンロード方法は、請求項１５に係る発明のリモートダウンロード方法において、バージョンアップ対象面を起動面の次面として管理し、リモートダウンローダのバージョンアップに伴うバージョンアップ対象面のイレーズ及びリモートダウンローダの書込を完了した際に現起動面の起動面判定情報を参照し、現バージョンアップ対象面が次起動面と判定されるように現バージョンアップ対象面の起動面判定情報を書き換えることを特徴とする。
【００４２】
この方法によれば、起動面の判定を、フラッシュＲＯＭ上の起動面判定情報のみで実施するので、フラッシュＲＯＭ以外の特別な装置（メモリ）を必要とせず、容易に２面管理方式を実現することができる。
【００４３】
請求項１７に係る発明のリモートダウンロード方法は、請求項１５に係る発明のリモートダウンロード方法において、現起動面の起動面判定情報を参照し、現バージョンアップ対象面が次起動面と判定されるように現バージョンアップ対象面の起動面判定情報を書き換える方法として「じゃんけん」論理を適用し、起動時の起動面判定においては「じゃんけん」に「勝った」方が起動面と判定されることとして、現起動面の起動面判定情報を「先出し」、現バージョンアップ対象面の起動面判定情報を「後出し」と例え、「先出し」の論理に対して「勝つ」ように「後出し」の論理を決定し、現バージョンアップ対象面の起動面判定情報を書き換えることを特徴とする。
【００４４】
この方法によれば、「じゃんけん」という非常に簡単なロジックを使用して、容易に起動面の判定処理を実現することができる。
【００４５】
請求項１８に係る発明のリモートダウンロード方法は、請求項１５から請求項１７のいずれかに係る発明のリモートダウンロード方法において、モートダウンローダのバージョンアップに伴うバージョンアップ対象面のイレーズを実施する直前に、バージョンアップ対象面の起動面判定情報の全ビットを“０”に設定することを特徴とする。
【００４６】
この方法によれば、フラッシュＲＯＭの特性を利用することにより、容易にフラッシュＲＯＭのイレーズ処理及び書き込み処理完了状況を判定することができる。
【００４７】
請求項１９に係る発明のリモートダウンロード方法は、請求項１５から請求項１８のいずれかに係る発明のリモートダウンロード方法において、リモートダウンローダによるリモートダウンロード処理においてソフトウェア不具合等の処理異常を検出した際、現起動面が次起動面と判定されないように現起動面の起動面判定情報を書き換え、リセット待ちを行い、リセットされ次回起動時には、前起動面で前回起動時に異常が検出された面を現起動面と判定しないことを特徴とする。
【００４８】
この方法によれば、特にリモートダウンローダ自身のリモートダウンロード処理中に、リモートダウンローダが起動面判定情報を適切に制御し、通信路障害、電源断の障害に加えて、起動しているリモートダウンローダ自身の不具合等によるプログラム暴走等の障害が発生しても、リセット後ターゲットシステムは起動可能であり、常にリモートダウンロード機能を確保することができる。
【００４９】
請求項２０に係る発明のリモートダウンロード方法は、請求項１５から請求項１９のいずれかに係る発明のリモートダウンロード方法において、システム初期立ち上げ時、一方の面であるリモートダウンローダ格納領域にリモートダウンローダが格納されていれば、当該リモートダウンローダ格納領域の起動面判定情報及び他方の面であるリモートダウンローダ格納領域全体の全ビットがフラッシュＲＯＭにおけるイレーズ完了状態を示す“１”であっても、その後のシステム運用における起動面の判定処理を正常に実施することができることを特徴とする。
【００５０】
この方法によれば、システム初期立ち上げ時にフラッシュＲＯＭ全体をイレーズ後、Ａ面のみにリモートダウンロードプログラムを書き込めばシステム初期立ち上げ可能であり、両面の起動面判定情報に正常な値を書き込むといった作業や、Ｂ面にリモートダウンロードプログラムを書き込むといった作業は不要となる。
【００５１】
請求項２１に係る発明のリモートダウンロード方法は、請求項１５から請求項２０のいずれかに係る発明のリモートダウンロード方法において、リモートダウンローダをフラッシュＲＯＭからＲＡＭへ展開するために最低限必要なブート処理後、バージョンアップ判定情報の初期化を実施し、起動面判定情報よりリモートダウンローダの起動面を判定し、正常に判定できた場合は判定結果が示す起動面からリモートダウンローダを展開し、展開したリモートダウンローダのエントリポイントに分岐すると共に、判定結果を先程初期化したバージョンアップ判定情報に格納し、ファームウェア内リモートダウンローダのバージョンアップの必要性については、リモートダウンローダ個別バージョン情報と、ダウンロードしたファームウェア内のリモートダウンローダ個別バージョン情報より判定し、判定結果をバージョンアップ判定情報に格納し、同様にファームウェア内制御ソフトのバージョンアップの必要性をリモートダウンローダと同様の方法で判定し、その判定結果をバージョンアップ判定情報に格納し、バージョンアップ判定情報より制御プログラムのバージョンアップが必要と判定された場合は、ＲＡＭ上の一次格納面からの制御プログラムを展開し、不要と判定された場合は、フラッシュＲＯＭ上の制御ソフト面からの制御プログラムを展開し、制御ソフト起動後、バージョンアップ判定情報を参照し、リモートダウンローダ処理においてリモートダウンローダのバージョンアップ必要と判定されていた場合は、リモートダウンローダのバージョンアップを実施し、バージョンアップに伴い起動面判定情報の更新及びバージョン情報の更新を行い、同様に、バージョンアップ判定情報を参照し、リモートダウンローダ処理において制御プログラムのバージョンアップ必要と判定されていた場合は、制御プログラムのバージョンアップを実施し、バージョンアップに伴いバージョン情報の更新を行い、更にバージョンアップ情報を参照し、正常にリモートダウンローダまたは制御プログラムのバージョンアップの必要性が判定されていなかった場合は、リセット待ちを行うことを特徴とする。
【００５２】
この方法によれば、起動時にファームウェアのフラッシュＲＯＭへの書き込み処理を実施する必要が無くなり、起動後、メインとなる制御処理に影響を与えないような低優先度の処理としてファームウェアのフラッシュＲＯＭへの書き込み処理を実施することにより、メインとなる制御処理開始までの起動時間を大幅に短縮することができる。
【００５３】
請求項２２に係る発明のリモートダウンロード方法は、請求項１５から請求項２１のいずれかに係る発明のリモートダウンロード方法において、最低限必要なブート処理後、起動面判定情報とバージョンアップ判定情報よりリモートダウンローダの起動面を判定し、正常に判定でき且つファームウェア一次格納領域からの起動と判定された場合はファームウェア一次格納領域上のリモートダウンローダを展開し、バージョンアップ判定情報より、ファームウェアバージョンアップ判定実施不要と判定された場合は上位装置からのファームウェアダウンロード処理及びファームウェアバージョンアップの必要性判定を実施せず、ファームウェアバージョンアップ判定実施必要と判定された場合のみ上位装置からのファームウェアダウンロード処理及びファームウェアバージョンアップの必要性判定を実施し、上位装置からのファームウェアダウンロード処理及びファームウェアバージョンアップの必要性判定を実施した場合でリモートダウンローダ個別バージョンアップが必要と判定された場合はリモートダウンローダの自律再起動を実施し、リモートダウンローダ個別バージョンアップが不要と判定された場合は引き続きリモートダウンローダと同様の方法でファームウェア内制御ソフトのバージョンアップの必要性判定を実施することを特徴とする。
【００５４】
この方法によれば、リモートダウンロードプログラムをバージョンアップ後、リセット処理を実施することなく、バージョンアップしたリモートダウンロードプログラムを自律的に再起動することが可能となる。
【００５５】
請求項２３に係る発明のリモートダウンロード方法は、請求項１５から請求項２２のいずれかに係る発明のリモートダウンロード方法において、起動面判定情報の各情報要素を、冗長ビットを持った複数ビット構成で管理し、同様にバージョンアップ判定情報の各情報要素を、冗長ビットを持った複数ビット構成で管理する、の両方またはいずれかを実施することを特徴とする。
【００５６】
この方法によれば、メモリ装置の劣化等のハードウェア故障や、リモートダウンローダプログラムの不具合等のソフトウェア故障を簡単な手段によって実現することができる。
【００５７】
以下、本発明の実施の形態を説明する前に、図４８を用いてリモートダウンローダを実施するシステム概要を説明する。
【００５８】
リモートダウンロードは、プログラムバージョンアップを遠隔操作により実現することを目的として実施されるものであり、上位装置１０１とターゲットシステム１００との間で実施され、上位装置１０１が保持するプログラムをターゲットシステム１００にリモートダウンロードする。上位装置１０１とターゲットシステム１００は通信路を介して接続され、ターゲットシステム１００は少なくともＣＰＵ２０１、フラッシュＲＯＭ（不揮発性メモリ）１０２、ＲＡＭ（揮発性メモリ）１０３、上位装置通信コントローラ２０２を具備する。
【００５９】
続いて、図４９を用いて、上位装置１０１とターゲットシステム１００との間で実施されるリモートダウンロードの通信プロトコルの例を説明する。
ステップ（ＳＴ）３１１おいて、ターゲットシステム１００は、現在保持しているプログラムバージョン確認する。そして、ステップ３１２において、先のステップで確認したプログラムバージョンを上位装置１０１に報告する。
【００６０】
次いで、ステップ３２１において、上位装置１０１は、自己が保持しているプログラムバージョンとターゲットシステム１００より報告を受けたプログラムバージョンとを比較してバージョンアップの有無を判定する。そして、ステップ３２２において、上位装置１０１はターゲットシステム１００にバージョンアップの有無を指示する。その後、ステップ３３０において、上位装置１０１とターゲットシステム１００との間でリモートダウンロードを実施する。
【００６１】
リモートダウンロード完了後、ターゲットシステム１００は、ダウンロード処理の合否をサム値チェック等の方法で確認する。ステップ３４１において、ターゲットシステム１００は、バージョンアップ処理を実施する。そして、ステップ３４２において、バージョンアップの結果を上位装置１０１に報告する。次いで、ステップ３５０において、上位装置１０１はバージョンアップ結果の報告より、ターゲットシステム１００のプログラムバージョン情報を更新し、ターゲットシステム１００のプログラムバージョンを把握しておく。
【００６２】
なお、以後前記通信プロトコルを前提として話を進めるが、その他の通信プロトコルを適用しても同様である。
【００６３】
最後に、図５０を用いて、ファームウェアのバージョン体系について説明する。
ファームウェアは、ＦＤＰ（リモートダウンロードプログラム）と制御ソフトから構成され、ファームウェア全体のバージョン４２００の他、ＦＤＰの個別バージョン４２０１及び制御ソフトの個別バージョン４２０２から構成される。
【００６４】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して説明する。
（実施の形態１）
図１は、本発明の実施の形態１に係るリモートダウンローダの構成を示すブロック図である。なお、本実施の形態のリモートダウンローダは、例えば移動動体通信システムの基地局装置に設けられる。
【００６５】
図１において、リモートダウンローダ１００Ａ上には、フラッシュＲＯＭ１０２とＲＡＭ１０３が実装されており、上位装置１０１と通信路２００（図４９参照）を介して接続されている。フラッシュＲＯＭ１０２上にはＦＤＰ１１３を格納する領域として、ＦＤＰ格納領域（Ａ面）１１０と、ＦＤＰ格納領域（Ｂ面）１１１が存在し、それぞれの領域内に起動面判定情報１１２＿Ａ、１１２＿Ｂが格納されている。また、フラッシュＲＯＭ１０２上にはファームウェア等のバージョン情報１１４も格納されている。
【００６６】
リモートダウンローダ１００Ａは、ブート手段１２０と、ＦＤＰ起動面判定手段１２１と、ＦＤＰ展開手段１２３と、起動面判定情報管理手段１３０と、バージョン情報管理手段１３１と、ファームウェアバージョンアップ管理手段１４０と、ファームウェアバージョンアップ手段１５０と、ファームウェアダウンロード手段１６０と、上位装置通信手段１６１と、制御ソフト展開手段１７０と、リセット待ち手段１８０とを備えている。
【００６７】
ブート手段１２０は、ＦＤＰ１１３をフラッシュＲＯＭ１０２からＲＡＭ１０３へ展開するために最低限必要なブート処理と、その他残りのブート処理を実施する。ＦＤＰ起動面判定手段１２１は、最低限必要なブート処理後、起動面判定情報管理手段１３０からの起動面判定情報１１２の報告よりＦＤＰ１１３の起動面を判定し、正常に判定できた場合は判定結果をＦＤＰ展開手段１２３に報告し、正常に判定できなかった場合は、リセット待ち手段１８０にリセット待ちを要求する。ＦＤＰ展開手段１２３は、ＦＤＰ起動面判定手段１２１からのＦＤＰ起動面の報告より、報告された起動面からＦＤＰ１１３を展開し、展開したＦＤＰ１１３のエントリポイントに分岐する。
【００６８】
ファームウェアバージョンアップ管理手段１４０は、バージョン情報管理手段１３１から報告されたファームウェアバージョン情報１１４を、上位装置通信手段１６１を経由して上位装置１０１に報告し、上位装置１０１に対してファームウェアバージョンアップの必要性を問い合わせ、上位装置１０１より必要との指示を受けた場合は、ファームウェアダウンロード手段１６０を経由してファームウェアダウンロードを実施する。そして、ファームウェアダウンロード処理の合否をサム値チェック等の方法で確認し、失敗と判断された場合はバージョンアップ処理を中止し、制御ソフト展開手段１７に制御ソフトの展開を要求する。
【００６９】
また、ファームウェア内ＦＤＰのバージョンアップの必要性については、バージョン情報管理手段１３１から報告されたＦＤＰ個別バージョン情報４２０１と、ダウンロードしたファームウェア内のＦＤＰ個別バージョン情報４２０１より本手段で判定する。必要と判定された場合は、ファームウェアバージョンアップ手段１５０にＦＤＰ１１３のバージョンアップを要求し、同様にファームウェア内制御ソフトのバージョンアップの必要性をＦＤＰと同様の方法で判定する。必要と判定された場合は、ファームウェアバージョンアップ手段１５０に制御ソフトのバージョンアップを要求し、上位装置通信手段１６１を経由して上位装置１０１にバージョンアップ結果を報告し、制御ソフト展開手段１７０に制御ソフトの展開を要求する。
【００７０】
バージョン情報管理手段１３１は、ファームウェアバージョンアップ管理手段１４０からの要求により、バージョン情報１１４を報告し、ファームウェアバージョンアップ手段１５０からの要求により、バージョン情報１１４を更新する。上位装置通信手段１６１は、ファームウェアバージョンアップ管理手段１４０からの要求により、上位装置１０１にバージョン情報１１４を報告し、上位装置１０１からのバージョンアップの必要性に関する指示をファームウェアバージョンアップ管理手段１４０に報告し、ファームウェアダウンロード手段１６０からの指示により上位装置１０１とダウンロード処理のための通信を実施し、上位装置１０１にバージョンアップ結果情報を報告する。
【００７１】
ファームウェアダウンロード手段１６０は、ファームウェアバージョンアップ管理手段１４０からの指示により、上位装置通信手段１６１を経由して上位装置１０１からファームウェアをダウンロードする。ファームウェアバージョンアップ手段１５０は、ファームウェアバージョンアップ管理手段１４０からの指示により、ダウンロードしたファームウェアをフラッシュＲＯＭ１０２に格納する。そして、起動面判定情報管理手段１３０にバージョンアップに伴う起動面判定情報１１２の更新を指示し、バージョン情報管理手段１３１にバージョンアップに伴うバージョン情報１１４の更新を指示する。
【００７２】
起動面情報管理手段１３０は、ＦＤＰ起動面判定手段１２１からの要求により、起動面判定情報１１２を報告し、ファームウェアバージョンアップ手段１５０からの指示により、バージョンアップに伴う起動面判定情報１１２の更新を実施する。制御ソフト展開手段１７０は、ファームウェアバージョンアップ管理手段１４０からの指示により、指示された制御ソフト起動面から制御ソフトをＲＡＭ１０３上に展開し、制御ソフトのエントリポイントに分岐する。リセット待ち手段１８０は、ＦＤＰ起動面判定手段１２１からの要求により、リセットされるのを待ち続ける。
【００７３】
このように構成されたリモートダウンローダ１００Ａの動作について、図２〜図１３を参照して説明する。
【００７４】
最初に、図９〜図１３を参照して、起動面判定情報１１２について詳細に説明する。
起動面判定情報１１２は、起動面を判定するための情報であり、フラッシュＲＯＭ１０２上のＦＤＰ格納領域（Ａ面）１１０及びＦＤＰ格納領域（Ｂ面）１１１それぞれの先頭に格納される。ＦＤＰ起動面判定手段１２１は、Ａ面及びＢ面両方の起動面判定情報１１２を参照し、起動面を判定する。起動面判定情報管理手段１３０は、ＦＤＰ起動面判定手段１２１が適切な起動面判定を実施できるように、起動面判定情報１１２を制御する。
【００７５】
図９及び図１０は起動面判定情報１１２のビットマップである。起動面判定情報１１２は起動面判定情報＿１と起動面判定情報＿２から構成される。起動面判定情報＿１はＦＤＰ処理中に異常が発生したかどうかを示すフラグである。他方、起動面判定情報＿２はＦＤＰのバージョンアップ処理のステータスを示すフラグである。
【００７６】
図１２は正常ケースのうちの運用時の起動面判定方法を示す図である。項番１〜３のＡ面及びＢ面のフラグ状態を逆にしたものが項番４〜６に相当する。
Ａ面及びＢ面の起動面判定情報＃２がフラッシュＲＯＭバージョンアップ完了を示す場合、
００００　００００　００００　１１１１をグー
００００　００００　１１１１　１１１１をチョキ
００００　１１１１　１１１１　１１１１をパー
とする「じゃんけん」の論理で「勝った」方を起動面と判定する。
【００７７】
制御としては、一方の面のバージョンアップが完了した場合、他方の面に対して「後出し」をしてわざと「じゃんけん」に勝つように一方の面の起動面判定情報＃２を設定する。例えば図１１に示すように、項番１のフラグ状態時は、Ａ面から起動するが、Ａ面で起動した後、Ｂ面をバージョンアップし、バージョンアップが完了した場合は、Ｂ面の起動面判定情報＃２を項番４のように制御する。
【００７８】
このような３値による論理を組むのは、起動面制御処理において、処理時間の大きいフラッシュＲＯＭイレーズ処理を極力無くし、ビット値”１”からビット値”０”の制御のみで起動面判定論理を実現するためである。
【００７９】
図１３は準正常ケースのうちのフラッシュＲＯＭバージョンアップ中の起動面判定方法を示す図である。項番１のＡ面及びＢ面のフラグ状態を逆にしたものが項番２に相当する。また、システム初期立ち上げ時については、実施の形態２で説明するが、システム初期立ち上げ後、はじめてフラッシュＲＯＭバージョンアップを実施した場合を項番３に示している。
【００８０】
一方の面の起動面判定情報＃２がフラッシュＲＯＭイレーズ中又はフラッシュＲＯＭライト中である場合、他方の面を起動面と判定する。制御としては、フラッシュＲＯＭイレーズを実施する直前にバージョンアップ対象面の起動面判定情報＃２をソフトで全て”０”（フラッシュＲＯＭイレーズ中）に設定し、フラッシュＲＯＭイレーズが完了した場合、ハードで全て”１”（フラッシュＲＯＭライト中）に設定される。フラッシュＲＯＭバージョンアップが完了した場合、ソフトで起動面判定情報＃２をフラッシュＲＯＭバージョンアップ完了に設定する。
【００８１】
なお、図１３の項番３の両面フラッシュＲＯＭライト中状態は、実施の形態２で説明するシステム初期立ち上げ状態と同じ状態であるが、どちらもＡ面を固定で起動面と判定するので問題はない。
【００８２】
続いて、図２〜図７のフロー図を参照して、リモートダウンロード処理の動作を説明する。
【００８３】
まず、図２を参照してメインフローについて説明する。なお、図中、ステップ７０３、７１０、７１１及び７１２についてはサブルーチン化しており、別途サブフローとして説明する。
ステップ７０１において、ＦＤＰをフラッシュＲＯＭからＲＡＭへ展開するために最低限必要なブート処理を実施する。次いで、ステップ７０３において、起動面判定情報よりＦＤＰの起動面を判定し、正常に判定できなかった場合は、リセット待ちを行う。正常に判定できた場合は、ステップ７０４において、判定結果が示す起動面からＦＤＰを展開する。ステップ７０５において、展開したＦＤＰのエントリポイントに分岐する。ステップ７０６において、その他残りのブート処理を実施する。
【００８４】
ステップ７０７において、ファームウェアバージョン情報を上位装置に報告し、上位装置に対してファームウェアバージョンアップの必要性を問い合わせ、上位装置より必要との指示を受けた場合は、ステップ７０８を実施する。ステップ７０８において、ファームウェアダウンロードを実施し、ファームウェアダウンロード処理の合否をサム値チェック等の方法で確認し、失敗と判断された場合はバージョンアップ処理を中止し、制御ソフトを展開する。
【００８５】
ファームウェア内ＦＤＰのバージョンアップの必要性については、ステップ７１０において、ＦＤＰ個別バージョン情報と、ダウンロードしたファームウェア内のＦＤＰ個別バージョン情報より判定し、必要と判定された場合は、ステップ７１１を実施する。ステップ７１１において、ＦＤＰのバージョンアップ（フラッシュＲＯＭへの格納）を実施し、バージョンアップに伴い起動面判定情報の更新及びバージョン情報の更新を行う。
【００８６】
ステップ７１２において、ステップ７１０と同様にファームウェア内制御ソフトのバージョンアップの必要性を判定し、必要と判定された場合は、ステップ７１３を実施する。ステップ７１３において、制御ソフトのバージョンアップ（フラッシュＲＯＭへの格納）を実施し、バージョンアップに伴いバージョン情報の更新を行う。ステップ７１４において、上位装置にファームウェアバージョンアップ結果を報告する。ステップ７１５において、フラッシュＲＯＭから制御ソフトをＲＡＭ上に展開する。ステップ７１６において、制御ソフトのエントリポイントに分岐する。
【００８７】
次に、図３を参照してサブフローであるＦＤＰ起動面判定処理＿１について説明する。
ステップ１１０２において、Ａ面及びＢ面の起動面判定情報＿２より、起動面を判定する。正常に判定できた場合、判定結果はステップ１１０２−１〜ステップ１１０２−８のようになる。正常に判定できなかった場合は、フラグ異常と判断し、ＡＬＭ処理を実施する。図７はＡＬＭ処理を示すサブフローである。この図において、ステップ２３０１において、リセットされるのを待つ処理（空処理の無限ループ）を行う。
【００８８】
次に、図４を参照してサブフローであるＦＤＰバージョンアップ判定＿１について説明する。
ステップ１５０１において、個別バージョンアップ判定を実施する。具体的には、リモートダウンローダが管理するＦＤＰ個別バージョン情報と、ダウンロードしたファームウェア内のＦＤＰ個別バージョン情報より判定する。バージョンが異なる場合、ステップ１５０１−１のようにＦＤＰバージョンアップ必要と判定される。バージョンが同一の場合、ステップ１５０１−２のようにＦＤＰバージョンアップ不要と判定される。
【００８９】
次に、図６を参照してサブフローであるＦＤＰバージョンアップ（フラッシュＲＯＭ書換）について説明する。
ステップ１９０１において、ＦＤＰ起動面を判定する。本実施の形態１では、図３のＦＤＰ起動面判定＿１の手順で判定し、後述する実施の形態２では、図１７、図１８のＦＤＰ起動面判定＿２の手順で判定する。また、実施の形態３及び４では、バージョンアップ判定情報を使用するので、バージョン判定情報内、ＦＤＰ起動面判定結果フラグによって判定できる。
【００９０】
ステップ１９０１−１及びステップ１９０１−２のように、ＦＤＰ起動面がＡ面の場合、ＦＤＰバージョンアップ面はＢ面となる。ＦＤＰ起動面がＢ面の場合、ＦＤＰバージョンアップ面はＡ面となる。ステップ１９０２において、ＦＤＰバージョンアップ面の起動面判定情報＿２に“０＿０＿０＿０”（０ｘ００００）を書き込む。
【００９１】
ステップ１９０３においてＦＤＰバージョンアップのためフラッシュＲＯＭのイレーズを行う。ステップ１９０４において、ＦＤＰバージョンアップのためフラッシュＲＯＭにプログラムを書き込む。ステップ１９０５において、ＦＤＰ起動面の起動面判定情報＿２に応じて、じゃんけん論理を適用する。正常に適用できた場合は、ステップ１９０５−１〜１９０５−３のように、ＦＤＰバージョンアップ面の起動面判定情報＿２に値を書き込む。正常に適用できなかった場合は、ステップ１９０５−４のように、フラグ異常としてＡＬＭ処理を行う。
【００９２】
次に、図５を参照してサブフローである制御ソフトバージョンアップ判定＿１について説明する。
ステップ１７０１において、個別バージョンアップ判定を実施する。具体的には、リモートダウンローダが管理する制御ソフト個別バージョン情報と、ダウンロードしたファームウェア内の制御ソフト個別バージョン情報より判定する。バージョンが異なる場合、ステップ１５０１−１のように制御ソフトバージョンアップ必要と判定される。バージョンが同一の場合、ステップ１５０１−２のように制御ソフトバージョンアップ不要と判定される。
【００９３】
最後に図８の物理構成図を参照して、リモートダウンロード処理の動作を説明する。
リモートダウンローダ１００は、基本的にフラッシュＲＯＭ１０２と、ＲＡＭ１０３から構成され、フラッシュＲＯＭ１０２上には、起動面判定プログラム格納及び動作領域２４０１と、ＦＤＰ格納領域（Ａ面）１１０と、ＦＤＰ格納領域（Ｂ面）１１１と、そして、制御ソフト格納領域２４０４の４つの領域が確保されている。また、ＲＡＭ上には、ＦＤＰ動作領域２４０３と、ファームウェア一時格納領域２４０２と、そして、制御ソフト動作領域２４０５の３つの領域が確保されている。
【００９４】
起動面判定プログラム２４１０は、ＦＤＰ格納領域（Ａ面）１１０の起動面判定情報１１２＿Ａと、ＦＤＰ格納領域（Ｂ面）１１１の起動面判定情報１１２＿Ｂより起動面を判定し、ＦＤＰ格納領域（Ａ面）１１０のＦＤＰ１１３＿Ａか、ＦＤＰ格納領域（Ｂ面）１１１のＦＤＰ１１３＿ＢのいずれかをＦＤＰ動作領域２４０３に展開し、ＦＤＰ１１３＿Ｄのエントリポイントに分岐する。
【００９５】
ＰＤＰ動作領域２４０３上のＦＤＰ１１３＿Ｄは、バージョンアップ判定情報５０１等より、ファームウェアを上位装置１０１からリモートダウンローダ１００内ファームウェア一時格納領域２４０２にダウンロードする。そして、ＦＤＰのバージョンアップが必要と判定された場合は、ファームウェア一時格納領域２４０２上のＦＤＰ１１３＿Ｋを、起動面の次面に相当するＦＤＰ格納領域にバージョンアップする。
【００９６】
同様に、制御ソフトのバージョンアップが必要と判定された場合は、ファームウェア一時格納領域２４０２上の制御ソフト２４２０＿Ｋを、制御ソフト格納領域２４０４にバージョンアップする。最後に、制御ソフト格納領域２４０４上の制御ソフト２４２０＿Ｓを制御ソフト動作領域２４０５に展開し、制御ソフト２４２０＿Ｄのエントリポイントに分岐する。制御ソフト動作領域２４０５上の制御ソフト２４２０＿Ｄは、組み込み処理を制御するメイン処理を開始する。
【００９７】
以上のように、本実施の形態のリモートダウンローダ１００Ａによれば、特にＦＤＰ自身のリモートダウンロード処理中に、ＦＤＰが起動面判定情報を適切に制御し、通信路障害、電源断の障害が発生しても、リセット後リモートダウンローダは起動可能であり、常にリモートダウンロード機能を確保することができる。また、その実現方法は、フラッシュＲＯＭ以外の特別な装置（メモリ等）を必要とせず、容易に実施することができる。
【００９８】
（実施の形態２）
図１４は、本発明の実施の形態２に係るリモートダウンローダの構成を示すブロック図である。本実施の形態のリモートダウンローダ１００Ｂは、実施の形態１のリモートダウンローダ１００Ａと同一の構成に加えてＦＤＰプログラム障害検出手段４００を備えている。ＦＤＰプログラム障害検出手段４００は、ＦＤＰによるリモートダウンロード処理におけるソフトウェア不具合等の処理異常を検出し、起動面判定情報管理手段１３０に起動面判定情報の制御を要求し、リセット待ち手段１８０にリセット待ちを要求する。
【００９９】
起動面情報管理手段１３０は、実施の形態１で説明した処理に加えて、ＦＤＰプログラム障害検出手段４００からの起動面判定情報の制御要求により、現起動面が次起動面と判定されないように現起動面の起動面判定情報を書き換える。リセット待ち手段１８０は、実施の形態１で説明した処理に加えて、ＦＤＰプログラム障害検出手段４００からの要求により、リセットされるのを待ち続ける。
【０１００】
このように構成されたリモートダウンローダ１００Ｂの動作について図１５〜図２５を参照して説明する。
最初に、図１９〜図２５を参照して起動面判定情報１１２について詳細に説明する。
【０１０１】
図２０は、準正常ケースのうちのＦＤＰ処理異常が発生した場合の起動面判定方法を示す図である。項番１のＡ面及びＢ面のフラグ状態を逆にしたものが項番２に相当する。また、システム初期立ち上げ後、はじめてフラッシュＲＯＭバージョンアップが完了するまでの間にＦＤＰ処理異常となった場合を項番３に示している。一方の面の起動面判定情報＿１がＦＤＰ処理異常である場合、他方の面を起動面と判定する。但し、システム初期立ち上げ時（他方の面がフラッシュＲＯＭライト中）は、起動面無しとし、リセット待ちのＡＬＭとする。制御としては、ＣＰＵ例外等、ソフトがＦＤＰ処理異常を検出した場合、起動面の起動面判定情報＿１をソフトで全て“０”（ＦＤＰ処理異常）に設定し、リセット待ちのあＬＭとする。
【０１０２】
図１９は、正常ケースのうちのシステム初期立ち上げ時の起動面判定方法を示す図である。
両方の面の起動面判定情報＿２がフラッシュＲＯＭライト中である場合は、システム初期立ち上げ時と判断し、Ａ面を固定で起動面と判定する。システム初期立ち上げ時は、Ａ面及びＢ面の起動面判定情報はフラッシュＲＯＭイレーズした状態、つまり全て“１”とする。また、ＩＣＥ等を使用し、Ａ面にＦＤＰが格納することとし、Ｂ面にはＦＤＰを格納しない。
【０１０３】
図２１は、準正常ケースのうちの、フラッシュＲＯＭイレーズ中またはフラッシュＲＯＭライト中と、ＦＤＰ処理異常が複合して発生した、２重障害の場合の起動面判定方法を示す図である。項番１〜３のＡ面及びＢ面のフラグ状態を逆にしたのが項番４〜６に相当する。また、システム初期立ち上げ後、はじめてフラッシュＲＯＭバージョンアップが完了するまでの間に２重障害となった場合を項番７に示している。
【０１０４】
一方の面の起動面判定情報＿１がＦＤＰ処理異常、起動面判定情報＿２がフラッシュＲＯＭイレーズ中またはフラッシュＲＯＭライト中であり、他方の面の起動面判定情報＿１がＦＤＰ処理正常、起動面判定情報＿２がフラッシュＲＯＭバージョンアップ完了である場合に限り、他方の面を起動面と判定する。両方の面の起動面判定情報＿１がＦＤＰ処理異常、または、起動面判定情報＿２がフラッシュＲＯＭイレーズ中またはフラッシュＲＯＭライト中である場合は、起動面無しとし、リセット待ちのＡＬＭとする。
【０１０５】
なお、図２１の項番７のＡ面ＦＤＰ処理異常の両面フラッシュＲＯＭライト中状態は、図２０の項番３のシステム初期立ち上げ状態と同じ状態であるが、いずれも起動面無しと判定するので問題はない。
【０１０６】
図２２〜図２５より、起動面判定情報のフラグ状態及びフラグ状態遷移について説明する。
図２２及び図２３は起動面判定情報のフラグ状態を示す図である。正常ケースの状態については、状態番号を”□”で囲う。
起動面判定情報のとり得るフラグ状態数は、合計５２である。正常ケースについては、システム初期立ち上げ時の１個と、運用時の６個の合計７個である。純正上ケースについてはＭ、システム初期立ち上げ時の３個と、運用時の４２個の合計４５個である。
【０１０７】
図１９の項番１の状態が図２２における状態番号０−０に相当する。また、図１２の項番１〜６の状態が、それぞれ図２２及び図２３における状態番号２−０、４−０、６−０、３−０、５−０、１−０に相当する。図２２及び図２３におけるその他の状態は純正常ケースの状態である。
【０１０８】
図２４及び図２５に起動面判定情報のフラグ状態遷移図を示す。
まず、システム初期立ち上げ時のフラグ状態遷移について説明する。
フラグ状態０−０は、システム初期立ち上げ時であり、リセット後、ＦＤＰバージョンアップを開始することにより、Ｂ面フラッシュＲＯＭイレーズ中を示すフラグ状態０−１に遷移する。フラッシュＲＯＭイレーズが完了すると、Ｂ面フラッシュＲＯＭライト中を示すフラグ状態０−０に遷移し、フラッシュＲＯＭライトが完了した時点で、フラッシュＲＯＭバージョンアップ完了を示すフラグ状態１−０に遷移する。
【０１０９】
フラグ状態０−０及び０−１で、ソフト不具合等によるＡＬＭ処理が実施された場合、それぞれ、Ａ面ＦＤＰ処理異常を示すフラグ状態０−０−１及び０−１−１に遷移する。フラグ状態０−０−１及び０−１−１では、その後リセットが行われても起動面無しでＡＬＭとなる。
【０１１０】
続いて、運用時のフラグ状態遷移について説明する。
フラグ状態１−０は、バージョンアップ完了状態を示し、リセット後、起動面判定処理によりＢ面が起動面と判定される。Ｂ面で起動後、Ａ面のバージョンアップを開始することにより、Ａ面フラッシュＲＯＭイレーズ中を示すフラグ状態１−１に遷移する。フラッシュＲＯＭイレーズが完了すると、Ａ面フラッシュＲＯＭライト中を示すフラグ状態１−２に遷移し、フラッシュＲＯＭライトが完了した時点で、フラッシュＲＯＭバージョンアップ完了を示すフラグ状態２−０に遷移する。
【０１１１】
フラグ状態１−０で、ソフト不具合等によるＡＬＭ処理が実施された場合、Ｂ面ＦＤＰ処理異常を示すフラグ状態１−０−１に遷移する。フラグ状態１−０−１では、その後リセットが行われた場合、起動面判定処理によりＡ面が起動面と判定される。Ａ面で起動した後、Ｂ面のバージョンアップを開始することにより、Ｂ面イレーズ中を示すフラグ状態１−０−２に遷移する。フラッシュＲＯＭイレーズが完了すると、Ｂ面フラッシュＲＯＭライト中を示すフラグ状態６−２に遷移し、フラッシュＲＯＭライトが完了した時点で、フラッシュＲＯＭバージョンアップ完了を示すフラグ状態１−０に遷移する。
【０１１２】
フラグ状態１−１及び１−２で、ソフト不具合等によるＡＬＭ処理が実施された場合、それぞれＦＤＰ処理異常を示すフラグ状態１−１−１及び１−２−１に遷移する。フラグ状態１−１−１及び１−２−１では、その後リセットが行われても起動面無しでＡＬＭとなる。フラグ状態２−０、３−０、４−０、５−０、６−０については、フラグ状態１−０からの状態遷移と全く同様である。
【０１１３】
フラグ状態遷移は、ソフト不具合等によるＡＬＭ処理が行われない限り、０−０から始まり、１−０、そしてフラッシュＲＯＭバージョンアップ中という過渡状態１−１そして１−２を経由して２−０、その後同様に３−０、４−０、５−０、６−０、そしてまた最初に戻って１−０となる。０−０の状態は、システム初期立ち上げ時に以降は遷移することはない。
【０１１４】
続いて、図１５〜図１８のフロー図を参照してリモートダウンロード処理の動作を説明する。
まず、図１５を参照してメインフローについて説明する。なお、ステップ８０３、８１０、８１１、８１２についてはサブルーチン化しており、別途サブフローとして説明する。
【０１１５】
ステップ８０１〜ステップ８１６までは、実施の形態１を示す図２のステップ７０１〜ステップ７１６と同じである。但し、ステップ８０３のＦＤＰ起動面の判定方法が異なる。ＦＤＰ起動面判定＿２については図１７及び図１８のサブフローで説明する。
ＣＰＵ例外発生時、ステップ８５１においてＦＤＰ起動面を判定する。ステップ８５２において、ＦＤＰ起動面の起動面判定情報＿１にＦＤＰ処理異常を示す“０”を書き込む。
【０１１６】
次に、図１７及び図１８を参照してサブフローであるＦＤＰ起動面判定処理＿２について説明する。
ステップ１２０１において、Ａ面及びＢ面の起動面判定情報＿１より、起動面を判定する。正常に判定できて起動面が存在する場合、判定結果はステップ１２０１−１−１又はステップ１２０１−２−１のようになる。正常に判定できたが起動面が存在しない場合は、判定結果はステップ１２０１−１−２又はステップ１２０１−２−２のようになり、ＡＬＭ処理を実施する。正常に判定できなかった場合はフラグ異常と判断してＡＬＭ処理を実施する。
【０１１７】
ステップ１２０２において、Ａ面及びＢ面の起動面判定情報＿２より、起動面を判定する。正常に判定できた場合、判定結果はステップ１２０２−１〜ステップ１２０２−８のようになる。正常に判定できなかった場合はフラグ異常と判断してＡＬＭ処理を実施する。
【０１１８】
なお、物理構成については、実施の形態１と同様なので、説明を省略する。
【０１１９】
以上のように、本実施の形態のリモートダウンローダ１００Ｂによれば、特にＦＤＰ自身のリモートダウンロード処理中に、ＦＤＰが起動面判定情報を適切に制御し、実施の形態１であげたような通信路障害、電源断の障害に加えて、起動しているＦＤＰ自身の不具合等によるプログラム暴走等の障害が発生してもリセット後リモートダウンローダは起動可能であり、常にリモートダウンロード機能を確保することができる。また、その実現方法は、実施の形態１と同様にフラッシュＲＯＭ以外の特別な装置（メモリ等）を必要とせず、容易に実施することができる。
【０１２０】
（実施の形態３）
図２６は、本発明の実施の形態３に係るリモートダウンローダの構成を示すブロック図である。本実施の形態のリモートダウンローダ１００Ｃは、実施の形態２のリモートダウンローダ１００Ｂと同一の構成に加えて、バージョンアップ判定情報管理手段５００を備えるとともに、ＲＡＭ１０３にバージョンアップ判定情報が格納されたものである。
【０１２１】
バージョンアップ判定情報管理手段５００は、ブート手段１２０及びＦＤＰ起動面判定手段１２１及びファームウェアバージョン管理手段１４０からのバージョンアップ判定情報の制御要求によりバージョンアップ判定情報を制御し、ファームウェアバージョン管理手段１４０からのバージョンアップ判定情報の報告要求に対してバージョンアップ判定情報を報告する。ブート手段１２０は、実施の形態１で説明した処理に加えて、バージョンアップ判定情報の初期化をバージョンアップ判定情報管理手段５００に要求する。
【０１２２】
ＦＤＰ起動面判定手段１２１は、実施の形態１で説明した処理に加えて、ＦＤＰの起動面を判定し、正常に判定できた場合は判定結果をバージョンアップ判定情報管理手段５００にも報告する。ファームウェアバージョンアップ管理手段１４０は、実施の形態１で説明した処理に加えて、ファームウェア内ＦＤＰのバージョンアップの必要性判定の判定結果と、同様にファームウェア内制御ソフトのバージョンアップの必要性判定結果をバージョンアップ判定情報管理手段５００に報告する。そして、制御ソフト起動後はバージョンアップ判定情報管理手段５００からの報告により、ＦＤＰ処理においてＦＤＰのバージョンアップ必要と判定されていた場合はファームウェアバージョンアップ手段１５０にＦＤＰのバージョンアップを要求する。同様にＦＤＰ処理において制御ソフトのバージョンアップ必要と判定されていた場合は、ファームウェアバージョンアップ手段１５０に制御ソフトのバージョンアップを要求し、正常にＦＤＰ又は制御ソフトのバージョンアップの必要性が判定されていなかった場合はリセット待ち手段１８０にリセット待ちを要求する。
【０１２３】
このように構成されたリモートダウンローダ１００Ｃの動作について、図２６〜図３８を参照して説明する。
【０１２４】
最初に図３６〜図３８を参照してバージョンアップ判定情報５０１について詳細に説明する。
バージョンアップ判定情報５０１は、バージョンアップに関連する情報であり、ＲＡＭ１０３上に格納される。図３６及び図３７はバージョンアップ判定情報５０１のビットマップである。バージョンアップ判定情報５０１は、バージョンアップ判定実施／未実施フラグと、ＦＤＰバージョンアップ判定フラグと、制御ソフトバージョンアップ判定フラグと、ＦＤＰ起動面判定結果フラグと、の４つの情報より構成される。
【０１２５】
バージョンアップ判定実施／未実施フラグは、実施の形態４で説明するバージョンアップしたＦＤＰの分岐による自律再起動を実施する場合に使用され、ＦＤＰ自身が、初期起動処理か、または自律再起動処理かを識別するために使用される。
【０１２６】
ＦＤＰバージョンアップ判定フラグは、ファームウェアのうちのＦＤＰの遅延フラッシュＲＯＭ書換を実施する場合に使用され、運用状態遷移後の制御ソフト処理で、（一時格納面に保存されている）バージョンアップ対象ＦＤＰのフラッシュＲＯＭ書込を実施すべきかを判定するために使用される。制御ソフトバージョンアップ判定フラグは、ファームウェアのうちの制御ソフトの遅延フラッシュＲＯＭ書換を実施する場合に使用され、運用状態遷移後の制御ソフト処理で、（一時格納面に保存されている）バージョンアップ対象制御ソフトのフラッシュＲＯＭ書込を実施すべきかを判定するために使用される。ＦＤＰ起動面判定結果フラグは、バージョンアップ対象面を判定（起動面の次面がバージョンアップ対象面）するために使用する。
【０１２７】
図３８はバージョンアップ判定方法を示す図である。
ＦＤＰ起動面判定結果フラグが起動面Ａ面（Ｂ面）を示している場合、バージョンアップ対象面をＢ面（Ａ面）と判定する。制御としては、リセット後、起動面判定方法に従って起動面を判定し、判定結果をＦＤＰ起動面判定結果フラグに設定する。
【０１２８】
バージョンアップ判定実施／未実施フラグがバージョンアップ判定未実施を示している場合、リセット後の初期起動時と判定する。初期起動時はＦＤＰでバージョンアップ判定処理を実施する。逆に、バージョンアップ判定実施／未実施フラグがバージョンアップ判定実施を示している場合、分岐による自律再起動時と判定する。分岐による自律再起動時はＦＤＰでバージョンアップ判定処理は実施済みであるので実施しない。なお、ＰＤＰの分岐による自律再起動については、実施の形態４で説明する。
【０１２９】
制御としては、バージョンアップ判定処理を実施後、バージョンアップ判定実施／未実施フラグをバージョンアップ判定実施に設定する。また、初期起動時は、バージョンアップ判定実施／未実施フラグをバージョンアップ判定未実施に初期化する。
【０１３０】
ＦＤＰバージョンアップ判定フラグがＦＤＰバージョンアップ必要を示している場合、運用状態遷移後、制御ソフトでのＦＤＰのフラッシュＲＯＭ書込処理が必要と判定する。制御としては、ＦＤＰ処理でのバージョンアップ判定実施後、ＦＤＰバージョンアップ判定結果をＦＤＰバージョン判定フラグに設定する。
【０１３１】
制御ソフトバージョンアップ判定フラグが制御ソフトバージョンアップ必要を示している場合、運用状態遷移後、制御ソフトでの制御ソフトのフラッシュＲＯＭ書込処理が必要と判定する。制御としては、ＦＤＰ処理でのバージョンアップ判定実施後、制御ソフトバージョンアップ判定結果を制御ソフトバージョン判定フラグに設定する。
【０１３２】
続いて、図２７〜図３５のフロー図を参照してリモートダウンロード処理の動作を説明する。
【０１３３】
まず、図２７及び図２８を参照してメインフローについて説明する。なお、ステップ９０２、９０３、９０９、９１０、９１４、９１６についてはサブルーチン化しており、別途サブフローとして説明する。
【０１３４】
ステップ９０１は、実施の形態１を示す図２のステップ７０１と同じである。ステップ９０２において、バージョンアップ判定情報５０１を初期化する。次いで、ステップ９０３において、起動面判定情報よりＦＤＰの起動面を判定し、判定結果をバージョンアップ判定情報５０１に格納する。ステップ９０４〜ステップ９０８までは実施の形態１を示す図２のステップ７０３〜ステップ７０８と同じである。
【０１３５】
ステップ９０９において、ファームウェア内ＦＤＰのバージョンアップの必要性について、ＦＤＰ個別バージョン情報とダウンロードしたファームウェア内のＦＤＰ個別バージョン情報より判定し、判定結果をバージョンアップ判定情報５０１に格納し、同様にファームウェア内制御ソフトのバージョンアップの必要性をＦＤＰと同様の方法で判定し、判定結果をバージョンアップ判定情報５０１に格納する。
【０１３６】
ステップ９１０において、バージョンアップ判定情報５０１より制御ソフトのバージョンアップが必要と判定された場合は、ステップ９１０−１を実施し、不要と判定された場合はステップ９１０−２を実施する。ステップ９１０−１において、制御ソフト起動面をＲＡＭ上の一次格納面とする。ステップ９１０−２において、制御ソフト起動面をフラッシュＲＯＭ上の制御ソフト面とする。
【０１３７】
ステップ９１１〜ステップ９１２までは、実施の形態１を示す図２のステップ７１５〜ステップ７１６と同じである。制御ソフト起動後、ステップ９１４において、バージョンアップ判定情報を参照し、ＦＤＰ処理においてＦＤＰのバージョンアップ必要と判定されていた場合は、ステップ９１５を実施する。バージョンアップ判定情報を参照し、正常にＦＤＰのバージョンアップの必要性が判定されていなかった場合はリセット待ちを行う。
【０１３８】
ステップ９１５において、ＦＤＰのバージョンアップ（フラッシュＲＯＭへの格納）を実施し、バージョンアップに伴い起動面判定情報の更新及びバージョン情報の更新を行う。同様に、ステップ９１６において、バージョンアップ判定情報を参照し、ＦＤＰ処理において制御ソフトのバージョンアップ必要と判定されていた場合は、ステップ９１７を実施する。バージョンアップ判定情報を参照し、正常に制御ソフトのバージョンアップの必要性が判定されていなかった場合は、リセット待ちを行う。
【０１３９】
ステップ９１７において、制御ソフトのバージョンアップ（フラッシュＲＯＭへの格納）を実施し、バージョンアップに伴いバージョン情報の更新を行う。ステップ９１８は、実施の形態１を示す図２のステップ７１４と同じである。ＣＰＵ例外発生時、ステップ９５１において、バージョンアップ判定情報を参照し、ステップ９５１―１又はステップ９５１−２のように、ＦＤＰ起動面を判定する。ステップ９５２は、実施の形態２を示す図１６のステップ８５２と同じである。
【０１４０】
次に、図２９及び図３０を参照してサブフローであるＦＤＰ起動面判定処理＿３について説明する。
ステップ１３０１において、Ａ面及びＢ面の起動面判定情報＿１より、起動面を判定する。正常に判定できて起動面が存在する場合、判定結果はステップ１３０１−１−１又はステップ１３０１−２−１のようになる。また、ステップ１３０１−１−１−１及びステップ１３０１−２−１−１において、バージョンアップ判定情報に判定結果を書き込む。正常に判定できたが起動面が存在しない場合は、判定結果はステップ１３０１−１−２又はステップ１３０１−２−２のようになりＡＬＭ処理を実施する。正常に判定出来なかった場合はフラグ異常と判断してＡＬＭ処理を実施する。
【０１４１】
ステップ１３０２において、Ａ面及びＢ面の起動面判定情報＿２より、起動面を判定する。正常に判定できた場合、判定結果はステップ１３０２−１〜ステップ１３０２−８のようになる。また、ステップ１３０２―１−１〜ステップ１３０２−８−１において、バージョンアップ判定情報に判定結果を書き込む。正常に判定できなかった場合はフラグ異常と判断してＡＬＭ処理を実施する。
【０１４２】
次に、図３１を参照してサブフローであるＦＤＰバージョンアップ判定＿２について説明する。
ステップ１６０１において、バージョンアップ判定情報よりＦＤＰのバージョンアップの必要性を判定する。正常に判定できた場合、判定結果はステップ１６０１−１かステップ１６０１−２のようになる。正常に判定できなかった場合はフラグ異常と判断してＡＬＭ処理を実施する。
【０１４３】
次に、図３２を参照してサブフローである制御ソフトバージョンアップ判定＿２について説明する。
ステップ１８０１において、バージョンアップ判定情報より、制御ソフトのバージョンアップの必要性を判定する。正常に判定できた場合、判定結果はステップ１８０１−１かステップ１８０１−２のようになる。正常に判定できなかった場合はフラグ異常と判断してＡＬＭ処理を実施する。
【０１４４】
次に、図３３を参照してサブフローであるバージョンアップ判定情報初期化について説明する。ステップ２００１において、バージョンアップ判定情報に初期値を書き込む。
【０１４５】
次に、図３４を参照してサブフローであるファームウェア内プログラム個別バージョンアップ判定について説明する。
ステップ２１０１において、ＦＤＰ個別バージョン情報と制御ソフト個別バージョン情報より、ファームウェア内プログラムの個別バージョンアップ判定を実施する。具体的にはリモートダウンローダが管理するＦＤＰまたは制御ソフト個別バージョン情報とダウンロードしたファームウェア内のＦＤＰ又は制御ソフト個別バージョン情報より判定する。
【０１４６】
判定結果は、ステップ２１０１―１〜ステップ２１０１―４のようになる。また、ステップ２１０１−１−１〜ステップ２１０１−４−１において、バージョンアップ判定情報に判定結果を書き込む。
【０１４７】
最後に図３５の物理構成図を参照してリモートダウンロード処理の動作を説明する。基本的には、実施の形態１とほぼ同様であるが、制御ソフト２４２０＿Ｄの展開元が複数存在する点が異なる。
【０１４８】
上位装置１０１からリモートダウンローダ１００Ｃ上のファームウェア一時格納領域２４０２にリモートダウンロードした制御ソフト２４２０＿Ｋを、フラッシュＲＯＭ１０２上の制御ソフト格納領域２４０４にバージョンアップしてから、制御ソフト動作領域２４０５に展開するのではなく、ファームウェア一時格納領域２４０２上の制御ソフト２４２０＿Ｋを、直接制御ソフト動作領域２４０５に展開する。展開後、ファームウェア一時格納領域２４０２上の制御ソフト２４２０＿ＫをフラッシュＲＯＭ１０２上の制御ソフト格納領域２４０４にバージョンアップする。
【０１４９】
以上のように、本実施の形態のリモートダウンローダ１００Ｃによれば、起動時にファームウェアのフラッシュＲＯＭへの書き込み処理を実施する必要が無くなり、起動後、メインとなる制御処理に影響を与えないような低優先度の処理としてファームウェアのフラッシュＲＯＭへの書き込み処理を実施することにより、メインとなる制御処理開始までの起動時間を大幅に短縮することができる。また、その実現方法は、実施の形態１及び２と同様に、フラッシュＲＯＭ以外の特別な装置（メモリ等）を必要とせず、容易に実施することができる。
【０１５０】
（実施の形態４）
図３９は、本発明の実施の形態４に係るリモートダウンローダの構成を示すブロック図である。本実施の形態のリモートダウンローダ１００Ｄは、実施の形態３のリモートダウンローダ１００Ｃと同一の構成に加えて自律再起動手段６００を備えている。自律再起動手段６００は、ファームウェアバージョンアップ管理手段１４０からの報告により、ファームウェア内ＦＤＰのバージョンアップ必要と判定された場合、ＦＤＰの自律再起動処理を実施する。
【０１５１】
ＦＤＰ起動面判定手段１２１は、実施の形態３で説明した処理に加えて、起動面判定情報管理手段１３０からの起動面判定情報の報告の他、バージョンアップ判定情報管理手段５００からのバージョンアップ判定情報の報告よりＦＤＰの起動面を判定する。ＦＤＰ展開手段１２３は、実施の形態１で説明した処理に加えて、ＦＤＰ起動面判定手段１２１からのＦＤＰ起動面の報告より、ファームウェア一次格納領域からの展開を報告された場合は、ファームウェア一次格納領域上のＦＤＰを展開する。
【０１５２】
ファームウェアバージョンアップ管理手段１４０は、バージョンアップ判定情報管理手段５００からのバージョンアップ判定情報より、ファームウェアバージョンアップ判定実施不要と判定された場合は、上位装置１０１からのファームウェアダウンロード処理及びファームウェアバージョンアップの必要性判定を実施せず、ファームウェアバージョンアップ判定実施必要と判定された場合で、ファームウェアダウンロード後、ファームウェア内ＦＤＰのバージョンアップが必要と判定された場合は自律再起動手段６００にＦＤＰの自律再起動を要求する。
【０１５３】
このように構成されたリモートダウンローダ１００の動作について図４０〜図４７を参照して説明する。
最初に、図４６及び図４７を参照して、バージョンアップ判定情報５０１の状態及び状態遷移について説明する。
図４６はバージョンアップ判定情報のフラグ状態を示す図である。とり得るフラグ状態数は１１通りである。図３８の項番１の状態が図４６における状態番号０−０に相当する。また、図３８の項番２〜６の状態が図４６における状態番号１−０〜２−４に相当する。
【０１５４】
図４７はバージョンアップ判定情報のフラグ状態遷移図である。
リセット後、バージョンアップ情報を初期化し、フラグ状態０に遷移する。フラグ状態０で起動面判定処理を実施し、起動面判定結果を本バージョンアップ判定情報に設定し、フラグ状態１−０又はフラグ状態２−０に遷移する。その後、バージョンアップ判定処理を実施し、バージョンアップ判定結果を本バージョンアップ判定情報に設定し、フラグ状態１−０からフラグ状態１−１〜１−４のいずれか、またはフラグ状態２−０からフラグ状態２−０〜２−４のいずれかに遷移する。
【０１５５】
続いて、図４０〜図４４のフロー図を参照して、リモートダウンロード処理の動作を説明する。
まず、図４０を参照してメインフローについて説明する。なお、ステップ１００２、１００３、１００７、１０１０、１０１１、１０１２、１０１６、１０１７、１０１８についてはサブルーチン化しており、別途サブフローとして説明する。
【０１５６】
ステップ１００１〜ステップ１００２は、実施の形態３を示す図２７のステップ９０１からステップ９０２と同じである。ステップ１００３において、起動面判定情報及びバージョンアップ判定情報５０１よりＦＤＰの起動面を判定し、判定結果をバージョンアップ判定情報５０１に格納する。ステップ１００４〜ステップ１００６までは、実施の形態１を示す図２のステップ７０４〜ステップ７０６と同じである。ステップ１００７において、ファームウェアバージョンアップ判定処理実施の要不要をバージョンアップ判定情報５０１より判定する。
【０１５７】
ステップ１００８〜ステップ１０１０までは、実施の形態３を示す図２７のステップ９０７〜ステップ９０９と同じである。ステップ１０１１において、バージョンアップ判定情報５０１よりＦＤＰのバージョンアップが必要と判定された場合は、ステップ１００３に戻る（自律再起動）。不要と判定された場合はステップ１０１２を実施する。ステップ１０１２〜ステップ１０２０までは、実施の形態３を示す図２７のステップ９１０〜ステップ９１８と同じである。ＣＰＵ例外発生時、ステップ１０５１〜ステップ１０５２までは、実施の形態３を示す図２８のステップ９５１〜ステップ９５２と同じである。
【０１５８】
図４２、図４３より、サブフローであるＦＤＰ起動面判定処理＿４について説明する。
ステップ１４０１において、バージョンアップ判定情報より、起動面を判定する。正常に判定できて一時格納面から起動と判定された場合は、ステップ１４０１−１となる。正常に判定できなかった場合はフラグ異常と判断してＡＬＭ処理を実施する。
【０１５９】
ステップ１４０２において、Ａ面及びＢ面の起動面判定情報＿１より、起動面を判定する。正常に判定できて起動面が存在する場合、判定結果はステップ１４０２−１−１又はステップ１４０２−２−１のようになる。また、ステップ１４０２−１−１−１及びステップ１４０２−２−１−１において、バージョンアップ判定情報に判定結果を書き込む。正常に判定できたが起動面が存在しない場合は、判定結果はステップ１４０２−１−２又はステップ１４０２−２−２のようになり、ＡＬＭ処理を実施する。
【０１６０】
正常に判定できなかった場合はフラグ異常と判断してＡＬＭ処理を実施する。ステップ１４０３において、Ａ面及びＢ面の起動面判定情報＿２より起動面を判定する。正常に判定できた場合、判定結果はステップ１４０３−１〜ステップ１４０３−８のようになる。また、ステップ１４０３―１−１〜ステップ１４０３−８−１において、バージョンアップ判定情報に判定結果を書き込む。正常に判定できなかった場合はフラグ異常と判断してＡＬＭ処理を実施する。
【０１６１】
図４４より、サブフローであるファームウェアバージョンアップ判定処理実施判定について説明する。
【０１６２】
ステップ２２０１において、バージョンアップ判定情報より、ファームウェアバージョンアップ判定処理実施の必要性を判定する。正常に判定できた場合、判定結果はステップ２２０１−１かステップ２２０１―２のようになる。正常に判定できなかった場合はフラグ異常と判断してＡＬＭ処理を実施する。
【０１６３】
最後に、図４５の物理構成図を参照してリモートダウンロード処理の動作を説明する。基本的には、実施の形態３とほぼ同様であるが、ＦＤＰ１１３＿Ｄの展開元にファームウェア一時格納領域２４０２も加わる点が異なる。
【０１６４】
上位装置１０１からリモートダウンローダ１００Ｄ上のファームウェア一時格納領域２４０２にリモートダウンロードしたＦＤＰ１１３＿Ｋを、フラッシュＲＯＭ１０２上のＦＤＰ格納領域１１０又は１１１にバージョンアップし、次回リセット後の起動時にＦＤＰ動作領域２４０３に展開するのではなく、ファームウェア一時格納領域２４０２上のＦＤＰ１１３＿Ｋを、直接ＦＤＰ動作領域２４０３に展開し、リセットすることなく、ＦＤＰ動作領域２４０３上のＦＤＰ１１３＿Ｄのエントリポイントに分岐する。制御ソフト起動後、ファームウェア一時格納領域２４０２上のＦＤＰ１１３＿Ｋを、フラッシュＲＯＭ１０２上のＦＤＰ格納領域１１０または１１１にバージョンアップする。
【０１６５】
以上のように、本実施の形態のリモートダウンローダ１００Ｄによれば、ＦＤＰをバージョンアップ後、リセット処理を実施することなく、バージョンアップしたＦＤＰを自律的に再起動することが可能となる。また、その実現方法は、実施の形態１〜３と同様に、フラッシュＲＯＭ以外の特別な装置（メモリ等）を必要とせず、容易に実施することができる。
【０１６６】
【発明の効果】
本発明によれば、電子機器を制御するファームウェアを、リモートダウンロードを実施するリモートダウンロードプログラムと前記電子機器を制御するメインとなる制御プログラムの２つに分割し、それぞれ独立してリモートダウンロードするので、フラッシュＲＯＭ上に２面管理するのはリモートダウンローダのみで、制御ソフトについては１面管理となり、フラッシュＲＯＭ容量を必要最小限に抑えて２面管理方式を実現することができる。
【０１６７】
また、本発明によれば、特にリモートダウンローダ自身のリモートダウンロード処理中にリモートダウンローダが起動面判定情報を適切に制御するので、通信路障害、電源断の障害が発生してもリセット後ターゲットシステムは起動可能であり、常にリモートダウンロードを確保することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１に係るリモートダウンローダの構成を示すブロック図。
【図２】本発明の実施の形態１に係るリモートダウンローダの動作を説明するためのフロー図。
【図３】本発明の実施の形態１に係るリモートダウンローダの動作を説明するためのフロー図。
【図４】本発明の実施の形態１に係るリモートダウンローダの動作を説明するためのフロー図。
【図５】本発明の実施の形態１に係るリモートダウンローダの動作を説明するためのフロー図。
【図６】本発明の実施の形態１に係るリモートダウンローダの動作を説明するためのフロー図。
【図７】本発明の実施の形態１に係るリモートダウンローダの動作を説明するためのフロー図。
【図８】本発明の実施の形態１に係るリモートダウンローダの動作を説明するための物理構成図。
【図９】本発明の実施の形態１に係るリモートダウンローダの動作を説明するための起動面判定情報ビットマップ図。
【図１０】本発明の実施の形態１に係るリモートダウンローダの動作を説明するための起動面判定情報ビットマップ図。
【図１１】本発明の実施の形態１に係るリモートダウンローダの動作を説明するための起動面判定情報＿２制御例を示す図。
【図１２】本発明の実施の形態１に係るリモートダウンローダの動作を説明するための起動面判定方法を示す図。
【図１３】本発明の実施の形態１に係るリモートダウンローダの動作を説明するための起動面判定方法を示す図。
【図１４】本発明の実施の形態２に係るリモートダウンローダの構成を示すブロック図。
【図１５】本発明の実施の形態２に係るリモートダウンローダの動作を説明するためのフロー図。
【図１６】本発明の実施の形態２に係るリモートダウンローダの動作を説明するためのフロー図。
【図１７】本発明の実施の形態２に係るリモートダウンローダの動作を説明するためのフロー図。
【図１８】本発明の実施の形態２に係るリモートダウンローダの動作を説明するためのフロー図。
【図１９】本発明の実施の形態２に係るリモートダウンローダの動作を説明するための起動面判定方法を示す図。
【図２０】本発明の実施の形態２に係るリモートダウンローダの動作を説明するための起動面判定方法を示す図。
【図２１】本発明の実施の形態２に係るリモートダウンローダの動作を説明するための起動面判定方法を示す図。
【図２２】本発明の実施の形態２に係るリモートダウンローダの動作を説明するための起動面判定情報状態定義を示す図。
【図２３】本発明の実施の形態２に係るリモートダウンローダの動作を説明するための起動面判定情報状態定義を示す図。
【図２４】本発明の実施の形態２に係るリモートダウンローダの動作を説明するための起動面判定情報状態遷移図。
【図２５】本発明の実施の形態２に係るリモートダウンローダの動作を説明するための起動面判定情報状態遷移図。
【図２６】本発明の実施の形態３に係るリモートダウンローダの構成を示すブロック図。
【図２７】本発明の実施の形態３に係るリモートダウンローダの動作を説明するためのフロー図。
【図２８】本発明の実施の形態３に係るリモートダウンローダの動作を説明するためのフロー図。
【図２９】本発明の実施の形態３に係るリモートダウンローダの動作を説明するためのフロー図。
【図３０】本発明の実施の形態３に係るリモートダウンローダの動作を説明するためのフロー図。
【図３１】本発明の実施の形態３に係るリモートダウンローダの動作を説明するためのフロー図。
【図３２】本発明の実施の形態３に係るリモートダウンローダの動作を説明するためのフロー図。
【図３３】本発明の実施の形態３に係るリモートダウンローダの動作を説明するためのフロー図。
【図３４】本発明の実施の形態３に係るリモートダウンローダの動作を説明するためのフロー図。
【図３５】本発明の実施の形態３に係るリモートダウンローダの動作を説明するための物理構成図。
【図３６】本発明の実施の形態３に係るリモートダウンローダの動作を説明するためバージョンアップ判定情報ビットマップ図。
【図３７】本発明の実施の形態３に係るリモートダウンローダの動作を説明するためバージョンアップ判定情報ビットマップ図。
【図３８】本発明の実施の形態３に係るリモートダウンローダの動作を説明するためのバージョンアップ判定方法を示す図。
【図３９】本発明の実施の形態４に係るリモートダウンローダの構成を示すブロック図。
【図４０】本発明の実施の形態４に係るリモートダウンローダの動作を説明するためのフロー図。
【図４１】本発明の実施の形態４に係るリモートダウンローダの動作を説明するためのフロー図。
【図４２】本発明の実施の形態４に係るリモートダウンローダの動作を説明するためのフロー図。
【図４３】本発明の実施の形態４に係るリモートダウンローダの動作を説明するためのフロー図。
【図４４】本発明の実施の形態４に係るリモートダウンローダの動作を説明するためのフロー図。
【図４５】本発明の実施の形態４に係るリモートダウンローダの動作を説明するための物理構成図。
【図４６】本発明の実施の形態４に係るリモートダウンローダの動作を説明するためのバージョンアップ判定情報状態定義を示す図。
【図４７】本発明の実施の形態４に係るリモートダウンローダの動作を説明するためのバージョンアップ判定情報状態遷移図。
【図４８】本発明の実施の形態に係るリモートダウンローダを用いたターゲットシステムと上位装置の構成を示すブロック図。
【図４９】本発明の実施の形態に係るリモートダウンローダを用いたターゲットシステムと上位装置間のリモートダウンロードシーケンス図。
【図５０】本発明の実施の形態に係るリモートダウンローダのファームウェアバージョン情報の構成図。
【符号の説明】
１００Ａ〜１００Ｄ　リモートダウンローダ
１０１　上位装置
１０２　フラッシュＲＯＭ
１０３　ＲＡＭ
１１０、１１１　ＦＤＰ格納領域
１１３　ＦＤＰ
１２０　ブート手段
１２１　ＦＤＰ起動面判定手段
１２３　ＦＤＰ展開手段
１３０　起動面判定情報管理手段
１３１　バージョン情報管理手段
１４０　ファームウェアバージョンアップ管理手段
１５０　ファームウェアバージョンアップ手段
１６０　ファームウェアダウンロード手段
１６１　上位装置通信手段
１７０　制御ソフト展開手段
１８０　リセット待ち手段
２００　通信路
２０１　ＣＰＵ
２０２　上位装置コントローラ
４００　リモートダウンローダ障害検出手段
５００　バージョンアップ判定情報管理手段
６００　自律再起動手段
【図１】
2004102893.tif 000003
【図２】
2004102893.tif 000004
【図３】
2004102893.tif 000005
【図４】
2004102893.tif 000006
【図５】
2004102893.tif 000007
【図６】
2004102893.tif 000008
【図７】
2004102893.tif 000009
【図８】
2004102893.tif 000010
【図９】
2004102893.tif 000011
【図１０】
2004102893.tif 000012
【図１１】
2004102893.tif 000013
【図１２】
2004102893.tif 000014
【図１３】
2004102893.tif 000015
【図１４】
2004102893.tif 000016
【図１５】
2004102893.tif 000017
【図１６】
2004102893.tif 000018
【図１７】
2004102893.tif 000019
【図１８】
2004102893.tif 000020
【図１９】
2004102893.tif 000021
【図２０】
2004102893.tif 000022
【図２１】
2004102893.tif 000023
【図２２】
2004102893.tif 000024
【図２３】
2004102893.tif 000025
【図２４】
2004102893.tif 000026
【図２５】
2004102893.tif 000027
【図２６】
2004102893.tif 000028
【図２７】
2004102893.tif 000029
【図２８】
2004102893.tif 000030
【図２９】
2004102893.tif 000031
【図３０】
2004102893.tif 000032
【図３１】
2004102893.tif 000033
【図３２】
2004102893.tif 000034
【図３３】
2004102893.tif 000035
【図３４】
2004102893.tif 000036
【図３５】
2004102893.tif 000037
【図３６】
2004102893.tif 000038
【図３７】
2004102893.tif 000039
【図３８】
2004102893.tif 000040
【図３９】
2004102893.tif 000041
【図４０】
2004102893.tif 000042
【図４１】
2004102893.tif 000043
【図４２】
2004102893.tif 000044
【図４３】
2004102893.tif 000045
【図４４】
2004102893.tif 000046
【図４５】
2004102893.tif 000047
【図４６】
2004102893.tif 000048
【図４７】
2004102893.tif 000049
【図４８】
2004102893.tif 000050
【図４９】
2004102893.tif 000051
【図５０】
2004102893.tif 000052