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

マイクロコンピュータ

Info

Publication number
JPH0764784A
JPH0764784A JP5215616A JP21561693A JPH0764784A JP H0764784 A JPH0764784 A JP H0764784A JP 5215616 A JP5215616 A JP 5215616A JP 21561693 A JP21561693 A JP 21561693A JP H0764784 A JPH0764784 A JP H0764784A
Authority
JP
Japan
Prior art keywords
program
address
microcomputer
instruction
memory
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
JP5215616A
Other languages
English (en)
Inventor
Hideki Sakamoto
英樹 坂本
Toshinori Tamura
俊則 田村
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP5215616A priority Critical patent/JPH0764784A/ja
Priority to EP94113362A priority patent/EP0640916A3/en
Priority to US08/296,136 priority patent/US5479342A/en
Priority to KR1019940021528A priority patent/KR970011215B1/ko
Publication of JPH0764784A publication Critical patent/JPH0764784A/ja
Pending legal-status Critical Current

Links

Classifications

    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00—Error detection; Error correction; Monitoring
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00—Arrangements for program control, e.g. control units
    • G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/328—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for runtime instruction patching
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00—Arrangements for software engineering
    • G06F8/60—Software deployment
    • G06F8/65—Updates
    • G06F8/66—Updates of program code stored in read-only memory [ROM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Microcomputers (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

(57)【要約】 【目的】 マイクロコンピュータの製造後にROMに内
蔵されたプログラムのバグを修正して使用できるように
する。 【構成】 命令実行部5は、シリアルインタフェース1
0を介して、メモリ14からバグのアドレスおよび修正
プログラムを読み込み、それぞれレジスタ9、RAM4
に格納する。プログラムの実行アドレスがバグのアドレ
スに達すると、プログラムカウンタ1のデータがレジス
タ9のデータと一致するので比較回路6が選択信号12
を出力し、選択回路7は分岐命令発生回路8を選択し命
令実行部5に分岐命令を供給する。このため命令実行部
5は分岐命令を実行し、RAM4に格納された修正後の
プログラムに分岐してこれを実行する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は情報処理装置に関し、特
に単一半導体基板上に少なくとも、命令を解読し実行す
る命令実行部と、プログラムが格納されるプログラムメ
モリと、前記プログラムメモリのアドレスを順次指し示
し、内容を出力させるプログラムカウンタと、外部から
データを取得するインタフェース手段とを集積したマイ
クロコンピュータに関する。
【0002】
【従来の技術】マイクロコンピュータは演算、制御機能
を有するCPUと、プログラムメモリ、データメモリ、
ポートやタイマなどの周辺機能を1チップに集積したも
ので、家電機器や映像、音響機器などあらゆる分野で応
用されている。
【0003】これらのマイクロコンピュータのプログラ
ムは通常マスクROM(マイクロコンピュータの製造段
階でデータを書込むROM)であり、製造後に書き換え
ることはできない。
【0004】一方、これらのプログラムは応用機器の開
発と同時に作成するものであって、応用機器が未完成な
状態でプログラムを作成することが多い。また、その容
量もたとえば32Kバイトというように膨大なものとな
っている。したがって、製品化前後にプログラムのバグ
(誤り)が発見されることが多い。
【0005】マイクロコンピュータを製造した後にバグ
を発見した場合、上述のようにプログラムを書き換えて
修正することができないため、製造したマイクロコンピ
ュータは使用できず、無駄になってしまう。家電製品の
場合、新製品の発売時に製造する製品の数量は数万台で
あり、マイクロコンピュータの価格が1個5百円程度と
すると、数千万円の損失になる。もしマイクロコンピュ
ータを応用機器に実装した後であれば、これらの機器は
不良品として廃棄しなければならないため、さらに損失
が大きい。また、バグを修正したプログラムを作成して
も、新たにマイクロコンピュータを発注し製造するた
め、発注のための費用が発生するし、修正後のマイクロ
コンピュータを入手するまでの期間は応用機器を製造で
きないため、発売が遅れ、機会損失がある。
【0006】このような欠点を解消するため、特開平3
−186927号公報では、マイクロコンピュータの製
造後にプログラムの特定箇所を別のプログラムに置き換
える方法を開示している。これはマイクロコンピュータ
の応用上、よく使用される外付けの不揮発性メモリに着
目したものである。このメモリは応用システムの機械的
なバラ付きを調整するデータなど、製造後に1台1台異
なる値を設定するために用いられている。この不揮発性
メモリの空き領域を利用し、バグのアドレスと修正後の
プログラムを格納しておき、マイクロコンピュータを特
定の動作モードにすることによりこれらを内部の専用メ
モリ(RAM)に格納する。バグのアドレスに到達する
と内部のプログラムメモリの代りにこれらの専用メモリ
を選択するように構成されており、この結果バグを修正
したプログラムを実行するようになっている。外付けの
不揮発性メモリは、バグのあるなしにかかわらず必要な
ものであるから、応用装置の構成をあまり変更せずにバ
グを修正できる可能性がある。
【0007】
【発明が解決しようとする課題】ところが上記公報で
は、マイクロコンピュータを特定の動作モードにする必
要があるため、マイクロコンピュータに専用の端子を設
けるか、モードを変更するために特殊信号を印加するよ
うにするなど、動作モード設定のための手段が必要であ
った。専用端子を設けた場合はマイクロコンピュータの
機能端子数が減ってしまうし、特殊信号を印加する構成
とした場合はその信号を発生する外付け回路が必要とな
るという欠点があった。また、専用端子の処理や外付け
回路の存在により、外見からプログラムにバグが存在す
ることが明白にわかってしまい、その修正したプログラ
ムは外付けの不揮発性メモリに格納されていることが容
易に類推される。このメモリは容易に読み出されるう
え、このメモリに修正後のプログラムを格納する場合の
様式は、マイクロコンピュータの機能仕様として第三者
に入手可能であることから、プログラムの一部が第三者
に読み出されてしまい、著作権の侵害や機密事項の漏洩
の問題もある。また、バグを含む部分を実行する代わり
に専用メモリを選択して実行するので、バグを含む部分
と同一の容量の専用メモリが必ず必要である。バグが大
規模で修正が困難な場合に、単にバグを含む部分の仕様
を削除し、何もしないようにする選択もあるはずである
が、上記公報ではそれが実施できず、バグを含む部分の
容量が専用メモリの容量を越える場合は必ず修正できな
い。大規模なバグを修正できるように専用メモリの容量
を大きくした場合、この専用メモリはバグがない場合は
全く無駄なハードウェアであるので、マイクロコンピュ
ータの性能価格比を著しく悪化させる。
【0008】本発明の目的は、マイクロコンピュータの
機能端子を減らしたり、外付け回路が不要で、プログラ
ムが第三者に読み出されることなく、マイクロコンピュ
ータの製造後に、プログラムのバクが存在するアドレス
の実行を回避し、修正後のプログラムを実行できるマイ
クロコンピュータを提供することにある。
【0009】
【課題を解決するための手段】本発明のマイクロコンピ
ュータは、インタフェース手段を介しマイクロコンピュ
ータ外部から取得する特定アドレス情報を記憶する記憶
手段と、前記記憶手段の内容と前記プログラムカウンタ
の内容とを比較し、一致した場合には選択信号を出力す
る比較手段と、前記命令実行部が実行可能で、プログラ
ムの実行番地を変更する分岐命令を出力する分岐命令出
力手段と、前記選択信号が真のときは前記分岐命令を選
択し、前記選択信号が偽のときは前記プログラムメモリ
の内容を選択し、前記命令実行部に供給する選択手段を
有し、命令実行部は、前記プログラムメモリに格納され
たプログラムに従って、マイクロコンピュータ外部から
前記インタフェース手段を介し前記特定アドレス情報を
取得し、前記特定アドレス情報を前記記憶手段に格納
し、前記アドレス検出信号が真のときは前記分岐命令を
実行し、前記特定アドレス情報とは異なるアドレスから
始まる、プログラムメモリに格納されたプログラムを実
行することを特徴とする。
【0010】
【作用】本発明は、プログラムの実行が開始された後、
特定アドレスに達すると、分岐命令を実行し、特定アド
レスとは異なるアドレスから始まるプログラムを実行す
ることにより、プログラムのバグが存在するアドレスの
実行を回避し、修正後のプログラムを実行できるように
したものである。
【0011】請求項2の発明は、特定のアドレス情報を
記憶する記憶手段を複数設け、プログラムのバグが複数
存在する場合もバグを修正できるようにしたものであ
る。
【0012】請求項3の発明は、マイクロコンピュータ
外部から特定プログラムを取得し、プログラムメモリの
うち所定アドレスから始まる領域に特定プログラムを格
納し、プログラムのバグが存在するアドレスの実行を回
避し、特定プログラムを実行するようにしたものであ
る。
【0013】請求項4の発明は、請求項3の発明におい
て、特定のアドレス情報を記憶する記憶手段を複数設け
たものである。
【0014】請求項5の発明は、記憶手段の内容が書き
換えられてプログラムが暴走するのを防止するためにイ
ネーブルフラグを設け、プログラムにバグがなく、修正
する必要のないときは比較手段の出力を無効にするよう
にしたものである。
【0015】請求項6の発明は、イネーブルフラグを操
作するための情報をマイクロコンピュータ外部から取得
するようにしたものである。
【0016】
【実施例】次に、本発明の実施例について図面を参照し
て説明する。
【0017】(第1の実施例)図1は本発明の第1の実
施例のマイクロコンピュータのブロック図である。
【0018】プログラムカウンタ1は命令実行部5が実
行すべき命令が格納されているアドレスを順次指し示す
16ビットのカウンタで、アドレスバス2にアドレスを
出力する。アドレスバス2はアドレスを伝送する16ビ
ット幅のバスである。ROM3は読み出し専用メモリで
あり、アドレスバス2からアドレスを入力し、データバ
ス11にデータを出力する。ROM3はアドレス000
0H〜BFFFH(Hは16進表示の意味)の空間に存
在する。RAM4は読み出し書き込み可能メモリであ
り、アドレスバス2からアドレスを入力し、データバス
11との間でデータをやりとりする。RAM4はアドレ
スF400H〜F7FFHの空間に存在する。ROM
3、PAM4はいずれも、プログラムメモリまたはデー
タメモリのどちらにも使用される。命令実行部5は命令
を解読し実行するブロックで、マイクロコンピュータ1
3内の各ブロックを制御する。比較手段である比較回路
6はプログラムカウンタ1の内容をアドレスバス2を介
して入力するとともに記憶手段であるレジスタ9の内容
を入力して両者を比較し、一致した場合はハイレベルの
選択信号12を出力し、一致しない時はロウレベルの選
択信号12を出力する。選択手段である選択回路7は、
選択信号12がハイレベルの時は分岐命令発生回路8の
出力を選択し、ロウレベルの時はデータバス11上のデ
ータを選択し、命令実行部5に出力する。分岐命令発生
手段である分岐命令発生回路8は絶対分岐命令「BR
!F7FDH」(アドレスF7FD7Hに分岐する)の
命令コードを発生する。レジスタ9はプログラムの実行
を回避したい特定アドレスを記憶するための16ビット
幅のレジスタである。インタフェイス手段であるシリア
ルインタフェース10はマイクロコンピュータ13外部
のメモリ14の内容をマイクロコンピュータ13の内部
に取り込み、データバス11に出力する。データバス1
1は8ビット幅のデータバスである。選択信号12はプ
ログラムカウンタ1とレジスタ9の内容が一致したかど
うかを示す信号で、ハイレベルのとき一致、ロウレベル
のとき不一致を示している。メモリ14はシリアルイン
タフェースを内蔵した不揮発性メモリで、内容をシリア
ルデータとして読み出すことができる。従来例ではメモ
リ14には応用機器の調整データなどのように、製造後
に変更したいデータが格納されていたが、本実施例では
このようなデータのほかに、プログラムのバグのアドレ
スおよび修正後のプログラムが格納されている。
【0019】次に、本実施例のマイクロコンピュータ1
3の動作を説明する。マイクロコンピュータ13のプロ
グラムがROM3に格納されており、このプログラムに
バグがあり、これを回避する例を述べる。プログラム
は、図4のメモリマップのように、アドレス0100H
からBFFFHに存在し、そのうち1000Hから10
0FHの間にバグが存在する。
【0020】マイクロコンピュータ13はリセット解除
とともに、ROM3のアドレス0000Hに存在するベ
クタテーブル0100Hを参照してこれをプログラムカ
ウンタ1に格納し、アドレス0100Hからプログラム
の実行を開始する。プログラムの冒頭部分にはマイクロ
コンピュータ13の各部を初期化するためのプログラム
が格納してあり、この部分が本発明では重要であるので
詳しく説明する。
【0021】プログラムを開発する時点ではバグが発生
するかどうかを推定することはできないし、バグのアド
レスや内容を規定することもできない。したがって、プ
ログラムにバグが発見された時点で本発明を実施できる
ように、プログラムの冒頭部分にバグの回避、修正を実
施するかどうかの判断ルーチンがあらかじめ内蔵されて
いる。このようにすることにより、バグがない場合は本
発明によるバグの回避、修正を実施せず、バグがある場
合は実施するようにすることができる。図2は本発明を
内蔵したマイクロコンピュータのプログラムの例で、初
期化プログラムの中でメモリ14から種々のデータを読
み出す(ステップ21)。本発明を内蔵しない従来のマ
イクロコンピュータでは、調整用のデータなど、製造後
に変更するデータを読み込むだけであるが、本発明では
これに加えて、プログラムのバグのアドレスと、修正後
のプログラムを読み込む。これらの情報はシリアルイン
タフェース10を介してデータバス11に出力され、R
AM4、レジスタ9に格納される(ステップ22)。こ
れらの制御はプログラムにしたがって命令実行部5が行
う。バグのアドレス情報を読み込み、これが0であれば
初期化プログラムの以降の処理をとばし、本発明を実施
しないように条件分岐する(ステップ23)。バグが存
在しアドレス情報が0でない場合、このアドレスをレジ
スタ9に書き込む。引続き修正後のプログラムをメモリ
14から読み込みRAM4のアドレスF7D0H〜F7
EFHに書き込む(ステップ24)。また、本実施例で
は、レジスタ9に設定したアドレスに達するとアドレス
F7FDHに分岐するように構成してあるので、RAM
4のアドレスF7FDHに、修正後のプログラムの先頭
アドレスに分岐する命令「BR !F7D0H」(アド
レスF7D0Hに分岐する)を書き込む(ステップ2
5)。図3はメモリ14の内容の例で、プログラムにバ
グがない場合はバグのアドレス情報は0、修正後のプロ
グラムの部分は空でよい。バグがアドレス1000H〜
100FHに存在する場合、図のようにアドレス情報と
してバグの先頭アドレス1000Hと、修正後のプログ
ラムを格納しておく。修正後のプログラムの最後は、バ
グの部分の次のアドレス1010H(100FHの次の
アドレス)に分岐する命令「BR !1010H」とし
ておく。このことによりバグを回避し修正後のプログラ
ムを実行した後、バグの部分の後の処理(ステップ2
6)を続行することができる。
【0022】初期化プログラムの後、プログラムの実行
アドレスが、バグの存在するアドレス1000Hに達す
るまでの動作は、従来のマイクロコンピュータと同じで
ある。動作の概略は、プログラムカウンタ1がアドレス
バス2に順次アドレスを出力し、ROM3は命令をデー
タバス11に出力する。命令実行部5は選択回路7を通
してデータバス11上の命令を取り込み実行することに
よりプログラムを実行していく。ここで命令を取り込む
時刻ではプログラムカウンタ1の内容をアドレスバス2
に出力しており、レジスタ9の内容が1000Hである
から、アドレス1000Hに達するまでの間は選択信号
12はロウレベルのままである。したがって、選択回路
7は常にデータバス11上のデータを選択しており、R
OM3に格納されたプログラムをそのまま実行する。
【0023】次に、プログラムの実行アドレスが100
0Hに達した場合を説明する。図5は、実行アドレスが
1000H付近のタイミング図である。プログラムカウ
ンタ1が1000Hになり、アドレスバス2に1000
Hを出力すると、比較回路6はアドレスバス2のアドレ
スとレジスタ9に格納されているアドレスの一致を検出
し、ハイレベルの選択信号12を出力する。このとき選
択回路7は分岐命令発生回路8の出力を選択するので、
命令実行部5はROM5のアドレス1000Hの内容は
取り込まず、絶対分岐命令「BR !F7FDH」の命
令コードを取り込む。したがって、アドレスF7FDH
に分岐する。このときプログラムカウンタ1の内容はF
7FDHとなるので、レジスタ9の内容1000Hとは
異なる。したがって、選択信号12はロウレベルとな
り、選択回路7はデータバス11上のデータを選択す
る。よって命令実行部5はRAM4のアドレスF7FD
Hの内容をデータバス11を通して取り込む。RAM4
のアドレスF7FDHには「BR !F7D0H」の命
令コードが格納されているので、命令実行部5はこれを
実行し、RAM4のアドレスF7D0Hに分岐する。ア
ドレスF7D0H以降には、修正後のプログラムが格納
してあるのでこれを実行する。修正後のプログラムの最
後は「BR !1010H」となっているので、この後
ROM3のアドレス1010Hに分岐し、以降のプログ
ラムを引き続き実行する。
【0024】図4はROM3とRAM4のメモリマップ
にプログラムの流れを書き込んだもので、矢印の順序で
プログラムを実行する。このようにROM3のアドレス
1000Hから100FHまでの区間だけの実行を回避
し、代わってRAM4に格納された修正後のプログラム
を実行することができる。したがって、プログラムのバ
グを修正し、所望の動作をさせることができる。修正す
るバグのアドレスと修正後のプログラムは、ともに外付
けのメモリ14に格納するので、マイクロコンピュータ
13の製造後にプログラムのバグを修正できることにな
る。
【0025】以上説明したように本実施例では、マイク
ロコンピュータの製造後にプログラムのバグが存在する
アドレスの実行を回避し、修正後のプログラムを実行で
きる。また、マイクロコンピュータ13を特定のモード
に設定する必要がないので、そのための特定端子や外付
け回路が不要であり、本発明を実施するためにマイクロ
コンピュータ13の機能端子を減らしたり、外付け回路
により価格や実装面積を増大させたりすることがない。
また、メモリ14がマイクロコンピュータ13に接続さ
れた構成だけから、プログラムにバグが存在するかどう
かを類推することはできないことと、メモリ14に修正
後のプログラムを格納する様式がROM3に格納したプ
ログラムに依存しており任意であることから、第三者が
メモリ14を読み出して修正後のプログラムを入手する
ことはできない。したがって、プログラムの著作権が侵
害されたり、機密事項が漏洩したりすることがない。ま
た、修正後のプログラムはRAM4に格納するので、専
用メモリは不要である。修正後のプログラムは、その最
後が「BR !1010H」となっている必要があるだ
けで、その容量がバグを含む部分と同一である必要はな
い。したがって、バグが大規模であっても、単純に回避
するような場合であれば、RAM4を大きく消費するこ
となく実施できる。
【0026】なお、分岐命令発生回路8が絶対分岐命令
「BR !F7FDH」の命令コードを発生する例を述
べたが、バグのアドレスに達したときに必ずプログラム
の先頭番地(0100H)に分岐することに決めてお
き、「BR !0100H」を発生する構成にしてもよ
い。このようにするとバグのアドレスに達した場合にそ
のプログラムを実行せず、初期設定からやりなおす動作
となる。この場合はメモリ14に設定するのはバグのア
ドレス1000Hだけでよく、プログラムを格納する必
要はない。また、修正後のプログラムをRAM4に設定
しないので、RAM4を消費することはない。
【0027】(第2の実施例)第1の実施例ではプログ
ラムにバグがなく、修正する必要のないときはレジスタ
9に0を格納していた。アドレス0000Hはリセット
時に参照されるベクタテーブル領域であって、プログラ
ムとして実行されることがないので、0を格納すること
により、選択信号12がハイレベルにならないようにし
た。しかしながら、プログラムの暴走によりレジスタ9
をたとえば2000Hに書き換えてしまった場合は、プ
ログラムが2000Hに達する度にハイレベルの選択信
号12を発生してしまい、分岐命令を実行してしまう。
この場合バグがないのでRAM4に修正後のプログラム
が格納されておらず、暴走する。つまりレジスタ9を書
き換えるような暴走が起きると、その暴走から復帰した
としても、あるアドレスを実行すると必ず暴走するよう
になってしまう。
【0028】第2の実施例は上記のような不具合を起こ
さないために、比較回路6の比較結果を無効にし、選択
信号12を常にロウレベルとするようなイネーブルフラ
グを追加したものである。
【0029】図6は本発明の第2の実施例のマイクロコ
ンピュータのブロック図である。
【0030】イネーブルフラグ15は命令実行部5から
の制御によりハイレベルまたはロウレベルを保持し出力
する。命令実行部50は命令を解読し実行するブロック
で、マイクロコンピュータ17内の各ブロックを制御す
る。また、イネーブルフラグ15に値を設定するための
専用命令として「SET ENFLG」および「CLR
ENFLG」を有している。「SET ENFLG」
でイネーブルフラグ15にハイレベルを設定し、「CL
R ENFLG」でロウレベルを設定する。アドレス検
出信号16はプログラムカウンタ1とレジスタ9の内容
が一致したかどうかを示す信号で、ハイレベルのとき一
致、ロウレベルのとき不一致を示している。選択信号1
2は、アドレス検出信号16とイネーブルフラグ15の
論理積信号である。選択回路7は選択信号12がハイレ
ベルの時は分岐命令発生回路8の出力を選択し、ロウレ
ベルの時はデータバス11上のデータを選択し、命令実
行部5に出力する。その他のブロックは第1の実施例と
同じである。
【0031】次に、本実施例のマイクロコンピュータ1
7の動作を説明する。
【0032】図7は本実施例におけるプログラムの例
で、初期化プログラムの一部が第1の実施例と異なる。
図7で、太枠の部分が第1の実施例と異っており、他の
部分は第1の実施例と同じである。
【0033】メモリ14の内容、およびROM3、RA
M4のメモリマップは第1の実施例と同じであり、それ
ぞれ図3、図4に示したものである。
【0034】図7で、プログラムにバグがある場合、修
正後のプログラムと分岐命令をRAM4に格納した後
(ステップ24,25)、「SET ENFLG」命令
によりイネーブルフラグ15をハイレベルに設定する
(ステップ27)。この場合選択信号12はアドレス検
出信号16と同一論理値となるので、以後の動作は第1
の実施例と同じである。すなわちプログラムの実行アド
レスがバグの存在するアドレス1000Hに達すると、
比較回路6がハイレベルのアドレス検出信号16を出力
し、選択信号12がハイレベルとなるので選択回路7は
分岐命令発生回路8の出力を選択する。したがって、R
AM4に格納された修正後のプログラムを実行する。一
方、バグがない場合、「CLR ENFLG」命令によ
りイネーブルフラグ15をロウレベルに設定するので
(ステップ28)、選択信号12はアドレス検出信号1
6によらず常にロウレベルとなる。したがって、選択回
路7は常にデータバス11上のデータを選択し、ROM
3に格納されたプログラムを常に実行する。暴走等でレ
ジスタ9の内容が書き換えられたとしても、分岐命令発
生回路8が選択されてRAM4に分岐してしまうことは
ない。
【0035】以上説明したように本実施例でも第1の実
施例と同様に、マイクロコンピュータ17の製造後に、
ROM3に格納したプログラムのバグを回避し、修正後
のプログラムを実行できる。また、端子数の減少や外付
け回路の増加を回避したり、プログラムの著作権保護、
機密保持の効果も第1の実施例と同じである。また、本
実施例の特有の効果として、レジスタ9が書き換えられ
てしまった場合に特定アドレスで必ず暴走してしまうと
いう第1の実施例の欠点を回避できる。
【0036】(第3の実施例)第1、第2の実施例は、
単一のバグを修正する構成であったが、プログラムのバ
グが複数存在する場合も修正できる構成例を示す。
【0037】図8は本発明の第3の実施例のマイクロコ
ンピュータのブロック図である。
【0038】レジスタ9aおよび9bは、プログラムを
変更しようとする部分の先頭アドレスを記憶するレジス
タである。比較回路6a、6bはそれぞれレジスタ9
a、9bの内容とプログラムカウンタ1の内容を比較
し、一致した場合はそれぞれハイレベルのアドレス検出
信号12a、12bを出力し、一致しない場合はロウレ
ベルのアドレス検出信号12a,12bを出力する。選
択信号12はアドレス検出信号12aと12bの論理和
信号である。その他の構成要素は第1の実施例と同じで
ある。
【0039】本実施例のマイクロコンピュータ18の動
作は第1の実施例と同様であるが、レジスタおよび比較
回路が2組あるので、バグのアドレスを2つ設定するこ
とができる。たとえばレジスタ9aに1000H、レジ
スタ9bに2000Hを設定しておけば、プログラムの
実行アドレスが1000Hに達したときと、2000H
に達したときの両方で分岐命令発生回路8の出力を選択
し、RAM4に分岐することができる。したがって、2
つのバグを修正することができる。2つのバグに対し、
それぞれ異なる修正を行う必要がある場合は、修正プロ
グラムの中で条件分岐するように構成すればよい。
【0040】(第4の実施例)図9は本発明の第4の実
施例のマイクロコンピュータのブロック図である。
【0041】比較回路6a、6bはそれぞれレジスタ9
a、9bの内容とプログラムカウンタ1の内容を比較
し、一致した場合はそれぞれハイレベルの選択信号12
a、12bを出力し、一致しない場合はロウレベルの選
択信号12a,12bを出力する。選択回路7aは選択
信号12aがハイレベルのときは分岐命令発生回路8a
の出力を選択し、選択信号12bがハイレベルのときは
分岐命令発生回路8bの出力を選択し、選択信号12
a、12bの両方がロウレベルのときはデータバス11
上のデータを選択し、命令実行部5に出力する。ここ
で、分岐命令発生回路8aは絶対分岐命令「BR !F
7FDH」の命令コードを発生する。分岐命令発生回路
8bは絶対分岐命令「BR !F7FAH」の命令コー
ドを発生する。その他の構成要素は第1の実施例と同様
である。
【0042】本実施例のマイクロコンピュータ19の動
作は第3の実施例と同様であるが、レジスタ9aとプロ
グラムカウンタ1が一致した場合は絶対分岐命令「BR
!F7FDH」を実行してRAM4のアドレスF7F
DHに分岐し、レジスタ9bとプログラムカウンタ1が
一致した場合は「BR !F7FAH」を実行してRA
M4のアドレスF7FAHに分岐する点が第3の実施例
と異なる。本実施例ではバグのアドレスが2つ設定でき
るだけでなく、2つのバクに応じて異なるアドレスに分
岐するので、2つのバグに対して異なる修正を行う場合
は、第3の実施例より修正プログラムの構成が容易であ
る。
【0043】第3、第4の実施例ともに、2つのバグに
対応する構成としたが、同様にして3つ以上のバグに対
応する構成も可能である。また、複数の比較回路に応じ
て、複数のイネーブルフラグを設ける構成も可能であ
る。たとえば4つのバグに対応する構成の場合で、修正
したいバグが3ヵ所であれば、使用しない比較回路が1
つあり、これをイネーブルフラグで無効とすることで誤
動作を防ぐことができる。
【0044】
【発明の効果】以上説明したように本発明は、下記のよ
うな効果がある。 (1)請求項1〜4の発明は、特定アドレスの実行を回
避し、分岐命令を実行する機構を設けるとともに、命令
実行部が、マイクロコンピュータ外部に接続したメモリ
からバグの存在するアドレスと、必要な場合は修正した
プログラムとを読み込みRAMに格納する制御を行うよ
うに構成したことにより、マイクロコンピュータの製造
後に、プログラムのバグが存在するアドレスの実行を回
避し、修正後のプログラムを実行できる効果がある。こ
のとき修正後のプログラムは修正前のプログラムと同一
の容量である必要はなく、また、修正後の処理を固定と
してRAMを消費しないようにすることもできる。
【0045】また、本発明を実施するためにマイクロコ
ンピュータの機能端子を減らしたり、外付け回路により
価格や実装面積を増大させたりすることがないので、容
易に実施できる。また、外付けのメモリに格納したプロ
グラムを第三者が容易に読み出せない構成になっている
ので、プログラムの著作権が侵害されたり、機密事項が
漏洩したりすることを防ぐ効果がある。 (2)請求項2および4の発明はさらに、プログラムの
バグが複数存在する場合もバグを修正できる。 (3)請求項5の発明は、記憶手段の内容は書き換えら
れることによるプログラムの暴走を防止できる。
【図面の簡単な説明】
【図1】本発明の第1の実施例のマイクロコンピュータ
のブロック図である。
【図2】第1の実施例におけるプログラムの例を示す図
である。
【図3】メモリ14の内容を示す図である。
【図4】ROM3とRAM4のメモリマップとプログラ
ムの流れを示す図である。
【図5】第1の実施例のタイミング図である。
【図6】本発明の第2の実施例のマイクロコンピュータ
のブロック図である。
【図7】第2の実施例におけるプログラムの例を示す図
である。
【図8】本発明の第3の実施例のマイクロコンピュータ
のブロック図である。
【図9】本発明の第4の実施例のマイクロコンピュータ
のブロック図である。
【符号の説明】
1 プログラムカウンタ 2 アドレスバス 3 ROM 4 RAM 5 命令実行部 6,6a,6b 比較回路 7,7a 選択回路 8,8a,8b 分岐命令発生回路 9,9a,9b レジスタ 10 シリアルインタフェース 11 データバス 12 選択信号 13,17,18,19 マイクロコンピュータ 14 メモリ 15 イネーブルフラグ 16,12a,12b アドレス検出信号 21〜28 ステップ

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 単一半導体基板上に少なくとも、命令を
    解読し実行する命令実行部と、プログラムが格納される
    プログラムメモリと、前記プログラムメモリのアドレス
    を順次指し示し、内容を出力させるプログラムカウンタ
    と、外部からデータを取得するインタフェース手段とを
    集積したマイクロコンピュータにおいて、 前記インタフェース手段を介しマイクロコンピュータ外
    部から取得する特定アドレス情報を記憶する記憶手段
    と、 前記記憶手段の内容と前記プログラムカウンタの内容と
    を比較し、一致した場合には選択信号を出力する比較手
    段と、 前記命令実行部が実行可能で、プログラムの実行番地を
    変更する分岐命令を出力する分岐命令出力手段と、 前記選択信号が真のときは前記分岐命令を選択し、前記
    選択信号が偽のときは前記プログラムメモリの内容を選
    択し、前記命令実行部に供給する選択手段を有し、 前記命令実行部は、前記プログラムメモリに格納された
    プログラムに従って、マイクロコンピュータ外部から前
    記インタフェース手段を介し前記特定アドレス情報を取
    得し、前記特定アドレス情報を前記記憶手段に格納し、
    前記選択信号が真のときは前記分岐命令を実行し、前記
    特定アドレス情報とは異なるアドレスから始まる、前記
    プログラムメモリに格納されたプログラムを実行するこ
    とを特徴とするマイクロコンピュータ。
  2. 【請求項2】 単一半導体基板上に少なくとも、命令を
    解読し実行する命令実行部と、プログラムが格納される
    プログラムメモリと、前記プログラムメモリのアドレス
    を順次指し示し、内容を出力させるプログラムカウンタ
    と、外部からデータを取得するインタフェース手段とを
    集積したマイクロコンピュータにおいて、 前記インタフェース手段を介しマイクロコンピュータ外
    部から取得する複数の特定アドレス情報を記憶する複数
    の記憶手段と、 前記複数の記憶手段の内容と前記プログラムカウンタの
    内容とをそれぞれ比較し、一致した場合には単一もしく
    は複数のアドレス検出信号を出力する単一もしくは複数
    の比較手段と、 前記命令実行部が実行可能で、プログラムの実行番地を
    変更する単一もしくは複数の分岐命令を出力する単一も
    しくは複数の分岐命令出力手段と、 前記アドレス検出信号を入力し、単一もしくは複数の選
    択信号を出力する論理手段と、 前記アドレス検出信号のいずれかが真のときは前記分岐
    命令出力手段の出力のいずれかを選択し、前記アドレス
    検出信号のすべてが偽のときは前記プログラムメモリの
    内容を選択し、前記命令実行部に供給する選択手段を有
    し、 前記命令実行部は、前記プログラムメモリに格納された
    プログラムに従って、マイクロコンピュータ外部から前
    記インタフェース手段を介し前記特定アドレス情報を取
    得し、前記特定アドレス情報を前記記憶手段に格納し、
    前記アドレス検出信号が真のときは前記分岐命令を実行
    し、前記特定アドレス情報とは異なるアドレスから始ま
    る、前記プログラムメモリに格納されたプログラムを実
    行することを特徴とするマイクロコンピュータ。
  3. 【請求項3】 単一半導体基板上に少なくとも、命令を
    解読し実行する命令実行部と、プログラムが格納される
    プログラムメモリと、前記プログラムメモリのアドレス
    を順次指し示し、内容を出力させるプログラムカウンタ
    と、外部からデータを取得するインタフェース手段とを
    集積したマイクロコンピュータにおいて、 前記インタフェース手段を介しマイクロコンピュータ外
    部から取得する特定アドレス情報を記憶する記憶手段
    と、 前記記憶手段の内容と前記プログラムカウンタの内容と
    を比較し、一致した場合には選択信号を出力する比較手
    段と、 前記命令実行部が実行可能で、プログラムの実行番地を
    変更する分岐命令を出力する分岐命令出力手段と、 前記選択信号が真のときは前記分岐命令を選択し、前記
    選択信号が偽のときは前記プログラムメモリの内容を選
    択し、前記命令実行部に供給する選択手段を有し、 前記プログラムメモリの一部または全部が、読み出し書
    き込み可能なメモリで構成され、 前記分岐命令は、前記プログラムメモリのうち前記読み
    出し書き込み可能なメモリで構成された領域の所定アド
    レスに分岐する分岐命令であり、 前記命令実行部は、前記プログラムメモリに格納された
    プログラムに従って、マイクロコンピュータ外部から前
    記インタフェース手段を介し前記特定アドレス情報を取
    得し、前記特定アドレス情報を前記記憶手段に格納し、
    また、マイクロコンピュータ外部から前記インタフェー
    ス手段を介し特定プログラムを取得し、前記プログラム
    メモリのうち前記所定アドレスから始まる領域に前記特
    定プログラムを格納し、前記選択信号が真のときは前記
    分岐命令を実行し、前記所定アドレスから始まる、前記
    プログラムメモリに格納された前記特定プログラムを実
    行することを特徴とするマイクロコンピュータ。
  4. 【請求項4】 単一半導体基板上に少なくとも、命令を
    解読し実行する命令実行部と、プログラムが格納される
    プログラムメモリと、前記プログラムメモリのアドレス
    を順次指し示し、内容を出力させるプログラムカウンタ
    と、外部からデータを取得するインタフェース手段とを
    集積したマイクロコンピュータにおいて、 前記インタフェース手段を介しマイクロコンピュータ外
    部から取得する複数の特定アドレス情報を記憶する複数
    の記憶手段と、 前記複数の記憶手段の内容と前記プログラムカウンタの
    内容とをそれぞれ比較し、一致した場合には単一もしく
    は複数のアドレス検出信号を出力する単一もしくは複数
    の比較手段と、 前記命令実行部が実行可能で、プログラムの実行番地を
    変更する単一もしくは複数の分岐命令を出力する単一も
    しくは複数の分岐命令出力手段と、 前記アドレス検出信号を入力し、単一もしくは複数の選
    択信号を出力する論理手段と、 前記アドレス検出信号のいずれかが真のときは前記分岐
    命令出力手段の出力のいずれかを選択し、前記アドレス
    検出信号のすべてが偽のときは前記プログラムメモリの
    内容を選択し、前記命令実行部に供給する選択手段を有
    し、 前記プログラムメモリの一部または全部が、読み出し書
    き込み可能なメモリで構成され、 前記分岐命令は、前記プログラムメモリのうち読み出し
    書き込み可能なメモリで構成された領域の所定アドレス
    に分岐する分岐命令であり、 前記命令実行部は、前記プログラムメモリに格納された
    プログラムに従って、マイクロコンピュータ外部から前
    記インタフェース手段を介し前記特定アドレス情報を取
    得し、前記特定アドレス情報を前記記憶手段に格納し、
    また、マイクロコンピュータ外部から前記インタフェー
    ス手段を介し特定プログラムを取得し、前記プログラム
    メモリのうち前記所定アドレスから始まる領域に前記特
    定プログラムを格納し、前記アドレス検出信号が真のと
    きは前記分岐命令を実行し、前記所定アドレスから始ま
    る、前記プログラムメモリに格納された前記特定プログ
    ラムを実行することを特徴とするマイクロコンピュー
    タ。
  5. 【請求項5】 前記命令実行部の制御により、前記比較
    手段の出力を有効にするか無効にするかを選択する単一
    もしくは複数のイネーブルフラグを有する、請求項1か
    ら4のいずれか1項記載のマイクロコンピュータ。
  6. 【請求項6】 前記命令実行部は、マイクロコンピュー
    タ外部から前記インタフェース手段を介し前記イネーブ
    ルフラグを操作するための情報を取得し、前記情報にし
    たがって前記イネーブルフラグを真または偽に設定す
    る、請求項5に記載のマイクロコンピュータ。
JP5215616A 1993-08-31 1993-08-31 マイクロコンピュータ Pending JPH0764784A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP5215616A JPH0764784A (ja) 1993-08-31 1993-08-31 マイクロコンピュータ
EP94113362A EP0640916A3 (en) 1993-08-31 1994-08-26 Microcomputer.
US08/296,136 US5479342A (en) 1993-08-31 1994-08-26 Microcomputer
KR1019940021528A KR970011215B1 (ko) 1993-08-31 1994-08-30 마이크로컴퓨터

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5215616A JPH0764784A (ja) 1993-08-31 1993-08-31 マイクロコンピュータ

Publications (1)

Publication Number Publication Date
JPH0764784A true JPH0764784A (ja) 1995-03-10

Family

ID=16675364

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5215616A Pending JPH0764784A (ja) 1993-08-31 1993-08-31 マイクロコンピュータ

Country Status (4)

Country Link
US (1) US5479342A (ja)
EP (1) EP0640916A3 (ja)
JP (1) JPH0764784A (ja)
KR (1) KR970011215B1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6314024B1 (en) 1999-10-22 2001-11-06 Nec Corporation Data processing apparatus
JP2017084062A (ja) * 2015-10-27 2017-05-18 ラピスセミコンダクタ株式会社 メモリ制御装置及びメモリ制御方法
JP2021509200A (ja) * 2018-01-30 2021-03-18 ベリタス テクノロジーズ エルエルシー コンテナを更新するためのシステム及び方法

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5581776A (en) * 1995-02-03 1996-12-03 Nokia Mobile Phones Limited Branch control system for rom-programmed processor
GB2309324B (en) * 1996-01-17 2000-09-06 Motorola Inc Method for storing repair data in a micro processor system
JP2867965B2 (ja) * 1996-06-28 1999-03-10 日本電気株式会社 データ処理装置及びデータ処理方法
US5901225A (en) * 1996-12-05 1999-05-04 Advanced Micro Devices, Inc. System and method for performing software patches in embedded systems
JP3045400U (ja) * 1997-07-17 1998-01-27 船井電機株式会社 電子機器の仕向地別初期設定装置
JP2000347862A (ja) 1999-06-08 2000-12-15 Nec Corp 命令入換え回路
JP3750494B2 (ja) * 1999-08-31 2006-03-01 松下電器産業株式会社 半導体装置
US6438664B1 (en) 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
KR100410557B1 (ko) * 2001-11-19 2003-12-18 주식회사 하이닉스반도체 프로그램 수정 가능한 마이크로컨트롤러 및 구동방법
US20050071605A1 (en) * 2003-09-30 2005-03-31 Yao-Huang Hsieh Method for enabling a branch-control system in a microcomputer apparatus
US7464248B2 (en) 2005-04-25 2008-12-09 Mediatek Incorporation Microprocessor systems and bus address translation methods

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6046551A (ja) * 1983-05-27 1985-03-13 アメリカン テレフオン アンド テレグラフ カムパニ− デバイス基板のパタ−ン形成方法
JPS61213928A (ja) * 1985-03-19 1986-09-22 Nec Corp プログラム変更方式
JPS63156231A (ja) * 1986-12-19 1988-06-29 Fujitsu Ltd リ−ドオンリ−メモリ内命令の変更方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4034349A (en) * 1976-01-29 1977-07-05 Sperry Rand Corporation Apparatus for processing interrupts in microprocessing systems
US4338661A (en) * 1979-05-21 1982-07-06 Motorola, Inc. Conditional branch unit for microprogrammed data processor
US4542453A (en) * 1982-02-19 1985-09-17 Texas Instruments Incorporated Program patching in microcomputer
JPS6048545A (ja) * 1983-08-26 1985-03-16 Nec Corp マイクロコンピユ−タ
DE3581939D1 (de) * 1985-09-24 1991-04-04 Ibm Verfahren zum prozessorsteuerkodespeichern, das kodeveraenderung zulaesst und adressierschaltung dafuer.
US4831517A (en) * 1986-10-10 1989-05-16 International Business Machines Corporation Branch and return on address instruction and methods and apparatus for implementing same in a digital data processing system
US4905200A (en) * 1988-08-29 1990-02-27 Ford Motor Company Apparatus and method for correcting microcomputer software errors
JPH03142629A (ja) * 1989-10-30 1991-06-18 Toshiba Corp マイクロコントローラ
GB9011679D0 (en) * 1990-05-24 1990-07-11 Schlumberger Ind Ltd Mask-programmable microprocessors
JP3144014B2 (ja) * 1992-01-13 2001-03-07 ソニー株式会社 電子装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6046551A (ja) * 1983-05-27 1985-03-13 アメリカン テレフオン アンド テレグラフ カムパニ− デバイス基板のパタ−ン形成方法
JPS61213928A (ja) * 1985-03-19 1986-09-22 Nec Corp プログラム変更方式
JPS63156231A (ja) * 1986-12-19 1988-06-29 Fujitsu Ltd リ−ドオンリ−メモリ内命令の変更方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6314024B1 (en) 1999-10-22 2001-11-06 Nec Corporation Data processing apparatus
JP2017084062A (ja) * 2015-10-27 2017-05-18 ラピスセミコンダクタ株式会社 メモリ制御装置及びメモリ制御方法
JP2021509200A (ja) * 2018-01-30 2021-03-18 ベリタス テクノロジーズ エルエルシー コンテナを更新するためのシステム及び方法

Also Published As

Publication number Publication date
EP0640916A2 (en) 1995-03-01
KR950006597A (ko) 1995-03-21
EP0640916A3 (en) 1996-04-24
KR970011215B1 (ko) 1997-07-08
US5479342A (en) 1995-12-26

Similar Documents

Publication Publication Date Title
US4542453A (en) Program patching in microcomputer
US7444630B2 (en) Method and apparatus for changing microcode to be executed in a processor
US20020124161A1 (en) Data processing system having redirecting circuitry and method therefor
JP3563768B2 (ja) Romプログラム変更装置
US5479342A (en) Microcomputer
JP3616402B2 (ja) 拡張可能なレジスタを提供するデータ処理システムおよびその方法
JP4988082B2 (ja) マイクロプロセッサ及びデータ処理システム
US7966480B2 (en) Register pointer trap to prevent errors due to an invalid pointer value in a register
US6725294B1 (en) Installation and access of a device handler for a peripheral device in a computer
JP2000339177A (ja) Eit処理機能を備えるマイクロプロセッサ及びeit処理方法
US6985986B2 (en) Variable cycle interrupt disabling
US20070113064A1 (en) Method and system for secure code patching
JP2806075B2 (ja) マイクロコンピュータ
JPH0895946A (ja) マイクロコンピュータ
JPS62197831A (ja) デ−タ処理装置
JP3588951B2 (ja) マイクロコンピュータのプログラム変更装置
JP3105822B2 (ja) マイクロプログラム制御装置
US7003543B2 (en) Sticky z bit
JP3097602B2 (ja) データ処理装置
JPH02191042A (ja) 割込み制御方式
JP2002163104A (ja) マイクロコンピュータ
JPH04107630A (ja) 中央処理装置
CN114785512A (zh) 处理安全密钥的方法和装置及电子设备
JP2003178596A (ja) 半導体集積回路
JPH06149559A (ja) ワンチップマイクロコンピュータ

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 19980908