(57)【要約】【課題】更新によるハードウェアの構成変更によらず、使用領域を示す情報を取得して情報の消去前に消去の要否を判断することができる情報処理装置およびその処理方法を提供。【解決手段】ファームウェア処理機能部40は、フラッシュメモリ部60で運用面および待機面の２面が区分配設され、この２面のファームウェア領域に加えて、各２面が運用面と待機面のどれかを示す起動面フラグと、待機面の情報消去の状態を示す消去フラグとを記憶するデータ領域が配設され、制御機能部42の更新制御機能部50でこの通信機器を起動し、起動後、更新要求に応じて外部機器からフラッシュメモリ部60への新たな情報の書込みを制御して、起動にともない消去フラグが未消去であることに応じて待機面における１つのセクタ分ずつ消去させる。【選択図】図１
2014194682.tif 000002
【特許請求の範囲】
【請求項１】
書き込まれたアプリケーションの実行や更新を制御し、更新に応じて外部機器からの新たな情報を書き込む情報処理装置において、該装置は、
情報を記憶する領域として運用面および待機面の２面が区分配設され、該２面の区分領域に加えて、該２面のそれぞれが前記運用面および前記待機面のいずれの状態にあるかを示す第１のフラグ、ならびに前記待機面の情報消去の状態を示す第２のフラグを記憶するフラグの区分領域が配設された不揮発性記憶手段と、
該装置を起動し、起動後、更新要求に応じて外部機器から前記不揮発性記憶手段への新たな情報の書込みを制御する制御機能ブロックとを含み、
該制御機能ブロックは、起動にともない第２のフラグが書込み済み状態であることに応じて前記待機面における１つのセクタ分ずつ情報を消去させて、該待機面の区分領域を消去するように制御する更新制御機能ブロックを含むことを特徴とする情報処理装置。
【請求項２】
請求項１に記載の装置において、前記更新制御機能ブロックは、前記更新要求に応じて第２のフラグを書込み済み状態に設定し、前記待機面における１つのセクタ分ずつ前記新たな情報を書き込んで、前記状態情報の区分領域にて前記２面の区分領域における前記運用面および前記待機面を切り換えて、再起動させることを特徴とする情報処理装置。
【請求項３】
請求項１または２に記載の装置において、前記更新制御機能ブロックは、前記不揮発性記憶手段へのアクセスの有無を監視し、監視に応じて消去の実行を制御するアクセス監視機能ブロックを含むことを特徴とする情報処理装置。
【請求項４】
請求項３に記載の装置において、前記アクセス監視機能ブロックは、前記不揮発性記憶手段へのアクセスの種類に応じて消去の実行を制御することを特徴とする情報処理装置。
【請求項５】
請求項４に記載の装置において、前記アクセス監視機能ブロックは、ユーザモードの動作に応じて前記不揮発性記憶手段へのアクセスを停止させた上で、前記待機面の消去の実行を制御することを特徴とする情報処理装置。
【請求項６】
書き込まれたアプリケーションの実行や更新を制御し、更新に応じて外部機器からの新たな情報を書き込む情報処理装置の処理方法において、
情報を記憶する領域として運用面および待機面の２面が区分配設され、該２面の区分領域に加えて、該２面のそれぞれが前記運用面および前記待機面のいずれの状態にあるかを示す第１のフラグ、ならびに前記待機面の情報消去の状態を示す第２のフラグを記憶するフラグの区分領域が配設された不揮発性記憶手段と、
該装置を起動し、起動後、更新要求に応じて外部機器から前記不揮発性記憶手段への新たな情報の書込みを制御する制御機能ブロックとを含み、
該制御機能ブロックは、起動にともない第２のフラグが書込み済み状態であることに応じて前記待機面における１つのセクタ分ずつ情報を消去させて、該待機面の区分領域を消去するように制御する更新制御機能ブロックを含む情報処理装置を用い、
該方法は、前記起動にともない第１および第２のフラグを読み、前記運用面に記憶する情報を起動する第１の工程と、
前記更新制御機能ブロックで前記待機面の区分領域に前記情報が書込み状態にあるか否かを判断し、前記書込み状態と判断した場合、前記待機面の区分領域に対する前記情報の保持／更新要求のいずれの状態にあるかの判断に進み、前記待機面の区分領域が消去済みの状態にある場合、更新待ちする第２の工程と、
前記待機面の区分領域に対する前記情報の保持／更新要求のいずれの状態にあるかを判断し、前記情報を保持する状態にある場合、前記待機面の区分領域の消去処理に進み、前記待機面の区分領域に対する前記情報の更新要求の状態にある場合、前記情報の更新処理に進む第３の工程と、
前記消去処理として前記待機面の区分領域の前記情報を消去する第４の工程と、
前記待機面の区分領域すべての情報の消去が完了か否かを判定し、完了と判定した場合、第２のフラグの変更処理に進み、未了と判定した場合、第２の工程に戻す第５の工程と、
第２のフラグの変更処理として第２のフラグを消去済みに設定し、第２の工程に戻す第６の工程とを含むことを特徴とする情報処理装置の処理方法。
【請求項７】
請求項６に記載の方法において、第４の工程は、１セクタを単位に消去することを特徴とする情報処理装置の処理方法。
【請求項８】
請求項６または７に記載の方法において、第４の工程は、該当するセクタが消去済みのとき、消去コマンドの実行をスキップすることを特徴とする情報処理装置の処理方法。
【請求項９】
請求項６に記載の方法において、前記情報の更新処理は、前記更新要求の確認にともない第２のフラグを書込みに設定する第７の工程と、
前記待機面の区分領域に新たな情報を書き込む第８の工程と、
前記待機面の区分領域すべての情報の書込みが完了か否かを判定し、完了と判定した場合、第１のフラグの変更処理に進み、未了と判定した場合、第８の工程に戻す第９の工程と、
第１のフラグの変更処理として第１のフラグが示す前記運用面／前記待機面の設定データを逆転する第10の工程と、
第10の工程後、再起動する第11の工程とを含むことを特徴とする情報処理装置の処理方法。
【請求項１０】
請求項９に記載の方法において、第８の工程は、１セクタを単位に前記新たな情報を書き込むことを特徴とする情報処理装置の処理方法。
【請求項１１】
請求項９または10に記載の方法において、第８の工程は、該当するセクタが消去済みのとき、消去コマンドの実行をスキップして前記新たな情報を書き込むことを特徴とする情報処理装置の処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびその処理方法に関するものである。とくに、情報処理装置は、不揮発性半導体メモリが搭載され、通信によりもたらされるデータを処理するファームウェア装置であり、データ処理方法は、ファームウェアを運用する運用面と待機面の２面を確保し、ファームウェアの更新に応じて運用面と待機面を切り換えて起動する方法に関するものである。
【背景技術】
【０００２】
特許文献１は半導体集積回路について提案している。特許文献１には、フラッシュメモリにおける各セクタの消去状態を保持し、連続して同一アドレスのメモリデータに対する消去コマンドが発行されたか否かをハードウェア的に条件を判定してフラッシュメモリの過消去による文字化けや劣化の発生を防止することが記載されている。
【０００３】
また、特許文献２は情報処理装置、データ処理方法、プログラムに関するものである。特許文献２には、条件判断として、通信機器に接続されている不揮発性記憶媒体の種別を判別し、この媒体に適した消去コマンドを自動選択するとともに、ファイルシステムから使用領域のサイズ情報を取得し、使用領域だけを消去することが記載されている。ただし、ウェアレベリングを実施している場合、対象領域すべてを消去させる条件判断が適用される。これは、使用領域の判定が困難であるからである。特許文献２では、これらのように条件判断することにより、不揮発性記憶媒体およびファイルシステムの種類によって消去時間がより短い消去方法を適切に自動選択して消去することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１０７３２６号公報
【特許文献２】特開２０１１−２０５２９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、これらの先行技術には、実際に、一般ユーザが使用する製品への適用を考えた場合、いくつか課題がある。
【０００６】
特許文献１の半導体集積回路は、不揮発性記憶媒体を制御するフラッシュ・インタフェース回路を備えた構成であることから、コスト面がネックになって必ずしも、この構成をとれるとは限らない。
【０００７】
また、特許文献１は、消去済みのアドレスが保持する仕組みを有している。仕組みが保持するアドレス情報は、不揮発性記憶媒体に保持される情報ではない。このため、消去後の通信機器において、ユーザが機器の電源を断にした場合や停電が発生した場合に、消去済みのアドレスとの判断に用いる情報が失われてしまう。結果として、期待される有効な効果が得られなくなる。
【０００８】
特許文献２では、ファイルシステムの使用と、このファイルシステムから使用領域または使用セクタ数を取得可能な点が必要条件である。この反面、必要条件を満たさない場合、提案の技術は利用できない。具体的には、ファイルシステムを用いず、直接、不揮発性記憶媒体にデータを書き込む方式のソフトウェアや使用セクタ数が取得できないファイルシステムの場合である。
【０００９】
特許文献２は、管理する使用セクタ数を基に消去対象の領域を判断しているが、これ以外の未使用セクタでデータ化けが発生した場合のように、意図していない状況を考慮できず、この結果、消去漏れが生じてしまう虞がある。これは、“不揮発性メモリ内の情報は常に完全である”という暗黙の条件に依っている。このため、実際の製品に適用すると、極めて高いリスクに曝されることになり、結局、利用が困難になる。
【００１０】
本発明はこのような課題に鑑み、更新によるハードウェアの構成変更によらず、使用領域を示す情報を取得して情報の消去前に消去の要否を判断することができる情報処理装置およびその処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係る情報処理装置は上述の課題を解決するために、書き込まれたアプリケーションの実行や更新を制御し、更新に応じて外部機器からの新たな情報を書き込む情報処理装置において、この装置は、情報を記憶する領域として運用面および待機面の２面が区分配設され、この２面の区分領域に加えて、この２面のそれぞれが運用面および待機面のいずれの状態にあるかを示す第１のフラグ、ならびに待機面の情報消去の状態を示す第２のフラグを記憶するフラグの区分領域が配設された不揮発性記憶手段と、この装置を起動し、起動後、更新要求に応じて外部機器から不揮発性記憶手段への新たな情報の書込みを制御する制御機能ブロックとを含み、この制御機能ブロックは、起動にともない第２のフラグが書込み済み状態であることに応じて待機面における１つのセクタ分ずつ情報を消去させて、この待機面の区分領域を消去するように制御する更新制御機能ブロックを含むことを特徴とする。
【００１２】
また、本発明に係るデータ処理方法は上述の課題を解決するために、書き込まれたアプリケーションの実行や更新を制御し、更新に応じて外部機器からの新たな情報を書き込む情報処理装置の処理方法において、情報を記憶する領域として運用面および待機面の２面が区分配設され、この２面の区分領域に加えて、この２面のそれぞれが運用面および待機面のいずれの状態にあるかを示す第１のフラグ、ならびに待機面の情報消去の状態を示す第２のフラグを記憶するフラグの区分領域が配設された不揮発性記憶手段と、この装置を起動し、起動後、更新要求に応じて外部機器から不揮発性記憶手段への新たな情報の書込みを制御する制御機能ブロックとを含み、この制御機能ブロックは、起動にともない第２のフラグが書込み済み状態であることに応じて待機面における１つのセクタ分ずつ情報を消去させて、この待機面の区分領域を消去するように制御する更新制御機能ブロックを含む情報処理装置を用い、この方法は、起動にともない第１および第２のフラグを読み、運用面に記憶する情報を起動する第１の工程と、更新制御機能ブロックで待機面の区分領域に情報が書込み状態にあるか否かを判断し、書込み状態と判断した場合、待機面の区分領域に対する情報の保持／更新要求のいずれの状態にあるかの判断に進み、待機面の区分領域が消去済みの状態にある場合、更新待ちする第２の工程と、待機面の区分領域に対する情報の保持／更新要求のいずれの状態にあるかを判断し、情報を保持する状態にある場合、待機面の区分領域の消去処理に進み、待機面の区分領域に対する情報の更新要求の状態にある場合、情報の更新処理に進む第３の工程と、消去処理として待機面の区分領域の情報を消去する第４の工程と、待機面の区分領域すべての情報の消去が完了か否かを判定し、完了と判定した場合、第２のフラグの変更処理に進み、未了と判定した場合、第２の工程に戻す第５の工程と、第２のフラグの変更処理として第２のフラグを消去済みに設定し、第２の工程に戻す第６の工程とを含むことを特徴とする。
【発明の効果】
【００１３】
本発明によれば、不揮発性記憶手段で情報を記憶する領域として運用面および待機面の２面が区分配設され、この２面の区分領域に加えて、この２面のそれぞれが運用面および待機面のいずれの状態にあるかを示す第１のフラグ、ならびに待機面の情報消去の状態を示す第２のフラグを記憶するフラグの区分領域が配設され、制御機能ブロックの更新制御機能ブロックでこの装置を起動し、起動後、更新要求に応じて外部機器から不揮発性記憶手段への新たな情報の書込みを制御するとともに、起動にともない第２のフラグが書込み済み状態であることに応じて待機面における１つのセクタ分ずつ情報を消去させて、更新によるハードウェアの構成変更によらず、この待機面の区分領域を消去するように制御して、あらかじめ、待機面の情報を消去しておくことにより、更新要求を受けてから更新完了までの更新時間を短縮することができる。
【００１４】
また、情報の消去に際しても、待機面の区分領域が消去済みか否かを判断し、消去済みと判断した場合、該当する領域の消去処理の実行をスキップすることにより、情報の消去に要する時間を短縮化することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明に係る情報処理装置を適用した通信機器における概略的な機能構成を示す機能ブロック図である。
【図２】本発明に係る情報処理装置を適用した通信機器の概略的なハードウェア構成を示すブロック図である。
【図３】図１のフラッシュメモリを区分したパーティション領域を示すメモリマップである。
【図４】図３のデータ領域に格納されるフラグの種類とデータの関係を示す図である。
【図５】図１の通信機器における起動処理の手順を示すフローチャートである。
【図６】図５の起動処理に続く更新制御の起動手順を示すフローチャートである。
【図７】図６の更新制御におけるセクタ消去の手順を示すフローチャートである。
【図８】図６の更新制御における更新処理の手順を示すフローチャートである。
【図９】図８の更新処理におけるセクタへの書込み処理の手順を示すフローチャートである。
【図１０】図１のフラッシュメモリを区分したパーティション領域を示す他のメモリマップである。
【図１１】図１の通信機器における更新制御機能部の概略的な構成を示す図である。
【図１２】図11の更新制御におけるアクセス監視に基づく消去処理の手順を示すフローチャートである。
【図１３】図11の更新制御におけるアクセス監視に基づく消去処理の他の手順を示すフローチャートである。
【発明を実施するための形態】
【００１６】
次に添付図面を参照して本発明による情報処理装置の一実施例を詳細に説明する。図１を参照すると、本発明による情報処理装置の実施例は、ファームウェアとして機能する通信機器10であり、通信機器10のファームウェア処理機能部40は、フラッシュメモリ部60で情報を記憶する領域として運用面および待機面の２面が区分配設され、この２面のファームウェア領域に加えて、この２面のそれぞれが運用面および待機面のいずれの状態にあるかを示す起動面フラグ、ならびに待機面の情報消去の状態を示す消去フラグを記憶するデータ領域が配設され、制御機能部42の更新制御機能部50でこの通信機器10を起動し、起動後、更新要求に応じて外部機器からフラッシュメモリ部60への新たな情報の書込みを制御するとともに、起動にともない消去フラグが未消去であることに応じて、たとえば待機面における１つのセクタ分ずつ消去させて、更新によるハードウェアの構成変更によらず、この待機面の区分領域を消去するように制御して、あらかじめ、待機面の情報を消去しておくことにより、更新要求を受けてから更新完了までの更新時間を短縮することができる。
【００１７】
本発明と直接関係のない部分について図示および説明を省略する。以下の説明で、信号はその現れる接続線の参照番号で指示する。
【００１８】
通信機器10は、図２に示すように、CPU（Central Processing Unit）12、RAM（Random Access Memory）14、フラッシュメモリ16、LAN（Local Area Network）インタフェース回路（I/F）18およびUSB（Universal Serial Bus）インタフェース回路20を含む。本発明を実現する上で、ハードウェアには、CPU 12、RAM 14、フラッシュメモリ16が搭載されていることが必要条件である。
【００１９】
CPU 12は、プログラムをストレージから読み込んで通信機器10における情報処理を実行し、情報をやり取りして機器の通信を制御する機能を有する。このため、CPU 12には、バス22を介してRAM 14、フラッシュメモリ16、LAN I/F回路18およびUSB I/F回路20が接続されている。
【００２０】
RAM 14は、フラッシュメモリ16に記憶されたハードウェアを制御する運用ソフトウェア、すなわちファームウェアの実行に際して用いる情報を格納するストレージである。
【００２１】
フラッシュメモリ16は、書換え可能な不揮発性記憶媒体であり、本実施例ではNOR型を適用している。フラッシュメモリ16は、通信機器10に電源が投入されると、内蔵するこの機器10を初期化するプログラムデータをブートローダからCPU 12に送って実行し、機器10を起動する。メモリ内の構成は後段で記述する。フラッシュメモリ16には、通信機器10が実行する各種のアプリケーションのプログラムも記憶されている。
【００２２】
LAN I/F回路18は、LANに接続されている外部機器と通信機器10が情報をやり取りするインタフェース機能を有する。外部機器には、たとえばPC（Personal Computer）11やサーバ等がある。LAN I/F回路18は、PCのインタフェース機能と同じ仕様同士、たとえば有線/無線に応じて通信する。
【００２３】
USB I/F回路20は、USBに接続されている周辺機器と通信機器10が情報をやり取りするインタフェース機能を有する。周辺機器には、個人用のUSBメモリ13等がある。
【００２４】
本実施例では、LAN I/F回路18およびUSB I/F回路20を挙げたが、通信機器10には、外部機器や周辺機器から通信機器10のRAM 14にファームウェアを転送できる、少なくとも１つのインタフェース回路があればよい。また、ファームウェアの転送方式はどんな方式でも構わない。
【００２５】
次にフラッシュメモリ16のパーティション構成を図３に示す。フラッシュメモリ16は、便宜上、メモリ内部をいくつかのパーティションに分割されている。パーティションは、メモリ内部を、たとえばブートローダ領域24、ファームウェア領域26および28、ならびにデータ領域30、・・・に割り当てるように設定されている。フラッシュメモリ16には、ファームウェア領域26および28が運用面と待機面の２面分を保持可能にする十分な空き容量が要求される。本実施例では、ファームウェア領域26および28をＡ面/Ｂ面に設定している。
【００２６】
また、データ領域30には、２つのフラグが格納されている。データ領域30は、図４に示すように、フラグ名32および設定データ34を有する。フラグ名32には、第１のフラグに起動面フラグ36、および第２のフラグに消去フラグ38がある。起動面フラグ36は、Ａ面とＢ面のファームウェアのどちらを起動するかの判断に用いるフラグであり、設定データ34は起動を“1”、待機を“0”と設定する。したがって、Ａ面起動とＢ面待機の場合、起動面フラグ36の設定データ340は“10”にデータセットしている。逆の場合、起動面フラグ36の設定データ340は“01”に設定されている。
【００２７】
また、消去フラグ38は、待機面のセクタそれぞれが消去済みか否かの判断に用いるフラグであり、設定データ342は消去済み状態を“1”、未消去または書込み状態を“0”に設定して表わす。消去フラグ38のあるセクタが“1”の場合、上述の条件から、Ｂ面のあるセクタが消去済みであることを知ることができる。
【００２８】
なお、消去フラグ38は、Ａ面/Ｂ面それぞれを表わす設定データ342に対して値“01”、“00”および“10”を採ることができる。とくに、設定データ342の値“00”は、ファームウェアの更新時に起動面が切り換えられるまでの間、一時的に採られる値である。
【００２９】
次にファームウェアにおけるソフトウェアとしてフラッシュメモリ16に書き込んでいるファームウェア処理機能部40の概略的な機能ブロックの構成について図１に示す。ファームウェア処理機能部40は、制御機能部42、デバイスドライバ部44、ブートローダ機能部46、および周辺I/F機能部48を含む。
【００３０】
制御機能部42は、更新制御機能部50およびアプリケーション群52を有する。更新制御機能部50は、新しいファームウェアへの更新を制御する機能を有する。更新制御機能部50は、デバイスドライバ部44のデバイスドライバそれぞれを介して該当する対象のデバイスと通信して新たなファームウェアをフラッシュメモリ14に書込み制御する。
【００３１】
アプリケーション群52は、外部機器から通信機器10のRAM 14への転送処理およびファームウェアの更新実行を更新制御機能部50に指示するソフトウェア群である。このソフトウェア群は、ファームウェアの転送/更新を可能にするものであれば、アプリケーションやプロトコルの制限なしに適用することができる。たとえば各種のサーバやクライアントのアプリケーションとしてユーザの要求を満足するプログラムを内蔵し、更新条件に応じていくつかアプリケーションの組合せがある。
【００３２】
具体的には、LANに接続されたPCからWebのGUI（Graphic User Interface）を操作してファームウェアを更新する場合、http（Hyper-Text Transfer Protocol）クライアントアプリケーションが用いられる。また、FTP（File Transfer Protocol）でファームウェアを置き換え、telnet（Telecommunication network）コマンドで更新を実施する場合には、FTPサーバアプリケーションとtelnetサーバアプリケーションが用いられる。さらに、ファームウェアを、公開しているhttpサーバからLANを経由で取得する場合には、httpクライアントアプリケーションが用いられる。
【００３３】
デバイスドライバ部44は、入出力デバイスである周辺機器に依存してこれらを制御し、アプリケーションに抽象化したインタフェースを提供するソフトウェアによる機能部である。本実施例では、フラッシュデバイスドライバ54、LANデバイスドライバ56およびUSBデバイスドライバ58を備える。フラッシュデバイスドライバ54、LANデバイスドライバ56およびUSBデバイスドライバ58は、それぞれ周辺I/F機能部48の対応したデバイス、すなわちフラッシュメモリや、デバイス・インタフェースであるLAN I/F部62およびUSB I/F部64を介して、データをやり取りしている。
【００３４】
ブートローダ機能部46は、通信機器10の電源投入時に最初に起動されるソフトウェア機能部である。ブートローダ機能部46は、本実施例では主に、データ領域30のフラグを参照し、Ａ面とＢ面のいずれのファームウェア領域を起動するか判断し、該当するファームウェアを起動する機能を有する。ブートローダ機能部46は、この判断のためCPU 12で実行されデータ領域30の起動面フラグ36にアクセスして設定データ34を参照する。ブートローダ機能部46は、図１においてフラッシュメモリ14の外に図示しているが、フラッシュメモリ部60内の各領域にアクセスして起動させるというアクセス機能の持つ意味を、重視して明確に示しため、便宜上、このような表示にしている。したがって、メモリマップとして格納位置を示すことを重視する場合、ブートローダ機能部46は、図３に示すようにブートローダ領域24で表示している。
【００３５】
周辺I/F機能部48は、前述したようにデバイスドライバに依存して制御するソフトウェアである。フラッシュメモリ部60には、フラッシュデバイスドライバ54によってデータの読出し/書込みが行なわれる。LAN I/F部62は、LANに接続されたPC 11と通信可能にされ、USB I/F部64は、USBメモリ13と通信が行なわれる。
【００３６】
次に本発明を適用した通信機器10における主な動作を記述する。この動作には、主に、起動、更新の起動およびファームウェアの更新の３つの工程がある。まず、通信機器10の起動手順を図５に示す。通信機器10の電源を投入すると、CPU 12が起動し、フラッシュメモリ14のブートローダ領域24にアクセスする。CPU 12は、図１のように、このアクセスによりブートローダ機能部46が起動する（ステップS10）。
【００３７】
ブートローダ機能部46は、フラッシュメモリ14のデータ領域30に保存されている起動面フラグ36の設定データ34を読む（ステップS12）。
【００３８】
次にブートローダ機能部46は、起動面フラグ36の設定データ34がＡ面の起動か否かを判断する（ステップS14）。読み込んだ起動面フラグ36の設定データ34が“10”または単に“１”のとき（YES）、Ａ面のファームウェアで起動すると判断する。また、読み込んだ起動面フラグ36の設定が“01”または“０”のとき（NO）、Ｂ面のファームウェアで起動すると判断する。本実施例では、Ａ面のファームウェアを起動する場合で起動動作を記述する。
【００３９】
次にブートローダ機能部46は、Ａ面のファームウェアをRAM 20に展開する（ステップS16）。展開処理完了後、RAM 20上に展開されたファームウェアのプログラムを先頭から順次、適宜に処理して起動する（ステップS18）。
【００４０】
なお、Ｂ面のファームウェアを起動する場合、Ｂ面のファームウェアをRAM 20に展開する（ステップS17）。
【００４１】
この起動後、アプリケーション群52のアプリケーションを指示に応じて起動する（ステップS20）。このように運用面の内容で起動しアプリケーションを動作させながら、待機面の内容を消去している。
【００４２】
待機面の内容の消去手順としては、運用指示に応じたアプリケーションの起動完了後、図６に示すように、もう１つの起動工程である更新制御の起動に進む。更新制御の起動では、更新制御機能部50を起動する（ステップS22）。更新制御機能部50は、消去フラグ38の設定データ34を読む。更新制御機能部50は、消去判断処理に進む（ステップS24へ）。
【００４３】
消去判断処理では、消去フラグ38が消去済か否かを判断する（ステップS24）。消去フラグ38が消去済“１”の場合（YES）、更新待機状態に遷移する（ステップS26へ）。また、消去フラグ38が未消去“０”の場合、すなわち書込みが有る場合（NO）、更新要求検出処理に進む（ステップS28へ）。
【００４４】
更新要求検出処理では、更新制御機能部50が格納するアプリケーションからファームウェアの更新要求を受け付けているか否かを判断する（ステップS28）。ファームウェアの更新要求を受け付けている場合（YES）、ファームウェアの更新処理に進み（ステップS30へ）、更新を実行する。また、ファームウェアの更新要求を受け付けていない場合（NO）、待機面の消去処理に進む（ステップS32へ）。
【００４５】
待機面の消去処理は、１セクタ単位で実行する（ステップS32）。この消去後、Ｂ面のファームウェア領域28の消去したセクタ番号に対して+1だけ歩進して（ステップS34）、セクタ判断処理に進む（ステップS36へ）。
【００４６】
セクタ判断処理は、消去したセクタ、すなわち歩進前のセクタ数が最終か否かを判断する（ステップS36）。消去したセクタが最終の場合（YES）、消去が完了したと判断して消去フラグの値を“０”から消去済みの設定データ“１”に変更する（ステップS38）。この変更後、消去判断処理に戻る（ステップS24へ）。また、消去したセクタが最終でない場合（NO）も、直ちに消去判断処理に戻る（ステップS24へ）。このように、消去判断処理からセクタ判断処理までの繰返し処理は、本実施例の待機面であるＢ面のファームウェア領域28の全セクタが消去を完了するまでのループ処理に対応している。
【００４７】
さらに、起動処理における具体的なセクタ消去の手順について図７を参照しながら、簡単に記述する。セクタ単位の消去は、更新制御機能部50、フラッシュデバイスドライバ54およびフラッシュメモリ部60の間の手順に基づいて処理される。
【００４８】
更新制御機能部50は、時刻T10にてセクタ消去指示コマンド66をフラッシュデバイスドライバ54に送る。フラッシュデバイスドライバ54は、時刻T12にて消去対象のセクタのデータを読むリードコマンド68をフラッシュメモリ部60に送る。図示しないが、フラッシュメモリ部60は、消去対象のセクタのデータを読んだ結果をフラッシュデバイスドライバ54に返す。
【００４９】
フラッシュデバイスドライバ54は、時刻T14にて消去対象のセクタのデータが消去済みか否かを判断する。フラッシュメモリ部60のように半導体メモリにおける消去状態とは、ビットデータすべてが論理レベル“１”になっている状態である。全ビットが“１”を示す場合（YES）、該当セクタは消去済み状態と判断する。この判断により、セクタのイレースコマンドを発行することなく、スキップすることができる。ところで、セクタの消去処理は、一般的に、時間を要する処理として知られている。このように消去済み状態による消去処理のスキップが可能になることで、従来の消去手順に比べて消去時間を短縮することができる。
【００５０】
また、対象セクタのビットデータに論理レベル“０”が含まれている場合（NO）、該当セクタは未消去（書込み）状態と判断する。このとき、フラッシュデバイスドライバ54は、時刻T16にて対象のセクタに対してイレースコマンド70を発行してフラッシュメモリ部60に出力し、データを消去する。フラッシュデバイスドライバ54は、図示しないが、フラッシュメモリ部60から消去完了の通知を受ける。フラッシュデバイスドライバ54は、時刻T18にて対象セクタの消去指示コマンド66に対する応答としてのセクタの消去完了通知72が更新制御機能部50に返す。
【００５１】
なお、本実施例では、ハードウェアにおいて一般的な論理レベル“１”を消去状態としたが、これに限定されることなく、論理レベル“０”を消去状態に設定してもよい。
【００５２】
次にファームウェアの更新処理工程について図８を参照しながら、記述する。更新制御機能部50は、待機判定処理に進む（ステップS40へ）。待機判定処理は、各アプリケーションからたとえば割込み処理のようにファームウェアの更新要求を受信するまで待機状態にするループ処理である（ステップS40およびS42）。すなわち、待機処理で所定の時間経過を待ち（ステップS40）、更新判定処理は、ファームウェアの更新要求の有無を判定する（ステップS42）。ファームウェアの更新要求がない場合（NO）、待機処理に戻る（ステップS40へ）。また、ファームウェアの更新要求がある場合（YES）、外部の接続機器から新しいファームウェアを通信機器10のRAM 20に転送し、ファームウェアの更新処理を開始する。
【００５３】
具体的な更新処理には、図１の構成から考えられるように、第１に、PCをLAN接続し、通信機器10にhttpでファームウェアの転送、更新実行する方法、第２に、PCをLAN接続し、通信機器10にFTP接続し、RAM 20にファームウェアを転送し、telnet接続から更新実行する方法、第３に、USBメモリ13を接続し、通信機器10にtelnet接続し、USBメモリ13をマウントし、USBメモリ13からRAM 20にファームウェアをコピーし、更新実行する方法等がある。
【００５４】
更新制御機能部50は、各アプリケーションからファームウェアの更新要求を受信すると、現在、待機中のファームウェア領域28の消去フラグ38の値を未消去“０”に変更する（ステップS44）。この変更は、待機面にこれからの新たなファームウェアが何等かのプログラムデータとして書き込まれることから、結果的に消去済み“１”から書込み状態の未消去“０”に変更することを意味している。したがって、Ａ面/Ｂ面の消去フラグ38の値は、この時点で２つ併せてみると値“00”になる。
【００５５】
この変更後、新しいファームウェアをフラッシュメモリ14のファームウェア領域28に書込みを開始する。ここでの書込み先は、この時点における待機面、Ｂ面である。書込み処理は、Ｂ面に対して１セクタ単位で実行する（ステップS46）。この制御機能部50における更新処理もセクタ単位での書込み処理は、図９に示すように、時刻T20にて更新制御機能部50から書込みコマンド74で指示され、フラッシュデバイスドライバ54の内部で処理される。
【００５６】
さらに、この書込み処理について簡単に記述すると、フラッシュデバイスドライバ54は、時刻T22にて書込み対象のセクタのデータをリードする。リードにおいてフラッシュデバイスドライバ54は、時刻T22にてセクタのリードコマンド76をフラッシュメモリ部60に出力する。フラッシュメモリ部60は、図示しないがリードコマンド76の応答としてセクタのデータをフラッシュデバイスドライバ54に返す。
【００５７】
フラッシュデバイスドライバ54は、時刻T24にて全ビットが“１”、すなわち対象セクタが消去済み状態か否かを判別する。未消去とは、セクタ内のビットが１つでも存在する状態と判別した場合（NO）、フラッシュデバイスドライバ54は、時刻T26にてセクタイレースコマンド78をフラッシュメモリ部60に出力する。このコマンドを受けてフラッシュメモリ部60は、セクタ内のデータすべてを消去する。フラッシュメモリ部60は、図示しない消去完了をフラッシュデバイスドライバ54に返す。
【００５８】
また、全ビットが“１”で既にセクタが消去済みと判別した場合（YES）、上述したセクタイレース処理しなくて済むから、この処理をスキップして、直ちに書込み処理に進む。前述したように、セクタイレース処理は、時間を要する処理であるため、セクタイレース処理のスキップにより、消去時間の短縮となる。とくに、起動処理で全セクタが消去済みの場合、大幅な時間短縮となる。
【００５９】
このセクタ消去の判別後、フラッシュデバイスドライバ54は、時刻T28にてセクタライトコマンド80をフラッシュメモリ部60に出力し、新たなファームウェアを対象のセクタに書き込む。フラッシュメモリ部60は、図示しないが、書込み完了をフラッシュデバイスドライバ54に応答として返す。
【００６０】
フラッシュデバイスドライバ54は、セクタライト完了後の時刻T30にて、セクタ書き込み完了通知82を更新制御機能部50に通知する。
【００６１】
この１セクタの書込み完了後、ふたたび図８に戻って、Ｂ面の最終セクタまで達したか否かを判断する（ステップ48）。最終セクタに達していないと判断した場合（NO）、Ｂ面の１セクタの書込み処理に戻る（ステップ46へ）。また、最終セクタに達したと判断した場合（YES）、起動面フラグ反転処理に進む（ステップ50へ）。
【００６２】
起動面フラグ反転処理は、更新制御機能部50は、全セクタの書き込み完了後、起動面フラグのデータ“10”から“01”に切り換える（ステップ50）。すなわち本実施例における起動面はＡ面からＢ面に反転させている。このように、Ａ面で起動していた場合、Ｂ面に更新するファームウェアに書き込み、起動面フラグをＡ面からＢ面に変更する。
【００６３】
この動作完了後、通信機器10を再起動する（ステップ52）。起動により、データ領域30を参照して、運用面がＢ面に切り替わり、新しいファームウェアで起動する。消去フラグ38の待機面の値を読むと、“00”であるから、未消去“０”と判断して待機のＡ面を消去する。
【００６４】
本実施例は、Ａ面で起動した場合を記述したが、通信機器10は、Ｂ面で起動してもよい。この場合、通信機器10の更新制御機能部50は、起動面フラグ36が“01”で、かつ消去フラグ38が“１”を示すか否か判断すればよい。すなわち、ファームウェア領域26（Ａ面）が待機面で消去済みか否かを判断する。この設定の場合、起動面フラグ36の値が“01”であるから、Ａ面が待機面で、消去フラグ38の値が“10”であるから、Ａ面が消去済みでＢ面が未消去であることを示す。Ａ面の待機面に新たなファームウェアを書き込むため、このとき消去フラグ38のＡ面の値を未消去にする。したがって、消去フラグ38の値は“00”になる。
【００６５】
本実施例の通信機器10は、ソフトウェアでフラッシュメモリチップの各セクタの消去状態を判別し、更新することでハードウェア構成に依存しないようにできる。また、通信機器10は、セクタ消去処理の直前で、消去済みか否かを判断することにより、消去対象のセクタのアドレス情報をフラッシュメモリ内部に保持する必要なく、かつ、電源断等によるデータ化けが発生しても正しく、消去処理を実行できる。さらに、通信機器10は、フラッシュメモリ部60をセクタ単位でダイレクトにアクセスすることから、ファイルシステムに一切依存せずに済ませることができる。このように従来技術で挙げた課題を解決しながら、安全、かつ確実にファームウェアを更新し、さらにはファームウェア更新時間を短縮できるという効果が得られる。
【００６６】
本実施例では、２面化されたファームウェアにおいて、ファームウェア更新時間を短縮する方法を記述したが、２面化してさえいれば、ファームウェアだけではなく、データでも更新時間を短縮することができる。データ更新の場合、フラッシュメモリ14におけるメモリマップは、図10に示すように、データ領域30を運用中に用いるＡ面に設定し、データ領域84を待機に用いるＢ面に設定するとよい。図４に示したフラグ名32および設定データ34は、２面以外のデータ領域に格納しておくとよい。この場合、データ更新は、時間の短縮だけでなく、データ更新中の電源断による耐性も向上させることができる。
【００６７】
ところで、フラッシュメモリ14には、OS（Operating System）の制御を介して、適宜にアクセスできることが知られている。したがって、待機面のメモリ領域をアクセスする場合もあることから、更新機能部50には、図11に示すように、アクセス監視機能部86を設けてもよい。アクセス監視機能部86は、待機面のメモリ領域にアクセスの有無を判断し、アクセスがないときだけ消去を許可する機能を有する。具体的に、アクセス監視機能部86は、起動面フラグ36のデータにより待機面を特定し、CPU 12またはフラッシュデバイスドライバ54に対するアクセスの有無を確認するとよい。
【００６８】
アクセス監視は、時刻T10またはT20のように、セクタイレースが実行される直前に、接続子ＡとＢの間に図12の手順を追加して、アクセスの有無を監視する（ステップS54）。具体的には、接続子Ａを介して、アクセス監視機能部86にて待機面へのアクセスが有ると判断した場合（YES）、消去の禁止に進む（ステップS56へ）。また、待機面へのアクセスがないと判断した場合（NO）、消去の許可に進む（ステップS58へ）。
【００６９】
消去の禁止では、CPU 12またはフラッシュデバイスドライバ54に対してアクセス優先権を発行し、イレースを所定の時間にわたって禁止する。この禁止後、アクセス監視に戻る。また、消去の許可では、接続子Ｂを介して、セクタの消去に進む。
【００７０】
さらに、アクセス監視機能部86は、アクセス有りの場合でも、アクセスの種類で待機面のデータを消去してもよい。アクセスの種類には、カーネルモードのアクセス動作とユーザモードに基づくカーネルモードのアクセス動作とがある。アクセス監視機能部86は、識別した種類が後者のアクセス動作の場合、CPU 12またはフラッシュデバイスドライバ54に対してアクセスを停止させ、この停止確認後、待機面のデータを消去してもよい。
【００７１】
これを実現させるため、図13に示すように、アクセス有りの場合、アクセス監視機能部86にてユーザモードに基づくカーネルモードのアクセス動作か否かを判断する（ステップS60）手順を追加する。このように判断することにより、カーネルモードのアクセス動作を保ちながら、セクタのイレース処理を有効に実現させることが可能になる。
【符号の説明】
【００７２】
10  通信機器
12  CPU
14  フラッシュメモリ
16  LAN I/F
18  USB I/F
20  RAM
40  ファームウェア処理機能部
42  制御機能部
44  デバイスドライバ部
46  ブートローダ機能部
48  周辺I/F機能部
50  更新制御機能部
【図１】
2014194682.tif 000003
【図２】
2014194682.tif 000004
【図３】
2014194682.tif 000005
【図４】
2014194682.tif 000006
【図５】
2014194682.tif 000007
【図６】
2014194682.tif 000008
【図７】
2014194682.tif 000009
【図８】
2014194682.tif 000010
【図９】
2014194682.tif 000011
【図１０】
2014194682.tif 000012
【図１１】
2014194682.tif 000013
【図１２】
2014194682.tif 000014
【図１３】
2014194682.tif 000015