JP2005327175A - インサーキットエミュレータ装置およびスタックアクセス異常検知方法 - Google Patents

インサーキットエミュレータ装置およびスタックアクセス異常検知方法 Download PDF

Info

Publication number
JP2005327175A
JP2005327175A JP2004146229A JP2004146229A JP2005327175A JP 2005327175 A JP2005327175 A JP 2005327175A JP 2004146229 A JP2004146229 A JP 2004146229A JP 2004146229 A JP2004146229 A JP 2004146229A JP 2005327175 A JP2005327175 A JP 2005327175A
Authority
JP
Japan
Prior art keywords
stack
access
mcu
program
map
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
JP2004146229A
Other languages
English (en)
Inventor
Haruya Hosaka
晴哉 保坂
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.)
Toshiba Corp
Kioxia Systems Co Ltd
Original Assignee
Toshiba Corp
Toshiba Memory Systems Co Ltd
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 Toshiba Corp, Toshiba Memory Systems Co Ltd filed Critical Toshiba Corp
Priority to JP2004146229A priority Critical patent/JP2005327175A/ja
Publication of JP2005327175A publication Critical patent/JP2005327175A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

【課題】 複数のスタック領域が設定されても、スタックアクセス異常を検知できるインサーキットエミュレータ装置を提供する。
【解決手段】 インサーキットエミュレータ装置1の制御用MCU3は、エミュレーションメモリ4上に設定されたスタック領域へのアクセス位置を示すスタックポインタ値を評価用MCU2から取得し、スタックマップ記憶部5に記憶されたスタックマップデータに記された複数のスタックのアドレス範囲のいずれかの範囲内にあるかどうかを判定し、いずれの範囲内にもない場合はスタックアクセス異常とのステータス情報を出力する。
【選択図】 図1

Description

