(57)【要約】【課題】システム起動は、フラッシュメモリからランダムアクセス可能な外部メモリへの全プログラム転送完了後に制約されるので、多くの時間を要する。【解決手段】電源投入時にフラッシュメモリ２から読み出して内部メモリ８に格納した初期化プログラムに従ってシステムの初期化を行い、外部メモリ３へのアクセスを可能とする。ＤＭＡ制御部１０はフラッシュメモリ２からシステム起動プログラムを読み出しダイレクトに外部メモリ３へ転送する。メモリ管理部９はＣＰＵ５が外部メモリ３からプログラムを読み出す際にプログラム転送完了を管理する。ＣＰＵ５は、ＤＭＡ制御部１０によるシステム起動用のプログラムの転送が完了したときに、外部メモリ３から読み出したシステム起動用のプログラムに従ってシステムの起動を行う一方、同時並行的に、ＤＭＡ制御部１０は、フラッシュメモリ２からシステム制御用のプログラムを読み出し外部メモリ３へ転送する。【選択図】図１
2008065434.tif 000002
【特許請求の範囲】
【請求項１】
各々複数のページから構成されるメモリブロックを複数含み前記各メモリブロックの順序づけられた記録領域にプログラムが格納されている第１の記録領域と、前記メモリページより小さい単位でのランダムアクセスが可能な第２の記録領域との間を中継し、前記第１の記録領域からシーケンシャルに前記プログラムを読み出すプログラム起動制御装置であって、
前記第１の記録領域に格納されたシステム初期化に必要な初期化プログラムを内部メモリに読み出し、ＣＰＵにより前記初期化プログラムを実行させ、前記システムおよび前記第２の記録領域の初期化後、前記ＣＰＵを介することなくプログラム転送を行うＤＭＡ制御部により、システム制御用のプログラムを前記第１の記録領域から前記第２の記録領域へ転送し、前記ＣＰＵは、前記第２の記録領域より前記ＣＰＵが読み出すプログラムの転送完了有無を管理するメモリ管理部を用いて前記プログラムを読み出し、システム制御を行うように構成されているプログラム起動制御装置。
【請求項２】
各々複数のページから構成されるメモリブロックを複数含み前記各メモリブロックの順序づけられた記録領域にプログラムが格納されている第１の記録領域と、前記メモリページより小さい単位でのランダムアクセスが可能な第２の記録領域との間を中継し、前記第１の記録領域からシーケンシャルに前記プログラムを読み出すプログラム起動制御装置であって、
電源投入時に前記第１の記録領域から読み出されたシステム初期化に必要な初期化プログラムを格納する内部メモリと、
前記内部メモリから前記初期化プログラムを読み出し、前記初期化プログラムに従ってシステムの初期化を行って、前記第２の記録領域へのアクセスを可能とするＣＰＵと、
前記システムの初期化後に、前記第１の記録領域から必要最小限のシステム起動用のプログラムを１ページ単位で繰り返し読み出し前記ＣＰＵを介することなく前記第２の記録領域へ転送し、必要ページ分のシステム起動用のプログラムの転送完了まで前記１ページ単位の読み出しを繰り返すＤＭＡ制御部と、
前記第１の記録領域から前記第２の記録領域へ転送されたプログラムを前記ＣＰＵが前記第２の記録領域から読み出す際に、該当するプログラムが前記第２の記録領域に転送完了しているかを管理するメモリ管理部とを備え、
前記ＣＰＵは、前記ＤＭＡ制御部による必要ページ分のシステム起動用のプログラムの転送が完了したときに、前記メモリ管理部を用いて前記第２の記録領域から前記システム起動用のプログラムを読み出し、読み出したシステム起動用のプログラムに従ってシステムの起動を行う一方、
前記ＤＭＡ制御部は、前記ＣＰＵのシステム起動およびそれに引き続くシステム動作と同時並行的に、前記第１の記録領域からシステム制御用のプログラムを１ページ単位で繰り返し読み出し前記ＣＰＵを介することなく前記第２の記録領域へ転送し、すべてのシステム制御用のプログラムの転送完了まで前記１ページ単位の読み出しを繰り返すように構成されているプログラム起動制御装置。
【請求項３】
前記ＣＰＵは、前記ＤＭＡ制御部による前記第１の記録領域から前記第２の記録領域へのプログラム転送中に、前記第２の記録領域へ転送されたプログラムを読み出し、システムの制御を行う請求項１または請求項２に記載のプログラム起動制御装置。
【請求項４】
前記メモリ管理部は、前記並列処理において、前記ＣＰＵが前記第２の記録領域へのプログラム転送が完了していない領域を読み出そうとした場合に、該当する領域のプログラムの転送が完了するまで、前記ＣＰＵの読み出しを待たせる請求項３に記載のプログラム起動制御装置。
【請求項５】
前記ＤＭＡ制御部は複数のページ単位でプログラムの転送を行い、
転送するプログラムに対して１ページ単位でＥＣＣ演算を行うＥＣＣ演算部をさらに備えた請求項１または請求項２に記載のプログラム起動制御装置。
【請求項６】
前記ＥＣＣ演算部は１ビットエラー発生時に１ビットエラー訂正し、前記ＤＭＡ制御部は１ページ分以上のバッファを備え、前記第２の記録領域に前記ＥＣＣ演算部により訂正された後のデータを転送する請求項５に記載のプログラム起動制御装置。
【請求項７】
前記１ビットエラーの発生を前記ＣＰＵおよび前記メモリ管理部へ通知するように構成されている請求項６に記載のプログラム起動制御装置。
【請求項８】
前記１ビットエラーの通知により、前記第２の記録領域内の訂正後のデータを含む１ブロック分のデータを前記第１の記録領域内の訂正前の領域とは異なる領域へ書き込み、次回の読み出し時には前記訂正後のデータを含むデータの書き込みを行った領域を読み出す請求項７に記載のプログラム起動制御装置。
【請求項９】
前記書き込み動作は、前記エラー発生の通知後に書き込み動作する請求項８に記載のプログラム起動制御装置。
【請求項１０】
前記書き込み動作は、前記エラー発生の通知されたセクタを記録しておくことにより、システムのアイドル期間に実行される請求項８に記載のプログラム起動制御装置。
【請求項１１】
前記書き込み動作は、前記エラー発生の通知されたセクタを記録しておくことにより、システムの電源ＯＦＦシーケンス時に実行される請求項８に記載のプログラム起動制御装置。
【請求項１２】
前記メモリ管理部は、プログラム転送を行ったアドレスと前記ＣＰＵが読み出すアドレスとを管理する請求項４に記載のプログラム起動制御装置。
【請求項１３】
前記メモリ管理部は、前記ＣＰＵの読み出しを待たせる場合に前記ＤＭＡ制御部へ通知を行い、ページ単位で転送し、前記ＣＰＵが読み出すページのプログラム転送が完了したことを管理する請求項４に記載のプログラム起動制御装置。
【請求項１４】
前記メモリ管理部は、プログラム転送を行ったアドレスと前記ＣＰＵが読み出すアドレスとを、ハードウェアを用いずソフトウェアで管理する請求項４に記載のプログラム起動制御装置。
【請求項１５】
前記メモリ管理部は、前記ＣＰＵの読み出しを待たせる場合に前記ＤＭＡ制御部へ通知を行い、ページ単位で転送を中断し、前記ＣＰＵが読み出すアドレスに該当する前記第１の記録領域のプログラムの転送を優先的に行う請求項４に記載のプログラム起動制御装置。
【請求項１６】
前記第１の記録領域から前記第２の記録領域へ転送するプログラムは任意の単位に分かれており、システムの処理の優先順位に基づき、優先順位の高い処理に必要なプログラムから転送する請求項３に記載のプログラム起動制御装置。
【請求項１７】
請求項１から請求項１７までのいずれかに記載のプログラム起動制御装置と、さらに少なくともイメージセンサと、画像表示モニタとを搭載した撮像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリなどの第１の記録領域と、外部メモリなどの第２の記録領域との間を中継し、第１の記録領域からシーケンシャルにプログラムを読み出すプログラム起動制御装置に関する。
【背景技術】
【０００２】
プログラムなどの記録装置として多用されているフラッシュメモリには、大別してＮＯＲ型とＮＡＮＤ型とがある。ＮＯＲ型のフラッシュメモリは、１バイト単位でのランダムアクセスが可能であるが、ＮＡＮＤ型に比べると高価であり、集積度が低い。一方、ＮＡＮＤ型のフラッシュメモリは、ＮＯＲ型に比べて安価で集積度は高いが、ランダムアクセスの最小単位がＮＯＲ型よりも大きく、ランダムアクセス読み出しが低速である。このため、記録領域に対してランダムアクセスが発生するプログラムは、ＮＡＮＤ型のフラッシュメモリの記録領域に格納された状態から直接に実行することはできない。
【０００３】
この不都合を回避するために、ＮＡＮＤ型のフラッシュメモリに格納されたプログラムを、１バイト単位でランダムアクセスが可能な他のメモリにすべて転送した後に実行する方法が示されている（例えば、特許文献１参照）。
【特許文献１】特開２００２−２７８７８１号公報（第４−７頁、第１−３図）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ＮＡＮＤ型のフラッシュメモリに格納されたプログラムを使用する場合、そのプログラムをランダムアクセス可能なＲＡＭ領域に転送し、転送完了後にＣＰＵがＲＡＭ領域よりプログラムの読み出しを開始し、システム起動を行うという手法がある。しかし、この手法の場合、プログラムすべてを転送した後でないとシステム起動ができないため、システム起動に多くの時間を要してしまう。
【０００５】
本発明は、このような事情に鑑みて創作したものであり、システムの起動時間を短縮し、プログラムサイズが増加した場合にも起動時間を最小限とするプログラム起動制御装置を提供することを目的としている。
【課題を解決するための手段】
【０００６】
本発明によるプログラム起動制御装置は、
各々複数のページから構成されるメモリブロックを複数含み前記各メモリブロックの順序づけられた記録領域にプログラムが格納されている第１の記録領域と、前記メモリページより小さい単位でのランダムアクセスが可能な第２の記録領域との間を中継し、前記第１の記録領域からシーケンシャルに前記プログラムを読み出すプログラム起動制御装置であって、
前記第１の記録領域に格納されたシステム初期化に必要な初期化プログラムを内部メモリに読み出し、ＣＰＵにより前記初期化プログラムを実行させ、前記システムおよび前記第２の記録領域の初期化後、前記ＣＰＵを介することなくプログラム転送を行うＤＭＡ制御部により、システム制御用のプログラムを前記第１の記録領域から前記第２の記録領域へ転送し、前記ＣＰＵは、前記第２の記録領域より前記ＣＰＵが読み出すプログラムの転送完了有無を管理するメモリ管理部を用いて前記プログラムを読み出し、システム制御を行うように構成されていることを特徴とする。
【０００７】
この構成においては、動作の初期時に、第１の記録領域から初期化プログラムが読み出され内部メモリに格納される。ＣＰＵは、内部メモリから読み出した初期化プログラムに従ってシステムの初期化を行う。これによって、第２の記録領域へのアクセスが可能となる。次いで、ＤＭＡ制御部は、第１の記録領域からシステム起動用のプログラムを読み出し、ＣＰＵを介することなくダイレクトに第２の記録領域へ転送する。メモリ管理部は、このときのプログラム転送を監視する。システム起動用のプログラムの転送が完了すると、ＣＰＵは、メモリ管理部を用いて第２の記録領域から読み出したプログラムに従ってシステムの起動を行う。ＤＭＡ制御部は、このＣＰＵによるシステム起動用のプログラムの読み出し・システム動作と同時並行的に、第１の記録領域からシステム制御用のプログラムを１ページ単位で繰り返し読み出し、ＣＰＵを介することなくダイレクトに第２の記録領域へ転送する。このように、システム起動動作とプログラム読み出し動作とを同時並行的に処理するので、システムの起動時間が短縮化され、プログラムサイズが増加した場合にも起動時間を最小限とすることが可能になる。
【０００８】
より具体的レベルで展開すると、本発明によるプログラム起動制御装置は、
各々複数のページから構成されるメモリブロックを複数含み前記各メモリブロックの順序づけられた記録領域にプログラムが格納されている第１の記録領域と、前記メモリページより小さい単位でのランダムアクセスが可能な第２の記録領域との間を中継し、前記第１の記録領域からシーケンシャルに前記プログラムを読み出すプログラム起動制御装置であって、
電源投入時に前記第１の記録領域から読み出されたシステム初期化に必要な初期化プログラムを格納する内部メモリと、
前記内部メモリから前記初期化プログラムを読み出し、前記初期化プログラムに従ってシステムの初期化を行って、前記第２の記録領域へのアクセスを可能とするＣＰＵと、
前記システムの初期化後に、前記第１の記録領域から必要最小限のシステム起動用のプログラムを１ページ単位で繰り返し読み出し前記ＣＰＵを介することなく前記第２の記録領域へ転送し、必要ページ分のシステム起動用のプログラムの転送完了まで前記１ページ単位の読み出しを繰り返すＤＭＡ制御部と、
前記第１の記録領域から前記第２の記録領域へ転送されたプログラムを前記ＣＰＵが前記第２の記録領域から読み出す際に、該当するプログラムが前記第２の記録領域に転送完了しているかを管理するメモリ管理部とを備え、
前記ＣＰＵは、前記ＤＭＡ制御部による必要ページ分のシステム起動用のプログラムの転送が完了したときに、前記メモリ管理部を用いて前記第２の記録領域から前記システム起動用のプログラムを読み出し、読み出したシステム起動用のプログラムに従ってシステムの起動を行う一方、
前記ＤＭＡ制御部は、前記ＣＰＵのシステム起動およびそれに引き続くシステム動作と同時並行的に、前記第１の記録領域からシステム制御用のプログラムを１ページ単位で繰り返し読み出し前記ＣＰＵを介することなく前記第２の記録領域へ転送し、すべてのシステム制御用のプログラムの転送完了まで前記１ページ単位の読み出しを繰り返すように構成されている。
【０００９】
この構成において、電源を投入すると、第１の記録領域から初期化プログラムが読み出され内部メモリに格納される。ＣＰＵは、内部メモリから読み出した初期化プログラムに従ってシステムの初期化を行う。これによって、第２の記録領域へのアクセスが可能となる。次いで、ＤＭＡ制御部は、第１の記録領域から必要最小限のシステム起動用のプログラムを１ページ単位で繰り返し読み出し、ＣＰＵを介することなくダイレクトに第２の記録領域へ転送する。そして、必要ページ分のシステム起動用のプログラムの転送完了まで１ページ単位の読み出しを繰り返す。メモリ管理部は、このときのプログラム転送を監視する。
【００１０】
必要ページ分のシステム起動用のプログラムの転送が完了すると、ＣＰＵは、メモリ管理部を用いて第２の記録領域から読み出したシステム起動用のプログラムに従ってシステムの起動を行う。ＤＭＡ制御部は、このＣＰＵによるシステム起動用のプログラムの読み出し・システム動作と同時並行的に、第１の記録領域からシステム制御用のプログラムを１ページ単位で繰り返し読み出し、ＣＰＵを介することなくダイレクトに第２の記録領域へ転送し、すべてのシステム制御用のプログラムの転送完了まで１ページ単位の読み出しを繰り返す。
【００１１】
このように、システム起動動作とプログラム読み出し動作とを同時並行的に処理するので、システムの起動時間が短縮化される。
【００１２】
上記構成のプログラム起動制御装置においては、以下のような各種の態様がある。
【００１３】
前記ＣＰＵとしては、前記ＤＭＡ制御部による前記第１の記録領域から前記第２の記録領域へのプログラム転送中に、前記第２の記録領域へ転送されたプログラムを読み出し、システムの制御を行うように構成する（同時並行処理）。
【００１４】
また、前記メモリ管理部としては、前記並列処理において、前記ＣＰＵが前記第２の記録領域へのプログラム転送が完了していない領域を読み出そうとした場合に、該当する領域のプログラムの転送が完了するまで、前記ＣＰＵの読み出しを待たせるように構成する。
【００１５】
また、前記ＤＭＡ制御部としては、複数のページ単位でプログラムの転送を行い、転送するプログラムに対して１ページ単位でＥＣＣ演算を行うＥＣＣ演算部をさらに備えることが好ましい。
【００１６】
また、前記ＥＣＣ演算部としては、１ビットエラー発生時に１ビットエラー訂正し、前記ＤＭＡ制御部は、１ページ分以上のバッファを備え、前記第２の記録領域に前記ＥＣＣ演算部により訂正された後のデータを転送するように構成することが好ましい。
【００１７】
また、前記１ビットエラーの発生を前記ＣＰＵおよび前記メモリ管理部へ通知するように構成することが好ましい。
【００１８】
また、前記１ビットエラーの通知により、前記第２の記録領域内の訂正後のデータを含む１ブロック分のデータを前記第１の記録領域内の訂正前の領域とは異なる領域へ書き込み、次回の読み出し時には前記訂正後のデータを含むデータの書き込みを行った領域を読み出すように構成することが好ましい。
【００１９】
また、前記書き込み動作は、前記エラー発生の通知後に書き込み動作するという構成が好ましい。
【００２０】
また、前記書き込み動作は、前記エラー発生の通知されたセクタを記録しておくことにより、システムのアイドル期間に実行されるという構成が好ましい。
【００２１】
また、前記書き込み動作は、前記エラー発生の通知されたセクタを記録しておくことにより、システムの電源ＯＦＦシーケンス時に実行されるという構成が好ましい。
【００２２】
また、前記メモリ管理部としては、プログラム転送を行ったアドレスと前記ＣＰＵが読み出すアドレスとを管理するという構成が好ましい。
【００２３】
また、前記メモリ管理部としては、前記ＣＰＵの読み出しを待たせる場合に前記ＤＭＡ制御部へ通知を行い、ページ単位で転送し、前記ＣＰＵが読み出すページのプログラム転送が完了したことを管理するという構成が好ましい。
【００２４】
また、前記メモリ管理部としては、プログラム転送を行ったアドレスと前記ＣＰＵが読み出すアドレスとを、ハードウェアを用いずソフトウェアで管理するという構成が好ましい。
【００２５】
また、前記メモリ管理部としては、前記ＣＰＵの読み出しを待たせる場合に前記ＤＭＡ制御部へ通知を行い、ページ単位で転送を中断し、前記ＣＰＵが読み出すアドレスに該当する前記第１の記録領域のプログラムの転送を優先的に行うことが好ましい。
【００２６】
また、前記第１の記録領域から前記第２の記録領域へ転送するプログラムは任意の単位に分かれており、システムの処理の優先順位に基づき、優先順位の高い処理に必要なプログラムから転送するという構成が好ましい。
【００２７】
また、上記いずれかのプログラム起動制御装置と、さらに少なくともイメージセンサと、画像表示モニタとを搭載した撮像装置の構成も有効である。
【発明の効果】
【００２８】
本発明によれば、システム起動動作とプログラム読み出し動作とを同時並行的に処理するので、システムの起動時間を短縮化でき、プログラムサイズが増加した場合にも起動時間を最小限とすることができる。また、第１の記録領域の内部のブロックの一部が破損しプログラムが正常に読み出せなくなった場合でも、他のブロックより該当する正常なプログラムを読み出すことが可能であるため、リスク削減にも有効である。
【発明を実施するための最良の形態】
【００２９】
以下、本発明にかかわるプログラム起動制御装置の実施の形態を図面を用いて詳細に説明する。
【００３０】
図１は、本発明の実施の形態におけるプログラム起動制御装置１と、フラッシュメモリ２および外部メモリ３の構成を示すブロック図である。
【００３１】
フラッシュメモリ２は、１ブロックが複数のページで構成された複数のブロックで構成され、ページ単位のアクセスが可能であるが、１バイト単位のランダムアクセスは直接にはできないメモリであり、第１の記録領域を担当する。外部メモリ３は、１バイト単位でランダムアクセスが可能なメモリであり、第２の記録領域を担当する。
【００３２】
プログラム起動制御装置１は、フラッシュメモリ２のインタフェースの制御を行うフラッシュコントローラ４と、システムを制御するＣＰＵ５とで構成されている。フラッシュコントローラ４は、フラッシュＩ／Ｆ（インターフェース）６と、ＥＣＣ演算部７と、小容量の内部メモリ８と、メモリ管理部９と、ＤＭＡ制御部１０とから構成されている。フラッシュＩ／Ｆ６は、フラッシュメモリ２のインタフェースに仕様に合わせた入出力制御を行う。ＥＣＣ演算部７は、フラッシュメモリ２に対する読み出し・書き込みデータのエラーチェックを行う。内部メモリ８は、フラッシュＩ／Ｆ６およびＣＰＵ５よりアクセス可能であり、１バイト単位でランダムアクセスが可能である。メモリ管理部９は、フラッシュメモリ２から外部メモリ３へ転送されたプログラムを外部メモリ３よりＣＰＵ５が読み出す際に、該当するプログラムが外部メモリ３に転送完了しているかを管理する。ＤＭＡ制御部１０は、ＣＰＵ５を介さずにフラッシュメモリ２から外部メモリ３へダイレクトにプログラムを転送する。
【００３３】
なお、ＥＣＣ演算部７の機能をＣＰＵ５にもたせるように構成してもよい。また、内部でＥＣＣ演算を行うフラッシュメモリ２を使用する場合には、ＥＣＣ演算部７はなくてもよい。また、フラッシュメモリ２から外部メモリ３へプログラムを転送完了したかの管理については、ＣＰＵ５によりソフトウェア処理してもよい。
【００３４】
ここで比較対照のために、あらかじめ、従来の技術におけるシステム起動の動作を図９のフローチャートを用いて説明する。
【００３５】
電源が投入されると、ステップＳ８１において、フラッシュメモリ２から内部メモリ８へシステムの初期化プログラム（ブートプログラム）を読み出す。次いでステップＳ８２において、ＣＰＵ５は内部メモリ８から初期化プログラムを読み出し、初期化プログラムの内容に従ってシステムの初期化を行う。次いでステップＳ８３、ステップＳ８４において、システム起動用のプログラムをフラッシュメモリ２から外部メモリ３へ１ページ単位にすべて転送するまで繰り返す。そして、全プログラムがフラッシュメモリ２から外部メモリ３へ転送されると、ステップＳ８５において、ＣＰＵ５は外部メモリ３よりプログラムを読み出し、読み出したプログラムに従ってシステムの起動を行う。次いでステップＳ８６において、システム動作を行う。
【００３６】
図２は本発明の実施の形態におけるシステム起動の動作を示すフローチャートである。
【００３７】
電源が投入されると、ステップＳ１において、フラッシュメモリ２からシステムの初期化プログラム（ブートプログラム）を１ページ単位で読み出し、内部メモリ８に格納する。詳しくは、フラッシュコントローラ４が動作し、フラッシュＩ／Ｆ６を介してフラッシュメモリ２へ定められたコマンドを発行し、フラッシュメモリ２から初期化プログラムを読み出し、読み出した初期化プログラムを内部メモリ８へ格納する。このとき、ＥＣＣ演算部７によって、読み出した初期化プログラムのデータに誤りがないかのＥＣＣ演算を行い、誤りがあった場合は、誤りを修正し、誤りを修正できない場合は、誤りが発生したことを外部へ出力する。
【００３８】
次いでステップＳ２において、フラッシュコントローラ４はＣＰＵ５のリセットを解除し、ＣＰＵ５は内部メモリ８から初期化プログラムを読み出し、初期化プログラムの内容に従ってシステムの初期化を行う。これによって、外部メモリ３へのアクセスが可能となる。
【００３９】
次いでステップＳ３、ステップＳ４において、ＤＭＡ制御部１０は、フラッシュＩ／Ｆ６を介してフラッシュメモリ２よりシステムを起動する上で必要最小限のシステム起動用のプログラムを１ページ単位で読み出し、外部メモリ３へ転送する。この必要最小限のシステム起動用のプログラムの転送が完了するまで繰り返す。このとき、メモリ管理部９は、転送されたシステム起動用のプログラムが外部メモリ３における転送対象領域に置かれていることの管理を行う。また、プログラム転送時にはＥＣＣ演算部７も動作し、プログラム転送中にデータ誤りが発生した場合は、ＤＭＡ制御部１０に通知し、ＤＭＡ制御部１０内のデータを修正したデータを外部メモリ３に転送する。なお、ＥＣＣ演算部７は、データ誤りが発生した場合は、ＤＭＡ制御部１０とＣＰＵ５へ通知し、通知を受けたＣＰＵ５は外部メモリ３へ転送した誤りの含まれたデータを修正するようにしてもよい。
【００４０】
そして、システムを起動する上で必要最小限のシステム起動用のプログラムがフラッシュメモリ２から外部メモリ３へ転送されると、ステップＳ５において、ＣＰＵ５は外部メモリ３よりシステム起動用のプログラムを読み出し、読み出したプログラムに従ってシステムの起動を行う。
【００４１】
次いでステップＳ６において、ＣＰＵ５は外部メモリ３よりシステム制御用のプログラムを読み出し、システム動作を行う。システム制御用のプログラムを読み出す時、読み出すシステム制御用のプログラムが外部メモリ３に転送完了されているかをメモリ管理部９が確認し、もし該当するプログラムが転送されていなければ、ＣＰＵ５の読み出しを該当するプログラムが外部メモリ３へ転送されるまで待たせ、転送完了後にプログラムの読み出し処理を行う。
【００４２】
ステップＳ５、ステップＳ６と並行する状態で、ステップＳ７、ステップＳ８において、ＤＭＡ制御部１０は、フラッシュメモリ２からフラッシュＩ／Ｆ６を介してシステム制御用のプログラムを１ページ単位で外部メモリ３へ転送する処理を、すべてのシステム制御用のプログラムの転送が完了するまで繰り返す。このとき、ＥＣＣ演算部７でデータ誤りがないかを確認しながら転送を行うとともに、メモリ管理部９は転送された領域の管理情報を更新する。
【００４３】
なお、ステップＳ２において、システム起動までの処理を行うことが可能であれば、ステップＳ３、ステップＳ４を飛ばしてステップＳ５の処理を行うことも可能である。
【００４４】
図３はシステム起動までの時間を表しており、本発明の実施の形態では、システムを起動する上で必要最小限のシステム起動用のプログラムを読み出した後にシステムを起動するため、従来技術に比べて、起動時間の短縮化を図ることが可能である。
【００４５】
具体例として、カメラのシステム起動について、図４、図５のフローチャートを参照して説明する。
【００４６】
ステップＳ１１において、フラッシュＩ／Ｆ６を介してフラッシュメモリ２から初期化プログラム（ブートプログラム）を１ページ単位で読み出し、ＥＣＣ演算部７でデータ誤りがないかを確認しつつ、内部メモリ８へ格納する。
【００４７】
次いでステップＳ１２において、フラッシュコントローラ４はＣＰＵ５のリセットを解除し、ＣＰＵ５は内部メモリ８から初期化プログラムを読み出し、初期化プログラムの内容に従ってシステムの初期化を行う。これによって、外部メモリ３へのアクセスが可能となる。
【００４８】
次いでステップＳ１３，Ｓ１４において、ＤＭＡ制御部１０は、フラッシュＩ／Ｆ６を介してフラッシュメモリ２よりシステムを起動する上で必要最小限のシステム起動用のプログラム（周辺回路の制御プログラムやカメラモードを認識するプログラム）を１ページ単位で読み出し、外部メモリ３へ転送する。この必要最小限のシステム起動用のプログラムの転送が完了するまで繰り返す。このとき、メモリ管理部９は、転送されたシステム起動用のプログラムが外部メモリ３における転送対象領域に置かれていることの管理を行う。また、プログラム転送時にはＥＣＣ演算部７も動作し、プログラム転送中にデータ誤りが発生した場合は、ＤＭＡ制御部１０に通知し、ＤＭＡ制御部１０内のデータを修正したプログラムを外部メモリ３に転送する。
【００４９】
次いでステップＳ１５において、ＣＰＵ５は外部メモリ３よりシステム起動用のプログラム（周辺回路の制御プログラムやカメラモードを認識するプログラム）を読み出し、読み出したシステム起動用のプログラムに従ってシステムの起動を行う。
【００５０】
次いでステップＳ１６において、カメラモードの情報を判断し、以降は、ステップＳ１７の記録モード処理とステップＳ１８の再生モード処理のいずれかに処理が分かれる。
【００５１】
記録モード処理の場合は、ステップＳ２１〜Ｓ２７が実行される。
【００５２】
すなわち、ステップＳ２１において、システムすべてのプログラムを記録モードで必要なプログラムより読み出すことを通知する。
【００５３】
次いでステップＳ２２において、ＣＰＵ５が外部メモリ３より記録モード用のプログラムを読み出し、記録モード制御を行う。
【００５４】
次いでステップＳ２３において、すべてのプログラムの読み出しが完了するまで、フラッシュＩ／Ｆ６を介してフラッシュメモリ２からプログラムを１ページ単位で読み出し、ＥＣＣ演算部７で誤りがないかを確認しながら、ＤＭＡ制御部１０によって読み出した該当ページ分のプログラムを外部メモリ３へダイレクトに転送格納する。
【００５５】
次いでステップＳ２４，Ｓ２５において、フラッシュＩ／Ｆ６を介してフラッシュメモリ２からすべてのプログラム内より記録モード用のプログラムを１ページ単位で読み出し、ＥＣＣ演算部７で誤りがないかを確認しながら、ＤＭＡ制御部１０によって読み出した該当ページ分のプログラムを外部メモリ３へダイレクトに転送格納する。
【００５６】
次いでステップＳ２６，Ｓ２７において、フラッシュＩ／Ｆ６を介してフラッシュメモリ２からすべてのプログラム内より再生モード用のプログラムを１ページ単位で読み出し、ＥＣＣ演算部７で誤りがないかを確認しながら、ＤＭＡ制御部１０によって読み出した該当ページ分のプログラムを外部メモリ３へダイレクトに転送格納し、すべてのプログラムをシステム動作を実行する。
【００５７】
一方、再生モード処理の場合は、ステップＳ３１〜Ｓ３７が実行される。
【００５８】
すなわち、ステップＳ３１において、システムすべてのプログラムを再生モードで必要なプログラムより読み出すことを通知する。
【００５９】
次いでステップＳ３２において、ＣＰＵ５が外部メモリ３より再生モード用のプログラムを読み出し、再生モード制御を行う。
【００６０】
次いでステップＳ３３において、すべてのプログラムの読み出しが完了するまで、フラッシュＩ／Ｆ６を介してフラッシュメモリ２からプログラムを１ページ単位で読み出し、ＥＣＣ演算部７で誤りがないかを確認しながら、ＤＭＡ制御部１０によって読み出した該当ページ分のプログラムを外部メモリ３へダイレクトに転送格納する。
【００６１】
次いでステップＳ３４，Ｓ３５において、フラッシュＩ／Ｆ６を介してフラッシュメモリ２からすべてのプログラム内より再生モード用のプログラムを１ページ単位で読み出し、ＥＣＣ演算部７で誤りがないかを確認しながら、ＤＭＡ制御部１０によって読み出した該当ページ分のプログラムを外部メモリ３へダイレクトに転送格納する。
【００６２】
次いでステップＳ３６，Ｓ３７において、フラッシュＩ／Ｆ６を介してフラッシュメモリ２からすべてのプログラム内より記録モード用のプログラムを１ページ単位で読み出し、ＥＣＣ演算部７で誤りがないかを確認しながら、ＤＭＡ制御部１０によって読み出した該当ページ分のプログラムを外部メモリ３へダイレクトに転送格納することで、すべてのプログラムをシステム動作を実行する。
【００６３】
プログラム転送中にＥＣＣエラーが発生したときの動作フローを図６、図７を参照して説明する。
【００６４】
図６はプログラム読み出しについてのエラーが発生しなかった場合と発生した場合を示している。エラーが発生した場合は、エラーを修正し、修正したデータを外部メモリ３へ再送する。
【００６５】
図７のフローチャートにおいて、まずステップＳ４１において、使用するプログラムが含まれているＮページ分のプログラムの読み出しが完了するまで、ステップＳ４２以降の処理を行う。
【００６６】
ステップＳ４２において、１ページ分のプログラムをフラッシュメモリ２より読み出し、外部メモリ３へ転送する。
【００６７】
次いでステップＳ４３において、ＥＣＣ演算部７によってエラーが発生しているか否かを確認する。
【００６８】
エラーが発生した場合には、次いでステップＳ４４において、エラー情報を基にデータを修正し、外部メモリ３へ転送する。
【００６９】
図８はエラー発生時に、修正したデータを書き込み、次回から修正したデータを読み出す処理を行うための書き込み処理の動作を示すフローチャートである。エラーが発生したページはフラッシュメモリ２内のデータが破損していることから、フラッシュメモリ２のスペア領域へ修正したデータを書き込み、次回からの読み出しを修正したデータが格納されている領域から読み出す。
【００７０】
ステップＳ５１からステップＳ５５は、プログラムの書き込みを読み出し最中に行う場合のフローである。
【００７１】
まずステップＳ５１において、使用するプログラムが含まれているＮページ分のプログラムの読み出しが完了するまで、ステップＳ５２以降の処理を行う。
【００７２】
ステップＳ５２において、１ページ分のプログラムをフラッシュメモリ２より読み出し、外部メモリ３へ転送する。
【００７３】
次いでステップＳ５３において、ＥＣＣ演算部７によってエラーが発生しているか否かを確認する。
【００７４】
エラーが発生した場合には、次いでステップＳ５４において、エラー情報を基にデータを修正し、外部メモリ３へ転送する。
【００７５】
次いでステップＳ５５において、ステップＳ５４で修正したデータをフラッシュメモリ２へ書き込む。
【００７６】
ステップＳ６１からステップＳ６４は、データの書き込みをシステムのアイドル時に行うフローである。
【００７７】
まずステップＳ６１において、システムはアイドル状態とされ、フラッシュメモリ２へのアクセスはない状態である。
【００７８】
次いでステップＳ６２において、アイドル状態時にフラッシュメモリ２から外部メモリ３への転送時にエラーが発生したか否かを確認する。エラーが発生していなければ、ステップＳ６１のアイドル状態にする。
【００７９】
エラーが発生しているときは、次いでステップＳ６３において、エラー修正したデータをフラッシュメモリ２へ書き込み完了するまで、ステップＳ６４の動作を続け、すべてのエラー修正分をフラッシュメモリ２へ書き込み完了すると、ステップＳ６１のアイドル状態にする。ステップＳ６４においては、修正したデータをフラッシュメモリ２へ書き込む。
【００８０】
ステップＳ７１からステップＳ７３は、データの書き込みをシステムの電源ＯＦＦシーケンスで行うフローである。
【００８１】
まずステップＳ７１において、フラッシュメモリ２から外部メモリ３への転送時にエラーが発生したか否かを確認する。エラーが発生していなければ、電源ＯＦＦ動作を行う。
【００８２】
エラーが発生しているときは、次いでステップＳ７２において、エラー修正したデータをフラッシュメモリ２へ書き込み完了するまで、ステップＳ７３の動作を続け、すべてのエラー修正分をフラッシュメモリ２へ書き込み完了すると、電源ＯＦＦ処理を行う。
【産業上の利用可能性】
【００８３】
本発明のプログラム起動制御装置は、第１の記録領域内のプログラムを外部のランダムアクセス可能な第２の記録領域へ転送し、転送したプログラムよりシステム起動する場合に、ＤＭＡ制御を用いることにより、システムの動作とプログラム転送とを同時並行的に処理することができるため、システムの起動時間の短縮化が可能である。
【図面の簡単な説明】
【００８４】
【図１】本発明の実施の形態におけるプログラム起動制御装置とフラッシュメモリ・外部メモリの構成を示すブロック図
【図２】本発明の実施の形態におけるプログラム起動制御装置のシステム起動の動作を示すフローチャート
【図３】本発明の実施の形態におけるシステム起動までの時間を従来技術と対比して表す図
【図４】本発明の具体的実施例におけるカメラの起動シーケンスを示すフローチャート（その１）
【図５】本発明の具体的実施例におけるカメラの起動シーケンスを示すフローチャート（その２）
【図６】本発明の具体的実施例におけるプログラム転送中にＥＣＣエラーが発生したときの処理を従来技術と対比して表す図
【図７】本発明の具体的実施例におけるプログラム転送中にＥＣＣエラーが発生したときの処理を示すフローチャート
【図８】本発明の具体的実施例におけるエラー発生時に行うデータ修正の処理を示すフローチャート
【図９】従来の技術におけるシステム起動の動作を示すフローチャート
【符号の説明】
【００８５】
１  プログラム起動制御装置
２  フラッシュメモリ（第１の記録領域）
３  外部メモリ（第２の記録領域）
４  フラッシュコントローラ
５  ＣＰＵ（中央演算処理装置）
６  フラッシュＩ／Ｆ（インターフェース）
７  ＥＣＣ演算部
８  内部メモリ
９  メモリ管理部
１０  ＤＭＡ制御部
【図１】
2008065434.tif 000003
【図２】
2008065434.tif 000004
【図３】
2008065434.tif 000005
【図４】
2008065434.tif 000006
【図５】
2008065434.tif 000007
【図６】
2008065434.tif 000008
【図７】
2008065434.tif 000009
【図８】
2008065434.tif 000010
【図９】
2008065434.tif 000011