SourcePoint 7.7.1 新機能

SourcePoint 7.7.1 新機能
BTS(Brach Trace Store)トレース機能に関して
Store)トレース機能に関して
ガイロジック株式会社
2009 年 12 月
BTS091207
BTS091207207-01
SourcePoint 7.7.1 新機能
このドキュメントでは、SourcePoint 7.7.1 で新しく付加された BTS(Branch Trace Store)トレース機能の
設定方法に関して、説明します。
[動作環境]
エミュレータ: ECM-700、ECM-XDP、ECMXDP3 の何れかの製品
デバッガ:
SourcePoint 7.7.1.209, Build 209 Official
Emulator: Flash: 7.07.140.03 Boot: 1.03.00.00
目次
1)
ターゲットプロセッサが LBR 及び BTS をサポートしているかを確認する方法
3
① LBR(Last Branch Record stack)サポートの確認コマンド
② BTS(Branch Trace Store) の確認コマンド
2)
Branch Trace Store(拡張トレース:BTS)機能
4
① Trace Configuration window の設定
② BTS(Branch Trace Store)の有効化及び各設定
I.
Processor の設定
II. Data Store location の設定
3)
Trace window の表示切替機能
6
① LBR (Last Branch Record stack)の指定
② BTS (Branch Trace Store)の指定
4)
Atom での BTS Trace の注意点
8
5)
BTS Trace の Macro 操作
9
① BTS Trace を Enable にする Macro
② BTS Trace を Enable にする Macro (Atom:Silverthorne or Diamondville の場合)
③ BTS Trace を Disable にする Macro
2
SourcePoint 7.7.1 新機能
1)
ターゲットプロセッサが LBR 及び BTS をサポートしているかを確認する方法
View メニュー -> Command から Command window を開き、以下コマンドを実行してください。
① LBR(Last Branch Record stack)サポートの確認コマンド
P0>bits(cpuid_ecx(1),4,1)
00000001H
値が 00000001H のとき、LBR をサポート
し、00000000H のとき、サポートしません。
② BTS(Branch Trace Store)サポートの確認コマンド
P0>bits(cpuid_edx(1),15,1)
00000001H
値が 00000001H のとき、BTS をサポート
し、00000000H のとき、サポートしません。
詳しくは、以下をご参照ください。
Intel® 64 and IAIA-32 Architectures Software Developer’s Manual
Volume 3B: System Programming Guide, Part 2
18.6.1 CPLCPL-Qualified Last Branch Recording Mechanism
18.5.2 BTS and Related Facilities
3
SourcePoint 7.7.1 新機能
2)
Branch Trace Store(拡張トレース:
Store(拡張トレース:BTS
(拡張トレース:BTS)機能
BTS)機能
以下の手順で Branch Trace Store(BTS)トレースが行えるようになります。
(拡張トレース)
① Trace Configuration window の設定
View メニュー -> Trace で Trace window を開き、”Configure…”ボタンをクリックして、Trace
Configuration window を開いてください。
② BTS(Branch Trace Store)の有効化及び各設定
Enable BTS(Branch Trace Store)にチェックマークを入れて、BTS トレースを有効にしてください。
I.
Processor の設定
Processor:でトレースを取得するプロセッ
サコアを指定してください。BTS トレース
は、1つのプロセッサコア(P0,P1,P2,P3…の
何れか 1 つ)の情報しか取得できません。
II. Data Store location の設定
[Use processor settings を指定した場合]
ト レ ー ス バ ッ フ ァ と し て Cache As
RAM(CAR)領域を使用します。
この設定を使用する場合、UEFI コード
内に Cache As RAM(CAR)領域をトレー
スバッファとして使用するための特殊な
コードを付加して頂く必要があります。
詳細に関しましては、お手数ですがガイ
ロジック㈱までお問合せください。
4
SourcePoint 7.7.1 新機能
[Use SourcePoint settings を指定した場合]
ト レース バッ ファと して ターゲ ット の
DRAM 領域を使用するのでその領域を指
定します。
例)Base address: A00000P
Length:
1FFFFFP
BTS トレースは、ターゲットの DRAM が初期化された後でないと機能しません。し
たがって、たとえターゲットプロセッサがこれをサポートしているとしてもリセット
時に BTS が Enable になっていると SourcePoint が下記エラーを表示します。
BTS トレースに使用するターゲットの DRAM 領域は、BIOS、アプリケーション等の
コード内に配列などでご用意して頂く必要があります。また、ご用意頂いた配列のシ
ンボルは、上記 Base address:の指定にご使用頂けます。
*注:BTS
*注:BTS をイネーブルにした場合、Cache
をイネーブルにした場合、Cache あるいは、DRAM
あるいは、DRAM に対する余分なライト・サイクルが発生す
るため、リアルタイムの動作はできません。パフォーマンスは、50%
るため、リアルタイムの動作はできません。パフォーマンスは、50%ぐら
50%ぐらいになる可能性があります。
ぐらいになる可能性があります。
5
SourcePoint 7.7.1 新機能
3)
Trace window の表示切替機能
以下の手順で Trace window の表示の切替を行います。
① LBR (Last Branch Record stack)の指定
LBR トレースは、プロセッサ内のレジスタを使用するため、ターゲットプロセッサがこれをサポー
トする場合、リセット直後から機能します。
6
SourcePoint 7.7.1 新機能
② BTS (Branch Trace Store)の指定
View メニュー -> Trace -> Trace window -> “Configure…”の Trace Configuration window で
BTS(Branch Trace Store)がイネーブルにされている場合、これを指定できます。また、BTS トレ
ースは、プロセッサキャッシュあるいはターゲット DRAM を使用するため、それらが初期化され
た後でないと機能しません。
7
SourcePoint 7.7.1 新機能
4)
Atom での BTS Trace の注意点
Atom(Silverthorne、Diamondville)プロセッサで BTS Trace を Enable にした時、正常に BTS Trace データ
が取得できないことがあります。その際には、以下を行ってください。
一度 SourcePoint を終了して、SourcePoint のインストール時に作成された¥Arium¥SourcePoint-IA 下の
myproject.prj をテキストエディタで開き、以下のように“DataStoreSize=64”を[BTS]部分へ付加してセー
ブしてください。
[BTS]
BaseAddress=00A00000L
Control=SourcePoint
DataStoreSize=64
Enabled=On
Length=0001FFFF
Processor=0
TraceMode=Overwrite
上記を行った後、再度 SourcePoint を起動してください。
8
SourcePoint 7.7.1 新機能
5)
BTS Trace の Macro 操作
Macro により、BTS Trace の Enable / Disable の操作可能です。以下に例を示します。
① BTS Trace を Enable にする Macro
Trace Buffer として使用する DRAM 領域を DRAM_DS_BASE_ADDRESS、DRAM_DS_LENGTH
で定義します。メモリ・コントローラが初期化された後に以下の Macro を実行すると、0x00A00000
~0x00AFFF00 までが Trace Buffer として設定され、BTS Trace が Enable になります。
//-------------------------------------------------------------------------------// BTSenable.mac: BTS trace (DRAM) setup
//-------------------------------------------------------------------------------#define DRAM_DS_BASE_ADDRESS 0x00A00000
#define DRAM_DS_LENGTH
0x000FFF00
#define DS_OVERHEAD_AREA_SIZE 0x100
// DRAM data store base address
// DRAM data store length: 1 Mb
// data store overhead area size
define ord4 dsBase
// data store base address
define ord4 dsLength
// data store length
// create data store in DRAM
puts("** Creating data store in DRAM **¥n")
dsBase = DRAM_DS_BASE_ADDRESS;
dsLength = DRAM_DS_LENGTH;
//-------------------------------------------------------------------------------// common code for DS/BTS initialization (DRAM)
//
// See Intel 64 and IA-32 Architecture Software Developer's Guide, Volume 3b,
// Chapter 18 for more information
//-------------------------------------------------------------------------------// write DS base address MSR
IA32_DS_AREA = dsBase
// calculate BTS base address (just past overhead area)
define ord4 btsBase = dsBase + DS_OVERHEAD_AREA_SIZE
// calculate BTS entry size
define ord4 nBtmSize = (isem64t ? 24T : 12T)
// calculate number of entries in BTS
define ord4 nBtsEntries = (dsLength - DS_OVERHEAD_AREA_SIZE) / nBtmSize
9
SourcePoint 7.7.1 新機能
// calculate BTS max address (1 byte past the last entry)
define ord4 btsMax = btsBase + nBtsEntries * nBtmSize
// initialize 64-bit DS overhead area
if (nBtmSize == 24T)
{
ord8 dsBase
= btsBase
// set bts base address
ord8 (dsBase + 0x08) = btsBase
// set bts index to start of bts
ord8 (dsBase + 0x10) = btsMax
// set bts max address
ord8 (dsBase + 0x18) = btsMax + 1
// set bts interrupt threshold past max (to disable)
// initialize 32-bit DS overhead area
} else {
ord4 dsBase
= btsBase
// set bts base address
ord4 (dsBase + 0x04) = btsBase
// set bts index to start of bts
ord4 (dsBase + 0x08) = btsMax
// set bts max address
ord4 (dsBase + 0x0c) = btsMax + 1
// set bts interrupt threshold past max (to disable)
}
② BTS Trace を Enable にする Macro (Atom:Silverthorne or Diamondville の場合)
ターゲットプロセッサが Atom:Silverthorne あるいは Diamondville の場合には、以下の Macro を
ご使用ください。
//-------------------------------------------------------------------------------// BTSenableAtom.mac: BTS trace (DRAM) setup
//-------------------------------------------------------------------------------// create data store in DRAM
puts("** Creating data store in DRAM **¥n")
define ord8 dsBase = 0x100000
// data store base address
define ord8 dsLength = 0x1000
define ord8 dsOverheadAreaSize = 0x50
// data store size
// data store overhead area siz
//-------------------------------------------------------------------------------// common code for DS/BTS initialization (DRAM)
//
// See Intel 64 and IA-32 Architecture Software Developer's Guide, Volume 3b,
// Chapter 18 for more information
//-------------------------------------------------------------------------------// write DS base address MSR
IA32_DS_AREA = dsBase
10
SourcePoint 7.7.1 新機能
// calculate BTS base address (just past overhead area)
define ord8 btsBase = dsBase + dsOverheadAreaSize
// calculate BTS entry size
define ord4 nBtmSize = 0n64 //stevelan (isem64t ? 24T : 12T)
// calculate number of entries in BTS
define ord4 nBtsEntries = (dsLength - dsOverheadAreaSize) / nBtmSize
// calculate BTS max address (1 byte past the last entry)
define ord8 btsMax = btsBase + nBtsEntries * nBtmSize
// initialize 32-bit DS overhead area
ord4 dsBase
= btsBase
// set bts base address
ord4 (dsBase + 0x04) = 0x0
ord4 (dsBase + 0x08) = btsBase +8
// High word clear
// set bts index to start of bts
ord4 (dsBase + 0x0C) = 0x0
ord4 (dsBase + 0x10) = btsMax + 0x28
// High word clear
// set bts max address
ord4 (dsBase + 0x14) = 0x0
ord4 (dsBase + 0x18) = btsMax + 0x28
// High word clear
// set bts interrupt threshold past max (to disable)
ord4 (dsBase + 0x1C) = 0x0
// High word clear
③ BTS Trace を Disable にする Macro
//-------------------------------------------------------------------------------// BTSdisable.mac: BTS trace disable
//-------------------------------------------------------------------------------puts("** Disabling BTS data store **¥n")
IA32_DS_AREA = 0;
この Macro で BTS Trace を Disable にできるのは、以下のように Trace Configuration で”Use
processor settings”を選択した場合のみです。したがって、Trace Buffer として使用する DRAM 領域
を Macro で設定したときのみとなります。
11
SourcePoint 7.7.1 新機能
また、Reset 時に BTS Trace を Disable にしたい場合、Configure Macros→Event macros→Select
event:で Reset (late)を選択し、
Cmd/macro file:で上記の Macro を設定すれば、
SourcePoint から Reset
した際に必ず BTS Trace を Disable にできます。
ガイロジック株式会社
〒180-0005
東京都武蔵野市御殿山 1-6-8
ムサシヤビル 1 階
TEL 0422(26)8211
FAX 0422(26)8212
Email sales@gailogic.co.jp
BTS091207
BTS0912071207-01
12