(57)【要約】【課題】  ＭＲＡＭ等の不揮発性メモリにブートプログラムを含むプログラムが格納され、かつこの不揮発性メモリを主記憶としても使用する場合であっても、プログラムの保護および電子機器の起動時間の短縮を可能とする。【解決手段】  電源投入時もしくはリセットを示す信号を受信すると、不揮発性メモリ内のバンク１０２に格納されたプログラムを他のバンクに転送する。そして、その転送が完了すると、バンク１０２を保護するために、不揮発性メモリの外部からバンク１０２へのアクセスを付加にするため、不揮発性メモリ内でバンクを切断状態にする。そして、プログラム転送が完了したことを示す信号を外部に出力し、この信号をトリガにしてプロセッサへのリセット解除信号を生成する。【選択図】  図１
2015102911.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを実行するプロセッサと、当該プロセッサが実行するプログラムが予め格納されている、主記憶として利用される不揮発性メモリとを有する電子機器において、
前記電子機器の電源投入時又はリセット時に、前記不揮発性メモリへ所定の信号を供給するリセット制御部を有し、
前記不揮発性メモリは、
プログラムを格納するための第１の格納領域と、
前記プロセッサにより実行する際のプログラムを格納するための第２の格納領域と、
前記リセット制御部からの前記所定の信号を受信したことに応じて、前記第１の格納領域に格納されたプログラムを前記第２の格納領域に転送する転送部と、
前記転送部による前記転送が完了したことに応じて、前記第１の格納領域と前記不揮発性メモリの外部とを切断し、前記第２の格納領域と前記不揮発性メモリの外部とのバスを接続すると共に、転送完了を示す信号を前記リセット制御部に通知する通知部とを有し、
前記リセット制御部は、前記不揮発性メモリから前記転送完了を示す信号を受信したことに応じて、前記プロセッサにリセット解除信号を出力する
ことを特徴とする電子機器。
【請求項２】
前記不揮発性メモリは複数のバンクを有し、前記第１の格納領域と前記第２の格納領域は、異なるバンクとすることを特徴とする請求項１に記載の電子機器。
【請求項３】
前記転送部は、２つのバンクを接続するためのコマンド、２つのバンクを活性化するコマンド、転送する際のソースとなるバンクとディスティネーションとなるバンクを示すコマンドを発行することを特徴とする請求項２に記載の電子機器。
【請求項４】
前記転送部は、前記不揮発性メモリの各バンクのセンスアンプの入出力であり、ページサイズと同じビット幅で転送する請求項２又は３に記載の電子機器。
【請求項５】
前記転送部は、前記不揮発性メモリの各バンクのセンスアンプの入出力であり、ページサイズのビット幅より小さく、前記不揮発性メモリのデータバスのビット幅より大きいビット幅で転送する請求項２又は３に記載の電子機器。
【請求項６】
前記転送部は、前記不揮発性メモリの各バンクのカラムデコーダの入出力であり、前記不揮発性メモリのデータのバス幅と同じビット幅で転送することを特徴とする請求項２又は３に記載の電子機器。
【請求項７】
前記第１の格納領域は、前記不揮発性メモリに対する予め設定されたコマンドが発行された場合のみ、前記第１の格納領域と前記不揮発性メモリの外部とを接続することで、前記第１の格納領域に対するリード及びライトのアクセスが可能な状態に移行する
ことを特徴とする請求項１乃至６のいずれか１項に記載の電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は電子機器に関し、特に不揮発性メモリを主記憶として使用する際のプログラムの保護と起動時間の短縮技術に関するものである。
【背景技術】
【０００２】
従来、デジタルカメラ等の電子機器においては、画像処理等のためのメインメモリとして、ＤＲＡＭなどの揮発性メモリを使用している。また、揮発性メモリに代わり、不揮発性メモリをメインメモリとして使用する構成も提案されている（例えば、特許文献１参照）。
【０００３】
また、電子機器において、NORフラッシュ等の不揮発性のメモリにプログラムコードやデータなどを格納しておき、プログラム実行前に、この不揮発性メモリからアクセス速度がより速いDRAM等の揮発性メモリにプログラムコードやデータをコピーし、その後揮発性メモリにアクセスしてプログラムを実行する方法が知られている。
【０００４】
更に、近年はMRAM（Magnetoresistive Random Access Memory）の様に不揮発性メモリでありながら、DRAM並みのアクセス速度や書き換え回数の耐久性を備えたデバイスが登場し、プログラムコードの格納とワーク領域を同一デバイスで兼用することが可能になってきている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−３３４６２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＮＯＲフラッシュと、ＤＲＡＭによって構成される電子機器においては、ＮＯＲフラッシュメモリのアクセス速度の問題からプログラムコードやデータのコピーに時間がかかるという課題があった。
【０００７】
また、ＭＲＡＭ等の不揮発性主記憶は、ＮＯＲフラッシュに比べてライト動作が電子機器内のメモリコントローラを介して安易に行う事が出来る為、ＭＲＡＭ等の不揮発性主記憶に予めプログラムコードが格納されている場合、プログラムの暴走等によりブートプログラムを含む、プログラムが破壊される可能性がある。
【０００８】
そこで、本発明は、ＭＡＲＭ等の不揮発性メモリにブートプログラムを含むプログラムが格納され、かつこの不揮発性メモリを主記憶としても使用する電子機器において、プログラムの保護および電子機器の起動時間を短縮させる技術を提供する。
【課題を解決するための手段】
【０００９】
この課題を解決するため、例えば本発明の電子機器は以下の構成を備える。すなわち、
プログラムを実行するプロセッサと、当該プロセッサが実行するプログラムが予め格納されている、主記憶として利用される不揮発性メモリとを有する電子機器において、
前記電子機器の電源投入時又はリセット時に、前記不揮発性メモリへ所定の信号を供給するリセット制御部を有し、
前記不揮発性メモリは、
プログラムを格納するための第１の格納領域と、
前記プロセッサにより実行する際のプログラムを格納するための第２の格納領域と、
前記リセット制御部からの前記所定の信号を受信したことに応じて、前記第１の格納領域に格納されたプログラムを前記第２の格納領域に転送する転送部と、
前記転送部による前記転送が完了したことに応じて、前記第１の格納領域と前記不揮発性メモリの外部とを切断し、前記第２の格納領域と前記不揮発性メモリの外部とのバスを接続すると共に、転送完了を示す信号を前記リセット制御部に通知する通知部とを有し、
前記リセット制御部は、前記不揮発性メモリから前記転送完了を示す信号を受信したことに応じて、前記プロセッサにリセット解除信号を出力することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、ＭＲＡＭ等の不揮発性メモリにブートプログラムを含むプログラムが格納され、かつこの不揮発性メモリを主記憶としても使用する場合であっても、プログラムの保護および電子機器の起動時間の短縮が可能になる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１の実施の形態に係る、電子機器の構成を示す図
【図２】本発明の第１の実施の形態に係る、電子機器のタイミングチャートを示す図
【図３】本発明の第１、第２、第３の実施の形態に係る、電子機器のプログラムの配置を示す図
【図４】本発明の第２の実施の形態に係る、電子機器の構成を示す図
【図５】本発明の第２の実施の形態に係る、電子機器のタイミングチャートを示す図
【図６】本発明の第３の実施の形態に係る、電子機器の構成を示す図
【図７】本発明の第３の実施の形態に係る、電子機器のタイミングチャートを示す図
【図８】本発明の第４の実施の形態に係る、電子機器の構成を示す図
【図９】本発明の第４の実施の形態に係る、電子機器のタイミングチャートを示す図
【図１０】本発明の第４の実施の形態に係る、電子機器のＣＰＵフローチャートを示す図
【図１１】本発明の第４の実施の形態に係る、電子機器のプログラムの配置を示す図
【発明を実施するための形態】
【００１２】
以下に、本発明の各実施形態を添付図面に基づいて詳細に説明する。なお、以下で説明する不揮発性メモリがＭＲＡＭもしくはＭＡＲＭで構成されるメモリモジュールであり、それを主記憶として利用する電子機器を説明する。
【００１３】
［第１の実施形態］
第１の実施形態を図１、図２、図３を用いて説明する。なお、以下において、同一構成要素には同じ記号および符号を付しその説明を省略する。図１は、第１の実施の形態に係る電子機器の構成を示す図である。図２は、第１の実施の形態に係る、タイミングチャートを示す図である。図３は、第１の実施の形態に係る、プログラムの配置を示す図である。
【００１４】
第１の実施形態では、予めブートプログラムを含むプログラムが格納されていている不揮発性メモリを主記憶とする電子機器において、不揮発性メモリの内部で、プログラム格納領域から、プログラム実行領域へプログラムを転送する。これにより、ブートプログラムを含むプログラムの保護と、起動時間の短縮を図るものである。
【００１５】
図１において、１００は、第１の実施の形態に係る電子機器である。電子機器としては、パーソナルコンピュータ、携帯端末、デジタルカメラなど、内部のプロセッサを有する装置であればよく、その種類は問わない。１０１は、ページサイズ４ＫＢｙｔｅ，バンク容量１６ＫＢｙｔｅ、全容量８０ＫＢｙｔｅで、プログラム格納領域１０２に予めブートプログラムを含む、プログラムが格納されていて、異バンク間のページ転送が可能な、第１の実施の形態に係る不揮発性メモリである。
【００１６】
１０２は、不揮発性メモリ１０１の、ページ１、ページ２、ページ３、ページ４の４つのページに分割されたバンクである。このバンク１０２は、不揮発性メモリ１０１の外部からのリード、ライトアクセスが不可能で、電子機器１００の出荷時に予めブートプログラムを含む、プログラムが格納されていているプログラム格納領域でもある。
【００１７】
例えば、バンク１０２のページ１には、予めブートプログラムが格納されている。バンク１０２のページ２には、予め電子機器１００のアプリケーションプログラムの一つであるプログラム１が格納されている。バンク１０２のページ３には、予め電子機器１００のアプリケーションプログラムの一つであるプログラム２が格納されている。
【００１８】
１０３は、不揮発性メモリ１０１の、ページ１、ページ２、ページ３、ページ４の４つのページに分割されたバンクであり、ＣＰＵ１３８のプログラムの実行領域、及びワーク領域として使用されるバンクである。
【００１９】
１０４は、不揮発性メモリ１０１の、ページ１、ページ２、ページ３、ページ４の４つのページに分割されたバンクであり、ＣＰＵ１３８のプログラムの実行領域、及びワーク領域として使用されるバンクである。
【００２０】
１０５は、不揮発性メモリ１０１の、ページ１、ページ２、ページ３、ページ４の４つのページに分割されたバンクであり、ＣＰＵ１３８のプログラムの実行領域、及びワーク領域として使用されるバンクである。
【００２１】
１０６は、不揮発性メモリ１０１の、ページ１、ページ２、ページ３、ページ４の４つのページに分割されたバンクであり、ＣＰＵ１３８のプログラムの実行領域、及びワーク領域として使用されるバンクである。
【００２２】
例えば、ＣＰＵ１３８は、バンク１０３のページ１に配置されるブートプログラムでブートする。アプリケーション動作の際は、ＣＰＵ１３８は、バンク１０３のページ２に配置されるプログラム１、及びバンク１０４のページ１に配置されるプログラム２を使用して実行する。
【００２３】
１０７は、バンク１０３のセンスアンプである。１０８は、バンク１０４のセンスアンプである。１０９は、バンク１０５のセンスアンプである。１１０は、バンク１０６のセンスアンプである。１１１は、バンク１０２のセンスアンプである。センスアンプ１０７、１０８、１０９、１１０、１１１はロウデコーダ１１２、１１３、１１４、１１５、１１６により選択されて活性化されたページを読み出して信号増幅する。
【００２４】
１１２は、バンク１０３のロウデコーダである。１１３は、バンク１０４のロウデコーダである。１１４は、バンク１０５のロウデコーダである。１１５は、バンク１０６のロウデコーダである。１１６は、バンク１０２のロウデコーダである。ロウデコーダ１１２，１１３，１１４，１１５，１１６は、電子機器１００の起動直後、つまり、バンク１０２から、バンク１０３、バンク１０４、バンク１０５、バンク１０６へプログラムを転送する時には、プログラム転送コマンド発行部１３５（転送部に相当）から制御され選択されたバンクのページを活性化する。ロウデコーダ１１２，１１３，１１４，１１５，１１６は、バンク１０２から、バンク１０３、バンク１０４、バンク１０５、バンク１０６へプログラムの転送が完了し、ＣＰＵ１３８による電子機器１００の制御が始まると、不揮発性メモリ１０１外部のコマンドにより選択されたバンクのページを活性化する。
【００２５】
１１７は、バンク１０３のカラムデコーダである。１１８は、バンク１０４のカラムデコーダである。１１９は、バンク１０５のカラムデコーダである。１２０は、バンク１０６のカラムデコーダである。カラムデコーダ１１７，１１８，１１９，１２０は不揮発性メモリ１０１の外部からのコマンドによりカラムアドレスが制御され、センスアンプに読み出されたページのデータをリードしたり、センスアンプを介してページ書き込みを行う。
【００２６】
１２１は、不揮発性メモリ１０１のページサイズである４０９６Ｂｙｔｅの配線からなる異バンク間のページ転送を行うプログラム転送バスである。プログラム転送バス１２１は以下の接続スイッチを有する。１２２はプログラム転送バス１２１の一部であり、センスアンプ１０７とプログラム転送バス１２１の接続を選択するセンスアンプ接続スイッチである。１２３はプログラム転送バス１２１の一部であり、センスアンプ１０８とプログラム転送バス１２１の接続を選択するセンスアンプ接続スイッチである。１２４はプログラム転送バス１２１の一部であり、センスアンプ１０９とプログラム転送バス１２１の接続を選択するセンスアンプ接続スイッチである。１２５はプログラム転送バス１２１の一部であり、センスアンプ１１０とプログラム転送バス１２１の接続を選択するセンスアンプ接続スイッチである。１２６はプログラム転送バス１２１の一部であり、センスアンプ１１１とプログラム転送バス１２１の接続を選択するセンスアンプ接続スイッチである。
【００２７】
１２７はプログラム転送バス１２１の一部であり、バンク１０２とバンク１０３間の接続を選択するバンク接続スイッチである。１２８はプログラム転送バス１２１の一部であり、バンク１０３とバンク１０４間の接続を選択するバンク接続スイッチである。１２９はプログラム転送バス１２１の一部であり、バンク１０４とバンク１０５間の接続を選択するバンク接続スイッチである。１３０はプログラム転送バス１２１の一部であり、バンク１０５とバンク１０６間の接続を選択するバンク接続スイッチである。
【００２８】
１３１はプログラム転送バス１２１の一部であり、カラムデコーダ１１７と、プログラム転送バス１２１の接続を選択するカラムデコーダ接続スイッチである。１３２はプログラム転送バス１２１の一部であり、カラムデコーダ１１８と、プログラム転送バス１２１の接続を選択するカラムデコーダ接続スイッチである。１３３はプログラム転送バス１２１の一部であり、カラムデコーダ１１９と、プログラム転送バス１２１の接続を選択するカラムデコーダ接続スイッチである。１３４はプログラム転送バス１２１の一部であり、カラムデコーダ１２０と、プログラム転送バス１２１の接続を選択するカラムデコーダ接続スイッチである。
【００２９】
例えば、バンク１０２のプログラム格納領域のデータ（ブートプログラムなど）をバンク１０４にプログラムの転送を行う際は、プログラム転送コマンド発行１３５からのコマンドにより以下の状態となる。プログラム転送コマンド発行１３５からの、バンク１０２及びバンク１０４への活性化コマンドにより、センスアンプ接続スイッチ１２６、センスアンプ接続スイッチ１２３、バンク接続スイッチ１２７、バンク接続スイッチ１２８がクローズされ、バンク１０２とバンク１０４が接続された状態になる。プログラム転送コマンド発行１３５からプログラム転送コマンドが発行され、バンク１０２からバンク１０４にプログラムが転送される。バンク１０２からバンク１０４へのプログラムの転送が完了したタイミングで、センスアンプ接続スイッチ１２６、センスアンプ接続スイッチ１２３、バンク接続スイッチ１２７、バンク接続スイッチ１２８がオープン状態に初期化される。
【００３０】
１３５は、リセット制御部１３９からの所定のリセット解除信号を受信して、プログラム転送バス１２１を介した異バンク間のプログラムの転送を行う為のプログラム転送コマンド発行部である。プログラム転送コマンド発行部の発行するコマンドは、不揮発性メモリ１０１内のバンク１０２と、バンク１０３、バンク１０４、バンク１０５、バンク１０６を活性化する活性化コマンドと、活性化されたページを転送するプログラム転送コマンドからなる。
【００３１】
活性化コマンドには、バンク１０２と、バンク１０３、バンク１０４、バンク１０５、バンク１０６を活性化すると共に、活性化するバンクが、プログラム転送の際のいずれがソースとなり、いずれがディスティネーションとなるかを示す信号が重畳されている。もしくは、活性化コマンドには、バンク１０２と、バンク１０３、バンク１０４、バンク１０５、バンク１０６を活性化すると共に、活性化するバンクが、プログラ転送の際のソースとなるかディスティネーションとなるかを示すコマンドを発行する。また、活性化コマンド発行によりプログラム転送バス１２１内の接続スイッチを制御して、異バンク間のプログラムの転送が可能な状態にする。プログラム転送コマンド発行部が発行する活性化コマンドとプログラム転送コマンドは、電子機器１００の市場出荷後に書き換え不可能な、ＲＯＭやＥＦＵＳＥ等の素子により電子機器の出荷時に設定される。例えば、電子機器の出荷時に、予めバンク１０２のページ１に格納されているブートプログラムは、バンク１０３のページ１に転送されるように設定されている。バンク１０２のページ２に格納されているプログラム１は、バンク１０４のページ１に転送されるように設定されている。バンク１０２のページ３に格納されているプログラム２は、バンク１０３のページ２に転送されるように設定されている。
【００３２】
１３６はプログラム転送完了通知部である。このプログラム転送完了通知部１３６は、不揮発性メモリ１０１内部でバンク１０２から、当該バンク１０２以外のバンク１０３などのプログラム実行領域へのプログラムの転送が完了したら、リセット制御部１３９にプログラム転送完了を通知する。１３７は電源制御部であり、ユーザからの操作により電子機器１００の電源供給を管理する。１３８は電子機器１００を制御するＣＰＵである。このＣＰＵ１３８は、リセット制御部１３９からのリセット解除を受けて、ブートプログラムで起動して、プログラムを実行して電子機器１００の起動後の制御を行うことになる。１３９はリセット制御部であり、電子機器１００の電源オンの監視し、また、ＣＰＵ１３８、及び、不揮発性メモリ１０１に対するリセットの印加、解除を制御する。リセット制御部１３９は、電源制御部１３７からの電源供給をうけて、不揮発性メモリ１０１に対するリセットを解除する、また、リセット制御部１３９は、プログラム転送完了通知部１３６からのプログラム転送完了信号をうけて、ＣＰＵ１３８のリセットを解除する。
【００３３】
以下に、５つのバンクに分割され、ページサイズ４ＫＢｙｔｅ，バンク容量１６ＫＢｙｔｅ，全容量８０ＫＢｙｔｅの不揮発性メモリ１０１において、不揮発性メモリ１０１の内部で、バンク１０２内のプログラム格納領域からブートプログラムを含むプログラムを、バンク１０３、バンク１０４へプログラムを転送することで、オリジナルを格納しているバンク１０２のプログラム領域のプログラムの保護と、電子機器１００の起動時間の短縮ができる実施の一例を図２のタイミングチャートを元に示す。
【００３４】
本実施形態は、不揮発性メモリ１０１内のバンク１０２のプログラム格納領域に予め格納されているプログラムのファームウェアアップ等のプログラムの更新を含まない電子機器１００の通常動作である。
【００３５】
本実施形態では、図３に示すように、バンク１０２のプログラム格納領域は、予めそのページ１にブートプログラムが、ページ２にプログラム１が、ページ３にプログラム２が格納されているものとする。また、プログラム転送コマンド発行部１３５には、電源投入時、又は、リセット時に、バンク１０３のページ１にブートプログラムを、バンク１０４のページ１にプログラム１を、バンク１０３のページ２にプログラム２を転送すると設定されているものとする。
【００３６】
かかる設定がなされた電子機器１００の電源をユーザがオンすると、Ｔ１のタイミングで、電源制御部１３７からの電源電圧が上昇していく。Ｔ２の電源電圧がリセット電圧に達したタイミングからＴ１００の期間後、リセット制御部１３９は不揮発性メモリ１０１へのリセットを解除し、センスアンプ接続スイッチ１２２、センスアンプ接続スイッチ１２３、センスアンプ接続スイッチ１２４、センスアンプ接続スイッチ１２５、センスアンプ接続スイッチ１２６、バンク接続スイッチ１２７、バンク接続スイッチ１２８、バンク接続スイッチ１２９、バンク接続スイッチ１３０、カラムデコーダ接続スイッチ１３１、カラムデコーダ接続スイッチ１３２、カラムデコーダ接続スイッチ１３３、カラムデコーダ接続スイッチ１３４をオープンにする。
【００３７】
Ｔ３のプログラム転送コマンド発行部１３５が、バンク１０２へ活性化コマンドを発行して、バンク１０２を活性化すると共にソースのバンクとして指定したタイミングでセンスアンプ接続スイッチ１２６をクローズする。
【００３８】
Ｔ４のプログラム転送コマンド発行部１３５が、バンク１０３へ活性化コマンドを発行して、バンク１０３のページ１を活性化すると共にディスティネーションのバンクとして指定したタイミングでセンスアンプ接続スイッチ１２２をクローズする。また、バンク１０２とバンク１０３を接続する為の、バンク接続スイッチ１２７をクローズする。
【００３９】
Ｔ５のセンスアンプ１１１、センスアンプ１０７にデータが読みだされたタイミングで、プログラム転送コマンド発行部１３５はプログラム転送コマンドを発行してセンスアンプ１１１に読み出されたブートプログラムのセンスアンプ１０７を介したバンク１０３への転送が開始される。Ｔ６のブートプログラムの転送が終了したタイミングで、センスアンプ接続スイッチ１２２、バンク接続スイッチ１２７をオープンにする。Ｔ７のタイミングで、プログラム転送コマンド発行部１３５が、バンク１０２へ活性化コマンドを発行して、バンク１０２のページ３を活性化する。Ｔ８のプログラム転送コマンド発行部１３５が、バンク１０３へ活性化コマンドを発行して、バンク１０３のページ２を活性化すると共にディスティネーションのバンクとして指定したタイミングでセンスアンプ接続スイッチ１２２をクローズする。また、バンク１０２とバンク１０３を接続する為の、バンク接続スイッチ１２７をクローズする。
【００４０】
Ｔ９の、センスアンプ１１１、センスアンプ１０７にデータが読みだされたタイミングで、プログラム転送コマンド発行部１３５はプログラム転送コマンドを発行してセンスアンプ１１１に読み出されたプログラム２のセンスアンプ１０７を介したバンク１０３への転送が開始される。Ｔ１０の、プログラム２の転送が終了したタイミングで、センスアンプ接続スイッチ１２２、バンク接続スイッチ１２７をオープンにする。Ｔ１１の、プログラム転送コマンド発行部１３５が、バンク１０２へ活性化コマンドを発行して、バンク１０２のページ２を活性化する。Ｔ１２の、プログラム転送コマンド発行部１３５が、バンク１０４へ活性化コマンドを発行して、バンク１０４のページ１を活性化すると共にディスティネーションのバンクとして指定したタイミングでセンスアンプ接続スイッチ１２３をクローズする。また、バンク１０２とバンク１０４を接続する為の、バンク接続スイッチ１２７、バンク接続スイッチ１２８をクローズする。
【００４１】
Ｔ１３の、センスアンプ１１１、センスアンプ１０８にデータが読みだされたタイミングで、プログラム転送コマンド発行部１３５はプログラム転送コマンドを発行してセンスアンプ１１１に読み出されたプログラム１のセンスアンプ１０８を介したバンク１０４への転送が開始される。Ｔ１４の、プログラム１の転送が終了したタイミングで、センスアンプ接続スイッチ１２６、センスアンプ接続スイッチ１２３、バンク接続スイッチ１２７、バンク接続スイッチ１２８をオープンにして接続スイッチは初期状態に戻る。この初期状態では、少なくとも、センスアンプ接続スイッチ１２６をオープンになる。
【００４２】
Ｔ１５の、バンク１０２から、バンク１０３、バンク１０４、バンク１０５、バンク１０６へのプログラムの転送が完了したタイミングで、プログラム転送完了通知部１３６はリセット制御部１３９にプログラム転送完了を通知する。また、センスアンプ接続スイッチ１２２、センスアンプ接続スイッチ１２３、センスアンプ接続スイッチ１２４、センスアンプ接続スイッチ１２５をクローズする。また、カラムデコーダ接続スイッチ１３１、カラムデコーダ接続スイッチ１３２、カラムデコーダ接続スイッチ１３３、カラムデコーダ接続スイッチ１３４の状態をクローズする。Ｔ１６のリセット制御部１３９がＣＰＵ１３８へリセット解除したタイミングで、電子機器１００のＣＰＵ１３８はブートプログラムから起動して動作を開始する。
【００４３】
上記の結果、不揮発性メモリ１０１内でのプログラム転送が完了したことトリガにして、電子機器１００のＣＰＵ１３８はブートプログラムに従って起動することになる。そのとき、既に、不揮発性メモリ１０１内のバンク１０２は不揮発性メモリ１０１の外部（ＣＰＵ１３８）と切断状態になってアクセスできない状態になっている。従って、仮にＣＰＵ１３８が暴走したとしても、不揮発性メモリ１０１のバンク１０２のプログラム格納領域に記憶保持されたブートプログラムを含む、プログラムは保護される。
【００４４】
また、プログラムの転送を不揮発性メモリ１０１の外部バスを介した不図示のＤＭＡやＣＰＵ１３８アクセスを使用せずに、不揮発性メモリ１０１内部で転送する為、電子機器１００の起動時間を速くする事ができる。
【００４５】
以上、第１の実施形態を説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
【００４６】
［第２の実施形態］
第２の実施形態を図３、図４、図５を用いて説明する。なお、以下において、同一構成要素には同じ記号および符号を付しその説明を省略する。図３は、本発明の第２の実施の形態に係る、プログラムの配置を示す図である。図４は、第２の実施の形態に係る、電子機器の構成を示す図である。図５は、第２の実施の形態に係る、タイミングチャートを示す図である。
【００４７】
図４における符号４００は、第２の実施の形態に係る電子機器である。電子機器４００は、プロセッサを収容する機器であればよく、その種類を問わないのは第１の実施形態と同様である。符号４０１は、ページサイズ４ＫＢｙｔｅ，バンク容量１６ＫＢｙｔｅ，全容量８０ＫＢｙｔｅで、バンク１０２に予めブートプログラムを含む、プログラムが格納されていて、異バンク間のページ転送が可能な、第２の実施の形態に係る不揮発性メモリである。４２１は、異バンク間のページ転送を行うプログラム転送バスである。プログラム転送バス４２１は、以下の配線により構成される。４５０は、プログラム転送バス４２１内で、異バンク間のページ転送を行う２０４８Ｂｙｔｅの配線からなる異バンク間ページ転送バスである。
【００４８】
プログラム転送バス４２１と、センスアンプ１０７，１０８，１０９，１１０，１１１との配線の幅は４ＫＢｙｔｅであり、プログラム転送バス４２１内部で、カラムアドレスの０ｘ０番地から０ｘ７ＦＦ番地までの２０４８Ｂｙｔｅの配線と、カラムアドレスの０ｘ８００番地から０ｘＦＦＦ番地までの２０４８Ｂｙｔｅ配線とに分割されている。４４０は、プログラム転送バス４２１と、センスアンプ１０７のカラムアドレスの０ｘ０番地から０ｘ７ＦＦ番地の２０４８Ｂｙｔｅを接続するセンスアンプ入出力ロウである。
【００４９】
４４１は、プログラム転送バス４２１と、センスアンプ１０７のカラムアドレスの０ｘ８００番地から０ｘＦＦＦ番地の２０４８Ｂｙｔｅを接続するセンスアンプ入出力ハイである。４４２は、プログラム転送バス４２１と、センスアンプ１０８のカラムアドレスの０ｘ０番地から０ｘ７ＦＦ番地の２０４８Ｂｙｔｅを接続するセンスアンプ入出力ロウである。４４３は、プログラム転送バス４２１と、センスアンプ１０８のカラムアドレスの０ｘ８００番地から０ｘＦＦＦ番地の２０４８Ｂｙｔｅを接続するセンスアンプ入出力ハイである。
【００５０】
４４４は、プログラム転送バス４２１と、センスアンプ１０９のカラムアドレスの０ｘ０番地から０ｘ７ＦＦ番地の２０４８Ｂｙｔｅを接続するセンスアンプ入出力ロウである。４４５は、プログラム転送バス４２１と、センスアンプ１０９のカラムアドレスの０ｘ８００番地から０ｘＦＦＦ番地の２０４８Ｂｙｔｅを接続するセンスアンプ入出力ハイである。４４６は、プログラム転送バス４２１と、センスアンプ１１０のカラムアドレスの０ｘ０番地から０ｘ７ＦＦ番地の２０４８Ｂｙｔｅを接続するセンスアンプ入出力ロウである。
【００５１】
４４７は、プログラム転送バス４２１と、センスアンプ１１０のカラムアドレスの０ｘ８００番地から０ｘＦＦＦ番地の２０４８Ｂｙｔｅを接続するセンスアンプ入出力ハイである。４４８は、プログラム転送バス４２１と、センスアンプ１１１のカラムアドレスの０ｘ０番地から０ｘ７ＦＦ番地の２０４８Ｂｙｔｅを接続するセンスアンプ入出力ロウである。
【００５２】
４４９は、プログラム転送バス４２１と、センスアンプ１１１のカラムアドレスの０ｘ８００番地から０ｘＦＦＦ番地の２０４８Ｂｙｔｅを接続するセンスアンプ入出力ハイである。
【００５３】
プログラム転送バス４２１のカラムデコーダ１１７，１１８，１１９，１２０との配線は４ＫＢｙｔｅであり、プログラム転送バス４２１内部で、カラムアドレスの０ｘ０番地から０ｘ７ＦＦ番地までの２０４８Ｂｙｔｅの配線と、カラムアドレスの０ｘ８００番地から０ｘＦＦＦ番地までの２０４８Ｂｙｔｅの配線が連接されている。
【００５４】
また、プログラム転送バス４２１は以下の接続スイッチを有する。４２２はプログラム転送バス４２１の一部であり、センスアンプ入出力ロウ４４０、及びセンスアンプ入出力ハイ４４１とプログラム転送バス４２１の接続と、を選択するセンスアンプ接続スイッチである。
【００５５】
４２３はプログラム転送バス４２１の一部であり、センスアンプ入出力ロウ４４２、及びセンスアンプ入出力ハイ４４３と、プログラム転送バス４２１の接続と、を選択するセンスアンプ接続スイッチである。４２４はプログラム転送バス４２１の一部であり、センスアンプ入出力ロウ４４４、及びセンスアンプ入出力ハイ４４５と、プログラム転送バス４２１の接続と、を選択するセンスアンプ接続スイッチである。
【００５６】
４２５はプログラム転送バス４２１の一部であり、センスアンプ入出力ロウ４４６、及びセンスアンプ入出力ハイ４４７と、プログラム転送バス４２１の接続と、を選択するセンスアンプ接続スイッチである。４２６はプログラム転送バス４２１の一部であり、センスアンプ入出力ロウ４４８、及びセンスアンプ入出力ハイ４４９と、プログラム転送バス４２１の接続と、を選択するセンスアンプ接続スイッチである。
【００５７】
例えば、バンク１０２のプログラム格納領域内のプログラムを、バンク１０４にプログラムの転送を行う際は、プログラム転送コマンド発行１３５からのコマンドにより以下の状態となる。
【００５８】
プログラム転送コマンド発行１３５からの、バンク１０２、及びバンク１０４への活性化コマンドによりセンスアンプ１１１、センスアンプ１０７が活性化される。センスアンプ接続スイッチ４２６がセンスアンプ出力ロウ４４８に対してクローズされ、センスアンプ接続スイッチ４２３がセンスアンプ出力ロウ４４２に対してクローズされ、バンク接続スイッチ１２７、バンク接続スイッチ１２８がクローズされ、バンク１０２とバンク１０４のカラムアドレスの０ｘ０番地から０ｘ７ＦＦ番地の２０４８Ｂｙｔｅが接続された状態になる。
【００５９】
次に、プログラム転送コマンド発行１３５からプログラム転送コマンドが発行されると、バンク１０２のセンスアンプ１１１のカラムアドレスの０ｘ０番地から０ｘ７ＦＦ番地の２０４８Ｂｙｔｅがセンスアンプ１０７を介してバンク１０４に転送される。
【００６０】
次に、センスアンプ接続スイッチ４２６がセンスアンプ出力ロウ４４９に対してクローズされ、センスアンプ接続スイッチ４２３がセンスアンプ出力ロウ４４３に対してクローズされ、バンク１０２とバンク１０４のカラムアドレスの０ｘ８００番地から０ｘＦＦＦ番地の２０４８Ｂｙｔｅが接続された状態になる。
【００６１】
バンク１０２のセンスアンプ１１１のカラムアドレスの０ｘ８００番地から０ｘＦＦＦ番地の２０４８Ｂｙｔｅがセンスアンプ１０７を介してバンク１０４に転送される。
【００６２】
センスアンプ接続スイッチ４２６、センスアンプ接続スイッチ４２３、バンク接続スイッチ１２７、バンク接続スイッチ１２８がオープン状態に初期化される。
【００６３】
以下に、５つのバンクに分割され、ページサイズ４ＫＢｙｔｅ，バンク容量１６ＫＢｙｔｅ，全容量８０ＫＢｙｔｅの不揮発性メモリ４０１において、不揮発性メモリ４０１の内部で、バンク１０２から、バンク１０３、バンク１０４へプログラムを転送することでブートプログラムを含む、プログラムの保護と、電子機器４００の起動時間の短縮ができる実施の一例を図５のタイミングチャートを元に示す。
【００６４】
本実施形態は、不揮発性メモリ４０１の内部の、バンク１０２のプログラム格納領域に予め格納されているプログラムのファームウェアアップ等のプログラムの更新を含まない電子機器４００の通常動作である。
【００６５】
本実施形態では、図３に示すように、バンク１０２のプログラム格納領域には予め、そのページ１にはブートプログラムが、ページ２にはプログラム１が、ページ３にはプログラム２が格納されている。
【００６６】
プログラム転送コマンド発行部１３５には、電子機器４００の起動時の処理として、バンク１０３のページ１にブートプログラムを、バンク１０４のページ１にプログラム１を、バンク１０３のページ２にプログラム２を転送すると設定されている。Ｔ１は第１の実施形態と同様である。
【００６７】
Ｔ５０２の電源電圧がリセット電圧に達したタイミングからＴ１００の期間後、リセット制御部１３９は不揮発性メモリ４０１へのリセットを解除し、センスアンプ接続スイッチ４２２、センスアンプ接続スイッチ４２３、センスアンプ接続スイッチ４２４、センスアンプ接続スイッチ４２５、センスアンプ接続スイッチ４２６、バンク接続スイッチ４２７、バンク接続スイッチ４２８、バンク接続スイッチ４２９、バンク接続スイッチ４３０、カラムデコーダ接続スイッチ４３１、カラムデコーダ接続スイッチ４３２、カラムデコーダ接続スイッチ４３３、カラムデコーダ接続スイッチ４３４をオープンにする。
【００６８】
Ｔ５０３のプログラム転送コマンド発行部１３５が、バンク１０２へ活性化コマンドを発行して、ブートプログラムが格納されているバンク１０２のページ１を活性化すると共にソースのバンクとして指定したタイミングで、センスアンプ接続スイッチ４２６をセンスアンプ入出力ロウ４４８に対してクローズする。
【００６９】
Ｔ５０４のプログラム転送コマンド発行部１３５が、バンク１０３へ活性化コマンドを発行して、バンク１０３のページ１を活性化すると共にディスティネーションのバンクとして指定したタイミングで、センスアンプ接続スイッチ４２２をセンスアンプ入出力ロウ４４０に対してクローズする。また、バンク１０２とバンク１０３を接続する為の、バンク接続スイッチ１２７をクローズする。
【００７０】
Ｔ５０５のセンスアンプ１１１、センスアンプ１０７にデータが読みだされたタイミングで、プログラム転送コマンド発行部１３５はプログラム転送コマンドを発行して、異バンク間ページ転送バス４５０を介してセンスアンプ１１１に読み出されたブートプログラムのカラムアドレスの０ｘ０番地から０ｘ７ＦＦ番地までの２０４８Ｂｙｔｅの、センスアンプ１０７を介したバンク１０３への転送が開始される。
【００７１】
Ｔ５０６のセンスアンプ１１１のカラムアドレスの０ｘ０番地から０ｘ７ＦＦ番地までの２０４８Ｂｙｔｅの転送が終了したタイミングで、センスアンプ接続スイッチ４２６をセンスアンプ出力ハイ４４９に対してクローズする。また、センスアンプ接続スイッチ４２２をセンスアンプ出力ハイ４４１に対してクローズする。
【００７２】
Ｔ５０７の、センスアンプ接続スイッチ４２６がセンスアンプ出力ハイ４４９に対してクローズされ、センスアンプ接続スイッチ４２２がセンスアンプ出力ハイ４４１に対してクローズされたタイミングで、異バンク間ページ転送バス４５０を介してセンスアンプ１１１に読み出されたブートプログラムのカラムアドレスの０ｘ８００番地から０ｘＦＦＦ番地までの、センスアンプ１０７を介したバンク１０３への２０４８Ｂｙｔｅの転送が開始される。
【００７３】
Ｔ５０８のセンスアンプ１１１のカラムアドレスの０ｘ８００番地から０ｘＦＦＦ番地までの２０４８Ｂｙｔｅの転送が終了したタイミングで、センスアンプ接続スイッチ４２２、バンク接続スイッチ１２７をオープンにする。また、センスアンプ接続スイッチ４２６をセンスアンプ出力ロウ４４８に対してクローズする。
【００７４】
Ｔ５０９のタイミングで、プログラム転送コマンド発行部１３５が、バンク１０２へ活性化コマンドを発行して、プログラム２が格納されているバンク１０２のページ３へ活性化コマンドを発行して、バンク１０２のページ３を活性化する。
【００７５】
Ｔ５１０のプログラム転送コマンド発行部１３５が、バンク１０３へ活性化コマンドを発行して、バンク１０３のページ２を活性化すると共にディスティネーションのバンクとして指定したタイミングで、センスアンプ接続スイッチ４２２をセンスアンプ入出力ロウ４４０に対してクローズする。また、バンク１０２とバンク１０３を接続する為の、バンク接続スイッチ１２７をクローズする。
【００７６】
Ｔ５１１のセンスアンプ１１１、センスアンプ１０７にデータが読みだされたタイミングで、プログラム転送コマンド発行部１３５はプログラム転送コマンドを発行して、異バンク間ページ転送バス４５０を介しセンスアンプ１１１に読み出されたプログラム２のカラムアドレスの０ｘ０番地から０ｘ７ＦＦ番地までの２０４８Ｂｙｔｅの、センスアンプ１０７を介したバンク１０３への転送が開始される。
【００７７】
Ｔ５１２のセンスアンプ１１１のカラムアドレスの０ｘ０番地から０ｘ７ＦＦ番地までの２０４８Ｂｙｔｅの転送が終了したタイミングで、センスアンプ接続スイッチ４２６をセンスアンプ出力ハイ４４９に対してクローズする。また、センスアンプ接続スイッチ４２２をセンスアンプ出力ハイ４４１に対してクローズする。
【００７８】
Ｔ５１３のセンスアンプ接続スイッチ４２６がセンスアンプ出力ハイ４４９に対してクローズされ、センスアンプ接続スイッチ４２２がセンスアンプ出力ハイ４４１に対してクローズされたタイミングで、異バンク間ページ転送バス４５０を介してセンスアンプ１１１に読み出されたプログラム２のカラムアドレスの０ｘ８００番地から０ｘＦＦＦ番地までの２０４８Ｂｙｔｅの、センスアンプ１０７を介したバンク１０３への転送が開始される。
【００７９】
Ｔ５１４のブートプログラムのカラムアドレスの０ｘ８００番地から０ｘＦＦＦ番地までの２０４８Ｂｙｔｅの転送が終了したタイミングで、センスアンプ接続スイッチ４２２、バンク接続スイッチ１２７をオープンにする。また、センスアンプ接続スイッチ４２６をセンスアンプ出力ロウ４４８に対してクローズする。
【００８０】
Ｔ５１５のタイミングで、プログラム転送コマンド発行部１３５が、バンク１０２へ活性化コマンドを発行して、プログラム１が格納されているバンク１０２のページ２へ活性化コマンドを発行して、バンク１０２のページ２を活性化する。
【００８１】
Ｔ５１６のプログラム転送コマンド発行部１３５が、バンク１０４へ活性化コマンドを発行して、バンク１０４のページ１を活性化すると共にディスティネーションのバンクとして指定したタイミングで、センスアンプ接続スイッチ４２３をセンスアンプ出力ロウ４４２に対してクローズする。また、バンク１０２とバンク１０４を接続する為の、バンク接続スイッチ１２７、及びバンク接続スイッチ１２８をクローズする。
【００８２】
Ｔ５１７のセンスアンプ１１１、センスアンプ１０８にデータが読みだされたタイミングで、プログラム転送コマンド発行部１３５はプログラム転送コマンドを発行して、異バンク間ページ転送バス４５０を介しセンスアンプ１１１に読み出されたプログラム１のカラムアドレスの０ｘ０番地から０ｘ７ＦＦ番地までの２０４８Ｂｙｔｅの、センスアンプ１０８を介したバンク１０４への転送が開始される。
【００８３】
Ｔ５１８のセンスアンプ１１１のカラムアドレスの０ｘ０番地から０ｘ７ＦＦ番地までの２０４８Ｂｙｔｅの転送が終了したタイミングで、センスアンプ接続スイッチ４２６をセンスアンプ出力ハイ４４９に対してクローズする。また、センスアンプ接続スイッチ４２３をセンスアンプ出力ハイ４４３に対してクローズする。
【００８４】
Ｔ５１９の、センスアンプ接続スイッチ４２６がセンスアンプ出力ハイ４４９に対してクローズされ、センスアンプ接続スイッチ４２３がセンスアンプ出力ハイ４４３に対してクローズされたタイミングで、異バンク間ページ転送バス４５０を介してセンスアンプ１１１に読み出されたプログラム１のカラムアドレスの０ｘ８００番地から０ｘＦＦＦ番地までの２０４８Ｂｙｔｅの、センスアンプ１０８を介したバンク１０４への転送が開始される。
【００８５】
Ｔ５２０、のブートプログラムのカラムアドレスの０ｘ８００番地から０ｘＦＦＦ番地までの２０４８Ｂｙｔｅの転送が終了したタイミングで、センスアンプ接続スイッチ４２６、センスアンプ接続スイッチ４２２、バンク接続スイッチ１２７、バンク接続スイッチ１２８をオープンにして接続スイッチは初期状態に戻る。
【００８６】
Ｔ５２１の、バンク１０２のプログラム格納領域から、バンク１０３、バンク１０４へのプログラムの転送が完了したタイミングで、プログラム転送完了通知部はリセット制御部１３９にプログラム転送完了を通知する。また、センスアンプ接続スイッチ４２２、センスアンプ接続スイッチ４２３、センスアンプ接続スイッチ４２４をクローズする。また、カラムデコーダ接続スイッチ１３１、カラムデコーダ接続スイッチ１３２、カラムデコーダ接続スイッチ１３３、カラムデコーダ接続スイッチ１３４の状態をクローズする。
【００８７】
Ｔ１６のリセット制御部１３９がＣＰＵ１３８へリセット解除信号を出力し、これを受けたタイミングで電子機器１００（ＣＰＵ１３８）がブートプログラムから起動して動作を開始する。
【００８８】
このような構成にする事で、バンク１０２内のプログラム格納領域は、不揮発性メモリ４０１の外部からアクセスされず、ブートプログラムを含む、プログラムは保護される。また、バンク１０２から他のバンクへバンク間転送される為に、ブート処理や他のプログラムの処理も高速に実行することも可能になる。
【００８９】
また、プログラムの転送を不揮発性メモリ４０１の外部バスを介した不図示のＤＭＡやＣＰＵ１３８アクセスを使用せずに、不揮発性メモリ４０１内部で転送する為、電子機器４００の起動時間を速くする事ができる。
【００９０】
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
【００９１】
［第３の実施形態］
第３の実施形態を図３、図６、図７を用いて説明する。なお、以下において、同一構成要素には同じ記号および符号を付しその説明を省略する。図３は、第３の実施の形態に係る、プログラムの配置を示す図である。図６は、第３の実施の形態に係る、電子機器の構成を示す図である。図７は、第３の実施の形態に係る、タイミングチャートを示す図である。
【００９２】
図６において符号６００は第３の実施の形態に係る電子機器である。内部にプロセッサを有する機器であれば、その種類は問わない。符号６０１は、ページサイズ４ＫＢｙｔｅ，バンク容量１６ＫＢｙｔｅ，全容量８０ＫＢｙｔｅ、外部バス幅が３２ビットで、バンク１０２予めブートプログラムを含む、プログラムが格納されていて、異バンク間のページ転送が可能な、第３の実施の形態に係る不揮発性メモリである。
【００９３】
符号６１７は、バンク１０３のカラムデコーダである。６１８は、バンク１０４のカラムデコーダである。６１９は、バンク１０５のカラムデコーダである。６２０は、バンク１０６のカラムデコーダである。６５１は、バンク１０２のカラムデコーダである。
【００９４】
カラムデコーダ６１７，６１８，６１９，６２０，６５１は、電子機器６００の起動直後のプログラム転送コマンド発行部１３５からアクセスにより、バンク１０２のプログラム格納領域から、バンク１０３、バンク１０４、バンク１０５、バンク１０６へのプログラム転送する時のカラムアドレスを制御する。
【００９５】
バンク１０３、バンク１０４、バンク１０５、バンク１０６へプログラム転送が完了すると、ＣＰＵ１３８による電子機器６００の制御が始まる。このとき、不揮発性メモリ６０１の外部のＣＰＵ１３８からのコマンドによりカラムアドレスが制御され、センスアンプに読み出されたページのデータをリードしたり、センスアンプを介してページ書き込みを行う。
【００９６】
６２１は、不揮発性メモリ６０１の外部バス幅である３２ビットの配線からなる異バンク間のページ転送を行うプログラム転送バスである。プログラム転送バス６２１は以下の接続スイッチを有する。６５１は、３２ビット幅の不揮発性メモリ６０１の外部データバスである。６２２はプログラム転送バス６２１の一部であり、カラムデコーダ６１７とプログラム転送バス６２１の接続を選択するカラムデコーダ接続スイッチである。６２３はプログラム転送バス６２１の一部であり、カラムデコーダ６１８とプログラム転送バス６２１の接続を選択するカラムデコーダ接続スイッチである。６２４はプログラム転送バス６２１の一部であり、カラムデコーダ６１９とプログラム転送バス６２１の接続を選択するカラムデコーダ接続スイッチである。６２５はプログラム転送バス６２１の一部であり、カラムデコーダ６２０とプログラム転送バス６２１の接続を選択するカラムデコーダ接続スイッチである。６２６はプログラム転送バス６２１の一部であり、カラムデコーダ６５１とプログラム転送バス６２１の接続を選択するカラムデコーダ接続スイッチである。６３１はプログラム転送バス６２１の一部であり、プログラム転送バス６２１と外部データバス６５１の接続を選択する外部データバス接続スイッチである。６３２はプログラム転送バス６２１の一部であり、プログラム転送バス６２１と外部データバス６５１の接続を選択する外部データバス接続スイッチである。６３３はプログラム転送バス６２１の一部であり、プログラム転送バス６２１と外部データバス６５１の接続を選択する外部データバス接続スイッチである。６３４はプログラム転送バス６２１の一部であり、プログラム転送バス６２１と外部データバス６５１の接続を選択する外部データバス接続スイッチである。
【００９７】
例えば、電源投入時又はリセット時のバンク１０２からバンク１０４にプログラムの転送を行う際は、プログラム転送コマンド発行１３５からのコマンドにより以下の状態となる。
【００９８】
プログラム転送コマンド発行１３５からの、バンク１０２、及びバンク１０４への活性化コマンドにより、センスアンプ接続スイッチ６２６、センスアンプ接続スイッチ６２３、バンク接続スイッチ１２７、バンク接続スイッチ１２８がクローズされ、バンク１０２とバンク１０４が接続された状態になる。
【００９９】
プログラム転送コマンド発行１３５からプログラム転送コマンドが発行されると、カラムデコーダ６５１はセンスアンプ１１１に対して０ｘ０番地から０ｘＦＦＦ番地までのデータをリードする。
【０１００】
同時に、カラムデコーダ６１８は、カラムデコーダ６５１からリードされたデータを０ｘ０番地から０ｘＦＦＦ番地までセンスアンプ６１８にライトしてプログラムが転送される。
【０１０１】
バンク１０２のプログラム格納領域からバンク１０４へのプログラムの転送が完了したタイミングで、センスアンプ接続スイッチ６２６、センスアンプ接続スイッチ６２３、バンク接続スイッチ１２７、バンク接続スイッチ１２８がオープン状態に初期化される。
【０１０２】
以下に、５つのバンクに分割され、ページサイズ４ＫＢｙｔｅ，バンク容量１６ＫＢｙｔｅ，全容量８０ＫＢｙｔｅ、外部バス幅が３２ビットの不揮発性メモリ６０１において、不揮発性メモリ６０１の内部で、バンク１０２のプログラム格納領域から、バンク１０３、バンク１０４へプログラムを転送することでブートプログラムを含む、プログラムの保護と、電子機器６００の起動時間の短縮ができる実施の一例を図７のタイミングチャートを元に示す。
【０１０３】
本第３の実施形態は、不揮発性メモリ６０１の内部の、バンク１０２のプログラム格納領域に予め格納されているプログラムのファームウェアアップ等のプログラムの更新を含まない電子機器６００の通常動作である。
【０１０４】
本第３の実施形態では、図３に示すように、バンク１０２のプログラム格納領域のページ１にブートプログラムが、ページ２にプログラム１が、ページ３にプログラム２が格納されている。
【０１０５】
電子機器６００の起動時に、バンク１０３のページ１にブートプログラムが、バンク１０４のページ１にプログラム１が、バンク１０３のページ２にプログラム２が転送されると設定されている。
【０１０６】
Ｔ１は第１の実施形態と同様である。Ｔ７０２の電源電圧がリセット電圧に達したタイミングからＴ１００の期間後、リセット制御部１３９は不揮発性メモリ６０１へのリセットを解除し、センスアンプ接続スイッチ６２２、センスアンプ接続スイッチ６２３、センスアンプ接続スイッチ６２４、センスアンプ接続スイッチ６２５、センスアンプ接続スイッチ６２６、バンク接続スイッチ６２７、バンク接続スイッチ６２８、バンク接続スイッチ６２９、バンク接続スイッチ６３０、カラムデコーダ接続スイッチ６３１、カラムデコーダ接続スイッチ６３２、カラムデコーダ接続スイッチ６３３、カラムデコーダ接続スイッチ６３４をオープンにする。
【０１０７】
Ｔ７０３のプログラム転送コマンド発行部１３５が、バンク１０２へ活性化コマンドを発行して、バンク１０２のページ１を活性化すると共にソースのバンクとして指定したタイミングでカラムデコーダ接続スイッチ６２６をクローズする。
【０１０８】
Ｔ７０４のプログラム転送コマンド発行部１３５が、バンク１０３へ活性化コマンドを発行して、バンク１０３のページ１を活性化すると共にディスティネーションのバンクとして指定したタイミングでカラムデコーダ接続スイッチ６２２をクローズする。また、バンク１０２とバンク１０３を接続する為の、バンク接続スイッチ１２７をクローズする。
【０１０９】
Ｔ７０５の、センスアンプ１１１、センスアンプ１０７にデータが読みだされたタイミングで、プログラム転送コマンド発行部１３５はプログラム転送コマンドを発行して、外部データバスを介して、センスアンプ１１１に読み出されたブートプログラムの転送が開始される。
【０１１０】
Ｔ７０６のブートプログラムの転送が終了したタイミングで、カラムデコーダ接続スイッチ６２２、バンク接続スイッチ１２７をオープンにして接続スイッチは初期状態に戻る。
【０１１１】
Ｔ７０７のタイミングでは、プログラム転送コマンド発行部１３５が、バンク１０２へ活性化コマンドを発行して、バンク１０２のプログラム格納領域のページ３を活性化する。Ｔ７０８のタイミングでは、プログラム転送コマンド発行部１３５が、バンク１０３へ活性化コマンドを発行して、バンク１０３のページ２を活性化すると共にディスティネーションのバンクとして指定したタイミングでカラムデコーダ接続スイッチ６２２をクローズする。また、バンク１０２とバンク１０３を接続する為の、バンク接続スイッチ１２７をクローズする。
【０１１２】
Ｔ７０９の、センスアンプ１１１、センスアンプ１０７にデータが読みだされたタイミングでは、プログラム転送コマンド発行部１３５はプログラム転送コマンドを発行して、外部データバスを介して、センスアンプ１１１に読み出されたプログラム２の転送が開始される。
【０１１３】
Ｔ７１０のプログラム２の転送が終了したタイミングで、カラムデコーダ接続スイッチ６２２、バンク接続スイッチ１２７をオープンにして接続スイッチは初期状態に戻る。
【０１１４】
Ｔ７１１の、プログラム転送コマンド発行部１３５が、バンク１０２へ活性化コマンドを発行して、バンク１０２のページ２を活性化する。Ｔ７１２の、プログラム転送コマンド発行部１３５が、バンク１０４へ活性化コマンドを発行して、バンク１０４のページ１を活性化すると共にディスティネーションのバンクとして指定したタイミングでカラムデコーダ接続スイッチ６２３をクローズする。また、バンク１０２とバンク１０４を接続する為の、バンク接続スイッチ１２７、バンク接続スイッチ１２８をクローズする。
【０１１５】
Ｔ７１３の、センスアンプ１１１、センスアンプ１０８にデータが読みだされたタイミングで、プログラム転送コマンド発行部１３５はプログラム転送コマンドを発行して、外部データバスを介して、センスアンプ１１１に読み出されたプログラム１の転送が開始される。
【０１１６】
Ｔ７１４の、プログラム１の転送が終了したタイミングで、カラムデコーダ接続スイッチ６２６、カラムデコーダ接続スイッチ６２３、バンク接続スイッチ１２７、バンク接続スイッチ１２８をオープンにして接続スイッチは初期状態に戻る。
【０１１７】
Ｔ７１５の、プログラム格納領域１０２から、バンク１０３、バンク１０４へのプログラムの転送が完了したタイミングで、プログラム転送完了通知部はリセット制御部１３９にプログラム転送完了を通知する。また、カラムデコーダ接続スイッチ６２２、カラムデコーダ接続スイッチ６２３、カラムデコーダ接続スイッチ６２４、カラムデコーダ接続スイッチ６２５をクローズする。また、外部データバス接続スイッチ６３１、外部データバス接続スイッチ６３２、外部データバス接続スイッチ６３３、外部データバス接続スイッチ６３４の状態をクローズする。
【０１１８】
Ｔ７１６のリセット制御部１３９がＣＰＵ１３８へリセット解除したタイミングで、電子機器１００はブートプログラムから起動して動作を開始する。
【０１１９】
このような構成にする事で、バンク１０２は不揮発性メモリ６０１の外部からアクセスされず、不揮発性メモリ６０１内部で異バンク間転送される為に、オリジナルのブートプログラムを含む、プログラムは保護される。
【０１２０】
また、プログラムの転送を不揮発性メモリ６０１の外部バスを介した不図示のＤＭＡやＣＰＵ１３８アクセスを使用せずに、不揮発性メモリ６０１内部で転送する為、電子機器６００の起動時間を速くする事ができる。
【０１２１】
［第４の実施形態］
第４の実施形態を図８、図９、図１０、図１１を用いて説明する。なお、以下において、同一構成要素には同じ記号および符号を付しその説明を省略する。図８は、第４の実施の形態に係る、電子機器の構成を示す図である。図９は、第４の実施の形態に係る、タイミングチャートを示す図である。図１０は、第４の実施の形態に係る、ＣＰＵフローチャートを示す図である。図１１は、第４の実施の形態に係る、プログラムの配置を示す図である。
【０１２２】
符号８００は、第４の実施の形態に係る電子機器である。８０１は、ページサイズ４ＫＢｙｔｅ，バンク容量１６ＫＢｙｔｅ，全容量８０ＫＢｙｔｅで、バンク１０２予めブートプログラムを含む、プログラムが格納されていて、異バンク間のページ転送が可能な、第４の実施の形態に係る不揮発性メモリである。
【０１２３】
８０２は、不揮発性メモリ１０１を構成する１、ページ１、ページ２、ページ３、ページ４の４つのページに分割されたバンクである。このバンク８０２は、不揮発性メモリ１０１に対する外部からのコマンドで、外部からのリード、ライトアクセスが可能になり、電子機器１００の出荷時に予めブートプログラムを含む、プログラムが格納されていているプログラム格納領域を有する。
【０１２４】
以下に、５つのバンクに分割され、ページサイズ４ＫＢｙｔｅ，バンク容量１６ＫＢｙｔｅ，全容量８０ＫＢｙｔｅの不揮発性メモリ８０１において、不揮発性メモリ８０１の内部で、バンク８０２から、バンク１０３、バンク１０４へプログラムを転送することで、ブートプログラムを含む、プログラムの保護と、ファームウェアアップデート可能な電子機器８００の起動時間の短縮ができる、ファームウェアアップ可能な電子機器８００の実施の一例を図９のタイミングチャートを元に示す。
【０１２５】
本第４の実施形態では、不揮発性メモリ８０１の内部の、バンク８０２のプログラム格納領域に予め格納されているプログラムのファームウェアアップ等のプログラムの更新を行う為の動作の一例である。
【０１２６】
本第４の実施形態では、図１１に示すように、バンク８０２のプログラム格納領域のページ１にブートプログラムが、ページ２にファームアップ制御プログラムが、ページ３にプログラム２が予め格納されている。
【０１２７】
電子機器８００の起動時に、プログラム転送コマンド発行部１３５に、バンク１０３のページ１にブートプログラムが、バンク１０４のページ１にファームアップ制御プログラムが、バンク１０３のページ２にファームアップ制御プログラムが転送されると設定されている。
【０１２８】
Ｓ１０００：
ユーザからの制御により電子機器８００電源がオンして、第１の実施形態と同様の、Ｔ１からＴ１７のタイミングで電子機器８００が起動する。
【０１２９】
Ｓ１００１：
ＣＰＵ１３８がファームウェアのアップデートがあるか否かを判定する。この判定は、ユーザによる指示でも良いし、場合によってはネットワーク上の予め設定されたアドレスに該当するファームウェアがアップロードされているか否かで行っても構わない。
【０１３０】
Ｓ１００２（ＣＰＵ１３８がファームウェアのアップデートを検出しない場合）：
ＣＰＵ１３８は、プログラム２を使用した通常のアプリケーション実行を行う。
【０１３１】
Ｓ１００３（ＣＰＵ１３８がファームウェアのアップデートを検出した場合）：
ＣＰＵ１３８は、不揮発性メモリ８０１にバス切り替えコマンドを発行する。
【０１３２】
Ｔ１８の不揮発性メモリ８０１がバス切り替えコマンドを受け取ったタイミングで、センスアンプ接続スイッチ１２６をクローズに、また、センスアンプ接続スイッチ１２２をオープンにしてバスを切り替える事で、バンク８０２のプログラム格納領域に対する不揮発性メモリ８０１からの外部からのアクセスを可能な状態に移行する。
【０１３３】
Ｓ１００４：
ＣＰＵ１３８は、バンク１０４のページ１のファームアップ制御プログラムを実行して、不図示のＤＭＡＣを起動する事で、不図示の更新ファームウェアの格納された記録媒体（または、ダウンロードしたファームウェア）から、バンク８０２のプログラム格納領域に更新ファームウェアを書き込む。
【０１３４】
Ｔ１９の、更新ファームウェアがバンク８０２にライトされたタイミングで、センスアンプ接続スイッチ１２６をオープンに、また、センスアンプ接続スイッチ１２２をクローズにして再度バスを切り替える事で、バンク８０２に対する不揮発性メモリ８０１からのアクセスを不可能にする。
【０１３５】
このような構成にする事で、バンク８０２のプログラム格納領域は不揮発性メモリ８０１の外部からアクセスされず、不揮発性メモリ８０１内部で異バンク間転送される為に、ブートプログラムを含む、プログラムは保護される。
【０１３６】
また、プログラムの転送を不揮発性メモリ８０１の外部バスを介した不図示のＤＭＡＣやＣＰＵ１３８アクセスを使用せずに、不揮発性メモリ８０１内部で転送する為、ファームウェアアップデート可能な電子機器１００の起動時間を速くする事ができる。
【０１３７】
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。例えば、実施形態では保護すべきブートプログラムやアプリケーションプログラムを保持するバンクを１つとしたが、２以上の複数個あってもよい。要は、保護すべきプログラムを格納するバンクと、プロセッサ（ＣＰＵ）が実行する際のプログラムを格納するバンクがあれば良い。
【図１】
2015102911.tif 000003
【図２】
2015102911.tif 000004
【図３】
2015102911.tif 000005
【図４】
2015102911.tif 000006
【図５】
2015102911.tif 000007
【図６】
2015102911.tif 000008
【図７】
2015102911.tif 000009
【図８】
2015102911.tif 000010
【図９】
2015102911.tif 000011
【図１０】
2015102911.tif 000012
【図１１】
2015102911.tif 000013