(57)【要約】【課題】書き込み処理プログラムをオンチップ不揮発性メモリに保持させたとき、書き込みの信頼性を向上させる。【解決手段】データ処理装置は、中央処理装置、揮発性メモリ（ＲＡＭ）、書き込みプログラムとそれを揮発性メモリへ転送する転送制御プログラムを格納する第１記憶領域と、それを中央処理装置に実行させて情報が書き込み可能にされ、かつ第１動作モードにおいて中央処理装置が処理する制御プログラムを格納する第２記憶領域とを有する電気的に書き込み可能な不揮発性メモリ、及び第１動作モードにおいて中央処理装置によって制御情報（ＳＣＯ）が設定される記憶回路（ＦＣＣＳ）を有する。記憶回路への制御情報の設定に応答して中央処理装置は転送制御プログラムを実行して書き込みプログラムを揮発性メモリへ転送し、揮発性メモリへの書き込みプログラムの転送の完了に応答して制御プログラムを実行する第１動作モードへ中央処理装置を復帰させる。【選択図】図１
2010170579.tif 000002
【特許請求の範囲】
【請求項１】
中央処理装置と、揮発性メモリと、
書き込みプログラムと前記書き込みプログラムを前記揮発性メモリへ転送するための転送制御プログラムとを格納する第１記憶領域と、前記書き込みプログラムを前記中央処理装置に実行させることによって情報が書き込み可能にされ、かつ、第１動作モードにおいて前記中央処理装置によって処理される制御プログラムを格納する第２記憶領域とを有する電気的に書き込み可能な不揮発性メモリと、
前記第１動作モードにおいて前記制御プログラムを実行する前記中央処理装置によって制御情報が設定される記憶回路とを有し、
前記記憶回路への前記制御情報の設定に応答して、前記中央処理装置は前記転送制御プログラムを実行して前記書き込みプログラムを前記揮発性メモリへ転送し、
前記揮発性メモリへの前記書き込みプログラムの転送の完了に応答して、前記制御プログラムを実行する前記第１動作モードへ前記中央処理装置を復帰させることを特徴とするデータ処理装置。
【請求項２】
前記中央処理装置が前記制御プログラムを実行する前記第１動作モードにおいて、前記中央処理装置は前記制御プログラムから前記揮発性メモリに転送された前記書き込みプログラムに処理を移行することによって、前記不揮発性メモリに情報を書き込み、
前記不揮発性メモリへの情報の書き込み終了に応答して、前記中央処理装置は前記書き込みプログラムの実行から前記制御プログラムの実行へ処理を復帰することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記中央処理装置、前記揮発性メモリ及び前記不揮発性メモリが結合されるバスと、
前記バスに結合され、前記中央処理装置と異なるバスマスタ装置と、
前記バスに結合され、バス権を制御するバス制御回路と、をさらに有し、
前記バス制御回路は、前記央処理装置が前記転送制御プログラムを実行している間、前記バスマスタ装置からの前記バス権の要求を排除することを特徴とする請求項１記載のデータ処理装置。
【請求項４】
前記バス及び前記中央処理装置に結合され、割り込み要求を前記中央処理装置へ通知する割り込み制御回路を含み、
前記割り込み制御回路は、前記中央処理装置が前記転送制御プログラムを実行している間に受けた割り込み要求を保持する保持回路を有し、
前記保持回路に保持された割り込み要求は、前記中央処理装置の前記転送制御プログラムの実行の完了に応答して、前記中央処理装置によって処理されることを特徴とする請求項３記載のデータ処理装置。
【請求項５】
前記バス及び前記中央処理装置に結合され、割り込み要求乃至例外処理要求を前記中央処理装置へ通知する割り込み制御回路を含み、
前記割り込み制御回路は、前記記憶回路への前記制御情報の設定に応答して、前記中央処理装置へノンマスカブル割り込みの優先度より高い優先度を有する例外処理要求を発生し、
前記中央処理装置は、前記例外処理要求の受領に応答して、前記制御プログラムを実行する前記第１動作モードから前記転送制御プログラムの実行へ移行し、
前記割り込み制御回路は、前記中央処理装置が前記転送制御プログラムを実行している間に受けた割り込み要求を保持する保持回路を有し、
前記保持回路に保持された割り込み要求は、前記中央処理装置の前記転送制御プログラムの実行の完了に応答して、前記中央処理装置によって処理されることを特徴とする請求項１記載のデータ処理装置。
【請求項６】
前記不揮発性メモリは、フローティングゲートを有する電気的に書き込み及び消去可能な複数のメモリセルを有することを特徴とする請求項１記載のデータ処理装置。
【請求項７】
前記不揮発性メモリは、フラッシュメモリである請求項６記載のデータ処理装置。
【請求項８】
前記データ処理装置は、１つの半導体基板上に形成されることを特徴とする請求項１記載のデータ処理装置。
【請求項９】
中央処理装置と、揮発性メモリと、
消去プログラムと前記消去プログラムを前記揮発性メモリへ転送するための転送制御プログラムとを格納する第１記憶領域と、前記消去プログラムを前記中央処理装置に実行させることによって情報が消去可能にされ、かつ、第１動作モードにおいて前記中央処理装置によって処理される制御プログラムを格納する第２記憶領域とを有する電気的に消去可能な不揮発性メモリと、
前記第１動作モードにおいて前記制御プログラムを実行する前記中央処理装置によって制御情報が設定される記憶回路とを有し、
前記中央処理装置は、前記記憶回路への前記制御情報の設定に応答して、前記転送制御プログラムを実行して前記消去プログラムを前記揮発性メモリへ転送し、
前記中央処理装置は、前記揮発性メモリへの前記消去プログラムの転送の完了に応答して、前記制御プログラムを実行する前記第１動作モードへ復帰することを特徴とするデータ処理装置。
【請求項１０】
前記中央処理装置が前記制御プログラムを実行する前記第１動作モードにおいて、前記中央処理装置は前記制御プログラムから前記揮発性メモリに転送された前記消去プログラムに処理を移行することによって、前記不揮発性メモリの情報を消去し、
前記不揮発性メモリへの情報の消去の終了に応答して、前記中央処理装置は前記消去プログラムの実行から前記制御プログラムの実行へ処理を復帰することを特徴とする請求項９記載のデータ処理装置。
【請求項１１】
前記中央処理装置、前記揮発性メモリ及び前記不揮発性メモリが結合されるバスと、
前記バスに結合され、前記中央処理装置と異なるバスマスタ装置と、
前記バスに結合され、バス権を制御するバス制御回路と、をさらに有し、
前記バス制御回路は、前記中央処理装置が前記転送制御プログラムを実行している間、前記バスマスタ装置からの前記バス権の要求を排除することを特徴とする請求項９記載のデータ処理装置。
【請求項１２】
前記中央処理装置に結合され、割り込み要求を前記中央処理装置へ通知する割り込み制御回路を含み、
前記割り込み制御回路は、前記中央処理装置が前記転送制御プログラムを実行している間に受けた割り込み要求を保持する保持回路を有し、
前記保持回路に保持された割り込み要求は、前記中央処理装置の前記転送制御プログラムの実行の完了に応答して、前記中央処理装置によって処理されることを特徴とする請求項１１記載のデータ処理装置。
【請求項１３】
前記中央処理装置に結合され、割り込み要求乃至例外処理要求を前記中央処理装置へ通知する割り込み制御回路を含み、
前記割り込み制御回路は、前記記憶回路への前記制御情報の設定に応答して、前記中央処理装置へノンマスカブル割り込みの優先度より高い優先度を有する例外処理要求を発生し、
前記中央処理装置は、前記例外処理要求の受領に応答して、前記制御プログラムを実行する前記第１動作モードから前記転送制御プログラムの実行へ移行し、
前記割り込み制御回路は、前記中央処理装置が前記転送制御プログラムを実行している間に受けた割り込み要求を保持する保持回路を有し、
前記保持回路に保持された割り込み要求は、前記中央処理装置の前記転送制御プログラムの実行の完了に応答して、前記中央処理装置によって処理されることを特徴とする請求項９記載のデータ処理装置。
【請求項１４】
前記不揮発性メモリは、フローティングゲートを有する電気的に書き込み及び消去可能な複数のメモリセルを有することを特徴とする請求項９記載のデータ処理装置。
【請求項１５】
前記不揮発性メモリは、フラッシュメモリであることを特徴とする請求項１４記載のデータ処理装置。
【請求項１６】
前記データ処理装置は、１つの半導体基板上に形成されることを特徴とする請求項９記載のデータ処理装置。
【請求項１７】
中央処理装置と、揮発性メモリと、
書き込み及び消去プログラムと前記書き込み及び消去プログラムを前記揮発性メモリへ転送するための転送制御プログラムとを格納する第１記憶領域と、前記書き込み及び消去プログラムを前記中央処理装置に実行させることによって情報が書き込み及び消去可能にされ、かつ、第１動作モードにおいて前記中央処理装置によって処理される制御プログラムを格納する第２記憶領域とを有する電気的に消去可能な不揮発性メモリと、
前記第１動作モードにおいて前記制御プログラムを実行する前記中央処理装置によって制御情報が設定される記憶回路とを有し、
前記記憶回路への前記制御情報の設定に応答して、前記中央処理装置は前記転送制御プログラムを実行して前記書き込み及び消去プログラムを前記揮発性メモリへ転送し、前記揮発性メモリへの前記書き込み及び消去プログラムの転送の完了に応答して、前記制御プログラムを実行する前記第１動作モードへ前記中央処理装置を復帰させることを特徴とするデータ処理装置。
【請求項１８】
前記中央処理装置が前記制御プログラムを実行する前記第１動作モードにおいて、前記中央処理装置は前記制御プログラムから前記揮発性メモリに転送された前記書き込みプログラムまたは消去プログラムに処理を移行することによって、前記不揮発性メモリに情報を書き込みまたは前記不揮発性メモリから情報を消去し、
前記不揮発性メモリへの情報の書き込みの終了または情報の消去終了に応答して、前記中央処理装置は前記書き込みプログラムまたは前記消去プログラムの実行から前記制御プログラムの実行へ処理を復帰することを特徴とする請求項１７記載のデータ処理装置。
【請求項１９】
前記中央処理装置、前記揮発性メモリ及び前記不揮発性メモリが結合されるバスと、
前記バスに結合され、前記中央処理装置と異なるバスマスタ装置と、
前記バスに結合され、バス権を制御するバス制御回路と、をさらに有し、
前記バス制御回路は、前記中央処理装置が前記転送制御プログラムを実行している間、前記バスマスタ装置からの前記バス権の要求を排除することを特徴とする請求項１７記載のデータ処理装置。
【請求項２０】
前記バス及び前記中央処理装置に結合され、割り込み要求を前記中央処理装置へ通知する割り込み制御回路を含み、
前記割り込み制御回路は、前記中央処理装置が前記転送制御プログラムを実行している間に受けた割り込み要求を保持する保持回路を有し、
前記保持回路に保持された割り込み要求は、前記中央処理装置の前記転送制御プログラムの実行の完了に応答して、前記中央処理装置によって処理されることを特徴とする請求項１９記載のデータ処理装置。
【請求項２１】
前記中央処理装置に結合され、割り込み要求乃至例外処理要求を前記中央処理装置へ通知する割り込み制御回路を含み、
前記割り込み制御回路は、前記記憶回路への前記制御情報の設定に応答して、前記中央処理装置へノンマスカブル割り込みの優先度より高い優先度を有する例外処理要求を発生し、
前記中央処理装置は、前記例外処理要求の受領に応答して、前記制御プログラムを実行する前記第１動作モードから前記転送制御プログラムの実行へ移行し、
前記割り込み制御回路は、前記中央処理装置が前記転送制御プログラムを実行している間に受けた割り込み要求を保持する保持回路を有し、
前記保持回路に保持された割り込み要求は、前記中央処理装置の前記転送制御プログラムの実行の完了に応答して、前記中央処理装置によって処理されることを特徴とする請求項１７記載のデータ処理装置。
【請求項２２】
前記不揮発性メモリは、フローティングゲートを有する電気的に書き込み及び消去可能な複数のメモリセルを有することを特徴とする請求項１７記載のデータ処理装置。
【請求項２３】
前記不揮発性メモリは、フラッシュメモリであることを特徴とする請求項２２記載のデータ処理装置。
【請求項２４】
前記データ処理装置は、１つの半導体基板上に形成されることを特徴とする請求項１７記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、消去及び書き込み可能な不揮発性メモリとＣＰＵ（中央処理装置）を有するデータ処理装置やマイクロコンピュータ、特に前記不揮発性メモリに対する消去及び書き込み処理をプログラム制御で行うようにしたマイクロコンピュータに関し、例えばフラッシュメモリを有するワンチップのマイクロコンピュータに適用して有効な技術に関する。
【背景技術】
【０００２】
フラッシュメモリなどの電気的に消去及び書き込み可能な不揮発性メモリはメモリセルにプログラムされる閾値電圧の相違に応じて情報を記憶する。フラッシュメモリにおいてその閾値電圧の相違は、フローティングゲートが保有する電子又は正孔の量の相違によって実現される。例えば熱平衡状態の閾値電圧に対して相対的に高い閾値電圧状態を書き込み状態、相対的に低い閾値電圧状態を消去状態と称する（逆の定義も可能である）。このとき、メモリセルを消去状態にする消去及びメモリセルを書き込み状態にする書き込みの各動作では、高電圧パルスの印加と、それによる閾値電圧状態のベリファイとを繰返し行うことが必要になる。この処理は消去及び書き込み動作に進行状況に応じて制御されることになるが、その制御シーケンスをハードウェアで実現すると、仕様変更などに対して対応し難いので、ＣＰＵを用いてソフトウェアで消去及び書き込みシーケンスを実現することができる。
【０００３】
フラッシュメモリのプロセス世代が進むに従って消去及び書き込みシーケンスが複雑になり、更に、個々のデバイスのメモリ特性に合わせて、量産中にも、消去及び書き込み方式をチューニングしなければならないことも想定される。したがって、そのようなソフトウェアの開発をユーザに任せると、ユーザに大きな負担をかけることになる。
【０００４】
特開平７−２６１９９７号公報にはフラッシュＲＯＭに書き込み消去プログラムと書き込み消去管理プログラムを置き、書き換え時、それらプログラムをＲＡＭに転送し、書き込み消去管理プログラムの制御の下でフラッシュＲＯＭの書き換えを行う技術が記載されている。このように、フラッシュメモリに消去及び書き込み処理プログラムを格納して提供することによるユーザの負担はある程度軽減される。
【０００５】
尚、本明細書においてユーザとはマイクロコンピュータ等の半導体デバイスの利用者を広義に意味する。したがって、半導体デバイスの製造メーカが其の半導体デバイスを何らかの意味で使用すれば、其の限りにおいて当該製造メーカはユーザでもある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０７−２６１９９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明者はフラッシュメモリに消去及び書き込み処理プログラムを格納して提供することについて検討した。マイクロコンピュータのオンチップフラッシュッメモリを消去及び書込み可能にする動作モードとして、ライタモード及びブートモードがある。ライタモードとは、マイクロコンピュータを見掛け上、フラッシュメモリチップと等価とし、ＥＰＲＯＭライタのような書込み装置に接続して、消去及び書込みを可能にする動作モードである。ブートモードは、マイクロコンピュータがシステムに実装された状態で調歩同期などのシリアルインタフェースを介して実装システムとの通信を確立させて消去及び書込みを可能にする動作モードである。マイクロコンピュータをシステムに実装する前にオンチップフラッシュメモリにプログラムやデータを初期的に書き込む場合にはライタモードを利用できる。システム実装後に、プログラムのバージョンアップやデータのチューニングのためにオンチップフラッシュッメモリの記憶情報を書き換えるにはブートモードを利用すればよい。このようなブートモードにおいて、前記フラッシュメモリに格納されて提供される消去及び書き込み処理プログラムを利用することができる。
【０００８】
しかしながら、ユーザプログラム（ユーザが開発したプログラム）などの任意のプログラムをマイクロコンピュータで実行しているときでもフラッシュメモリの記憶情報を書き換えたい、という要求がある。例えば、機器制御において電源切断直前の状態をフラッシュメモリに退避したり、オペレータの操作状況に応じてフラッシュメモリ内の制御パラメータを最適化したりする場合である。前記ブートモードは、リセット解除後の動作モード設定で指定可能にされるから（要するにリセットスタートが必要になるから）、任意プログラムの実行状態の延長としてブートモードを利用したフラッシュメモリの書換えを行うことはできない。
【０００９】
ブートモードでアクセス可能にされるフラッシュメモリ上のブートマットをユーザプログラム等の任意プログラムの実行状態でアクセス可能にすれば、任意プログラムの実行状態の延長として任意のタイミングで、フラッシュメモリに格納された消去及び書き込み処理プログラムを実行して、書き込みを行うことが可能になる。しかしながら、ブートマットには公開を要しないテスト等のための機密情報も含まれることがあり、これも一緒に読み出されるようでは不都合である。ちなみに、ブートマット内のプログラム実行はリセットスタートを要するブートモードの指定により可能とされ、ブートモードでは割り込みやバス権要求を全て排除し、外部からブートマットへの任意アクセスを全く認めないようにする工夫もされているほどである。
【００１０】
本発明の目的は、リセットスタートを要することなく、換言すれば、任意プログラム（ユーザプログラム等）の実行状態から、ブートマット等の所定領域内の消去及び書き込み処理プログラム等の所定の処理プログラムを利用することができるマイクロコンピュータ又はデータ処理装置を提供することにある。
【００１１】
本発明の別の目的は、ブートマット等の所定領域内の機密情報を公開することなくそこに格納された消去及び書き込み処理プログラム等の所定の処理プログラムを任意プログラム（ユーザプログラム等）の実行状態から利用することができるマイクロコンピュータ又はデータ処理装置を提供することにある。
【００１２】
本発明の更に別の目的は、消去及び書き込み処理プログラムをオンチップ不揮発性メモリに保持させたとき、消去及び書き込みの信頼性を向上させることが容易なマイクロコンピュータ又はデータ処理装置を提供することにある。
【００１３】
本発明のその他の目的は、消去及び書き込み処理プログラムをオンチップ不揮発性メモリに保持させたときＣＰＵが暴走しても不揮発性メモリの記憶情報が消失し難いマイクロコンピュータ又はデータ処理装置を提供することにある。
【００１４】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１５】
〔１〕本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１６】
すなわち、リセットスタートの後にブートモードのような動作モードの指定によって利用可能な不揮発性メモリ上のブートマット（Ｔｍａｔ）に不揮発性メモリの消去及び書き込み処理プログラム等の処理プログラムを格納し、更にそこに、処理プログラムの転送制御プログラムを格納しておく。オンチップＣＰＵ（２）が任意プログラム（ユーザプログラム等の制御プログラム）を実行している状態から所定のレジスタ（ＦＣＣＳ）に特定の制御情報（ＳＣＯ＝１）を設定することをトリガとして、ＣＰＵを前記ブートマット内の転送制御プログラムを実行させる状態に遷移させ、処理プログラムをオンチップＲＡＭ（揮発性メモリ）に転送し、ＣＰＵを再び任意プログラムを実行する状態に復帰させる。ＣＰＵが転送制御プログラムを実行するとき、バス制御手段（４）には外部からのバス権要求を排除させ、ブートマット内に対する不所望な任意アクセスを不可能にする。また、ＣＰＵが転送制御プログラムを実行しているとき、割り込み制御手段（９）にはＣＰＵが任意プログラム実行状態に復帰した後で処理可能なように割り込み要求を保存させる。
【００１７】
上記により以下の作用効果を得る。（１）処理プログラムの転送には所定のレジスタ（ＳＣＯビット）に特定の制御情報を設定すればよく、ユーザから見て自動的に消去及び書き込み処理プログラムのような処理プログラムがオンチップＲＡＭに転送されるから、ユーザは簡単なソフトウェアにより、オンチップフラッシュメモリに対する消去及び書き込みなどの処理が可能になる。ブートモードのようにモード端子の設定を変更してリセットスタートするというようなシーケンスは不要である。（２）消去及び書込みの制御シーケンスが複雑になってもユーザの負担を大幅に軽減できる。（３）処理プログラムの転送が終了すれば、転送処理プログラムの実行開始直前の状態に復帰することができるため、制御プログラムの様なユーザプログラムに代表される任意プログラムの実行状態の一環としてダイナミックなプログラム転送が可能であり、マイクロコンピュータの使い勝手を向上させることができる。（４）処理プログラムの転送処理中は外部からのバス権要求が排除されるから、ブートマット内に対する不所望な任意アクセスが不可能にされ、ブートマット内のその他の情報に対する機密性を保つことができる。（５）処理プログラムの転送処理中に割込み処理などの要求が入ってもその処理は禁止されるが、その要因は保持されており、転送終了後にその割り込み処理が実行されるから、ユーザプログラムに代表される任意プログラムの実行中におけるシステムの応答性が損なわれることはない。
【００１８】
〔２〕本発明の更に詳しい第１態様に係るマイクロコンピュータ（１）は、ＣＰＵ（２）、揮発性メモリとしてのＲＡＭ（３）、割込み制御手段（９）、バス制御手段（４）、第１領域（Ｔｍａｔ）及び第２領域（Ｕｍａｔ，Ｍｍａｔ）を備え消去及び書き込み可能な不揮発性メモリ（１３）、第１指示手段（１５）、及び第２指示手段（ＦＣＣＳ）を備える。第１指示手段は、前記第１領域が保有するプログラムをＣＰＵが実行する第１状態、又は第２領域が保有するプログラムをＣＰＵが実行する第２状態を指示することが可能であり、リセット動作の解除に応答して第１状態又は第２状態へのモード信号を受け付ける入力回路によって構成される。前記第２指示手段は、前記第２状態から遷移して前記第１領域が保有するプログラムをＣＰＵが実行する第３状態を指示することが可能であり、第２状態においてＣＰＵによりアクセス可能であって第３状態への第１制御情報（ＳＣＯ＝１）が設定される第１記憶手段（ＦＣＣＳ）により構成される。
【００１９】
この態様のマイクロコンピュータは、リセットスタートを介して起動されるブートモードのような第１状態で参照される第１領域を、ユーザモード又はユーザブートモードのような第２状態からＳＣＯモードのような第３状態に遷移することで参照可能になる。第３状態への遷移は第１記憶手段（ＦＣＣＳ）に第１制御情報（ＳＣＯ＝１）を設定すればよく、ユーザは簡単なソフトウェアにより、オンチップ不揮発性メモリに対する消去及び書き込みなどの処理プログラムが利用可能になる。ブートモードのようにモード端子の設定を変更してリセットスタートするというようなシーケンスは不要である。
【００２０】
前記第３状態への遷移には優先レベルの高い割り込みを利用するとよい。即ち、前記割込み制御手段は前記第１記憶手段に対する第３状態への第１制御情報の設定に応答して例えばマスク不可能な割込みが要求され、ＣＰＵはこのマスク不可能な割込要求に応答して第２状態から第３状態に遷移される。これにより割り込み制御手段はマスク不可能な割込み要求よりも割込み優先レベルの低い割込み要求による多重割り込みを排除することができる。一般的にマスク不可能な割込み要求よりも割り込みレベルの高い割込みもしくは例外処理要求はリセット要求であるから、第３状態における処理が多重割り込みで中断され、その間にＣＰＵが暴走する虞を未然に防止することができる。
【００２１】
前記第１状態に応答して、前記割込み制御手段は割込要求の受付が不可能にされ、前記バス制御手段はＣＰＵ以外からのバス権要求の受付けが不可能にされる。これにより、第１状態において第１領域の記憶情報に対する機密保持を担保することができる。
【００２２】
前記第３状態に応答して、前記バス制御手段はＣＰＵ以外からのバス権要求の受付けが不可能にされる。これにより、第３状態において他の回路モジュールがバス権を獲得して第１領域の機密保持すべき情報が不所望に読み出される事態を未然に阻止することができる。
【００２３】
前記第３状態に応答して、前記割込み制御手段は第２状態への復帰後に処理可能なように割込要求を一時保存する。これにより、処理プログラムの転送処理中に割込み処理などの要求が入ってもその要因は保持されており、転送終了後にその割り込み処理が実行されるから、ユーザプログラムに代表される任意プログラムの実行中におけるシステムの応答性が損なわれることはない。
【００２４】
〔３〕第２の態様のマクロコンピュータにおいて、第３状態で実行される第１領域のプログラムに具体的に着目する。例えば、前記第１領域は前記第３状態においてＣＰＵが実行する転送制御プログラムと、この転送制御プログラムによって揮発性メモリとしてのＲＡＭに転送される処理プログラムとを保有する。
【００２５】
このとき、ＣＰＵは前記第３状態において第１領域の転送制御プログラムを実行し、前記処理プログラムをＲＡＭに転送し、転送後、第３状態へ遷移する直前の第２状態に復帰する。処理プログラムの転送が終了すれば、転送処理プログラムの実行開始直前の状態に復帰することができるため、ユーザプログラムに代表される任意プログラムの実行状態の一環としてダイナミックなプログラム転送が可能であり、マイクロコンピュータの使い勝手を向上させることができる。
【００２６】
ＲＡＭへの転送先アドレスをプログラマブルに指定可能な転送先指定レジスタ（ＦＴＡＢ）を備えるとよい。要するに、処理プログラムをＲＡＭに転送するとき転送先領域は可変になる可能性（書き込み／消去プログラムの最適化）がある。もしも、プログラムサイズがユーザの意図していたサイズより大きくなる場合は、内蔵ＲＡＭの記憶情報を破壊する可能性がある。これを防ぐために、転送先指定レジスタによりユーザが目的とするアドレスを指定できるようになる。
【００２７】
同様の観点より、転送制御プログラムによってＲＡＭに転送されるべき処理プログラムの情報量が返される転送情報量レジスタ（ＦＴＤＱ）を設ける。即ち、ＲＡＭに処理プログラムを転送する前に、転送サイズを返すレジスタとして転送情報量レジスタを用意する。転送制御プログラムが実行されると、このレジスタには、処理プログラムの転送前に、転送されるべき処理プログラムの転送長（情報量）が返される。ユーザがメモリ管理を実施していれば、その管理情報を参照し、転送長に見合う、ＲＡＭ上の未使用領域に処理プログラムを動的に転送することが可能になる。
【００２８】
前記ＲＡＭに転送すべき処理プログラムの種類を選択的に指定可能な転送プログラム指定レジスタ（ＦＥＰＳ）を有してよい。種々のプログラムに対してユーザの負担を軽減することができる。
【００２９】
〔４〕第２の態様のマクロコンピュータにおいて、前記処理プログラムとして、不揮発性メモリに対する消去及び書込み処理プログラム（即ち消去プログラム及び書込みプログラム）に着目する。
【００３０】
ＣＰＵの暴走による不揮発性メモリの不所望な書換えを阻止するという観点より、前記不揮発性メモリに対する消去及び書込み処理を可能にするための必要条件の一つとされる第２制御情報（５Ａ）が設定可能にされる第２記憶手段（ＦＫＥＹ）を設け、第２状態においてＣＰＵが第２記憶手段に第２制御情報以外の所定の情報である第３制御情報（Ａ５）を設定することを、前記第１記憶手段（ＦＣＣＳ）に第１制御情報（ＳＣＯ＝１）を設定可能にするための必要条件とする。要するに、ユーザが消去及び書き込みを実施したくない所で、プログラムが暴走し、消去及び書き込み処理プログラムが転送されると、ユーザプログラムを破壊する可能性が高くなる。これを回避するために、ユーザは、第１記憶手段（ＦＣＣＳ）に第１制御情報（ＳＣＯ＝１）をセットする前に、第２記憶手段（ＦＫＥＹ）に第３制御情報（Ａ５）をストアする。この第３制御情報（Ａ５）をストアしてない時は、第１記憶手段（ＦＣＣＳ）に第１制御情報（ＳＣＯ＝１）をセットすることはできない。第２記憶手段（ＦＫＥＹ）に第３制御情報（Ａ５）がストアされている時は、第１記憶手段（ＦＣＣＳ）に第１制御情報（ＳＣＯ＝１）をセットすることが可能となり、これによってプログラムの転送が可能となる。
【００３１】
消去及び書き込み処理プログラムが転送された後にプログラムが暴走した場合の事を考え、第２記憶手段（ＦＫＥＹ）を使用する。基本的には、その他の条件により、ＣＰＵが暴走しても、消去及び書き込みが実施されないようになっているが、さらに信頼性を上げる為に、ユーザは、消去及び書き込みを実施する前に、第２記憶手段（ＦＫＥＹ）に第２制御情報（５Ａ）をセットする。この第２制御情報（５Ａ）をストアしてない時は、他の消去及び書き込み条件が誤ってイネーブルになっていたとしても、消去及び書込み動作は不可能なままにされる。
【００３２】
また、第２状態においてＣＰＵが揮発性メモリとしてのＲＡＭに格納されたプログラムから命令をフェッチして実行していることを、前記第１記憶手段に第１制御情報を設定可能にするための必要条件としてよい。これにより、ＣＰＵが不揮発性メモリから命令をフェッチして実行しているとき、不揮発性メモリが書き換えられて、ＣＰＵが暴走する事態の発生を未然に防止することができる。
【００３３】
内部シーケンサを持たずに第１領域からＲＡＭに転送された消去及び書き込み処理プログラムを用いて消去及び書き込みを実施する手法は、消去電圧や書き込み電圧印加のパルス幅の変更が容易であるが、マイクロコンピュータチップの動作周波数によって、書きこみ／消去パルス幅が変わってしまう。これを回避するのに、チップ内部に動作周波数情報を設定可能なレジスタ（ＦＰＥＦＥＱ）を設け、ユーザは、その動作周波数情報設定用のレジスタに書き込み／消去時にチップ動作周波数をセットする。消去及び書き込み処理プログラムは、実行時に、このチップ動作周波数のレジスタを参照し、現在の動作周波数を知る。チップ動作周波数を元に書き込み／消去時に必要なパルス時間や遷移時間のウェイトループ回数やタイマーのセット条件を決定すればよい。即ち、動作周波数情報をプログラマブルに設定可能な周波数レジスタを設け、第２状態においてＣＰＵはその周波数レジスタを参照して、消去及び書込み処理プログラムによる高電圧印加パルス幅を決定する。
【００３４】
マイクロプロセッサを構成する半導体集積回路の製造プロセスのばらつきにより、ウェハ内で、書き込み／消去特性等にばらつきを生ずる。このばらつきに応じて回路特性を調整するには、書き込み時間等をトリミングで調整する技術があり、これは、デバイステスト時に書き込み消去を実施し、書き込みや消去時間を測定して、書き込み／消去時の電圧を自己整合的に調整するものである。これと同じ様に、テスト時に書き込み／消去を実施して、第１領域（Ｔｍａｔ）に、不揮発性メモリの書き込み／消去特性を保存しておき、この特性データを使用して、消去及び書き込み処理プログラムのパラメータを決定すればよい。例えば、書き込みが早い時には、書き込みパルス幅やその時の書き込み電圧をそれに合わせ、遅い時には、遅いときに合わせて調整する。消去についても同様である。
【００３５】
〔５〕本発明の更に別の観点は書込みプログラムに着目する。即ち、データ処理装置は、中央処理装置と、揮発性メモリ（ＲＡＭ）と、書き込みプログラムと前記書き込みプログラムを前記揮発性メモリへ転送するための転送制御プログラムとを格納する第１記憶領域と、前記書き込みプログラムを前記中央処理装置に実行させることによって情報が書き込み可能にされ、かつ、第１動作モードにおいて前記中央処理装置によって処理される制御プログラムを格納する第２記憶領域とを有する電気的に書き込み可能な不揮発性メモリと、前記第１動作モードにおいて前記制御プログラムを実行する前記中央処理装置によって制御情報（ＳＣＯ）が設定される記憶回路）ＦＣＣＳ）とを有する。前記記憶回路（ＦＣＣＳ）への前記制御情報（ＳＣＯ）の設定に応答して、前記中央処理装置は前記転送制御プログラムを実行して前記書き込みプログラムを前記揮発性メモリへ転送し、前記揮発性メモリへの前記書き込みプログラムの転送の完了に応答して、前記中央処理装置を前記制御プログラムを実行する前記第１動作モードへ復帰させる。
【００３６】
例えば、前記中央処理装置が前記制御プログラムを実行する前記第１動作モードにおいて、前記中央処理装置は前記制御プログラムから前記不揮発性メモリに転送された前記書き込みプログラムに処理を移行することによって、前記不揮発性メモリに情報を書き込み、前記不揮発性メモリへの情報の書き込み終了に応答して、前記中央処理装置は前記書き込みプログラムの実行から前記制御プログラムの実行へ処理を復帰する。
【００３７】
このとき、データ処理装置に内蔵されるバス制御回路は、前述のように、前記中央処理装置が前記転送制御プログラムを実行している間、前記バスマスタ装置からの前記バス権の要求を排除するとよい。
【００３８】
また、データ処理装置に内蔵される割り込み制御回路には、前記中央処理装置が前記転送制御プログラムを実行している間に受けた割り込み要求を受付けて処理せずに保持するようにする保持回路を設け、前記保持回路に保持された割り込み要求は、前記中央処理装置の前記転送制御プログラムの実行の完了に応答して、前記中央処理装置によって処理されるようにするとよい。例えば、前記割込み制御回路には、前記記憶回路（ＦＣＣＳ）への前記制御情報（ＳＣＯ）の設定に応答して、前記中央処理装置へノンマスカブル割り込み（ＮＭＩ）の優先度より高い優先度を有する例外処理要求を発生させ、前記中央処理装置には、前記例外処理要求の受領に応答して、前記制御プログラムを実行する前記第１動作モードから前記転送制御プログラムの実行へ移行させ、このとき、前記割り込み制御回路は、前記中央処理装置が前記転送制御プログラムを実行している間に受けた割り込み要求を保持する保持回路を有し、前記保持回路に保持された割り込み要求は、前記中央処理装置の前記転送制御プログラムの実行の完了に応答して、前記中央処理装置によって処理されるようにしてよい。
【００３９】
〔６〕本発明の更に別の観点は消去プログラムに着目する。即ち、データ処理装置は、中央処理装置と、揮発性メモリ（ＲＡＭ）と、消去プログラムと前記消去プログラムを前記揮発性メモリへ転送するための転送制御プログラムとを格納する第１記憶領域と、前記消去プログラムを前記中央処理装置に実行させることによって情報が消去可能にされ、かつ、第１動作モードにおいて前記中央処理装置によって処理される制御プログラムを格納する第２記憶領域とを有する電気的に消去可能な不揮発性メモリと、前記第１動作モードにおいて前記制御プログラムを実行する前記中央処理装置によって制御情報（ＳＣＯ）が設定される記憶回路（ＦＣＣＳ）とを有する。前記中央処理装置は、前記記憶回路（ＦＣＣＳ）への前記制御情報（ＳＣＯ）の設定に応答して、前記転送制御プログラムを実行して前記消去プログラムを前記揮発性メモリへ転送し、前記中央処理装置は、前記揮発性メモリへの前記消去プログラムの転送の完了に応答して、前記制御プログラムを実行する前記第１動作モードへ復帰させる。
【００４０】
例えば前記中央処理装置が前記制御プログラムを実行する前記第１動作モードにおいて、前記中央処理装置は前記制御プログラムから前記不揮発性メモリに転送された前記消去プログラムに処理を移行することによって、前記不揮発性メモリの情報を消去し、前記不揮発性メモリへの情報の消去の終了に応答して、前記中央処理装置は前記消去プログラムの実行から前記制御プログラムの実行へ処理を復帰する。
【００４１】
データ処理装置に内蔵するバス制御回路、割込み制御回路に関しては上述と同様の構成を採用してよい。
【００４２】
〔７〕本発明の更に別の観点は書込み及び消去プログラムに着目する。即ち、データ処理装置は、中央処理装置と、揮発性メモリ（ＲＡＭ）と、書き込み及び消去プログラムと前記書き込み及び消去プログラムを前記揮発性メモリへ転送するための転送制御プログラムとを格納する第１記憶領域と、前記書き込み及び消去プログラムを前記中央処理装置に実行させることによって情報が書き込み及び消去可能にされ、かつ、第１動作モードにおいて前記中央処理装置によって処理される制御プログラムを格納する第２記憶領域とを有する電気的に消去可能な不揮発性メモリと、前記第１動作モードにおいて前記制御プログラムを実行する前記中央処理装置によって制御情報（ＳＣＯ）が設定される記憶回路（ＦＣＣＳ）とを有する。前記記憶回路（ＦＣＣＳ）への前記制御情報（ＳＣＯ）の設定に応答して、前記中央処理装置は前記転送制御プログラムを実行して前記書き込み及び消去プログラムを前記揮発性メモリへ転送し、前記揮発性メモリへの前記書き込み及び消去プログラムの転送の完了に応答して、前記中央処理装置を前記制御プログラムを実行する前記第１動作モードへ復帰させる。
【００４３】
例えば前記中央処理装置が前記制御プログラムを実行する前記第１動作モードにおいて、前記中央処理装置は前記制御プログラムから前記不揮発性メモリに転送された前記書き込みプログラムまたは消去プログラムに処理を移行することによって、前記不揮発性メモリに情報を書き込みまたは前記不揮発性メモリから情報を消去し、前記不揮発性メモリへの情報の書き込みの終了または情報の消去終了に応答して、前記中央処理装置は前記書き込みプログラムまたは前記消去プログラムの実行から前記制御プログラムの実行へ処理を復帰する。
【発明の効果】
【００４４】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００４５】
すなわち、処理プログラムの転送には所定のレジスタ（ＳＣＯビット）に特定の制御情報を設定すればよく、ユーザから見て自動的に消去及び書き込み処理プログラムのような処理プログラムがオンチップＲＡＭに転送されるから、ユーザは簡単なソフトウェアにより、オンチップフラッシュメモリに対する消去及び書き込みなどの処理が可能になる。
【００４６】
ブートモードのようにモード端子の設定を変更してリセットスタートするというようなシーケンスは不要である。
【００４７】
消去及び書込みの制御シーケンスが複雑になってもユーザの負担を大幅に軽減できる。
【００４８】
処理プログラムの転送が終了すれば、転送処理プログラムの実行開始直前の状態に復帰することができるため、ユーザプログラムに代表される任意プログラムの実行状態の一環としてダイナミックなプログラム転送が可能であり、マイクロコンピュータの使い勝手を向上させることができる。
【００４９】
処理プログラムの転送処理中は外部からのバス権要求が排除されるから、ブートマット内に対する不所望な任意アクセスが不可能にされ、ブートマット内のその他の情報に対する機密性を保つことができる。
【００５０】
処理プログラムの転送処理中に割込み処理などの要求が入ってもその要因は保持されており、転送終了後にその割り込み処理が実行されるから、ユーザプログラムに代表される任意プログラムの実行中におけるシステムの応答性が損なわれることはない。
【図面の簡単な説明】
【００５１】
【図１】本発明の一例に係るマイクロコンピュータのブロック図である。
【図２】ＣＰＵ２の具体例を示すブロック図である。
【図３】フラッシュメモリのメモリマットを例示する説明図である。
【図４】フラッシュメモリのメモリマット毎の各動作モードによるアクセス態様を例示する説明図である。
【図５】図１の構成からＳＣＯモードの説明に必要な回路ブロックを抜き出して図示した説明図である。
【図６】図５の構成においてユーザモードが指定された状態を示す説明図である。
【図７】図５においてＳＣＯビットがセットされた状態を例示する説明図である。
【図８】図５の構成においてブレーク例外処理の判定とＳＣＯモードへの遷移の様子を例示する説明図である。
【図９】図５の構成においてＳＣＯモードが指示されたときのベクタフェッチの様子を例示する説明図である。
【図１０】図５の構成においてＲＡＭへのソースプログラムの転送処理の様子を例示する説明図である。
【図１１】図５の構成においてＳＣＯモードの解除の様子を例示する説明図である。
【図１２】図５の構成においてソースプログラムルーチンへの分岐処理の様子を例示する説明図である。
【図１３】図５の構成においてユーザプログラムに復帰後のソースプログラムによる処理の一例を示す説明図である。
【図１４】割込要求を保存可能な割込みコントローラの一例を示すブロック図である。
【図１５】フラッシュメモリの消去及び書き込みプロテクトのための論理構成を例示する論理回路図である。
【図１６】ユーザブートモード処理のフローチャートである。
【図１７】ユーザモード処理のフローチャートである。
【図１８】ブートモード処理のフローチャートである。
【図１９】ＳＣＯモードを利用するソースプログラムの転送処理のフローチャートである。
【図２０】ＳＣＯモード解除後にＲＡＭに転送され処理プログラムを利用して行われる初期化処理のフローチャートである。
【図２１】初期化処理の後に行われる消去プログラムの実行処理のフローチャートである。
【図２２】図２１のステップＴ２４でジャンプされる消去プログラムの処理フローチャートである。
【図２３】初期化処理の後に行われる書込みプログラムの実行処理のフローチャートである。
【図２４】図２３のステップＴ４５でジャンプされる書込みプログラムの処理フローチャートである。
【発明を実施するための形態】
【００５２】
《マイクロコンピュータ》
図１には本発明の一例に係るデータ処理装置としてのマイクロコンピュータが示される。同図に示されるマイクロコンピュータ１は、特に制限されないが、単結晶シリコンのような１個の半導体基板（半導体チップ）にＣＭＯＳ集積回路製造技術により形成される。
【００５３】
マイクロコンピュータ１は、演算制御装置としての中央処理装置（ＣＰＵ）２、揮発性メモリとしてのＲＡＭ３、バスステートコントローラ（ＢＳＣ）４、フラッシュメモリ１３、及びその他の内蔵回路を総称するその他モジュール７を有する。前記フラッシュメモリ１３は電気的に書き換え可能な不揮発性メモリの一例であり、フラッシュメモリモジュール５とフラッシュコントロールモジュール６によって構成される。前記その他モジュール７としてマスクＲＯＭ８、割り込みコントローラ（ＩＮＴＣ）９、タイマ（ＴＭＲ）１０、入出力ポート（Ｉ／Ｏ）１１、シリアルインタフェースコントローラ（ＳＣＩ）１２、その他インタフェースコントローラ１６、ＤＭＡＣ（Direct Memory Access Controller）１７及びシステムコントローラ１５等を有する。それら回路モジュールはバスＩＡＢ，ＩＤＢ，ＰＡＢ，ＰＤＢ，ＣＯＮＴを介してインタフェースされる。
【００５４】
前記バスＩＡＢ，ＩＤＢは情報伝送速度の比較的速い内部アドレスバス、内部データバスである。前記バスＰＡＢ，ＰＤＢは情報伝送速度が比較的遅い周辺アドレスバス、周辺データバスである。バスＣＯＮＴは、バスコマンド、バスアクセス制御信号、及びタイミング制御信号等を伝達する制御信号線を総称する。内部バスＩＤＢ，ＩＡＢと周辺バスＰＤＢ，ＰＡＢとの動作速度の相違若しくはアクセス対象に固有のアクセス形態の相違に対して前記ＢＳＣ４がアクセス動作タイミング等を最適制御すると共に、前記ＢＳＣ４はアクセスアドレスに応じたチップ選択若しくはモジュール選択制御等も行なう。
【００５５】
前記システムコントローラ１５には外部から複数ビットのモード信号１４及びリセット信号ＲＥＳなどが入力される。マイクロコンピュータ１のパワーオンリセット或はハードウェアリセットによりリセット信号ＲＥＳがローレベルにされると、そのローレベル期間においてマイクロコンピュータ１の内部でリセット動作が行われる。リセット信号ＲＥＳによるリセットの解除後、複数ビットのモード信号１４の状態に応じて、マイクロコンピュータ１の動作モードが決定される。ＣＰＵ２は、その動作モードに応じたプログラム領域のリセットベクタをリードし、そのアドレスの命令をフェッチし、フェッチした命令を解読して、命令実行を開始する。
【００５６】
ＲＡＭ３はＣＰＵ２のワーク領域若しくはデータ又はプログラムの一時記憶領域としても利用される。前記マスクＲＯＭ８はデータテーブルなどの記憶領域とされる。フラッシュメモリモジュール５はＣＰＵ２のプログラムやデータの記憶領域とされる。
【００５７】
割り込みコントローラ１０はマイクロコンピュータ１の外部から与えられる割込要求又はマイクロコンピュータ１内部の状態に応じて内蔵回路モジュールから発生される割込要求が入力され、割り込み優先レベル及び割り込みマスク等に従って、競合する割込み要求の調停と割込み優先レベルによる割込みマスク処理を行う。割り込みコントローラ１０は割込み要求の調停と割込みマスク処理との結果に従って、ＣＰＵ２に割込み信号ＩＲＱを与えるとと共に、受付ら得た割込み要求の割り込み要因に応ずる割り込みベクタアドレスをＣＰＵ２に与える。ＣＰＵ２は割り込みベクタアドレスによって指示されるプログラムに処理を分岐する。割込みコントローラ９はＣＰＵ２から割込みマスクデータ（ＩＭＳＫ）が与えられ、この割込みマスクデータ（ＩＭＳＫ）で示される割込み優先レベルよりも低い割込み要求の受付をマスクする。尚、本明細書において割込み若しくは割込み要求というとき、例外処理もしくは例外処理要求を含む概念で用いている。
【００５８】
Ｉ／Ｏ１１は外部アドレスバス及び外部データバスへの接続、ＳＣＩ１２の外部インタフェース、ＴＭＲ１０の外部イベント信号入力、そのインタフェースコントローラ１６の外部インタフェース等に用いられる。インタフェースコントローラ１６は例えば、ＡＴＡＰＩ又はＳＣＳＩなどのインタフェースに適用可能である。
【００５９】
図２には前記ＣＰＵ２の具体例が示される。ＣＰＵ２は、特に制限されないが、シフタＳＦＴ及び算術論理演算器ＡＬＵ等の演算器と、３２ビットの汎用レジスタＲ０〜Ｒ３１、プログラムカウンタＰＣ、ステータスレジスタＳＲ及びテンポラリレジスタＴＲ等のレジスタ群、そしてリードデータバッファＲＤＢ、ライトデータバッファＷＤＢ及びアドレスバッファＡＢなどのバッファ回路を実行部に有し、それらは第１乃至第３内部バスＩＢ１〜ＩＢ３のうちの所定の内部バスに接続される。ＣＰＵ２は命令制御部として、命令レジスタＩＲ、命令デコーダＩＤＥＣ、命令シーケンスロジックＩＮＴＬを有する。
【００６０】
前記リードデータバッファＲＤＢは例えば３２ビットのデータバスＩＤＢから入力したデータを内部バスＩＢ２に供給する。ステータスレジスタＳＲは割込みマスクデータＩＭＳＫのフィールドを有する。割込みマスクデータＩＭＳＫは割込みコントローラ９に与えられる。割込みコントローラ９は割込みマスクデータＩＭＳＫで示される割込み優先レベルよりも低い割込み要求をマスクする。
【００６１】
前記プログラムカウンタＰＣは次に実行すべき命令アドレスを保有し、その命令アドレスがアドレスバッファＡＢから内部アドレスバスＩＡＢに出力されると、ＲＡＭ３等の対応アドレスからリードされた命令が内部データバスＩＤＢを介して命令レジスタＩＲにフェッチされる。命令デコーダＩＤＥＣは命令レジスタＩＲの命令を解読して、ＣＰＵ２内部の制御信号を生成して、前記実行部による演算処理を制御する。命令シーケンスロジックＩＮＴＬは割込み信号ＩＲＱ等に応答して命令実行順序を変更する制御を行なう。
【００６２】
図１においてフラッシュメモリモジュール５は、メモリセルアレイ２０、Ｘデコーダ・ドライバ（ＸＤＥ・ＤＶ）２１、センスアンプアレイ（ＳＡＡ）２２、Ｙスイッチアレイ（ＹＳＷ）２３、Ｙデコーダ（ＹＤＥ）２４、入出力回路（ＩＦＢ）２５、電源回路（ＶＧＮ）２６、及びタイミングジェネレータ（ＴＧＮ）２７を有する。メモリセルアレイ２０はマトリクス配置されたフラッシュッメモリセル（図示せず）を有する。フラッシュメモリセルは、特に制限されないが、半導体基板若しくはウェル領域にソース、ドレインを有し、チャネルの上方に夫々絶縁膜を介してフローティングゲート及びコントロールゲートが形成されたスタック構造を有し、ソースをソース線に、ドレインをビット線に、コントロールゲートをワード線に接続して構成される。
【００６３】
フラッシュメモリセルは閾値電圧がプログラム可能にされ、プログラムされた閾値電圧に応じて情報を保持する。例えば、１個のフラッシュメモリセルが１ビットの情報を保持する場合に、相対的に高い閾値電圧状態を書き込み状態、相対的に低い閾値電圧状態を消去状態と称する。書き込み状態を得る為の書き込み動作は、特に制限されないが、コントロールゲートに１０Ｖ、ドレインに例えば５Ｖ、ソースおよび基板に例えば０Ｖを印加して、ドレイン・ソース間に電流を流し、これによってホットエレクトロン注入が起こり、フローティングゲートに電子が蓄積され、メモリセルの閾値電圧が高くなる。前記消去状態を得る為の消去動作は、特に制限されないが、コントロールゲートに１０Ｖ、ソース及び基板に例えば−１０Ｖを印加し、さらにドレインを例えば開放（フローティング）にして、フローティングゲートに蓄積された電子を基板に放出させ、これによってメモリセルの閾値電圧が低くなる。
【００６４】
前記入出力回路２５はバスＩＡＢ，ＩＤＢ，ＰＡＢ，ＰＤＢ，ＣＯＮＴとの間でアドレス、制御信号及びコマンドを入力すると共にデータの入出力を行なう。入出力回路２５に入力されたアドレス信号はＸＤＥＣ・ＤＶ２１及びＹＤＥ２４に入力されて夫々デコードされる。ＸＤＥＣ・ＤＶ２１はそのデコード結果に従ってワード線を選択する。ＹＤＥ２４はそのデコード結果に従ってＹＳＷ２３を介してビット線を選択する。ワード線選択及びビット線選択によってフラッシュメモリセルが選択される。読み出し動作では、前記選択されたフラッシュメモリセルの読み出しデータは、ＳＡＡ２２にて検出され、入出力回路２５を経てバスＰＤＢまたはＩＤＢに出力される。書き込み動作では、バスＰＤＢ又はＩＤＢから入出力回路２５に与えられる書き込みデータが入出力回路２５内の書き込みラッチ回路にラッチされ、ワード線選択されたメモリセルに対し、ラッチデータに従って書き込み・書き込み阻止が制御される。書き込み処理の前には予めブロック単位でフラッシュメモリセルに対する消去が行なわれる。
【００６５】
前記電源回路２６はクランプ回路やチャージポンプ回路などを有し、フラッシュメモリの書き込み・消去・読み出しなどの動作で使用する様々な電圧を供給する。前記タイミングジェネレータ２７は、制御バスＣＯＮＴを介して供給されるストローブ信号及びデータバスＰＤＢ，ＩＤＢを介して入力されるコマンドに基づいてフラッシュメモリの外部とのインタフェース制御を行なう。
【００６６】
図１において前記フラッシュコントロールモジュール６は、フラッシュメモリモジュール５に対する書き込み及び消去やそのためのプログラム転送関係の各種制御レジスタ３０と制御論理回路２９とを有する。図１には制御レジスタとしてＦＣＣＳ，ＦＫＥＹ，ＦＭＡＴＳ，ＦＰＥＦＥＱ，ＦＥＰＳ，ＲＯＭＣＲ，ＦＴＡＢ，ＦＴＤＱ，ＰＥＣＮＴが代表的に示されている。フラッシュメモリモジュール５に対する書き込み及び消去動作の制御にはＲＡＭ３の記憶領域やＣＰＵ２の汎用レジスタも利用される。
【００６７】
《フラッシュメモリのメモリマット》
図３にはフラッシュメモリのメモリマットが例示される。フラッシュメモリモジュール５のメモリセルアレイ２０は、第１領域としてのブートマットＴｍａｔと、第２領域としてのユーザブートマットＵｍａｔ及びユーザマットＭｍａｔと、リペア及びトリミングマットＲｍａｔとを有する。前記ブートマットＴｍａｔ、ユーザブートマットＵｍａｔ、及びユーザマットＭｍａｔは夫々ＣＰＵ２のアドレス空間における先頭アドレスである０番地（Ｈ’０００００００）をスタートアドレスとしてメモリ空間が割り当てられる。要するに、前記ブートマットＴｍａｔ、ユーザブートマットＵｍａｔ、及びユーザマットＭｍａｔはアドレス空間がオーバラップされ、前記アドレスデコーダＹＤＥＣ及びＸＤＥＣ・ＤＶはどのマットを利用するかの指示に応答してアドレスデコード論理が選択されることになる。どのマットを利用するかはモード信号１４で指示されるマイクロコンピュータの動作モードなどによって決まる。リペア及びトリミングマットＲｍａｔはメモリセルアレイにおける欠陥救済アドレスや回路の特性に応じた合わせ込みのためのトリミング回路の設定データが格納される。前記ブートマットＴｍａｔには、フラッシュッメモリ１３の消去及び書込み処理プログラム、そのプログラム等をＲＡＭ３に転送する転送制御プログラム、そしてフラッシュメモリの特性情報（消去及び書き込み特性の情報）等が格納されている。ブートマットＴｍａｔに格納されたプログラムは基本的にマイクロコンピュータの製造メーカ自身で或は其の管理の下で作製される。
【００６８】
《動作モード》
フラッシュメモリは、プロセス世代が進むにつれて、書き込み関係、消去関係のプログラムが複雑化しつつある。このような事情の下で、消去及び書き込み処理プログラムをユーザが作成しなければならないとすると、ユーザの負担が大きくなる。マイクロコンピュータ１においては、ユーザに消去及び書き込みプログラムを作成する負担を減らし、簡単な手続きで消去及び書き込みをどのモードでも実施できるように考慮されている。特に、フラッシュメモリ１３を消去及び書き込みするための高電圧パルス印加時間などのパラメータをチューニングしたり処理フローを変更したりするときに、ハードウェアに依存せずソフトウェアを使用して実施でき、ユーザに負担をかけず、簡単な手続きで消去及び書き込みを実施できる動作モードを用意している。その内容を簡単に説明すると、ブートマットＴｍａｔが保有している消去及び書き込み処理プログラムをどの動作モードでも参照できるようにし、しかも、ブートマットＴｍａｔのプログラムには、セキュリティに関する部分の記述もあるので、不都合のない範囲でユーザがそのプログラムを使用できるようにしてある。
【００６９】
マクロコンピュータ１の動作モードを詳述する。フラッシュメモリ１３に対する消去及び書き込みに着目すると、パワーオンリセットを介して設定可能な動作モードとして、マイクロコンピュータ１は、ライタモード、ブートモード、ユーザブートモード、及びユーザモードを有する。特に制限されないが、前記モード信号１４は２ビットであり、システムコントローラ１５は、其の論理値の組み合わせを解読して、指示された動作モードが、前記ライタモード、ブートモード、ユーザブートモード、又はユーザモードの何れであるかを判定する。更に、ユーザモード又はユーザブートモードから動的に設定可能にされるＳＣＯモードを有する。
【００７０】
前記ライタモードはＥＰＲＯＭライタのような書き込み装置を用いてフラッシュメモリ１３の消去及び書き込みを実施可能にする動作モードである。ライタモードが指定されると、リセット処理後、ＣＰＵ２はブートマットＴｍａｔの先頭番地からベクタフェッチを行ってプログラムの実行を開始する（ブートマットから起動）。そして、ライターモードに必要な処理として、コマンド判定プログラムや消去及び書き込み関係のプログラムを全てＲＡＭ３に転送する。その後に、ＣＰＵ２は、ＲＡＭ３に転送されたプログラムの実行に移行し、フラッシュメモリ１３はＥＰＲＯＭライタによって消去及び書き込み可能にされる。このライタモードは、オフボード（マイクロコンピュータがシステムボードに実装されていない状態）で前記ユーザマットＭｍａｔ及びユーザブートマットＵｍａｔに任意のユーザ制御プログラム等を格納するのに適している。
【００７１】
前記ブートモードは、マットＴｍａｔ，Ｕｍａｔ、Ｍｍａｔの全てを消去し、ＳＣＩ１２を使用して書き込みを実施可能にする動作モードである。このブートモードは前記ＣＰＵ２にブートマットＴｍａｔのプログラムを処理させると共に当該ブートマットＴｍａｔを消去及び書き込み不可能にする。具体的には、ブートモードが指定されると、リセット処理後、ＣＰＵ２はブートマットＴｍａｔの先頭番地からベクタフェッチを行ってプログラムの実行を開始する。そして、ブートモードに必要な処理として、ブートマットＴｍａｔ内の消去及び書き込み関係のプログラム及びコマンド判定プログラムをＲＡＭ３に転送する。転送終了とその他の処理終了後に、ＣＰＵ２はＲＡＭ３上のプログラム実行に移る。ＲＡＭ３上のプログラム実行でマットＵｍａｔ、Ｍｍａｔの全てを消去した後に、コマンド判定プログラムを起動し、ＳＣＩ１２を利用して書き込みが実施可能になる。このブートモードは、シリアル通信インタフェースを備えたオンボードで、前記ユーザマットＭｍａｔ及びユーザブートマットＵｍａｔに任意のユーザ制御プログラム等を格納するのに適している。ブートモード中、前記割込みコントローラ９はリセット以外の割込み要求に対して割込みマスク処理を行ない、バスステートコントローラ４はＣＰＵ以外へのバス権を拒否することにより、ブートモード中に、ブートマットＴｍａｔが外部のプログラムなどによって不所望にアクセスされる事態の発生を未然に防止している。
【００７２】
前記ユーザブートモードは、前記ＣＰＵ２にユーザブートマットＵｍａｔのプログラムを処理させてユーザ任意のインタフェースを使用した消去及び書き込みを実施可能とし、ブートマットＴｍａｔ及びユーザブートマットＵｍａｔに対しては消去及び書き込みを不可能にする動作モードである。具体的には、ユーザブートモードは、ブートマットＴｍａｔから起動し、ＣＰＵ２がブートマットＴｍａｔ内のプログラムを実行すると共にＲＡＭ３へユーザブートマット切換えプログラムの転送を行う。その後に、ＣＰＵ２はＲＡＭ３上のプログラム実行に移る。ＣＰＵ２によるＲＡＭ３上のプログラム実行で、ＣＰＵ２のアドレス空間で見えるフラッシュメモリ１３上のマットをデフォルトのユーザマットＭｍａｔからユーザブートマットＵｍａｔへ切換え、ユーザブートマットＵｍａｔのベクタアドレスを読み出した後にその領域へジャンプする。セキュリティが掛かっている場合は、ユーザマットＭｍａｔの消去を実施した後にジャンプを実施する。書き込みを実施する時は、後述するＳＣＯモードを使用して必要な消去及び書き込みプログラムをブートマットＴｍａｔからＲＡＭ３にダウンロードした後、その消去及び書き込み処理プログラムを利用して、ユーザマットＭｍａｔに対する書き込みを行う。要するに、ユーザブートマットＵｍａｔにユーザ専用のインタフェースプログラムを用意して、ユーザの実装ボートに合った書き込みデータ転送が実現可能となる。このユーザブートモードは、ユーザのシステムボードが備えているオンボードインタフェースを使用して、ユーザの制御プログラムなどをユーザマットＭｍａｔに書き込むのに適している。この動作においてユーザブートマットＵｍａｔの消去は阻止される。したがって、ユーザのシステムボードがシリアルインタフェースを備えず、オンボードでブートモードを利用できなくても、これに代えて、ユーザのシステムボードが備えているオンボードインタフェースを介する書き込みをを保証することができる。
【００７３】
前記ユーザモードはユーザマットＭｍａｔが保有するプログラムを利用して消去及び書き込みを実施可能にする動作モードであり、ブートマットＴｍａｔ及びユーザブートマットＵｍａｔの消去及び書き込みについては不可能にする。詳しくは、ＣＰＵ２をユーザマットＭｍａｔから起動し、ユーザマットＭｍａｔ上のプログラムが実行される。特に、ユーザが必要な時に、後述するＳＣＯビットをイネーブルにしてＳＣＯモードを設定すると、ブートマットＴｍａｔとユーザマットＭｍａｔが自動的に切り替わり、ブートマットＴｍａｔのある番地からプログラムがスタートし、ブートマットＴｍａｔ上の消去及び書き込み処理プログラムがＲＡＭ３に転送され、プログラムの転送が終了したらユーザマットＭｍａｔとブートマットＴｍａｔが自動的に切り替えられて、ユーザの処理へ復帰し、ユーザのプログラムで前記消去及び書き込み処理プログラムが利用されて、ユーザマットＭｍａｔに対する消去及び書き込みが可能にされる。要するに、ユーザプログラムモードでは、後述するＳＣＯモードを使用してブートマットＴｍａｔ上の消去及び書き込み処理プログラムをＲＡＭ３上に転送しそのプログラムを利用可能にしている。このユーザモードは、オンボードでユーザ制御プログラム実行中にユーザマットＭｍａｔ上のパラメータなどを書き換えるのに適している。
【００７４】
図４の（Ａ），（Ｂ）には各マットの各動作モードによるアクセス態様が示される。同図に示されるアクセス態様は上記動作モードで説明したアクセス態様を整理したものである。同図からも明らかなように、リペア及びトリミングマットＲｍａｔとブートマットＴｍａｔは何れの動作モードにおいても消去及び書き込み不可能にされ、ユーザブートマットＵｍａｔはユーザ制御プログラムが実行可能にされるユーザブートモード及びユーザモード（ユーザプログラムモード）において消去及び書き込み不可能にされる。このユーザブートモードは、ユーザのシステムボードが備えているオンボードインタフェースを使用して、ユーザの制御プログラムなどをユーザマットＭｍａｔに書き込むのに適している。この動作においてユーザブートマットＵｍａｔの消去及び書込みは阻止される。したがって、ユーザのシステムボードがシリアルインタフェースを備えず、オンボードでブートモードを利用できなくても、これに代えて、ユーザのシステムボードが備えているオンボードインタフェースを介する書き込みを保証することができる。尚、図４においてアクセスとはリードアクセスを意味し、記号△はブートマットに格納されたプログラムにしたがってリードアクセス可能であることを意味し、ユーザ制御プログラムにしたがって任意にリードアクセスできることは意味しない。
【００７５】
ユーザ専用の通信プロトコルを格納可能なユーザブートマットＵｍａｔを用意したので、マイクロコンピュータ１が備える任意のインタフェースをフラッシュメモリ１３の消去及び書込みに流用することができる。フラッシュメモリ１３の消去及び書き込みにユーザ任意のインタフェースを採用する事が可能となったことにより、ホスト装置に必ずシリアルインタフェースを用意しなくてもよい。ユーザブートマットＵｍａｔとユーザマットＭｍａｔを分けた事により、ユーザマットＭｍａｔに専用通信プロトコルを書かなくても、消去及び書き込み用にユーザ任意の書きこみインタフェースが実現できるから、ユーザマットＭｍａｔに格納して使用する制御プログラムの作成が容易になる。要するに、ユーザプログラムモードで使用する通信制御プログラムの消去防止などについて特別な考慮を払わなくてもよい。ユーザブートマットＵｍａｔから立ち上がるユーザブートモードでは、ハードウェア的にユーザブートマットＵｍａｔを消去及び書込み不可にするので、暴走等でユーザブートマットＵｍａｔの記憶情報が破壊される事はなく、デバック時にＣＰＵ２が暴走しても、外部インタフェースを制御するプログラムの破壊には至らないので、実装したマイクロコンピュータチップを取り外さなくても、オンボードでユーザマットＭｍａｔの書換えを自由に行うことができる。
【００７６】
《ＳＣＯモード》
図５には図１の構成からＳＣＯモードの説明に必要な回路ブロックを抜き出して図示してある。同図では、ＳＣＯモードは前記ユーザブートマットＵｍａｔ又はユーザマットＭｍａｔの何れからでも指定できるがここではユーザマットＭｍａｔから指定する場合を一例とする。フラッシュコントロールモジュール６にはマット切換え制御部６０及びＳＣＯ起動要求生成部６１が例示される。マット切換え制御部６０は制御レジスタＲＯＭＣＲを有し、その１ビットＢＴＳ＝１でブートマットの選択を指定し、ＢＴＳ＝０でユーザマットの非選択を指定する。このレジスタＲＯＭＣＲはＣＰＵ２のアドレス空間には配置されておらずユーザ非公開である。ＳＣＯ起動要求生成部６１は制御レジスタＦＣＣＳを有し、その１ビットＳＣＯ＝０がリセット後の初期値であり、ＳＣＯ＝１によりＳＣＯモードを指定する。ブートマットＴｍａｔは転送制御プログラムの格納エリア５０と、転送対象とされる処理プログラムである被転送プログラムの格納エリア５１を含んでいる。ＲＡＭ３はその処理プログラムの格納領域（転送プログラム格納領域）３０とユーザ制御プログラム実行領域３１などを含んでいる。
【００７７】
図６はユーザモードが指定された状態であり第２状態の一例とされる。ユーザモードが指定されるとＣＰＵ２はユーザマットＭｍａｔのファーストベクタをフェッチしてユーザプログラムを実行する。図６の状態は、ＣＰＵがＲＡＭ２にダウンロードされたユーザプログラムを実行している。フラッシュコントローラモジュール６は初期状態にされている。
【００７８】
図７はＳＣＯビットをセットした状態が例示される。ユーザプログラムを実行するＣＰＵ２はレジスタＦＣＣＳの制御ビットＳＣＯ＝１をセットするレジスタライトサイクルを実行する。これによりフラッシュコントロールモジュール６は割込みコントローラ９に所定の割込み要求を行う。この割込み要求として、特に制限されないが、ブレーク割込み要求を利用する。このブレーク割込み要求は、特に制限されないが、本来、評価用マイクロコンピュータにおけるユーザプログラムの実行を停止してシステムプログラムに復帰するための割込みに用いるデバッグサポート機能を実現する割り込みであり、優先度はＮＭＩ（マスク不可能な割込み要求）よりも高く、ＣＰＵ２の割込みマスクビットに拘わらず、常に受付可能な優先度を有し、独立のベクタアドレス（ベクタ番号２）が割り当てられている。優先度が高い割込みは、他の割込み要求と競合した場合においても優先的に受付けられる。実チップとしてのマイクロコンピュータではそのようなユーザブレーク割込み要求は実質的に必要ないが、その制御機能は実チップとしてのマイクロコンピュータのＣＰＵ２及びＩＮＴＣ９にも搭載することは容易である。この機能をＳＣＯモードの設定に利用する。それによりＩＮＴＣ９はＣＰＵ２に割込み信号ＩＲＱ及び割込み要因を与えて、ブレーク例外処理の発生を通知する。
【００７９】
図８にはブレーク例外処理の判定とＳＣＯモードへの遷移の様子が示される。ＣＰＵ２によるＳＣＯ＝１をセットするレジスタライトサイクルの直後にブレーク例外処理の発生が割込みコントローラからＣＰＵに通知される。ＣＰＵ２はブレーク例外処理の発生が通知されると、命令実行を終了して、通知された割込みの種類を割込み要因から判別し、ブレークモード、ここではＳＣＯモードへ遷移するサイクル(内部処理とスタック処理)の直前に、ブレーク例外処理が始まる事を割込みコントローラ９に通知する。通知を受けた割込みコントローラ９は、先ず、ブレーク例外処理よりも割込み優先レベルの低い別の割込み受付を拒否し、リセット割込みだけを受付け可能にし、多重割込みが生じないようにする。第２に、通知を受けた割込みコントローラ９は、バスステートコントローラ４とフラッシュコントロールモジュール６にブレーク例外処理への状態遷移を通知する。これに応答してフラッシュコントロールモジュール６は、レジスタＲＯＭＣＲの制御ビットＢＴＳに“１”をセットし、これにより、フラッシュコントロールモジュール６はフラッシュメモリモジュール５に対してブートマットＴｍａｔの選択状態に切換える。この選択は前述の如くデコーダＸＤＥ／ＤＶ，ＹＤＥにて実現される。一方、割込みコントローラ９から前記通知を受けたバスステートコントローラ４は、ＳＣＯモード中にＤＭＡＣ１７に代表される他のバスマスタがブートマットＴｍａｔにアクセスするのを防ぐため、前記他のバスマスタからのバス権要求を排除し、ＣＰＵ２以外にはバス権が渡されないようにされる。
【００８０】
上記割込みコントローラ９によるリセット以外の割込みマスク処理、そしてバスステートコントローラ４によるＣＰＵ以外へのバス権拒否により、ＳＣＯモード中に、ブートマットＴｍａｔが他から外部のプログラムなどによって不所望にアクセスされる事態の発生を未然に防止することができる。
【００８１】
但し、ＳＣＯモードにおいて割込みコントローラ９は、リセット以外の割込要求は拒否するが、その他の割込要求の全て又は一部について、ＳＣＯモードからユーザモードへ復帰した後に処理可能なように、内部に保持する。
【００８２】
図９にはＳＣＯモードが指示されたときのベクタフェッチの様子が例示される。ユーザマットＴｍａｔの選択状態において当該マットＴｍａｔはＨ’００００００００〜Ｈ’００００２０００にマッピングされ、その先頭エリアにベクタテーブル５２が形成されている。ＣＰＵ２は割込みコントローラ９から前記ブレーク例外に対応されるベクタ番号が通知され、其のベクタ番号で示されるアドレスのベクタをベクタテーブル５２からフェッチする。ここでフェッチされたベクタはブートモードが指定された時にフェッチされるベクタとは当然相違されている。例えばブレーク割込みはベクタ番号２にアサインされており、それに対応するベクタには、ＳＣＯモードで実行すべき処理ルーチン（ソースプログラムを転送するルーチン)の先頭アドレスが格納されている。ソースプログラムを転送するルーチンとは、前記転送制御プログラム格納領域５０に格納されている転送制御プログラムである。ソースプログラムとは前記被転送プログラム格納領域５１に格納された消去及び書込み処理プログラム等を意味する。
【００８３】
図１０にはＲＡＭ３へのソースプログラムの転送処理の様子が示される。ＣＰＵ２は前記ベクタで示される領域５０の域転送制御プログラムの先頭から命令をフェッチし、ソースプログラム転送ルーチンに分岐する。ＣＰＵ２はその転送ルーチンに従って、ブートマットＴｍａｔの領域５１に格納されているソースプログラムを、ＲＡＭ２の領域３２に転送する。
【００８４】
ＳＣＯモードにおいて処理プログラムをＲＡＭ３へ転送するとき、ＲＡＭ３への転送先アドレスをプログラマブルに指定可能な転送先指定レジスタＦＴＡＢを利用してよい。これにより、処理プログラムをＲＡＭ３に転送するとき、転送先領域は可変になる可能性（書き込み／消去プログラムの最適化）があり、転送すべき情報サイズがユーザの意図していたサイズより大きくなる場合は、内蔵ＲＡＭ３に既に記憶されている情報を破壊する可能性がある。これを防ぐために、転送先指定レジスタＦＴＡＢによりユーザが目的とするアドレスを指定できるようになる。
【００８５】
同様の観点より、ＳＣＯモードで転送制御プログラムによってＲＡＭ３に転送されるべき処理プログラムの情報量が返される転送情報量レジスタＦＴＤＱを利用する。即ち、ＳＣＯモードで転送制御プログラムが実行されると、このレジスタにＦＴＤＱは、処理プログラムの転送前に、転送されるべき処理プログラムの転送長（情報量）が返される。ユーザがメモリ管理を実施していれば、その管理情報を参照し、転送長に見合う、ＲＡＭ３上の未使用領域に処理プログラムを動的に転送することが可能になる。
【００８６】
図１１にはＳＣＯモードの解除、即ちブレーク例外処理から通常モードへの復帰処理の様子が示される。ＲＡＭ２への転送が終了した後、ＣＰＵ２はソースプログラム転送ルーチンの最後に格納されているリターン・ブレーク命令（ＲＴＢ：割込みサービスルーチンからの復帰命令）をフェッチする。これにより、ＣＰＵ２はブレーク例外処理から復帰するサイクル(アンスタック及び内部処理)を行ない、その中で、割込みコントローラ９、バスステートコントローラ４、及びフラッシュコントロールモジュール６に対してブレーク例外処理の終了を通知する。これにより、バスステートコントローラ４はバス権要求に対して競合を排除するための通常のバスアービトレーション制御を開始する。フラッシュコントロールモジュール６はレジスタＲＯＭＣＲの制御ビットＢＳＴ、レジスタＦＣＣＳの制御ビットＳＣＯを“０”にクリアして、ユーザマットＭｍａｔを選択させる。
【００８７】
図１２にはソースプログラムルーチンへの分岐処理の様子が示される。アンスタックによりユーザプログラム３１のプログラムカウンタＰＣの値に復帰する。ユーザ制御に復帰した時には、ＲＡＭ３の領域３２にソースプログラムがコピーされており、ユーザプログラムによりソースプログラムにジャンプする。このとき、割込みコントローラ９がＳＣＯモード中に発生された割込要求を保持している場合には、特に制限されないが、前記ユーザプログラムのプログラムカウンタＰＣの値に復帰する前に、当該保持した割込要求に応ずる指示が割込みコントローラ９からＣＰＵ２に与えられて処理される。
【００８８】
図１３にはユーザプログラムに復帰後のソースプログラムによる処理の一例が示される。例えば、ブートマットＴｍａｔからＲＡＭ３の領域３２に転送されたソースプログラムを実行し、例えば、外部のホスト装置から書込みデータをＲＡＭに取り込み、取り込んだデータをユーザマットＭｍａｔの所望のエリアに書込みする処理などが行われる。尚、ソースプログラムの転送終了後にＲＴＢ命令を実行せず、そのまま転送先のＲＡＭ領域に分岐してフラッシュメモリの書換え処理などを実施する事も可能である。書き換え処理を完了してからＲＴＢ命令を実行すれば、書き換え処理中の割込みもマスクする事ができる。
【００８９】
図１４には割込要求を保存可能な割込みコントローラ９の一例が示される。割込みコントローラ９は、バッファ９０、優先順位制御部９１、ベクタ生成部９２、及び保持部９３によって構成される。バッファ９０は割込み要求信号９４が入力される。優先順位制御部９１は入力された割込要求に対して割込み優先レベル及び割込みマスクデータを考慮して、競合する割込み要求に対してどの割込み要求を受付けるかの判定を行う。ベクタ生成部９２は受付けられた割込み要求が有ると、割込み信号ＩＲＱをアサートし、割込み要因を出力し、割込みベクタを出力する。前記優先順位判定部９１はベクタ割込みの要求を検出すると、割込み要求を割込み優先レベル順にソートして保持部に保持させ、ベクタ生成部９２による割込み信号等の出力動作を抑止させる。前記ブレーク例外処理の終了通知が有ると、優先順位判定部９１は、保持部９３に割込み要求が保持されているかを判定し、保持されている場合は、特に制限されないが、ブレーク割込み発生直前のユーザプログラムに復帰する前に、保持部９３に保持されている優先レベルの高い順に割込み要求情報をベクタ生成部９２に与えて、割り込み処理を実行させる。保存された割込み要求が全て実行された後、ブレーク割込み発生直前のユーザプログラムに復帰する。尚、保持部９３に全ての割込み要求を保持させず、緊急度の高いマスク不可能なＮＭＩのような割込みだけに限定してもよい。
【００９０】
《消去及び書き込みのプロテクト》
図１５にはフラッシュメモリ１３の消去及び書き込みに対するプロテクトのための論理構成が例示される。同図の論理は正論理とされ、その構成はフラッシュコントロールモジュール６によって実現される。
【００９１】
フラッシュメモリに対する消去及び書き込み動作は、書込み消去関係レジスタ群ＰＥＣＮＴの初期値に対して、処理に必要な制御データを設定することによって可能にされる。書込み消去関係レジスタ群ＰＥＣＮＴに対する制御データの設定は制御ビットＳＷＥが論理値“１”で可能になる。要するに、制御ビットＳＷＥが論理値“１”にされない限り、フラッシュメモリ１３の消去及び書込みは不可能にされる。
【００９２】
制御ビットＳＷＥを論理値“１”にする第１の条件は外部端子ＰｆｗｅによりレジスタＦＣＣＳのイネーブルビットＦＷＥを論理値“１”にセットすることである。
【００９３】
第２の条件は、ナンドゲート５５の出力を論理値“１”とする動作モードの選択状態とフラッシュメモリのマット選択状態を得ることである。即ち、動作モードがテストモード（ＴＥＳＴＴＭ＝１）、ライタモード（ＷＲＴＭ＝１）、又はブートモード（ＢＯＯＴ＝１）であること。或は、ユーザモード又はユーザブートモードにおいてユーザブートマットＵｍａｔが選択されていないこと（ＵＭＡＴＳＥＬ＝０）である。尚、テストモードとはマイクロコンピュータの製造メーカがデバイステストに用いる動作モードであり、全ての動作が可能にされるが、ユーザには非公開な動作モード、即ち、ユーザによる設定が不可能な考慮が払われている。
【００９４】
前記信号ＵＭＡＴＳＥＬはレジスタＦＭＡＴＳ及び当該レジスタＦＭＡＴＳの設定値に対するＡＡ判定回路５６の判定結果とされる。レジスタＦＭＡＴＳは、ユーザマットＭｍａｔとユーザブートマットＵｍａｔを切換えるときに使用する。このレジスタＦＭＡＴＳを使用することによって、ＣＰＵ２のオペレーションをユーザマットＭｍａｔからユーザブートマットＵｍａｔへ遷移する事が可能になる。ただし、マットの切換えには制限事項がある。即ち、レジスタＦＭＡＴＳのユーザブートマット選択ビットをセットできる条件は、ＣＰＵ２のオペレーションがＲＡＭ３のプログラムを実行していることである。この条件は、ＣＰＵ２による命令フェッチのアドレスエリアがＲＡＭ３のアドレスエリアであることをＢＳＣ４が検出して判定する。レジスタＦＭＡＴＳの初期値はＨ’ＡＡ以外であり、ユーザマット選択状態を示す。Ｈ’ＡＡによってユーザブートマット選択状態を示す。
【００９５】
この第２の条件により、ユーザブートマットＵｍａｔのアクセスは、どのモードでも可能であるが、書き込み／消去は、ライターモードとブートモード（及びテストモード）のみ可能になる。
【００９６】
第３の条件はレジスタＦＫＥＹが消去及び書き込み許容値に設定されていることである。前記レジスタＦＫＥＹは、電圧降下やノイズ等が原因で、プログラムが暴走し、それによるプログラムの破壊を防ぐために設けられている。消去及び書込み制御プログラム（書き込み／消去プログラム）が転送された後にプログラムが暴走した場合を考慮してレジスタＦＫＥＹを使用する。基本的には、端子Ｐｆｗｅと制御ビットＳＷＥにより、ＣＰＵ２が暴走しても、書き込み／消去が実施されないようになっているが、さらに信頼性を上げる為にユーザは、書き込み／消去を実施する前に、レジスタＦＫＥＹに“５Ａ”の値をセットする。この“５Ａ”をストアしてない時は、ＦＷＥがイネーブル（“１”）になっていたとしても、制御ビットＳＷＥをセットする事ができないようになる。レジスタＦＫＥＹに“５Ａ”がストアされている状態は、Ａ５，５Ａ判定回路５７で検出され、信号ｆｗｅｍｋｐ＝１にされ、これによって、ＳＷＥが論理値“１”にセット可能にされる。
【００９７】
前記レジスタＦＫＥＹは上述の書き込み／消去プログラム関係として機能される他に、プログラム転送関係として機能される。即ち、フラッシュッメモリ１３の消去及び書き込み処理プログラムをブートマットＴｍａｔに格納し、ブートモードの他に、ユーザブートモード及びユーザモードで利用可能にする関係上、ブートマットＴｍａｔの当該消去及び書き込み処理プログラムをＲＡＭ３に転送させるため、レジスタＦＣＣＳに制御ビットＳＣＯを設け、制御ビットＳＣＯをイネーブルすると、自動的にユーザマットＭｍａｔとブートマットＴｍａｔが切り替えられ、ブートマットＴｍａｔから消去及び書込み制御プログラムがＲＡＭ３に転送され、処理終了後にリターン命令が実行されてユーザの処理へ復帰するようになっている。このとき、ユーザが書き込み／消去を実施したくない所で、プログラムが暴走し、書き込み／消去プログラムが転送されると、ユーザプログラムを破壊する可能性が高くなる。これを回避するために、レジスタＦＫＥＹを使用する。ユーザは、制御ビットＳＣＯをセットする前に、このレジスタＦＫＥＹに“Ａ５”をストアする。この“Ａ５”をストアしてない時は、制御ビットＳＣＯをセットする事はできない。また、ＣＰＵ２がＲＡＭ３上のプログラムをオペレーションしていることも条件にされる。“Ａ５”がストアされ、ＲＡＭ３上でＣＰＵ２のオペレーションが行われている時は、ＳＣＯビットがセット可能となり、消去及び書き込み処理プログラムをブートマットＴｍａｔからＲＡＭ３へ転送することが許容される。
【００９８】
上述のように、フラッシュメモリ１３に対する消去及び書込みに関しては、レジスタＦＫＥＹでプログラムの転送と消去書き込みを排他制御しているので、プログラムが転送されない状態で暴走した場合は、書き込み／消去が実行され難い。
【００９９】
《ＳＣＯモードを用いる消去及び書込み》
次に、ＳＣＯモードで転送したプログラムを用いた消去及び書きこみ処理について説明する。
【０１００】
前記ＳＣＯモードは図１６に例示されるユーザブートモードによる処理中の所定タイミング（Ｓ４１）、或は図１７に例示されるユーザモードによる処理中（Ｓ５３）で指定可能である。或は図１８のブートモード中の任意タイミング（Ｓ２３）でも流用可能である。
【０１０１】
図１６にはユーザブートモード処理のフローチャートが例示される。ユーザブートモードでは、特に制限されないが、ブートマットＴｍａｔの先頭ベクタからオペレーションを開始し、ユーザブートマットＵｍａｔへの切換えプログラムをブートマットＴｍａｔからＲＡＭ３に転送し（Ｓ３０）、ＲＡＭ３上でのオペレーションに遷移し（Ｓ３１）、レジスタＦＭＡＴＳにＨ’ＡＡをセットして、レジスタＦＭＡＴＳによるユーザマット指示状態（初期値）をユーザブートマットに切換える（Ｓ３２）。ここで、ユーザブートマットＵｍａｔのエリア設定に誤りが有るかを判定し（Ｓ３３，Ｓ３４）誤りが無ければユーザブートマットＵｍａｔの先頭ベクタアドレスをリードし（Ｓ３５）、リードしたベクタアドレスにサブルーチンジャンプする（Ｓ３６）。ＣＰＵ２はユーザブートマットＵｍａｔ上のプログラムを実行し、先ず、ユーザ定義の通信を確立し、書込みに必要なユーザプログラムをＲＡＭ３に転送する（Ｓ３７）。ＣＰＵ２はＲＡＭ３上のプログラム実行に遷移し（Ｓ３８）、再度レジスタＦＭＡＴＳの操作を行なって、処理対象マットをユーザブートマットＵｍａｔからユーザマットＭｍａｔに切換える（Ｓ３９）。そして、ＲＡＭ３上のユーザプログラムを実行して制御ビットＳＣＯを“１”にセットし（Ｓ４０）、ＳＣＯモード処理に遷移して、ブートマットＴｍａｔ内の消去及び書き込み処理プログラムをＲＡＭ３に転送させ（Ｓ４１）、転送された消去及び書き込み処理プログラムを用いた書込み／消去の処理が行なわれる（Ｓ４２）。
【０１０２】
図１７にはユーザモード処理のフローチャートが例示される。ユーザモードが指定されると、ユーザマットＭｍａｔの先頭からベクタフェッチが行なわれて（Ｓ５０）、ユーザの制御プログラムが実行される（Ｓ５１）。ユーザプログラムの実行中にユーザマットＭｍａｔへの書込みが必要になると、ＲＡＭ３上でオペレーションを行なってＳＣＯビットを“１”にセットし（Ｓ５２）、ＳＣＯモード処理に遷移して、ブートマット内の消去及び書き込み処理プログラムをＲＡＭ３に転送させ（Ｓ５３）、転送された消去及び書き込み処理プログラムを用いた書込み／消去の処理が行なわれる（Ｓ５４）。
【０１０３】
図１８にはブートモード処理のフローチャートが例示される。先ず、オンボードのシリアルインタフェースとＳＣＩ１２との送受信を確立し（Ｓ２０）、マイクロコンピュータ１の発振周波数等の必要なパラメータをダウンロードして設定する（Ｓ２１）。次いで、ホスト装置からのコマンドを判定し、マイクロコンピュータの製品名や消去ブロック数などのステータスをホスト装置に返し（Ｓ２２）、コマンド判定プログラムと消去プログラムをＲＡＭ３に転送して（ブートプログラム上でＳＣＯモードを利用することも可能）、ＲＡＭ３上でのオペレーションに遷移する（Ｓ２３）。そして、ユーザマットＭｍａｔ及びユーザブートマットＵｍａｔを全面消去した（Ｓ２４）後、コマンドに応答しながら、ユーザマット書込み処理（Ｓ２５）、ユーザブートマット書込み処理（Ｓ２６）、書込みベリファイ処理（Ｓ２７，Ｓ２８）等を行なう。
【０１０４】
図１９にはＳＣＯモードを利用するソースプログラムの転送処理が例示される。先ず、転送したいソースコードを選択し（Ｔ１）する。ソースコードの選択は、レジスタＦＥＰＳに対して行われる。選択可能なソースコードは、特に制限されないが、書き込み及び書き込みベリファイプログラム、消去及び消去ベリファイプログラム等である。そして、制御ビットＳＣＯを“１”にセットする前に、レジスタＦＫＥＹを“Ａ５”に設定し（Ｔ２）、ＣＰＵ２のオペレーションをフラッシュッメモリ１３以外の領域例えばＲＡＭ３上のプログラム領域に切換える（Ｔ３）。Ｔ２の処理は、ＳＣＯモードによる転送時にブートマットをアクセスするので、ＣＰＵの暴走により当該マットの情報が破壊されないように、書込みに対するソフトウェアマスクを施す意味が有る。Ｔ３の処理は、ＳＣＯビットのセットによりユーザマットとブートマットが切換えられるから、ビットセット前にＣＰＵを継続してオペレーション可能な領域に変更しておく必要が有るからである。
【０１０５】
そして制御ビットＳＣＯが“１”にセットされる（Ｔ４）。これにより、前記図７〜図１０で説明したように、選択されたソースコードがＲＡＭ３の所定エリアに転送される。制御ビットＳＣＯのイネーブルを実施したら、自動的にブートマットＴｍａｔからプログラムがスタートする。最後に転送が正常に終了したかの判別が行われる（Ｔ５）。
【０１０６】
図２０にはＳＣＯモード解除後にＲＡＭに転送され処理プログラムを利用して行われる初期化処理が例示される。同図に示される初期化処理は、書込み処理／消去処理の前に行われる処理である。
【０１０７】
先ずレジスタＦＰＥＦＥＱにマイクロコンピュータ１の動作周波数がセットされ（Ｔ１０）、レジスタＦＵＢＲＡにユーザブランチアドレスがセットされる（Ｔ１１）。レジスタＦＰＥＦＥＱ、ＦＵＢＲＡにはＣＰＵ２の汎用レジスタを割り当てよい。そして、サブルーチンジャンプにより書き込み初期化プログラムが実行される（Ｔ１２）。例えば、書き込み関係の初期化プログラムは、設定されたチップ動作周波数の値を参照し、ウェイトタイムループ回数を決定する。決定したウェイトタイム時間をＲＡＭ３上に転送された書き込み制御プログラムに埋め込む処理を行なう。また、書き込み初期化プログラムは、レジスタＦＵＢＲＡの値を参照して、ユーザブランチを実施するか、実施した場合に何処のアドレスにジャンプするかの書き込みプログラム変更を実施する。要するに、ユーザブランチを実施するサブルーチンジャンプ命令に、レジスタＦＵＢＲＡの値が、分岐先アドレスとして埋め込まれる。尚、レジスタＦＵＢＲＡにＨ’００００００００のアドレスが設定された場合はユーザブランチ不実施を意味する。最後に、初期化処理が正常に終了したことを判別して（Ｔ１３）、処理を終了する。
【０１０８】
尚、前記サブルーチンとしての初期化プログラムはＳＣＯモードで前記ＲＡＭ３に転送されたソースコードの一部である。
【０１０９】
上述のように、内部シーケンサを持たずに第１領域からＲＡＭに転送された消去及び書き込み処理プログラムを用いて消去及び書き込みを実施する手法は、消去電圧や書き込み電圧印加のパルス幅の変更が容易であるが、マイクロコンピュータチップの動作周波数によって、書きこみ／消去パルス幅が変わってしまう。これを回避するのに、チップ内部に動作周波数情報設定用のレジスタＦＰＥＦＥＱを利用する。ユーザは、書き込み／消去時に、動作周波数情報設定用のレジスタＦＰＥＦＥＱにチップ動作周波数をセットする。消去及び書き込み処理プログラムは、実行時に、このチップ動作周波数のレジスタＦＰＥＦＥＱを参照し、現在の動作周波数を知る。このチップ動作周波数を元に、前記初期化プログラムは、書き込み／消去時に必要なパルス時間や遷移時間のウェイトループ回数やタイマーのセット条件を決定する。
【０１１０】
また、マイクロコンピュータ２を構成する半導体集積回路の製造プロセスのばらつきにより、ウェハ内で、書き込み／消去特性等にばらつきを生ずる。このばらつきに応じて回路特性を調整するには、書き込み時間等をトリミングで調整する技術があり、これは、デバイステスト時に書き込み消去を実施し、書き込みや消去時間を測定して、書き込み／消去時の電圧を自己整合的に調整するものである。これと同じ様に、テスト時に書き込み／消去を実施して、ブート領域Ｔｍａｔに、フラッシュメモリ１３の書き込み／消去特性を保存しておき、この特性データを使用して、前記初期化プログラムにより、消去及び書き込み処理プログラムのパラメータを決定してもよい。
【０１１１】
図２１には初期化処理の後に行われる消去プログラムの実行処理が例示される。先ず、マスク不可能な割込み（ＮＭＩ）を受け付けたときの分岐先をＲＡＭ３アドレスエリアに変更する（Ｔ２０）。例えばベクタベースレジスタをＲＡＭ３のアドレスエリアに設定変更すればよい。これは、消去途上のフラッシュメモリエリアを避けることが誤動作防止の点より望ましいからである。そのようなＮＭＩはユーザ定義のエラー処理ルーチンをコールするために利用すればよい。そして、ＮＭＩよりも割込み優先レベルの低い割込みをマスクする（Ｔ２１）。例えばステータスレジスタＳＲに割込みマスクデータＩＭＳＫのＮＭＩの次に低い割込み優先レベルを設定すればよい。これは、消去中は、状態によってフラッシュメモリに高電圧が掛かっている。この状態でＩＲＱ等の割り込みが入ったとしても、フラッシュメモリのベクターを読める事は保証できない。よって、消去中は、ＮＭＩ以外の割り込みは禁止にする。
【０１１２】
そして、消去ブロック番号を汎用レジスタＲ４にセットする（Ｔ２２）。其の後、レジスタＦＫＥＹに書き込み／消去コード“５Ａ”をセットし（Ｔ２３）、消去プログラムにサブルーチンジャンプして実行する（Ｔ２４）。サブルーチンとしての消去プログラムはＳＣＯモードで前記ＲＡＭ３に転送されたソースコードの一部である。最後に消去正常終了を判別する（Ｔ２５）。
【０１１３】
図２２には図２１のステップＴ２４でジャンプされる消去プログラムの処理フローが例示される。この処理フローは、消去データラッチ（Ｔ３０）、消去パルスの印加（Ｔ３１）、消去ベリファイ（Ｔ３２）の処理サイクル中に、ユーザブランチアドレスにサブルーチンジャンプするかを判定するステップ（Ｔ３３）を有し、初期化処理による設定値にしたがって、サブルーチンジャンプの指示がされている場合（ユーザブランチアドレスがＨ’００００００００以外のとき）には、ユーザブランチアドレスに分岐して、サブルーチンを実行する（Ｔ３４）。実行後に再び消去動作ルーチンに戻ってくる。消去ベリファイで所定の閾値状態を得られないときは、パルス印加回数Ｎをインクリメントして再度同じループを繰返し（Ｔ３５）、くり返し回数が最大回数（ＥＭＡＸ）に達する前に消去正常状態を得られれば其の時点で図２１のフローに戻り（Ｔ３６）、最大回数に達しても正常終了できないときは消去エラー処理を行なって（Ｔ３７）、図２１のフローに戻る。
【０１１４】
消去パルス印可と消去ベリファイのサイクル中に、ユーザブランチアドレスで示されたサブルーチン処理に分岐可能であるから、消去中であっても、ユーザの制御プログラムに、ある一定間隔で制御を戻すことができる。消去中でも、ユーザ制御プログラムに一定間隔で戻ってくることにより、このマクロコンピュータ１を使用したシステムを長い時間停止させなくても、消去が実施可能になる。
【０１１５】
図２３には初期化処理の後に行われる書込みプログラムの実行処理が例示される。先ず、マスク不可能な割込み（ＮＭＩ）を受け付けたときの分岐先をＲＡＭ３アドレスエリアに変更する（Ｔ４０）。例えばベクタベースレジスタをＲＡＭ３のアドレスエリアに設定変更すればよい。これは、書き込み途上のフラッシュメモリエリアを避けることが誤動作防止の点より望ましいからである。そのようなＮＭＩはユーザ定義のエラー処理ルーチンをコールするために利用すればよい。そして、ＮＭＩよりも割込み優先レベルの低い割込みをマスクする（Ｔ４１）。例えばステータスレジスタＳＲに割込みマスクデータＩＭＳＫのＮＭＩの次に低い割込み優先レベルを設定すればよい。これは、書き込み／消去中は、状態によってフラッシュメモリに高電圧が掛かっている。この状態でＩＲＱ等の割り込みが入ったとしても、フラッシュメモリのベクターを読める事は保証できない。よって、書き込み／消去中は、ＮＭＩ以外の割り込みは禁止にする。
【０１１６】
そして、書き込みアドレスの設定エリアを汎用レジスタＲ５にセットする（Ｔ４２）。すなわち、内蔵ＲＡＭ３に書かれている書き込みアドレスエリアの先頭アドレスを汎用レジスタＲ５にセットする。そして、書き込みデータアドレスの設定エリアを汎用レジスタＲ４にセットする（Ｔ４３）。即ち、内蔵ＲＡＭ３に書かれている書き込みデータアドレスエリアの先頭アドレスを汎用レジスタＲ４にセットする。其の後、レジスタＦＫＥＹに書き込み／消去コード“５Ａ”をセットし（Ｔ４４）、書き込みプログラムにジャンプして実行する（Ｔ４５）。最後に書き込みが正常に終了したかを判別する（Ｔ４６）。サブルーチンとしての書込みプログラムは前記ＳＣＯモードでＲＡＭに転送されたソースコードの一部を成す。
【０１１７】
図２４には図２３のステップＴ４５でジャンプされる書込みプログラムの処理フローが例示される。書込みデータラッチ（Ｔ５０）、書込みパルスの印加（Ｔ５１）、書込みベリファイ（Ｔ５２）の処理サイクル中に、ユーザブランチアドレスにサブルーチンジャンプするかを判定するステップ（Ｔ５３）を有し、初期化処理による設定値にしたがって、サブルーチンジャンプの指示がされている場合（ユーザブランチアドレスがＨ’００００００００以外のとき）には、ユーザブランチアドレスに分岐して、サブルーチンを実行する（Ｔ５４）。実行後に再び書き込み動作ルーチンに戻ってくる。書込みベリファイで所定の閾値状態を得られないときは、パルス印加回数Ｎをインクリメントして再度同じループを繰返し（Ｔ５５）、くり返し回数が最大回数（ＷＭＡＸ）に達する前に書込み正常状態を得られれば其の時点で図２３のフローに戻り（Ｔ５６）、最大回数に達しても正常終了できないときは書込みエラー処理を行なって（Ｔ５７）、図２３のフローに戻る。
【０１１８】
書込みパルス印可と書込みベリファイのサイクル中に、ユーザブランチアドレスで示されたサブルーチン処理に分岐可能であるから、書き込み中であっても、ユーザの制御プログラムに、ある一定間隔で制御を戻すことができる。しかも、ソフトウェアで実施しているので、ユーザの制御に戻ってくる間隔をソフトウェアで変更することも可能である。書き込み中でも、ユーザ制御プログラムに一定間隔で戻ってくることにより、このマクロコンピュータ１を使用したシステムを長い時間停止させなくても、消去及び書き込みが実施可能になる。
【０１１９】
以上説明したＳＣＯモード有するマイクロコンピュータ１によれば以下の作用効果がある。すなわち、リセットスタートの後にブートモードのような動作モードの指定によって利用可能なフラッシュメモリ１３上のブートマットＴｍａｔにフラッシュメモリ１３の消去プログラム、書き込みプログラム、初期化プログラム等の処理プログラムを格納し、更にそこに、処理プログラムの転送制御プログラムを格納しておく。オンチップＣＰＵ２がユーザプログラムを実行している状態からレジスタＦＣＣＳの制御ビットＳＣＯに“１”を設定することをトリガとして、ＣＰＵ２を前記ブートマットＴｍａｔ内の転送制御プログラムを実行させる状態に遷移させ、前記処理プログラムをオンチップＲＡＭ３に転送し、ＣＰＵ２を再びユーザプログラムを実行する状態に復帰させる。ＣＰＵ２が転送制御プログラムを実行するとき、バスステートコントローラ４には外部からのバス権要求を排除させ、ブートマットＴｍａｔ内に対する不所望な任意アクセスを不可能にする。また、ＣＰＵ２が転送制御プログラムを実行しているとき、割り込みコントローラ９にはＣＰＵ２が任意プログラム実行状態に復帰した後で処理可能なように割り込み要求を保存させる。
【０１２０】
上記により、処理プログラムの転送には所定のレジスタＦＣＣＳの制御ビットＳＣＯをセットすればよく、ユーザから見て自動的に消去及び書き込み処理プログラムのような処理プログラムをオンチップＲＡＭ３に転送させることができるから、ユーザは簡単なソフトウェアにより、オンチップフラッシュメモリ１３に対する消去及び書き込みなどの処理が可能になる。ブートモードのようにモード端子の設定を変更してリセットスタートするというようなシーケンスは不要である。
【０１２１】
前記処理プログラムをブートマットＴｍａｔに格納してユーザの利用に供するから、消去及び書込みの制御シーケンスが複雑になってもユーザの負担を大幅に軽減できる。
【０１２２】
処理プログラムの転送が終了すれば、転送処理プログラムの実行開始直前の状態に復帰することができるため、ユーザプログラムに代表される任意プログラムの実行状態の一環としてダイナミックなプログラム転送が可能であり、マイクロコンピュータ１の使い勝手を向上させることができる。
【０１２３】
前記処理プログラムの転送処理中は外部からのバス権要求が排除されるから、ブートマット内に対する不所望な任意アクセスが不可能にされ、ブートマット内のその他の情報に対する機密性を保つことができる。前記処理プログラムの転送処理中に割込み処理などの要求が入ってもその要因は保持されており、転送終了後にその割り込み処理が実行されるから、ユーザプログラムに代表される任意プログラムの実行中におけるシステムの応答性が損なわれることはない。
【０１２４】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１２５】
例えば、消去及び書込み可能な不揮発性メモリは２値のフラッシュメモリに限定されない。多値フラッシュメモリ、例えば、１個のフラッシュッメモリセルに２ビット以上の記憶情報を保持させることが可能な多値フラッシュメモリであってもよい。すなわち、１個のフラッシュメモリセルは、情報記憶に際して複数ビットの書き込みデータで指定される４種類以上の閾値電圧の中の一つの閾値電圧に設定され、情報読み出しに際して閾値電圧の状態を対応する複数ビットの記憶情報として出力する、１個のフラッシュメモリセルの記憶情報を複数ビット化したメモリである。ここでは、一つのフラッシュメモリセルに２ビットの情報を書き込むことができ、かつその情報を読み出すことができるフラッシュメモリを一例とする。このようなフラッシュメモリが実現しようとする多値情報記憶技術において、一つのメモリセルの情報記憶状態は、例えば消去状態（“１１”）、第１の書き込み状態（“１０”）、第２の書き込み状態（“００”）、第３の書き込み状態（“０１”）の中から選ばれた一つの状態とされる。全部で４通りの情報記憶状態は、２ビットのデータによって決定される状態とされる。即ち、２ビットのデータを一つのメモリセルで記憶する。
【０１２６】
また、フラッシュメモリセルはフローティングゲートとコントロールゲートの縦積み構造に限定されず、ＭＯＳトランジスタのゲート電極をフローティングゲート電極とし当該ゲート電極を延在させて形成したＭＯＳゲート容量を介してチャネル領域をコントロールゲートに用いるようなデバイス構造などを採用してもよい。また、不揮発性記憶素子はフラッシュメモリに限定されず、ＭＮＯＳ（メタル・ナイトライド・オキサイド・セミコンダクタ）トランジスタを記憶素子とするＥＥＰＲＯＭ（エレクトリカリ・イレーザブル・アンド・プログラマブル・リード・オンリ・メモリ）のような不揮発性メモリ、或いは強誘電体メモリ等であってもよい。
【０１２７】
また、マイクロコンピュータがオンチップで備える回路モジュールは上記の例に限定されず、適宜変更可能である。
【０１２８】
また、各種レジスタ手段はフラッシュメモリ内蔵の周辺レジスタであっても、ＣＰＵ内蔵の汎用レジスタであっても、或は、ＳＲＡＭなどのメモリで構成されるメモリマップドＩ／Ｏレジスタであってもよい。
【符号の説明】
【０１２９】
１  マイクロコンピュータ
２  ＣＰＵ
３  ＲＡＭ
４  バスステートコントローラ
５  フラッシュッメモリモジュール
６  フラッシュコントロールロジック
９  割込みコントローラ
ＲＥＳ  リセット信号
１３  フラッシュッメモリ
１４  モード信号
１５  システムコントローラ
２０  メモリセルアレイ
ＦＭＡＴＳ  制御レジスタ
ＦＫＥＹ  制御レジスタ
ＦＣＣＳ  制御レジスタ
ＳＣＯ  制御ビット
ＦＰＥＦＥＱ  周波数情報設定用レジスタ
ＦＴＡＢ  転送先指定レジスタ
ＦＴＤＱ  転送情報量レジスタ
ＰＥＣＮＴ  消去及び書込み関係レジスタ
ＦＥＰＳ  転送プログラム指定レジスタ
Ｒｍａｔ  リペア及びトリミングマット
Ｔｍａｔ  ブートマット
Ｕｍａｔ  ユーザブートマット
Ｍｍａｔ  ユーザマット
【図１】
2010170579.tif 000003
【図２】
2010170579.tif 000004
【図３】
2010170579.tif 000005
【図４】
2010170579.tif 000006
【図５】
2010170579.tif 000007
【図６】
2010170579.tif 000008
【図７】
2010170579.tif 000009
【図８】
2010170579.tif 000010
【図９】
2010170579.tif 000011
【図１０】
2010170579.tif 000012
【図１１】
2010170579.tif 000013
【図１２】
2010170579.tif 000014
【図１３】
2010170579.tif 000015
【図１４】
2010170579.tif 000016
【図１５】
2010170579.tif 000017
【図１６】
2010170579.tif 000018
【図１７】
2010170579.tif 000019
【図１８】
2010170579.tif 000020
【図１９】
2010170579.tif 000021
【図２０】
2010170579.tif 000022
【図２１】
2010170579.tif 000023
【図２２】
2010170579.tif 000024
【図２３】
2010170579.tif 000025
【図２４】
2010170579.tif 000026