JPH113272A - スタックオーバフロー検出装置 - Google Patents
スタックオーバフロー検出装置Info
- Publication number
- JPH113272A JPH113272A JP15680297A JP15680297A JPH113272A JP H113272 A JPH113272 A JP H113272A JP 15680297 A JP15680297 A JP 15680297A JP 15680297 A JP15680297 A JP 15680297A JP H113272 A JPH113272 A JP H113272A
- Authority
- JP
- Japan
- Prior art keywords
- area
- stack
- display
- led
- display state
- 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
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】
【課題】 スタックがオーバフローしたことを検出して
表示することができるスタックオーバフロー検出装置を
提供すること。 【解決手段】 RAMに設定されたスタック領域SRと
変数領域VRとの境界付近の斜線領域にLED表示用フ
ラグ領域を設定する。このLED表示用フラグ領域に対
してデータが書き込まれると、LEDを点灯させる。こ
れによりスタック領域SRがオーバフローしたことを検
出して表示することが可能となる。LEDの点灯によ
り、(a)の場合はスタック領域SRがデータで満たさ
れたことを示し、(b)の場合はデータの書き込まれて
いないスタック領域SRが残り少ないことを示し、
(c)の場合は既にスタック領域をオーバフローし、変
数領域に書き込まれていたプログラム変数等が失われた
可能性のあることを示している。
表示することができるスタックオーバフロー検出装置を
提供すること。 【解決手段】 RAMに設定されたスタック領域SRと
変数領域VRとの境界付近の斜線領域にLED表示用フ
ラグ領域を設定する。このLED表示用フラグ領域に対
してデータが書き込まれると、LEDを点灯させる。こ
れによりスタック領域SRがオーバフローしたことを検
出して表示することが可能となる。LEDの点灯によ
り、(a)の場合はスタック領域SRがデータで満たさ
れたことを示し、(b)の場合はデータの書き込まれて
いないスタック領域SRが残り少ないことを示し、
(c)の場合は既にスタック領域をオーバフローし、変
数領域に書き込まれていたプログラム変数等が失われた
可能性のあることを示している。
Description
【0001】
【発明の属する技術分野】この発明は、マイクロコンピ
ュータ(以下、「マイコン」と略称する)のメモリに割
り当てられるスタック領域に書き込まれるデータ量がス
タック領域をオーバフローすることを検出するスタック
オーバフロー検出装置に関する。
ュータ(以下、「マイコン」と略称する)のメモリに割
り当てられるスタック領域に書き込まれるデータ量がス
タック領域をオーバフローすることを検出するスタック
オーバフロー検出装置に関する。
【0002】
【従来の技術】従来より、マイコンにおいて、所定の処
理プログラムを実行する際には、メモリの記憶領域の一
部に確保されたスタック領域に対して、関数やサブルー
チンを呼び出したときの戻りアドレス等を格納するよう
に構成されている。
理プログラムを実行する際には、メモリの記憶領域の一
部に確保されたスタック領域に対して、関数やサブルー
チンを呼び出したときの戻りアドレス等を格納するよう
に構成されている。
【0003】図6は、メモリの記憶領域を示す説明図で
ある。図6において、プログラム領域PRは、マイコン
によって実行されるプログラムが格納される記憶領域で
あり、変数領域VRは、マイコンによって実行されてい
るプログラムの変数等を格納するために割り当てられて
いる記憶領域であり、スタック領域SRは、関数やサブ
ルーチンを呼び出したときの戻りアドレス等を格納する
ために割り当てられている記憶領域である。そして、ス
タック領域SRは、メモリのアドレスXから最後尾のア
ドレスFFFFまで割り当てられている。
ある。図6において、プログラム領域PRは、マイコン
によって実行されるプログラムが格納される記憶領域で
あり、変数領域VRは、マイコンによって実行されてい
るプログラムの変数等を格納するために割り当てられて
いる記憶領域であり、スタック領域SRは、関数やサブ
ルーチンを呼び出したときの戻りアドレス等を格納する
ために割り当てられている記憶領域である。そして、ス
タック領域SRは、メモリのアドレスXから最後尾のア
ドレスFFFFまで割り当てられている。
【0004】このスタック領域SRに対して、マイコン
が、実行しているプログラムに基づいて他の関数やサブ
ルーチンを呼び出す度に、その戻りアドレス等をスタッ
ク領域SRの最後尾側から順次に書き込んでいく。ま
た、マイコンが、スタック領域SRから戻りアドレス等
を読み出す際には、最後にスタック領域SRに格納した
データから順に読み出していく。
が、実行しているプログラムに基づいて他の関数やサブ
ルーチンを呼び出す度に、その戻りアドレス等をスタッ
ク領域SRの最後尾側から順次に書き込んでいく。ま
た、マイコンが、スタック領域SRから戻りアドレス等
を読み出す際には、最後にスタック領域SRに格納した
データから順に読み出していく。
【0005】このようなスタック操作において、スタッ
ク領域SRからデータが読み出される回数よりも、スタ
ック領域SRへのデータが書き込まれる回数の方が多い
場合には、スタック領域SRの使用率は次第に上昇す
る。そして、さらに書き込みが行われると、スタックの
オーバフローが起こり、アドレスXよりも先頭側の変数
領域VRやプログラム領域PRに対してデータが書き込
まれることとなる。
ク領域SRからデータが読み出される回数よりも、スタ
ック領域SRへのデータが書き込まれる回数の方が多い
場合には、スタック領域SRの使用率は次第に上昇す
る。そして、さらに書き込みが行われると、スタックの
オーバフローが起こり、アドレスXよりも先頭側の変数
領域VRやプログラム領域PRに対してデータが書き込
まれることとなる。
【0006】ところが、変数領域VRやプログラム領域
PRに対して関数やサブルーチンを呼び出したときの戻
りアドレス等を書き込むと、変数領域VRやプログラム
領域PRに格納している変数やプログラム等に対して上
書きすることとなり、変数領域VRやプログラム領域P
Rのデータを損失する。
PRに対して関数やサブルーチンを呼び出したときの戻
りアドレス等を書き込むと、変数領域VRやプログラム
領域PRに格納している変数やプログラム等に対して上
書きすることとなり、変数領域VRやプログラム領域P
Rのデータを損失する。
【0007】そして、マイコンが変数領域VRやプログ
ラム領域PRの損失したデータを読み込んで処理を行う
と、そのデータは適切なデータではないため、プログラ
ムの暴走を招くことになる。
ラム領域PRの損失したデータを読み込んで処理を行う
と、そのデータは適切なデータではないため、プログラ
ムの暴走を招くことになる。
【0008】このようなプログラムの暴走を防ぐために
は、予め十分な領域をスタック領域として設定しておけ
ば良いが、メモリの容量を増加することはコストアップ
を招くため好ましくない。従って、メモリの記憶領域の
効率的な使用が望まれている。
は、予め十分な領域をスタック領域として設定しておけ
ば良いが、メモリの容量を増加することはコストアップ
を招くため好ましくない。従って、メモリの記憶領域の
効率的な使用が望まれている。
【0009】
【発明が解決しようとする課題】マイコンのソフトウェ
ア開発の段階において、どの程度の領域がスタック領域
として適切であるのかを判断して、スタック領域を設定
する必要がある。
ア開発の段階において、どの程度の領域がスタック領域
として適切であるのかを判断して、スタック領域を設定
する必要がある。
【0010】しかし、従来においては、スタックがオー
バフローしたこと自体を知ることは困難であり、プログ
ラムが暴走するまでスタックがオーバフローしたことを
知ることが困難であった。
バフローしたこと自体を知ることは困難であり、プログ
ラムが暴走するまでスタックがオーバフローしたことを
知ることが困難であった。
【0011】従って、プログラムの暴走の原因がスタッ
クのオーバフローであることを確認するまでに、ある程
度の時間が必要となる。これにより、スタック領域の適
切化に対して時間が掛かることとなり、効率的なソフト
ウェア開発ができないという問題がある。
クのオーバフローであることを確認するまでに、ある程
度の時間が必要となる。これにより、スタック領域の適
切化に対して時間が掛かることとなり、効率的なソフト
ウェア開発ができないという問題がある。
【0012】この発明は、上記課題に鑑みてなされたも
のであって、スタックがオーバフローしたことを検出し
て表示することができるスタックオーバフロー検出装置
を提供することを目的とする。
のであって、スタックがオーバフローしたことを検出し
て表示することができるスタックオーバフロー検出装置
を提供することを目的とする。
【0013】
【課題を解決するための手段】上記目的を達成するため
に、請求項1に記載の発明は、読み出し/書き込み可能
な記憶手段(13)と、記憶手段(13)に対してアク
セスして所定の処理を実行する演算処理手段(11)
と、演算処理手段(11)によって表示状態が制御され
る表示手段(20)とを備える装置であって、記憶手段
(13)の記憶領域内に設定されたスタック領域と変数
領域との境界付近に表示状態変更領域を設けるととも
に、演算処理手段(11)が表示状態変更領域の監視を
行い、表示状態変更領域の記憶状態の変更に応答して演
算処理手段(11)が表示手段(20)の表示状態を変
更することを特徴としている。
に、請求項1に記載の発明は、読み出し/書き込み可能
な記憶手段(13)と、記憶手段(13)に対してアク
セスして所定の処理を実行する演算処理手段(11)
と、演算処理手段(11)によって表示状態が制御され
る表示手段(20)とを備える装置であって、記憶手段
(13)の記憶領域内に設定されたスタック領域と変数
領域との境界付近に表示状態変更領域を設けるととも
に、演算処理手段(11)が表示状態変更領域の監視を
行い、表示状態変更領域の記憶状態の変更に応答して演
算処理手段(11)が表示手段(20)の表示状態を変
更することを特徴としている。
【0014】請求項2に記載の発明は、請求項1に記載
の装置において、演算処理手段(11)が行う表示状態
変更領域の監視は、所定の時間ごとに定期的に行われる
ことを特徴としている。
の装置において、演算処理手段(11)が行う表示状態
変更領域の監視は、所定の時間ごとに定期的に行われる
ことを特徴としている。
【0015】請求項3に記載の発明は、請求項1または
2に記載の装置において、表示状態変更領域はスタック
領域内に設けることを特徴としている。
2に記載の装置において、表示状態変更領域はスタック
領域内に設けることを特徴としている。
【0016】請求項4に記載の発明は、請求項3に記載
の装置において、表示状態変更領域は変数領域に隣接す
る領域に設けることを特徴としている。
の装置において、表示状態変更領域は変数領域に隣接す
る領域に設けることを特徴としている。
【0017】請求項5に記載の発明は、請求項1または
2に記載の装置において、表示状態変更領域は変数領域
内に設けることを特徴としている。
2に記載の装置において、表示状態変更領域は変数領域
内に設けることを特徴としている。
【0018】
【作用】上記構成において、請求項1に記載の発明は、
表示状態変更領域についての記憶状態が変化してたこと
を視覚的に認識することができるように、表示状態変更
領域の記憶状態の変更に応答して演算処理手段(11)
が表示手段(20)の表示状態を変更する。
表示状態変更領域についての記憶状態が変化してたこと
を視覚的に認識することができるように、表示状態変更
領域の記憶状態の変更に応答して演算処理手段(11)
が表示手段(20)の表示状態を変更する。
【0019】請求項2に記載の発明は、リアルタイムに
表示手段(20)による表示を行うことができるよう
に、演算処理手段(11)が行う表示状態変更領域の監
視を定期的に行うように動作する。
表示手段(20)による表示を行うことができるよう
に、演算処理手段(11)が行う表示状態変更領域の監
視を定期的に行うように動作する。
【0020】請求項3に記載の発明は、データの書き込
まれていないスタック領域が残り少ないことを知らせる
ように、表示手段(20)による表示が行われる。
まれていないスタック領域が残り少ないことを知らせる
ように、表示手段(20)による表示が行われる。
【0021】請求項4に記載の発明によれば、スタック
領域がデータで満たされたことを知らせるように、表示
手段(20)による表示が行われる。
領域がデータで満たされたことを知らせるように、表示
手段(20)による表示が行われる。
【0022】請求項5に記載の発明によれば、既にスタ
ック領域をオーバフローし、変数領域に書き込まれてい
たプログラム変数等が失われた可能性のあることを知ら
せるように、表示手段(20)による表示が行われる。
ック領域をオーバフローし、変数領域に書き込まれてい
たプログラム変数等が失われた可能性のあることを知ら
せるように、表示手段(20)による表示が行われる。
【0023】
【発明の実施の形態】図1は、この発明の実施の形態で
あるスタックオーバフロー検出装置の構成を示す概略図
である。図1に示すように、マイコン10の内部には、
プログラムを実行して演算処理を行う演算処理部11
と、プログラム等を予め記憶させておく読み出し専用の
メモリであるROM(Read Only Memory)12と、演算
処理部11がプログラムを実行する際に一時的にデータ
を格納するメモリであるRAM(Random Access Memor
y)13と、マイコン10の外部機構とデータの受渡を
行うI/Oポート14とが設けられている。
あるスタックオーバフロー検出装置の構成を示す概略図
である。図1に示すように、マイコン10の内部には、
プログラムを実行して演算処理を行う演算処理部11
と、プログラム等を予め記憶させておく読み出し専用の
メモリであるROM(Read Only Memory)12と、演算
処理部11がプログラムを実行する際に一時的にデータ
を格納するメモリであるRAM(Random Access Memor
y)13と、マイコン10の外部機構とデータの受渡を
行うI/Oポート14とが設けられている。
【0024】また、I/Oポート14から得られる出力
のうち少なくとも1つの出力は、LED表示部20に導
かれている。このLED表示部20は複数設けられても
良い。そしてLED表示部20は、マイコン10からの
出力信号に基づいてLED(Light Emitting Diode)2
1を発光させることが可能なように構成されている。
のうち少なくとも1つの出力は、LED表示部20に導
かれている。このLED表示部20は複数設けられても
良い。そしてLED表示部20は、マイコン10からの
出力信号に基づいてLED(Light Emitting Diode)2
1を発光させることが可能なように構成されている。
【0025】そして、マイコン10やLED21は、少
なくとも1枚の基板に実装されて制御基板となる。この
制御基板は、製品として完成したときは製品全体を統括
的に制御するように機能する。そして、LED21は製
品の動作状況等を示すための表示機構として機能する。
例えば、製品が空気調和機であり、この制御基板が空気
調和機の各機構部を統括的に制御するものである場合、
LED21は当該空気調和機の動作状況に応じた点灯を
する。そして、LED表示部20が複数設けられている
場合には、その点灯パターンによって動作状況を詳細に
知ることができる。
なくとも1枚の基板に実装されて制御基板となる。この
制御基板は、製品として完成したときは製品全体を統括
的に制御するように機能する。そして、LED21は製
品の動作状況等を示すための表示機構として機能する。
例えば、製品が空気調和機であり、この制御基板が空気
調和機の各機構部を統括的に制御するものである場合、
LED21は当該空気調和機の動作状況に応じた点灯を
する。そして、LED表示部20が複数設けられている
場合には、その点灯パターンによって動作状況を詳細に
知ることができる。
【0026】このような制御基板は、マイコン10のソ
フトウェア開発の段階においても使用される。そしてこ
の実施の形態においては、ソフトウェア開発段階では、
LED21を特別にスタック領域がオーバフローしたこ
とを開発者に知らせるための表示手段として機能させ
る。
フトウェア開発の段階においても使用される。そしてこ
の実施の形態においては、ソフトウェア開発段階では、
LED21を特別にスタック領域がオーバフローしたこ
とを開発者に知らせるための表示手段として機能させ
る。
【0027】一方、マイコン10において、RAM13
の記憶領域の一部をスタック領域として予め設定してお
く。そして、RAM13の記憶領域のスタック領域とそ
れ以外の記憶領域である変数領域との境界付近にLED
表示用フラグ領域を予め設定する。そして演算処理部1
1が定期的にLED表示用フラグ領域に対してデータが
書き込まれたか否かを検出し、データが書き込まれてい
た場合にはLED表示部20に対してLED21を発光
させるような信号を出力するように構成されている。
の記憶領域の一部をスタック領域として予め設定してお
く。そして、RAM13の記憶領域のスタック領域とそ
れ以外の記憶領域である変数領域との境界付近にLED
表示用フラグ領域を予め設定する。そして演算処理部1
1が定期的にLED表示用フラグ領域に対してデータが
書き込まれたか否かを検出し、データが書き込まれてい
た場合にはLED表示部20に対してLED21を発光
させるような信号を出力するように構成されている。
【0028】図2は、この実施の形態におけるRAM1
3に設定されたスタック領域と変数領域との境界付近に
設定されたLED表示用フラグ領域を示す図である。な
お、図2においては、RAM13のアドレスXからアド
レスFFFFまでがスタック領域SRとして設定されて
おり、スタック領域SRよりも先頭側に変数領域VRが
設定されており、さらに、変数領域VRよりも先頭側に
プログラム領域PRが設定されている。そして、図2
(a)〜(c)に示す各斜線部分がLED表示用フラグ
領域である。
3に設定されたスタック領域と変数領域との境界付近に
設定されたLED表示用フラグ領域を示す図である。な
お、図2においては、RAM13のアドレスXからアド
レスFFFFまでがスタック領域SRとして設定されて
おり、スタック領域SRよりも先頭側に変数領域VRが
設定されており、さらに、変数領域VRよりも先頭側に
プログラム領域PRが設定されている。そして、図2
(a)〜(c)に示す各斜線部分がLED表示用フラグ
領域である。
【0029】まず、図2(a)では、スタック領域SR
として設定されている先頭アドレスXがLED表示用フ
ラグ領域として設定されている。そして、このLED表
示用フラグ領域に対してデータが書き込まれたときに
は、スタック領域SRの全てにデータが書き込まれた状
態となる。従って、図2(a)に示すようにLED表示
用フラグ領域を設定した場合、LED21が点灯する
と、スタック領域がデータで満たされたことが判る。
として設定されている先頭アドレスXがLED表示用フ
ラグ領域として設定されている。そして、このLED表
示用フラグ領域に対してデータが書き込まれたときに
は、スタック領域SRの全てにデータが書き込まれた状
態となる。従って、図2(a)に示すようにLED表示
用フラグ領域を設定した場合、LED21が点灯する
と、スタック領域がデータで満たされたことが判る。
【0030】次に、図2(b)では、スタック領域SR
として設定されている先頭アドレスXよりも最後尾側に
LED表示用フラグ領域が設定されている。そして、こ
のLED表示用フラグ領域に対してデータが書き込まれ
たときには、スタック領域SRの多くの領域に対してデ
ータが書き込まれた状態となり、データの書き込まれて
いないスタック領域が残り少ない状態である。従って、
図2(b)に示すようにLED表示用フラグ領域を設定
した場合、LED21が点灯すると、データの書き込ま
れていないスタック領域が残り少ないことが判る。
として設定されている先頭アドレスXよりも最後尾側に
LED表示用フラグ領域が設定されている。そして、こ
のLED表示用フラグ領域に対してデータが書き込まれ
たときには、スタック領域SRの多くの領域に対してデ
ータが書き込まれた状態となり、データの書き込まれて
いないスタック領域が残り少ない状態である。従って、
図2(b)に示すようにLED表示用フラグ領域を設定
した場合、LED21が点灯すると、データの書き込ま
れていないスタック領域が残り少ないことが判る。
【0031】さらに、図2(c)では、スタック領域S
Rとして設定されている先頭アドレスXよりも先頭側の
変数領域VRにLED表示用フラグ領域が設定されてい
る。そして、このLED表示用フラグ領域に対してデー
タが書き込まれたときには、既にスタック領域SRをオ
ーバフローした状態となる。従って、図2(c)に示す
ようにLED表示用フラグ領域を設定した場合、LED
21が点灯すると、既にスタック領域SRをオーバフロ
ーし、変数領域VRに書き込まれていたプログラム変数
等が失われた可能性のあることが判る。
Rとして設定されている先頭アドレスXよりも先頭側の
変数領域VRにLED表示用フラグ領域が設定されてい
る。そして、このLED表示用フラグ領域に対してデー
タが書き込まれたときには、既にスタック領域SRをオ
ーバフローした状態となる。従って、図2(c)に示す
ようにLED表示用フラグ領域を設定した場合、LED
21が点灯すると、既にスタック領域SRをオーバフロ
ーし、変数領域VRに書き込まれていたプログラム変数
等が失われた可能性のあることが判る。
【0032】ここで、この実施の形態のスタックオーバ
フロー検出装置は、本来製品に使用される制御基板を使
用しているため、製品の動作状況等を表示するためのL
ED表示部20を、ソフトウェア開発段階においては、
特別にスタック領域がオーバフローしたことを開発者に
知らせるための表示手段として機能させることができる
ので、ソフトウェア開発段階のためだけの表示機構を設
ける必要がなく、効率的なソフトウェア開発ができるよ
うになる。さらに、LED21を点灯させるためのプロ
グラムについても製品の動作状況等を表示するためのプ
ログラムを流用することができるので、ソフトウェア開
発段階のためだけの表示プログラムを作成する必要がな
いとともに、プログラムを記憶しておくROM12の記
憶容量も増加させる必要がなく効率的な開発を行うこと
が可能となる。
フロー検出装置は、本来製品に使用される制御基板を使
用しているため、製品の動作状況等を表示するためのL
ED表示部20を、ソフトウェア開発段階においては、
特別にスタック領域がオーバフローしたことを開発者に
知らせるための表示手段として機能させることができる
ので、ソフトウェア開発段階のためだけの表示機構を設
ける必要がなく、効率的なソフトウェア開発ができるよ
うになる。さらに、LED21を点灯させるためのプロ
グラムについても製品の動作状況等を表示するためのプ
ログラムを流用することができるので、ソフトウェア開
発段階のためだけの表示プログラムを作成する必要がな
いとともに、プログラムを記憶しておくROM12の記
憶容量も増加させる必要がなく効率的な開発を行うこと
が可能となる。
【0033】このようなマイコンの処理についてフロー
チャートを参照しつつ説明する。
チャートを参照しつつ説明する。
【0034】図3は、この実施の形態におけるマイコン
4の演算処理部11で行われる処理のフローチャートで
ある。まず、ステップS1において処理が開始されると
スタートアップ処理が行われる。このスタートアップ処
理は、マイコン10の内部のハードウェア機構(例え
ば、I/Oポート14等)の初期設定を行うための処理
である。次に、ステップS2においてデータや変数等の
初期化が行われる。初期化が終了するとステップS3に
おいて割込処理が許可される。その後演算処理部11
は、ステップS4に示す無限ループに入る。そして、ス
テップS4に示す無限ループの処理の途中に種々の割込
処理が行われる。割込処理には、処理の種類に応じて優
先レベルが設定されており、割込処理の実行中に優先レ
ベルの高い割込処理をさらに割り込ませることもある。
このように割込処理が行われる際には、その割込処理が
終了したときの戻りアドレスをスタック領域に順次格納
していく。例えば、制御基板が空気調和機についての制
御を行うためのものである場合は、上記の割込処理の中
に熱交換処理や除霜処理等の処理が含まれる。
4の演算処理部11で行われる処理のフローチャートで
ある。まず、ステップS1において処理が開始されると
スタートアップ処理が行われる。このスタートアップ処
理は、マイコン10の内部のハードウェア機構(例え
ば、I/Oポート14等)の初期設定を行うための処理
である。次に、ステップS2においてデータや変数等の
初期化が行われる。初期化が終了するとステップS3に
おいて割込処理が許可される。その後演算処理部11
は、ステップS4に示す無限ループに入る。そして、ス
テップS4に示す無限ループの処理の途中に種々の割込
処理が行われる。割込処理には、処理の種類に応じて優
先レベルが設定されており、割込処理の実行中に優先レ
ベルの高い割込処理をさらに割り込ませることもある。
このように割込処理が行われる際には、その割込処理が
終了したときの戻りアドレスをスタック領域に順次格納
していく。例えば、制御基板が空気調和機についての制
御を行うためのものである場合は、上記の割込処理の中
に熱交換処理や除霜処理等の処理が含まれる。
【0035】そして、LED21を点灯させるための処
理についても割込処理として実行される。図4は、この
実施の形態におけるLEDの点灯を確定する処理のフロ
ーチャートである。この処理は、例えば10msという
ような一定の時間間隔ごとに割込を発生させて実行され
る処理である。ステップS11では、LED表示用とし
て設定されているフラグ領域に全てについて、データが
セットされているか否かについて検出を行う。このと
き、LED表示用として設定されているフラグ領域とし
て、図2に示したLED表示用フラグ領域を追加設定し
ておくだけで、スタック領域がオーバフローする直前ま
たは直後にであることを認識することができる。そして
ステップS12では、検出したデータに基づいてLED
の点灯パターンを確定する。そしてステップS13で
は、確定したLED点灯パターンに応じて表示用変数を
所定の記憶領域(例えば、変数領域VR)にセットす
る。これでLEDの点灯を確定するための割込処理は終
了する。そしてこの処理は、10msというような一定
の時間間隔ごとに割込を発生させて実行される処理であ
るため、リアルタイムにLEDを点灯させるべきか否か
を検出することができる。
理についても割込処理として実行される。図4は、この
実施の形態におけるLEDの点灯を確定する処理のフロ
ーチャートである。この処理は、例えば10msという
ような一定の時間間隔ごとに割込を発生させて実行され
る処理である。ステップS11では、LED表示用とし
て設定されているフラグ領域に全てについて、データが
セットされているか否かについて検出を行う。このと
き、LED表示用として設定されているフラグ領域とし
て、図2に示したLED表示用フラグ領域を追加設定し
ておくだけで、スタック領域がオーバフローする直前ま
たは直後にであることを認識することができる。そして
ステップS12では、検出したデータに基づいてLED
の点灯パターンを確定する。そしてステップS13で
は、確定したLED点灯パターンに応じて表示用変数を
所定の記憶領域(例えば、変数領域VR)にセットす
る。これでLEDの点灯を確定するための割込処理は終
了する。そしてこの処理は、10msというような一定
の時間間隔ごとに割込を発生させて実行される処理であ
るため、リアルタイムにLEDを点灯させるべきか否か
を検出することができる。
【0036】図5は、この実施の形態におけるLEDを
点灯させる処理のフローチャートである。この処理につ
いても、例えば1msというような一定の時間間隔ごと
に割込を発生させて実行される処理である。ステップS
21では、図4の処理でセットされた表示用変数を読み
出す。そして、ステップS22においては、読み出した
表示用変数の示すLED点灯パターンに応じてI/Oポ
ート14よりLED21を点灯させるための出力を行
う。以上でLEDを点灯させるための割込処理は終了す
る。
点灯させる処理のフローチャートである。この処理につ
いても、例えば1msというような一定の時間間隔ごと
に割込を発生させて実行される処理である。ステップS
21では、図4の処理でセットされた表示用変数を読み
出す。そして、ステップS22においては、読み出した
表示用変数の示すLED点灯パターンに応じてI/Oポ
ート14よりLED21を点灯させるための出力を行
う。以上でLEDを点灯させるための割込処理は終了す
る。
【0037】このように図3,4,5に示したフローチ
ャートの処理は、実際の製品についても必要な処理であ
る。そして、先述のように図4に示すステップS11に
おいてデータがセットされているか否かを検出する領域
として図2に示したLED表示用フラグ領域を追加する
だけで、開発者はスタック領域がオーバフローする直前
または直後にであることを認識することができる。従っ
て、プログラムが暴走するまで待つことなくリアルタイ
ムで効率良くスタックがオーバフローしたことを認識す
ることができる。また、開発段階専用のプログログラム
を作成する必要がないため、ROM12の容量を増加さ
せる必要がないとともに、ソフトウェア開発の効率の向
上を図ることが可能となる。
ャートの処理は、実際の製品についても必要な処理であ
る。そして、先述のように図4に示すステップS11に
おいてデータがセットされているか否かを検出する領域
として図2に示したLED表示用フラグ領域を追加する
だけで、開発者はスタック領域がオーバフローする直前
または直後にであることを認識することができる。従っ
て、プログラムが暴走するまで待つことなくリアルタイ
ムで効率良くスタックがオーバフローしたことを認識す
ることができる。また、開発段階専用のプログログラム
を作成する必要がないため、ROM12の容量を増加さ
せる必要がないとともに、ソフトウェア開発の効率の向
上を図ることが可能となる。
【0038】ところで、スタックがオーバフローしたこ
とを表示するための表示手段は、LEDによる表示に限
らず、視覚的に認識することができるものであれば良い
ことは言うまでもない。
とを表示するための表示手段は、LEDによる表示に限
らず、視覚的に認識することができるものであれば良い
ことは言うまでもない。
【0039】また、RAM13に設定されたスタック領
域SRと変数領域VRとプログラム領域PRとの位置関
係は、図2に示した位置関係以外に、RAM13の先頭
アドレス側から変数領域VR、スタック領域SR、プロ
グラム領域PRと順で設定される場合もあるが、このよ
うな場合であってもスタック領域SRと変数領域VRと
の境界付近にLED表示用フラグ領域を設定しておけ
ば、スタックがオーバフローしたことを認識することが
できる。
域SRと変数領域VRとプログラム領域PRとの位置関
係は、図2に示した位置関係以外に、RAM13の先頭
アドレス側から変数領域VR、スタック領域SR、プロ
グラム領域PRと順で設定される場合もあるが、このよ
うな場合であってもスタック領域SRと変数領域VRと
の境界付近にLED表示用フラグ領域を設定しておけ
ば、スタックがオーバフローしたことを認識することが
できる。
【0040】
【発明の効果】以上説明したように、請求項1に記載の
発明によれば、記憶手段(13)の記憶領域内に設定さ
れたスタック領域と変数領域との境界付近に表示状態変
更領域を設けるとともに、演算処理手段(11)が表示
状態変更領域の監視を行い、表示状態変更領域の記憶状
態の変更に応答して演算処理手段(11)が表示手段
(20)の表示状態を変更するため、プログラムが暴走
するまで待つことなくリアルタイムで効率良くスタック
がオーバフローしたことを認識することができる。ま
た、開発段階専用のプログログラムを作成する必要がな
いため、ROMの容量を増加させる必要がないととも
に、ソフトウェア開発の効率の向上を図ることが可能と
なる。
発明によれば、記憶手段(13)の記憶領域内に設定さ
れたスタック領域と変数領域との境界付近に表示状態変
更領域を設けるとともに、演算処理手段(11)が表示
状態変更領域の監視を行い、表示状態変更領域の記憶状
態の変更に応答して演算処理手段(11)が表示手段
(20)の表示状態を変更するため、プログラムが暴走
するまで待つことなくリアルタイムで効率良くスタック
がオーバフローしたことを認識することができる。ま
た、開発段階専用のプログログラムを作成する必要がな
いため、ROMの容量を増加させる必要がないととも
に、ソフトウェア開発の効率の向上を図ることが可能と
なる。
【0041】請求項2に記載の発明によれば、演算処理
手段(11)が行う表示状態変更領域の監視は、所定の
時間ごとに定期的に行われるため、リアルタイムに表示
手段(20)による表示を行うべきか否かを検出するこ
とができる。
手段(11)が行う表示状態変更領域の監視は、所定の
時間ごとに定期的に行われるため、リアルタイムに表示
手段(20)による表示を行うべきか否かを検出するこ
とができる。
【0042】請求項3に記載の発明によれば、表示状態
変更領域はスタック領域内に設けるため、表示手段(2
0)による表示が行われると、データの書き込まれてい
ないスタック領域が残り少ないことが判る。
変更領域はスタック領域内に設けるため、表示手段(2
0)による表示が行われると、データの書き込まれてい
ないスタック領域が残り少ないことが判る。
【0043】請求項4に記載の発明によれば、表示状態
変更領域は変数領域に隣接する領域に設けるため、表示
手段(20)による表示が行われると、スタック領域が
データで満たされたことが判る。
変更領域は変数領域に隣接する領域に設けるため、表示
手段(20)による表示が行われると、スタック領域が
データで満たされたことが判る。
【0044】請求項5に記載の発明によれば、表示状態
変更領域は変数領域内に設けるため、表示手段(20)
による表示が行われると、既にスタック領域をオーバフ
ローし、変数領域に書き込まれていたプログラム変数等
が失われた可能性のあることが判る。
変更領域は変数領域内に設けるため、表示手段(20)
による表示が行われると、既にスタック領域をオーバフ
ローし、変数領域に書き込まれていたプログラム変数等
が失われた可能性のあることが判る。
【図1】この発明の実施の形態であるスタックオーバフ
ロー検出装置の構成を示す概略図である。
ロー検出装置の構成を示す概略図である。
【図2】この発明の実施の形態においてRAMに設定さ
れたスタック領域と変数領域との境界付近に設定された
LED表示用フラグ領域を示す図である。
れたスタック領域と変数領域との境界付近に設定された
LED表示用フラグ領域を示す図である。
【図3】この実施の形態におけるマイコンの演算処理部
における処理のフローチャートである。
における処理のフローチャートである。
【図4】この実施の形態におけるLEDの点灯を確定す
る処理のフローチャートである。
る処理のフローチャートである。
【図5】この実施の形態におけるLEDを点灯させる処
理のフローチャートである。
理のフローチャートである。
【図6】メモリの記憶領域を示す説明図である。
10 マイコン、11 演算処理部、12 ROM、1
3 RAM、14 I/Oポート、20 LED表示
部、21 LED、VR 変数領域、SR スタック領
域
3 RAM、14 I/Oポート、20 LED表示
部、21 LED、VR 変数領域、SR スタック領
域
Claims (5)
- 【請求項1】 読み出し/書き込み可能な記憶手段(1
3)と、 前記記憶手段(13)に対してアクセスして所定の処理
を実行する演算処理手段(11)と、 前記演算処理手段(11)によって表示状態が制御され
る表示手段(20)と、を備える装置であって、 前記記憶手段(13)の記憶領域内に設定されたスタッ
ク領域と変数領域との境界付近に表示状態変更領域を設
けるとともに、 前記演算処理手段(11)が前記表示状態変更領域の監
視を行い、前記表示状態変更領域の記憶状態の変更に応
答して前記演算処理手段(11)が前記表示手段(2
0)の表示状態を変更することを特徴とするスタックオ
ーバフロー検出装置。 - 【請求項2】 請求項1に記載の装置において、 前記演算処理手段(11)が行う前記表示状態変更領域
の監視は、所定の時間ごとに定期的に行われることを特
徴とするスタックオーバフロー検出装置。 - 【請求項3】 請求項1または2に記載の装置におい
て、 前記表示状態変更領域は前記スタック領域内に設けるこ
とを特徴とするスタックオーバフロー検出装置。 - 【請求項4】 請求項3に記載の装置において、 前記表示状態変更領域は前記変数領域に隣接する領域に
設けることを特徴とするスタックオーバフロー検出装
置。 - 【請求項5】 請求項1または2に記載の装置におい
て、 前記表示状態変更領域は前記変数領域内に設けることを
特徴とするスタックオーバフロー検出装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP15680297A JPH113272A (ja) | 1997-06-13 | 1997-06-13 | スタックオーバフロー検出装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP15680297A JPH113272A (ja) | 1997-06-13 | 1997-06-13 | スタックオーバフロー検出装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH113272A true JPH113272A (ja) | 1999-01-06 |
Family
ID=15635651
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP15680297A Pending JPH113272A (ja) | 1997-06-13 | 1997-06-13 | スタックオーバフロー検出装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH113272A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP5079326B2 (ja) * | 2004-03-26 | 2012-11-21 | 三菱電機株式会社 | エレベータ制御装置 |
| CN116627852A (zh) * | 2023-07-24 | 2023-08-22 | 苏州萨沙迈半导体有限公司 | 堆栈溢出的检测方法、装置和计算设备 |
-
1997
- 1997-06-13 JP JP15680297A patent/JPH113272A/ja active Pending
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP5079326B2 (ja) * | 2004-03-26 | 2012-11-21 | 三菱電機株式会社 | エレベータ制御装置 |
| CN116627852A (zh) * | 2023-07-24 | 2023-08-22 | 苏州萨沙迈半导体有限公司 | 堆栈溢出的检测方法、装置和计算设备 |
| CN116627852B (zh) * | 2023-07-24 | 2023-10-03 | 苏州萨沙迈半导体有限公司 | 堆栈溢出的检测方法、装置和计算设备 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0486304B1 (en) | Initialising computer systems | |
| KR900016842A (ko) | 프로그래머블 콘트롤러 | |
| JP2002175183A (ja) | 半導体集積回路 | |
| EP0622732A1 (en) | Microcomputer | |
| US5951684A (en) | Method of booting a computer system with identifying a CD-ROM disk drive of the system and a method of loading a device driver | |
| US5968159A (en) | Interrupt system with fast response time | |
| CN113849229A (zh) | 服务器开机方法、装置、电子设备及可读存储介质 | |
| CN117806924A (zh) | 一种指示装置的控制方法、装置、服务器及介质 | |
| JPH113272A (ja) | スタックオーバフロー検出装置 | |
| JP2004338883A (ja) | エレベーターの制御装置 | |
| JP2000076081A (ja) | タスクマネージャー及びプログラム記録媒体 | |
| JPH0766368B2 (ja) | ブ−トプロセツサ決定方式 | |
| JP3310481B2 (ja) | テストモード実行装置 | |
| KR960003652B1 (ko) | 버스 감시기를 이용한 불가분 싸이클 지원방법 | |
| JPH0916220A (ja) | 入出力表示装置 | |
| JPH02161523A (ja) | 常駐化モジュール修正方式 | |
| JPH08249018A (ja) | マルチプロセッサ演算装置、および該装置を有するプログラマブルコントローラ | |
| JP4408504B2 (ja) | ゲーム装置および割り当て方法 | |
| JP2880658B2 (ja) | マルチタスクプログラムの暴走検出装置 | |
| JP2005071141A (ja) | スタック管理方法及び装置並びにスタック管理プログラム | |
| JPH11272490A (ja) | 診断制御システム | |
| JPH11306040A (ja) | エミュレータのトレース装置 | |
| JP4422926B2 (ja) | 画像形成装置 | |
| JPS5815833B2 (ja) | 自動販売機の故障表示装置 | |
| US20020073260A1 (en) | Method for preventing processes between processors from conflicting in a multiprocessor based computer |