本発明は、マイクロコンピュータシステムの開発におけるデバッグに使用されるインサーキットエミュレータ装置およびスタックアクセス異常検知方法に関する。
マイクロコンピュータシステムの開発に際しては、ハードウェアあるいはソフトウェアのデバッグのためにインサーキットエミュレータ装置が使用される。
インサーキットエミュレータ装置にはエミュレーションメモリが搭載されており、開発対象のシステムを動かすためのプログラムの保存、プログラムの処理に必要な固定的データの保存、プログラム実行途中の処理結果の一時的保存などに用いられる。また、エミュレーションメモリの領域の一部が、プログラムの実行中に使用されるスタックとして用いられる。
このようなインサーキットエミュレータ装置を使用したデバッグの項目の一つに、上述のスタックに対する不正なアクセスの検出がある。これは、予め設定された領域以外にスタックアクセスが発生しないかどうかを検証するものである。
従来、このような不正なスタックアクセスを検出する方法として、スタックの上限アドレスと下限アドレスをそれぞれレジスタに設定しておき、これらのレジスタの値とアドレスバスのアドレス値を比較し、レジスタに設定された範囲外へのアクセスがあった場合には不正アクセスと判定する方法が提案されていた(例えば、特許文献1参照。)。
しかし、この従来の方法では検証可能なアドレス範囲が一つしか設定できない。したがって、リアルタイムOSなど複数のタスクを処理するOSでMCUを制御する場合、それぞれのタスクがそれぞれスタックを有するため、すなわち複数のスタック領域がエミュレーションメモリ上に設定されるため、スタック領域以外へのスタックアクセスを検知するためのレジスタの設定ができないという問題があった。
特開2002−268916号公報 (第5ページ、図1)
そこで、本発明の目的は、エミュレーションメモリ上に複数のスタック領域が設定されても、スタック領域以外へスタックアクセスを行ったことを検知できるインサーキットエミュレータ装置およびスタックアクセス異常検知方法を提供することにある。
本発明の一態様によれば、デバッグ対象のプログラムを実行し、前記プログラムが使用するスタックへのアクセスを評価する評価用MCUと、前記評価用MCUの動作を制御する制御用MCUと、前記プログラムが使用する複数のスタック領域が設定されるエミュレーションメモリと、前記複数のスタック領域のそれぞれのアドレス範囲を記載したスタックマップデータを記憶するスタックマップ記憶手段とを具備し、デバッグ実行途中でプログラムが停止したときに、前記制御用MCUが、前記評価MCUから読み取ったスタックポインタ値と、前記スタックマップ記憶手段から読み出した前記スタックマップデータとを比較し、前記スタックポインタ値が前記スタックマップ記憶手段に記憶されている前記複数のスタック領域のアドレス範囲のいずれかに含まれているときはスタックアクセス正常と判定し、前記スタックポインタ値が前記スタックマップ記憶手段に記憶されている前記複数のスタック領域のアドレス範囲のいずれにも含まれていないときはスタックアクセス異常と判定して前記判定の結果をステータス情報として出力することを特徴とするインサーキットエミュレータ装置が提供される。
また、本発明の一態様によれば、デバッグ対象のプログラムが使用するスタックへのアクセスを評価する評価用MCUからスタックポインタ値を取得するステップと、前記プログラムが使用する複数のスタック領域のそれぞれのアドレス範囲を記載したスタックマップデータを記憶したスタックマップ記憶手段から前記スタックマップデータを取得するステップと、前記スタックポインタ値と前記スタックマップデータとを比較するステップと、前記比較結果に基づき、前記スタックポインタ値が前記スタックマップ記憶手段に記憶されている前記複数のスタック領域のアドレス範囲のいずれにも含まれていないときはスタックアクセス異常と判定するステップとを具備し、プログラムのデバッグ時にスタックへのアクセスの異常を検知することを特徴とするスタックアクセス異常検知方法が提供される。
本発明によれば、エミュレーションメモリ上に複数のスタック領域が分散して存在していても、スタック領域以外へのスタックアクセスを検知できるので、ユーザはスタックへのアクセスが異常であることをデバッグ中に知ることができる。
以下、本発明の実施例を図面を参照して説明する。
図1は、本発明の実施例に係るインサーキットエミュレータ装置の基本構成を示すブロック図である。
インサーキットエミュレータ装置1は、システムの開発対象のマイクロコンピュータ同一の機能を有してデバッグ対象のプログラムを実行する評価用MCU2と、この評価用MCU2の動作を制御する制御用MCU3と、デバッグ対象のプログラムが使用する複数のスタック領域が設定されるエミュレーションメモリ4と、上述の複数のスタック領域のそれぞれのアドレス範囲を記載したスタックマップデータを記憶するスタックマップ記憶部5とを有する。
このインサーキットエミュレータ装置1は、外部のホストコンピュータ10からのデバッグ用コマンドの入力を受けてデバッグを実行し、デバッグの状況をステータス情報としてホストコンピュータ10へ出力する。
次に、このインサーキットエミュレータ装置1に含まれるブロックの機能について説明する。
評価用MCU2は、エミュレーションメモリ4へメモリのリード・ライトを制御するコントロール信号とアドレス信号を送ってデバッグ対象のプログラムが使用するスタックへのアクセスを管理し、エミュレーションメモリ4との間でデータ信号の送受を行う。また、評価用MCU2は、スタックの最上段のアドレスを保持するスタックポインタレジスタを有し、スタック位置を管理する。
制御用MCU3は、評価用MCU2への制御データの入出力を制御するとともに、スタックマップ記憶部5へのスタックマップデータの書き込み、およびスタックマップ記憶部5からのスタックマップデータの読み出しを制御する。
なお、制御用MCU3がスタックマップ記憶部5へ書き込むスタックマップデータは、ユーザがホストコンピュータ10へ入力し、ホストコンピュータ10から制御用MCU3へ送出されたものである。
また、制御用MCU3は、評価用MCU2のスタックポインタレジスタを呼び出して、その時点のスタックポインタ値を取得する。
さらに、制御用MCU3は、評価用MCU2から取得したスタックポインタ値とスタックマップ記憶部5から読み出したスタックマップデータの値を比較して、スタックポインタ値がスタックマップデータに記載されたスタック領域内に含まれるかどうかの判定を行う。そして、この判定結果をステータス情報としてホストコンピュータ10へ出力する。
図2は、本実施例で用いるスタックマップのデータ構成の例を示す図である。
図2(a)は、スタックマップのフォーマットの例を示す図である。図2(a)において、マップ番号は、それぞれのタスクが動作するときに使用するスタック領域に1つずつ付けた番号であり、このマップ番号により使用するスタック領域が区分される。
このマップ番号ごとにスタックの先頭アドレスのアドレス値とスタックサイズの大きさのデータが記載され、これにより、エミュレーションメモリ4上に設定されたそれぞれのスタックの領域を知ることができるようになっている。
図2(b)は、このフォーマットによるスタックマップの記述例である。この例は、3つのタスクを持つプログラムが使用するスタック領域を示したものであり、マップ番号1〜3の3つのスタック領域が用いられる例である。
これより、マップ番号1のスタックの領域は、アドレス0x0100〜0x013fの範囲であり、マップ番号2のスタックの領域は、アドレス0x0400〜0x043fの範囲であり、マップ番号3のスタックの領域は、アドレス0x4100〜0x417fの範囲であることがわかる。
次に、本実施例のインサーキットエミュレータ装置1を用いて、スタックアクセスの異常を検知する方法を図3のフロー図を用いて説明する。
なお、ここでは、スタックマップ記憶部5へ、図2(b)に示したスタックマップデータが予め書き込まれているものとして説明を行う。
まず、デバッグ途中でプログラムが停止状態にあるときに、制御用MCU3は評価用MCU2からスタックポインタ(SP)値を取得する(ステップS1)。
次いで、制御用MCU3はスタックマップ記憶部5からスタックマップデータを取得する(ステップS2)。
次に、制御用MCU3は、評価用MCU2から取得したSP値とスタックマップ記憶部5から取得したスタックマップデータとを比較し、上記SP値が図2(b)に示した3つのマップ番号のアドレス範囲のいずれかの範囲内にあるかどうかを判定する(ステップS3)。
このとき、例えば、評価用MCU2から取得したSP値が0x041fであった場合、このSP値はマップ番号2で指定されたアドレス範囲0x0400〜0x043fの中にあると判定される(YES)。そこで、制御用MCU3は、「スタックアクセス正常」とのステータス情報をホストコンピュータ10へ出力する(ステップS4)。
一方、評価用MCU2から取得したSP値が0x4000であった場合、このSP値はマップ番号1〜3で指定されたアドレス範囲のいずれの中にも存在しないと判定される(NO)。そこで、制御用MCU3は、「スタックアクセス異常」とのステータス情報をホストコンピュータ10へ出力し(ステップS5)、一連の動作を終了する。
このような本実施例のインサーキットエミュレータ装置によれば、スタックアクセスが正常か異常かを示すステータス情報がホストコンピュータに送出されるので、これを用いて、ホストコンピュータはスタックアクセスの異常を、例えばモニタ装置に表示することができる。これにより、ユーザは、デバッグ中にスタックアクセス異常が発生したことを知ることができる。
本発明の実施例に係るインサーキットエミュレータ装置の基本構成を示すブロック図。 本発明の実施例に係るインサーキットエミュレータ装置のスタックマップの例を示す図。 本発明の実施例に係るスタックアクセス異常検知方法の処理の流れを示すフロー図。
符号の説明
1 インサーキットエミュレータ装置
2 評価用MPU
3 制御用MPU
4 エミュレーションメモリ
5 スタックマップ記憶部
10 ホストコンピュータ

