JP2011008432A - プロセッサ - Google Patents
プロセッサ Download PDFInfo
- Publication number
- JP2011008432A JP2011008432A JP2009150184A JP2009150184A JP2011008432A JP 2011008432 A JP2011008432 A JP 2011008432A JP 2009150184 A JP2009150184 A JP 2009150184A JP 2009150184 A JP2009150184 A JP 2009150184A JP 2011008432 A JP2011008432 A JP 2011008432A
- Authority
- JP
- Japan
- Prior art keywords
- program
- input
- reset
- circuit
- reset signal
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】外部スイッチ等を新たに設ける必要がなく、簡単に起動すべきプログラムを切り替えることができるプロセッサを提供する。
【解決手段】プロセッサは、リセット信号の入力の状態に応じて、複数のプログラムの中から起動すべきプログラムを選択するプログラム選択部12と、プログラム選択部12の選択結果を記憶するレジスタ13と、選択結果に基づいて、起動するプログラムを切り替える処理を行うCPUコア11とを有する。
【選択図】図1
【解決手段】プロセッサは、リセット信号の入力の状態に応じて、複数のプログラムの中から起動すべきプログラムを選択するプログラム選択部12と、プログラム選択部12の選択結果を記憶するレジスタ13と、選択結果に基づいて、起動するプログラムを切り替える処理を行うCPUコア11とを有する。
【選択図】図1
Description
本発明は、プロセッサに関し、特に、起動するプログラムを切り替えることができるプロセッサに関する。
従来より、中央処置装置(CPU)を利用した製品用プログラム開発において、その製品に必要となる全てあるいは一部の機能を搭載した半導体チップを搭載した開発用ボードが用いられている。このボードおよびその開発を支援するプログラムを用い、開発対象プログラムの動作が試験され、その結果が検討されて、製品用プログラムが修正されながら開発される。
開発対象プログラムは、未完成の段階である開発中に、デバッグのために書き換えが必要となることもある。そのため、開発対象である製品用プログラム(以下、製品プログラムという)と開発支援プログラムといった複数のプログラムがボード上でそれぞれ動作可能である状態となっているだけでなく、製品プログラムに不具合がある場合に備えて、書き換え機能を担う開発支援プログラムを製品プログラムに優先して起動させる選択の手段が必要である。開発支援プログラムは、例えば、製品プログラムのダウンロード機能、メモリダンプ機能等を提供し、製品プログラムの開発を支援するためのプログラムである。
複数のプログラムは書き換え可能なフラッシュメモリ等に記憶される。そして、例えば、開発支援プログラムを起動して、その開発支援プログラムから開発中の製品プログラムを実行したり、開発支援プログラムは起動しないで製品プログラムだけを実行させたりしながら、製品プログラムの動作確認、修正等が行われる。よって、複数のプログラムがメモリ内に共存した状態のままで必要に応じて実行すべきプログラムを選択して処理を切り替えるために、プログラムの選択が必要となる。
実行プログラムを選択するためすなわちボード上でプログラムの処理フローを切り替えるための方法としては、ボード上にディップスイッチ等の外部スイッチを設け、その外部スイッチの状態に応じてプログラムを選択する方法がある。例えば、外部スイッチからの入力信号に応じてボード上でデコードされるアドレスを切り替えることによって、外付けのプログラムメモリを選択する方法がある。しかし、この方法では、ボード上におけるメモリの実装方法に依存するために、CPUチップ内蔵のプログラムメモリの場合には対応できない。
また、同様に外部スイッチからの入力信号を用いて、CPUのアドレス空間を切り替える方法があるが、切替えスイッチあるいはピンを設けなければならないので実装面積及びコストが増大するという問題がある。さらにまた、過去の製品とのピン互換の半導体デバイスを用いる場合は、この切り替え信号のためにピンに割り当てることが困難な場合がある。
別な方法として、電源の立ち上げ時に、EEPROM内の識別データをCPUが読み出して、処理を切り替える方法がある(例えば、特許文献1参照)。
さらにその方法に類似する方法として、開発支援プログラムによる製品プログラムのダウンロード時に、CPUがアクセス可能な不揮発性メモリ中の所定の記憶領域に所定のフラグを設定し、ブート時にCPUによりそのフラグを読み出してそのフラグの状態に応じて、処理フローを切り替える方法がある。その方法によれば、例えば、製品プログラムがダウンロードされていれば、そのフラグが設定されるので、製品プログラムが単独で実行され、製品プログラムがダウンロードされていなければそのフラグは設定されていないので、開発支援プログラムが起動される。
さらにその方法に類似する方法として、開発支援プログラムによる製品プログラムのダウンロード時に、CPUがアクセス可能な不揮発性メモリ中の所定の記憶領域に所定のフラグを設定し、ブート時にCPUによりそのフラグを読み出してそのフラグの状態に応じて、処理フローを切り替える方法がある。その方法によれば、例えば、製品プログラムがダウンロードされていれば、そのフラグが設定されるので、製品プログラムが単独で実行され、製品プログラムがダウンロードされていなければそのフラグは設定されていないので、開発支援プログラムが起動される。
しかし、この方法の場合、ダウンロードして起動した製品プログラムにエラーがあると、開発支援プログラムを起動することが出来なくなってしまう場合がある。その結果、不揮発メモリが半導体チップ内蔵の場合には、不揮発メモリのフラグを、開発支援プログラムを用いて未ダウンロードを示す値に書き換えることが不可能となり、半導体装置そのものがそのまま使用できなくなるという問題があった。
また、CPUが内蔵するUART等の通信機能を利用し、外部からの通信入力の有無によってソフトウェアにより処理を切り替える方法もある。この通信機構を用いた方法では、通信用デバイスの初期化及び送受信プロトコル制御が必要となるため、切り替え判定のために大きな遅延が発生する場合がある。さらにまた、外部及び開発用ボードに通信を行うためのアプリケーションプログラムが必要なだけでなく、その通信性能によって処理の切り替え判定に必要な時間が、開発環境で一定にならないという問題もある。
JTAG機能を持つ半導体チップでは、このJTAGを利用したICEによりデバッグプログラム等と製品プログラムそのものを書き換えることも出来る。しかし、セキュリティが重視されるJTAG機能非搭載の半導体チップでは、ICEによるプログラム書き換えも不可能であるため、複数のプログラムを切り替える有効な手段がなかった。
そこで、本発明は、外部スイッチ等を新たに設ける必要がなく、簡単に起動すべきプログラムを切り替えることができるプロセッサを提供することを目的とする。
本発明の一態様によれば、リセット信号の入力の状態に応じて、複数のプログラムの中から起動すべきプログラムを選択するプログラム選択部と、前記プログラム選択部の選択結果を記憶する記憶部と、前記選択結果に基づいて、前記起動するプログラムを切り替える処理を行うCPUとを有するプロセッサを提供することができる。
本発明によれば、外部スイッチ等を新たに設ける必要がなく、簡単に起動すべきプログラムを切り替えることができるプロセッサを実現することができる。
以下、図面を参照して本発明の実施の形態を説明する。
(第1の実施の形態)
まず図1に基づき、本発明の第1の実施の形態に係わる開発用のボードの構成を説明する。図1は、本実施の形態に係わるプログラム開発時のボードの構成を示すブロック図である。
(第1の実施の形態)
まず図1に基づき、本発明の第1の実施の形態に係わる開発用のボードの構成を説明する。図1は、本実施の形態に係わるプログラム開発時のボードの構成を示すブロック図である。
図1において、開発用のボード1上には、プロセッサである中央処理装置(CPU)2と、不揮発性メモリであるフラッシュメモリ3と、メインメモリとしてのRAM4とが搭載されている。CPU2、フラッシュメモリ3及びRAM4のそれぞれは、半導体装置すなわち半導体チップである。さらに、ボード1上には、CPU2のコールドスタートを実行するための操作部としてのリセットボタン5も搭載されている。リセットボタン5は、CPU2のリセット信号入力ポートに接続され、ユーザによって操作される。
フラッシュメモリ3には、開発対象プログラムである製品プログラムPPと、デバッグ等のための開発支援プログラムSPとが記憶されている。プログラム開発者であるユーザは、ボード1上で、製品プログラムPPのみを起動させたり、あるいは開発支援プログラムSPを起動させて、その開発支援プログラムSPを利用して製品プログラムPPをシリアル通信等の通信機能によるダウンロードして実行させることによって、製品プログラムPPのデバッグ等を行うことができる。
また、ユーザは、リセットボタン5を押下すると、CPU2へのリセット信号RSTを供給することができる。CPU2は、リセット信号RSTが入力されると、初期状態からブート処理を行い、コールドスタート処理を実行する。
CPU2は、CPUコア11と、プログラム選択部12と、レジスタ13とを含む。CPUコア11は、さらに、リセット信号RSTを受け付けるためのリセット信号受付部14を含む。CPUコア11は、実行すべきプログラムをフラッシュメモリ3から読み出し、RAM4を利用しながら、実行する。CPUコア11は、リセット信号RSTを受け付けると、初期状態に戻り、実行すべきプログラムを起動する。
リセット信号RSTは、プログラム選択部12にも入力される。プログラム選択部12は、入力されたリセット信号RSTの入力の状態に応じて、複数のプログラムの中から起動すべきプログラムを選択し、その選択結果データDRをレジスタ13に書き込む回路である。その選択方法については、後述する。
レジスタ13は、プログラム選択部12の選択結果データDRを記憶する記憶部であり、リセット信号RSTによるリセット時にも、データが消去されないように構成されている。通常は、リセット時、電源は落ちないので、CPU2がリセットされても、レジスタ13に記憶されたデータは保持される。よって、レジスタ13は、CPU2のリセットがあった場合に、選択結果データDRあるいは値を保持する回路である。レジスタ13のデータあるいは値は、外部入力信号GSとして、外部信号入力端子TからCPUコア11に入力される。
なお、レジスタ13は、リセット時にデータが消去されなければ通常のレジスタでもよいが、不揮発性のメモリでもよい。
なお、レジスタ13は、リセット時にデータが消去されなければ通常のレジスタでもよいが、不揮発性のメモリでもよい。
フラッシュメモリ3には、複数のプログラムが、ここでは製品プログラムPPと開発支援プログラムSPの少なくとも2つが記憶され、ユーザは、後述するように、リセットボタン5に対して所定の操作をすることによって、記憶された複数のプログラムの中からどのプログラムを実行させるかを選択することができる。なお、説明を簡単にするために、以下は、製品プログラムPPと開発支援プログラムSPの2つのプログラムのいずれか一方を選択する場合で説明する。
図2は、ボード1のハードウェアとソフトウェアの構成を示す図である。ボード1は、ハードウェア(H/W)として、基板上のCPU2,フラッシュメモリ3、RAM4及びリセットボタン5を含み、ソフトウェアとして、フラッシュメモリ3に記憶された製品プログラムPPと開発支援プログラムSPを含む。製品プログラムPPと開発支援プログラムSPは、ハードウェアからの指示に基づいて、実行される。
図1に示すボード1を利用して、ユーザは、開発支援プログラムSPをボード1上で起動させて、その開発支援プログラムSPから製品プログラムPPを実行させることによって、開発支援プログラムSPのデバッグ等の機能を利用して、製品プログラムPPをデバッグすることができる。また、ユーザは、有る程度まで完成した製品プログラムPPの全体あるいは一部を単独でボード1上で起動させて、その機能、性能等を評価することもできる。
本実施の形態では、ユーザは、リセットボタン5に対する所定の操作により、製品プログラムPPと開発支援プログラムSPのいずれのプログラムを起動させるかを選択することができる。すなわち、ユーザは、そのリセットボタン5を操作して、起動時における、ボード1上で実行される処理のフローを切り替えることができる。
図3は、プログラム選択部12の構成例を示すブロック図である。図3に示すように、プログラム選択回路12は、1ビットのカウンタ21を含む。リセット信号RSTは、カウンタ21に入力される。CPU2へのリセット信号RSTが入力されると、そのリセット信号RSTをトリガ信号として、カウンタ21のカウンタ値が更新される。初期値として、カウンタ21は「0」であるが、その後リセット信号RSTが入力されると「1」になり、さらにリセット信号RSTが入力されると「0」になるように、プログラム選択回路12は、リセット信号RSTの入力の状態あるいは入力パターンに応じて、起動すべきプログラムを選択する回路である。
従って、カウンタ21は、リセット信号RSTが入力される度に、そのカウンタ値が「0」と「1」の間で交互に変化する。カウンタ21の値は、選択結果データDRとして出力されて、レジスタ13に保持され、CPUコア11への外部信号入力GSとして供給される。
CPUコア11は、レジスタ13の値に基づいて、起動すべきプログラムを切り替える処理を行う。すなわちプログラム選択部12のカウンタ値の更新後、CPUの処理コア11は、ブートプログラムにおけるフロー選択処理を実行し、この更新されたカウンタ値に対応する外部信号入力GSに基づいて、実行すべきプログラムが選択される。CPUコア11は、外部信号入力GSが「0」(すなわちLOW)のときは、開発支援プログラムSPを起動し、外部信号入力GSが「1」(すなわちHIGH)のときは、製品プログラムPPを起動するように構成されている。
よって、リセットボタン5が操作される度に、レジスタ13の値は「0」と「1」の間で交互に変更されるので、ユーザは、リセットボタン5を操作するだけで、起動させたいプログラムを簡単に交互に選択することができる。
上述したプロセッサによれば、リセット信号RSTを用いて起動するプログラムを切り替えるため、ディップスイッチ等の外部デバイスの追加が不要である。また、通信デバイスによる制御側アプリケーションプログラムとのやりとりも必要なく、通信デバイスによる通信時間が発生しないために、処理の起動速度も通信アプリケーションに依存することがなくなるという利点もある。さらに、複数のプログラムの搭載されるメモリがプロセッサの半導体装置内に混載される場合、あるいはリセットベクタに置かれるべきブートプログラムが複数存在した場合も、プログラム選択のための新たな入力ピンを用意せず済むため、コスト削減にも繋がる。
以上のように、本実施の形態のプロセッサによれば、外部スイッチ等を新たに設ける必要がなく、リセットボタンの操作だけで、起動時のプログラムを簡単に切り替えることができるプロセッサを提供することができる。
上述した実施の形態では、レジスタ13の値は、外部入力信号GSとしてCPUコア11に供給されているが、本実施の変形例として、図1において点線で示すように、レジスタ13の内容が、データ(DATA)として、CPUコア11によって読み出されるようにしてもよい。CPUコア11は、読み出したレジスタ値、すなわち「1」か「0」、に応じて、起動時のプログラムを切り替える、すなわち処理フローを制御するようにしてもよい。
また、レジスタ13の内容をデータ(DATA)として読み出す場合の他の例として、プログラム選択部のカウンタを複数ビットのカウンタを利用するようにしてもよい。図4は、レジスタ13の内容をデータとして読み出す場合のプログラム選択部の構成例を示すブロック図である。
リセット信号RSTは複数ビットのカウンタ21Aに入力される。カウンタ21Aの値は、リセット信号RSTが入力される度にインクリメントし、所定のカウント値になると初期値に戻る。カウンタ21Aの値は、剰余回路22へ入力される。剰余回路22は、所定の値で入力されたカウント値を除算して余り値を出力する剰余演算を行う回路である。剰余回路22の出力は、データ(DATA)としてレジスタ13に設定されて、CPUコア11により読み出される。CPUコア11は、入力された値に応じて、複数のプログラムのいずれを起動させるかが予め決められている。
例えば、カウンタ21Aが4ビットのカウンタで、カウンタ値が剰余回路22により「4」で除算されるとすれば、剰余回路22の出力は、「0」から「3」の値を取り得る。よって、剰余回路22の出力に応じて、4つのパターンの処理フローが選択可能となり、ユーザは、所定の周期で処理フローを切り替えるようにすることができる。
以上のようにリセット操作の回数を保持し、ソフトウェアによる判定処理によって処理を分岐させてもよいが、ハードウェアのみで分岐処理を実現すれば、プロセッサに実装されるソフトウェアに分岐に関連する処理を導入する必要が無くなるため、製品プログラムPPを開発終了後に、必要の無くなったソフトウェアによる判定処理が残らないことになり、そのまま最適な製品用プログラムとして使用できる利点がある。
以上のようにリセット操作の回数を保持し、ソフトウェアによる判定処理によって処理を分岐させてもよいが、ハードウェアのみで分岐処理を実現すれば、プロセッサに実装されるソフトウェアに分岐に関連する処理を導入する必要が無くなるため、製品プログラムPPを開発終了後に、必要の無くなったソフトウェアによる判定処理が残らないことになり、そのまま最適な製品用プログラムとして使用できる利点がある。
よって、図4の構成によれば、ユーザは、リセットボタン5の押下回数あるいは入力パターンに応じて、処理フローを周期的に変更することができる。
なお、上述した本実施の形態及び変形例では、CPU2とフラッシュメモリ3とRAM4のそれぞれは、ボード1上に搭載されているが、1つの半導体装置であるプロセッサが、CPU2とフラッシュメモリ3とRAM4とを内蔵するような構成でもよい。
なお、上述した本実施の形態及び変形例では、CPU2とフラッシュメモリ3とRAM4のそれぞれは、ボード1上に搭載されているが、1つの半導体装置であるプロセッサが、CPU2とフラッシュメモリ3とRAM4とを内蔵するような構成でもよい。
また、上述した本実施の形態及び変形例では、製品プログラムPPと開発支援プログラムSP等の複数のプログラムを記憶しているのはフラッシュメモリ3であるが、プログラムの変更が必要ないのであれば、通常のROMを用いてもよい。
(第2の実施の形態)
第2の実施の形態のプロセッサは、第1の実施の形態とは、プログラム選択部の回路構成だけが異なる。第2の実施の形態では、プログラム選択部は、複数ビットのカウンタと、カウンタ値が設定された値と一致するか否かを比較する比較回路とを有する。
第2の実施の形態のプロセッサは、第1の実施の形態とは、プログラム選択部の回路構成だけが異なる。第2の実施の形態では、プログラム選択部は、複数ビットのカウンタと、カウンタ値が設定された値と一致するか否かを比較する比較回路とを有する。
図5は、本発明の第2の実施の形態に係るプログラム選択部の構成例を示すブロック図である。なお、図5に示すプログラム選択部以外の構成は、第1の実施の形態と同じであるので、同じ構成についての説明は省略する。
プログラム選択部12Bは、複数ビットのカウンタ21Bと、設定値が設定される設定回路23と、カウンタ21Bのカウンタ値と設定回路23に設定された設定値とを比較し、比較結果を出力する比較回路24とを含む。カウンタ21Bには、リセット信号RSTが入力される。カウンタ21Bのカウント値は、比較回路24に入力される。設定回路23に設定された設定値は、比較回路24に入力される。比較回路24は、例えば、カウンタ値が設定値と一致すると、レジスタ13に「1」を書き込み、不一致のときは、レジスタ13に「0」を書き込むように、選択結果データDRを出力する。
例えば、カウンタ21Bは2ビットのカウンタであり、設定回路23には、設定値として「0」が設定されているとする。その場合、2ビットのカウンタ21Bのカウンタ値は、リセット信号RSTが入力される度に、1つずつインクリメントして周期的に変更しながら、更新されていき、4回のリセット信号毎にカウンタ値が「0」になる。その結果、比較回路24は、4回に1回の割合で一致信号を出力する。一致信号が出力される度に、レジスタ13には「1」が書き込まれる。
よって、リセットボタン5が操作される度に、カウンタ21Bのカウンタ値は更新され、比較回路24は、所定の周期でCPUコア11に対して外部入力信号GSを出力するので、ユーザは、リセットボタン5を操作するだけで、起動させたいプログラムを簡単に周期的に選択することができる。すなわち、ユーザは、リセットボタンを押下した回数に応じて、すなわちリセット信号RSTの入力回数に応じて、開発支援プログラムSPと製品プログラムPPの処理の分岐を簡単に行うことができる。
なお、CPUコア11における起動プログラムの切り替えの方法としては、各プログラムに対応したリセットベクタが記憶される記憶領域を切り替えるようにしてもよいし、リセットベクタのアドレス値そのものを切り替えるようにしてもよい。CPUコア11は、入力された外部入力信号GSあるいは読み出したデータ(DATA)に応じて、記憶領域の切り替え、あるいはリセットベクタの値の切り替えを行う。言い換えると、外部入力信号GSあるいはデータ(DATA)は、リセットベクタのアドレス空間の切り替え信号として利用される。
図6は、各プログラムに対応したリセットベクタが記憶される記憶領域の切り替えを説明するための図である。図6に示すように、リセットベクタのアドレス空間を、製品プログラムPP用と、開発支援プログラムSP用とに分け、レジスタ13の出力に応じて、いずれかが選択される。選択結果が「0」ならば、開発支援プログラムSP用の処理RV1がリセットベクタに配置され、選択結果が「1」ならば、製品プログラムPP用の処理RV2がリセットベクタに配置される。
図7は、リセットベクタの値そのものの書き換えを説明するための図である。図7に示すように、リセットベクタが記憶される領域のデータを、製品プログラムPPが選択されるときは、製品プログラムPPが起動されるように、開発支援プログラムSPが選択されるとは、開発支援プログラムSPが起動されるように、リセットベクタのアドレス値をRV(PP)かRV(SP)に切り替える。
なお、図6及び図7で説明したリセットベクタに関する処理方法は、上述した第1の実施の形態でも、利用可能であり、かつ以下に説明する第3の実施の形態以降の実施の形態においても適用可能である。
以上のように、本実施の形態のプロセッサによれば、外部スイッチ等を新たに設ける必要がなく、リセットボタンの操作だけで、リセット信号の入力回数に応じて、起動時のプログラムを簡単に切り替えることができるプロセッサを提供することができる。
なお、本実施の形態においても、レジスタ13の値は、CPUコア11によってデータとして読み出されるようにしてもよい。ただし、リセットベクタの配置またはアドレスの変更に関わる形態では、レジスタ13の値は外部信号GSとしてCPU11に入力される。
(第3の実施の形態)
第3の実施の形態のプロセッサは、第1の実施の形態とは、プログラム選択部の回路構成だけが異なる。第3の実施の形態では、プログラム選択部は、タイマと、判定回路とを有する。
図8は、本発明の第3の実施の形態に係るプログラム選択部の構成例を示すブロック図である。なお、図8に示すプログラム選択部12C以外の構成は、第1の実施の形態と同じであるので、同じ構成についての説明は省略する。
第3の実施の形態のプロセッサは、第1の実施の形態とは、プログラム選択部の回路構成だけが異なる。第3の実施の形態では、プログラム選択部は、タイマと、判定回路とを有する。
図8は、本発明の第3の実施の形態に係るプログラム選択部の構成例を示すブロック図である。なお、図8に示すプログラム選択部12C以外の構成は、第1の実施の形態と同じであるので、同じ構成についての説明は省略する。
プログラム選択部12Cは、所定の時間を計時し、その所定の時間が経過すると出力を変更するタイマ25と、2回目のリセット信号RSTの入力がその所定の時間内に入力されたか、あるいは所定の時間を超えてから入力されたかを判定して、その判定結果に応じた出力信号を生成して、起動すべきプログラムの選択結果として、レジスタ13へ出力する判定回路26とを含む。判定回路26には、リセット信号RSTも入力されている。
図9は、図8のプログラム選択部12Cの動作を説明するための図である。計時回路としてのタイマ25には、予め設定された所定の時間TS1が設定されている。タイマ25は、リセット信号が入力されると、内部のカウント値をクリアして、計時を開始して「0」(LOW)の出力を開始し、所定の時間TS1が経過すると、「1」(HIGH)を出力するように構成されている。なお、タイマ25の内部のカウント値は、リセット信号RSTが入力された時点でのカウント値を、判定回路にラッチするために必要な時間が経過した後にクリアされる。
判定回路26は、2回目のリセット信号RSTの入力が、タイマ25の出力がLOWのときにあったか、あるいはHIGHのときにあったかを判定し、その判定結果に応じた出力信号をレジスタ13に出力する。
例えば、図9において、時刻t0で1回目のリセット信号RSTが入力された後に、時刻t0からの所定の時間TS1内のある時刻t1に、2回目のリセット信号RSTが入力されると、判定回路26は、「1」の出力信号をレジスタ13に出力する。また、時刻t0で1回目のリセット信号RSTが入力された後に、時刻t0から所定の時間TS1を経過した後のある時刻t2に、2回目のリセット信号RSTが入力されると、判定回路26は、「0」の出力信号をレジスタ13に出力する。
レジスタ13に書き込まれた値が、CPUコア11へ供給されてから後の処理は、上述した第1及び第2の実施の形態と同じである。
本実施の形態は、リセット信号の入力時間間隔を利用している。所定の時間内における再リセットの有無によって起動時のプログラムの切り替えが行われる。製品プログラムPPの開発時に、開発者であるユーザが、デバッグをするために開発支援プログラムSPを実行させる、あるいは修正した製品プログラムPPを実行させるために、リセットボタン5を再操作することは容易である。すなわち、ユーザは、リセット信号入力の間隔を、常に同じ操作感で指示できるので、効率の良い、起動プログラムの切り替え操作を実現することができる。
以上のように、プログラム選択部12Cは、リセットボタン5を押下してから、所定の時間内にリセットボタン5の押下が再びあったか否かによって、レジスタ13への出力信号を変化させる。よって、ユーザは、そのリセットボタン5の操作時間間隔によって、開発支援プログラムSPと製品プログラムPPの処理の分岐を簡単に行うことができる。例えば、電源投入時は、製品用プログラムPPが動作するようにしておけば、ユーザが所定の時間内でのリセット操作を行うことにより、開発支援プログラムSPに切り替えることができる。
(第4の実施の形態)
第4の実施の形態のプロセッサは、第1の実施の形態とは、プログラム選択部の回路構成だけが異なる。第4の実施の形態では、プログラム選択部は、計時回路と、設定回路と、判定回路とを有する。
図10は、本発明の第4の実施の形態に係るプログラム選択部の構成例を示すブロック図である。なお、図10に示すプログラム選択部12D以外の構成は、第1の実施の形態と同じであるので、同じ構成についての説明は省略する。
第4の実施の形態のプロセッサは、第1の実施の形態とは、プログラム選択部の回路構成だけが異なる。第4の実施の形態では、プログラム選択部は、計時回路と、設定回路と、判定回路とを有する。
図10は、本発明の第4の実施の形態に係るプログラム選択部の構成例を示すブロック図である。なお、図10に示すプログラム選択部12D以外の構成は、第1の実施の形態と同じであるので、同じ構成についての説明は省略する。
プログラム選択部12Dは、リセットボタン5が押下されている間だけ計時する計時回路27と、所定の時間が設定される設定回路28と、リセットボタン5の押下されていた時間(すなわちリセット信号RSTの継続入力時間)が所定の時間以下であるか否かを判定する判定回路29とを含む。本実施の形態では、リセット信号RSTのアサート時間が、所定の時間以上か否かによって、処理の分岐を実現する。
図11と図12は、図10のプログラム選択部12Dの動作を説明するための図である。ここでは、所定の時間TS2は、メインクロックであるクロック信号CLKのクロック数により設定されている。図11と図12の場合、所定の時間TS2は、設定回路28においてクロック数が4と設定されている。
リセットボタン5が押下されている間、リセット信号RSTは、「1」(すなわちHIGH)である。リセットボタン5が押下されていた時間が、すなわちリセット信号RSTが「1」になってから「0」になるまでの時間が、所定の時間TS2以上であったか否かが、判定回路29により判定される。図11と図12は、リセット信号RSTが入力されてから選択されたプログラムの実行を開始するまでに、判定クロック数が「4」(すなわち4クロックカウント)の遅延を必要とする例である。判定回路29は、リセット信号RSTの入力開始から判定クロック数の間、毎クロックのアップエッジごとにリセット信号RSTの状態を取得する。そして、判定回路29は、判定クロック数経過時TTの判定値PRGSELを、選択結果データDRとしてレジスタ13に出力する。
図11は、4クロックカウントの間、リセット信号RSTがアサートされており、時点TTにおいてリセット信号RSTが「1」である場合を示す。言い換えると、図11は、リセット信号RSTの継続入力時間が4クロックカウントの所定の時間TS2以上である場合である。図12は、4クロックカウント目の前に「0」(LOW)に戻っており、時点TTにおいてリセット信号RSTが「0」である場合を示す。言い換えると、図12は、リセット信号RSTの継続入力時間が4クロックカウントの所定の時間TS2以内である場合である。従って、判定回路29は、その状態に応じて、レジスタ13に選択結果データDRを出力する。
レジスタ13に書き込まれた値が、CPUコア11へ供給されてから後の処理は、上述した第1から第3の実施の形態と同じである。
従って、ユーザは、リセットボタン5の継続押下げ時間(すなわちリセット信号RSTのアサート時間)を変更することにより、処理を分岐することが出来る。なお、ここでは判定クロック数が4クロックである場合で説明したが、実際にはボード1の実装やリセットボタン5の構造に合わせて、人間であるユーザの操作に必要な十分多いクロック数が判定クロック数として設定される。
本実施の形態も、第3の実施の形態と同様に、ユーザは、リセットボタン5の操作を複数回行うことなく、リセット信号RSTの入力時間を、すなわちリセットボタン5の押下時間を、常に同じ操作感で指示できるので、効率の良い、起動プログラムの切り替え操作を実現することができる。
よって、プログラム選択部12Dは、リセットボタン5の押下継続時間が所定の時間より長いか否かによって、レジスタ13への出力信号を変化させる。よって、ユーザは、そのリセットボタン5の押下継続時間によって、開発支援プログラムSPと製品プログラムPPの処理の分岐を簡単に行うことができる。
以上のように、上述した各実施の形態のプロセッサによれば、外部スイッチ等を新たに設ける必要がなく、リセットボタンの操作により、簡単に起動すべきプログラムの切り替えを簡単に行うことができる。
さらに、製品プログラムPPが完成した場合に、フラッシュメモリあるいはROMに製品プログラムPPと開発支援プログラムSPが記憶されたまま、半導体製品となる場合がある。製品プログラムPPのソフトウェア開発が終了し開発支援プログラムSPの使用をする必要がなくなっても、リセット信号RSTの入力により処理が分岐可能なままであると、製品が実使用の状態で、必要としない処理分岐の発生の虞がある。
さらに、製品プログラムPPが完成した場合に、フラッシュメモリあるいはROMに製品プログラムPPと開発支援プログラムSPが記憶されたまま、半導体製品となる場合がある。製品プログラムPPのソフトウェア開発が終了し開発支援プログラムSPの使用をする必要がなくなっても、リセット信号RSTの入力により処理が分岐可能なままであると、製品が実使用の状態で、必要としない処理分岐の発生の虞がある。
そこで、製品としての実使用中に開発支援プログラムSPが起動されることが無いようにするために、以下のような手段を付加しておくことは、必須ではないが、安全のために重要である。
図13は、開発支援プログラムSPが起動されることが無いようにするための回路構成を示す図である。図13に示すように、プログラム選択部とレジスタ13の間に、フューズ31と、インバータ32と、OR回路33を含む、開発支援プログラムSPの起動を禁止する禁止部としての禁止回路34が設けられる。
フューズ31は、一端が所定の電源に接続され、他端がインバータ32に接続されている。フューズ31は、フューズブローによりフューズを物理的に切断することによって、インバータ32への出力をLOWに固定することができる。OR回路33には、インバータ32の出力と、プログラム選択回路12、12A、12B、12C、12Dの出力が入力されている。OR回路33は、2つの入力のいずれかが「1」(HIGH)であれば、「1」(HIGH)をレジスタ13へ出力する。
フューズ31は、製品プログラムPPの開発中は切断されておらず繋がっているので、インバータ32の出力は、「0」(LOW)である。よって、OR回路33の出力は、プログラム選択回路の出力に応じた値となる。
開発支援プログラムSPの使用をする必要がなくなると、フューズ31は、フューズブローにより切断される。その結果、インバータ32の出力は、すなわちOR回路33の2つの入力の一方は、「1」(HIGH)となる。よって、OR回路33の出力は、常に「1」(HIGH)に固定されるので、リセット信号RSTの入力によって、開発支援プログラムSPが起動されることはない。禁止回路34は、プログラム選択部の選択結果に基づく、起動すべきプログラムへの切り替えを禁止する禁止部である。言い換えると、禁止回路34は、開発支援プログラム実行禁止回路ということができる。
フューズの切断という物理的な変更による永久的な処理分岐の禁止のため、ブート処理プログラム自体の書き換え等の必要がない。この方法は、プログラムの内容書き換えによる分岐停止が不可能な半導体装置の内蔵マスクROMのプログラムの場合に、特に有効である。
以上のように、図13の禁止回路34を付加することによって、開発終了後には必要の無くなる開発支援プログラム実行の禁止が可能になり、製品プログラムPPのセキュリティを向上することが出来る。
さらに、図13において点線で示すように、フューズ31とインバータ32間のP点の電位を検出する電位検出回路35を設け、そのP点の電位が「0」(LOW)であるときには、開発支援プログラムSPのメモリ領域からの命令フェッチを禁止するソフトウェア処理部が実行されるようにしてもよい。すなわち、ソフトウェア処理部は、フィーズ31の切断に応じて、起動が禁止されるプログラムのメモリ領域からの命令フェッチを禁止する。開発支援プログラムSPのメモリ領域からの命令フェッチを禁止する方法は、悪意のある者による開発支援プログラムSPの起動に対して、有効である。
以上の例は、フューズを利用した、開発終了後に必要の無い開発支援プログラムの実行禁止方法であるが、フューズを用いないで、プログラムの追加により、開発支援プログラムの実行禁止を行うようにしてもよい。
例えば、リセット後に実行されるブート処理の前に実行されるプログラムが追加される。追加されたプログラムは、ブート処理の前に実行され、半導体チップ内の所定のレジスタに所定の値を設定することにより、処理の分岐を禁止する。
この方法によれば、開発が終了した最終的な製品用プログラムの冒頭に、このような追加のプログラムを追加することにより、フロー分岐の停止を行うことが可能となる。この方法は、上述したフューズを用いた方法に比べて、フューズブロー等の機械的な処理が省略されるので、半導体装置の製造コストの削減を図りながら、製品用プログラムのセキュリティ向上を図ることができる。ここで、リセット直後に実行される分岐禁止の命令列を比較検出し、この分岐禁止命令が実行される間は分岐の発生を禁止する機能をCPUに組み込むようにしてもよい。この方法によると、リセット直後の分岐禁止判定中の誤分岐の発生を防止することができる。
以上のように、上述した本発明の各実施の形態によれば、外部スイッチ等を新たに設ける必要がなく、簡単に起動すべきプログラムを切り替えることができるプロセッサを提供することができる。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
1 ボード、2 CPU、3 フラッシュメモリ、4 RAM、5 リセットボタン、11 CPUコア、12、12A、12B、12C、12D プログラム選択部、13 レジスタ、14 リセット信号受付部、21、21A、21B、22 剰余回路、23、28 設定回路、24 比較回路、25 タイマ、26、29 判定回路、27 計時回路、31 フューズ、32 インバータ、33 OR回路、34 禁止回路
Claims (5)
- リセット信号の入力の状態に応じて、複数のプログラムの中から起動すべきプログラムを選択するプログラム選択部と、
前記プログラム選択部の選択結果を記憶する記憶部と、
前記選択結果に基づいて、前記起動するプログラムを切り替える処理を行うCPUと、
を有することを特徴とするプロセッサ。 - 前記選択結果は、前記記憶部から前記CPUへ、外部入力信号として供給されることを特徴とする請求項1に記載のプロセッサ。
- 前記CPUは、前記記憶部に記憶された前記選択結果を読み出すことによって、前記選択結果を得ることを特徴とする請求項1に記載にプロセッサ。
- 前記入力の状態は、前記リセット信号の入力回数、入力時間間隔あるいは継続入力時間であることを特徴とする請求項1から3のいずれか1つに記載にプロセッサ。
- 前記選択結果に基づく前記起動すべきプログラムへの切り替えを禁止する禁止部を有することを特徴とする請求項1から4のいずれか1つに記載のプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009150184A JP2011008432A (ja) | 2009-06-24 | 2009-06-24 | プロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009150184A JP2011008432A (ja) | 2009-06-24 | 2009-06-24 | プロセッサ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011008432A true JP2011008432A (ja) | 2011-01-13 |
Family
ID=43565036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009150184A Pending JP2011008432A (ja) | 2009-06-24 | 2009-06-24 | プロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011008432A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012198878A (ja) * | 2011-03-21 | 2012-10-18 | Denso Corp | 半導体不揮発性メモリ装置のリフレッシュ操作開始方法およびシステム |
JP2020086516A (ja) * | 2018-11-15 | 2020-06-04 | キヤノン株式会社 | 情報処理装置、情報処理装置の制御方法、及び、プログラム |
-
2009
- 2009-06-24 JP JP2009150184A patent/JP2011008432A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012198878A (ja) * | 2011-03-21 | 2012-10-18 | Denso Corp | 半導体不揮発性メモリ装置のリフレッシュ操作開始方法およびシステム |
JP2020086516A (ja) * | 2018-11-15 | 2020-06-04 | キヤノン株式会社 | 情報処理装置、情報処理装置の制御方法、及び、プログラム |
JP7210238B2 (ja) | 2018-11-15 | 2023-01-23 | キヤノン株式会社 | 情報処理装置、情報処理装置の制御方法、及び、プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101283431B1 (ko) | 마이크로 컴퓨터 | |
US8065512B2 (en) | Embedded memory protection | |
US6915416B2 (en) | Apparatus and method for microcontroller debugging | |
US7958339B2 (en) | Instruction execution control device and instruction execution control method | |
US6668339B1 (en) | Microprocessor having a debug interruption function | |
US8176281B2 (en) | Controlling access to an embedded memory of a microcontroller | |
US7971040B2 (en) | Method and device for saving and restoring a set of registers of a microprocessor in an interruptible manner | |
KR20150130353A (ko) | 핫스왑가능 프로그램 메모리의 운영체제 커널 업데이트 동안의 전환 시간 최소화 | |
US7721083B2 (en) | CPU runaway determination circuit and CPU runaway determination method | |
JPH07325711A (ja) | Romプログラム変更装置 | |
CN105190551B (zh) | 具有存储器区域交换机制的双引导系统 | |
JP2007206933A (ja) | 情報処理装置、情報処理装置におけるブートローダ生成方法およびプログラム転送方法 | |
US20020184566A1 (en) | Register pointer trap | |
JP2011008432A (ja) | プロセッサ | |
US6981109B2 (en) | Digital signal processor system having programmable random access memory that executes processing during downloading of a program | |
US6948086B2 (en) | Computer system | |
JP2004503865A (ja) | 選択的分岐予測を有するプロセッサ | |
KR20060049675A (ko) | 부팅 시스템, 부팅 방법, 및 이 부팅 방법을 이용한 데이터처리 장치 | |
JP2002508562A (ja) | ジッターのない命令の実行 | |
US20110022823A1 (en) | Information processing system and information processing method thereof | |
KR100505700B1 (ko) | 엠시유를 이용하여 다양한 목표 시스템을 검증하는 재탑재에뮬레이션 장치, 이를 구비한 마이크로 컴퓨터 개발시스템, 및 그 방법 | |
CN110858254A (zh) | 一种安全芯片 | |
CN111694697A (zh) | 半导体装置及调试系统 | |
JP2000010772A (ja) | マイクロコンピュータ | |
JP2017086418A (ja) | 乱数発生器を内部に備えた遊技機用プロセッサ、遊技機用プロセッサ装置、遊技機用基板及び遊技機 |