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 [email protected] BTS091207 BTS0912071207-01 12
© Copyright 2024 Paperzz