Claims (4)

  1. デバッグ対象のプログラムを実行し、前記プログラムが使用するスタックへのアクセスを評価する評価用MCUと、
    前記評価用MCUの動作を制御する制御用MCUと、
    前記プログラムが使用する複数のスタック領域が設定されるエミュレーションメモリと、
    前記複数のスタック領域のそれぞれのアドレス範囲を記載したスタックマップデータを記憶するスタックマップ記憶手段と
    を具備し、
    デバッグ実行途中でプログラムが停止したときに、前記制御用MCUが、前記評価MCUから読み取ったスタックポインタ値と、前記スタックマップ記憶手段から読み出した前記スタックマップデータとを比較し、前記スタックポインタ値が前記スタックマップ記憶手段に記憶されている前記複数のスタック領域のアドレス範囲のいずれかに含まれているときはスタックアクセス正常と判定し、前記スタックポインタ値が前記スタックマップ記憶手段に記憶されている前記複数のスタック領域のアドレス範囲のいずれにも含まれていないときはスタックアクセス異常と判定して前記判定の結果をステータス情報として出力することを特徴とするインサーキットエミュレータ装置。
  2. 前記スタックマップが、ユーザの入力データに基づいて前記スタックマップ記憶手段に書き込まれることを特徴とする請求項1に記載のインサーキットエミュレータ装置。
  3. デバッグ対象のプログラムが使用するスタックへのアクセスを評価する評価用MCUからスタックポインタ値を取得するステップと、
    前記プログラムが使用する複数のスタック領域のそれぞれのアドレス範囲を記載したスタックマップデータを記憶したスタックマップ記憶手段から前記スタックマップデータを取得するステップと、
    前記スタックポインタ値と前記スタックマップデータとを比較するステップと、
    前記比較結果に基づき、前記スタックポインタ値が前記スタックマップ記憶手段に記憶されている前記複数のスタック領域のアドレス範囲のいずれにも含まれていないときはスタックアクセス異常と判定するステップと
    を具備し、
    プログラムのデバッグ時にスタックへのアクセスの異常を検知することを特徴とするスタックアクセス異常検知方法。
  4. 前記スタックマップが、ユーザの入力データに基づいて前記スタックマップ記憶手段に書き込まれることを特徴とする請求項3に記載のスタックアクセス異常検知方法。
