(57)【特許請求の範囲】
【請求項１】
プログラムデータが記憶されている第１の不揮発性メモリと、前記プログラムデータに従った制御を実行するＣＰＵと、ＲＡＭと、ＤＭＡ部と、を含む情報処理装置であって、
第２の不揮発性メモリと、
互いに独立した第１及び第２のバスと、
更新用プログラムデータを受信した場合に割込信号を前記ＣＰＵに供給する通信部と、を有し、
前記ＣＰＵは、前記割込信号に応じて前記通信部が受信した前記更新用プログラムデータを前記第１のバス又は前記第２のバスを介して前記ＲＡＭに書き込み、
前記ＤＭＡ部は、前記ＲＡＭに書き込まれた前記更新用プログラムデータを前記第１のバス又は前記第２のバスを介して前記第２の不揮発性メモリに書き込むことを特徴とする情報処理装置。
【請求項２】
前記ＣＰＵは、前記ＤＭＡ部が前記更新用プログラムデータを全て前記第２の不揮発性メモリに書き込んだら、前記第１の不揮発性メモリに格納されている前記プログラムデータに代えて前記第２の不揮発性メモリに格納されている前記更新用プログラムデータに従った制御に切り替えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ＣＰＵは、前記更新用プログラムデータを前記第１のバスを介して前記ＲＡＭに書き込み、
前記ＤＭＡ部は、前記ＲＡＭに書き込まれた前記更新用プログラムデータを前記第１のバスを介して前記第２の不揮発性メモリに書き込むことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記ＣＰＵは、前記更新用プログラムデータを前記第１のバスを介して前記ＲＡＭに書き込み、
前記ＤＭＡ部は、前記ＲＡＭに書き込まれた前記更新用プログラムデータを前記第２のバスを介して前記第２の不揮発性メモリに書き込むことを特徴とする請求項１又は２記載の情報処理装置。
【請求項５】
前記ＣＰＵは、前記更新用プログラムデータを１ワード分ずつ前記第１のバスを介して前記ＲＡＭに書き込み、
前記ＤＭＡ部は、前記ＣＰＵが１ワード分の前記更新用プログラムデータを前記ＲＡＭに書き込む度に、前記第２のバスを介して前記ＲＡＭに書き込まれている他の１ワード分の前記更新用プログラムデータを読み出して前記第２の不揮発性メモリに書き込むことを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記ＤＭＡ部が前記他の１ワード分の更新用プログラムデータを前記第２のバスを介して前記第２の不揮発性メモリに供給している間に、前記ＣＰＵが前記通信部が受信した１ワード分の前記更新用プログラムデータを前記第１のバスを介して前記ＲＡＭに供給することを特徴とする請求項５記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信機能を利用して自身のソフトウェアプログラムの自動更新を行う情報処理装置に関する。
【背景技術】
【０００２】
近年、情報機器に搭載されているＣＰＵ（Central Processing Unit）が実行する制御プログラム、いわゆるファームウェアをネットワーク経由で更新できるようにしたシステムが製品化されている。
【０００３】
例えば、制御プログラムの実行中に、受信された更新用の制御プログラムをＲＡＭ（Random Access Memory）に書き込み、このＲＡＭに書き込まれた制御プログラムをフラッシュＲＯＭ（Read Only Memory）に書き込むことにより制御プログラムを更新する装置が提案されている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−３３０６５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の構成では、上記した一連のプログラムの更新制御を実施している間は、かかる更新制御によってＣＰＵがバスを占有するので、この間、ＣＰＵはメイン制御の実行を一時的に待機しなければならない。よって、ＣＰＵの使用効率が低下する虞があった。
【０００６】
そこで、本発明は、ＣＰＵの使用効率を低下させることなく、プログラムの自動更新を行うことが可能な情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る情報処理装置は、プログラムデータが記憶されている第１の不揮発性メモリと、前記プログラムデータに従った制御を実行するＣＰＵと、ＲＡＭと、ＤＭＡ部と、を含む情報処理装置であって、第２の不揮発性メモリと、互いに独立した第１のバス及び第２のバスと、更新用プログラムデータを受信した場合に割込信号を前記ＣＰＵに供給する通信部と、を有し、前記ＣＰＵは、前記割込信号に応じて前記通信部が受信した前記更新用プログラムデータを前記第１のバス又は前記第２のバスを介して前記ＲＡＭに書き込み、前記ＤＭＡ部は、前記ＲＡＭに書き込まれた前記更新用プログラムデータを前記第１のバス又は前記第２のバスを介して前記第２の不揮発性メモリに書き込む。
【発明の効果】
【０００８】
本発明においては、更新用のプログラムデータを受信した場合には、第１の不揮発性メモリに格納されているプログラムデータに従った制御を実行するＣＰＵが、この受信した更新用プログラムデータを、互いに独立した第１又は第２のバスを介してＲＡＭに書き込む。そして、ＤＭＡ部が、ＲＡＭに格納された更新用プログラムデータを第１又は第２のバスを介して第２の不揮発性メモリに書き込むことにより、プログラムデータの更新を行う。これにより、ＤＭＡ部が第１及び第２のバスのうちの一方のバスを介して更新用プログラムデータを第２の不揮発性メモリに書き込んでいる間に、ＣＰＵが第１及び第２のバスのうちの他方のバスを介して各種の制御を行うことが可能となる。
【０００９】
よって、本発明によれば、ＣＰＵの使用効率を低下させることなく、プログラムの自動更新を行うことが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明に係る情報処理装置１００の構成を示すブロック図である。
【００１１】
【図２】バスコントローラ２０の内部構成を示すブロック図である。
【００１２】
【図３】プログラム更新制御による情報処理部１２０内での信号シーケンスを示すフロー図である。
【００１３】
【図４】プログラム更新制御による情報処理部１２０内での信号シーケンスの他の一例を示すフロー図である。
【００１４】
【図５】プログラム更新制御による情報処理部１２０内での信号シーケンスの他の一例を示すフロー図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施例を図面を参照しつつ詳細に説明する。
【００１６】
図１は、本発明に係る情報処理装置１００の構成を示すブロック図である。図１に示すように、情報処理装置１００は、通信部１１０及び情報処理部１２０を有する。尚、通信部１１０は半導体チップに形成されており、情報処理部１２０は、この通信部１１０が形成されている半導体チップとは異なる半導体チップに形成されている。
【００１７】
通信部１１０は、ホスト装置（図示せぬ）等から無線又は有線送信された、更新用のソフトウェアプログラムを表すプログラムデータ信号を受信すると、当該プログラムデータ信号を内蔵レジスタ（図示せぬ）に格納する。通信部１１０の内蔵レジスタは、情報処理部１２０から供給された読出要求信号に応じて、格納されているプログラムデータ信号を読み出し、これをシリアル信号形態のプログラムデータ信号ＰＤとして情報処理部１２０に供給する。また、通信部１１０は、かかるプログラムデータ信号の受信に応じて、通信割込信号ＩＴ１を情報処理部１２０に供給する。
【００１８】
情報処理部１２０には、ＣＰＵ１０、フラッシュＲＯＭ１１及び１２、周辺装置１３、ＲＡＭ１４、ＳＰＩ(Serial Peripheral Interface)部１５、ＤＭＡ（Direct Memory Access）部１６、割込検出部１７、マスタ周辺装置１８、アドレス変換部１９及びバスコントローラ２０が形成されている。これらＣＰＵ１０、フラッシュＲＯＭ１１、１２、周辺装置１３、ＲＡＭ１４、ＳＰＩ部１５、ＤＭＡ部１６、マスタ周辺装置１８及びアドレス変換部１９は、バスコントローラ２０に接続されている。
【００１９】
不揮発性メモリとしてのフラッシュＲＯＭ１１及び１２（以下、ＦＲＯＭ１１及びＦＲＯＭ１２と称する）には、ＣＰＵ１０が実行するプログラムデータが格納されている。尚、例えば初期設定時には、ＦＲＯＭ１１にプログラムデータが格納され、ＦＲＯＭ１２には更新用のプログラムデータが格納される。
【００２０】
周辺装置１３は、タイマ、或いは外部接続インターフェース回路等からなり、バスコントローラ２０を介して、タイマ時間の設定、読み出し、或いは外部接続された機器（図示せぬ）に対する制御又は当該機器からのデータ取得を行う。
【００２１】
ＲＡＭ１４は、プログラム実行時に生成される各種中間データをバスコントローラ２０を介して取り込み、それを記憶する。また、ＲＡＭ１４は、書き込まれたデータを読み出しこれをバスコントローラ２０に送出する。
【００２２】
ＳＰＩ部１５は、通信部１１０から供給されたシリアル形態のプログラムデータ信号ＰＤを取り込み、これをパラレル形態に変換したプログラムデータを内蔵レジスタ（図示せぬ）に格納する。ＳＰＩ部１５の内蔵レジスタは、バスコントローラ２０を介して供給された読出要求信号に応じて、格納されているプログラムデータを読み出し、これをバスコントローラ２０に送出する。また、ＳＰＩ部１５は、通信部１１０から送出された上記したプログラムデータ信号ＰＤを受けた場合には、ＳＰＩ割込信号ＩＴ２を割込検出部１７に供給する。更に、ＳＰＩ部１５は、ＤＭＡによるデータ転送を促すＤＭＡ転送タイミング信号ＤＴをＤＭＡ部１６に供給する。
【００２３】
ＤＭＡ部１６は、バスコントローラ２０を介してＤＭＡの動作設定が為され、その設定内容に従って、ＲＡＭ１４及びＦＲＯＭ１２間でのデータ転送をバスコントローラ２０を介して行う。尚、ＤＭＡ部１６は、ＤＭＡ転送タイミング信号ＤＴに応じて上記したデータ転送を開始するようにしても良い。ＤＭＡ部１６は、上記した設定内容に基づくデータの転送動作が完了したら、ＤＭＡ転送終了信号ＥＤを割込検出部１７に供給する。ＤＭＡ部１６は、ＲＡＭ１４、ＦＲＯＭ１１及び１２に対してアクセスを行うことが可能なマスタ装置である。
【００２４】
割込検出部１７は、上記した通信割込信号ＩＴ１、ＳＰＩ割込信号ＩＴ２、又はＤＭＡ転送終了信号ＥＤに応じて、その信号の内容を表す割込信号ＩＮＴを生成し、これをＣＰＵ１０に供給する。
【００２５】
マスタ周辺装置１８は、ＣＰＵ１０と同様にバスコントローラ２０を介して、ＦＲＯＭ１１、１２、周辺装置１３、ＲＡＭ１４、及びＳＰＩ部１５に対してアクセスを行うことが可能なマスタ装置である。
【００２６】
アドレス変換部１９は、ＣＰＵ１０がＦＲＯＭ１１に格納されているプログラムデータを実行する場合には、ＣＰＵ１０から送出されたプログラムデータ読出用のアドレスをそのままバスコントローラ２０を介してＦＲＯＭ１１に供給する。一方、ＦＲＯＭ１２に格納されている更新プログラムデータを実行する場合には、アドレス変換部１９は、ＣＰＵ１０から送出されたプログラムデータ読出用のアドレスを、ＦＲＯＭ１２に対応したアドレスに変換し、これをバスコントローラ２０を介してＦＲＯＭ１２に供給する。尚、アドレス変換部１９内では、各種データ及び制御信号を伝送するバス（図示せぬ）を介して、ＣＰＵ１０とバスコントローラ２０とが直接接続されている。
【００２７】
バスコントローラ２０は、上記したＣＰＵ１０、ＦＲＯＭ１１、１２、周辺装置１３、ＲＡＭ１４、ＳＰＩ部１５、ＤＭＡ部１６、マスタ周辺装置１８及びアドレス変換部１９に対して、データ或いは各種制御信号の中継を行う。
【００２８】
図２は、バスコントローラ２０の内部構成を示すブロック図である。図２に示すように、バスコントローラ２０は、マスタ装置であるＣＰＵ１０、ＤＭＡ部１６及びマスタ周辺装置１８に夫々対応して設けられたマスタ制御部１８１〜１８３を有する。更に、バスコントローラ２０は、当該マスタ装置のアクセス対象となるスレーブ装置としてのＦＲＯＭ１１、１２、周辺装置１３、ＲＡＭ１４及びＳＰＩ部１５に夫々対応して設けられたスレーブ制御部１９１〜１９５と、２つの独立したメインバスＢＳ１及びＢＳ２と、を有する。
【００２９】
図２において、マスタ制御部１８１は、ＤＭＡ１６と、メインバスＢＳ１及びＢＳ２のうちの一方とを選択的に接続する。マスタ制御部１８２は、マスタ周辺装置１８と、メインバスＢＳ１及びＢＳ２のうちの一方とを選択的に接続する。マスタ制御部１８３は、ＣＰＵ１０と、メインバスＢＳ１及びＢＳ２のうちの一方とをアドレス変換部１９を介して選択的に接続する。尚、図２では、アドレス変換部１９を省略している。
【００３０】
スレーブ制御部１９１は、ＦＲＯＭ１１と、メインバスＢＳ１及びＢＳ２のうちの一方とを選択的に接続する。スレーブ制御部１９２は、ＦＲＯＭ１２と、メインバスＢＳ１及びＢＳ２のうちの一方とを選択的に接続する。スレーブ制御部１９３は、周辺装置１３と、メインバスＢＳ１及びＢＳ２のうちの一方とを選択的に接続する。スレーブ制御部１９４は、ＲＡＭ１４と、メインバスＢＳ１及びＢＳ２のうちの一方とを選択的に接続する。スレーブ制御部１９５は、ＳＰＩ１５と、メインバスＢＳ１及びＢＳ２のうちの一方とを選択的に接続する。
【００３１】
マスタ制御部１８１〜１８３はそれぞれ固有のアドレスが付与され、互いに同一の内部構成を有する。また、スレーブ制御部１９１〜１９５も同様にそれぞれ固有のアドレスが付与され、互いに同一の内部構成を有する。
【００３２】
以下に、ＤＭＡ１６がＦＲＯＭ１１にアクセスし、同時にＣＰＵ１０がＦＲＯＭ１２にアクセスする場合を例にとって、バスコントローラ２０の動作について説明する。
【００３３】
マスタ制御部１８１は、ＤＭＡ１６からのアクセスに応じて、先ず、メインバスＢＳ１及びＢＳ２が夫々個別に使用中であるか否かの判定を行う。ここで、メインバスＢＳ１及びＢＳ２が共に使用中では無いと判定された場合、マスタ制御部１８１は、メインバスＢＳ１とＤＭＡ１６とを接続する。次に、マスタ制御部１８１は、メインバスＢＳ１を介してスレーブ制御部１９１にアクセスする。これに応じて、スレーブ制御部１９１は、メインバスＢＳ２からのアクセスが有るか否かを判定し、メインバスＢＳ２からのアクセスが無いと判定された場合に、メインバスＢＳ１をＦＲＯＭ１１と接続する。上記動作と同時に、ＣＰＵ１０がＦＲＯＭ１２にアクセスする為にマスタ制御部１８３をアクセスすると、マスタ制御部１８３は、メインバスＢＳ１及びＢＳ２が夫々個別に使用中であるか否かの判定を行う。この際、メインバスＢＳ１は使用中であり、メインバスＢＳ２が非使用中であるので、マスタ制御部１８３は、メインバスＢＳ２とＣＰＵ１０とを接続する。次に、マスタ制御部１８３は、メインバスＢＳ２を介してスレーブ制御部１９２にアクセスする。これに応じて、スレーブ制御部１９２は、メインバスＢＳ１からのアクセスが有るか否かを判定し、メインバスＢＳ１からのアクセスが無いと判定された場合に、メインバスＢＳ２をＦＲＯＭ１２と接続する。
【００３４】
よって、バスコントローラ２０によれば、ＤＭＡ１６がメインバスＢＳ１を介してＦＲＯＭ１１にアクセスすると同時に、ＣＰＵ１０がメインバスＢＳ２を介してＦＲＯＭ１２にアクセスすることが可能となる。
【００３５】
尚、ＤＭＡ１６及びＣＰＵ１０が同時にＦＲＯＭ１１にアクセス要求を行った場合には、バスコントローラ２０は以下のように動作する。
【００３６】
先ず、ＤＭＡ１６がＦＲＯＭ１１にアクセスする動作は上記した動作と同一である。しかしながら、この際、ＣＰＵ１０の接続制御を行うマスタ制御部１８３は、メインバスＢＳ１が使用中であり、メインバスＢＳ２が非使用中であるので、メインバスＢＳ２とＣＰＵ１０とを接続する。次に、マスタ制御部１８３は、メインバスＢＳ２を介してスレーブ制御部１９１にアクセスする。この際、スレーブ制御部１９１は、メインバスＢＳ１と共にメインバスＢＳ２からもアクセスが為されていると判定し、アクセス不可と共に待機を促す応答信号を、メインバスＢＳ２及びマスタ制御部１８３を介してＣＰＵ１０に供給する。その後、ＤＭＡ１６によるＦＲＯＭ１１へのアクセスが終了すると、スレーブ制御部１９１は、上記した待機状態を解除する待機解除信号をメインバスＢＳ２及びマスタ制御部１８３を介してＣＰＵ１０に供給する。
【００３７】
すなわち、ＤＭＡ１６及びＦＲＯＭ１１が同時に同一のスレーブ装置にアクセス要求を行う場合には、バスコントローラ２０は、ＣＰＵ１０よりもＤＭＡ１６の方を優先してスレーブ装置に対するアクセスを許可する。
【００３８】
ＣＰＵ１０は、ＦＲＯＭ１１又は１２に格納されているプログラムデータをバスコントローラ２０を介して取得し、当該プログラムデータによって表されるプログラムを実行することにより、周辺装置１３、ＲＡＭ１４及びＳＰＩ部１５を制御する（以下、主制御と称する）。
【００３９】
また、ＣＰＵ１０は、通信部１１０から供給された通信割込信号ＩＴ１に基づく割込信号ＩＮＴに応じて、上記した主制御を一時中断してプログラム更新制御の実行に移る。すなわち、かかるプログラム更新制御により、現在の情報処理部１２０のプログラムを、ホスト装置から送信されてきた更新用のソフトウェアプログラムにバージョンアップするのである。
【００４０】
図３は、プログラム更新制御による情報処理部１２０内での信号シーケンスを示すフロー図である。
【００４１】
上記した割込信号ＩＮＴに応じて、先ず、ＣＰＵ１０は、通信部１１０の内蔵レジスタからプログラムデータ信号の読み出しを要求するレジスタ読出要求信号ＲＱ１をバスコントローラ２０のメインバスＢＳ１を介してＳＰＩ部１５に供給する。
【００４２】
ＳＰＩ部１５は、レジスタ読出要求信号ＲＱ１に応じてレジスタ読出信号ＲＲＤを通信部１１０に供給する。
【００４３】
通信部１１０は、レジスタ読出信号ＲＲＤに応じて内蔵レジスタに格納されているプログラムデータ信号を１ワード分だけ読み出し、１ワード分のプログラムデータ信号ＰＤをＳＰＩ部１５に供給する。
【００４４】
ＳＰＩ部１５は、１ワード分のプログラムデータ信号ＰＤを内蔵レジスタに記憶すると共に、ＳＰＩ割込信号ＩＴ２を割込検出部１７に供給する。
【００４５】
割込検出部１７は、ＳＰＩ割込信号ＩＴ２に応じて、通信部１１０から１ワード分のプログラムデータ信号ＰＤの取り込みが完了したことを表す割込信号ＩＮＴをＣＰＵ１０に供給する。
【００４６】
ＣＰＵ１０は、この割込信号ＩＮＴに応じて、ＳＰＩ部１５の内蔵レジスタからプログラムデータ信号の読み出しを要求するレジスタ読出要求信号ＲＱ２をバスコントローラ２０のメインバスＢＳ１を介してＳＰＩ部１５に供給する。
【００４７】
ＳＰＩ部１５は、レジスタ読出要求信号ＲＱ２に応じて内蔵レジスタに格納されている１ワード分のプログラムデータ信号を読み出し、これをプログラムデータ信号ＰＤ１としてバスコントローラ２０のメインバスＢＳ１を介してＣＰＵ１０に供給する。
【００４８】
ＣＰＵ１０は、供給された１ワード分のプログラムデータ信号ＰＤ１を取り込み、これをＲＡＭ書込信号ＲＷＲと共に、バスコントローラ２０のメインバスＢＳ１を介して、ＲＡＭ１４に供給する。これにより、ＲＡＭ１４は、１ワード分のプログラムデータ信号ＰＤ１を書き込む。
【００４９】
ＣＰＵ１０は、図３において、破線にて囲まれるシーケンスを繰り返し実行することにより、通信部１１０の内蔵レジスタに格納されているプログラムデータ信号を１ワード分ずつ読み出して、ＲＡＭ１４に記憶して行く。
【００５０】
ここで、通信部１１０の内蔵レジスタに格納されている全てのプログラムデータがＲＡＭ１４に書き込まれると、ＣＰＵ１０は、ＤＭＡの動作を指定するＤＭＡ設定信号ＤＳを、図３に示すように、バスコントローラ２０のメインバスＢＳ１を介してＤＭＡ部１６に供給する。
【００５１】
すなわち、ＣＰＵ１０は、ＤＭＡ部１６により、ＲＡＭ１４からＦＲＯＭ１２へのプログラムデータの転送を実行させる為に、
・転送元のＲＡＭ１４の読み出し開始アドレス
・転送先のＦＲＯＭ１２の書込開始アドレス
・転送データ量
・ＤＭＡ動作開始指令
を表すＤＭＡ設定信号ＤＳをＤＭＡ部１６に供給する。
【００５２】
ＤＭＡ部１６は、ＤＭＡ設定信号ＤＳに応じて、当該ＤＭＡ設定信号ＤＳにて指定されたＤＭＡ動作を実行する。すなわち、ＤＭＡ部１６は、先ず、ＲＡＭ読出信号ＤＲＤを図３に示すように、バスコントローラ２０のメインバスＢＳ１を介してＲＡＭ１４に供給する。これにより、ＲＡＭ１４は、上記した読み出し開始アドレスからアドレス昇順に１ワード分のプログラムデータ信号を読み出し、これをプログラムデータ信号ＰＰＤとして、図３に示すようにバスコントローラ２０のメインバスＢＳ１を介してＤＭＡ部１６に供給する。
【００５３】
ＤＭＡ部１６は、１ワード分のプログラムデータ信号ＰＰＤを取り込み、これをＦＲＯＭ書込信号ＦＷＲと共に、バスコントローラ２０のメインバスＢＳ１を介してＦＲＯＭ１２に供給する。これにより、ＦＲＯＭ１２は、１ワード分のプログラムデータを格納する。
【００５４】
ＤＭＡ部１６は、図３において、一点鎖線にて囲まれるシーケンスを繰り返し実行することにより、ＲＡＭ１４に格納されているプログラムデータを１ワード分ずつＦＲＯＭ１２に書き込ませる。ここで、ＤＭＡ部１６は、上記のように設定された転送データ量の分だけ、ＲＡＭ１４からＦＲＯＭ１２へのプログラムデータの転送が終了すると、図３に示すように、ＤＭＡ転送終了信号ＥＤを割込検出部１７に供給する。つまり、ＤＭＡ部１６は、ホスト装置から送信されてきた更新用のプログラムデータの全てをＦＲＯＭ１２に書き込んだら、ＤＭＡ転送終了信号ＥＤを割込検出部１７に供給するのである。
【００５５】
割込検出部１７は、ＤＭＡ転送終了信号ＥＤを受けると、図３に示すようにＤＭＡ転送の終了を表す割込信号ＩＮＴをＣＰＵ１０に供給する。
【００５６】
ＣＰＵ１０は、かかる割込信号ＩＮＴに応じて、プログラムデータ読出用のアドレスをＦＲＯＭ１２に対応したアドレスに変換させるようにアドレス変換部１９を制御する。これにより、ＣＰＵ１０は、ＦＲＯＭ１１に格納されているプログラムデータに代えて、ＦＲＯＭ１２に格納されている更新用のプログラムデータに従った制御を実行するようになる。
【００５７】
図３に示す一連の処理により、ホスト装置から送信されてきた更新用のソフトウェアプログラムがＦＲＯＭ１２に書き込まれ、以降、ＣＰＵ１０は当該ＦＲＯＭ１２に書き込まれた更新用のプログラムに基づく制御を行う。すなわち、情報処理装置１００においてプログラムの更新が自動的に為されるのである。
【００５８】
ここで、上記したプログラム更新制御では、図３に示すように、ＤＭＡ部１６によるＲＡＭ１４からＦＲＯＭ１２へのプログラムデータの転送時には、バスコントローラ２０のメインバスＢＳ１及びＢＳ２のうちのＢＳ１のみが使用されている。よって、ＤＭＡ部１６による転送動作時には、メインバスＢＳ２が解放された状態となるので、この間、ＣＰＵ１０又はマスタ周辺装置１８がメインバスＢＳ２を占有した制御処理を並行して実施することが可能となる。
【００５９】
従って、情報処理装置１００によれば、ＣＰＵ１０の使用効率を低下させることなく、プログラムの自動更新を行うことが可能となる。
【００６０】
尚、図３に示されるプログラムの更新制御では、ホスト装置から送信されてきたプログラムデータの全てを一旦、ＲＡＭ１４に格納し、ＲＡＭ１４に格納されているプログラムデータを１ワードずつＦＲＯＭ１２に転送している。しかしながら、ＲＡＭ１４に１ワード分のプログラムデータが書き込まれる度に、１ワード分のプログラムデータをＲＡＭ１４から読み出してＦＲＯＭ１２に書き込むようにしても良い。
【００６１】
図４及び図５は、かかる点に鑑みて為されたプログラム更新制御に基づく情報処理部１２０内での信号シーケンスの他の一例を示すフロー図である。
【００６２】
ＣＰＵ１０は、割込信号ＩＮＴに応じて、先ず、通信部１１０の内蔵レジスタからプログラムデータ信号の読み出しを要求するレジスタ読出要求信号ＲＱ１を、図４に示すようにバスコントローラ２０のメインバスＢＳ１を介してＳＰＩ部１５に供給する。
【００６３】
ＳＰＩ部１５は、レジスタ読出要求信号ＲＱ１に応じてレジスタ読出信号ＲＲＤを、図４に示すように通信部１１０に供給する。
【００６４】
通信部１１０は、レジスタ読出信号ＲＲＤに応じて、内蔵レジスタに格納されているプログラムデータ信号を１ワード分だけ読み出し、１ワード分のプログラムデータ信号ＰＤを、図４に示すようにＳＰＩ部１５に供給する。
【００６５】
ＳＰＩ部１５は、１ワード分のプログラムデータ信号ＰＤを内蔵レジスタに記憶すると共に、ＳＰＩ割込信号ＩＴ２を図４に示すように割込検出部１７に供給する。
【００６６】
割込検出部１７は、ＳＰＩ割込信号ＩＴ２に応じて、通信部１１０から１ワード分のプログラムデータ信号ＰＤの取り込みが完了したことを表す割込信号ＩＮＴを、図４に示すようにＣＰＵ１０に供給する。
【００６７】
ＣＰＵ１０は、この割込信号ＩＮＴに応じて、ＳＰＩ部１５の内蔵レジスタからプログラムデータ信号の読み出しを要求するレジスタ読出要求信号ＲＱ２を、図４に示すようにバスコントローラ２０のメインバスＢＳ１を介してＳＰＩ部１５に供給する。
【００６８】
ＳＰＩ部１５は、レジスタ読出要求信号ＲＱ２に応じて内蔵レジスタに格納されている先頭の１ワード分のプログラムデータを読み出し、これをプログラムデータ信号ＰＤ１として、図４に示すようにバスコントローラ２０のメインバスＢＳ１を介してＣＰＵ１０に供給する。
【００６９】
ＣＰＵ１０は、供給された１ワード分のプログラムデータ信号ＰＤ１を取り込み、これをＲＡＭ書込信号ＲＷＲと共に、図４に示すようにバスコントローラ２０のメインバスＢＳ１を介してＲＡＭ１４に供給する。これにより、ＲＡＭ１４は、１ワード分のプログラムデータ信号ＰＤ１を書き込む。
【００７０】
１ワード分のプログラムデータ信号ＰＤ１がＲＡＭ１４に書き込まれると、ＣＰＵ１０は、ＤＭＡによるデータ転送方法を設定するＤＭＡ設定信号ＤＳを、図４に示すように、バスコントローラ２０のメインバスＢＳ１を介してＤＭＡ部１６に供給する。尚、ＤＭＡ設定信号ＤＳは、例えば、
・転送元のＲＡＭ１４の読み出し開始アドレス
・転送先のＦＲＯＭ１２の書込開始アドレス
・転送データ量
等を表す。
【００７１】
ＤＭＡ部１６は、かかるＤＭＡ設定信号ＤＳに基づきＤＭＡの動作設定を行う。
【００７２】
次に、ＣＰＵ１０は、次の１ワード分のプログラムデータ信号を取り込ませる為のレジスタ読出要求信号ＲＱ１を、図５に示すようにバスコントローラ２０のメインバスＢＳ１を介してＳＰＩ部１５に供給する。
【００７３】
ＳＰＩ部１５は、レジスタ読出要求信号ＲＱ１に応じて、レジスタ読出信号ＲＲＤを、図５に示すように通信部１１０に供給する。
【００７４】
通信部１１０は、レジスタ読出信号ＲＲＤに応じて内蔵レジスタに格納されているプログラムデータ信号を１ワード分だけ読み出し、１ワード分のプログラムデータ信号ＰＤを、図５に示すようにＳＰＩ部１５に供給する。
【００７５】
ＳＰＩ部１５は、１ワード分のプログラムデータ信号ＰＤを内蔵レジスタに記憶すると共に、ＳＰＩ割込信号ＩＴ２を図５に示すように割込検出部１７に供給する。
【００７６】
割込検出部１７は、ＳＰＩ割込信号ＩＴ２に応じて、通信部１１０から１ワード分のプログラムデータ信号ＰＤの取り込みが完了したことを表す割込信号ＩＮＴを、図５に示すようにＣＰＵ１０に供給する。
【００７７】
ＣＰＵ１０は、この割込信号ＩＮＴに応じて、ＳＰＩ部１５の内蔵レジスタからプログラムデータ信号の読み出しを要求するレジスタ読出要求信号ＲＱ２を、図５に示すようにバスコントローラ２０のメインバスＢＳ１を介してＳＰＩ部１５に供給する。
【００７８】
ＳＰＩ部１５は、レジスタ読出要求信号ＲＱ２に応じて、内蔵レジスタに格納されている１ワード分のプログラムデータを読み出し、これをプログラムデータ信号ＰＤ２として、図５に示すようにバスコントローラ２０のメインバスＢＳ１を介してＣＰＵ１０に供給する。この際、ＣＰＵ１０は、供給された１ワード分のプログラムデータ信号ＰＤ２を内蔵レジスタ（図示せぬ）に記憶する。更に、ＳＰＩ部１５は、レジスタ読出要求信号ＲＱ２に応じて、転送タイミング信号ＤＴを図５に示すようにＤＭＡ部１６に供給する。
【００７９】
ＤＭＡ部１６は、転送タイミング信号ＤＴに応じて、ＲＡＭ読出信号ＤＲＤを、図５に示すように、バスコントローラ２０のメインバスＢＳ２を介して、ＲＡＭ１４に供給する。これにより、ＲＡＭ１４は、１ワード分のプログラムデータ信号を読み出し、これをプログラムデータ信号ＰＰＤとして、図５に示すようにバスコントローラ２０のメインバスＢＳ２を介してＤＭＡ部１６に供給する。尚、ＤＭＡ部１６は、供給された１ワード分のプログラムデータ信号ＰＰＤを格納する。
【００８０】
ここで、ＣＰＵ１０は、上記したように、内蔵レジスタに格納されている１ワード分のプログラムデータ信号ＰＤ２をＲＡＭ書込信号ＲＷＲと共に、図５に示すようにバスコントローラ２０のメインバスＢＳ１を介してＲＡＭ１４に供給する。これにより、ＲＡＭ１４は、１ワード分のプログラムデータ信号ＰＤ２を書き込む。
【００８１】
この間、ＤＭＡ部１６は、格納してある１ワード分のプログラムデータ信号ＰＰＤをＦＲＯＭ書込信号ＦＷＲと共に、図５に示すようにバスコントローラ２０のメインバスＢＳ２を介して、ＦＲＯＭ１２に供給する。これにより、ＦＲＯＭ１２は、１ワード分のプログラムデータを格納する。
【００８２】
ＤＭＡ部１６及びＣＰＵ１０は、図５において破線にて囲まれるシーケンスを繰り返し実行することにより、通信部１１０の内蔵レジスタに格納されているプログラムデータを１ワード分ずつＲＡＭ１４に書き込む。そして、ＲＡＭ１４に１ワード分のプログラムデータが書き込まれる度に、ＤＭＡ部１６が１ワード分のプログラムデータをＲＡＭ１４から読み出してＦＲＯＭ１２に書き込む。すなわち、通信部１１０の内蔵レジスタに格納されている１ワード分のプログラムデータをＲＡＭ１４のＮ番地（Ｎは２以上の整数）に格納すると共に、ＲＡＭ１４の（Ｎ−１）番地に格納されているプログラムデータを読み出してＦＲＯＭ１２に書き込む、という動作を繰り返し実行するのである。
【００８３】
ここで、ＤＭＡ部１６は、上記のように設定されている転送データ量の分だけ、ＲＡＭ１４からＦＲＯＭ１２へのプログラムデータの転送が終了すると、図５に示すように、ＤＭＡ転送終了信号ＥＤを割込検出部１７に供給する。つまり、ＤＭＡ部１６は、ホスト装置から送信された更新用のプログラムデータの全てをＦＲＯＭ１２に書き込んだら、ＤＭＡ転送終了信号ＥＤを割込検出部１７に供給するのである。
【００８４】
割込検出部１７は、ＤＭＡ転送終了信号ＥＤを受けると、図５に示すようにＤＭＡ転送の終了を表す割込信号ＩＮＴをＣＰＵ１０に供給する。
【００８５】
ＣＰＵ１０は、かかる割込信号ＩＮＴに応じて、プログラムデータ読出用のアドレスをＦＲＯＭ１２に対応したアドレスに変換させるようにアドレス変換部１９を制御する。これにより、ＣＰＵ１０は、ＦＲＯＭ１１に格納されているプログラムデータに代えてＦＲＯＭ１２に格納されている更新用のプログラムデータに従った制御を実行するようになる。
【００８６】
図４及び図５に示す一連の処理により、ホスト装置から送信されてきた更新用のソフトウェアプログラムがＦＲＯＭ１２に書き込まれ、以降、ＣＰＵ１０は当該ＦＲＯＭ１２に書き込まれた更新用のプログラムによって制御を行う。すなわち、情報処理装置１００においてプログラムの更新が自動的に為される。
【００８７】
ここで、上記したプログラム更新制御では、図５に示すように、ＤＭＡ部１６によるＲＡＭ１４からＦＲＯＭ１２へのプログラムデータの転送はバスコントローラ２０のメインバスＢＳ２を介して実行し、ＣＰＵ１０による通信部１１０からＲＡＭ１４へのプログラムデータの転送はメインバスＢＳ１を介して実行する。よって、図５において、ＤＭＡ部１６がＦＲＯＭ書込信号ＦＷＲ及び１ワード分の更新用のプログラムデータ信号ＰＰＤをメインバスＢＳ２を介してＦＲＯＭ１２に供給している間に、ＣＰＵ１０がＲＡＭ書込信号ＲＷＲ及び１ワード分の更新用のプログラムデータ信号ＰＤ２をメインバスＢＳ１を介してＲＡＭ１４に供給することが可能となる。
【００８８】
従って、図４及び図５に示されるプログラム更新制御では、ＣＰＵ１０及びＤＭＡ部１６の同時アクセスが為されるので、ＣＰＵ１０の使用効率を低下させることなく、短時間でプログラムの自動更新を行うことが可能となる。
【００８９】
尚、上記実施例では、初期設定時にはＦＲＯＭ１１にプログラムを格納しておき、ＦＲＯＭ１２に更新用のプログラムを格納するようにしているが、初期設定時にはＦＲＯＭ１２にプログラムを格納しておき、ＦＲＯＭ１１に更新用のプログラムを格納するようにしても良い。
【００９０】
また、上記実施例では、情報処理部１２０と通信部１１０とを夫々個別の半導体チップに形成するようにしているが、１つの半導体チップに情報処理部１２０及び通信部１１０を形成するようにしても良い。
【００９１】
また、上記実施例では、ＳＰＩによるシリアル通信方式を例に採りデータインタフェイスとしてＳＰＩ部１５を用いた情報処理装置を記載しているが、Ｉ２ＣやＵＡＲＴなどのシリアル通信方式を用いたＩ２Ｃ部或いはＵＡＲＴ部に置き換えても良い。
【００９２】
また、上記実施例では、通信部１１０から情報処理部１２０へのプログラムデータの転送をＣＰＵ１０によって行うようにしているが、新たにＤＭＡ部を追加し、ＣＰＵ１０に代えて当該追加したＤＭＡ部によって、通信部１１０から情報処理部１２０へのプログラムデータの転送を行うようにしても良い。
【００９３】
また、上記実施例では、２つの独立したメインバスによる構成の情報処理装置の制御方法について記載しているが、さらにマスタ周辺装置１８と周辺装置１３との処理も同時に行うためにメインバスを３つとする構成としても良い。
【００９４】
また、図１に示す実施例では、通信割込信号ＩＴ１、ＳＰＩ割込信号ＩＴ２及びＤＭＡ転送終了信号ＥＤを割込検出部１７を中継することにより、１つの割込信号ＩＮＴとしてＣＰＵ１０に供給するようにしている。しかしながら、割込検出部１７を介さずに、ＣＰＵ１０が通信割込信号ＩＴ１、ＳＰＩ割込信号ＩＴ２及びＤＭＡ転送終了信号ＥＤを夫々直に受け付けるようにしても良い。
【００９５】
また、上記実施例において、プログラムデータを格納するメモリとして２つのフラッシュＲＯＭ（１１、１２）を採用しているが、フラッシュＲＯＭに限定されない。すなわち、プログラムデータを格納するメモリとしては、ＰＲＯＭ、ＥＰＲＯＭ等の電源遮断後もデータを保持しておくことが可能な不揮発性メモリであれば良いのである。
【００９６】
要するに、情報処理装置１００としては、プログラムデータが記憶されている第１の不揮発性メモリ（１１）、プログラムデータに従った制御を実行するＣＰＵ（１０）、ＲＡＭ（１４）、ＤＭＡ部（１６）、第２の不揮発性メモリ（１２）、互いに独立した第１及び第２のバス（ＢＳ１、ＢＳ２）、更新用プログラムデータを受信した場合に割込信号（ＩＴ１）をＣＰＵに供給する通信部（１１０）を有するものであれば良い。この際、ＣＰＵは、割込信号に応じて、通信部が受信した更新用プログラムデータを第１又は第２のバスを介してＲＡＭに書き込み、ＤＭＡ部は、ＲＡＭに書き込まれた更新用プログラムデータを第１又は第２のバスを介して第２の不揮発性メモリに書き込む。
【符号の説明】
【００９７】
１０            ＣＰＵ
１１、１２      ＦＲＯＭ
１４            ＲＡＭ
１６            ＤＭＡ部
２０            バスコントローラ
１００          情報処理装置
１１０          通信部
１２０          情報処理部
ＢＳ１、ＢＳ２  メインバス
【図１】
0006549454.tif 000002
【図２】
0006549454.tif 000003
【図３】
0006549454.tif 000004
【図４】
0006549454.tif 000005
【図５】
0006549454.tif 000006