以下に、本発明の各実施形態を添付図面に基づいて詳細に説明する。なお、以下で説明する不揮発性メモリがMRAMもしくはMARMで構成されるメモリモジュールであり、それを主記憶として利用する電子機器を説明する。
[第1の実施形態]
第1の実施形態を図1、図2、図3を用いて説明する。なお、以下において、同一構成要素には同じ記号および符号を付しその説明を省略する。図1は、第1の実施の形態に係る電子機器の構成を示す図である。図2は、第1の実施の形態に係る、タイミングチャートを示す図である。図3は、第1の実施の形態に係る、プログラムの配置を示す図である。
第1の実施形態では、予めブートプログラムを含むプログラムが格納されていている不揮発性メモリを主記憶とする電子機器において、不揮発性メモリの内部で、プログラム格納領域から、プログラム実行領域へプログラムを転送する。これにより、ブートプログラムを含むプログラムの保護と、起動時間の短縮を図るものである。
図1において、100は、第1の実施の形態に係る電子機器である。電子機器としては、パーソナルコンピュータ、携帯端末、デジタルカメラなど、内部のプロセッサを有する装置であればよく、その種類は問わない。101は、ページサイズ4KByte,バンク容量16KByte、全容量80KByteで、プログラム格納領域102に予めブートプログラムを含む、プログラムが格納されていて、異バンク間のページ転送が可能な、第1の実施の形態に係る不揮発性メモリである。
102は、不揮発性メモリ101の、ページ1、ページ2、ページ3、ページ4の4つのページに分割されたバンクである。このバンク102は、不揮発性メモリ101の外部からのリード、ライトアクセスが不可能で、電子機器100の出荷時に予めブートプログラムを含む、プログラムが格納されていているプログラム格納領域でもある。
例えば、バンク102のページ1には、予めブートプログラムが格納されている。バンク102のページ2には、予め電子機器100のアプリケーションプログラムの一つであるプログラム1が格納されている。バンク102のページ3には、予め電子機器100のアプリケーションプログラムの一つであるプログラム2が格納されている。
103は、不揮発性メモリ101の、ページ1、ページ2、ページ3、ページ4の4つのページに分割されたバンクであり、CPU138のプログラムの実行領域、及びワーク領域として使用されるバンクである。
104は、不揮発性メモリ101の、ページ1、ページ2、ページ3、ページ4の4つのページに分割されたバンクであり、CPU138のプログラムの実行領域、及びワーク領域として使用されるバンクである。
105は、不揮発性メモリ101の、ページ1、ページ2、ページ3、ページ4の4つのページに分割されたバンクであり、CPU138のプログラムの実行領域、及びワーク領域として使用されるバンクである。
106は、不揮発性メモリ101の、ページ1、ページ2、ページ3、ページ4の4つのページに分割されたバンクであり、CPU138のプログラムの実行領域、及びワーク領域として使用されるバンクである。
例えば、CPU138は、バンク103のページ1に配置されるブートプログラムでブートする。アプリケーション動作の際は、CPU138は、バンク103のページ2に配置されるプログラム1、及びバンク104のページ1に配置されるプログラム2を使用して実行する。
107は、バンク103のセンスアンプである。108は、バンク104のセンスアンプである。109は、バンク105のセンスアンプである。110は、バンク106のセンスアンプである。111は、バンク102のセンスアンプである。センスアンプ107、108、109、110、111はロウデコーダ112、113、114、115、116により選択されて活性化されたページを読み出して信号増幅する。
112は、バンク103のロウデコーダである。113は、バンク104のロウデコーダである。114は、バンク105のロウデコーダである。115は、バンク106のロウデコーダである。116は、バンク102のロウデコーダである。ロウデコーダ112,113,114,115,116は、電子機器100の起動直後、つまり、バンク102から、バンク103、バンク104、バンク105、バンク106へプログラムを転送する時には、プログラム転送コマンド発行部135(転送部に相当)から制御され選択されたバンクのページを活性化する。ロウデコーダ112,113,114,115,116は、バンク102から、バンク103、バンク104、バンク105、バンク106へプログラムの転送が完了し、CPU138による電子機器100の制御が始まると、不揮発性メモリ101外部のコマンドにより選択されたバンクのページを活性化する。
117は、バンク103のカラムデコーダである。118は、バンク104のカラムデコーダである。119は、バンク105のカラムデコーダである。120は、バンク106のカラムデコーダである。カラムデコーダ117,118,119,120は不揮発性メモリ101の外部からのコマンドによりカラムアドレスが制御され、センスアンプに読み出されたページのデータをリードしたり、センスアンプを介してページ書き込みを行う。
121は、不揮発性メモリ101のページサイズである4096Byteの配線からなる異バンク間のページ転送を行うプログラム転送バスである。プログラム転送バス121は以下の接続スイッチを有する。122はプログラム転送バス121の一部であり、センスアンプ107とプログラム転送バス121の接続を選択するセンスアンプ接続スイッチである。123はプログラム転送バス121の一部であり、センスアンプ108とプログラム転送バス121の接続を選択するセンスアンプ接続スイッチである。124はプログラム転送バス121の一部であり、センスアンプ109とプログラム転送バス121の接続を選択するセンスアンプ接続スイッチである。125はプログラム転送バス121の一部であり、センスアンプ110とプログラム転送バス121の接続を選択するセンスアンプ接続スイッチである。126はプログラム転送バス121の一部であり、センスアンプ111とプログラム転送バス121の接続を選択するセンスアンプ接続スイッチである。
127はプログラム転送バス121の一部であり、バンク102とバンク103間の接続を選択するバンク接続スイッチである。128はプログラム転送バス121の一部であり、バンク103とバンク104間の接続を選択するバンク接続スイッチである。129はプログラム転送バス121の一部であり、バンク104とバンク105間の接続を選択するバンク接続スイッチである。130はプログラム転送バス121の一部であり、バンク105とバンク106間の接続を選択するバンク接続スイッチである。
131はプログラム転送バス121の一部であり、カラムデコーダ117と、プログラム転送バス121の接続を選択するカラムデコーダ接続スイッチである。132はプログラム転送バス121の一部であり、カラムデコーダ118と、プログラム転送バス121の接続を選択するカラムデコーダ接続スイッチである。133はプログラム転送バス121の一部であり、カラムデコーダ119と、プログラム転送バス121の接続を選択するカラムデコーダ接続スイッチである。134はプログラム転送バス121の一部であり、カラムデコーダ120と、プログラム転送バス121の接続を選択するカラムデコーダ接続スイッチである。
例えば、バンク102のプログラム格納領域のデータ(ブートプログラムなど)をバンク104にプログラムの転送を行う際は、プログラム転送コマンド発行135からのコマンドにより以下の状態となる。プログラム転送コマンド発行135からの、バンク102及びバンク104への活性化コマンドにより、センスアンプ接続スイッチ126、センスアンプ接続スイッチ123、バンク接続スイッチ127、バンク接続スイッチ128がクローズされ、バンク102とバンク104が接続された状態になる。プログラム転送コマンド発行135からプログラム転送コマンドが発行され、バンク102からバンク104にプログラムが転送される。バンク102からバンク104へのプログラムの転送が完了したタイミングで、センスアンプ接続スイッチ126、センスアンプ接続スイッチ123、バンク接続スイッチ127、バンク接続スイッチ128がオープン状態に初期化される。
135は、リセット制御部139からの所定のリセット解除信号を受信して、プログラム転送バス121を介した異バンク間のプログラムの転送を行う為のプログラム転送コマンド発行部である。プログラム転送コマンド発行部の発行するコマンドは、不揮発性メモリ101内のバンク102と、バンク103、バンク104、バンク105、バンク106を活性化する活性化コマンドと、活性化されたページを転送するプログラム転送コマンドからなる。
活性化コマンドには、バンク102と、バンク103、バンク104、バンク105、バンク106を活性化すると共に、活性化するバンクが、プログラム転送の際のいずれがソースとなり、いずれがディスティネーションとなるかを示す信号が重畳されている。もしくは、活性化コマンドには、バンク102と、バンク103、バンク104、バンク105、バンク106を活性化すると共に、活性化するバンクが、プログラ転送の際のソースとなるかディスティネーションとなるかを示すコマンドを発行する。また、活性化コマンド発行によりプログラム転送バス121内の接続スイッチを制御して、異バンク間のプログラムの転送が可能な状態にする。プログラム転送コマンド発行部が発行する活性化コマンドとプログラム転送コマンドは、電子機器100の市場出荷後に書き換え不可能な、ROMやEFUSE等の素子により電子機器の出荷時に設定される。例えば、電子機器の出荷時に、予めバンク102のページ1に格納されているブートプログラムは、バンク103のページ1に転送されるように設定されている。バンク102のページ2に格納されているプログラム1は、バンク104のページ1に転送されるように設定されている。バンク102のページ3に格納されているプログラム2は、バンク103のページ2に転送されるように設定されている。
136はプログラム転送完了通知部である。このプログラム転送完了通知部136は、不揮発性メモリ101内部でバンク102から、当該バンク102以外のバンク103などのプログラム実行領域へのプログラムの転送が完了したら、リセット制御部139にプログラム転送完了を通知する。137は電源制御部であり、ユーザからの操作により電子機器100の電源供給を管理する。138は電子機器100を制御するCPUである。このCPU138は、リセット制御部139からのリセット解除を受けて、ブートプログラムで起動して、プログラムを実行して電子機器100の起動後の制御を行うことになる。139はリセット制御部であり、電子機器100の電源オンの監視し、また、CPU138、及び、不揮発性メモリ101に対するリセットの印加、解除を制御する。リセット制御部139は、電源制御部137からの電源供給をうけて、不揮発性メモリ101に対するリセットを解除する、また、リセット制御部139は、プログラム転送完了通知部136からのプログラム転送完了信号をうけて、CPU138のリセットを解除する。
以下に、5つのバンクに分割され、ページサイズ4KByte,バンク容量16KByte,全容量80KByteの不揮発性メモリ101において、不揮発性メモリ101の内部で、バンク102内のプログラム格納領域からブートプログラムを含むプログラムを、バンク103、バンク104へプログラムを転送することで、オリジナルを格納しているバンク102のプログラム領域のプログラムの保護と、電子機器100の起動時間の短縮ができる実施の一例を図2のタイミングチャートを元に示す。
本実施形態は、不揮発性メモリ101内のバンク102のプログラム格納領域に予め格納されているプログラムのファームウェアアップ等のプログラムの更新を含まない電子機器100の通常動作である。
本実施形態では、図3に示すように、バンク102のプログラム格納領域は、予めそのページ1にブートプログラムが、ページ2にプログラム1が、ページ3にプログラム2が格納されているものとする。また、プログラム転送コマンド発行部135には、電源投入時、又は、リセット時に、バンク103のページ1にブートプログラムを、バンク104のページ1にプログラム1を、バンク103のページ2にプログラム2を転送すると設定されているものとする。
かかる設定がなされた電子機器100の電源をユーザがオンすると、T1のタイミングで、電源制御部137からの電源電圧が上昇していく。T2の電源電圧がリセット電圧に達したタイミングからT100の期間後、リセット制御部139は不揮発性メモリ101へのリセットを解除し、センスアンプ接続スイッチ122、センスアンプ接続スイッチ123、センスアンプ接続スイッチ124、センスアンプ接続スイッチ125、センスアンプ接続スイッチ126、バンク接続スイッチ127、バンク接続スイッチ128、バンク接続スイッチ129、バンク接続スイッチ130、カラムデコーダ接続スイッチ131、カラムデコーダ接続スイッチ132、カラムデコーダ接続スイッチ133、カラムデコーダ接続スイッチ134をオープンにする。
T3のプログラム転送コマンド発行部135が、バンク102へ活性化コマンドを発行して、バンク102を活性化すると共にソースのバンクとして指定したタイミングでセンスアンプ接続スイッチ126をクローズする。
T4のプログラム転送コマンド発行部135が、バンク103へ活性化コマンドを発行して、バンク103のページ1を活性化すると共にディスティネーションのバンクとして指定したタイミングでセンスアンプ接続スイッチ122をクローズする。また、バンク102とバンク103を接続する為の、バンク接続スイッチ127をクローズする。
T5のセンスアンプ111、センスアンプ107にデータが読みだされたタイミングで、プログラム転送コマンド発行部135はプログラム転送コマンドを発行してセンスアンプ111に読み出されたブートプログラムのセンスアンプ107を介したバンク103への転送が開始される。T6のブートプログラムの転送が終了したタイミングで、センスアンプ接続スイッチ122、バンク接続スイッチ127をオープンにする。T7のタイミングで、プログラム転送コマンド発行部135が、バンク102へ活性化コマンドを発行して、バンク102のページ3を活性化する。T8のプログラム転送コマンド発行部135が、バンク103へ活性化コマンドを発行して、バンク103のページ2を活性化すると共にディスティネーションのバンクとして指定したタイミングでセンスアンプ接続スイッチ122をクローズする。また、バンク102とバンク103を接続する為の、バンク接続スイッチ127をクローズする。
T9の、センスアンプ111、センスアンプ107にデータが読みだされたタイミングで、プログラム転送コマンド発行部135はプログラム転送コマンドを発行してセンスアンプ111に読み出されたプログラム2のセンスアンプ107を介したバンク103への転送が開始される。T10の、プログラム2の転送が終了したタイミングで、センスアンプ接続スイッチ122、バンク接続スイッチ127をオープンにする。T11の、プログラム転送コマンド発行部135が、バンク102へ活性化コマンドを発行して、バンク102のページ2を活性化する。T12の、プログラム転送コマンド発行部135が、バンク104へ活性化コマンドを発行して、バンク104のページ1を活性化すると共にディスティネーションのバンクとして指定したタイミングでセンスアンプ接続スイッチ123をクローズする。また、バンク102とバンク104を接続する為の、バンク接続スイッチ127、バンク接続スイッチ128をクローズする。
T13の、センスアンプ111、センスアンプ108にデータが読みだされたタイミングで、プログラム転送コマンド発行部135はプログラム転送コマンドを発行してセンスアンプ111に読み出されたプログラム1のセンスアンプ108を介したバンク104への転送が開始される。T14の、プログラム1の転送が終了したタイミングで、センスアンプ接続スイッチ126、センスアンプ接続スイッチ123、バンク接続スイッチ127、バンク接続スイッチ128をオープンにして接続スイッチは初期状態に戻る。この初期状態では、少なくとも、センスアンプ接続スイッチ126をオープンになる。
T15の、バンク102から、バンク103、バンク104、バンク105、バンク106へのプログラムの転送が完了したタイミングで、プログラム転送完了通知部136はリセット制御部139にプログラム転送完了を通知する。また、センスアンプ接続スイッチ122、センスアンプ接続スイッチ123、センスアンプ接続スイッチ124、センスアンプ接続スイッチ125をクローズする。また、カラムデコーダ接続スイッチ131、カラムデコーダ接続スイッチ132、カラムデコーダ接続スイッチ133、カラムデコーダ接続スイッチ134の状態をクローズする。T16のリセット制御部139がCPU138へリセット解除したタイミングで、電子機器100のCPU138はブートプログラムから起動して動作を開始する。
上記の結果、不揮発性メモリ101内でのプログラム転送が完了したことトリガにして、電子機器100のCPU138はブートプログラムに従って起動することになる。そのとき、既に、不揮発性メモリ101内のバンク102は不揮発性メモリ101の外部(CPU138)と切断状態になってアクセスできない状態になっている。従って、仮にCPU138が暴走したとしても、不揮発性メモリ101のバンク102のプログラム格納領域に記憶保持されたブートプログラムを含む、プログラムは保護される。
また、プログラムの転送を不揮発性メモリ101の外部バスを介した不図示のDMAやCPU138アクセスを使用せずに、不揮発性メモリ101内部で転送する為、電子機器100の起動時間を速くする事ができる。
以上、第1の実施形態を説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
[第2の実施形態]
第2の実施形態を図3、図4、図5を用いて説明する。なお、以下において、同一構成要素には同じ記号および符号を付しその説明を省略する。図3は、本発明の第2の実施の形態に係る、プログラムの配置を示す図である。図4は、第2の実施の形態に係る、電子機器の構成を示す図である。図5は、第2の実施の形態に係る、タイミングチャートを示す図である。
図4における符号400は、第2の実施の形態に係る電子機器である。電子機器400は、プロセッサを収容する機器であればよく、その種類を問わないのは第1の実施形態と同様である。符号401は、ページサイズ4KByte,バンク容量16KByte,全容量80KByteで、バンク102に予めブートプログラムを含む、プログラムが格納されていて、異バンク間のページ転送が可能な、第2の実施の形態に係る不揮発性メモリである。421は、異バンク間のページ転送を行うプログラム転送バスである。プログラム転送バス421は、以下の配線により構成される。450は、プログラム転送バス421内で、異バンク間のページ転送を行う2048Byteの配線からなる異バンク間ページ転送バスである。
プログラム転送バス421と、センスアンプ107,108,109,110,111との配線の幅は4KByteであり、プログラム転送バス421内部で、カラムアドレスの0x0番地から0x7FF番地までの2048Byteの配線と、カラムアドレスの0x800番地から0xFFF番地までの2048Byte配線とに分割されている。440は、プログラム転送バス421と、センスアンプ107のカラムアドレスの0x0番地から0x7FF番地の2048Byteを接続するセンスアンプ入出力ロウである。
441は、プログラム転送バス421と、センスアンプ107のカラムアドレスの0x800番地から0xFFF番地の2048Byteを接続するセンスアンプ入出力ハイである。442は、プログラム転送バス421と、センスアンプ108のカラムアドレスの0x0番地から0x7FF番地の2048Byteを接続するセンスアンプ入出力ロウである。443は、プログラム転送バス421と、センスアンプ108のカラムアドレスの0x800番地から0xFFF番地の2048Byteを接続するセンスアンプ入出力ハイである。
444は、プログラム転送バス421と、センスアンプ109のカラムアドレスの0x0番地から0x7FF番地の2048Byteを接続するセンスアンプ入出力ロウである。445は、プログラム転送バス421と、センスアンプ109のカラムアドレスの0x800番地から0xFFF番地の2048Byteを接続するセンスアンプ入出力ハイである。446は、プログラム転送バス421と、センスアンプ110のカラムアドレスの0x0番地から0x7FF番地の2048Byteを接続するセンスアンプ入出力ロウである。
447は、プログラム転送バス421と、センスアンプ110のカラムアドレスの0x800番地から0xFFF番地の2048Byteを接続するセンスアンプ入出力ハイである。448は、プログラム転送バス421と、センスアンプ111のカラムアドレスの0x0番地から0x7FF番地の2048Byteを接続するセンスアンプ入出力ロウである。
449は、プログラム転送バス421と、センスアンプ111のカラムアドレスの0x800番地から0xFFF番地の2048Byteを接続するセンスアンプ入出力ハイである。
プログラム転送バス421のカラムデコーダ117,118,119,120との配線は4KByteであり、プログラム転送バス421内部で、カラムアドレスの0x0番地から0x7FF番地までの2048Byteの配線と、カラムアドレスの0x800番地から0xFFF番地までの2048Byteの配線が連接されている。
また、プログラム転送バス421は以下の接続スイッチを有する。422はプログラム転送バス421の一部であり、センスアンプ入出力ロウ440、及びセンスアンプ入出力ハイ441とプログラム転送バス421の接続と、を選択するセンスアンプ接続スイッチである。
423はプログラム転送バス421の一部であり、センスアンプ入出力ロウ442、及びセンスアンプ入出力ハイ443と、プログラム転送バス421の接続と、を選択するセンスアンプ接続スイッチである。424はプログラム転送バス421の一部であり、センスアンプ入出力ロウ444、及びセンスアンプ入出力ハイ445と、プログラム転送バス421の接続と、を選択するセンスアンプ接続スイッチである。
425はプログラム転送バス421の一部であり、センスアンプ入出力ロウ446、及びセンスアンプ入出力ハイ447と、プログラム転送バス421の接続と、を選択するセンスアンプ接続スイッチである。426はプログラム転送バス421の一部であり、センスアンプ入出力ロウ448、及びセンスアンプ入出力ハイ449と、プログラム転送バス421の接続と、を選択するセンスアンプ接続スイッチである。
例えば、バンク102のプログラム格納領域内のプログラムを、バンク104にプログラムの転送を行う際は、プログラム転送コマンド発行135からのコマンドにより以下の状態となる。
プログラム転送コマンド発行135からの、バンク102、及びバンク104への活性化コマンドによりセンスアンプ111、センスアンプ107が活性化される。センスアンプ接続スイッチ426がセンスアンプ出力ロウ448に対してクローズされ、センスアンプ接続スイッチ423がセンスアンプ出力ロウ442に対してクローズされ、バンク接続スイッチ127、バンク接続スイッチ128がクローズされ、バンク102とバンク104のカラムアドレスの0x0番地から0x7FF番地の2048Byteが接続された状態になる。
次に、プログラム転送コマンド発行135からプログラム転送コマンドが発行されると、バンク102のセンスアンプ111のカラムアドレスの0x0番地から0x7FF番地の2048Byteがセンスアンプ107を介してバンク104に転送される。
次に、センスアンプ接続スイッチ426がセンスアンプ出力ロウ449に対してクローズされ、センスアンプ接続スイッチ423がセンスアンプ出力ロウ443に対してクローズされ、バンク102とバンク104のカラムアドレスの0x800番地から0xFFF番地の2048Byteが接続された状態になる。
バンク102のセンスアンプ111のカラムアドレスの0x800番地から0xFFF番地の2048Byteがセンスアンプ107を介してバンク104に転送される。
センスアンプ接続スイッチ426、センスアンプ接続スイッチ423、バンク接続スイッチ127、バンク接続スイッチ128がオープン状態に初期化される。
以下に、5つのバンクに分割され、ページサイズ4KByte,バンク容量16KByte,全容量80KByteの不揮発性メモリ401において、不揮発性メモリ401の内部で、バンク102から、バンク103、バンク104へプログラムを転送することでブートプログラムを含む、プログラムの保護と、電子機器400の起動時間の短縮ができる実施の一例を図5のタイミングチャートを元に示す。
本実施形態は、不揮発性メモリ401の内部の、バンク102のプログラム格納領域に予め格納されているプログラムのファームウェアアップ等のプログラムの更新を含まない電子機器400の通常動作である。
本実施形態では、図3に示すように、バンク102のプログラム格納領域には予め、そのページ1にはブートプログラムが、ページ2にはプログラム1が、ページ3にはプログラム2が格納されている。
プログラム転送コマンド発行部135には、電子機器400の起動時の処理として、バンク103のページ1にブートプログラムを、バンク104のページ1にプログラム1を、バンク103のページ2にプログラム2を転送すると設定されている。T1は第1の実施形態と同様である。
T502の電源電圧がリセット電圧に達したタイミングからT100の期間後、リセット制御部139は不揮発性メモリ401へのリセットを解除し、センスアンプ接続スイッチ422、センスアンプ接続スイッチ423、センスアンプ接続スイッチ424、センスアンプ接続スイッチ425、センスアンプ接続スイッチ426、バンク接続スイッチ427、バンク接続スイッチ428、バンク接続スイッチ429、バンク接続スイッチ430、カラムデコーダ接続スイッチ431、カラムデコーダ接続スイッチ432、カラムデコーダ接続スイッチ433、カラムデコーダ接続スイッチ434をオープンにする。
T503のプログラム転送コマンド発行部135が、バンク102へ活性化コマンドを発行して、ブートプログラムが格納されているバンク102のページ1を活性化すると共にソースのバンクとして指定したタイミングで、センスアンプ接続スイッチ426をセンスアンプ入出力ロウ448に対してクローズする。
T504のプログラム転送コマンド発行部135が、バンク103へ活性化コマンドを発行して、バンク103のページ1を活性化すると共にディスティネーションのバンクとして指定したタイミングで、センスアンプ接続スイッチ422をセンスアンプ入出力ロウ440に対してクローズする。また、バンク102とバンク103を接続する為の、バンク接続スイッチ127をクローズする。
T505のセンスアンプ111、センスアンプ107にデータが読みだされたタイミングで、プログラム転送コマンド発行部135はプログラム転送コマンドを発行して、異バンク間ページ転送バス450を介してセンスアンプ111に読み出されたブートプログラムのカラムアドレスの0x0番地から0x7FF番地までの2048Byteの、センスアンプ107を介したバンク103への転送が開始される。
T506のセンスアンプ111のカラムアドレスの0x0番地から0x7FF番地までの2048Byteの転送が終了したタイミングで、センスアンプ接続スイッチ426をセンスアンプ出力ハイ449に対してクローズする。また、センスアンプ接続スイッチ422をセンスアンプ出力ハイ441に対してクローズする。
T507の、センスアンプ接続スイッチ426がセンスアンプ出力ハイ449に対してクローズされ、センスアンプ接続スイッチ422がセンスアンプ出力ハイ441に対してクローズされたタイミングで、異バンク間ページ転送バス450を介してセンスアンプ111に読み出されたブートプログラムのカラムアドレスの0x800番地から0xFFF番地までの、センスアンプ107を介したバンク103への2048Byteの転送が開始される。
T508のセンスアンプ111のカラムアドレスの0x800番地から0xFFF番地までの2048Byteの転送が終了したタイミングで、センスアンプ接続スイッチ422、バンク接続スイッチ127をオープンにする。また、センスアンプ接続スイッチ426をセンスアンプ出力ロウ448に対してクローズする。
T509のタイミングで、プログラム転送コマンド発行部135が、バンク102へ活性化コマンドを発行して、プログラム2が格納されているバンク102のページ3へ活性化コマンドを発行して、バンク102のページ3を活性化する。
T510のプログラム転送コマンド発行部135が、バンク103へ活性化コマンドを発行して、バンク103のページ2を活性化すると共にディスティネーションのバンクとして指定したタイミングで、センスアンプ接続スイッチ422をセンスアンプ入出力ロウ440に対してクローズする。また、バンク102とバンク103を接続する為の、バンク接続スイッチ127をクローズする。
T511のセンスアンプ111、センスアンプ107にデータが読みだされたタイミングで、プログラム転送コマンド発行部135はプログラム転送コマンドを発行して、異バンク間ページ転送バス450を介しセンスアンプ111に読み出されたプログラム2のカラムアドレスの0x0番地から0x7FF番地までの2048Byteの、センスアンプ107を介したバンク103への転送が開始される。
T512のセンスアンプ111のカラムアドレスの0x0番地から0x7FF番地までの2048Byteの転送が終了したタイミングで、センスアンプ接続スイッチ426をセンスアンプ出力ハイ449に対してクローズする。また、センスアンプ接続スイッチ422をセンスアンプ出力ハイ441に対してクローズする。
T513のセンスアンプ接続スイッチ426がセンスアンプ出力ハイ449に対してクローズされ、センスアンプ接続スイッチ422がセンスアンプ出力ハイ441に対してクローズされたタイミングで、異バンク間ページ転送バス450を介してセンスアンプ111に読み出されたプログラム2のカラムアドレスの0x800番地から0xFFF番地までの2048Byteの、センスアンプ107を介したバンク103への転送が開始される。
T514のブートプログラムのカラムアドレスの0x800番地から0xFFF番地までの2048Byteの転送が終了したタイミングで、センスアンプ接続スイッチ422、バンク接続スイッチ127をオープンにする。また、センスアンプ接続スイッチ426をセンスアンプ出力ロウ448に対してクローズする。
T515のタイミングで、プログラム転送コマンド発行部135が、バンク102へ活性化コマンドを発行して、プログラム1が格納されているバンク102のページ2へ活性化コマンドを発行して、バンク102のページ2を活性化する。
T516のプログラム転送コマンド発行部135が、バンク104へ活性化コマンドを発行して、バンク104のページ1を活性化すると共にディスティネーションのバンクとして指定したタイミングで、センスアンプ接続スイッチ423をセンスアンプ出力ロウ442に対してクローズする。また、バンク102とバンク104を接続する為の、バンク接続スイッチ127、及びバンク接続スイッチ128をクローズする。
T517のセンスアンプ111、センスアンプ108にデータが読みだされたタイミングで、プログラム転送コマンド発行部135はプログラム転送コマンドを発行して、異バンク間ページ転送バス450を介しセンスアンプ111に読み出されたプログラム1のカラムアドレスの0x0番地から0x7FF番地までの2048Byteの、センスアンプ108を介したバンク104への転送が開始される。
T518のセンスアンプ111のカラムアドレスの0x0番地から0x7FF番地までの2048Byteの転送が終了したタイミングで、センスアンプ接続スイッチ426をセンスアンプ出力ハイ449に対してクローズする。また、センスアンプ接続スイッチ423をセンスアンプ出力ハイ443に対してクローズする。
T519の、センスアンプ接続スイッチ426がセンスアンプ出力ハイ449に対してクローズされ、センスアンプ接続スイッチ423がセンスアンプ出力ハイ443に対してクローズされたタイミングで、異バンク間ページ転送バス450を介してセンスアンプ111に読み出されたプログラム1のカラムアドレスの0x800番地から0xFFF番地までの2048Byteの、センスアンプ108を介したバンク104への転送が開始される。
T520、のブートプログラムのカラムアドレスの0x800番地から0xFFF番地までの2048Byteの転送が終了したタイミングで、センスアンプ接続スイッチ426、センスアンプ接続スイッチ422、バンク接続スイッチ127、バンク接続スイッチ128をオープンにして接続スイッチは初期状態に戻る。
T521の、バンク102のプログラム格納領域から、バンク103、バンク104へのプログラムの転送が完了したタイミングで、プログラム転送完了通知部はリセット制御部139にプログラム転送完了を通知する。また、センスアンプ接続スイッチ422、センスアンプ接続スイッチ423、センスアンプ接続スイッチ424をクローズする。また、カラムデコーダ接続スイッチ131、カラムデコーダ接続スイッチ132、カラムデコーダ接続スイッチ133、カラムデコーダ接続スイッチ134の状態をクローズする。
T16のリセット制御部139がCPU138へリセット解除信号を出力し、これを受けたタイミングで電子機器100(CPU138)がブートプログラムから起動して動作を開始する。
このような構成にする事で、バンク102内のプログラム格納領域は、不揮発性メモリ401の外部からアクセスされず、ブートプログラムを含む、プログラムは保護される。また、バンク102から他のバンクへバンク間転送される為に、ブート処理や他のプログラムの処理も高速に実行することも可能になる。
また、プログラムの転送を不揮発性メモリ401の外部バスを介した不図示のDMAやCPU138アクセスを使用せずに、不揮発性メモリ401内部で転送する為、電子機器400の起動時間を速くする事ができる。
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
[第3の実施形態]
第3の実施形態を図3、図6、図7を用いて説明する。なお、以下において、同一構成要素には同じ記号および符号を付しその説明を省略する。図3は、第3の実施の形態に係る、プログラムの配置を示す図である。図6は、第3の実施の形態に係る、電子機器の構成を示す図である。図7は、第3の実施の形態に係る、タイミングチャートを示す図である。
図6において符号600は第3の実施の形態に係る電子機器である。内部にプロセッサを有する機器であれば、その種類は問わない。符号601は、ページサイズ4KByte,バンク容量16KByte,全容量80KByte、外部バス幅が32ビットで、バンク102予めブートプログラムを含む、プログラムが格納されていて、異バンク間のページ転送が可能な、第3の実施の形態に係る不揮発性メモリである。
符号617は、バンク103のカラムデコーダである。618は、バンク104のカラムデコーダである。619は、バンク105のカラムデコーダである。620は、バンク106のカラムデコーダである。651は、バンク102のカラムデコーダである。
カラムデコーダ617,618,619,620,651は、電子機器600の起動直後のプログラム転送コマンド発行部135からアクセスにより、バンク102のプログラム格納領域から、バンク103、バンク104、バンク105、バンク106へのプログラム転送する時のカラムアドレスを制御する。
バンク103、バンク104、バンク105、バンク106へプログラム転送が完了すると、CPU138による電子機器600の制御が始まる。このとき、不揮発性メモリ601の外部のCPU138からのコマンドによりカラムアドレスが制御され、センスアンプに読み出されたページのデータをリードしたり、センスアンプを介してページ書き込みを行う。
621は、不揮発性メモリ601の外部バス幅である32ビットの配線からなる異バンク間のページ転送を行うプログラム転送バスである。プログラム転送バス621は以下の接続スイッチを有する。651は、32ビット幅の不揮発性メモリ601の外部データバスである。622はプログラム転送バス621の一部であり、カラムデコーダ617とプログラム転送バス621の接続を選択するカラムデコーダ接続スイッチである。623はプログラム転送バス621の一部であり、カラムデコーダ618とプログラム転送バス621の接続を選択するカラムデコーダ接続スイッチである。624はプログラム転送バス621の一部であり、カラムデコーダ619とプログラム転送バス621の接続を選択するカラムデコーダ接続スイッチである。625はプログラム転送バス621の一部であり、カラムデコーダ620とプログラム転送バス621の接続を選択するカラムデコーダ接続スイッチである。626はプログラム転送バス621の一部であり、カラムデコーダ651とプログラム転送バス621の接続を選択するカラムデコーダ接続スイッチである。631はプログラム転送バス621の一部であり、プログラム転送バス621と外部データバス651の接続を選択する外部データバス接続スイッチである。632はプログラム転送バス621の一部であり、プログラム転送バス621と外部データバス651の接続を選択する外部データバス接続スイッチである。633はプログラム転送バス621の一部であり、プログラム転送バス621と外部データバス651の接続を選択する外部データバス接続スイッチである。634はプログラム転送バス621の一部であり、プログラム転送バス621と外部データバス651の接続を選択する外部データバス接続スイッチである。
例えば、電源投入時又はリセット時のバンク102からバンク104にプログラムの転送を行う際は、プログラム転送コマンド発行135からのコマンドにより以下の状態となる。
プログラム転送コマンド発行135からの、バンク102、及びバンク104への活性化コマンドにより、センスアンプ接続スイッチ626、センスアンプ接続スイッチ623、バンク接続スイッチ127、バンク接続スイッチ128がクローズされ、バンク102とバンク104が接続された状態になる。
プログラム転送コマンド発行135からプログラム転送コマンドが発行されると、カラムデコーダ651はセンスアンプ111に対して0x0番地から0xFFF番地までのデータをリードする。
同時に、カラムデコーダ618は、カラムデコーダ651からリードされたデータを0x0番地から0xFFF番地までセンスアンプ618にライトしてプログラムが転送される。
バンク102のプログラム格納領域からバンク104へのプログラムの転送が完了したタイミングで、センスアンプ接続スイッチ626、センスアンプ接続スイッチ623、バンク接続スイッチ127、バンク接続スイッチ128がオープン状態に初期化される。
以下に、5つのバンクに分割され、ページサイズ4KByte,バンク容量16KByte,全容量80KByte、外部バス幅が32ビットの不揮発性メモリ601において、不揮発性メモリ601の内部で、バンク102のプログラム格納領域から、バンク103、バンク104へプログラムを転送することでブートプログラムを含む、プログラムの保護と、電子機器600の起動時間の短縮ができる実施の一例を図7のタイミングチャートを元に示す。
本第3の実施形態は、不揮発性メモリ601の内部の、バンク102のプログラム格納領域に予め格納されているプログラムのファームウェアアップ等のプログラムの更新を含まない電子機器600の通常動作である。
本第3の実施形態では、図3に示すように、バンク102のプログラム格納領域のページ1にブートプログラムが、ページ2にプログラム1が、ページ3にプログラム2が格納されている。
電子機器600の起動時に、バンク103のページ1にブートプログラムが、バンク104のページ1にプログラム1が、バンク103のページ2にプログラム2が転送されると設定されている。
T1は第1の実施形態と同様である。T702の電源電圧がリセット電圧に達したタイミングからT100の期間後、リセット制御部139は不揮発性メモリ601へのリセットを解除し、センスアンプ接続スイッチ622、センスアンプ接続スイッチ623、センスアンプ接続スイッチ624、センスアンプ接続スイッチ625、センスアンプ接続スイッチ626、バンク接続スイッチ627、バンク接続スイッチ628、バンク接続スイッチ629、バンク接続スイッチ630、カラムデコーダ接続スイッチ631、カラムデコーダ接続スイッチ632、カラムデコーダ接続スイッチ633、カラムデコーダ接続スイッチ634をオープンにする。
T703のプログラム転送コマンド発行部135が、バンク102へ活性化コマンドを発行して、バンク102のページ1を活性化すると共にソースのバンクとして指定したタイミングでカラムデコーダ接続スイッチ626をクローズする。
T704のプログラム転送コマンド発行部135が、バンク103へ活性化コマンドを発行して、バンク103のページ1を活性化すると共にディスティネーションのバンクとして指定したタイミングでカラムデコーダ接続スイッチ622をクローズする。また、バンク102とバンク103を接続する為の、バンク接続スイッチ127をクローズする。
T705の、センスアンプ111、センスアンプ107にデータが読みだされたタイミングで、プログラム転送コマンド発行部135はプログラム転送コマンドを発行して、外部データバスを介して、センスアンプ111に読み出されたブートプログラムの転送が開始される。
T706のブートプログラムの転送が終了したタイミングで、カラムデコーダ接続スイッチ622、バンク接続スイッチ127をオープンにして接続スイッチは初期状態に戻る。
T707のタイミングでは、プログラム転送コマンド発行部135が、バンク102へ活性化コマンドを発行して、バンク102のプログラム格納領域のページ3を活性化する。T708のタイミングでは、プログラム転送コマンド発行部135が、バンク103へ活性化コマンドを発行して、バンク103のページ2を活性化すると共にディスティネーションのバンクとして指定したタイミングでカラムデコーダ接続スイッチ622をクローズする。また、バンク102とバンク103を接続する為の、バンク接続スイッチ127をクローズする。
T709の、センスアンプ111、センスアンプ107にデータが読みだされたタイミングでは、プログラム転送コマンド発行部135はプログラム転送コマンドを発行して、外部データバスを介して、センスアンプ111に読み出されたプログラム2の転送が開始される。
T710のプログラム2の転送が終了したタイミングで、カラムデコーダ接続スイッチ622、バンク接続スイッチ127をオープンにして接続スイッチは初期状態に戻る。
T711の、プログラム転送コマンド発行部135が、バンク102へ活性化コマンドを発行して、バンク102のページ2を活性化する。T712の、プログラム転送コマンド発行部135が、バンク104へ活性化コマンドを発行して、バンク104のページ1を活性化すると共にディスティネーションのバンクとして指定したタイミングでカラムデコーダ接続スイッチ623をクローズする。また、バンク102とバンク104を接続する為の、バンク接続スイッチ127、バンク接続スイッチ128をクローズする。
T713の、センスアンプ111、センスアンプ108にデータが読みだされたタイミングで、プログラム転送コマンド発行部135はプログラム転送コマンドを発行して、外部データバスを介して、センスアンプ111に読み出されたプログラム1の転送が開始される。
T714の、プログラム1の転送が終了したタイミングで、カラムデコーダ接続スイッチ626、カラムデコーダ接続スイッチ623、バンク接続スイッチ127、バンク接続スイッチ128をオープンにして接続スイッチは初期状態に戻る。
T715の、プログラム格納領域102から、バンク103、バンク104へのプログラムの転送が完了したタイミングで、プログラム転送完了通知部はリセット制御部139にプログラム転送完了を通知する。また、カラムデコーダ接続スイッチ622、カラムデコーダ接続スイッチ623、カラムデコーダ接続スイッチ624、カラムデコーダ接続スイッチ625をクローズする。また、外部データバス接続スイッチ631、外部データバス接続スイッチ632、外部データバス接続スイッチ633、外部データバス接続スイッチ634の状態をクローズする。
T716のリセット制御部139がCPU138へリセット解除したタイミングで、電子機器100はブートプログラムから起動して動作を開始する。
このような構成にする事で、バンク102は不揮発性メモリ601の外部からアクセスされず、不揮発性メモリ601内部で異バンク間転送される為に、オリジナルのブートプログラムを含む、プログラムは保護される。
また、プログラムの転送を不揮発性メモリ601の外部バスを介した不図示のDMAやCPU138アクセスを使用せずに、不揮発性メモリ601内部で転送する為、電子機器600の起動時間を速くする事ができる。
[第4の実施形態]
第4の実施形態を図8、図9、図10、図11を用いて説明する。なお、以下において、同一構成要素には同じ記号および符号を付しその説明を省略する。図8は、第4の実施の形態に係る、電子機器の構成を示す図である。図9は、第4の実施の形態に係る、タイミングチャートを示す図である。図10は、第4の実施の形態に係る、CPUフローチャートを示す図である。図11は、第4の実施の形態に係る、プログラムの配置を示す図である。
符号800は、第4の実施の形態に係る電子機器である。801は、ページサイズ4KByte,バンク容量16KByte,全容量80KByteで、バンク102予めブートプログラムを含む、プログラムが格納されていて、異バンク間のページ転送が可能な、第4の実施の形態に係る不揮発性メモリである。
802は、不揮発性メモリ101を構成する1、ページ1、ページ2、ページ3、ページ4の4つのページに分割されたバンクである。このバンク802は、不揮発性メモリ101に対する外部からのコマンドで、外部からのリード、ライトアクセスが可能になり、電子機器100の出荷時に予めブートプログラムを含む、プログラムが格納されていているプログラム格納領域を有する。
以下に、5つのバンクに分割され、ページサイズ4KByte,バンク容量16KByte,全容量80KByteの不揮発性メモリ801において、不揮発性メモリ801の内部で、バンク802から、バンク103、バンク104へプログラムを転送することで、ブートプログラムを含む、プログラムの保護と、ファームウェアアップデート可能な電子機器800の起動時間の短縮ができる、ファームウェアアップ可能な電子機器800の実施の一例を図9のタイミングチャートを元に示す。
本第4の実施形態では、不揮発性メモリ801の内部の、バンク802のプログラム格納領域に予め格納されているプログラムのファームウェアアップ等のプログラムの更新を行う為の動作の一例である。
本第4の実施形態では、図11に示すように、バンク802のプログラム格納領域のページ1にブートプログラムが、ページ2にファームアップ制御プログラムが、ページ3にプログラム2が予め格納されている。
電子機器800の起動時に、プログラム転送コマンド発行部135に、バンク103のページ1にブートプログラムが、バンク104のページ1にファームアップ制御プログラムが、バンク103のページ2にファームアップ制御プログラムが転送されると設定されている。
S1000:
ユーザからの制御により電子機器800電源がオンして、第1の実施形態と同様の、T1からT17のタイミングで電子機器800が起動する。
S1001:
CPU138がファームウェアのアップデートがあるか否かを判定する。この判定は、ユーザによる指示でも良いし、場合によってはネットワーク上の予め設定されたアドレスに該当するファームウェアがアップロードされているか否かで行っても構わない。
S1002(CPU138がファームウェアのアップデートを検出しない場合):
CPU138は、プログラム2を使用した通常のアプリケーション実行を行う。
S1003(CPU138がファームウェアのアップデートを検出した場合):
CPU138は、不揮発性メモリ801にバス切り替えコマンドを発行する。
T18の不揮発性メモリ801がバス切り替えコマンドを受け取ったタイミングで、センスアンプ接続スイッチ126をクローズに、また、センスアンプ接続スイッチ122をオープンにしてバスを切り替える事で、バンク802のプログラム格納領域に対する不揮発性メモリ801からの外部からのアクセスを可能な状態に移行する。
S1004:
CPU138は、バンク104のページ1のファームアップ制御プログラムを実行して、不図示のDMACを起動する事で、不図示の更新ファームウェアの格納された記録媒体(または、ダウンロードしたファームウェア)から、バンク802のプログラム格納領域に更新ファームウェアを書き込む。
T19の、更新ファームウェアがバンク802にライトされたタイミングで、センスアンプ接続スイッチ126をオープンに、また、センスアンプ接続スイッチ122をクローズにして再度バスを切り替える事で、バンク802に対する不揮発性メモリ801からのアクセスを不可能にする。
このような構成にする事で、バンク802のプログラム格納領域は不揮発性メモリ801の外部からアクセスされず、不揮発性メモリ801内部で異バンク間転送される為に、ブートプログラムを含む、プログラムは保護される。
また、プログラムの転送を不揮発性メモリ801の外部バスを介した不図示のDMACやCPU138アクセスを使用せずに、不揮発性メモリ801内部で転送する為、ファームウェアアップデート可能な電子機器100の起動時間を速くする事ができる。
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。例えば、実施形態では保護すべきブートプログラムやアプリケーションプログラムを保持するバンクを1つとしたが、2以上の複数個あってもよい。要は、保護すべきプログラムを格納するバンクと、プロセッサ(CPU)が実行する際のプログラムを格納するバンクがあれば良い。