JP2004146229A 2004-05-17 2004-05-17 インサーキットエミュレータ装置およびスタックアクセス異常検知方法 Pending JP2005327175A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004146229A JP2005327175A (ja) 2004-05-17 2004-05-17 インサーキットエミュレータ装置およびスタックアクセス異常検知方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004146229A JP2005327175A (ja) 2004-05-17 2004-05-17 インサーキットエミュレータ装置およびスタックアクセス異常検知方法

Publications (1)

Publication Number Publication Date
JP2005327175A true JP2005327175A (ja) 2005-11-24

Family

ID=35473479

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004146229A Pending JP2005327175A (ja) 2004-05-17 2004-05-17 インサーキットエミュレータ装置およびスタックアクセス異常検知方法

Country Status (1)

Country Link
JP (1) JP2005327175A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018092486A (ja) * 2016-12-06 2018-06-14 日立オートモティブシステムズ株式会社 自動車用電子制御装置及びdmaコントローラの異常検知方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018092486A (ja) * 2016-12-06 2018-06-14 日立オートモティブシステムズ株式会社 自動車用電子制御装置及びdmaコントローラの異常検知方法

Similar Documents

Publication Publication Date Title
US7565579B2 (en) Post (power on self test) debug system and method
JP2008009721A (ja) 評価システム及びその評価方法
US8245085B2 (en) Dump output control apparatus and dump output control method
JP2007257441A (ja) プロセッサおよびプロセッサ制御方法
EP0098172B1 (en) Register control processing system
US20050060690A1 (en) Microprocessor system with software emulation processed by auxiliary hardware
JPS60159951A (ja) 情報処理装置におけるトレ−ス方式
JP2005327175A (ja) インサーキットエミュレータ装置およびスタックアクセス異常検知方法
JP2009223714A (ja) 演算回路及び演算回路の異常解析方法
JP2005353020A (ja) コンピュータプログラムのシミュレーション方式
CN110476153A (zh) 访问指令sram的方法和电子设备
JP2003281076A (ja) Dmaコントローラの不正アクセス検出装置、不正アクセス検出方法およびそのプログラム
US20070265821A1 (en) Simulation apparatus, simulation method, and computer-readable recording medium storing simulation program
JP2967741B2 (ja) Cpu互換性テスト装置
JP5447841B2 (ja) 情報処理装置、デバッグ情報取得方法、およびデバッグ情報取得プログラム
JP2000353109A (ja) エミュレータ及びエミュレーションシステム
CN117312137A (zh) 一种面向中断驱动程序的原子性违反缺陷检测方法及装置
JP2008242592A (ja) メモリ監視回路、情報処理装置、及びメモリ監視方法
JPS6158049A (ja) エラ−検出方式
JP2007328775A (ja) シミュレーション装置、シミュレーション方法及びシミュレーションプログラム
JPS6227421B2 (ja)
JPS626341A (ja) 情報処理装置
JP2003015907A (ja) デバッグ装置、デバッグプログラム、およびプログラム記録媒体
JPH03119436A (ja) マイクロ命令アドレストレーサ
JPH064333A (ja) ブレークポイント設定装置