JPH1040093A - マイクロコンピュータおよびそのプログラム修正方法 - Google Patents

マイクロコンピュータおよびそのプログラム修正方法

Info

Publication number
JPH1040093A
JPH1040093A JP8189538A JP18953896A JPH1040093A JP H1040093 A JPH1040093 A JP H1040093A JP 8189538 A JP8189538 A JP 8189538A JP 18953896 A JP18953896 A JP 18953896A JP H1040093 A JPH1040093 A JP H1040093A
Authority
JP
Japan
Prior art keywords
address
instruction code
bit
bug
time prom
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.)
Pending
Application number
JP8189538A
Other languages
English (en)
Inventor
Akiyoshi Hatada
昭良 畑田
Yuji Osagawa
勇二 長川
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 Design Corp
Mitsubishi Electric Corp
Mitsubishi Electric Semiconductor Systems Corp
Original Assignee
Renesas Design Corp
Mitsubishi Electric Corp
Mitsubishi Electric Semiconductor Systems 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 Design Corp, Mitsubishi Electric Corp, Mitsubishi Electric Semiconductor Systems Corp filed Critical Renesas Design Corp
Priority to JP8189538A priority Critical patent/JPH1040093A/ja
Publication of JPH1040093A publication Critical patent/JPH1040093A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Microcomputers (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 OTP版マイクロコンピュータの内蔵ROM
に格納されたプログラムにバグが発見された場合、廃棄
しなければならないという課題があった。 【解決手段】 命令コードにエキストラビットb8を付
加し、ワンタイムPROM16のエキストラビット領域
26に格納する。命令コードにバグが発見された場合、
b8を“0”に反転させ、修正コードを空領域24の先
頭アドレスA1に書き込む。第1判定回路30はb8を
読み込み、b8=“1”ならば第1ゲート28は命令コ
ードを読み込む。b8=“0”ならば第1ジャンプ命令
生成回路は“JUMP A1”命令を生成して空領域2
4の先頭アドレスA1にジャンプさせる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明はマイクロコンピュ
ータおよびそのプログラムの修正方法に関するものであ
る。
【0002】
【従来の技術】一度だけプログラム可能なROM、すな
わちワンタイムPROMは通常、OTPと呼ばれてい
る。代表的なOTPは、one−time−progr
ammable EPROMである。EPROMが紫外
線消去と再書き込みによって何度でもプログラム可能な
のに対して、OTPはプログラムできるのは1回だけで
あり、消去はできない。EPROMはプログラム可能回
数に制限がないので便利であるが、石英ガラスから成る
窓が設けられたセラミックス製のパッケージに封緘する
必要があるので高価であるという難点がある。OTPは
EPROMと同じウエハプロセスで作製されたベアチッ
プをプラスチックスのパッケージに封緘したものであり
安価であるので、プログラム可能回数が1回だけである
という欠点があるにも拘らず、限定された目的の範囲内
で盛んに用いられている。
【0003】マイクロコンピュータ(MCU)制御によ
る機器を開発する際に、開発の初期段階においてはOT
P版マイクロコンピュータ(以下では、OTP・MCU
という)を使用することが一般的に行なわれている。と
いうのは、ターゲット基板では実際に使用するMCUが
機器に実装された状態や他の部品とのインタフェース情
報が正確には分からないから、マスクROM版MCUを
作製する前に、使用予定のMCUを早期に入手してフィ
ールドテストを完了させておく必要があるからである。
【0004】しかしながら、OTPのプログラム可能回
数は1回だけであるから、OTP・MCUの内蔵ROM
に格納されたプログラムにバグが発見された場合には、
そのOTP・MCUを廃棄していた。この結果、機器開
発コストの上昇や資源の無駄使い等を招いていた。
【0005】これらの問題点を解決するために、従来、
以下の方法が採られていた。 (1)OTP・MCUを作製せずに、EPROM版MC
Uを作製する方法。 (2)アドレスとデータとから成る修正情報を格納した
EEPROMを外付けし、リセット解除後直後に起動さ
れるスタートルーチンに修正情報をEEPROMからO
TP・MCUに内蔵されたレジスタおよびRAMに転送
して格納することにより、OTP・MCUの内蔵ROM
に格納されたプログラムを変更する方法。
【0006】
【発明が解決しようとする課題】従来のマイクロコンピ
ュータおよびそのプログラムの修正方法は以上のように
構成されているので、上記(1)の方法には上述したよ
うにEPROMが高価であるから、機器開発のコストが
上昇してしまうという課題があった。また、上記(2)
の方法には機器にEEPROMを外付けするためのスペ
ースを確保する必要がある点、およびMCUの端子のう
ち数本が外付けEEPROM用に使用され、本来の用途
に使用できる端子数が減ってしまうという課題があっ
た。
【0007】この発明は上記のような課題を解決するた
めになされたもので、OTP・MCUのROMに格納さ
れたプログラムのバグを修正できるようにして、瑕疵の
生じたOTP・MCUを再利用できるようにしたマイク
ロコンピュータおよびそのプログラムの修正方法を得る
ことを目的とする。
【0008】
【課題を解決するための手段】請求項1記載の発明に係
るマイクロコンピュータは、CPUと、プログラムが格
納されるワンタイムPROMと、該ワンタイムPROM
内に設けられ、命令コードに付加されたエキストラビッ
トを格納するエキストラビット領域と、前記エキストラ
ビットを読み込み、該エキストラビットが所定値である
か否かを判定する第1判定回路と、該第1判定回路が出
力する制御信号に基づいて、前記ワンタイムPROMか
ら命令コードを読み込んでバスへ送出する第1ゲート
と、前記第1判定回路が出力する前記制御信号に基づい
て、前記ワンタイムPROMの空領域の先頭アドレスへ
のジャンプ命令を生成してバスに送出する第1ジャンプ
命令生成回路と、前記第1判定回路が出力する前記制御
信号に基づいて、前記CPUに内蔵されたプログラムカ
ウンタの内容を保持するラッチとを備えるものである。
【0009】請求項2記載の発明に係るマイクロコンピ
ュータは、CPUと、プログラムが格納されるワンタイ
ムPROMと、該ワンタイムPROM内に設けられ、命
令コードに付加されたエキストラビットを格納するエキ
ストラビット領域と、前記エキストラビットを読み込
み、該エキストラビットが所定値であるか否かを判定す
る第1判定回路と、該第1判定回路が出力する制御信号
に基づいて、前記ワンタイムPROMから命令コードを
読み込んでバスへ送出する第1ゲートと、前記第1判定
回路が出力する制御信号を受信して前記エキストラビッ
トが所定値である回数i(iは自然数)をカウントし、
前記ワンタイムPROMの空領域の先頭からiの自然数
倍離れたアドレスへのジャンプ命令を生成してバスに送
出する第2ジャンプ命令生成回路と、前記第1判定回路
が出力する制御信号に基づいて、前記CPUに内蔵され
たプログラムカウンタの内容を保持するラッチとを備え
るものである。
【0010】請求項3記載の発明に係るマイクロコンピ
ュータは、CPUと、プログラムが格納されるワンタイ
ムPROMと、該ワンタイムPROMから命令コードを
読み込み、その内容が所定値であるか否かを判定する第
2判定回路と、該第2判定回路が出力する制御信号に基
づいて、前記ワンタイムPROMから命令コードを読み
込んでバスへ送出する第3ゲートと、前記第2判定回路
が出力する制御信号に基づいて、前記ワンタイムPRO
Mの空領域の先頭アドレスへのジャンプ命令を生成して
バスに送出する第3ジャンプ命令生成回路と、前記第2
判定回路が出力する制御信号に基づいて、前記CPUに
内蔵されたプログラムカウンタの内容を保持するラッチ
とを備えるものである。
【0011】請求項4記載の発明に係るマイクロコンピ
ュータは、CPUと、プログラムが格納されるワンタイ
ムPROMと、該ワンタイムPROMから命令コードを
読み込み、その内容が所定値であるか否かを判定する第
2判定回路と、該第2判定回路が出力する制御信号に基
づいて、前記ワンタイムPROMから命令コードを読み
込んでバスへ送出する第3ゲートと、前記第2判定回路
が出力する制御信号を受信して前記命令コードの内容が
所定値である回数i(iは自然数)をカウントし、前記
ワンタイムPROMの空領域の先頭からiの自然数倍離
れたアドレスへのジャンプ命令を生成してバスに送出す
る第3ジャンプ命令生成回路と、前記第2判定回路が出
力する制御信号に基づいて、前記CPUに内蔵されたプ
ログラムカウンタの内容を保持するラッチとを備えるも
のである。
【0012】請求項5記載の発明に係るマイクロコンピ
ュータのプログラムの修正方法は、ワンタイムPROM
のエキストラビット領域全体に第1ビットをセットする
ステップと、命令コードにバグが発見されたアドレスの
エキストラビットを第1ビットから第2ビットに反転さ
せるステップと、前記ワンタイムPROMの空領域の先
頭アドレスに修正した命令コードを書き込むステップと
を備えるものである。
【0013】請求項6記載の発明に係るマイクロコンピ
ュータのプログラムの修正方法は、ワンタイムPROM
のエキストラビット領域全体に第1ビットをセットする
ステップと、命令コードにバグが発見されたアドレスの
エキストラビットを第1ビットから第2ビットに反転さ
せるステップと、前記ワンタイムPROMの空領域の先
頭アドレスに修正した命令コードを書き込むステップ
と、前記ワンタイムPROMの空領域の先頭アドレスに
格納された修正した命令コードにバグが発見された場
合、当該アドレスのエキストラビットを第1ビットから
第2ビットに反転させるステップと、前記ワンタイムP
ROMの空領域の先頭からn番目(nは3以上の整数)
のアドレスに再修正した命令コードを書き込むステップ
とを備えるものである。
【0014】請求項7記載の発明に係るマイクロコンピ
ュータのプログラムの修正方法は、ワンタイムPROM
のエキストラビット領域全体に第1ビットをセットする
ステップ(a)と、命令コードにバグが発見されたアド
レスのエキストラビットを第1ビットから第2ビットに
反転させるステップ(b)と、命令コードにバグが発見
された回数i(iは自然数)をカウントするステップ
(c)と、前記ワンタイムPROMの空領域の先頭アド
レスからiの自然数倍離れたアドレスに修正した命令コ
ードを書き込むステップ(d)と、前記ワンタイムPR
OMの空領域の先頭アドレスからiの自然数倍離れたア
ドレスに格納された修正した命令コードにバグが発見さ
れた場合、当該アドレスのエキストラビットを第1ビッ
トから第2ビットに反転させるステップ(e)と、前記
ワンタイムPROMの空領域の先頭からi+1の自然数
倍離れたアドレスに再修正した命令コードを書き込むス
テップ(f)と、命令コードにバグが発見された回数i
(iは自然数)をカウントするステップ(g)とを備
え、上記ステップ(e)からステップ(g)を必要回数
繰り返すものである。
【0015】請求項8記載の発明に係るマイクロコンピ
ュータのプログラムの修正方法は、ワンタイムPROM
のエキストラビット領域全体に第1ビットをセットする
ステップ(a)と、命令コードにバグが発見されたアド
レスのエキストラビットを第1ビットから第2ビットに
反転させるステップ(b)と、命令コードにバグが発見
された回数i(iは自然数)をカウントするステップ
(c)と、前記ワンタイムPROMの空領域の先頭アド
レスからiの自然数倍離れたアドレスに修正した命令コ
ードを書き込むステップ(d)とを備え、上記ステップ
(b)からステップ(d)を必要回数繰り返すものであ
る。
【0016】請求項9記載の発明に係るマイクロコンピ
ュータのプログラムの修正方法は、命令コードにバグが
発見されたワンタイムPROMのアドレスに全て所定ビ
ットを書き込むステップと、前記ワンタイムPROMの
空領域の先頭アドレスに修正した命令コードを書き込む
ステップとを備えるものである。
【0017】請求項10記載の発明に係るマイクロコン
ピュータのプログラムの修正方法は、命令コードにバグ
が発見されたワンタイムPROMのアドレスに全て所定
ビットを書き込むステップと、前記ワンタイムPROM
の空領域の先頭アドレスに修正した命令コードを書き込
むステップと、前記ワンタイムPROMの空領域の先頭
アドレスに格納された修正した命令コードにバグが発見
された場合、当該アドレスに全て所定ビットを書き込む
ステップと、前記ワンタイムPROMの空領域の先頭か
らn番目(nは3以上の整数)のアドレスに再修正した
命令コードを書き込むステップとを備えるものである。
【0018】請求項11記載の発明に係るマイクロコン
ピュータのプログラムの修正方法は、命令コードにバグ
が発見されたアドレスに全て所定ビットを書き込むステ
ップ(a)と、命令コードにバグが発見された回数i
(iは自然数)をカウントするステップ(b)と、前記
ワンタイムPROMの空領域の先頭アドレスからiの自
然数倍離れたアドレスに修正した命令コードを書き込む
ステップ(c)と、前記ワンタイムPROMの空領域の
先頭からiの自然数倍離れたアドレスに格納された修正
した命令コードにバグが発見された場合、当該アドレス
に全て所定ビットを書き込むステップ(d)と、前記ワ
ンタイムPROMの空領域の先頭からi+1の自然数倍
離れたアドレスに再修正した命令コードを書き込むステ
ップ(e)と、命令コードにバグが発見された回数iを
カウントするステップ(f)とを備え、上記ステップ
(d)からステップ(f)を必要回数繰り返すものであ
る。
【0019】請求項12記載の発明に係るマイクロコン
ピュータのプログラムの修正方法は、命令コードにバグ
が発見されたアドレスに全て所定ビットを書き込むステ
ップ(a)と、命令コードにバグが発見された回数i
(iは自然数)をカウントするステップ(b)と、前記
ワンタイムPROMの空領域の先頭アドレスからiの自
然数倍離れたアドレスに修正した命令コードを書き込む
ステップ(c)とを備え、上記ステップ(a)からステ
ップ(c)を必要回数繰り返すものである。
【0020】
【発明の実施の形態】以下、この発明の実施の一形態を
説明する。 実施の形態1.図1は、この発明の実施の形態1による
OTP版マイクロコンピュータの要部を示す図であり、
図において、12はマイクロコンピュータとしてのOT
P版マイクロコンピュータ(以下、OTP・MCUとい
う)、14はCPU、16はOTP・MCU12に内蔵
されており、プログラムが格納されるOTP・ROM
(ワンタイムPROM)、18はアドレスバス、20は
データバス、22は修正前のプログラムが格納されるO
TP・ROM16内の真性プログラム格納領域、24は
OTP・ROM16内の空領域である。26は9ビット
幅に拡張された命令コードのMSB(most sig
nificant bit)、すなわちビット8(b
8)が格納されるエキストラビット領域である。
【0021】28はOTP・ROM16内に格納された
9ビット幅の命令コードのうち下位8ビットを読み出し
てデータバス20へ出力する第1ゲートである。30は
OTP・ROM16内に格納された9ビット幅の命令コ
ードのMSB(b8)を読み出し、b8が“1”である
か“0”であるかに応じて所定の処理を行なう第1判定
回路である。32はCPU14が内蔵するプログラムカ
ウンタ、34はラッチである。36は第1判定回路30
が出力する制御信号に基づいてプログラムカウンタ32
が保持しているアドレス値をラッチ34に保持させる第
2ゲートである。38は第1判定回路30が出力する制
御信号に基づいてCPU14の実行アドレスをOTP・
ROM16の空領域24の先頭アドレスA1へジャンプ
させる“JUMP A1”命令を生成してデータバス2
0へ出力する第1ジャンプ命令生成回路である。
【0022】次に動作について説明する。先に、OTP
のプログラム可能回数は1回だけであると述べたが、O
TPに“0”を書き込む回数に特に制限はない。つま
り、OTPを構成するメモリセルを“1”状態から
“0”状態にする(すなわち、“0”を書き込む)動作
はセルトランジスタのフローティングゲートに電荷を注
入してオンさせるだけであるから、“0”を書き込む回
数は“1”状態にあるメモリセルの個数と同じ回数だけ
可能である。この発明に係るマイクロコンピュータおよ
びそのプログラムの修正方法は、OTPのこの性質を積
極的に利用する。
【0023】図1に示すように、この実施の形態1によ
るOTP・MCU12に内蔵されたOTP・ROM16
には8ビット幅の真性命令コード「b7b6b5・・・
b2b1b0」にエキストラビットb8を付加した9ビ
ット幅の命令コード「b8b7b6・・・b2b1b
0」が格納される。エキストラビットb8は、この実施
の形態1で使用される特別のビットであり、CPU14
はエキストラビットb8を含まない8ビット幅の命令コ
ード「b7b6b5・・・b2b1b0」を読み込んで
処理を実行する。
【0024】この実施の形態1によるOTP・MCU1
2が使用するプログラムは、8ビット幅の真性命令コー
ド「b7b6b5・・・b2b1b0」を複数行集積し
たものであり、OTP・ROM16の真性プログラム格
納領域22内に格納される。OTP・ROM16にはエ
キストラビット領域26が設けられており、このエキス
トラビット領域26にはエキストラビットb8が格納さ
れる。OTP・MCU12の出荷時には、エキストラビ
ット領域26には全て“1”が書き込まれている。
【0025】図2は、図1に示すOTP・ROM16の
メモリマップを示す図であり、23はアドレスP1,P
2,P3,・・・,Pnが付され、プログラムが格納さ
れるプログラム格納領域、24は空領域である。
【0026】8ビット幅の命令コード「b7b6b5・
・・b2b1b0」が複数行集積されたプログラムはプ
ログラム格納領域23内に格納される。エキストラビッ
トb8は、アドレスP1からPnまで全て“1”状態に
保たれている。また、空領域24も全て“1”状態であ
る。
【0027】アドレスP1〜Pnに格納されたプログラ
ムは、先頭アドレスP1から順に逐次解読して実行され
る。図1に示す第1判定回路30は、各アドレスに格納
されている9ビット幅の命令コードのうちエキストラビ
ットb8だけを読み込んで、b8が“0”であるか
“1”であるかを判定する。b8=“1”の場合には制
御信号を第1ゲート28に送信し、b8=“0”の場合
には制御信号を第2ゲート36および第1ジャンプ命令
生成回路38に送信する。
【0028】次に、プログラムにバグの無い場合の動作
を図1および図2を参照して説明する。第1判定回路3
0は、プログラム格納領域23の先頭アドレスP1に格
納された9ビット幅の命令コードのうちエキストラビッ
トb8を読み込む。プログラムにバグの無い場合b8=
“1”であるから、第1ゲート28に制御信号を送信す
る。この制御信号を受信した第1ゲート28は、先頭ア
ドレスP1に格納された9ビット幅の命令コードのうち
8ビット幅の真性命令コード「b7b6b5・・・b2
b1b0」を読み込んでデータバス20へ送出する。C
PU14は、データバス20からこの真性命令コード
「b7b6b5・・・b2b1b0」を取り込んだ後、
解釈して実行する。以降、第1判定回路30は、アドレ
スP2以降のエキストラビットb8を読み込むが、プロ
グラムにバグの無い場合b8は全て“1”であるから、
第1ゲート28はアドレスP2以降の8ビット幅の真性
命令コード「b7b6b5・・・b2b1b0」を読み
込んでデータバス20へ送出することを繰り返す。CP
U14は、データバス20から真性命令コード「b7b
6b5・・・b2b1b0」を順次取り込み、解釈・実
行を繰り返す。以上の動作を最終アドレスPnまで続け
る(ステップST1)。
【0029】次に、真性プログラムにバグがある場合の
動作を、図1および図3を参照して説明する。図3に示
すプログラム格納領域23に格納されたプログラムのア
ドレスPaの命令コード中にバグが発見された場合、ア
ドレスPaのエキストラビットb8を“1”から“0”
に書き替え、修正した命令コードを空領域24の先頭ア
ドレスA1に書き込む。これらの作業はOTP・ROM
16を構成するセルトランジスタのうち該当するものの
フローティングゲートに電荷を注入してオンさせること
によって行なう。
【0030】バグの修正(デバッグ)の完了したプログ
ラムは、次のようにして実行する。プログラム格納領域
23の先頭アドレスP1からアドレスPa−1までは、
バグの無い場合と同様に実行する(ステップST1)。
アドレスPaのエキストラビットb8を読み込んだ第1
判定回路30は、b8=“0”であるから、第2ゲート
36および第1ジャンプ命令生成回路38に制御信号を
送信する。第2ゲート36は、CPU14が内蔵するプ
ログラムカウンタ32の内容、すなわち次に実行すべき
命令コードが格納されているアドレスの値Pbをアドレ
スバス18を経由してラッチ34に保持させる。第1ジ
ャンプ命令生成回路38は、空領域24の先頭アドレス
A1へのジャンプ命令“JUMP A1”を生成してデ
ータバス20へ送出する。CPU14は、データバス2
0からアドレスA1を取り込んでプログラムカウンタ3
2にセットした後、空領域24の先頭アドレスA1をア
クセスする(ステップST2)。
【0031】空領域24の先頭アドレスA1のエキスト
ラビットb8は“1”であるから、第1判定回路30は
第1ゲート28に制御信号を送信する。第1ゲート28
は、空領域24の先頭アドレスA1に格納されている修
正後の8ビット命令コード「b7b6b5・・・b2b
1b0」を読み込んでデータバス20へ送出する。CP
U14は、データバス20からこの命令コード「b7b
6b5・・・b2b1b0」を取り込んだ後、解釈して
実行する(ステップST3)。CPU14は、空領域2
4の先頭アドレスA1に格納された命令コードの実行を
完了すると、ラッチ34が保持している内容(アドレス
値Pb)をプログラムカウンタ32にセットした後、プ
ログラム格納領域23のアドレスPbをアクセスする
(ステップST4)。以後、CPU14はアドレスPb
〜Pnに格納されている命令コードを順次読み込み、逐
次解釈して実行する(ステップST5)。
【0032】以上の例ではプログラム格納領域23に格
納された複数行の命令コードのうち1行の命令コードだ
けにバグが発生した場合を示したが、これは説明を簡易
にするためである。バグは複数行の命令コードにわたっ
て発生することもあるし、1行の命令コードに発生した
バグを修正するために複数行の修正命令コードを作成す
ることもある。このような場合、プログラム格納領域2
3のエキストラビットb8を“1”から“0”に書き替
えるアドレスは、図3に示したようにPaだけでなくP
aを必要な個数だけ分割したPa(1),Pa(2),
Pa(3),・・・,Pa(n)が対象になる。すなわ
ち、アドレスPa(1),Pa(2),Pa(3),・
・・,Pa(n)のエキストラビットb8に“0”がセ
ットされる。これに伴って、修正後の命令コードも空領
域24のアドレスA1を必要な個数だけ分割したA1
(1),A1(2),A1(3),・・・,A1(n)
に格納される。このような場合、図1に示す第1判定回
路30は、アドレスPa(1)のエキストラビットb8
(Pa(1))の他に次アドレスPa(2)のエキスト
ラビットb8(Pa(2))も読み込み、次アドレスの
エキストラビットb8が“1”状態になるまで読み込み
を続ける。エキストラビットb8が“1”状態のアドレ
スPa(n+1)=Pbを読み込んだ時点で読み込みを
止める。第2ゲート36はラッチ34にアドレスPa
(n+1)=Pbを保持させる。
【0033】以上のようにこの実施の形態1によれば、
OTP・MCUのROMに格納されたプログラムにバグ
が発見された場合、簡易にデバッグできるから、瑕疵の
生じたOTP・MCUを廃棄せずに再利用できる。この
結果、MCU制御による機器開発のTAT(turn
arond time)を短縮できると共に、開発コス
トの低減および省資源化が実現する。
【0034】実施の形態2.図4は、この発明の実施の
形態2によるOTP・MCUの要部を示す図であり、図
において、OTP・MCU12、CPU14、OTP・
ROM16、アドレスバス18、データバス20、真性
プログラム格納領域22、空領域24、エキストラビッ
ト領域26、第1ゲート28、第1判定回路30、プロ
グラムカウンタ32、ラッチ34、第2ゲート36は、
図1に示した実施の形態1のものと同じであるので、そ
の説明を割愛する。40は第1判定回路30が出力する
制御信号に基づいてCPU14の実行アドレスをOTP
・ROM16の空領域24のアドレスAi(1<i<
n,iおよびnは自然数)へジャンプさせる“JUMP
Ai”命令を生成してデータバス20へ送出する第2ジ
ャンプ命令生成回路である。
【0035】第2ゲート36は、CPU14が内蔵する
プログラムカウンタ32の内容、すなわち次に実行すべ
き命令コードのアドレス値をアドレスバス18を経由し
てラッチ34に保持させる。第2ジャンプ命令生成回路
40は、読み込んだエキストラビットb8が“0”状態
の回数をカウント(初期値=0)し、カウント値iに対
応した空領域24のアドレスAiへのジャンプ命令“J
UMP Ai”を生成してデータバス20へ出力する。
CPU14は、データバス20からアドレスAiを取り
込んでプログラムカウンタ32にセットした後、空領域
24のアドレスAiをアクセスする。
【0036】次に動作について説明する。上述した実施
の形態1では、プログラム格納領域23に格納されたプ
ログラムの命令コードにバグが発見された場合の対処法
を説明した。この実施の形態2は、空領域24の先頭ア
ドレスに書き込まれた修正後の命令コードにバグが発見
された場合の対処法、およびプログラム格納領域23に
格納されたプログラムの複数のアドレスに格納された命
令コードにバグが発見された場合の対処法を提供する。
【0037】始めに、図4および図5を参照して、空領
域24の先頭アドレスに書き込まれた修正後の命令コー
ドにバグが発見された場合の対処法を説明する。図5に
示すプログラム格納領域23に格納されたプログラムの
アドレスPaの命令コード中にバグが発見された場合、
アドレスPaのエキストラビットb8を“1”から
“0”に書き替え、修正した命令コードを空領域24の
先頭アドレスA1に書き込む。空領域24の先頭アドレ
スA1に書き込んだ修正命令コード中に再びバグが発見
された場合、アドレスA1のエキストラビットb8を
“1”から“0”に書き替え、再修正した命令コードを
空領域24のアドレスA2に書き込む。これらの作業
は、図4に示すOTP・ROM16を構成するメモリセ
ルのうち該当するもののセルトランジスタのフローティ
ングゲートに電荷を注入してオンさせることによって行
なう。
【0038】デバッグの完了したプログラムの実行を図
4および図5を参照して説明する。プログラム格納領域
23の先頭アドレスP1からアドレスPa−1までは、
次のように実行する。第1判定回路30は、プログラム
格納領域23の先頭アドレスP1に格納された9ビット
幅の命令コードのうちエキストラビットb8を読み込
み、b8=“1”であることを確認して第1ゲート28
に制御信号を送信する。第1ゲート28は、先頭アドレ
スP1に格納された9ビット幅の内容のうち下位8ビッ
トの命令コード「b7b6b5・・・b2b1b0」を
読み込んでデータバス20へ送出する。CPU14は、
データバス20からこの命令コード「b7b6b5・・
・b2b1b0」を取り込んだ後、解釈して実行する。
以後、アドレスPa−1まで以上の動作を繰り返す(ス
テップST1)。
【0039】アドレスPaのエキストラビットb8を読
み込んだ第1判定回路30は、b8=“0”であるか
ら、第2ゲート36および第2ジャンプ命令生成回路4
0に制御信号を送信する。第2ゲート36は、プログラ
ムカウンタ32の内容(アドレス値Pb)をアドレスバ
ス18を経由してラッチ34に保持させる。第2ジャン
プ命令生成回路40は、“JUMP A1”命令を生成
してデータバス20へ送出する(ステップST2)。
【0040】CPU14は、データバス20からアドレ
スA1を取り込んでプログラムカウンタ32にセットし
た後、空領域24のアドレスA1をアクセスする。空領
域24のアドレスA1のエキストラビットb8は“0”
であるから、第2ジャンプ命令生成回路40は、アドレ
スPaおよびアドレスA1の合計2回“0”状態のエキ
ストラビットb8を読み込んだから、カウント値iはi
=2となっている。したがって、第2ジャンプ命令生成
回路40は“JUMP A2”命令を生成してデータバ
ス20へ送出する(ステップST3)。
【0041】CPU14は、データバス20からアドレ
スA2を取り込んでプログラムカウンタ32にセットし
た後、空領域24のアドレスA2をアクセスする。空領
域24のアドレスA2のエキストラビットb8は“1”
であるから、第1判定回路30は第1ゲート28に制御
信号を送信する。第1ゲート28は、空領域24のアド
レスA2に格納されている再修正後の8ビット命令コー
ド「b7b6b5・・・b2b1b0」を読み込んでデ
ータバス20へ送出する。CPU14は、データバス2
0からこの命令コードを取り込んだ後、解釈して実行す
る(ステップST4)。CPU14は、空領域24のア
ドレスA2に格納された命令コードの実行を完了する
と、ラッチ34が保持している内容(アドレス値Pb)
をプログラムカウンタ32にセットした後、プログラム
格納領域23のアドレスPbをアクセスする(ステップ
ST5)。以後、アドレスPb〜Pnに格納されている
命令コードを順次読み出し、逐次解釈して実行する(ス
テップST6)。
【0042】以上の例ではプログラム格納領域23に格
納された複数行の命令コードのうち1行の命令コードだ
けにバグが発生した場合を示したが、これは説明を簡易
にするためである。バグは複数行の命令コードにわたっ
て発生することもあるし、1行の命令コードに発生した
バグを修正するために複数行の修正命令コードを作成す
ることもある。このような場合、プログラム格納領域2
3のエキストラビットb8を“1”から“0”に書き替
えるアドレスは、図3に示したようにPaだけでなくP
aを必要な個数だけ分割したPa(1),Pa(2),
Pa(3),・・・,Pa(n)が対象になる。すなわ
ち、アドレスPa(1),Pa(2),Pa(3),・
・・,Pa(n)のエキストラビットb8に“0”がセ
ットされる。これに伴って、修正後の命令コードも空領
域24のアドレスA1を必要な個数だけ分割したA1
(1),A1(2),A1(3),・・・,A1(n)
に格納される。このような場合、図1に示す第1判定回
路30は、アドレスPa(1)のエキストラビットb8
(Pa(1))の他に次アドレスPa(2)のエキスト
ラビットb8(Pa(2))も読み込み、次アドレスの
エキストラビットb8が“1”状態になるまで読み込み
を続ける。エキストラビットb8が“1”状態のアドレ
スPa(n+1)=Pbを読み込んだ時点で読み込みを
止める。第2ゲート36はラッチ34にアドレスPa
(n+1)=Pbを保持させる。
【0043】続いて、プログラム格納領域23に格納さ
れたプログラムの複数のアドレスに格納された命令コー
ドにバグが発見された場合の対処法を説明する。ここで
は、プログラム格納領域23に格納されたプログラムの
2箇所のアドレスに格納された命令コードにバグが発見
された場合の対処法を図4および図6を参照して説明す
る。以下に述べる手順は、命令コードにバグが発見され
たアドレスが3箇所以上となる場合にも、同様にして適
用することができる。
【0044】図6に示すプログラム格納領域23に格納
されたプログラムのアドレスPaの命令コード中にバグ
が発見された場合、アドレスPaのエキストラビットb
8を“1”から“0”に書き替え、修正した命令コード
を空領域24の先頭アドレスA1に書き込む。その後、
アドレスPjの命令コードにもバグが発見された場合、
アドレスPjのエキストラビットb8を“1”から
“0”に書き替え、修正した命令コードを空領域24の
アドレスA2に書き込む。これらの作業は、図4に示す
OTP・ROM16を構成するメモリセルのうち該当す
るもののセルトランジスタのフローティングゲートに電
荷を注入してオンさせることによって行なう。
【0045】デバッグの完了したプログラムの実行を図
4および図6を参照して説明する。プログラム格納領域
23の先頭アドレスP1からアドレスPa−1までは、
次のように実行される。第1判定回路30は、プログラ
ム格納領域23の先頭アドレスP1に格納された9ビッ
ト幅の命令コードのうちエキストラビットb8を読み込
み、b8=“1”であることを確認して第1ゲート28
に制御信号を送信する。第1ゲート28は、先頭アドレ
スP1に格納された9ビット幅の内容のうち下位8ビッ
トの命令コード「b7b6b5・・・b2b1b0」を
読み込んでデータバス20へ送出する。CPU14は、
データバス20からこの命令コードを取り込んだ後、解
釈して実行する。以後、アドレスPa−1まで以上の動
作を繰り返す(ステップST1)。
【0046】アドレスPaのエキストラビットb8を読
み込んだ第1判定回路30は、b8=“0”であるか
ら、第2ゲート36および第2ジャンプ命令生成回路4
0に制御信号を送信する。第2ジャンプ命令生成回路4
0は、アドレスPaのエキストラビットb8“0”状態
を1回読み込んだから、カウント値iはi=1となって
いる。したがって、第2ジャンプ命令生成回路40は
“JUMP A1”命令を生成してデータバス20へ送
出する。また、第2ゲート36はプログラムカウンタ3
2の内容(アドレス値Pb)をアドレスバス18を経由
してラッチ34に保持させる。CPU14は、データバ
ス20からアドレスA1を取り込んでプログラムカウン
タ32にセットした後、空領域24のアドレスA1をア
クセスする(ステップST2)。
【0047】空領域24のアドレスA1のエキストラビ
ットb8は“1”であるから、第1判定回路30は第1
ゲート28に制御信号を送信する。第1ゲート28は、
空領域24のアドレスA1に格納されている修正後の8
ビット命令コード「b7b6b5・・・b2b1b0」
を読み込んでデータバス20へ送出する。CPU14
は、データバス20からこの命令コードを取り込んだ
後、解釈して実行する(ステップST3)。
【0048】CPU14は、空領域24のアドレスA1
に格納された命令コードの実行を完了すると、ラッチ3
4が保持している内容(アドレス値Pb)をプログラム
カウンタ32にセットした後、プログラム格納領域23
のアドレスPbをアクセスする(ステップST4)。
【0049】CPU14は、プログラム格納領域23の
アドレスPbからアドレスPj−1まで、ステップST
1と同様に各アドレスに格納されている命令コードを順
次読み込み、逐次解釈して実行する(ステップST
5)。
【0050】アドレスPjのエキストラビットb8は
“0”であるから、第2ジャンプ命令生成回路40のカ
ウント値iはi=2となる。したがって、第2ジャンプ
命令生成回路40は“JUMP A2”命令を生成して
データバス20へ送出する。また、第2ゲート36はプ
ログラムカウンタ32の内容(アドレス値Pk)をアド
レスバス18を経由してラッチ34に保持させる。CP
U14は、データバス20からアドレスA2を取り込ん
でプログラムカウンタ32にセットした後、空領域24
のアドレスA2をアクセスする(ステップST6)。
【0051】空領域24のアドレスA2のエキストラビ
ットb8は“1”であるから、第1判定回路30は第1
ゲート28に制御信号を送信する。第1ゲート28は、
空領域24のアドレスA2に格納されている修正後の8
ビット命令コード「b7b6b5・・・b2b1b0」
を読み込んでデータバス20へ送出する。CPU14
は、データバス20からこの命令コードを取り込んだ
後、解釈して実行する(ステップST7)。
【0052】CPU14は、空領域24のアドレスA2
に格納された命令コードの実行を完了すると、ラッチ3
4が保持している内容(アドレス値Pk)をプログラム
カウンタ32にセットした後、プログラム格納領域23
のアドレスPkをアクセスする(ステップST8)。C
PU14は、プログラム格納領域23のアドレスPkか
ら最終アドレスPnまで、ステップST1と同様に各ア
ドレスに格納されている命令コードを順次読み込み、逐
次解釈して実行する(ステップST9)。
【0053】以上の例ではプログラム格納領域23に格
納された複数行の命令コードのうち1行の命令コードだ
けにバグが発生した場合を示したが、これは説明を簡易
にするためである。バグは複数行の命令コードにわたっ
て発生することもあるし、1行の命令コードに発生した
バグを修正するために複数行の修正命令コードを作成す
ることもある。このような場合、プログラム格納領域2
3のエキストラビットb8を“1”から“0”に書き替
えるアドレスは、図3に示したようにPaだけでなくP
aを必要な個数だけ分割したPa(1),Pa(2),
Pa(3),・・・,Pa(n)が対象になる。すなわ
ち、アドレスPa(1),Pa(2),Pa(3),・
・・,Pa(n)のエキストラビットb8に“0”がセ
ットされる。これに伴って、修正後の命令コードも空領
域24のアドレスA1を必要な個数だけ分割したA1
(1),A1(2),A1(3),・・・,A1(n)
に格納される。このような場合、図1に示す第1判定回
路30は、アドレスPa(1)のエキストラビットb8
(Pa(1))の他に次アドレスPa(2)のエキスト
ラビットb8(Pa(2))も読み込み、次アドレスの
エキストラビットb8が“1”状態になるまで読み込み
を続ける。エキストラビットb8が“1”状態のアドレ
スPa(n+1)=Pbを読み込んだ時点で読み込みを
止める。第2ゲート36はラッチ34にアドレスPa
(n+1)=Pbを保持させる。プログラム格納領域2
3のアドレスPjおよび空領域24のアドレスA2につ
いても同様である。
【0054】以上のようにこの実施の形態2によれば、
空領域の先頭アドレスに書き込まれた修正後の命令コー
ドにバグが発見された場合、およびプログラム格納領域
に格納されたプログラムの複数のアドレスに格納された
命令コードにバグが発見された場合でも、簡易にデバッ
グすることができる。
【0055】実施の形態3.図7は、この発明の実施の
形態3によるOTP・MCUの要部を示す図であり、図
において、12はOTP・MCU、14はCPU、16
はOTP・MCU12に内蔵されており、プログラムが
格納されるOTP・ROM、18はアドレスバス、20
はデータバスである。21は修正前のプログラムが格納
されるOTP・ROM16内のプログラム格納領域であ
り、この実施の形態3では8ビット幅の命令コードを複
数行集積したプログラムが格納される。25はOTP・
ROM16内の空領域である。29はOTP・ROM1
6内に格納された8ビット幅の命令コードを読み出して
データバス20へ出力する第3ゲートである。
【0056】31はOTP・ROM16内に格納された
8ビット幅の内容を読み出し、その値が“00H”であ
るか“00H”以外であるかに応じて所定の処理を行な
う第2判定回路である(“H”は16進数であることを
表す)。32はCPU14が内蔵するプログラムカウン
タ、34はラッチである。36は第2判定回路31が出
力する制御信号に基づいてプログラムカウンタ32の内
容をラッチ34に保持させる第2ゲートである。42は
第2判定回路31が出力する制御信号に基づいてCPU
14の実行アドレスをOTP・ROM16の空領域25
のアドレスAi(1<i<n,iおよびnは自然数)へ
ジャンプさせる“JUMP Ai”命令を生成してデー
タバス20へ送出する第3ジャンプ命令生成回路であ
る。
【0057】この実施の形態3では、実施の形態1およ
び実施の形態2のようにエキストラビットb8は設けて
いないので、プログラムを構成する各命令コードのビッ
ト幅は「b7b6b5・・・b2b1b0」の8ビット
である。
【0058】第2ゲート36は、CPU14が内蔵する
プログラムカウンタ32の内容、すなわち次に実行すべ
き命令コードのアドレス値をアドレスバス18を経由し
てラッチ34に保持させる。第3ジャンプ命令生成回路
42は、読み込み内容が“00H”状態の回数をカウン
ト(初期値=0)し、カウント値iに対応した空領域2
5のアドレスAiへのジャンプ命令“JUMP Ai”
を生成してデータバス20へ出力する。CPU14は、
データバス20からアドレスAiを取り込んでプログラ
ムカウンタ32にセットした後、空領域25のアドレス
Aiをアクセスする。
【0059】図8は、図7に示すOTP・ROM16の
メモリマップを示す図であり、21はアドレスP1,P
2,P3,・・・,Pnが付され、プログラムが格納さ
れるプログラム格納領域、25は空領域である。8ビッ
ト幅の命令コード「b7b6b5・・・b2b1b0」
が複数行集積されたプログラムはプログラム格納領域2
1内に格納される。このとき、プログラムには「000
00000」=“00H”を命令コードとして使用しな
いようにする(即値が“00H”の場合には第2判定回
路31から制御信号を出力しないようにする)。
【0060】次に動作について説明する。プログラム格
納領域21のアドレスP1〜Pnに格納されたプログラ
ムは、先頭アドレスP1から順に逐次解読されて実行さ
れる。図7に示す第2判定回路31は、各アドレスに格
納されている8ビット幅の内容を読み込んで、それが
“00H”であるか否かを判定する。読み込み内容が
“00H”以外の場合には制御信号を第3ゲート29に
送信し、読み込み内容が“00H”の場合には制御信号
を第2ゲート36および第3ジャンプ命令生成回路42
に送信する。
【0061】始めに、プログラムにバグの無い場合の動
作を図7および図8を参照して説明する。第2判定回路
31は、プログラム格納領域21の先頭アドレスP1に
格納された8ビット幅の内容「01001010」=
“4AH”を読み込む。この読み込み内容は“00H”
以外の場合に該当するから、第2判定回路31は第3ゲ
ート29に制御信号を送信する。この制御信号を受信し
た第3ゲート29は、先頭アドレスP1に格納された8
ビット幅の内容「01001010」=“4AH”を命
令コードとして読み込んでデータバス20へ送出する。
CPU14は、データバス20からこの命令コードを取
り込んだ後、解釈して実行する。
【0062】以後、第2判定回路31は、アドレスP2
からアドレスPnまでの内容を順次読み込むが、プログ
ラムにバグの無い場合読み込み内容は全て“00H”以
外であるから、第3ゲート29はアドレスP2からアド
レスPnまでの内容を命令コードとして読み込んでデー
タバス20へ送出することを繰り返す。CPU14は、
データバス20からこれらの命令コードを順次読み込
み、逐次解釈して実行することを繰り返す(ステップS
T1)。
【0063】次に、プログラムにバグがある場合の動作
を、図7および図9を参照して説明する。図9に示すプ
ログラム格納領域21に格納されたプログラムのアドレ
スPaの命令コード中にバグが発見された場合、アドレ
スPaの全ビットに“0”を書き込む。図9に示す例で
は、アドレスPaの内容を「00000000」=“0
0H”に変更する。デバッグして修正した命令コード
は、空領域25の先頭アドレスA1に書き込む。図9に
示す例では、アドレスA1に「10011010」=
“9AH”を書き込む。これらの作業はOTP・ROM
16を構成するメモリセルのうち該当するセルトランジ
スタのフローティングゲートに電荷を注入してオンさせ
ることによって行なう。例えば、アドレスPaの内容を
「00000000」=“00H”に変更するには、当
初“1”状態を表していたビットに対応するセルトラン
ジスタのフローティングゲートに電荷を注入し、当該セ
ルトランジスタをオンさせて“0”とする。
【0064】デバッグの完了したプログラムは、次のよ
うにして実行する。プログラム格納領域21の先頭アド
レスP1からアドレスPa−1までは、バグの無い場合
と同様に実行する(ステップST1)。アドレスPaの
内容を読み込んだ第2判定回路31は、読み込み内容が
「00000000」=“00H”であるから、第2ゲ
ート36および第3ジャンプ命令生成回路42に制御信
号を送信する。第2ゲート36は、プログラムカウンタ
32の内容(アドレス値Pb)をアドレスバス18を経
由してラッチ34に保持させる。第3ジャンプ命令生成
回路42は、空領域25の先頭アドレスA1へのジャン
プ命令“JUMP A1”を生成してデータバス20へ
送出する。CPU14は、データバス20からアドレス
A1を取り込んでプログラムカウンタ32にセットした
後、空領域25の先頭アドレスA1をアクセスする(ス
テップST2)。
【0065】空領域25の先頭アドレスA1の内容「1
0011010」=“9AH”は“00H”以外の場合
に該当するから、第2判定回路31は第3ゲート29に
制御信号を送信する。第3ゲート29は、空領域25の
先頭アドレスA1に格納されている修正後の8ビット命
令コード「10011010」=“9AH”を読み込ん
でデータバス20へ送出する。CPU14は、データバ
ス20からこの命令コードを取り込んだ後、解釈して実
行する(ステップST3)。CPU14は、空領域25
の先頭アドレスA1に格納された命令コードの実行を完
了すると、ラッチ34が保持している内容(アドレス値
Pb)をプログラムカウンタ32にセットした後、プロ
グラム格納領域21のアドレスPbをアクセスする(ス
テップST4)。以後、CPU14はアドレスPb〜P
nに格納されている命令コードを順次読み込み、逐次解
釈して実行する(ステップST5)。
【0066】以上の例ではプログラム格納領域21に格
納された複数行の命令コードのうち1行の命令コードだ
けにバグが発生した場合を示したが、これは説明を簡易
にするためである。バグは複数行の命令コードにわたっ
て発生することもあるし、1行の命令コードに発生した
バグを修正するために複数行の修正命令コードを作成す
ることもある。このような場合、プログラム格納領域2
1の内容を“00H”に変更するアドレスは、図9に示
したようにPaだけでなくPaを必要な個数だけ分割し
たPa(1),Pa(2),Pa(3),・・・,Pa
(n)が対象になる。すなわち、アドレスPa(1),
Pa(2),Pa(3),・・・,Pa(n)の内容も
“00H”に変更される。これに伴って、修正後の命令
コードも空領域25のアドレスA1を必要な個数だけ分
割したA1(1),A1(2),A1(3),・・・,
A1(n)に格納される。このような場合、図7に示す
第2判定回路31は、アドレスPa(1)の内容の他に
次アドレスPa(2)の内容も読み込み、次アドレスの
内容が“00H”以外になるまで読み込みを続ける。内
容が“00H”以外のアドレスPa(n+1)=Pbを
読み込んだ時点で読み込みを止める。第2ゲート36は
ラッチ34にアドレスPa(n+1)=Pbを保持させ
る。
【0067】次に、図7および図10を参照して、空領
域25の先頭アドレスA1に書き込まれた修正後の命令
コードにバグが発見された場合の対処法を説明する。
【0068】図10に示すプログラム格納領域21に格
納されたプログラムのアドレスPaの命令コード中にバ
グが発見された場合、アドレスPaの全ビットに“0”
を書き込む。すなわち、アドレスPaの内容を「000
00000」=“00H”に変更する。デバッグして修
正した命令コードは、空領域25の先頭アドレスA1に
書き込む。空領域25の先頭アドレスA1に書き込んだ
修正命令コード中に再びバグが発見された場合、アドレ
スA1の内容を「00000000」=“00H”に変
更し、再修正した命令コード「11010010」=
“D2H”を空領域25のアドレスA2に書き込む。こ
れらの作業は、図7に示すOTP・ROM16を構成す
るセルトランジスタのうち該当するもののフローティン
グゲートに電荷を注入してオンさせることによって行な
う。
【0069】デバッグの完了したプログラムの実行を図
7および図10を参照して説明する。プログラム格納領
域21の先頭アドレスP1からアドレスPa−1まで
は、バグの無い場合と同様に実行する(ステップST
1)。
【0070】アドレスPaの内容を読み込んだ第2判定
回路31は、読み込み内容が「00000000」=
“00H”であるから、第2ゲート36および第3ジャ
ンプ命令生成回路42に制御信号を送信する。第2ゲー
ト36は、プログラムカウンタ32の内容(アドレス値
Pb)をアドレスバス18を経由してラッチ34に保持
させる。第3ジャンプ命令生成回路42は、空領域25
の先頭アドレスA1へのジャンプ命令“JUMP A
1”を生成してデータバス20へ送出する。CPU14
は、データバス20からアドレスA1を取り込んでプロ
グラムカウンタ32にセットした後、空領域25の先頭
アドレスA1をアクセスする(ステップST2)。
【0071】空領域25の先頭アドレスA1の内容を読
み込んだ第2判定回路31は、読み込み内容が「000
00000」=“00H”であるから、第3ジャンプ命
令生成回路42に制御信号を送信する。第3ジャンプ命
令生成回路42は、アドレスPaおよびアドレスA1の
合計2回“00H”状態を読み込んだから、カウント値
iはi=2となっている。したがって、第3ジャンプ命
令生成回路42は“JUMP A2”命令を生成してデ
ータバス20へ送出する(ステップST3)。
【0072】CPU14は、データバス20からアドレ
スA2を取り込んでプログラムカウンタ32にセットし
た後、空領域25のアドレスA2をアクセスする。空領
域25のアドレスA2の内容「11010010」=
“D2H”は“00H”以外に該当するから、第2判定
回路31は第3ゲート29に制御信号を送信する。第3
ゲート29は、空領域25のアドレスA2に格納されて
いる再修正後の8ビット命令コード「1101001
0」=“D2H”を読み込んでデータバス20へ送出す
る。CPU14は、データバス20からこの命令コード
を取り込んだ後、解釈して実行する(ステップST
4)。CPU14は、空領域25のアドレスA2に格納
された命令コードの実行を完了すると、ラッチ34が保
持している内容(アドレス値Pb)をプログラムカウン
タ32にセットした後、プログラム格納領域21のアド
レスPbをアクセスし(ステップST5)、以後アドレ
スPb〜Pnに格納されている命令コードを順次読み込
み、逐次解釈して実行する(ステップST6)。
【0073】以上の例ではプログラム格納領域21に格
納された複数行の命令コードのうち1行の命令コードだ
けにバグが発生した場合を示したが、これは説明を簡易
にするためである。バグは複数行の命令コードにわたっ
て発生することもあるし、1行の命令コードに発生した
バグを修正するために複数行の修正命令コードを作成す
ることもある。このような場合、プログラム格納領域2
1の内容を“00H”に変更するアドレスは、図9に示
したようにPaだけでなくPaを必要な個数だけ分割し
たPa(1),Pa(2),Pa(3),・・・,Pa
(n)が対象になる。すなわち、アドレスPa(1),
Pa(2),Pa(3),・・・,Pa(n)の内容も
“00H”に変更される。これに伴って、修正後の命令
コードも空領域25のアドレスA1を必要な個数だけ分
割したA1(1),A1(2),A1(3),・・・,
A1(n)に格納される。このような場合、図7に示す
第2判定回路31は、アドレスPa(1)の内容の他に
次アドレスPa(2)の内容も読み込み、次アドレスの
内容が“00H”以外になるまで読み込みを続ける。内
容が“00H”以外のアドレスPa(n+1)=Pbを
読み込んだ時点で読み込みを止める。第2ゲート36は
ラッチ34にアドレスPa(n+1)=Pbを保持させ
る。
【0074】続いて、プログラム格納領域21に格納さ
れたプログラムの複数のアドレスに格納された命令コー
ドにバグが発見された場合の対処法を説明する。ここで
は、プログラム格納領域21に格納されたプログラムの
2箇所のアドレスに格納された命令コードにバグが発見
された場合の対処法を図7および図11を参照して説明
する。以下に述べる手順は、命令コードにバグが発見さ
れたアドレスが3箇所以上に上る場合にも、同様に適用
することができる。
【0075】図11に示すプログラム格納領域21に格
納されたプログラムのアドレスPaの命令コード中にバ
グが発見された場合、アドレスPaの全ビットに“0”
を書き込み、修正した命令コードを空領域25の先頭ア
ドレスA1に書き込む。すなわち、アドレスPaの内容
を「00000000」=“00H”に変更し、修正し
た命令コード「01100101」=“65H”を空領
域25の先頭アドレスA1に書き込む。その後、アドレ
スPjの命令コードにもバグが発見された場合、アドレ
スPjの全ビットに“0”を書き込み、修正した命令コ
ードを空領域25のアドレスA2に書き込む。すなわ
ち、アドレスPjの内容を「00000000」=“0
0H”に変更し、修正した命令コード「1101101
0」=“DAH”を空領域25のアドレスA2に書き込
む。これらの作業は、図7に示すOTP・ROM16を
構成するセルトランジスタのうち該当するもののフロー
ティングゲートに電荷を注入してオンさせることによっ
て行なう。
【0076】デバッグの完了したプログラムの実行を図
7および図11を参照して説明する。プログラム格納領
域21の先頭アドレスP1からアドレスPa−1まで
は、バグの無い場合と同様に実行する(ステップST
1)。
【0077】アドレスPaの内容を読み込んだ第2判定
回路31は、読み込み内容が「00000000」=
“00H”であるから、第2ゲート36および第3ジャ
ンプ命令生成回路42に制御信号を送信する。第2ゲー
ト36は、プログラムカウンタ32の内容(アドレス値
Pb)をアドレスバス18を経由してラッチ34に保持
させる。第3ジャンプ命令生成回路42は、空領域25
の先頭アドレスA1へのジャンプ命令“JUMP A
1”を生成してデータバス20へ送出する(ステップS
T2)。
【0078】CPU14は、データバス20からアドレ
スA1を取り込んでプログラムカウンタ32にセットし
た後、空領域25の先頭アドレスA1をアクセスする。
アドレスA1の内容を読み込んだ第2判定回路31は、
読み込み内容「01100101」=“65H”が“0
0H”以外であるから、第3ゲート29に制御信号を送
信する。第3ゲート29は、アドレスA1の命令コード
「01100101」=“65H”を読み込んでデータ
バス20へ送出する。CPU14は、データバス20か
らこの命令コードを取り込んだ後、解釈して実行する
(ステップST3)。
【0079】CPU14は、空領域25のアドレスA1
に格納された命令コードの実行を完了すると、ラッチ3
4が保持している内容(アドレス値Pb)をプログラム
カウンタ32にセットした後、プログラム格納領域21
のアドレスPbをアクセスする(ステップST4)。
【0080】CPU14は、プログラム格納領域21の
アドレスPbからアドレスPj−1まで、ステップST
1と同様に各アドレスに格納されている命令コードを順
次読み込み、逐次解釈して実行する(ステップST
5)。
【0081】アドレスPjの内容を読み込んだ第2判定
回路31は、読み込み内容が「00000000」=
“00H”であるから、第3ジャンプ命令生成回路42
に制御信号を送信する。第3ジャンプ命令生成回路42
は、アドレスPaおよびアドレスPjの合計2回“00
H”状態を読み込んでいるから、カウント値iはi=2
となっている。したがって、第3ジャンプ命令生成回路
42は空領域25のアドレスA2へのジャンプ命令“J
UMP A2”を生成してデータバス20へ送出する
(ステップST6)。
【0082】空領域25のアドレスA2の内容「110
11010」=“DAH”は“00H”以外の場合に該
当するから、第3ゲート29は、アドレスA2の命令コ
ード「11011010」=“DAH”を読み込んでデ
ータバス20へ送出する。CPU14は、データバス2
0からこの命令コードを取り込んだ後、解釈して実行す
る(ステップST7)。
【0083】CPU14は、空領域25のアドレスA2
に格納された命令コードの実行を完了すると、ラッチ3
4が保持している内容(アドレス値Pk)をプログラム
カウンタ32にセットした後、プログラム格納領域21
のアドレスPkをアクセスする(ステップST8)。C
PU14は、プログラム格納領域21のアドレスPkか
ら最終アドレスPnまで、ステップST1と同様に各ア
ドレスに格納されている命令コードを順次読み込み、逐
次解釈して実行する(ステップST9)。
【0084】以上の例ではプログラム格納領域21に格
納された複数行の命令コードのうち1行の命令コードだ
けにバグが発生した場合を示したが、これは説明を簡易
にするためである。バグは複数行の命令コードにわたっ
て発生することもあるし、1行の命令コードに発生した
バグを修正するために複数行の修正命令コードを作成す
ることもある。このような場合、プログラム格納領域2
1の内容を“00H”に変更するアドレスは、図9に示
したようにPaだけでなくPaを必要な個数だけ分割し
たPa(1),Pa(2),Pa(3),・・・,Pa
(n)が対象になる。すなわち、アドレスPa(1),
Pa(2),Pa(3),・・・,Pa(n)の内容も
“00H”に変更される。これに伴って、修正後の命令
コードも空領域25のアドレスA1を必要な個数だけ分
割したA1(1),A1(2),A1(3),・・・,
A1(n)に格納される。このような場合、図7に示す
第2判定回路31は、アドレスPa(1)の内容の他に
次アドレスPa(2)の内容も読み込み、次アドレスの
内容が“00H”以外になるまで読み込みを続ける。内
容が“00H”以外のアドレスPa(n+1)=Pbを
読み込んだ時点で読み込みを止める。第2ゲート36は
ラッチ34にアドレスPa(n+1)=Pbを保持させ
る。プログラム格納領域21のアドレスPjおよび空領
域25のアドレスA2についても同様である。
【0085】以上のようにこの実施の形態3によれば、
エキストラビットを設けることなくROMに格納された
プログラムのデバッグを行なうことができるので、RO
Mを少容量化することができる。
【0086】以上、内蔵ROMがOTPで形成され、こ
のOTPROMに8ビット幅の命令コードを集積したプ
ログラムを格納するマイクロコンピュータ(MCU)を
例に、この発明に係るマイクロコンピュータおよびその
プログラムの修正方法の実施の一形態を説明した。しか
しながら、この発明に係るマイクロコンピュータおよび
そのプログラムの修正方法は、上記した実施の形態1〜
3に限らず広く適用することができるので、以下その点
について説明する。
【0087】実施の形態1〜3では、OTPの例として
one−time−programmable EPR
OMを採り上げた。しかしながら、ワンタイムPRO
M、すなわち一度だけプログラム可能なROMは全て、
この発明に係るマイクロコンピュータおよびそのプログ
ラムの修正方法で用いるOTPに含まれる。一例とし
て、FPGA(field programmable
gate aray)を挙げることができる。FPG
Aには種々の実現形態があるが、メモリセルをアンチヒ
ューズで構成するものは、EPROMのようにメモリセ
ルをFAMOS構造のトランジスタで構成するものと動
作が異なる。アンチヒューズ構造のOTPは、メモリセ
ルを構成するアンチヒューズが出荷時に“1”状態を保
持するように設定されている。“0”の書き込みは、ア
ンチヒューズに高電圧を印加して導通状態にすることに
より行なう。
【0088】また、実施の形態1〜3では、命令コード
の幅が8ビットの場合を例にして説明したが、これに限
らず、命令コードの幅は、16ビット,32ビット,あ
るいは任意のビット幅をとることができる。
【0089】さらに、実施の形態1〜3では、アドレス
バスとデータバスとの2本のバスを有する2バス方式の
構成例を示したが、アドレスバスとデータバスとを共有
する1バス方式の構成とすることもできる。
【0090】
【発明の効果】以上のように、請求項1記載の発明によ
れば、マイクロコンピュータを、CPUと、プログラム
が格納されるワンタイムPROMと、該ワンタイムPR
OM内に設けられ、命令コードに付加されたエキストラ
ビットを格納するエキストラビット領域と、前記エキス
トラビットを読み込み、該エキストラビットが所定値で
あるか否かを判定する第1判定回路と、該第1判定回路
が出力する制御信号に基づいて、前記ワンタイムPRO
Mから命令コードを読み込んでバスへ送出する第1ゲー
トと、前記第1判定回路が出力する前記制御信号に基づ
いて、前記ワンタイムPROMの空領域の先頭アドレス
へのジャンプ命令を生成してバスに送出する第1ジャン
プ命令生成回路と、前記第1判定回路が出力する前記制
御信号に基づいて、前記CPUに内蔵されたプログラム
カウンタの内容を保持するラッチとを備えるように構成
したので、OTP版マイクロコンピュータのROMに格
納されたプログラムにバグが発見された場合、簡易にデ
バッグできるから、瑕疵の生じたOTP版マイクロコン
ピュータを廃棄せずに再利用できる効果がある。
【0091】請求項2記載の発明によれば、マイクロコ
ンピュータを、CPUと、プログラムが格納されるワン
タイムPROMと、該ワンタイムPROM内に設けら
れ、命令コードに付加されたエキストラビットを格納す
るエキストラビット領域と、前記エキストラビットを読
み込み、該エキストラビットが所定値であるか否かを判
定する第1判定回路と、該第1判定回路が出力する制御
信号に基づいて、前記ワンタイムPROMから命令コー
ドを読み込んでバスへ送出する第1ゲートと、前記第1
判定回路が出力する制御信号を受信して前記エキストラ
ビットが所定値である回数i(iは自然数)をカウント
し、前記ワンタイムPROMの空領域の先頭からiの自
然数倍離れたアドレスへのジャンプ命令を生成してバス
に送出する第2ジャンプ命令生成回路と、前記第1判定
回路が出力する制御信号に基づいて、前記CPUに内蔵
されたプログラムカウンタの内容を保持するラッチとを
備えるように構成したので、OTP版マイクロコンピュ
ータのROMに格納されたプログラムの修正が何度でも
可能になる効果がある。
【0092】請求項3記載の発明によれば、マイクロコ
ンピュータを、CPUと、プログラムが格納されるワン
タイムPROMと、該ワンタイムPROMから命令コー
ドを読み込み、その内容が所定値であるか否かを判定す
る第2判定回路と、該第2判定回路が出力する制御信号
に基づいて、前記ワンタイムPROMから命令コードを
読み込んでバスへ送出する第3ゲートと、前記第2判定
回路が出力する制御信号に基づいて、前記ワンタイムP
ROMの空領域の先頭アドレスへのジャンプ命令を生成
してバスに送出する第3ジャンプ命令生成回路と、前記
第2判定回路が出力する制御信号に基づいて、前記CP
Uに内蔵されたプログラムカウンタの内容を保持するラ
ッチとを備えるように構成したので、エキストラビット
領域を設けることなくワンタイムPROMに格納された
プログラムのデバッグを行なうことができるから、ワン
タイムPROMを少容量化できる効果がある。
【0093】請求項4記載の発明によれば、マイクロコ
ンピュータを、CPUと、プログラムが格納されるワン
タイムPROMと、該ワンタイムPROMから命令コー
ドを読み込み、その内容が所定値であるか否かを判定す
る第2判定回路と、該第2判定回路が出力する制御信号
に基づいて、前記ワンタイムPROMから命令コードを
読み込んでバスへ送出する第3ゲートと、前記第2判定
回路が出力する制御信号を受信して前記命令コードの内
容が所定値である回数i(iは自然数)をカウントし、
前記ワンタイムPROMの空領域の先頭からiの自然数
倍離れたアドレスへのジャンプ命令を生成してバスに送
出する第3ジャンプ命令生成回路と、前記第2判定回路
が出力する制御信号に基づいて、前記CPUに内蔵され
たプログラムカウンタの内容を保持するラッチとを備え
るように構成したので、OTP版マイクロコンピュータ
のROMに格納されたプログラムの修正が何度でも可能
になる効果がある。
【0094】請求項5記載の発明によれば、マイクロコ
ンピュータのプログラムの修正方法を、ワンタイムPR
OMのエキストラビット領域全体に第1ビットをセット
するステップと、命令コードにバグが発見されたアドレ
スのエキストラビットを第1ビットから第2ビットに反
転させるステップと、前記ワンタイムPROMの空領域
の先頭アドレスに修正した命令コードを書き込むステッ
プとを備えるように構成したので、OTP版マイクロコ
ンピュータのROMに格納されたプログラムにバグが発
見された場合、簡易にデバッグできるから、瑕疵の生じ
たOTP版マイクロコンピュータを廃棄せずに再利用で
きる効果がある。
【0095】請求項6記載の発明によれば、マイクロコ
ンピュータのプログラムの修正方法を、ワンタイムPR
OMのエキストラビット領域全体に第1ビットをセット
するステップと、命令コードにバグが発見されたアドレ
スのエキストラビットを第1ビットから第2ビットに反
転させるステップと、前記ワンタイムPROMの空領域
の先頭アドレスに修正した命令コードを書き込むステッ
プと、前記ワンタイムPROMの空領域の先頭アドレス
に格納された修正した命令コードにバグが発見された場
合、当該アドレスのエキストラビットを第1ビットから
第2ビットに反転させるステップと、前記ワンタイムP
ROMの空領域の先頭からn番目(nは3以上の整数)
のアドレスに再修正した命令コードを書き込むステップ
とを備えるように構成したので、OTP版マイクロコン
ピュータのROMに格納されたプログラムの一つのアド
レスに対応する命令コードの修正が2回可能になる効果
がある。
【0096】請求項7記載の発明によれば、マイクロコ
ンピュータのプログラムの修正方法を、ワンタイムPR
OMのエキストラビット領域全体に第1ビットをセット
するステップ(a)と、命令コードにバグが発見された
アドレスのエキストラビットを第1ビットから第2ビッ
トに反転させるステップ(b)と、命令コードにバグが
発見された回数i(iは自然数)をカウントするステッ
プ(c)と、前記ワンタイムPROMの空領域の先頭ア
ドレスからiの自然数倍離れたアドレスに修正した命令
コードを書き込むステップ(d)と、前記ワンタイムP
ROMの空領域の先頭アドレスからiの自然数倍離れた
アドレスに格納された修正した命令コードにバグが発見
された場合、当該アドレスのエキストラビットを第1ビ
ットから第2ビットに反転させるステップ(e)と、前
記ワンタイムPROMの空領域の先頭からi+1の自然
数倍離れたアドレスに再修正した命令コードを書き込む
ステップ(f)と、命令コードにバグが発見された回数
i(iは自然数)をカウントするステップ(g)とを備
え、上記ステップ(e)からステップ(g)を必要回数
繰り返すように構成したので、OTP版マイクロコンピ
ュータのROMに格納されたプログラムの一つのアドレ
スに対応する命令コードの修正が何度でも可能になる効
果がある。
【0097】請求項8記載の発明によれば、マイクロコ
ンピュータのプログラムの修正方法を、ワンタイムPR
OMのエキストラビット領域全体に第1ビットをセット
するステップ(a)と、命令コードにバグが発見された
アドレスのエキストラビットを第1ビットから第2ビッ
トに反転させるステップ(b)と、命令コードにバグが
発見された回数i(iは自然数)をカウントするステッ
プ(c)と、前記ワンタイムPROMの空領域の先頭ア
ドレスからiの自然数倍離れたアドレスに修正した命令
コードを書き込むステップ(d)とを備え、上記ステッ
プ(b)からステップ(d)を必要回数繰り返すように
構成したので、OTP版マイクロコンピュータのROM
に格納されたプログラムの修正が何度でも可能になる効
果がある。
【0098】請求項9記載の発明によれば、マイクロコ
ンピュータのプログラムの修正方法を、命令コードにバ
グが発見されたワンタイムPROMのアドレスに全て所
定ビットを書き込むステップと、前記ワンタイムPRO
Mの空領域の先頭アドレスに修正した命令コードを書き
込むステップとを備えるように構成したので、エキスト
ラビット領域を設けることなくワンタイムPROMに格
納されたプログラムのデバッグを行なうことができるか
ら、ワンタイムPROMを少容量化できる効果がある。
【0099】請求項10記載の発明によれば、マイクロ
コンピュータのプログラムの修正方法は、命令コードに
バグが発見されたワンタイムPROMのアドレスに全て
所定ビットを書き込むステップと、前記ワンタイムPR
OMの空領域の先頭アドレスに修正した命令コードを書
き込むステップと、前記ワンタイムPROMの空領域の
先頭アドレスに格納された修正した命令コードにバグが
発見された場合、当該アドレスに全て所定ビットを書き
込むステップと、前記ワンタイムPROMの空領域の先
頭からn番目(nは3以上の整数)のアドレスに再修正
した命令コードを書き込むステップとを備えるように構
成したので、OTP版マイクロコンピュータのROMに
格納されたプログラムの一つのアドレスに対応する命令
コードの修正がエキストラビット領域を設けることな
く、2回可能になる効果がある。
【0100】請求項11記載の発明によれば、マイクロ
コンピュータのプログラムの修正方法を、命令コードに
バグが発見されたアドレスに全て所定ビットを書き込む
ステップ(a)と、命令コードにバグが発見された回数
i(iは自然数)をカウントするステップ(b)と、前
記ワンタイムPROMの空領域の先頭アドレスからiの
自然数倍離れたアドレスに修正した命令コードを書き込
むステップ(c)と、前記ワンタイムPROMの空領域
の先頭からiの自然数倍離れたアドレスに格納された修
正した命令コードにバグが発見された場合、当該アドレ
スに全て所定ビットを書き込むステップ(d)と、前記
ワンタイムPROMの空領域の先頭からi+1の自然数
倍離れたアドレスに再修正した命令コードを書き込むス
テップ(e)と、命令コードにバグが発見された回数i
をカウントするステップ(f)とを備え、上記ステップ
(d)からステップ(f)を必要回数繰り返すように構
成したので、OTP版マイクロコンピュータのROMに
格納されたプログラムの一つのアドレスに対応する命令
コードの修正がエキストラビット領域を設けることな
く、何度でも可能になる効果がある。
【0101】請求項12記載の発明によれば、マイクロ
コンピュータのプログラムの修正方法を、命令コードに
バグが発見されたアドレスに全て所定ビットを書き込む
ステップ(a)と、命令コードにバグが発見された回数
i(iは自然数)をカウントするステップ(b)と、前
記ワンタイムPROMの空領域の先頭アドレスからiの
自然数倍離れたアドレスに修正した命令コードを書き込
むステップ(c)とを備え、上記ステップ(a)からス
テップ(c)を必要回数繰り返すように構成したので、
OTP版マイクロコンピュータのROMに格納されたプ
ログラムの修正がエキストラビット領域を設けることな
く、何度でも可能になる効果がある。
【図面の簡単な説明】
【図1】 この発明の実施の形態1によるOTP・MC
Uの要部を示す図である。
【図2】 図1に示すOTP・ROMのメモリマップを
示す図である。
【図3】 真性プログラムにバグがある場合の動作を示
す図である。
【図4】 この発明の実施の形態2によるOTP・MC
Uの要部を示す図である。
【図5】 空領域の先頭アドレスに書き込まれた修正後
の命令コードにバグが発見された場合の対処法を示す図
である。
【図6】 プログラム格納領域に格納されたプログラム
の2箇所のアドレスに格納された命令コードにバグが発
見された場合の対処法を示す図である。
【図7】 この発明の実施の形態3によるOTP・MC
Uの要部を示す図である。
【図8】 図7に示すOTP・ROMのメモリマップを
示す図である。
【図9】 プログラムにバグがある場合の動作を示す図
である。
【図10】 空領域の先頭アドレスに書き込まれた修正
後の命令コードにバグが発見された場合の対処法を示す
図である。
【図11】 プログラム格納領域に格納されたプログラ
ムの2箇所のアドレスに格納された命令コードにバグが
発見された場合の対処法を示す図である。
【符号の説明】
12 OTP・MCU(マイクロコンピュータ)、14
CPU、16 OTP・ROM(ワンタイムPRO
M)、24,25 空領域、26 エキストラビット領
域、28 第1ゲート、29 第3ゲート、30 第1
判定回路、31第2判定回路、32 プログラムカウン
タ、34 ラッチ、38 第1ジャンプ命令生成回路、
40 第2ジャンプ命令生成回路、42 第3ジャンプ
命令生成回路。

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】 CPUと、プログラムが格納されるワン
    タイムPROMと、該ワンタイムPROM内に設けら
    れ、命令コードに付加されたエキストラビットを格納す
    るエキストラビット領域と、前記エキストラビットを読
    み込み、該エキストラビットが所定値であるか否かを判
    定する第1判定回路と、該第1判定回路が出力する制御
    信号に基づいて、前記ワンタイムPROMから命令コー
    ドを読み込んでバスへ送出する第1ゲートと、前記第1
    判定回路が出力する前記制御信号に基づいて、前記ワン
    タイムPROMの空領域の先頭アドレスへのジャンプ命
    令を生成してバスに送出する第1ジャンプ命令生成回路
    と、前記第1判定回路が出力する前記制御信号に基づい
    て、前記CPUに内蔵されたプログラムカウンタの内容
    を保持するラッチとを備えたマイクロコンピュータ。
  2. 【請求項2】 CPUと、プログラムが格納されるワン
    タイムPROMと、該ワンタイムPROM内に設けら
    れ、命令コードに付加されたエキストラビットを格納す
    るエキストラビット領域と、前記エキストラビットを読
    み込み、該エキストラビットが所定値であるか否かを判
    定する第1判定回路と、該第1判定回路が出力する制御
    信号に基づいて、前記ワンタイムPROMから命令コー
    ドを読み込んでバスへ送出する第1ゲートと、前記第1
    判定回路が出力する制御信号を受信して前記エキストラ
    ビットが所定値である回数i(iは自然数)をカウント
    し、前記ワンタイムPROMの空領域の先頭からiの自
    然数倍離れたアドレスへのジャンプ命令を生成してバス
    に送出する第2ジャンプ命令生成回路と、前記第1判定
    回路が出力する制御信号に基づいて、前記CPUに内蔵
    されたプログラムカウンタの内容を保持するラッチとを
    備えたマイクロコンピュータ。
  3. 【請求項3】 CPUと、プログラムが格納されるワン
    タイムPROMと、該ワンタイムPROMから命令コー
    ドを読み込み、その内容が所定値であるか否かを判定す
    る第2判定回路と、該第2判定回路が出力する制御信号
    に基づいて、前記ワンタイムPROMから命令コードを
    読み込んでバスへ送出する第3ゲートと、前記第2判定
    回路が出力する制御信号に基づいて、前記ワンタイムP
    ROMの空領域の先頭アドレスへのジャンプ命令を生成
    してバスに送出する第3ジャンプ命令生成回路と、前記
    第2判定回路が出力する制御信号に基づいて、前記CP
    Uに内蔵されたプログラムカウンタの内容を保持するラ
    ッチとを備えたマイクロコンピュータ。
  4. 【請求項4】 CPUと、プログラムが格納されるワン
    タイムPROMと、該ワンタイムPROMから命令コー
    ドを読み込み、その内容が所定値であるか否かを判定す
    る第2判定回路と、該第2判定回路が出力する制御信号
    に基づいて、前記ワンタイムPROMから命令コードを
    読み込んでバスへ送出する第3ゲートと、前記第2判定
    回路が出力する制御信号を受信して前記命令コードの内
    容が所定値である回数i(iは自然数)をカウントし、
    前記ワンタイムPROMの空領域の先頭からiの自然数
    倍離れたアドレスへのジャンプ命令を生成してバスに送
    出する第3ジャンプ命令生成回路と、前記第2判定回路
    が出力する制御信号に基づいて、前記CPUに内蔵され
    たプログラムカウンタの内容を保持するラッチとを備え
    たマイクロコンピュータ。
  5. 【請求項5】 ワンタイムPROMのエキストラビット
    領域全体に第1ビットをセットするステップと、命令コ
    ードにバグが発見されたアドレスのエキストラビットを
    第1ビットから第2ビットに反転させるステップと、前
    記ワンタイムPROMの空領域の先頭アドレスに修正し
    た命令コードを書き込むステップとを備えた請求項1記
    載のマイクロコンピュータのプログラムの修正方法。
  6. 【請求項6】 ワンタイムPROMのエキストラビット
    領域全体に第1ビットをセットするステップと、命令コ
    ードにバグが発見されたアドレスのエキストラビットを
    第1ビットから第2ビットに反転させるステップと、前
    記ワンタイムPROMの空領域の先頭アドレスに修正し
    た命令コードを書き込むステップと、前記ワンタイムP
    ROMの空領域の先頭アドレスに格納された修正した命
    令コードにバグが発見された場合、当該アドレスのエキ
    ストラビットを第1ビットから第2ビットに反転させる
    ステップと、前記ワンタイムPROMの空領域の先頭か
    らn番目(nは3以上の整数)のアドレスに再修正した
    命令コードを書き込むステップとを備えた請求項2記載
    のマイクロコンピュータのプログラムの修正方法。
  7. 【請求項7】 ワンタイムPROMのエキストラビット
    領域全体に第1ビットをセットするステップ(a)と、
    命令コードにバグが発見されたアドレスのエキストラビ
    ットを第1ビットから第2ビットに反転させるステップ
    (b)と、命令コードにバグが発見された回数i(iは
    自然数)をカウントするステップ(c)と、前記ワンタ
    イムPROMの空領域の先頭アドレスからiの自然数倍
    離れたアドレスに修正した命令コードを書き込むステッ
    プ(d)と、前記ワンタイムPROMの空領域の先頭ア
    ドレスからiの自然数倍離れたアドレスに格納された修
    正した命令コードにバグが発見された場合、当該アドレ
    スのエキストラビットを第1ビットから第2ビットに反
    転させるステップ(e)と、前記ワンタイムPROMの
    空領域の先頭からi+1の自然数倍離れたアドレスに再
    修正した命令コードを書き込むステップ(f)と、命令
    コードにバグが発見された回数i(iは自然数)をカウ
    ントするステップ(g)とを備え、上記ステップ(e)
    からステップ(g)を必要回数繰り返すことを特徴とす
    る請求項2記載のマイクロコンピュータのプログラムの
    修正方法。
  8. 【請求項8】 ワンタイムPROMのエキストラビット
    領域全体に第1ビットをセットするステップ(a)と、
    命令コードにバグが発見されたアドレスのエキストラビ
    ットを第1ビットから第2ビットに反転させるステップ
    (b)と、命令コードにバグが発見された回数i(iは
    自然数)をカウントするステップ(c)と、前記ワンタ
    イムPROMの空領域の先頭アドレスからiの自然数倍
    離れたアドレスに修正した命令コードを書き込むステッ
    プ(d)とを備え、上記ステップ(b)からステップ
    (d)を必要回数繰り返すことを特徴とする請求項2記
    載のマイクロコンピュータのプログラムの修正方法。
  9. 【請求項9】 命令コードにバグが発見されたワンタイ
    ムPROMのアドレスに全て所定ビットを書き込むステ
    ップと、前記ワンタイムPROMの空領域の先頭アドレ
    スに修正した命令コードを書き込むステップとを備えた
    請求項3記載のマイクロコンピュータのプログラムの修
    正方法。
  10. 【請求項10】 命令コードにバグが発見されたワンタ
    イムPROMのアドレスに全て所定ビットを書き込むス
    テップと、前記ワンタイムPROMの空領域の先頭アド
    レスに修正した命令コードを書き込むステップと、前記
    ワンタイムPROMの空領域の先頭アドレスに格納され
    た修正した命令コードにバグが発見された場合、当該ア
    ドレスに全て所定ビットを書き込むステップと、前記ワ
    ンタイムPROMの空領域の先頭からn番目(nは3以
    上の整数)のアドレスに再修正した命令コードを書き込
    むステップとを備えた請求項4記載のマイクロコンピュ
    ータのプログラムの修正方法。
  11. 【請求項11】 命令コードにバグが発見されたアドレ
    スに全て所定ビットを書き込むステップ(a)と、命令
    コードにバグが発見された回数i(iは自然数)をカウ
    ントするステップ(b)と、前記ワンタイムPROMの
    空領域の先頭アドレスからiの自然数倍離れたアドレス
    に修正した命令コードを書き込むステップ(c)と、前
    記ワンタイムPROMの空領域の先頭からiの自然数倍
    離れたアドレスに格納された修正した命令コードにバグ
    が発見された場合、当該アドレスに全て所定ビットを書
    き込むステップ(d)と、前記ワンタイムPROMの空
    領域の先頭からi+1の自然数倍離れたアドレスに再修
    正した命令コードを書き込むステップ(e)と、命令コ
    ードにバグが発見された回数iをカウントするステップ
    (f)とを備え、上記ステップ(d)からステップ
    (f)を必要回数繰り返すことを特徴とする請求項4記
    載のマイクロコンピュータのプログラムの修正方法。
  12. 【請求項12】 命令コードにバグが発見されたアドレ
    スに全て所定ビットを書き込むステップ(a)と、命令
    コードにバグが発見された回数i(iは自然数)をカウ
    ントするステップ(b)と、前記ワンタイムPROMの
    空領域の先頭アドレスからiの自然数倍離れたアドレス
    に修正した命令コードを書き込むステップ(c)とを備
    え、上記ステップ(a)からステップ(c)を必要回数
    繰り返すことを特徴とする請求項4記載のマイクロコン
    ピュータのプログラムの修正方法。
JP8189538A 1996-07-18 1996-07-18 マイクロコンピュータおよびそのプログラム修正方法 Pending JPH1040093A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8189538A JPH1040093A (ja) 1996-07-18 1996-07-18 マイクロコンピュータおよびそのプログラム修正方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8189538A JPH1040093A (ja) 1996-07-18 1996-07-18 マイクロコンピュータおよびそのプログラム修正方法

Publications (1)

Publication Number Publication Date
JPH1040093A true JPH1040093A (ja) 1998-02-13

Family

ID=16242992

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8189538A Pending JPH1040093A (ja) 1996-07-18 1996-07-18 マイクロコンピュータおよびそのプログラム修正方法

Country Status (1)

Country Link
JP (1) JPH1040093A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104422865A (zh) * 2013-08-22 2015-03-18 上海海尔集成电路有限公司 晶圆级一次性编程otp芯片测试方法及装置
CN106546902A (zh) * 2016-10-13 2017-03-29 芯海科技(深圳)股份有限公司 一种otp型mcu在未预留测试接口情况下的量产测试方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104422865A (zh) * 2013-08-22 2015-03-18 上海海尔集成电路有限公司 晶圆级一次性编程otp芯片测试方法及装置
CN106546902A (zh) * 2016-10-13 2017-03-29 芯海科技(深圳)股份有限公司 一种otp型mcu在未预留测试接口情况下的量产测试方法
CN106546902B (zh) * 2016-10-13 2019-09-10 芯海科技(深圳)股份有限公司 一种otp型mcu在未预留测试接口情况下的量产测试方法

Similar Documents

Publication Publication Date Title
US4542453A (en) Program patching in microcomputer
KR100375217B1 (ko) 전기적으로 재기입 가능한 불휘발성 메모리를 구비하는마이크로컨트롤러
US6182187B1 (en) System ROM including a flash EPROM and a ROM for storing primary boot code replacing a block flash EPROM
US7805562B2 (en) Microcomputer with configurable communication interfacing
US6817015B2 (en) Microcontroller with modifiable program
US6587916B2 (en) Microcomputer with built-in programmable nonvolatile memory
JPH03141447A (ja) 電気的に消去可能なプログラマブル読み出し専用メモリーに常駐するファームウェアを更新する方法及び装置
US6798713B1 (en) Implementing software breakpoints
US6604214B1 (en) One-chip microcomputer capable of internally producing ECC data
KR20060122064A (ko) 전자장치 및 그 부팅방법
US5479342A (en) Microcomputer
US7680976B2 (en) Method and apparatus for emulating rewritable memory with non-rewritable memory in an MCU
US6925522B2 (en) Device and method capable of changing codes of micro-controller
CN111477154B (zh) 显示面板的通信架构与显示面板
JP5815212B2 (ja) データ書き込み方法およびシステム
JPH1040093A (ja) マイクロコンピュータおよびそのプログラム修正方法
US20180300085A1 (en) Method of writing in a non-volatile memory device and corresponding non-volatile memory device
US5689635A (en) Microprocessor memory test circuit and method
US7209252B2 (en) Memory module, printer assembly, and method for storing printer code
US20230035098A1 (en) Data processing system and method for reading instruction data of instruction from memory including a comparison stage for preventing execution of wrong instruction data
JP2004021421A (ja) メモリ装置の制御方法およびそのプログラムならびに記録媒体
US6507884B1 (en) Microcomputer with multiple memories for storing data
JPH08328899A (ja) マイクロコンピュータ及びエミュレータ
JPH0381185B2 (ja)
CN114220473A (zh) 一种用于flash读保护改变的测试电路及方法