JP4475709B2 - マイクロコンピュータ - Google Patents

マイクロコンピュータ Download PDF

Info

Publication number
JP4475709B2
JP4475709B2 JP32435699A JP32435699A JP4475709B2 JP 4475709 B2 JP4475709 B2 JP 4475709B2 JP 32435699 A JP32435699 A JP 32435699A JP 32435699 A JP32435699 A JP 32435699A JP 4475709 B2 JP4475709 B2 JP 4475709B2
Authority
JP
Japan
Prior art keywords
program
flash memory
built
register
debug
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP32435699A
Other languages
English (en)
Other versions
JP2001142740A (ja
Inventor
俊一 岩田
隆 那須
史隆 福澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Technology Corp
Original Assignee
Renesas Technology Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP32435699A priority Critical patent/JP4475709B2/ja
Priority to US09/549,060 priority patent/US6662314B1/en
Publication of JP2001142740A publication Critical patent/JP2001142740A/ja
Application granted granted Critical
Publication of JP4475709B2 publication Critical patent/JP4475709B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/27Built-in tests

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Microcomputers (AREA)
  • Read Only Memory (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Description

【0001】
【発明の属する技術分野】
この発明は、実使用環境下でデバッグを行う場合に有効なマイクロコンピュータに関するものである。
【0002】
【従来の技術】
マイクロコンピュータ応用機器などに設けられたマイクロコンピュータのデバッグを行う場合に、ICE(エミュレータ)などのデバッグツールを使用する。マイクロコンピュータがフラッシュメモリを内蔵している場合には、デバッグ中にフラッシュメモリのデータを書き換える必要が生じる。しかしながら、従来のデバッグツールには、マイクロコンピュータに内蔵されているフラッシュメモリに対する書き換え機能を備えていないため、フラッシュメモリの書き換え専用ツールであるフラッシュライタを使用して書き換えを行うか、または、ユーザがフラッシュメモリの書き換えを行うためのプログラムを用意し、デバッグツールによりそのプログラムを実行することにより、書き換えを行っていた。
【0003】
【発明が解決しようとする課題】
従来のマイクロコンピュータは以上のように構成されているので、フラッシュメモリの書き換えにフラッシュライタを使用する場合には、デバッグツールとは別にフラッシュライタを用意しなくてはならないので、デバッグのためのコストが高くなる。また、フラッシュメモリの構成に応じたフラッシュライタを使用しなくてはならないので、フラッシュメモリの構成が異なる度に異なるフラッシュライタを使用しなくてはならず、デバッグの作業効率が落ちるなどの課題があった。
さらに、デバッグツールにより書き換え用のプログラムを実行する場合には、ユーザが書き換え用のプログラムを用意しなくてはならず、デバッグの作業効率が落ちるなどの課題があった。
さらに、上記両フラッシュメモリの書き換え手法では、デバッグツールから直接にフラッシュメモリの書き換え制御を行うことができないため、フラッシュメモリの書き換えを伴うようなデバッグ機能を使用することができず、例えば、ソフトウエアブレーク機能を使用することができないなど、デバッグツールの機能が制限される課題があった。
【0004】
この発明は上記のような課題を解決するためになされたもので、デバッグツールから直接に内蔵フラッシュメモリの書き換え制御を行うことができ、デバッグの作業効率を高くすることが可能なマイクロコンピュータを得ることを目的とする。
【0005】
【課題を解決するための手段】
この発明に係るマイクロコンピュータは、第2の格納手段に格納された内蔵フラッシュ情報をインタフェースを介してデバッグツールから読み出し可能にし、デバッグツールから内蔵フラッシュ情報に基づいた書き込みデータをインタフェースを介して入力して、第1の格納手段に格納された書き換えプログラムに基づいて書き込みデータを内蔵フラッシュメモリに書き換えるCPUを備えたものである。
【0006】
この発明に係るマイクロコンピュータは、内蔵フラッシュメモリに第1の格納手段を設けたものである。
【0007】
この発明に係るマイクロコンピュータは、書き換えプログラムに、E/Wモード移行プログラム、消去プログラム、書き込みプログラム、ステータスレディ待ちプログラム、およびE/Wモード終了プログラムを備えたものである。
【0008】
この発明に係るマイクロコンピュータは、内蔵フラッシュメモリに第2の格納手段を設けたものである。
【0009】
この発明に係るマイクロコンピュータは、内蔵フラッシュ情報に、内蔵フラッシュメモリのブロックのサイズおよびアドレスからなるブロック情報と、書き換えプログラムの先頭アドレスからなる書き換えプログラム情報とを備えたものである。
【0010】
この発明に係るマイクロコンピュータは、内蔵フラッシュ情報に、セキュリティコードの格納場所を示す情報を備えたものである。
【0011】
この発明に係るマイクロコンピュータは、内蔵フラッシュ情報に、内蔵フラッシュメモリの書き換えプログラムを退避したり、書き込みデータをテンポラリに保持するのに使用する領域がどこにあるかを示す情報を備えたものである。
【0012】
この発明に係るマイクロコンピュータは、内蔵フラッシュ情報に、内蔵フラッシュメモリの書き換え時に書き込みデータを一旦保持するために使用する領域のサイズ情報を備えたものである。
【0013】
この発明に係るマイクロコンピュータは、内蔵フラッシュメモリの書き換えプログラムを格納した第1の格納手段と、内蔵フラッシュメモリに関する内蔵フラッシュ情報を格納した第2の格納手段と、デバッグツールからシリアルインタフェースを介して第1のレジスタに保持されたデバッグプログラムの命令コードに基づいてデバッグを実行すると共に、内蔵フラッシュ情報を第2のレジスタに保持させ、シリアルインタフェースを介してデバッグツールから読み出し可能にし、デバッグツールからシリアルインタフェースを介して第3のレジスタに保持された内蔵フラッシュ情報に基づいた書き込みデータを書き換えプログラムに基づいて内蔵フラッシュメモリに書き換えるCPUとを備えたものである。
【0014】
この発明に係るマイクロコンピュータは、シリアルインタフェースをJTAGインタフェースとしたものである。
【0015】
この発明に係るマイクロコンピュータは、デバッグモードになると内蔵フラッシュメモリの書き換えを許可するFP端子の入力値にかかわらず強制的にその内蔵フラッシュメモリの書き換えを許可する書き換え許可手段を備えたものである。
【0016】
この発明に係るマイクロコンピュータは、デバッグツールからの分岐命令コードに応じてCPUによって内蔵フラッシュメモリの消去および書き込み可能なモードに移行するE/Wモード移行プログラム実行手段と、デバッグツールからの分岐命令コードに応じてCPUによって消去プログラムを実行して、デバッグツールからの内蔵フラッシュメモリのアドレスに応じたブロックのデータを消去する消去プログラム実行手段と、デバッグツールからの分岐命令コードに応じてCPUによって消去実行状況情報をデバッグツールから読み出し可能にするステータスレディ待ちプログラム実行手段と、消去実行状況情報が正常と認められ、内蔵フラッシュメモリの消去すべきブロックに応じて消去プログラム実行手段およびステータスレディ待ちプログラム実行手段を所定回数実行した後に、デバッグツールからの分岐命令コードに応じてCPUによって通常モードに移行するE/Wモード終了プログラム実行手段とを備えたものである。
【0017】
この発明に係るマイクロコンピュータは、デバッグツールからの分岐命令コードに応じてCPUによって内蔵フラッシュメモリの消去および書き込み可能なモードに移行するE/Wモード移行プログラム実行手段と、デバッグツールからの分岐命令コードに応じてCPUによって消去プログラムを実行して、デバッグツールからの内蔵フラッシュメモリのアドレスに応じたブロックのデータを消去する消去プログラム実行手段と、デバッグツールからの分岐命令コードに応じてCPUによって書き込みプログラムを実行して、デバッグツールからの内蔵フラッシュメモリのアドレスに、デバッグツールからの書き込みデータを書き込む書き込みプログラム実行手段と、デバッグツールからの分岐命令コードに応じてCPUによって書き込み実行状況情報をデバッグツールから読み出し可能にするステータスレディ待ちプログラム実行手段と、書き込み実行状況情報が正常と認められ、内蔵フラッシュメモリの書き換えすべきブロックに応じて消去プログラム実行手段、書き込みプログラム実行手段およびステータスレディ待ちプログラム実行手段を所定回数実行した後に、デバッグツールからの分岐命令コードに応じてCPUによって通常モードに移行するE/Wモード終了プログラム実行手段とを備えたものである。
【0018】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態1.
図1はこの発明の実施の形態1によるマイクロコンピュータを示す構成図であり、図において、1はマイクロコンピュータ応用機器などに設けられた1チップのマイクロコンピュータ、2はマイクロコンピュータ1のデバッグ時に接続される汎用的なデバッグツールである。また、マイクロコンピュータ1において、3は32ビット汎用レジスタを16本(R0〜R15)備えたマイクロプロセッサであるCPU、4はこの実施の形態1の特徴であるデバッグモジュール、5はこの実施の形態1の特徴であるユーザプログラムなどが格納された内蔵フラッシュメモリ、6はこの実施の形態1の特徴である内蔵SRAM、7はDMAコントローラ、割り込みコントローラ、タイマなどの内蔵周辺I/O、8はバス制御回路、9は上記各モジュールを接続する32ビットの内部バスである。
また、内蔵フラッシュメモリ5の周辺において、5aは“1”の入力値で内蔵フラッシュメモリ5の書き換えの許可、“0”の入力値で書き換えを禁止するフラッシュプロテクト信号を入力するFP端子、5bはそのフラッシュプロテクト信号と、CPU3から出力されるデバッグモードで“1”、通常モードで“0”となるモード信号との論理和をとるOR回路、5cはそのOR回路5bの出力値が“1”で、内蔵フラッシュメモリ5の書き換えを許可し、“0” で、内蔵フラッシュメモリ5の書き換えを禁止するフラッシュ内部制御回路であり、OR回路5bおよびフラッシュ内部制御回路5cにより、FP端子5aの入力値にかかわらずデバッグモードになると内蔵フラッシュメモリ5の書き換えを強制的に許可する書き換え許可手段を構成する。
【0019】
図2はマイクロコンピュータのCPUおよびデバッグモジュールの詳細を示す構成図であり、図において、11はデバッグモジュール4と外部のデバッグツール2とを接続するIEEE 1149.1で定められた5本のJTAGインタフェース端子(インタフェース,シリアルインタフェース)であり、各端子の機能を以下に説明する。
TCK端子:クロック入力端子
TDI端子:テスト命令コードまたはテストデータをシリアルに入力する端子TDO端子:テスト命令コードまたはテストデータをシリアルに出力する端子TMS端子:テスト回路の状態遷移を制御するテストモード選択を入力する端子
TRST端子:テスト回路を非同期に初期化するテストリセットを入力する端子
12はチップ外部からCPU3に対してデバッグ割り込みを入力する端子である。
【0020】
また、CPU3において、13aはデバッグトラップ命令実行機能であり、このデバッグトラップ命令実行機能13aは、デバッグ専用のトラップ命令であり、CPU3がこの命令を実行することによりデバッグ事象が発生し、デバッグモードに移行するものである。13bはプログラムカウンタであり、このプログラムカウンタ13bは、CPU3が実行している命令のアドレスを保持するレジスタである。13cはプログラムカウンタ退避用レジスタであり、このプログラムカウンタ退避用レジスタ13cは、デバッグ事象等が発生した時にプログラムカウンタ13b値の退避先となるレジスタである。13dはPSWレジスタであり、このPSWレジスタ13dは、CPU3の状態を示すレジスタである。13eはPSW退避用レジスタであり、このPSW退避用レジスタ13eは、デバッグ事象等が発生した時にPSWレジスタ13d値の退避先となるレジスタである。CPU3は、上記以外にもロード命令、ストア命令、分岐命令、加算命令等、一般的なCPUが備えている命令実行機能と汎用レジスタ13fを16本備えている。ここではこの実施の形態とは直接関係が無いので詳細は省略する。14は実行後PCブレーク機能であり、この実行後PCブレーク機能14は、ターゲットとなる命令のプログラムカウンタ値を設定すると、その命令の実行直後にデバッグ事象が発生し、デバッグモードに移行するものである。
【0021】
さらに、デバッグモジュール4において、15はJTAG制御部であり、このJTAG制御部15は、JTAGインタフェース端子11を通じてデバッグツール2と通信を行い、デバッグ機能の制御を行うものであり、JTAGインタフェース端子11でアクセス可能なデバッグ関連の制御レジスタやJTAGインタフェース端子11でのアクセスを制御するTAPコントローラなどで構成されている。16はこの実施の形態1の特徴であるJTAGインタフェース端子11を通じてCPU命令を実行するモニタコード供給機能、17はアクセスブレーク機能であり、このアクセスブレーク機能17は、ターゲットとなるデータアクセスの条件を設定すると、設定された条件を満たすデータアクセスを検出する。条件が成立するとCPU3に対してデバッグ割り込み要求を出力するものである。18は実行前PC(プログラムカウンタ)ブレーク機能であり、この実行前PCブレーク機能18は、ターゲットとなる命令のプログラムカウンタ値を設定すると、その命令がフェッチされたことを検出してCPU3に実行前PCブレーク要求を出力する。CPU3が実行前PCブレーク要求を受け取ると、その命令の実行直前にデバッグ事象が発生し、デバッグモードに移行するものである。19はデバッグ割り込み要求であり、このデバッグ割り込み要求19は、デバッグ専用の割り込みであり、DBI端子12、JTAG制御部15、アクセスブレーク機能17の3個所から発生するデバッグ割り込み要求を論理和して1本化してからCPU3に対して出力するものである。CPU3にデバッグ要求が入力されるとデバッグ事象が発生し、デバッグモードに移行する。
以上のように、マイクロコンピュータ1には、デバッグ機能が内蔵されており、主にデバッグモジュール4がデバッグ機能の制御を行っている。
【0022】
ここで、JTAGについて補足説明する。
今日のマイクロコンピュータ応用機器では、高密度実装化、デバイスの高集積、大規模、狭ピッチ化により、ボードレベルのテストが困難となってきている。このようなボードレベルのテストの課題を解決する目的で欧米の半導体、電子機器メーカ、テスタメーカなどが中心となってJTAG(Joint Test Action Group)が結成された。このJTAGより提案されたボードレベルのテスト方式がバウンダリスキャン方式といわれるものであり、現在はIEEE1149.1テストポートアクセス規格(IEEE Standard Test Access Port and Boundary Scan Architecture (IEEE Std.1149.1a−1993)として標準化されている。
バウンダリスキャン方式では、ボード上に搭載されている各デバイスの入出力ピンと内部回路間にスキャンレジスタ回路(バウンダリスキャン)を挿入し、さらにコントロール回路と専用ピンを設ける。ボード上では、各デバイスのバウンダリスキャンを接続して、専用ポートを使用してシリアルにデータの入出力を行うことにより、全てのスキャンレジスタのアクセスとコントロールを可能にしている。シリアルに命令やデータを入力し、シリアルに出力されるデータを観測することによって、ボード上にテスト用のプローブを接触させることなく、ボード上のデバイス間の接続テストやデバイス内部のテストを行うことができる。
【0023】
バウンダリスキャンは、以下のコンポーネントで構成される。
TAP(Test Access Port) バウンダリスキャンへのデータの入出力およびコントロールを行うためのポートであり、図2におけるJTAGインタフェース端子11に相当する。
TAPコントローラ TCK端子およびTMS端子からの入力に応じて状態遷移を行い、テスト回路の制御を行う。
命令レジスタ テスト命令コードを保持するレジスタで、この値をデコードしてテスト回路の制御信号を生成する。テスト命令コードとして、SAMPLE/PRELOAD命令、EXTEST命令、BYPASS命令などがある。また、上記命令とは別にデバイス独自のプライベート命令を追加することも許されている。この実施の形態1のマイクロコンピュータにおいても内蔵デバッグ機能用にいくつかのプライベート命令を備えている。
データレジスタ
・バイパスレジスタ TDI端子とTDO端子との間に設けられた1ビットのレジスタで、テスト回路をバイパスするために使用する。
・バウンダリスキャンレジスタ デバイスの内部回路と各ピンとの間に設けられたシフトレジスタをシリアルに接続した一連のレジスタ。
・上記以外にもデバイス独自のデータレジスタを追加することも許されている。この実施の形態1のマイクロコンピュータにおいても内蔵デバッグ機能用にいくつかのデータレジスタを備えている。
【0024】
図3はデバッグ事象発生時の処理手順を示す説明図である。
マイクロコンピュータ1には、ユーザモードとデバッグモードの2つの実行モードがあり、ユーザプログラムを実行しているモードがユーザモードであり、ユーザプログラムの実行中にデバッグ事象が発生するとユーザモードからデバッグモードに遷移する。デバッグモードではデバッグツール2から供給されるモニタプログラムを実行する。
デバッグ事象の種類には、デバッグトラップ命令の実行、デバッグ割り込み要求、実行前/実行後プログラムカウンタブレーク要求がある。
デバッグ事象が発生すると、以下の処理をCPU3およびデバッグモジュール4が自動的に行った後、デバッグモードに遷移する。
・プログラムカウンタ13bの値をプログラムカウンタ退避用レジスタ13cに退避
・PSWレジスタ13dの値をPSW退避用レジスタ13eに退避した後、PSWレジスタ13dの値を更新
・発生したデバッグ事象を示すデバッグ事象発生要因フラグをJTAG制御部15にあるJTAGレジスタにセット
・デバッグ事象のベクタアドレス(H’FFFF9000番地)に分岐
デバッグ事象のベクタアドレスに分岐したら、デバッグツール2は、モニタコード供給機能16を使用して命令コードをCPU3に供給することによって、モニタプログラムを実行する。
ユーザモードへの復帰命令(RTE命令)を実行することにより、デバッグモードからユーザモードに遷移する。ユーザモードに遷移する際には、以下の処理をCPU3およびデバッグモジュール4が自動的に行う。
・デバッグ事象発生要因フラグをクリア
・PSW退避用レジスタ13eに退避されていた値をPSWレジスタ13dに復帰
・プログラムカウンタ退避用レジスタ13cに退避されていた値をプログラムカウンタ13bに復帰すると共に、その値の番地に分岐する
【0025】
図4は内蔵領域にマッピングされたデバッグモジュール用領域を示す説明図であり、図において、21はデバッグモジュール用内蔵I/O領域(H’FFFF8000〜H’FFFF9FFF)、22はデバッグモジュール用制御レジスタ領域(H’FFFF8000〜H’FFFF8FFF)であり、実行前PCブレーク機能用のレジスタ群、アクセスブレーク機能用のレジスタ群、モニタコード供給機能用のレジスタ群がこの領域に配置されている。23はモニタコード供給領域(H’FFFF9000〜H’FFFF9FFF)であり、モニタコード供給機能にアクセスできる領域である。この領域内での命令フェッチは、全てモニタコード供給機能を使用したJTAGインタフェース端子11経由の命令コードをフェッチすることになる。デバッグ事象ベクタエントリ(H’FFFF9000〜H’FFFF9003)は、デバッグ事象が発生するとこの領域に分岐するものである。
また、24はツールROM領域であり(H’FF003FE0〜H’FF003FFF)、セキュリティコードや内蔵フラッシュ情報が置かれているアドレスを格納する領域である。25はセキュリティコード格納領域であり、この領域のアドレスとバイト数はツールROM領域24内で指定される。26は内蔵フラッシュ情報格納領域であり、内蔵フラッシュ書き換え用プログラム(以下、書き換えプログラムと言う)の一つであるE/Wモード移行プログラムのエントリアドレスと内蔵フラッシュメモリ5のブロック構成の情報を格納する領域であり、この領域のアドレスとバイト数はツールROM領域24内で指定される。
【0026】
図5はモニタコード供給機能およびJTAG制御部のレジスタ構成を示す構成図であり、ここで、モニタコード供給機能16は、JTAGインタフェース端子11を使用して外部からCPU3に対して命令コードを供給する機能である。CPU3は、デバッグ事象が発生すると、図4に示したモニタコード供給領域23の先頭であるH’FFFF9000番地へ分岐し、このモニタコード供給機能16から供給される命令コードを実行するものである。
JTAG制御部15において、31はJTAGインタフェース端子11でのアクセスを制御するTAPコントローラ、32はいずれのレジスタを用いてどのようなテストを行うか選択する命令レジスタである。
【0027】
33はMON_CODEレジスタ(第1のレジスタ)であり、このMON_CODEレジスタ33は、デバッグモード時にJTAGインタフェース端子11経由でモニタプログラムを実行する場合に、デバッグツール2から供給される命令コードの設定に使用する32ビットのレジスタである。MON_CODEレジスタ33に設定された値は、モニタコード供給機能16の命令コードバッファ37に転送される。この時、命令コードバッファ37の入力ポインタも自動的にインクリメントされるものである。
34はMON_DATAレジスタ(第2のレジスタ)であり、このMON_DATAレジスタ34は、デバッグモード時にJTAGインタフェース端子11経由でモニタプログラムを実行する場合に、その実行結果をデバッグツール2に出力したり、内蔵フラッシュ情報をデバッグツール2に出力するインタフェースとなる32ビットのレジスタである。モニタプログラム上でストア命令を使用してモニタコード供給機能16のFrontMON_DATAレジスタ38に書き込みを行うと、その値がMON_DATAレジスタ34に転送され、JTAGインタフェース端子11経由でデバッグツール2から読み出すことができる。
35はMON_PARAMレジスタ(第3のレジスタ)であり、このMON_PARAMレジスタ35は、デバッグモード時にJTAGインタフェース端子11経由でモニタプログラムを実行する場合に、デバッグツール2から書き換えデータなどのパラメータを渡すためのインタフェースとなる32ビットのレジスタである。デバッグツール2からJTAGインタフェース端子11経由でMON_PARAMレジスタ35に書き込みを行うと、モニタコード供給機能16のFrontMON_PARAMレジスタ39に転送され、モニタプログラム上でロード命令を使用してその値を読み出すことができる。
【0028】
36はMON_ACCESSレジスタであり、このMON_ACCESSレジスタ36は、デバッグモード時にJTAGインタフェース端子11経由でモニタプログラムを実行する場合に、アクセス制御情報を設定/格納する4ビットのレジスタである。
bit0 MNSTART モニタコード供給開始ビット(読み出し/書き込み可)
1:命令コード設定済み
0:命令コード未設定
“1”を設定することにより、命令コードバッファ37に有効な値が設定されたことを示す。すなわち、モニタコード供給機能16における命令フェッチ要求を受け付けるようになる。
bit1 MNDTVLD FrontMON_DATA有効ビット(読み出し専用)
1:FrontMON_DATA有効(FrontMON_DATAレジスタ38への書き込みがあり、かつ、MON_DATAレジスタ34は未参照)
0:FrontMON_DATA無効(FrontMON_DATAレジスタ38への書き込みがない、またはMON_DATAレジスタ34を参照した後)このビットは、FrontMON_DATAレジスタ38への書き込みがあった時、“1”にセットされる。このビットは、以下の条件でゼロクリアされる。
・MON_DATAレジスタ34をアクセスした時
・デバッグモードでのRTE命令実行時
・デバッグ制御部のリセット時(デバッグモジュールのリセット)
bit2 MNPRMVLD FrontMON_PARAM有効ビット(読み出し専用)
1:FrontMON_PARAM有効(MON_PARAMレジスタ35は設定済みであるが、FrontMON_PARAMレジスタ39が未だ読み出されていない)
0:FrontMON_PARAM無効(MON_PARAMレジスタ35が設定されていないか、FrontMON_PARAMレジスタ39が読み出された後)
このビットは、FrontMON_PARAMレジスタ39への設定が行われた時に“1”がセットされる。このビットは、以下の条件でゼロクリアされる。
・FrontMON_PARAMレジスタ39に対して読み出しがあった時
・デバッグモードでのRTE命令実行時
・デバッグ制御部のリセット時(デバッグモジュールのリセット)
bit3 MNCDBUSY MON_CODEビジービット(読み出し専用)
1:MON_CODEへの設定不可
0:MON_CODEへの設定可
このビットは、次の命令コードをMON_CODEレジスタ33に設定してもよいかどうかを示すビットである。このビットは、以下のような2つの意味がある。
・MON_CODEレジスタ33から命令コードバッファ37への転送中=“1”、転送完了=“0”、命令コードバッファ37にフェッチされていない命令コードがある=“1”、ない=“0”
このビットは、以下の条件で“1”にセットされる。
・MON_CODEレジスタ33をアクセスした時
・MNSTARTビットに“1”をセットした時
このビットは、以下の条件でゼロクリアされる。
・MON_CODEレジスタ33に書き込んだ値が命令コードバッファ37に転送された時
・命令コードバッファ37に格納されている命令が全てCPU3によってフェッチされた時(注1)
・デバッグモードでのRTE命令実行時
・デバッグ制御部のリセット時(デバッグモジュールのリセット)
(注1)命令コードバッファ37のフェッチ完了の判断
命令コードバッファ37の先頭のワードに対して、2回目の命令フェッチ要求が発生した時を「命令コードバッファ37の全ての命令コードをフェッチした」と判断する。例えば、命令コードバッファ37の2ワード目に分岐命令があった場合には、3ワード目、4ワード目に命令コードが設定されていても、2ワード目の分岐命令による分岐先の命令フェッチ要求が、命令コードバッファ37に対して発生した時点で「全ての命令コードがフェッチされた」ことになる。なお、モニターコード供給機能16で分岐を行う場合には「必ず分岐先を命令コードバッファ37の先頭アドレスにしなければならない」という制限がデバッグツール2に対して要求されているものとする。すなわち、デバッグツール2がMON_CODEレジスタ33に設定する分岐命令の分岐先アドレスは、常に4ワード境界上のアドレス(アドレスの下位4ビット[28:31]を“0000”)にする必要がある。この制限によって、モニターコード供給機能16内で分岐した場合には、必ず命令コードバッファ37の1ワード目に対する命令フェッチ要求になることが保証される。
【0029】
また、モニタコード供給機能16において、37は命令コードバッファであり、この命令コードバッファ37は、4ワードで構成され、JTAG制御部15のMON_CODEレジスタ33の内容が転送される。命令コードバッファ37は、(H’FFFF9000〜H’FFFF9FFF)にマッピングされており、どのワードが選択されるかは、アドレスの下位2ビットで決定される。
38はFrontMON_DATAレジスタであり、このFrontMON_DATAレジスタ38は、実行結果や内蔵フラッシュ情報などをデバッグツール2に受け渡しするための32ビットのレジスタである。このFrontMON_DATAレジスタ38の内容がJTAG制御部15のMON_DATAレジスタ34に転送される。
39はFrontMON_PARAMレジスタであり、このFrontMON_PARAMレジスタ39は、デバッグツール2からモニタプログラムへの書き換えデータなどのパラメータを受け渡しするための32ビットのレジスタである。JTAG制御部15のMON_PARAMレジスタ35の内容がこのFrontMON_PARAMレジスタ39に転送される。
9aはアドレスバス、9bはデータバスである。
【0030】
図6は内蔵フラッシュメモリのメモリ領域を示す説明図であり、図において、41はユーザ領域、42はブートROM領域である。
内蔵フラッシュメモリ5のユーザ領域41は、512Kバイトのフラッシュメモリが(H’00000000〜H’0007FFFF)番地に割り当てられ、11ブロックに分割されたユーザが使用できる領域である。内蔵フラッシュメモリ5の消去は、一括で全領域消去を行う方法とブロック単位で消去する方法があり、また、内蔵フラッシュメモリ5への書き込みは、ページ単位(1ページ=256バイト)で行うものである。内蔵フラッシュメモリ5の消去および書き込みは、後述するフラッシュE/Wイネーブルモードへ移行することにより可能となるものである。
内部フラッシュメモリ5のブートROM領域42は、16Kバイトのフラッシュメモリが(H’FF000000〜H’FF003FFF)番地に割り当てられ、内臓フラッシュメモリ5に対する書き換えプログラムを格納する領域である。
【0031】
図7はフラッシュレディステータスレジスタを示す説明図であり、図において、51はフラッシュレディステータスレジスタであり、内蔵フラッシュメモリ5に設けられた32ビットのレジスタである。52はそのフラッシュレディステータスレジスタ51に設けられたFSTAT(レディステータス)ビットであり、内蔵フラッシュメモリ5に対する消去および書き込みの動作状態を示すものである。
0:消去または書き込み実行中
1:レディ状態
このFSTATビット52は、図1に示したフラッシュ内部制御回路5cによって制御されるものである。
【0032】
図8はフラッシュメモリ制御レジスタを示す説明図であり、図において、61はフラッシュメモリ制御レジスタであり、内蔵フラッシュメモリ5に設けられた32ビットのレジスタである。62はそのフラッシュメモリ制御レジスタ61に設けられたFENTRY(フラッシュモードエントリ)ビットであり、フラッシュE/Wイネーブルモードへの移行を制御するためのビットである。このビットを“1”セットすることにより、フラッシュE/Wイネーブルに移行し、このビットを“0”セットすることにより、通常動作モードに復帰するものである。
このFENTRYビット62は、図1に示したフラッシュ内部制御回路5cによって制御されるものである。
【0033】
図9は内蔵フラッシュ書き換えに関する情報を示す説明図であり、図において、ツールROM領域24は、セキュリティコードや内蔵フラッシュ情報が置かれているアドレスを格納する領域であり、図4に示したように内蔵空間に配置されている。
図10はツールROM領域の構成を示す説明図であり、図に示すように、ツールROM領域24の場所は、(H’FF003FE0〜H’FF003FFF)番地であり、このツールROM領域24に各情報が設定済みであることを示すために、(H’FF003FFC−F)番地に固定値(H’DF534449)のコードが埋め込まれている。デバッグツール2は、このコードの値を確認してからツールROM領域24の各情報を使用する。
また、図9および図10に示すように、セキュリティコード格納領域25とセキュリティレベルの情報が置かれており、セキュリティコードが設定されている場合、デバッグツール2側でセキュリティコードの比較を行い、一致しない場合にはセキュリティレベルに応じてツールの動作を制限する。
H’FF003FF0−1番地 セキュリティコードのバイト数
H’FF003FF2−3番地 セキュリティレベル
H’0000 レベル0
デバッグツールのリセット以外の動作を許可しない。
H’0001 レベル1
内蔵フラッシュの全領域消去を実行しない限り、デバッグツールの動作を許可しない。
H’FF003FF4−7番地 セキュリティコード格納領域の先頭アドレスセキュリティコードがない場合には(H’FFFFFFFF)となる。
さらに、図9および図10に示すように、内蔵フラッシュ情報格納領域26の先頭アドレスが置かれている。
H’FF003FE8−EB番地 内蔵フラッシュ情報格納領域の先頭アドレス
内蔵フラッシュ情報格納領域がない場合にはH’FFFFFFFFとなる。
【0034】
図11は内蔵フラッシュ情報格納領域の構成を示す説明図であり、図に示すように、内蔵フラッシュ情報格納領域26の先頭アドレスは、ツールROM領域24のH’FF003FE8−EB番地に置かれている。そして、内蔵フラッシュ情報格納領域26には、以下の情報が置かれている。
E/Wモード移行プログラムのエントリアドレス(書き換えプログラム情報)先頭アドレス+ H’00〜H’03番地:E/Wモード移行プログラムのエントリアドレス
内蔵フラッシュのブロック数
先頭アドレス+ H’04〜H’07番地:内蔵フラッシュのブロック数
Figure 0004475709
内蔵フラッシュ書き換え時に使用するテンポラリ領域の情報
内蔵フラッシュメモリ5の書き換え時には、フラッシュ書き換え用プログラムの格納や書き込みデータのバッファ用として内蔵SRAM6の一部を使用する。このような内蔵フラッシュメモリ5の書き換え時にテンポラリに使用する領域の先頭アドレスとバイト数を格納する。
デバッグ中に内蔵フラッシュメモリ5の書き換えを行うような場合には、デバッグツール2側でこの領域のデータを内蔵SRAM6から退避できるように、この情報を格納している。
8n+H’10〜H’13番地:フラッシュの書き換え用テンポラリ領域の先頭アドレス
8n+H’14〜H’17番地:フラッシュの書き換え用テンポラリ領域のバイト数
(注)ブロック数=(n+1)個
フラッシュ書き込み用バッファのサイズ(=ページサイズ)情報
フラッシュ書き込み用バッファのバイト数(=ページサイズ)を格納する。
8n+H’18〜H’1B番地:フラッシュの書き込み用バッファのバイト数(=ページサイズ)
(注)ブロック数=(n+1)個
【0035】
次に内蔵フラッシュ書き換え用プログラム(書き換えプログラム)の構成について説明する。書き換えプログラムは、図6に示したブートROM42内に格納され、E/Wモード移行プログラム、ブロック消去プログラム(消去プログラム)、ページ書き込みプログラム(書き込みプログラム)、ステータスレディ待ちプログラム、およびE/W終了プログラムからなるものである。以下に、各プログラムの構成について説明する。
【0036】
E/Wモード移行プログラム
E/Wモード移行プログラムは、内蔵フラッシュメモリ5の書き換えの最初に実行しなければならないプログラムであり、書き換えに必要な各種パラメータをCPUレジスタに設定した後、フラッシュE/Wイネーブルモードに移行するものである。
実行方法
モニタコード供給機能16を使用して、内蔵フラッシュ情報格納領域26の先頭1ワードに格納されているアドレスに分岐させる。この時、MON_PARAMレジスタ35への設定は必要ない。
処理内容
(1)CPUレジスタに各パラメータを設定
R0 :パラメータの設定は無し、デバッグツール2が使用可能
R1 :パラメータの設定は無し、デバッグツール2が使用可能
R2 :パラメータの設定は無し、デバッグツール2が使用可能
R3 :パラメータの設定は無し、デバッグツール2が使用可能
R4 :H’FFFF8400(MON_DATAレジスタ34のアドレス)
R5 :フラッシュ書き込み用バッファの先頭アドレス−4
R6 :パラメータの設定は無し、デバッグツール2が使用可能
R7 :フラッシュ書き込み用バッファのバイト数(=ページサイズ)
R8 :ブロック消去プログラムのエントリアドレス
R9 :ページ書き込みプログラムのエントリアドレス
R10:ステータスレディ待ちのプログラムのエントリアドレス
R11:E/W終了プログラムのエントリアドレス
R12:パラメータの設定は無し、デバッグツール2が使用可能
R13:パラメータの設定は無し、デバッグツール2が使用可能
R14:パラメータの設定は無し、デバッグツール2が使用可能
R15:パラメータの設定は無し、デバッグツール2が使用可能
(2)内蔵フラッシュメモリ5上のフラッシュ書き換えプログラムを内蔵SRAM6上に転送
(3)フラッシュE/Wイネーブルモードに移行
(4)MON_DATAレジスタ34にプログラム正常/エラー終了情報を書き込む
実行終了の確認方法
デバッグツール2は、MON_DATAレジスタ34を読み出し、MSBビット(bit0)の値を確認することによって、E/Wモード移行プログラムが正常終了したか否かを確認できる。
【0037】
ブロック消去プログラム
ブロック消去プログラムは、MON_PARAMレジスタ35で指定された内蔵フラッシュメモリ5上のブロックに対して消去プログラムを発行するプログラムである。フラッシュE/Wイネーブルモードで使用する。
実行方法
モニタコード供給機能16を使用して、上記R8が示すアドレスに分岐させる。この際、消去したいメモリブロックの先頭アドレスをMON_PARAMレジスタ35に設定する。内蔵フラッシュメモリ5のブロック構成の情報は、内蔵フラッシュ情報格納領域26にある。
処理内容
(1)MON_PARAMレジスタ35で指定されたメモリブロックに対して消去コマンドを発行
(2)プログラムの最後に、MON_DATAレジスタ34への書き込みを行う。
実行終了の確認方法
MON_DATAレジスタ34の書き込みはツール(デバッグツール2)側とデバイス(マイクロコンピュータ1)側とのハンドシェイク用である。MON_DATAレジスタ34への書き込みがこのプログラムの終了を表す。従って、MON_DATAレジスタ34の内容には意味がないが、デバッグツール2は、MON_DATAレジスタ34を一旦空読みしてから次の処理を実行する。
このプログラムの終了は、消去が完了していることを示すものではない。消去の完了を確認するには「ステータスレディ待ちプログラム」を実行する必要がある。
【0038】
ページ書き込みプログラム
ページ書き込みプログラムは、MON_PARAMレジスタ35で指定されたページに対してページ書き込みコマンドを発行するプログラムである。フラッシュE/Wイネーブルモードで使用する。
実行方法
モニタコード供給機能16を使用して、上記R9が示すアドレスに分岐させる。この際、書き込みしたいページの先頭アドレスをMON_PARAMレジスタ35に設定する。書き込みデータは、予め内蔵SRAM6上のフラッシュ書き込み用バッファ領域に転送しておく。バッファの先頭アドレスは(R5値+4)、バッファサイズ(=ページサイズ)はR7値で示される。この処理は、以下のような命令をモニタコード供給機能16を使用して実行することによって実現できる。
FFFF9000 LD R0,@(4,R4)
:(R4の値+4)=H’FFFF8004番地を読み出し、読み出してきたデータをR0に格納する。すなわち、FrontMON_PARAM値(=書き込みデータ)を読み出してきてR0にセットする。
FFFF9004 ST R0,@+R5
:R5の値を+4してからR5値が示す番地にR0の値をストアする。すなわち、上記命令で読み出してきた書き込みデータをフラッシュ書き込み用バッファに転送する。
FFFF9006 ADDI R7,#−4
:R7の値を−4する。すなわち、書き込み用バッファのサイズを1ワード分デクリメントする。
FFFF9008 BNEZ R7,LFFFF9000
:R7の値がゼロでない時には、H’FFFF9000番地に分岐し、ゼロになるとH’FFFF900C番地に移る。すなわち、バッファサイズ分の転送が終了するまでループする。
FFFF900C JMP R8
:R8の値が示す番地にジャンプする。すなわち、転送が終了するとステータスレディ待ちプログラムにジャンプする。
FFFF900E NOP
処理内容
(1)フラッシュ書き込み用バッファのデータをMON_PARAMレジスタ35で指定されたページに対して書き込みコマンドを発行
(2)CPUレジスタR5,R7の値を以下の値に設定する。(次のバッファへの転送処理の時にR5,R7の値をそのまま使用できる。)
R5:フラッシュ書き込み用バッファの先頭アドレス−4
R7:フラッシュ書き込み用バッファのバイト数(=ページサイズ)
(3)プログラムの最後に、MON_DATAレジスタ34への書き込みを行う。
実行終了の確認方法
MON_DATAレジスタ34の書き込みは、ツール側とデバイス側とのハンドシェイク用である。MON_DATAレジスタ34への書き込みがこのプログラムの終了を表す。従って、MON_DATAレジスタ34の内容には意味がないが、デバッグツール2は、MON_DATAレジスタ34を一旦空読みしてから次の処理を実行する。
このプログラムの終了は、書き込みが完了していることを示すものではない。書き込みの完了を確認するには「ステータスレディ待ちプログラム」を実行する必要がある。このプログラムの終了後は、フラッシュ書き込み用バッファに次の書き込みデータを書くことができる。
【0039】
ステータスレディ待ちプログラム
ステータスレディ待ちプログラムは、ブロック消去プログラムやページ書き込みプログラムを実行した後、消去や書き込みが終了するまで待つためのプログラムである。消去や書き込みが正常終了したかどうかはMON_DATAレジスタ34に反映する。フラッシュE/Wイネーブルモードで使用する。
実行方法
モニタコード供給機能16を使用して、上記R10が示すアドレスに分岐させる。MON_PARAMレジスタ35への設定は必要ない。
処理内容
(1)フラッシュの消去もしくは書き込み動作が終了するまで待つ
(2)MON_DATAレジスタ34にプログラム正常/エラー終了情報を書き込む。
実行終了の確認方法
デバッグツール2は、MON_DATAレジスタ34を読み出し、MSBビット(bit0)の値を確認することによって、消去や書き込みが正常に行われたかどうかを確認できる。
【0040】
E/Wモード終了プログラム
E/Wモード終了プログラムは、フラッシュE/Wモードイネーブルモードから通常モードに戻るためのプログラムである。内蔵フラッシュ書き換え処理の最後に実行する。
実行方法
モニタコード供給機能16を使用して、上記R11が示すアドレスに分岐させる。MON_PARAMレジスタ35への設定は必要ない。
処理内容
(1)通常モードに移行
(2)プログラムの最後に、MON_DATAレジスタ34への書き込みを行う。
実行終了の確認方法
MON_DATAレジスタ34の書き込みは、ツール側とデバイス側とのハンドシェイク用である。MON_DATAレジスタ34への書き込みがこのプログラムの終了を表す。従って、MON_DATAレジスタ34の内容には意味がないが、デバッグツール2は、MON_DATAレジスタ34を一旦空読みしてから次の処理を実行する。
【0041】
次に動作について説明する。
1.モニタコード供給機能およびJTAG制御部の動作
図12はモニタコード供給機能およびJTAG制御部の動作を示すフローチャートであり、まず、上記図5の構成図とこの図12のフローチャートを参照しながらモニタコード供給機能およびJTAG制御部の動作を説明する。
(1)モニタコードの設定
デバッグツール2は、JTAGインタフェース端子11を通じてMON_CODEレジスタ33に命令コードを設定する。MON_CODEレジスタ33に設定された命令コードは、命令コードバッファ37に転送されると同時にMON_ACCESSレジスタ36のMNCDBUSYビットに“1”がセットされ、転送完了により“0”がセットされる。1ワード分の命令コードが命令コードバッファ37のどの段に格納されるかは入力ポインタによって内部制御される。先に設定した順にバッファ#0〜#3に格納される。入力ポインタの値は、デバッグモジュールのリセットを行うか、MNSTARTビットに“1”を設定することによりゼロクリアされる(ST1)。
【0042】
(2)命令コードバッファに転送されたことの確認
デバッグツール2は、MON_ACCESSレジスタ36を読み出して、MNCDBUSYビットに“0”がセットされていることを確認する。MNCDBUSYビットに“0”がセットされていれば、MON_CODEレジスタ33に設定された命令コードが命令コードバッファ37に転送されたことを示している。次のMON_CODEレジスタ33への命令コードの設定は、MNCDBUSYビットに“0”がセットされていることを確認してから行う(ST2)。
上記(ST1)と(ST2)の処理を最大4回まで任意の回数繰り返す。
なお、命令コードバッファ37の命令コードは、MON_CODEレジスタ33をアクセスしない限り保持される。従って、命令コードバッファ37に設定した命令コードを再度使用する場合には新規に設定し直す必要がない。MNSTARTビットに“1”を設定すれば、命令コードバッファ37に保持されている命令コードが再びCPU3によって実行される。
【0043】
(3)パラメータの設定
モニタプログラムがパラメータを必要としない場合にはこの処理は必要ない。デバッグツール2は、JTAGインタフェース端子11を通じてMON_PARAMレジスタ35にパラメータを設定する。MON_PARAMレジスタ35に設定されたパラメータは、FrontMON_PARAMレジスタ39に転送されると同時にMON_ACCESSレジスタ36のMNPRMVLDビットに“1”がセットされる。CPU3がFrontMON_PARAMレジスタ39を読み出すとMNPRMVLDビットに“0”がセットされる。FrontMON_PARAMレジスタ39の内容は、MON_PARAMレジスタ35の設定を行わない限り保持され、同じパラメータを何度も使用する場合は、新規に設定し直す必要はない(ST3)。
【0044】
(4)モニターコード供給のスタート
デバッグツール2は、JTAGインタフェース端子11を通じてMON_ACCESSレジスタ36のMNSTARTビットに“1”をセットする。MNSTARTビットに“1”がセットされることにより、CPU3は命令コードバッファ37の内容をフェッチできるようになる(ST4)。
【0045】
(5)スタート要求の解除
デバッグツール2は、MON_ACCESSレジスタ36のMNSTARTビットに“0”をセットする。
【0046】
(6)モニタコードがフェッチされたことの確認
デバッグツール2は、MON_ACCESSレジスタ36を読み出して、MNCDBUSYビットに“0”がセットされていることを確認する。MNCDBUSYビットに“0”がセットされていれば、命令コードバッファ37へ設定した全ての命令のフェッチが完了したことを示す。
【0047】
(7)MON_PARAMが使用されたことを確認
この処理は、パラメータ設定を行った場合のみ必要である。
デバッグツール2は、MON_ACCESSレジスタ36を読み出して、MNPRMVLDビットに“0”がセットされていることを確認する。MNPRMVLDビットに“0”がセットされていれば、CPU3がFrontMON_PARAMレジスタ39を読み出したことを示している。
【0048】
(8)FrontMON_DATAに書き込みがあったことの確認
この処理は、FrontMON_DATAレジスタ38への書き込みをモニタプログラムが行う場合にのみ必要である。
デバッグツール2は、MON_ACCESSレジスタ36を読み出して、MNDTVLDビットに“1”がセットされていることを確認する。MNDTVLDビットに“1”がセットされていれば、CPU3がFrontMON_DATAレジスタ38に書き込みを行ったことを示している。
【0049】
(9)FrontMON_DATAの読み出し
この処理は、FrontMON_DATA38への書き込みをモニタプログラムが行う場合にのみ必要である。
デバッグツール2がJTAGインタフェース端子11を通じてMON_DATAレジスタ34を読み出すと、MNDTVLDビットは自動的にクリアされる。FrontMON_DATAレジスタ38の内容は、FrontMON_DATAレジスタ38への書き込みを行わない限り保持されている(ST9)。
【0050】
2.内蔵フラッシュメモリの書き換え動作
図13は内蔵フラッシュメモリの書き換え動作の概要を示すフローチャートであり、次に、この図13のフローチャートを参照しながら内蔵フラッシュメモリ5の書き換え動作の概要を説明する。
内蔵フラッシュメモリ5の書き換えは、図5に示したJTAG制御部15およびモニタコード供給機能16を使用して、図6に示した内蔵フラッシュメモリ5内のブートROM領域42に格納された書き換えプログラムを呼び出すことによって行う。デバッグツール2からの書き込みデータの転送もJTAG制御部15のMON_PARAMレジスタ35を使用して転送するものである。
前処理(ST11)
デバッグツール2は、フラッシュ書き換え処理の前に、予め処理を行っておくことが必要になる。
・セキュリティレベルのチェック
・内蔵フラッシュのブロック構成の情報を読み出しておく
・E/Wモード移行プログラムのエントリアドレスを読み出しておく
保持すべきデータの読み出し(ST12)
内蔵フラッシュメモリ5への書き込みではブロック単位の消去を伴う。書き込みを行うブロックの中で保持しなければならないデータがある場合では、この段階でフラッシュE/Wイネーブルモードになる前に読み出しておく必要がある。
フラッシュE/Wイネーブルモード移行(ST13)
E/Wモード移行プログラムを実行することにより、通常モードからフラッシュE/Wイネーブルモードに移行する。
フラッシュ書き換え(ST14)
消去のみを行うか、書き込みを行うかで処理が異なる。それぞれの処理の中で必要なプログラムを実行する。
「ブロック消去プログラム」
「ページ書き込みプログラム」
「ステータスレディプログラム」
通常モード復帰(ST15)
「E/Wモード終了プログラム」を実行することにより、フラッシュE/Wイネーブルモードから通常モードに復帰する。
【0051】
次に図13に示した前処理(ST11)、および保持すべきデータの読み出し(ST12)について詳細に説明する。
デバッグツール2は、起動されるとマイクロコンピュータ1に内蔵されている各種情報をJTAG制御部15およびモニタコード供給機能16を使用して読み出し、セキュリティコードのチェックを行う。
(1)ツールROM設定済み確認コードの読み出し
▲1▼デバッグツール2から図5に示すJTAGインタフェース端子11を介してMON_CODEレジスタ33に命令コードがセットされる。
▲2▼MON_CODEレジスタ33にセットされた命令コードを、JTAG制御部15およびモニタコード供給機能16の機能により、命令コードバッファ37に転送する。
ツールROM設定済み確認コードを読み出して、FrontMON_DATAレジスタ38に書き込みを行うプログラムを、上記▲1▼,▲2▼の処理を4回行って命令コードバッファ37にセットする。
▲3▼デバッグツール2から図5に示すJTAGインタフェース端子11を介してMON_ACCESSレジスタ36のMNSTARTビットに“1”がセットされる。
▲4▼図5に示したCPU3は、命令コードバッファ37に転送されたツールROM設定済み確認コードの読み出しプログラムを実行し、以下の処理を行う。
・図10に示したツールROM領域のH’FF003FFC番地のデータを読み出す。
・読み出したデータをFrontMON_DATAレジスタ38(H’FFFF8000番地)に書き込む。
・H’FFFF9000番地に分岐し、次のデバッグツール2から供給される命令コードを待つ。
▲5▼FrontMON_DATAレジスタ38に書き込まれたデータを、JTAG制御部15およびモニタコード供給機能16の機能により、MON_DATAレジスタ34に転送する。
▲6▼デバッグツール2から図5に示すJTAGインタフェース端子11を介してMON_DATAレジスタ34のデータが読み出される。
▲7▼デバッグツール2では、MON_DATAレジスタ34のデータによって、次のように処理が分けられる。
・データがH’DF534449であれば、次の(2)の処理に進む。
・データがH’DF534449以外であれば、ツールROMの読み出し処理を終了する。
【0052】
(2)セキュリティコードの読み出し
▲1▼セキュリティコード格納領域の先頭アドレスの読み出し
読み出し番地をツールROM領域のH’FF003FF4番地に変更して、上記(1)の▲1▼〜▲6▼と同様な処理を行うことによって、図10に示した「セキュリティコード格納領域の先頭アドレス」を読み出す。
▲2▼セキュリティコードのバイト数、セキュリティのレベルの読み出し
読み出し番地をツールROM領域のH’FF003FF0番地に変更して、上記(1)の▲1▼〜▲6▼と同様な処理を行うことによって、図10に示した「セキュリティコードのバイト数、セキュリティのレベル」を読み出す。
▲3▼セキュリティコードの読み出し
読み出し番地を上記▲1▼で得られたセキュリティコード格納領域の先頭アドレスに変更して、上記(1)の▲1▼〜▲6▼と同様な処理を行うことによって、「セキュリティコード」を読み出す。
なお、セキュリティコードのバイト数が4バイトを越える場合は、上記(1)の▲1▼〜▲6▼と同様な処理を繰り返すことによって全てのセキュリティコードを得る。
▲4▼セキュリティコードのチェック
デバッグツール2は、デバッグツール2を使用しているユーザに対してセキュリティコードをキー入力してもらう。
デバッグツール2は、キー入力された値と▲3▼で得られた値とを比較し、▲2▼で得られたセキュリティのレベルとの組合せで次のように処理が分けられる。
・キー入力された値と▲3▼で得られた値とが一致した場合:次の(3)の処理に進む。
・キー入力された値と▲3▼で得られた値とが不一致、かつ、セキュリティレベル=“0”の場合:デバッグツール2は、デバッグツール2のリセット以外の動作を許可しない。
・キー入力された値と▲3▼で得られた値とが不一致、かつ、セキュリティレベル=“1”の場合:ユーザが内蔵フラッシュメモリ5の全領域の消去を実行しない限り、デバッグツール2の動作を許可しない。
このように、セキュリティチェックを行うことによって、内蔵フラッシュメモリ5上のプログラムやデータを安易に他人に読み出されたり書き換えされたりできないようにすることができる。
【0053】
(3)内蔵フラッシュ情報の読み出し
▲1▼内蔵フラッシュ情報格納領域の先頭アドレスの読み出し
読み出し番地をツールROM領域のH’FF003FE8番地に変更して、上記(1)の▲1▼〜▲6▼と同様な処理を行うことによって、図10に示した「内蔵フラッシュ情報格納領域の先頭アドレス」を読み出す。
▲2▼E/Wモード移行プログラムのエントリアドレスの読み出し
読み出し番地を上記▲1▼で得られた内蔵フラッシュ情報格納領域の先頭アドレスに変更して、上記(1)の▲1▼〜▲6▼と同様な処理を行うことによって、図11に示した「E/Wモード移行プログラムのエントリアドレス」を読み出す。
▲3▼ブロック数の読み出し
読み出し番地を上記▲1▼で得られた内蔵フラッシュ情報格納領域の先頭アドレス+4に変更して、上記(1)の▲1▼〜▲6▼と同様な処理を行うことによって、図11に示した「ブロック数」を読み出す。
▲4▼各ブロックの先頭アドレスとバイト数の読み出し
読み出し番地を上記▲1▼で得られた内蔵フラッシュ情報格納領域の先頭アドレス+8に変更して、上記(1)の▲1▼〜▲6▼と同様な処理を行うことによって、図11に示した「ブロック0の先頭アドレス」を読み出す。
そして、読み出し番地を4ずつ増加させながら上記(1)の▲1▼〜▲6▼と同様な処理を行うことによって、図11に示した「各ブロックの先頭アドレスおよびバイト数」を読み出す。
読み出す領域は、▲3▼で得られたブロック数から次のように計算することができる。
「▲1▼で得られた先頭アドレス+8」〜「▲1▼で得られた先頭アドレス+(8×n+H’0C)」、ただし、n=(▲3▼で得られたブロック数−1)
▲5▼フラッシュ書き換え用テンポラリ領域の読み出し
読み出し番地を上記▲1▼で得られた内蔵フラッシュ情報格納領域の先頭アドレス+(8×n+H’10)に変更して、上記(1)の▲1▼〜▲6▼と同様な処理を行うことによって、図11に示した「フラッシュ書き換え用テンポラリ領域の先頭アドレス」を読み出す。
そして、読み出し番地を上記▲1▼で得られた内蔵フラッシュ情報格納領域の先頭アドレス+(8×n+H’14)に変更して、上記(1)の▲1▼〜▲6▼と同様な処理を行うことによって、図11に示した「フラッシュ書き換え用テンポラリ領域のバイト数」を読み出す。
内蔵フラッシュメモリ5の消去および書き込みを行う場合には、フラッシュ書き換えプログラムの格納や書き込みデータのバッファ用として、内蔵SRAM6の一部を使用する。これをフラッシュ書き換え用テンポラリ領域と言う。この領域は、デバッグを行うユーザが使用する領域であるため、デバッグツール2は内蔵フラッシュメモリ5の消去および書き込みを行う前に、ユーザが使用している内蔵SRAM6上のデータを退避する必要がある。デバッグツール2は▲5▼で得られたフラッシュ書き換え用テンポラリ領域のデータを使用して退避処理を行い、内蔵フラッシュメモリ5の消去および書き込み処理を行った後に復帰処理を行う。
▲6▼フラッシュ書き込み用バッファのバイト数の読み出し
読み出し番地を上記▲1▼で得られた内蔵フラッシュ情報格納領域の先頭アドレス+(8×n+H’18)に変更して、上記(1)の▲1▼〜▲6▼と同様な処理を行うことによって、図11に示した「フラッシュ書き込み用バッファのバイト数」を読み出す。
フラッシュ書き込み用バッファとは、フラッシュ書き換え用テンポラリ領域のうちの書き込みデータが格納されるバッファ領域である。内蔵フラッシュメモリ5の書き込みを行う場合には、デバッグツール2はページサイズ単位で書き込み処理をループさせるような制御が必要になる。マイクロコンピュータによって異なるページサイズとなる可能性があるため、▲6▼で得られたページサイズ情報を使用して、書き込みデータを生成する。
【0054】
図14は内蔵フラッシュメモリの消去動作を示すフローチャートであり、次に、この図14のフローチャートを参照しながら内蔵フラッシュメモリ5の消去動作を説明する。なお、この図14に示すフローチャートは、図13のフラッシュE/Wイネーブルモード移行(ST13)、フラッシュ書き換え(ST14)、および通常モード復帰(ST15)において、内蔵フラッシュメモリ5の消去動作のみ行った場合の詳細に相当するものである。
(4)E/Wモード移行プログラムの実行(E/Wモード移行プログラム実行手段)
▲1▼デバッグツール2から図5に示すJTAGインタフェース端子11を介してMON_CODEレジスタ33にE/Wモード移行プログラムに分岐する命令コードがセットされる(ST21)。
▲2▼MON_CODEレジスタ33にセットされた命令コードを、JTAG制御部15およびモニタコード供給機能16の機能により、命令コードバッファ37に転送する(ST22)。
▲3▼デバッグツール2から図5に示すJTAGインタフェース端子11を介してMON_ACCESSレジスタ36のMNSTARTビットに“1”がセットされる(ST21)。
▲4▼図5に示したCPU3は、命令コードバッファ37に転送されたE/Wモード移行プログラムに分岐する命令コードを実行し、図6に示したブートROM領域42上にあるE/Wモード移行プログラムに分岐する(ST21)。
▲5▼CPU3は、E/Wモード移行プログラムを実行し、以下の処理を行う(ST22)。
・CPU3の各レジスタに各パラメータをセットする(構成で説明したE/Wモード移行プログラムの処理内容:R0〜R15を参照)。
・図6に示したブートROM42上にある書き換えプログラム(E/Wモード移行プログラム、ブロック消去プログラム、ページ書き込みプログラム、ステータスレディ待ちプログラム、およびE/W終了プログラム)を図1に示した内蔵SRAM6上に転送する。この書き換えプログラムの内蔵フラッシュメモリ5内のブートROM領域42上から内蔵SRAM6上への転送は、フラッシュE/Wモードに移行すると、内蔵フラッシュメモリ5からの読み出し動作を行うことができなくなるため、内蔵フラッシュメモリ5上にあるフラッシュ書き換えプログラムを内蔵SRAM6上に退避するためである。
・内蔵SRAM6に分岐して、さらに以下の処理を引き続いて実行する。
・図8に示したフラッシュメモリ制御レジスタ61のFENTRYビット62に“1”をセットし、内蔵フラッシュメモリ5をフラッシュE/Wイネーブルモードに移行させる。
・図5に示したFrontMON_DATAレジスタ38(H’FFFF8000番地)にH’00000000を書き込む。
・H’FFFF9000番地に分岐し、次のデバッグツール2から供給される命令コードを待つ。
▲6▼FrontMON_DATAレジスタ38に書き込まれたデータを、JTAG制御部15およびモニタコード供給機能16の機能により、MON_DATAレジスタ34に転送すると共に、MON_ACCESSレジスタ36のMNDTVLDビットを“1”にセットする(ST22)。
▲7▼デバッグツール2は、JTAGインタフェース端子11を介してMON_ACCESSレジスタ36を読み出して、MNDTVLDビットをチェックし、“1”になったらJTAGインタフェース端子11を介してMON_DATAレジスタ34の値を読み出す。読み出したデータのbit0値が“0”ならば、次の(2)ブロック消去プログラムの実行に移り、bit0値が“1”ならば、エラー処理(ST24)を行う(ST23)。
【0055】
(5)ブロック消去プログラムの実行(消去プログラム実行手段)
▲1▼デバッグツール2からJTAGインタフェース端子11を介してMON_PARAMレジスタ35に消去したい内蔵フラッシュメモリ5のブロックに対応するアドレスがセットされる(ST25)。
▲2▼MON_PARAMレジスタ35にセットされたアドレスを、JTAG制御部15およびモニタコード供給機能16の機能により、FrontMON_PARAMレジスタ39に転送する(ST26)。
▲3▼デバッグツール2からJTAGインタフェース端子11を介してMON_CODEレジスタ33にブロック消去プログラムに分岐する命令コードがセットされる(ST25)。
▲4▼デバッグツール2からJTAGインタフェース端子11を介してMON_ACCESSレジスタ36のMNSTARTビットに“1”がセットされる(ST25)。
▲5▼CPU3は、命令コードバッファ37に転送されたブロック消去プログラムに分岐する命令コードを実行し、内蔵SRAM6上に退避されたブロック消去プログラムに分岐する(ST26)。
▲6▼CPU3は、ブロック消去プログラムを実行し、以下の処理を行う(ST26)。
・FrontMON_PARAMレジスタ39(H’FFFF8004番地)を読み出す。
・内蔵フラッシュメモリ5に対して消去コマンドを発行する。
図15は内蔵フラッシュメモリの消去動作の詳細を示すフローチャートであり、このフローチャートを参照しながら、上記消去コマンドに応じた動作を説明する。
まず、内蔵フラッシュメモリ5の任意のアドレスにブロックイレーズコマンドデータ(H’2020)を書き込み(ST41)、上記FrontMON_PARAMレジスタ39から読み出した消去したいブロックに対応するアドレスに応じて、消去対象であるブロックの最終偶数アドレスに確認コマンドデータ(H’D0D0)を書き込む(ST42)。そして、図1に示したフラッシュ内部制御回路5cによって消去対象であるブロックの消去が開始される(ST43)。
・FrontMON_DATAレジスタ38(H’FFFF8000番地)にH’00000000を書き込む。
・H’FFFF9000番地に分岐し、次のデバッグツール2から供給される命令コードを待つ。
▲7▼FrontMON_DATAレジスタ38に書き込まれたデータを、JTAG制御部15およびモニタコード供給機能16の機能により、MON_DATAレジスタ34に転送すると共に、MON_ACCESSレジスタ36のMNDTVLDビットを“1”にセットする(ST26)。
▲8▼デバッグツール2は、JTAGインタフェース端子11を介してMON_ACCESSレジスタ36を読み出して、MNDTVLDビットをチェックし“1”になったらJTAGインタフェース端子11を介してMON_DATAレジスタ34のデータを読み出す(ST27)。
【0056】
(6)ステータスレディ待ちプログラムの実行(ステータスレディ待ちプログラム実行手段)
▲1▼デバッグツール2からJTAGインタフェース端子11を介してMON_CODEレジスタ33にステータスレディ待ちプログラムに分岐する命令コードがセットされる(ST28)。
▲2▼MON_CODEレジスタ33にセットされた命令コードを、JTAG制御部15およびモニタコード供給機能16の機能により、命令コードバッファ37に転送する(ST29)。
▲3▼デバッグツール2からJTAGインタフェース端子11を介してMON_ACCESSレジスタ36のMNSTARTビットに“1”がセットされる(ST28)。
▲4▼CPU3は、命令コードバッファ37に転送されたステータスレディ待ちプログラムに分岐する命令コードを実行し、内蔵SRAM6上に退避されたステータスレディ待ちプログラムに分岐する(ST29)。
▲5▼CPU3は、ステータスレディ待ちプログラムを実行し、以下の処理を行う(ST29)。
・図7に示したフラッシュレディステータスレジスタ51を読み出し、FSTATビットが“1”になったら、FrontMON_DATAレジスタ38(H’FFFF8000番地)にH’00000000を書き込み、FSTATビットが所定の一定期間に“1”にならなければ、FrontMON_DATAレジスタ38(H’FFFF8000番地)にH’80000000を書き込む。
▲6▼FrontMON_DATAレジスタ38に書き込まれたデータを、JTAG制御部15およびモニタコード供給機能16の機能により、MON_DATAレジスタ34に転送すると共に、MON_ACCESSレジスタ36のMNDTVLDビットを“1”にセットする(ST29)。
▲7▼デバッグツール2は、JTAGインタフェース端子11を介してMON_ACCESSレジスタ36を読み出して、MNDTVLDビットをチェックし“1”になったらJTAGインタフェース端子11を介してMON_DATAレジスタ34のデータを読み出す。読み出したデータのbit0値が“0”ならば、次の▲8▼の実行に移り、bit0値が“1”ならば、エラー処理(ST31)を行う(ST30)。
▲8▼デバッグツール2によって、消去したいブロック数分だけ、上記ST25からST30の処理を繰り返す(ST32)。
【0057】
(7)E/Wモード終了プログラムの実行(E/Wモード終了プログラム実行手段)
▲1▼デバッグツール2からJTAGインタフェース端子11を介してMON_CODEレジスタ33にE/Wモード終了プログラムに分岐する命令コードがセットされる(ST33)。
▲2▼MON_CODEレジスタ33にセットされた命令コードを、JTAG制御部15およびモニタコード供給機能16の機能により、命令コードバッファ37に転送する(ST34)。
▲3▼デバッグツール2からJTAGインタフェース端子11を介してMON_ACCESSレジスタ36のMNSTARTビットに“1”がセットされる(ST33)。
▲4▼CPU3は、命令コードバッファ37に転送されたE/Wモード終了プログラムに分岐する命令コードを実行し、内蔵SRAM6上に退避されたE/Wモード終了プログラムに分岐する(ST34)。
▲5▼CPU3は、E/Wモード終了プログラムを実行し、以下の処理を行う(ST34)。
・図8に示したフラッシュメモリ制御レジスタ61のFENTRYビット62に“0”を書き込み、内蔵フラッシュメモリ5を通常モードに移行させる。
・FrontMON_DATAレジスタ38(H’FFFF8000番地)にH’00000000を書き込む。
▲6▼FrontMON_DATAレジスタ38に書き込まれたデータを、JTAG制御部15およびモニタコード供給機能16の機能により、MON_DATAレジスタ34に転送すると共に、MON_ACCESSレジスタ36のMNDTVLDビットを“1”にセットする(ST34)。
▲7▼デバッグツール2は、JTAGインタフェース端子11を介してMON_ACCESSレジスタ36を読み出して、MNDTVLDビットをチェックし、“1”になったらJTAGインタフェース端子11を介してMON_DATAレジスタ34のデータを読み出す(ST35)。
【0058】
図16は内蔵フラッシュメモリの書き込み動作を示すフローチャートであり、次に、この図16のフローチャートを参照しながら内蔵フラッシュメモリ5の書き込み動作を説明する。なお、この図16に示すフローチャートは、図13のフラッシュE/Wイネーブルモード移行(ST13)、フラッシュ書き換え(ST14)、および通常モード復帰(ST15)において、内蔵フラッシュメモリ5の消去および書き込み動作を行った場合の詳細に相当するものである。
(4)E/Wモード移行プログラムの実行(E/Wモード移行プログラム実行手段)
この動作は、図14に示した内蔵フラッシュメモリ5の消去動作の(ST21)〜(ST24)と同一である。
【0059】
(5)ブロック消去プログラムの実行(消去プログラム実行手段)
この動作は、図14に示した内蔵フラッシュメモリ5の消去動作の(ST25)〜(ST27)と同一である。
【0060】
(6)内蔵フラッシュメモリへの書き込みデータの転送
本来ならば、(ST27)の後は、消去が終了したかどうかをステータスレディ待ちプログラムを実行して検証すべきであるが、消去に要する時間を利用して、内蔵フラッシュメモリ5への書き込みデータを内蔵SRAM6上のフラッシュ書き込み用バッファに転送する。以下にその動作を説明する。
▲1▼デバッグツール2からJTAGインタフェース端子11を介してMON_CODEレジスタ33に書き込みデータ転送プログラムの命令コードがセットされる(ST51)。
▲2▼MON_CODEレジスタ33にセットされた命令コードを、JTAG制御部15およびモニタコード供給機能16の機能により、命令コードバッファ37に転送する(ST52)。
上記▲1▼▲2▼の処理を4回行って、書き込みデータ転送プログラムを命令コードバッファ37にセットする。書き込みデータ転送プログラムとは、内蔵フラッシュメモリに書き込みたいデータをデバッグツール2から内蔵SRAM6上のフラッシュ書き込み用バッファに転送するためのプログラムである(構成のページ書き込みプログラムの実行方法を参照)。
▲3▼デバッグツール2からJTAGインタフェース端子11を介してMON_PARAMレジスタ35に書き込みデータが32ビット分セットされる(ST51)。
▲4▼MON_PARAMレジスタ35にセットされた書き込みデータを、JTAG制御部15およびモニタコード供給機能16の機能により、FrontMON_PARAMレジスタ39に転送する(ST52)。
▲5▼デバッグツール2からJTAGインタフェース端子11を介してMON_ACCESSレジスタ36のMNSTARTビットに“1”がセットされる(ST51)。
▲6▼CPU3は、命令コードバッファ37にセットされた書き込みデータ転送プログラムを実行し、以下の処理を行う(ST52)。
・FrontMON_PARAMレジスタ39(H’FFFF8004番地)を読み出す。
・読み出した書き込みデータを内蔵SRAM6上のフラッシュ書き込み用バッファに書き込む。
・書き込み先のアドレスを+4する。
・H’FFFF9000番地に分岐し、新たな命令コードが供給されるのを待つ。
▲3▼〜▲6▼の処理を繰り返すことによって、1ページ(=256バイト)分の書き込みデータを内蔵SRAM6上のフラッシュ書き込み用バッファに転送する。最終ループの▲6▼の処理で、最後にステータスレディ待ちプログラムに分岐する。
【0061】
(7)ステータスレディ待ちプログラムの実行(ステータスレディ待ちプログラム実行手段)
この動作は、図14に示した内蔵フラッシュメモリ5の消去動作の(ST28)〜(ST31)と同一である。
【0062】
(8)ページ書き込みプログラムの実行(書き込みプログラム実行手段)
▲1▼デバッグツール2からJTAGインタフェース端子11を介してMON_PARAMレジスタ35に書き込み先のアドレスがセットされる(ST53)。
▲2▼MON_PARAMレジスタ35にセットされたアドレスを、JTAG制御部15およびモニタコード供給機能16の機能により、FrontMON_PARAMレジスタ39に転送する(ST54)。
▲3▼デバッグツール2からJTAGインタフェース端子11を介してMON_CODEレジスタ33にページ書き込みプログラムに分岐する命令コードがセットされる(ST53)。
▲4▼デバッグツール2からJTAGインタフェース端子11を介してMON_ACCESSレジスタ36のMNSTARTビットに“1”がセットされる(ST53)。
▲5▼CPU3は、命令コードバッファ37に転送されたページ書き込みプログラムに分岐する命令コードを実行し、内蔵SRAM6上に退避されたページ書き込みプログラムに分岐する(ST54)。
▲6▼CPU3は、ページ書き込みプログラムを実行し、以下の処理を行う(ST54)。
・FrontMON_PARAMレジスタ39(H’FFFF8004番地)を読み出す。
・内蔵フラッシュメモリ5に対してページ書き込みコマンドを発行する。
図17は内蔵フラッシュメモリの書き込み動作の詳細を示すフローチャートであり、このフローチャートを参照しながら、上記ページ書き込みコマンドに応じた動作を説明する。
まず、内蔵フラッシュメモリ5の任意のアドレスにページプログラムコマンドデータ(H’4141)を書き込む(ST81)。フラッシュ書き込み用バッファの先頭16ビット分のデータを読み出し、FrontMON_PARAMレジスタ39から読み出した値を書き込み先アドレスとして書き込みを行う(ST82)。フラッシュ書き込み用バッファから読み出し先のアドレスとフラッシュへの書き込み先アドレスを順次+2ずつ増加しながら(ST83)、1ページ分(=256バイト)の書き込みを行う(ST82〜ST84)。1ページ分の書き込みが終了すると、図1に示したフラッシュ内部制御回路5cによって1ページ分のデータの内蔵フラッシュメモリ5への書き込みが開始される(ST85)。・FrontMON_DATAレジスタ38(H’FFFF8000番地)にH’00000000を書き込む。
・H’FFFF9000番地に分岐し、次のデバッグツール2から供給される命令コードを待つ。
▲7▼FrontMON_DATAレジスタ38に書き込まれたデータを、JTAG制御部15およびモニタコード供給機能16の機能により、MON_DATAレジスタ34に転送すると共に、MON_ACCESSレジスタ36のMNDTVLDビットを“1”にセットする(ST54)。
▲8▼デバッグツール2は、JTAGインタフェース端子11を介してMON_ACCESSレジスタ36を読み出して、MNDTVLDビットをチェックし、“1”になったらJTAGインタフェース端子11を介してMON_DATAレジスタ34の値を読み出す(ST55)。
【0063】
(9)内蔵フラッシュメモリへの書き込みデータの転送
この動作は、(6)内蔵フラッシュメモリへの書き込みデータの転送と同一である(ST56)。
【0064】
(10)ステータスレディ待ちプログラムの実行(ステータスレディ待ちプログラム実行手段)
この動作は、(7)ステータスレディ待ちプログラムの実行と同一である(ST56)〜(ST59)。
そして、必要なページ数分だけST53〜ST58の処理を繰り返し(ST60)、必要なブロック数分だけST25〜ST60の処理を繰り返す(ST32)。
【0065】
(11)E/Wモード終了プログラムの実行(E/Wモード終了プログラム実行手段)
この動作は、図14に示した内蔵フラッシュメモリ5の消去動作の(ST33)〜(ST35)と同一である。
【0066】
なお、上記実施の形態1では、図9に示したように、ツールROM領域24、および書き換えプログラムを内蔵フラッシュメモリ5内のブートROM領域42に設け、セキュリティコード格納領域25および内蔵フラッシュ情報格納領域26を任意の空間に設けた。しかし、これらの領域は、CPU3からアクセスできる空間であればどの領域に置いても良く、ただし、これらの領域を内蔵フラッシュメモリ5に設けると、マイクロコンピュータ1のチップの製作後に、情報を書き込んだり、書き換えたりすることが可能となる利点がある。
書き換えプログラムについては、格納場所を内蔵フラッシュメモリ5ではなく、マスクROMに格納してもよく、この場合には、内蔵フラッシュメモリ5の書き換えの際に内蔵SRAM6上に退避する必要がなく、処理が簡単になるという効果がある。
【0067】
なお、上記実施の形態1では、ツールROM領域24内の情報、セキュリティコード格納領域25内の情報、および内蔵フラッシュ情報格納領域26内の情報を区別したが、これら3つの情報をまとめて内蔵フラッシュ情報としても良い。
【0068】
以上のように、この実施の形態1によれば、デバッグツール2から直接に内蔵フラッシュメモリ5の書き換え制御を行うことができ、デバッグの作業効率を高くすることができるマイクロコンピュータが得られる効果がある。
【0069】
【発明の効果】
以上のように、この発明によれば、第2の格納手段に格納された内蔵フラッシュ情報をインタフェースを介してデバッグツールから読み出し可能にし、デバッグツールから内蔵フラッシュ情報に基づいた書き込みデータをインタフェースを介して入力して、第1の格納手段に格納された書き換えプログラムに基づいて書き込みデータを内蔵フラッシュメモリに書き換えるCPUを備えるように構成したので、デバッグ時にデバッグツールからマイクロコンピュータに内蔵される書き換えプログラムを用いて直接に内蔵フラッシュメモリの書き換え制御を行うことができ、デバッグの作業効率を高くすることができる。
また、内蔵フラッシュ情報をマイクロコンピュータに内蔵し、デバッグツールがその内蔵フラッシュ情報を読み出すことが可能であるため、デバッグツールはその内蔵フラッシュ情報に応じて書き込みデータを用意することができる。したがって、内蔵フラッシュメモリの容量やブロック構成等が異なるマイクロコンピュータであっても、同じデバッグツールで書き換えが可能となる効果が得られる。
さらに、内蔵フラッシュメモリの書き換えプログラムをマイクロコンピュータに内蔵し、デバッグツールがその書き換えプログラムを起動することで内蔵フラッシュメモリの書き換えを行うようなインターフェースとなっているので、内蔵フラッシュメモリの書き換え手法が異なるマイクロコンピュータであっても、同じデバッグツールで書き換えが可能となる効果が得られる。
【0070】
また、この発明によれば、内蔵フラッシュメモリに第1の格納手段を設けるように構成したので、書き換えプログラムは内蔵フラッシュメモリに格納されるので、マイクロコンピュータのチップが製作された後からでも書き換えプログラムを書き込んだり、また、書き換えたりすることができる効果が得られる。
【0071】
さらに、この発明によれば、書き換えプログラムに、E/Wモード移行プログラム、消去プログラム、書き込みプログラム、ステータスレディ待ちプログラム、およびE/Wモード終了プログラムを備えるように構成したので、書き換えプログラムを細かなプログラムモジュールによって構成することにより、全体の書き換えプログラムを小型化することができる。
また、消去プログラム、および書き込みプログラムに分割することにより、内蔵フラッシュメモリの消去のみの処理を行うことができる効果が得られる。
【0072】
さらに、この発明によれば、内蔵フラッシュメモリに第2の格納手段を設けるように構成したので、内蔵フラッシュ情報は内蔵フラッシュメモリに格納されるので、マイクロコンピュータのチップが製作された後からでも内蔵フラッシュ情報を書き込んだり、また、書き換えたりすることができる効果が得られる。
【0073】
さらに、この発明によれば、内蔵フラッシュ情報に、内蔵フラッシュメモリのブロックのサイズおよびアドレスからなるブロック情報と、書き換えプログラムの先頭アドレスからなる書き換えプログラム情報とを備えるように構成したので、デバッグツールは、ブロック情報に応じて書き換えデータを用意することができる。したがって、内蔵フラッシュメモリの容量やブロック構成、配置アドレスなどが異なるマイクロコンピュータであっても、同じデバッグツールで書き換えが可能となる効果が得られる。
また、内蔵フラッシュメモリの書き換えプログラムの格納場所をデバッグツールが読み出すことができるので、内蔵フラッシュメモリの書き換えプログラムの格納場所が異なるマイクロコンピュータであっても、同じデバッグツールで書き換えが可能となる効果が得られる。
【0074】
さらに、この発明によれば、内蔵フラッシュ情報に、セキュリティコードの格納場所を示す情報を備えるように構成したので、デバッグツールに、そのセキュリティコードとユーザによって入力されるセキュリティコードとの比較に応じて、書き換えを許可する機能を持たせることができる効果が得られる。
【0075】
さらに、この発明によれば、内蔵フラッシュ情報に、内蔵フラッシュメモリの書き換え時に書き換えプログラムを退避したり、書き込みデータをテンポラリに保持するのに使用する領域がどこにあるかを示す情報を備えるように構成したので、デバッグツールでは、そのテンポラリ領域上のデータを退避させることができ、内蔵フラッシュメモリの書き換え処理によってテンポラリ領域上のデータが消去されてしまうのを未然に防ぐことができる効果が得られる。
【0076】
さらに、この発明によれば、内蔵フラッシュ情報に、内蔵フラッシュメモリの書き換え時に書き込みデータを一旦保持するために使用する領域のサイズ情報を備えるように構成したので、デバッグツールでは、そのサイズ情報に応じて書き込みデータを生成することができる効果が得られる。
【0077】
さらに、この発明によれば、内蔵フラッシュメモリの書き換えプログラムを格納した第1の格納手段と、内蔵フラッシュメモリに関する内蔵フラッシュ情報を格納した第2の格納手段と、デバッグツールからシリアルインタフェースを介して第1のレジスタに保持されたデバッグプログラムの命令コードに基づいてデバッグを実行すると共に、内蔵フラッシュ情報を第2のレジスタに保持させ、シリアルインタフェースを介してデバッグツールから読み出し可能にし、デバッグツールからシリアルインタフェースを介して第3のレジスタに保持された内蔵フラッシュ情報に基づいた書き込みデータを書き換えプログラムに基づいて内蔵フラッシュメモリに書き換えるCPUとを備えるように構成したので、デバッグツールからデバッグプログラムの命令コードを第1のレジスタに設定すれば、このマイクロコンピュータのデバッグを行うことができ、さらに、そのデバッグ時にデバッグツールから直接に内蔵フラッシュメモリの書き換え制御を行うことができ、デバッグの作業効率をさらに高くすることができる。
また、内蔵フラッシュ情報をマイクロコンピュータに内蔵し、デバッグツールがその内蔵フラッシュ情報を読み出すことが可能であるため、デバッグツールはその内蔵フラッシュ情報に応じて書き込みデータを用意することができる。したがって、内蔵フラッシュメモリの容量やブロック構成等が異なるマイクロコンピュータであっても、同じデバッグツールで書き換えが可能となる効果が得られる。
さらに、内蔵フラッシュメモリの書き換えプログラムをマイクロコンピュータに内蔵し、デバッグツールがその書き換えプログラムを起動することで内蔵フラッシュメモリの書き換えを行うようなインターフェースとなっているので、内蔵フラッシュメモリの書き換え手法が異なるマイクロコンピュータであっても、同じデバッグツールで書き換えが可能となる効果が得られる。
さらに、シリアルなインターフェースを使用することによって、デバッグツールとのインターフェース用端子を少なくすることができる効果が得られる。
さらに、デバッグツールからCPU命令を供給可能な機能は、マイクロプロセッサの通常のデバッグに使用できる機能であることから、この機能は通常のデバッグと内蔵フラッシュメモリの書き換え機能とを共用することができる。従って、内蔵フラッシュメモリ専用のハードウェアを追加することがないという効果が得られる。
【0078】
さらに、この発明によれば、シリアルインタフェースをJTAGインタフェースとするように構成したので、バウンダリスキャンテストを行うJTAGインタフェースと共有化することができ、新たなシリアルインタフェースを設ける必要が無く、構成を簡単にすることができる効果が得られる。
【0079】
さらに、この発明によれば、デバッグモードになると内蔵フラッシュメモリの書き換えを許可するFP端子の入力値にかかわらず強制的にその内蔵フラッシュメモリの書き換えを許可する書き換え許可手段を備えるように構成したので、デバッグモードでは、FP端子の入力値にかかわらずデバッグツールによって内蔵フラッシュメモリの書き換えを行うことができる効果が得られる。
【0080】
さらに、この発明によれば、デバッグツールからの分岐命令コードに応じてCPUによって内蔵フラッシュメモリの消去および書き込み可能なモードに移行するE/Wモード移行プログラム実行手段と、デバッグツールからの分岐命令コードに応じてCPUによって消去プログラムを実行して、デバッグツールからの内蔵フラッシュメモリのアドレスに応じたブロックのデータを消去する消去プログラム実行手段と、デバッグツールからの分岐命令コードに応じてCPUによって消去実行状況情報をデバッグツールから読み出し可能にするステータスレディ待ちプログラム実行手段と、消去実行状況情報が正常と認められ、内蔵フラッシュメモリの消去すべきブロックに応じて消去プログラム実行手段およびステータスレディ待ちプログラム実行手段を所定回数実行した後に、デバッグツールからの分岐命令コードに応じてCPUによって通常モードに移行するE/Wモード終了プログラム実行手段とを備えるように構成したので、デバッグツールからの分岐命令コードに応じて、内蔵フラッシュメモリの所定のブロックのデータを消去する一連の消去処理を実行することができる効果が得られる。
【0081】
さらに、この発明によれば、デバッグツールからの分岐命令コードに応じてCPUによって内蔵フラッシュメモリの消去および書き込み可能なモードに移行するE/Wモード移行プログラム実行手段と、デバッグツールからの分岐命令コードに応じてCPUによって消去プログラムを実行して、デバッグツールからの内蔵フラッシュメモリのアドレスに応じたブロックのデータを消去する消去プログラム実行手段と、デバッグツールからの分岐命令コードに応じてCPUによって書き込みプログラムを実行して、デバッグツールからの内蔵フラッシュメモリのアドレスに、デバッグツールからの書き込みデータを書き込む書き込みプログラム実行手段と、デバッグツールからの分岐命令コードに応じてCPUによって書き込み実行状況情報をデバッグツールから読み出し可能にするステータスレディ待ちプログラム実行手段と、書き込み実行状況情報が正常と認められ、内蔵フラッシュメモリの書き換えすべきブロックに応じて消去プログラム実行手段、書き込みプログラム実行手段およびステータスレディ待ちプログラム実行手段を所定回数実行した後に、デバッグツールからの分岐命令コードに応じてCPUによって通常モードに移行するE/Wモード終了プログラム実行手段とを備えるように構成したので、デバッグツールからの分岐命令コードに応じて、内蔵フラッシュメモリの所定のブロックに書き込みデータを書き換える一連の書き換え処理を実行することができる効果が得られる。
【図面の簡単な説明】
【図1】 この発明の実施の形態1によるマイクロコンピュータを示す構成図である。
【図2】 マイクロコンピュータのCPUおよびデバッグモジュールの詳細を示す構成図である。
【図3】 デバッグ事象発生時の処理手順を示す説明図である。
【図4】 内蔵領域にマッピングされたデバッグモジュール用領域を示す説明図である。
【図5】 モニタコード供給機能およびJTAG制御部のレジスタ構成を示す構成図である。
【図6】 内蔵フラッシュメモリのメモリ領域を示す説明図である。
【図7】 フラッシュレディステータスレジスタを示す説明図である。
【図8】 フラッシュメモリ制御レジスタを示す説明図である。
【図9】 内蔵フラッシュ書き換えに関する情報を示す説明図である。
【図10】 ツールROM領域の構成を示す説明図である。
【図11】 内蔵フラッシュ情報格納領域の構成を示す説明図である。
【図12】 モニタコード供給機能およびJTAG制御部の動作を示すフローチャートである。
【図13】 内蔵フラッシュメモリの書き換え動作の概要を示すフローチャートである。
【図14】 内蔵フラッシュメモリの消去動作を示すフローチャートである。
【図15】 内蔵フラッシュメモリの消去動作の詳細を示すフローチャートである。
【図16】 内蔵フラッシュメモリの書き込み動作を示すフローチャートである。
【図17】 内蔵フラッシュメモリの書き込み動作の詳細を示すフローチャートである。
【符号の説明】
1 マイクロコンピュータ、2 デバッグツール、3 CPU、4 デバッグモジュール、5 内蔵フラッシュメモリ、5a FP端子、5b OR回路(書き換え許可手段)、5c フラッシュ内部制御回路(書き換え許可手段)、6 内蔵SRAM、7 内蔵周辺I/O、8 バス制御回路、9 内部バス、 9aアドレスバス、9b データバス、11 JTAGインタフェース端子(インタフェース,シリアルインタフェース)、12 端子、13a デバッグトラップ命令実行機能、13b プログラムカウンタ、13c プログラムカウンタ退避用レジスタ、13d PSWレジスタ、13e PSW退避用レジスタ、13f 汎用レジスタ、14 実行後PCブレーク機能、15 JTAG制御部、16 モニタコード供給機能、17 アクセスブレーク機能、18 実行前PCブレーク機能、19 デバッグ割り込み要求、21 デバッグモジュール用内蔵I/O領域、22 デバッグモジュール用制御レジスタ領域、23 モニタコード供給領域、24 ツールROM領域、26 内蔵フラッシュ情報格納領域、31TAPコントローラ、32 命令レジスタ、33 MON_CODEレジスタ(第1のレジスタ)、34 MON_DATAレジスタ(第2のレジスタ)、35 MON_PARAMレジスタ(第3のレジスタ)、36 MON_ACCESSレジスタ、37 命令コードバッファ、38 FrontMON_DATAレジスタ、39 FrontMON_PARAMレジスタ、41 ユーザ領域、42 ブートROM領域、51 フラッシュレディステータスレジスタ、52 FSTATビット、61 フラッシュメモリ制御レジスタ、62 FENTRYビット。

Claims (13)

  1. 内蔵フラッシュメモリの書き換えプログラムを格納した第1の格納手段と、
    上記内蔵フラッシュメモリに関する内蔵フラッシュ情報を格納した第2の格納手段と、
    上記第2の格納手段に格納された内蔵フラッシュ情報をインタフェースを介してデバッグツールから読み出し可能にし、そのデバッグツールからその内蔵フラッシュ情報に基づいた書き込みデータをそのインタフェースを介して入力して、上記第1の格納手段に格納された書き換えプログラムに基づいてその書き込みデータを上記内蔵フラッシュメモリに書き換えるCPUとを備えたマイクロコンピュータ。
  2. 第1の格納手段は、内蔵フラッシュメモリであることを特徴とする請求項1記載のマイクロコンピュータ。
  3. 書き換えプログラムは、
    内蔵フラッシュメモリの消去および書き込み可能なモードに移行するE/Wモード移行プログラムと、
    上記内蔵フラッシュメモリの消去を行う消去プログラムと、
    上記内蔵フラッシュメモリの書き込みを行う書き込みプログラムと、
    上記内蔵フラッシュメモリの消去および書き込みが終了したことを知らせるステータスレディ待ちプログラムと、
    上記内蔵フラッシュメモリの消去および書き込み可能なモードから通常モードに復帰するE/Wモード終了プログラムとを備えたことを特徴とする請求項1記載のマイクロコンピュータ。
  4. 第2の格納手段は、内蔵フラッシュメモリであることを特徴とする請求項1記載のマイクロコンピュータ。
  5. 内蔵フラッシュ情報は、
    内蔵フラッシュメモリのブロックのサイズおよびアドレスからなるブロック情報と、
    書き換えプログラムの先頭アドレスからなる書き換えプログラム情報とを備えたことを特徴とする請求項1記載のマイクロコンピュータ。
  6. 内蔵フラッシュ情報は、セキュリティコードの格納場所を示す情報を備えたことを特徴とする請求項1記載のマイクロコンピュータ。
  7. 内蔵フラッシュ情報は、内蔵フラッシュメモリの書き換えプログラムを退避したり、書き込みデータをテンポラリに保持するのに使用する領域がどこにあるのか示す情報を備えたことを特徴とする請求項1記載のマイクロコンピュータ。
  8. 内蔵フラッシュ情報は、内蔵フラッシュメモリの書き換え時に書き込みデータを一旦保持するために使用する領域のサイズ情報を備えたことを特徴とする請求項1記載のマイクロコンピュータ。
  9. 内蔵フラッシュメモリの書き換えプログラムを格納した第1の格納手段と、
    上記内蔵フラッシュメモリに関する内蔵フラッシュ情報を格納した第2の格納手段と、
    デバッグツールからシリアルインタフェースを介して第1のレジスタに保持されたデバッグプログラムの命令コードに基づいてデバッグを実行すると共に、上記第2の格納手段に格納された内蔵フラッシュ情報を第2のレジスタに保持させ、そのシリアルインタフェースを介してそのデバッグツールから読み出し可能にし、そのデバッグツールからそのシリアルインタフェースを介して第3のレジスタに保持されたその内蔵フラッシュ情報に基づいた書き込みデータを上記第1の格納手段に格納された書き換えプログラムに基づいて内蔵フラッシュメモリに書き換えるCPUとを備えたマイクロコンピュータ。
  10. シリアルインタフェースは、JTAGインタフェースであることを特徴とする請求項9記載のマイクロコンピュータ。
  11. デバッグモードになると内蔵フラッシュメモリの書き換えを許可するFP端子の入力値にかかわらず強制的にその内蔵フラッシュメモリの書き換えを許可する書き換え許可手段を備えたことを特徴とする請求項9記載のマイクロコンピュータ。
  12. デバッグツールから出力されたE/Wモード移行プログラム分岐命令コードに応じてCPUによってE/Wモード移行プログラムを実行して内蔵フラッシュメモリの消去および書き込み可能なモードに移行するE/Wモード移行プログラム実行手段と、
    上記デバッグツールから出力された消去プログラム分岐命令コードに応じてCPUによって消去プログラムを実行して、そのデバッグツールから出力された上記内蔵フラッシュメモリのアドレスに応じたブロックのデータを消去する消去プログラム実行手段と、
    上記デバッグツールから出力されたステータスレディ待ちプログラム分岐命令コードに応じてCPUによってステータスレディ待ちプログラムを実行して、内蔵フラッシュメモリの消去の実行状況に応じた消去実行状況情報をそのデバッグツールから読み出し可能にするステータスレディ待ちプログラム実行手段と、
    上記消去実行状況情報が正常と認められ、上記内蔵フラッシュメモリの消去すべきブロックに応じて上記消去プログラム実行手段および上記ステータスレディ待ちプログラム実行手段を所定回数実行した後に、上記デバッグツールから出力されたE/Wモード終了プログラム分岐命令コードに応じてCPUによってE/Wモード終了プログラムを実行して通常モードに移行するE/Wモード終了プログラム実行手段とを備えたことを特徴とする請求項9記載のマイクロコンピュータ。
  13. デバッグツールから出力されたE/Wモード移行プログラム分岐命令コードに応じてCPUによってE/Wモード移行プログラムを実行して内蔵フラッシュメモリの消去および書き込み可能なモードに移行するE/Wモード移行プログラム実行手段と、
    上記デバッグツールから出力された消去プログラム分岐命令コードに応じてCPUによって消去プログラムを実行して、そのデバッグツールから出力された上記内蔵フラッシュメモリのアドレスに応じたブロックのデータを消去する消去プログラム実行手段と、
    上記デバッグツールから出力された書き込みプログラム分岐命令コードに応じてCPUによって書き込みプログラムを実行して、そのデバッグツールから出力された上記内蔵フラッシュメモリのアドレスに、そのデバッグツールから出力された書き込みデータを書き込む書き込みプログラム実行手段と、
    上記デバッグツールから出力されたステータスレディ待ちプログラム分岐命令コードに応じてCPUによってステータスレディ待ちプログラムを実行して、内蔵フラッシュメモリの書き込みの実行状況に応じた書き込み実行状況情報をそのデバッグツールから読み出し可能にするステータスレディ待ちプログラム実行手段と、
    上記書き込み実行状況情報が正常と認められ、上記内蔵フラッシュメモリの書き換えすべきブロックに応じて上記消去プログラム実行手段、上記書き込みプログラム実行手段および上記ステータスレディ待ちプログラム実行手段を所定回数実行した後に、上記デバッグツールから出力されたE/Wモード終了プログラム分岐命令コードに応じてCPUによってE/Wモード終了プログラムを実行して通常モードに移行するE/Wモード終了プログラム実行手段とを備えたことを特徴とする請求項9記載のマイクロコンピュータ。
JP32435699A 1999-11-15 1999-11-15 マイクロコンピュータ Expired - Fee Related JP4475709B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP32435699A JP4475709B2 (ja) 1999-11-15 1999-11-15 マイクロコンピュータ
US09/549,060 US6662314B1 (en) 1999-11-15 2000-04-13 Microcomputer including program for rewriting data in an internal flash memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP32435699A JP4475709B2 (ja) 1999-11-15 1999-11-15 マイクロコンピュータ

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2010026758A Division JP2010102743A (ja) 2010-02-09 2010-02-09 マイクロコンピュータ

Publications (2)

Publication Number Publication Date
JP2001142740A JP2001142740A (ja) 2001-05-25
JP4475709B2 true JP4475709B2 (ja) 2010-06-09

Family

ID=18164880

Family Applications (1)

Application Number Title Priority Date Filing Date
JP32435699A Expired - Fee Related JP4475709B2 (ja) 1999-11-15 1999-11-15 マイクロコンピュータ

Country Status (2)

Country Link
US (1) US6662314B1 (ja)
JP (1) JP4475709B2 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7171542B1 (en) * 2000-06-19 2007-01-30 Silicon Labs Cp, Inc. Reconfigurable interface for coupling functional input/output blocks to limited number of i/o pins
US7058856B2 (en) * 2000-07-18 2006-06-06 Oki Electric Industry Co., Ltd. Semiconductor circuit with flash ROM and improved security for the contents thereof
JP2002268905A (ja) * 2001-03-07 2002-09-20 Canon Inc プログラム動作装置、プログラム書込制御装置、プログラム書込制御方法及び記憶媒体
JP4162863B2 (ja) * 2001-03-30 2008-10-08 株式会社ルネサステクノロジ マイクロコンピュータ
JP2003084993A (ja) * 2001-09-10 2003-03-20 Seiko Epson Corp フラッシュメモリを備える処理装置およびデバッグ装置
US20040083469A1 (en) * 2002-10-23 2004-04-29 Ping-Sheng Chen Method for updating firmware of optical disk system
EP1443417A1 (en) * 2003-01-31 2004-08-04 STMicroelectronics S.r.l. A reconfigurable signal processor with embedded flash memory device
JP2004287541A (ja) * 2003-03-19 2004-10-14 Matsushita Electric Ind Co Ltd 不揮発性メモリのアクセス制御システム
US7533374B2 (en) * 2003-06-12 2009-05-12 Intel Corporation Adaptively storing system code in non-volatile storage
JP4526111B2 (ja) * 2003-12-19 2010-08-18 インターナショナル・ビジネス・マシーンズ・コーポレーション マイクロコンピュータおよびデバッグ方法
JP4554616B2 (ja) 2004-08-30 2010-09-29 ルネサスエレクトロニクス株式会社 半導体集積回路
US7257654B1 (en) * 2004-11-09 2007-08-14 Advanced Micro Devices, Inc. PCI bridge device configured for using JTAG scan for writing internal control registers and outputting debug state
CN100357908C (zh) * 2005-01-21 2007-12-26 明基电通股份有限公司 电子装置程序的测试方法
JP2006244129A (ja) * 2005-03-03 2006-09-14 Denso Corp フラッシュeeprom書換え方法および電子制御装置
DE102005032558B4 (de) * 2005-03-22 2007-03-01 Segger Microcontroller Systeme Gmbh Verfahren zum Betrieb eines Mikrocontrollers in einer Testumgebung und elektronische Testeinheit zur Analyse von Programm-Codes
ITMI20050799A1 (it) * 2005-05-03 2006-11-04 Atmel Corp Metodo e sistema di configurazione dei parametri per una memoria flash
US9633213B2 (en) * 2005-05-16 2017-04-25 Texas Instruments Incorporated Secure emulation logic between page attribute table and test interface
US20060259828A1 (en) 2005-05-16 2006-11-16 Texas Instruments Incorporated Systems and methods for controlling access to secure debugging and profiling features of a computer system
EP1912120A4 (en) * 2005-07-29 2009-03-04 Panasonic Corp MEMORY WRITING DEVICE
US7487331B2 (en) * 2005-09-15 2009-02-03 Microchip Technology Incorprated Programming a digital processor with a single connection
US7861122B2 (en) * 2006-01-27 2010-12-28 Apple Inc. Monitoring health of non-volatile memory
US20070233750A1 (en) * 2006-03-28 2007-10-04 Mediatek Inc. Data control apparatus and method
TWI326028B (en) * 2006-11-20 2010-06-11 Silicon Motion Inc Method for flash memory data management
US7913032B1 (en) 2007-04-25 2011-03-22 Apple Inc. Initiating memory wear leveling
US20080288712A1 (en) 2007-04-25 2008-11-20 Cornwell Michael J Accessing metadata with an external host
WO2010073444A1 (ja) * 2008-12-24 2010-07-01 パナソニック株式会社 バスコントローラ及び初期ブートプログラムのパッチ方法
US8966319B2 (en) * 2011-02-22 2015-02-24 Apple Inc. Obtaining debug information from a flash memory device
US20160196427A1 (en) * 2014-07-08 2016-07-07 Leviathan, Inc. System and Method for Detecting Branch Oriented Programming Anomalies
US10133654B1 (en) * 2017-02-28 2018-11-20 American Megatrends, Inc. Firmware debug trace capture
US10579611B2 (en) 2017-06-05 2020-03-03 Western Digital Technologies, Inc. Selective event logging
US10502780B2 (en) 2017-06-05 2019-12-10 Western Digital Technologies, Inc. Selective event filtering
CN112885403B (zh) * 2021-02-08 2023-07-14 山东云海国创云计算装备产业创新中心有限公司 一种Flash控制器的功能测试方法、装置及设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574857A (en) * 1994-01-31 1996-11-12 Intel Corporation Error detection circuit for power up initialization of a memory array
JP2752592B2 (ja) 1994-12-28 1998-05-18 日本ヒューレット・パッカード株式会社 マイクロプロセッサ、マイクロプロセッサ−デバッグツール間信号伝送方法及びトレース方法
US5805794A (en) * 1996-03-28 1998-09-08 Cypress Semiconductor Corp. CPLD serial programming with extra read register
US5835503A (en) * 1996-03-28 1998-11-10 Cypress Semiconductor Corp. Method and apparatus for serially programming a programmable logic device
JPH09319727A (ja) 1996-05-31 1997-12-12 Hitachi Ltd データプロセッサ及びデータ処理システム
US5841867A (en) * 1996-11-01 1998-11-24 Xilinx, Inc. On-chip programming verification system for PLDs
JPH10214201A (ja) 1997-01-29 1998-08-11 Mitsubishi Electric Corp マイクロコンピュータ
US6243842B1 (en) * 1998-06-08 2001-06-05 Stmicroelectronics, Inc. Method and apparatus for operating on a memory unit via a JTAG port
JP2000065899A (ja) * 1998-08-14 2000-03-03 Sony Corp 半導体装置およびそのデータ書き換え方法

Also Published As

Publication number Publication date
US6662314B1 (en) 2003-12-09
JP2001142740A (ja) 2001-05-25

Similar Documents

Publication Publication Date Title
JP4475709B2 (ja) マイクロコンピュータ
JP4190114B2 (ja) マイクロコンピュータ
US6574590B1 (en) Microprocessor development systems
US5327531A (en) Data processing system including corrupt flash ROM recovery
KR101461378B1 (ko) 동기화 simd 벡터
US7065678B2 (en) Microcomputer, electronic equipment, and debugging system
US8051467B2 (en) Secure information processing
US5784611A (en) Device and process for in-system programming electrically erasable and programmable non-volatile memory
US7506205B2 (en) Debugging system and method for use with software breakpoint
US7610517B2 (en) Microprocessor with trace functionality
US6959365B2 (en) Microcomputer including a flash memory and a flash memory rewrite program stored therein
JP2006514375A (ja) 集積回路用の診断回路
KR100309615B1 (ko) 고속프로그램가능로직컨트롤러(plc)
US6401197B1 (en) Microprocessor and multiprocessor system
JP2000065899A (ja) 半導体装置およびそのデータ書き換え方法
US5901283A (en) Microcomputer
US5751641A (en) Microprocessor memory test circuit and method
US5664156A (en) Microcontroller with a reconfigurable program status word
US20050086454A1 (en) System and methods for providing a debug function built-in type microcomputer
JP2010102743A (ja) マイクロコンピュータ
JP2011187073A (ja) 半導体処理装置
KR100543152B1 (ko) 마이크로프로세서 및 마이크로프로세서의 처리 방법
US20040139307A1 (en) Method and apparatus for initializing a semiconductor circuit from an external interface
JPH07295922A (ja) データ処理装置及びこれを用いたデータ処理システム
JPH11184724A (ja) インサーキットエミュレータ及び半導体集積回路

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20060123

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061031

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20071101

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091215

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100209

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100302

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100309

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140319

Year of fee payment: 4

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees