エンベデッド システム ツール リファレンス マニュ … › support ›...

95
エンベデッド システム ツール リファレンス マニュアル UG1043 (v2014.3) 2014 10 1 本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先しま す。資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の 上、最新情報につきましては、必ず最新英語版をご参照ください。

Transcript of エンベデッド システム ツール リファレンス マニュ … › support ›...

Page 1: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

エンベデッ ド システム ツール リファレンス マニュアル

UG1043 (v2014.3) 2014 年 10 月 1 日

本資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきましては、必ず最新英語版をご参照ください。

Page 2: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 2UG1043 (v2014.3) 2014 年 10 月 1 日

改訂履歴

次の表に、 この文書の改訂履歴を示します。

日付 バージョ ン 改訂内容

2014 年 10 月 1 日 2014.3 Vivado Design Suite 2014.3。第 2 章 「GNU コンパイラ ツール」 からの管理モードの呼び出し (SVC) に関する情報を削除

その他の資料へのリ ンクをアップデート

2014 年 5 月 15 日 2014.1 Vivado Design Suite 2014.1。 この文書は初版。

Page 3: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

目次

改訂履歴 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

第 1章 : エンベデッ ド  システムとツールの概要設計プロセスの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Vivado Design Suite の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

ソフ ト ウェア開発キッ ト (SDK). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

第 2章 : GNU コンパイラ  ツール概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

コンパイラのフレームワーク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

コンパイラの使用法とオプシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

MicroBlaze コンパイラの使用法とオプシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

ARM Cortex-A9 コンパイラの使用法とオプシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

その他の注意事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

第 3章 : XMD (Xilinx Microprocessor Debugger)XMD の使用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

XMD コンソール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

XMD コマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

connect コマンドのオプシ ョ ン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

MicroBlaze プロセッサのデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

Cortex A9 プロセッサ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

XMD 内部 Tcl コマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

第 4章 : GNU デバッガー概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

ツールの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

MicroBlaze GDB のターゲッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

ARM Cortex A9 のターゲッ ト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

GDB コマンドに関する参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

第 5章 : フラッシュ  メモリのプログラム概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

サポート されるフラ ッシュ デバイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

フラ ッシュ プログラマのパフォーマンス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

フラ ッシュのプログラム設定のカスタマイズ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

付録 A : GNU ユーティ リテ ィMicroBlaze プロセッサ用の汎用ユーティ リ ティ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

MicroBlaze プロセッサ用ユーティ リ ティ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

その他のプログラムおよびファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 3UG1043 (v2014.3) 2014 年 10 月 1 日

Page 4: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

付録 B : その他のソースおよび法的通知ザイ リ ンクス リ ソース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

ソ リ ューシ ョ ン センター . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

法的通知 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 4UG1043 (v2014.3) 2014 年 10 月 1 日

Page 5: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 1章

エンベデッ ド  システムとツールの概要この章では、MicroBlaze™ エンベデッ ド プロセッサおよび Cortex A9 ARM プロセッサをベースにしたシステムを、ザイ リ ンクス Vivado® Design Suite で開発する際に使用するエンベデッ ド システム ツールと開発フローについて説明します。

Vivado Design Suite は、ザイ リ ンクス FPGA デバイスにインプリ メン トする完全エンベデッ ド プロセッサ システムを設計するためのツールです。

Vivado Design Suite は、デザインをザイ リ ンクスのプログラマブル ロジッ ク デバイスにインプリ メン トするために必要な開発システム ツールで、 Vivado には次のものが含まれています。

• Vivado IP ツール。 エンベデッ ド プロセッサ ハードウェアの開発に使用します。

• SDK (ソフ ト ウェア開発キッ ト )。 Eclipse オープン ソース フレームワークに基づく ツールで、 エンベデッ ド ソフト ウェア アプリ ケーシ ョ ンの開発に使用できます。 SDK はスタンドアロン プログラムと しても利用できます。

• プロセッサやペリ フェラルなどのエンベデッ ド プロセッサ IP コア

Vivado ソフ ト ウェア マニュアルをはじめとする資料等へのリ ンクは、 付録 B 「その他のソースおよび法的通知」 を参照してください。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 5UG1043 (v2014.3) 2014 年 10 月 1 日

Page 6: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 1 章 : エンベデッ ド  システムとツールの概要

設計プロセスの概要Vivado に含まれるツールを使用する と、図 1-1 に示すよ うに、エンベデッ ド システムの設計フローを 初から 後まで実行できます。

ハードウェア開発

ザイ リ ンクスの FPGA 技術を使用する と、 プロセッサ サブシステムのハード ウェア ロジッ クをカスタマイズできます。標準的なマイクロプロセッサ チップまたはコン ト ローラー チップでは、このよ うなカスタマイズはできません。

「ハード ウェア プラ ッ ト フォーム」 という用語は、ザイ リ ンクスの技術を使用して作成する柔軟なエンベデッ ド プロセッサ サブシステムを指します。

ハード ウェア プラ ッ ト フォームは、 プロセッサ バスに接続された 1 つまたは複数のプロセッサおよびペリ フェラルで構成されています。

ハード ウェア プラ ッ ト フォームの記述が完了したら、 これをエクスポート して SDK で使用するこ とができます。

X-Ref Target - Figure 1-1

図 1‐1 : エンベデッ ド  システム設計プロセスのフロー

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 6UG1043 (v2014.3) 2014 年 10 月 1 日

Page 7: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 1 章 : エンベデッ ド  システムとツールの概要

ソフ トウェア開発

ボード サポート パッケージ (BSP) はアプリ ケーシ ョ ンを構築するためのソフ ト ウェア ド ラ イバーおよび OS をま とめたものです (OS はオプシ ョ ン)。 作成するソフ ト ウェア イ メージには、 ザイ リ ンクス ライブラ リの うちエンベデッド デザインで使用するもののみが含まれます。 BSP で実行するアプリ ケーシ ョ ンを複数作成できます。

ソフ ト ウェア アプリ ケーシ ョ ンおよび BSP を作成する前に、ハード ウェア プラ ッ ト フォームを SDK にインポート しておく必要があ り ます。

検証

Vivado には、ハード ウェアと ソフ ト ウェア両方の検証ツールが含まれています。使用可能な検証ツールは、次のとおりです。

シミ ュレーシ ョ ンを使用したハードウェア検証

ハードウェア プラ ッ ト フォームの機能を検証するには、シ ミ ュレーシ ョ ン モデルを作成して HDL シ ミ ュレータで実行します。 システムをシ ミ ュレーシ ョ ンする と、 プロセッサはソフ ト ウェア プログラムを実行します。 シ ミ ュレーシ ョ ン モデルのタイプには、 ビヘイビアー、 構造、 またはタイ ミ ングのいずれかを選択し、 モデルを作成できます。

デバッグによるソフ トウェア検証

ソフ ト ウェア検証には、 次の方法があ り ます。

• サポート されている開発ボードにデザインを読み込み、デバッグ ツールでターゲッ ト プロセッサを制御します。

• コード実行のプロファイルを作成して、 システムのパフォーマンスを評価します。

デバイスのコンフ ィギュレーシ ョ ン

ハード ウェア プラ ッ ト フォームおよびソフ ト ウェア プラ ッ ト フォームが完成したら、 FPGA デバイス用にコンフ ィギュレーシ ョ ン ビッ ト ス ト リームを作成します。

• プロ ト タイプを作成する場合は、 ホス ト コンピューターに接続した状態で、 ビッ ト ス ト リームをエンベデッ ドプラ ッ ト フォームで実行するソフ ト ウェアと共にダウンロード します。

• プロダクシ ョ ン用の場合は、 コンフ ィギュレーシ ョ ン ビッ ト ス ト リームと ソフ ト ウェアを FPGA に接続した不揮発性メモ リに保存します。

Vivado Design Suite の概要エンベデッ ド ハード ウェア プラ ッ ト フォームは通常、 プロセッサ バスで接続された 1 つまたは複数のプロセッサ、ペリ フェラル、およびメモ リ ブロ ッ クで構成されています。 また、デバイスの外部に接続するポート もあ り ます。各プロセッサ コア (pcore またはプロセッサ IP と も呼ばれる ) には、その動作をカスタマイズするためのパラ メーターがあ り ます。これらのパラ メーターはペリ フェラルおよびメモ リのアドレス マップも定義します。IP インテグレーターではさまざまなオプシ ョ ンの機能を選択できるので、 FPGA には作成するアプリ ケーシ ョ ンに必要な機能のサブセット をインプ リ メン トするだけで済みます。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 7UG1043 (v2014.3) 2014 年 10 月 1 日

Page 8: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 1 章 : エンベデッ ド  システムとツールの概要

図 1-2 は Vivado アーキテクチャ構造の概要を示したもので、 エンベデッ ド システムを作成するため各ツールの関連性を表しています。

ソフ トウェア開発キッ ト  (SDK)SDK (ソフ ト ウェア開発キッ ト ) は、 ソフ ト ウェア アプ リ ケーシ ョ ン プロジェ ク ト の開発環境で、 Eclipse オープンソースをベースにしています。 SDK には、 次の機能があ り ます。

• Vivado から独立した形でインス トールされ、 ディ スク容量使用率が小さい

• シングルまたはマルチプロセッサ システムでのソフ ト ウェア アプリ ケーシ ョ ン開発をサポート

• Vivado で生成されるハード ウェア プラ ッ ト フォーム定義をインポート

• チーム環境でのソフ ト ウェア アプリ ケーシ ョ ン開発をサポート

• サードパーティ OS 用のボード サポート パッケージ (BSP) を作成およびコンフ ィギュレーシ ョ ン

• ハードウェアおよびソフ ト ウェアの機能をテス トするための標準サンプル ソフ ト ウェア プロジェク ト を提供

X-Ref Target - Figure 1-2

図 1‐2 : Vivado Design Suite ツールのアーキテクチャ

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 8UG1043 (v2014.3) 2014 年 10 月 1 日

Page 9: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 1 章 : エンベデッ ド  システムとツールの概要

• ソフ ト ウェア アプリ ケーシ ョ ン用リ ンカー スク リプ トの生成、 FPGA デバイスのプログラム、 パラレル フラ ッシュ メモ リのプログラムのための簡単な GUI インターフェイス

• 多機能な C/C++ コード エディ ターおよびコンパイル環境

• プロジェク ト管理機能

• アプリ ケーシ ョ ンのビルドをコンフ ィギュレーシ ョ ンし、 make ファ イル生成を自動化

• エラー ナビゲーシ ョ ン

• エンベデッ ド ターゲッ トのデバッグおよびプロファイル作成をスムーズに行う統合環境

SDK の詳細は、 SDK ヘルプ(UG782)[参照 1]を参照してください。

GNU コンパイラ  ツール

システムに含まれる各プロセッサのアプリ ケーシ ョ ン実行ファ イルをコンパイルおよびリ ンクするには、 GNU コンパイラ ツールを呼び出します。 プロセッサ別のコンパイラは次のとおりです。

• MicroBlaze プロセッサの場合は mb-gcc コンパイラ

• ARM プロセッサの場合は arm-xilinx-eabi-gcc コンパイラ

8 ページの図 1-2で説明するエンベデッ ド ツールのアーキテクチャ概要にあるよ うに、

• コンパイラはターゲッ ト プロセッサ用の C ソース ファ イルとヘッダー ファ イルまたはアセンブラ ソース ファイルを読み込みます。

• リ ンカーは、 コンパイルされたアプリ ケーシ ョ ンと選択されたライブラ リ をま とめ、 ELF フォーマッ トの実行ファイルを生成します。 リ ンカーは、 リ ンカー スク リプ ト も読み込みます。 ツールで生成されたデフォルトのもの、 またはユーザーが作成したものが読み込まれます。

GNU コンパイラ ツールおよびユーティ リ ティについては、第 2 章 「GNU コンパイラ ツール」、第 4 章 「GNU デバッガー」、 および付録 A 「GNU ユーティ リ ティ」 を参照してください。

XMD (Xilinx Microprocessor Debugger)

プログラムのデバッグは、命令セッ ト シ ミ ュレータ (ISS) を使用しソフ ト ウェアで行うか、 またはハード ウェア ビット ス ト リームが読み込まれたザイ リ ンク ス FPGA を搭載するボード上で行います。 8 ページの図 1-2にあるよ うに、XMD ユーティ リ ティはアプ リ ケーシ ョ ン実行ファイル (ELF) を読み込みます。 物理的に FPGA 上でデバッグを行う場合は、FPGA をビッ ト ス ト リームでコンフ ィギュレーシ ョ ンする際に使用するのと同じダウンロード ケーブルを使用します。 詳細は、 第 3 章 「XMD (Xilinx Microprocessor Debugger)」 を参照してください。

表 1‐1 : ソフ トウェア開発および検証ツール

GNU コンパイラ ツール 作成されたプラ ッ ト フォームに基づき、 ソフ ト ウェア アプリ ケーシ ョ ンを作成します。

XMD (Xilinx Microprocessor Debugger)

ソフ ト ウェアのダウンロードおよびデバッグに使用します。GNU デバッガーがデバイスにアクセスするためのチャネルも提供します。

GNU デバッガー シ ミ ュレーシ ョ ン モデルまたはターゲッ ト デバイスでソフ ト ウェアをデバッグするための GUI を提供します。

フラ ッシュ メモ リ プログラマー ターゲッ ト プロセッサを使用して、 オンボードの、 共通フラ ッシュ インターフェイス (CFI) に準拠したパラレル フラ ッシュ デバイスにソフ ト ウェアおよびデータをプログラムします。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 9UG1043 (v2014.3) 2014 年 10 月 1 日

Page 10: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 1 章 : エンベデッ ド  システムとツールの概要

GNU デバッガー

GNU デバッガー (GDB) は、さまざまな開発段階で MicroBlaze および Cortex A9 ARM プロセッサのシステムを 1 つのインターフェイスでデバッグおよび検証できるよ うにする、 性能および柔軟性の高いツールです。

GDB は XMD (Xilinx Microprocessor Debugger) をターゲッ トのプロセッサと通信するための基本エンジンと して使用します。 詳細は、 第 4 章 「GNU デバッガー」 を参照してください。

フラ ッシュ  メモリ  プログラマー

フラ ッシュ メモ リ プログラマーは、 汎用性に優れ、 さまざまなフラ ッシュ デバイスおよびレイアウ トに対応するよう設計されています。 第 5 章 「フラ ッシュ メモ リのプログラム」 を参照してください。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 10UG1043 (v2014.3) 2014 年 10 月 1 日

Page 11: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2章

GNU コンパイラ  ツール

概要Vivado® Design Suite には、 MicroBlaze™ プロセッサおよび Cortex A9 プロセッサ用の GNU コンパイラ コレクシ ョ ン(GCC) が含まれています。

• Vivado GNU ツールでは、 C および C++ 言語の両方がサポート されています。

• MicroBlaze 用の GNU ツールには、 mb-gcc および mb-g++ コンパイラ、 mb-as アセンブラ、 mb-ld リ ンカーが含まれています。

• Cortex A9 ARM 用のツールには、 arm-xilinx-eabi-gcc および arm-xilinx-eabi-g++ コンパイラ、 arm-xilinx-eabi-as アセンブラ、 arm-xilinx-eabi-ld リ ンカーが含まれています。

• また、 C、 数学、 GCC、 および C++ の標準ライブラ リ も含まれています。

コンパイラでは、 アセンブラ、 リ ンカー、 オブジェク ト ダンプなど、 共通バイナリ ユーティ リ テ ィ (binutils と呼ばれる ) も使用されます。 MicroBlaze および ARM 用のコンパイラ ツールでは、 バージ ョ ン 2.16 の GNU に基づく GNUbinutils が使用されます。 概念、 オプシ ョ ン、 使用法、 言語およびラ イブラ リ サポー ト の例外については、 付録 A「GNU ユーティ リ ティ」 で説明します。

コンパイラのフレームワークこのセクシ ョ ンでは、 MicroBlaze プロセッサと Cortex A9ARM プロセッサの両方のコンパイラに共通した機能について説明します。 図 2-1 は GNU ツールのフローを表しています。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 11UG1043 (v2014.3) 2014 年 10 月 1 日

Page 12: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

X-Ref Target - Figure 2-1

GNU コンパイラの名前は、MicroBlaze 用が mb-gcc、ARM 用が arm-xilinx-eabi-gcc です。GNU コンパイラはラ ッパーで、 次のプログラムを呼び出します。

• プリプロセッサ (cpp0)コンパイラによ り 初に呼び出され、 すべてのマクロをソース ファ イルおよびヘッダー ファ イルでの定義に置き換えます。

• マシンおよび言語別のコンパイラプ リプロセスされたコード、つま り第 1 段階で出力されたコードに対して実行します。言語別のコンパイラには次の 2 つがあ り ます。

° C コンパイラ (cc1)入力 C コードの 適化の大部分を担い、 アセンブ リ コードを生成します。

° C++ コンパイラ (cc1plus)入力 C++ コードの 適化の大部分を担い、 アセンブリ コードを生成します。

• アセンブラ (MicroBlaze 用の mb-as、 ARM 用の arm-xilinx-eabi-as) アセンブラ コードにはアセンブリ言語のニーモニッ クがあ り ます。アセンブラは、これらのニーモニッ クを機械語に変換します。コンパイラで生成されたラベルの一部も解決します。アセンブラはオブジェク ト ファ イルを生成し、 リ ンカーに渡します。

• リ ンカー (MicroBlaze 用の mb-ld、 ARM 用の arm-xilinx-eabi-ld) アセンブラで生成されたオブジェク ト ファ イルを リ ンク付けます。 コマンド ラ インでライブラ リが指定されている場合は、 アセンブラからの関数を リ ンクするこ とによ り、 コード内の未定義の参照の一部を解決します。

実行オプシ ョ ンは次のセクシ ョ ンで説明されています。

• 16 ページの 「よ く使用されるコンパイラ オプシ ョ ン : 早見表」

• 20 ページの 「リ ンカー オプシ ョ ン」

• 26 ページの 「MicroBlaze コンパイラ オプシ ョ ン :早見表」

• 31 ページの 「MicroBlaze リ ンカー オプシ ョ ン」

• 38 ページの 「ARM Cortex-A9 コンパイラの使用法とオプシ ョ ン」

図 2‐1 : GNU ツール フロー

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 12UG1043 (v2014.3) 2014 年 10 月 1 日

Page 13: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

注記 : この章では、 「GCC」 と表記されている場合は MicroBlaze のコンパイラである mb-gcc、 「G++」 と表記されている場合は MicroBlaze の C++ コンパイラである mb-g++ を指します。

コンパイラの使用法とオプシ ョ ン

使用法

GNU コンパイラを実行するには、 コマンド ラインに次のよ うに入力します。

<Compiler_Name> options files...

<Compiler_Name> には mb-gcc または arm-xilinx-eabi-gcc が入り ます。C++ プログラムをコンパイルするには、mb-g++または arm-xilinx-eabi-g++ コマンドを使用します。

入力ファイル

コンパイラの入力ファイルと して、 次の中から 1 つまたは複数のファイルを指定します。

• C ソース ファ イル

• C++ ソース ファ イル

• アセンブリ ファ イル

• オブジェク ト ファ イル

• リ ンカー スク リプ ト

注記 : これらのフ ァ イルの指定はオプシ ョ ンです。 入力フ ァ イルを指定しない場合は、 リ ンカー (mb-ld またはarm-xilinx-eabi-ld) のデフォルト リ ンカー スク リプ トが使用されます。

各ファイルのデフォルトの拡張子については、 表 2-1 を参照してください。 上記のファイルに加え、 コンパイラではライブラ リ ファ イルである libc.a、 libgcc.a、 libm.a、 および libxil.a が暗示的に参照されます。 これらのファ イルは、デフォルトで Vivado のインス トール ディ レク ト リにあ り ます。 G++ コンパイラを使用した場合は、 libsupc++.a および libstdc++.a も参照されます。libsupc++.a は C++ 言語サポート、libstdc++.a は C++ プラ ッ ト フォーム ライブラ リです。

出力ファイル

コンパイラでは、 次のファイルが出力と して生成されます。

• ELF ファ イル。 デフォルトの出力ファイル名は Windows の場合は 「a.exe」 です。

• アセンブリ ファ イル (-save-temps または -S オプシ ョ ンを使用した場合)

• オブジェク ト ファ イル (-save-temps または -c オプシ ョ ンを使用した場合)

• プリプロセッサ出力ファイル (-save-temps オプシ ョ ンを使用した場合、 .i または .ii ファ イル)

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 13UG1043 (v2014.3) 2014 年 10 月 1 日

Page 14: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

ファイル タイプとその拡張子

GNU コンパイラはファ イルの拡張子からファ イル タイプを判断します。 表 2-1 には、 有効な拡張子およびそれに対応するファイル タイプがま とめられています。 ファ イル タイプに応じて、 GCC ラ ッパーが適切なツールを呼び出します。

ライブラリ

表 2-2 に、 mb_gcc および arm-xilinx-eabi-gcc コンパイラで必要なライブラ リ を リ ス ト します。

ライブラ リはどちらのコンパイラでも自動的にリ ンク されます。標準ライブラ リ とは別のライブラ リ を使用する場合は、使用するライブラ リの検索パスを指定する必要があ り ます。 libxil.a は、 ド ライバーおよびライブラ リのルーチンを追加するため、 変更されています。

言語タイプ

GCC コンパイラは、C および C++ の両言語を認識し、それにあわせたコードを生成します。GCC の規則によ り、ソース ファ イルに GCC または G++ コンパイラを同様に使用するこ とが可能です。 使用するコンパイラ と ソース ファ イルの拡張子に基づいて、 入力ファイルおよび出力ファイルの言語が決ま り ます。

GCC コンパイ ラを使用する場合、 プログラムの言語は14 ページの表 2-1に示すよ うにファ イルの拡張子で決ま り ます。 ファ イル拡張子から判断して C++ ソース ファ イルである と識別された場合は、 言語は C++ に設定されます。 つま り、 C コードが CC ファイルに含まれている と、 GCC コンパイラを使用した場合でも、関数名のマングル処理が行われます。

表 2‐1 : ファイルの拡張子

拡張子 ファイル タイプ

.c C ファ イル

.C C++ ファ イル

.cxx C++ ファ イル

.cpp C++ ファ イル

.c++ C++ ファ イル

.cc C++ ファ イル

.S アセンブリ ファ イル (プリプロセッサ指示子を含む場合もある )

.s アセンブリ ファ イル (プリプロセッサ指示子は含まない)

表 2‐2 : コンパイラで使用されるライブラリ

ライブラリ 説明

libxil.a Vivado ツール用に開発されたド ライバー、ソフ ト ウェア サービス (XilMFS など)、初期化ファイルが含まれます。

libc.a strcmp、 strlen などの関数を含む標準 C ライブラ リです。

libgcc.a 浮動小数点および 64 ビッ ト演算用のエミ ュレーシ ョ ン ルーチンを含む GCC の下位ライブラリです。

libm.a cos、 sine などの関数を含む数学ライブラ リです。

libsupc++.a 例外処理、 RTTI などのルーチンを含む C++ サポート ラ イブラ リです。

libstdc++.a C++ 標準プラ ッ ト フォーム ライブラ リです。 ス ト リーム I/O、 ファ イル I/O、 文字列処理などの標準言語ク ラスが含まれます。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 14UG1043 (v2014.3) 2014 年 10 月 1 日

Page 15: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

GCC と G++ の主な違いは、G++ ではデフォルト言語がファイルの拡張子にかかわらず C++ に自動的に設定され、C++サポート ライブラ リが読み込まれる点です。 そのため、 C ファ イル (.c) に含まれる C コードを G++ でコンパイルする と、 関数名のマングル処理が行われます。

名前マングル処理は、 C++ などシンボルのオーバーロードをサポートする言語に特有の概念です。引数によって異なる処理を実行し、 異なる戻り値を返すよ う な関数を、 オーバーロード (多重定義) された関数と言います。 これをサポートするため、 C++ コンパイラではその関数名で呼び出される関数のタイプをエンコード して、同じ名前の関数に複数の定義が存在しないよ うにします。

一部のソース ファ イルに C コードが含まれ、 その他に C++ コードが含まれる混合コンパイル モードを使用する (一部のファイルのコンパイルに GCC を使用し、 その他のファイルのコンパイルに G++ を使用する ) 場合は、 名前マングル処理に注意する必要があ り ます。 C シンボルに対して名前マングル処理が行われないよ うにするには、 シンボル宣言に次の文を使用します。

#ifdef __cplusplusextern “C” {£endif

int foo();int morefoo();

#ifdef __cplusplus}£endif

これらの宣言がヘッダー ファ イルで使用されるよ うにし、 ソース ファ イルすべてに適用されるよ うにします。 これによ り、 これらのシンボルの定義および参照をコンパイルする際、 C 言語が使用されるよ うにな り ます。

注記 : Vivado のすべてのド ライバーおよびライブラ リは、すべてのヘッダー ファ イルで上記の規則に従います。 G++を使用してコンパイルする場合は、各ド ライバーおよびライブラ リに記述されているよ うに、必要なヘッダー ファ イルを含める必要があ り ます。 これによ り、 コンパイラでライブラ リ シンボルが C タイプであるこ とが確実に認識されます。

どちらのコンパイ ラでコンパイルする場合でも、 ファ イルを特定の言語に指定するには -x lang オプシ ョ ンを使用します。 このオプシ ョ ンの詳細は、 GNU のウェブ サイ トの GCC マニュアルを参照して ください。 付録 B 「その他のソースおよび法的通知」 に、 このマニュアルへのリ ンクがあ り ます。

• GCC コンパイラを使用する場合は、 libstdc++.a および libsupc++.a は自動的にはリ ンク されません。

• C++ プログラムをコンパイルする と きは、 G++ タイプのコンパイラを使用し、 必要なサポート ライブラ リがすべて自動的にリ ンク されるよ うにします。

• また、 GCC コマンドに -lstdc++ および -lsupc++ を追加するこ と も可能です。

それぞれの言語に応じてコンパイルを起動する方法は、 GNU のオンライン マニュアルを参照してください。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 15UG1043 (v2014.3) 2014 年 10 月 1 日

Page 16: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

よ く使用されるコンパイラ  オプシ ョ ン  : 早見表

MicroBlaze および ARM の両方のコンパイラで共通のコンパイ ラ オプシ ョ ンが次の表にわかりやすく ま とめられています。

注記 : これらのオプシ ョ ンでは、 大文字と小文字が区別されます。

オプシ ョ ン名をク リ ッ クする と、 そのオプシ ョ ンの説明にジャンプします。

一般的なオプシ ョ ン

-E

プリプロセスのみを実行し、 コンパイル、 アセンブリ、 リ ンクは実行しません。 プリプロセスの結果は、 標準の出力デバイスに表示されます。

-S

コンパイルのみを実行し、 アセンブ リ、 リ ンクは実行しません。 .s ファ イルを生成します。

-c

コンパイルおよびアセンブリのみを実行し、 リ ンクは実行しません。 .o ファ イルを生成します。

-g

出力ファイルに DWARF2 ベースのデバッグ情報を追加します。 このデバッグ情報は、 GNU デバッガー (mb-gdb または arm-xilinx-eabi-gdb) で使用されます。 デバッガーでは、 ソース レベルまたはアセンブ リ レベルでデバッグを実行できます。 このオプシ ョ ンは、 入力が C または C++ ソース ファ イルである場合にのみデバッグ情報を追加します。

-gstabs

ソース レベルのアセンブリ ファ イル (.S) およびアセンブリ ファ イル シンボルに STABS ベースのデバッグ情報を追加します。 これはアセンブラ オプシ ョ ンで、 GNU アセンブラ (mb-as または arm-xilinx-eabi-as) に直接渡されます。 アセンブ リ ファ イルがコンパイラ (mb-gcc または arm-xilinx-eabi-gcc) を使用してコンパイルされている場合は、-Wa, を前に付けてください。

一般的なオプシ ョ ン ライブラリ検索オプシ ョ ン

「-E」

「-S」

「-c」

「-g」

「-gstabs」

「-On」

「-v」

「-save-temps」

「-o filename」

「-Wp,option」

「-Wa,option」

「-Wl,option」

「-help」

「-B directory」

「-L directory」

「-I directory」

「-l library」

「-l libraryname」

「-L Lib Directory」

ヘッダー ファイル検索オプシ ョ ン 

「-I Directory Name」

リンカー オプシ ョ ン 

「-defsym _STACK_SIZE=value」

「-defsym _HEAP_SIZE=value」

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 16UG1043 (v2014.3) 2014 年 10 月 1 日

Page 17: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

-On

GNU コンパイラの 適化レベルを指定します。 次の表にある 適化レベルは、 C および C++ ソース ファ イルにのみ適用されます。

注記 : 適化レベルを 1 以上にする と、 コードの構成が変わり ます。 コードのデバッグ中は、 適化レベルを 0 にするこ とをお勧めします。 適化したプログラムを GDB でデバッグする と、 結果が不一致のよ うに見える場合があ ります。

-v

コンパイラおよびコンパイルに関連するすべてのツールを詳細モードで実行します。 このオプシ ョ ンを使用する と、ツールで使用されたオプシ ョ ンの詳細が得られるので、 各ツールのデフォルト オプシ ョ ンを見つけやすくな り ます。

-save-temps

コンパイル中に生成された中間ファイルを保存します。 次のファイルが保存されます。

• プリプロセッサ出力 (C コードでは input_file_name.i、 C++ では input_file_name.ii)

• アセンブリ フォーマッ トのコンパイラ (cc1) 出力 (input_file_name.s)

• ELF フォーマッ トのアセンブラ出力 (input_file_name.s)

デフォルトでは、 コンパイルの内容全体が a.out に保存されます。

-o filename

コンパイルの出力ファイルは、 デフォルトでは a.out という ELF ファ イルです。 このファイル名は、 -o オプシ ョ ンを使用する と変更できます。 出力ファイルは ELF フォーマッ トで生成されます。

-Wp,option

-Wa,option

-Wl,option

コンパイラ (mb-gcc または arm-xilinx-eabi-gcc) はラ ッパー ファ イルで、プ リプロセッサ、 コンパイラ (cc1)、 アセンブラ、 リ ンカーなどを呼び出します。 これらのツールは、 コンパイラを介してま とめて、 または個別に実行できます。

表 2‐3 :最適化レベル

n [Optimization] フ ィールド

0 適化は実行されません。

1 中レベルの 適化が実行されます。

2 完全な 適化を実行します。

3 完全な 適化を実行します。 サブプログラムをインライン化します。

S サイズを小さ くするよ う 適化します。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 17UG1043 (v2014.3) 2014 年 10 月 1 日

Page 18: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

これらのツールで必要なオプシ ョ ンであっても、 上位のコンパイラでは不要なものもあ り ます。 こ う したオプシ ョンは、 次の表で示すよ うに指定します。

-help

GNU コンパイラで使用可能なオプシ ョ ンに関する情報を表示します。 GCC のマニュアルも参照してください。

-B directory

C のランタイムのライブラ リ検索パスに directory を加えます。

-L directory

ライブラ リ検索パスに directory を加えます。

-I directory

ヘッダー検索パスに directory を加えます。

-l library

未定義のシンボルを library で検索します。

注記 : このコマンド ライン オプシ ョ ンで指定したライブラ リ名に、 lib という接頭辞が追加されます。

ライブラリ検索オプシ ョ ン

-l libraryname

デフォルトでは、 libc、 libm、 libxil などの標準ライブラ リのみが検索されます。カスタム ライブラ リ も作成できます。このオプシ ョ ンを使用してそのカスタム ラ イブラ リ を指定できます。 このオプシ ョ ンで指定したライブラ リ名に libという接頭辞が追加されます。

コマンド ラ インで指定するオプシ ョ ンの順序には決ま りがあ り、 特に -l オプシ ョ ンでは重要です。 このオプシ ョ ンは、 ソース ファ イルの後に使用してください。

たとえば、 libproject.a という カスタム ライブラ リ を作成している場合は、次のコマンドを使用する と このライブラ リに含まれる関数を使用できます。

Compiler Source_Files -L${LIBDIR} -l project

表 2‐4 : ツール別オプシ ョ ンの指定方法

オプシ ョ ン ツール 例

-Wp,option プリプロセッサ mb-gcc -Wp,-D -Wp, MYDEFINE ...プリプロセッサで -D MYDEFINE オプシ ョ ンを使用して、シンボル MYDEFINE が定義されるよ う指定します。

-Wa,option アセンブラ mb-as -Wa, ...

MicroBlaze プロセッサをターゲッ トにするこ とをアセンブラに知らせます。

-Wl,option リ ンカー mb-gcc -Wl,-M ...リ ンカーで -M オプシ ョ ンを使用して、 マップ ファ イルが生成されるよ う指定します。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 18UG1043 (v2014.3) 2014 年 10 月 1 日

Page 19: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

注意 : -l オプシ ョ ンをソース ファ イルの前に使用する と、ソース ファ イルから呼び出される関数をコンパイラは検索できません。 これは、 コンパイラでの検索は一方向にのみ行われ、 使用可能なライブラ リの リ ス トで検索は行われないからです。

-L Lib Directory

ライブラ リ を検索するディ レク ト リ を指定します。デフォルトのライブラ リが検索パス と して設定されており、標準ライブラ リはこ こから検索されますが、 -L オプシ ョ ンを指定する と、 コンパイラの検索パスにライブラ リ を検索するディ レク ト リ を追加できます。

ヘッダー ファイル検索オプシ ョ ン

-I Directory Name

ヘッダー ファ イルを標準パスで検索する前に、 /<dir_name> で指定したディレク ト リで検索するよ う指定します。

デフォルトの検索パス

コンパイラ (mb-gcc および arm-xilinx-eabi-gcc) は、特定のパスからライブラ リおよびヘッダー ファ イルを検索します。プラ ッ ト フォーム別の検索パスを、 次に示します。

ライブラリ検索順序

ライブラ リは、 次の順に検索されます。

1. -L オプシ ョ ンで指定されたディ レク ト リ

2. -B オプシ ョ ンで指定されたディ レク ト リ

3. コンパイラーでは、 次のライブラ リが検索されます。

a. ${XILINX_}/gnu/processor/platform/processor-lib/lib

b. ${XILINX_}/lib/processor

注記 : pocessor には、 MicroBlaze の場合は 「microblaze」、 ARM の場合は 「arm-xilinx-eabi」 が入り ます。

ヘッダー ファイル検索順序

ヘッダー ファ イルは、 次の順に検索されます。

1. -I <dir_name> で指定されたディ レク ト リ

2. 次のヘッダー ファ イル

a. ${XILINX_}/gnu/processor/platform/lib/gcc/processor/{gcc version}/include

b. ${XILINX_}/gnu/processor/platform/processor-lib/include

初期化ファイル検索順序

初期化ファイルは、 次の順に検索されます。

1. -B <dir_name> で指定されたディ レク ト リ

2. ${XILINX_}/gnu/processor/platform/processor-lib/lib

3. 次のライブラ リ

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 19UG1043 (v2014.3) 2014 年 10 月 1 日

Page 20: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

a. $XILINX_/gnu/<processor>/platform/<processor-lib>/lib

b. $XILINX_/lib/processor

説明 :

° <processor> には、 MicroBlaze の場合は 「microblaze」、 ARM の場合は 「arm-xilinx-eabi」 が入り ます。

° <processor-lib> には、MicroBlaze の場合は「microblaze-xilinx-elf」、ARM の場合は「arm-xilinx-eabi」が入り ます。

注記 : platform には、 Linux の場合は 「lin」、 Linux 64 ビッ トの場合は 「lin64」、 Windows Cygwin の場合は 「nt」 が入り ます。

リンカー オプシ ョ ン

-defsym _STACK_SIZE=value

スタ ッ ク領域に割り当てられている メモ リ容量を変更します。 変数 _STACK_SIZE は、 スタ ッ ク領域に割り当てられている総容量を示します。 デフォルト値は 100 ワード (400 バイ ト ) です。 スタ ッ ク領域と ヒープ領域の合計に 400 バイ ト以上必要な場合は、 このオプシ ョ ンを使用して _STACK_SIZE の値を大き く します。 値はバイ ト単位で指定します。

プログラムでスタ ッ ク領域を大き くする必要がある場合があ り ます。プログラムで必要なスタ ッ ク サイズが割り当てられているサイズよ り も大きい場合は、 ほかのプログラムの不正な領域に書き込みが行われ、 コードが正常に実行されない場合があ り ます。

注記 :ザイ リ ンクスが提供する C ランタイム (CRT) ファ イルにリ ンク されたプログラムでは、 スタ ッ ク サイズを 16バイ ト (0x0010) 以上にする必要があ り ます。

-defsym _HEAP_SIZE=value

ヒープ領域に割り当てられている メモ リ容量を変更します。 変数 _HEAP_SIZE のデフォルト値は 0 です。

ダイナミ ッ ク メモ リ割り当てルーチンは、 ヒープ領域を使用します。プログラムでこのよ うにヒープ領域を使用する場合は、 _HEAP_SIZE に適切な値を設定する必要があ り ます。

上級者ユーザーであれば、 リ ンカー スク リプ ト を IP インテグレーターから直接生成するこ と もできます。

メモリのレイアウト

MicroBlaze および ARM プロセッサは、32 ビッ トの論理アドレスを使用し、システムのメモ リに 0x0 から 0xFFFFFFFFまでのアドレスを指定できます。 この範囲は、 予約済みメモ リ と I/O メモ リに分けるこ とができます。

予約済みメモリ

予約済みメモ リは、ハード ウェアおよびソフ ト ウェアのプログラム環境で専用に使用するため定義される領域で、割り込みベク ター ロケーシ ョ ンおよび OS レベルのルーチンを含むメモ リ が一般的に予約済みメモ リ とな り ます。表 2-5 には、 MicroBlaze および ARM プロセッサそれぞれに対して規定されている予約済みメモ リ ロケーシ ョ ンがまとめられています。 これらのメモ リ ロケーシ ョ ンの詳細は、 使用するプロセッサの リ ファレンス マニュアルを参照してください。

ARM メモ リ マップについては 『Zynq-7000 All Programmable SoC テクニカル リ ファレンス マニュアル』 (UG585)[参照 2]を参照してください。

注記 :ハードウェアだけでなく、 ソフ ト ウェア環境に対しても メモ リが予約される場合があ り ます。 ソフ ト ウェアに対し メモ リ ロケーシ ョ ンが予約されているかど うかを確認するには、 使用するソフ ト ウェア プラ ッ ト フォームのマニュアルを参照してください。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 20UG1043 (v2014.3) 2014 年 10 月 1 日

Page 21: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

I/O メモリ

I/O メモ リは、 プログラムがプロセッサ バス上のメモ リ マップされたペリ フェラルと通信するために使用されます。これらのアドレスは、 ハード ウェア プラ ッ ト フォーム仕様の一部と して定義されます。

ユーザーおよびプログラム メモリ

ユーザーおよびプログラム メモ リ とは、コンパイルされた実行ファイルの実行に必要なメモ リすべてを指します。命令、 読み出し専用データ、 読み出し /書き込みデータ、 プログラム スタ ッ ク、 プログラム ヒープの保存に使用されます。 これらのセクシ ョ ンは、 システム内のアドレス指定可能なメモリであればどこにでも保存できます。 デフォルトでは、 コンパイラで生成されたコードおよびデータは、 表 2-5 にリ ス ト されているアドレスから開始して、 そこから連続するアドレスのメモ リ ロケーシ ョ ンに保存されます。 これが も一般的なプログラムのメモ リ レイアウ トです。プロ グ ラ ムの開始位置を変更するには、 MicroBlaze の場合は _TEXT_START_ADDR シンボル、 ARM の場合は_START_ADDR シンボルを定義します。

ELF ファ イルのセクシ ョ ンをそれぞれ異なる メモリに分割する必要がある場合は、リ ンカー コマンド言語を使用します。 詳細は、 24 ページの 「リ ンカー スク リプ ト 」 を参照してください。 実行ファイルのメモ リ マップを変更するのは、 次のよ うな場合です。

° 長いコードを複数の小型メモ リに分割する場合

° 頻繁に実行されるセクシ ョ ンを高速メモ リにマップする場合

° 読み出し専用セグメン ト を不揮発性のフラ ッシュ メモ リにマップする場合

実行ファ イルの分割方法に制限はあ り ません。 分割は、 出力セクシ ョ ン レベルまたは関数レベル、 データ レベルで行う こ とができます。 生成される ELF ファ イルが連続しておらず、 メモ リ マップにギャ ップが存在するこ とがあ ります。 予約済みロケーシ ョ ンを使用しないよ う注意してください。

または、ツールで提供される予約済みメモ リ ロケーシ ョ ンのデフォルト バイナリ データを変更するこ と も可能です。この場合、 リ ンカーで提供されるデフォルトのスタート アップ ファ イルおよびメモ リ マップを置き換える必要があり ます。

オブジェク ト  ファイルのセクシ ョ ン

実行ファイルは、 オブジェク ト ファ イル (.o ファ イル) の入力セクシ ョ ンを リ ンク して作成します。 デフォルトでは、標準であ り明確に定義されたセクシ ョ ンからコンパイラがコードを作成します。各セクシ ョ ンには、 その意味および目的に応じて名前が付けられています。 オブジェク ト ファ イルのさまざまな標準セクシ ョ ンを次に示します。

これらのセクシ ョ ンに加え、 カスタム セクシ ョ ンを作成して、 メモ リに割り当てるこ と もできます。

表 2‐5 :ハードウェアで予約されるメモリ  ロケーシ ョ ン

プロセッサ 予約済みメモリ 用途デフォルトのテキスト開

始アドレス

MicroBlaze 0x0 から 0x4F リセッ ト 、 割り込み、 例外、その他の予約済みベク ターの場所

0x50

Cortex A9 ARM

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 21UG1043 (v2014.3) 2014 年 10 月 1 日

Page 22: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

X-Ref Target - Figure 2-2

.init、 .fini、 .ctors、 .dtors、 .got、 .got2、 .eh_frame など、 通常は変更しない予約済みセクシ ョ ンがあ り ます。

.text 

オブジェク ト ファ イルのこのセクシ ョ ンには実行可能なプログラム命令が含まれており、 x (実行コード )、 r (読み出し専用)、 および i (初期化) フラグが付けられています。 プロセッサ命令バスでアドレス指定可能な初期化済み ROMに割り当てるこ とができます。

.rodata

このセクシ ョ ンには読み出し専用データが含まれており、r (読み出し専用) および i (初期化) フラグが付けられています。 .text セクシ ョ ンと同様、 プロセッサ命令バスでアドレス指定可能な初期化済み ROM に割り当てるこ とができます。

.sdata2

.rodata セクシ ョ ンと同様ですが、 8 バイ ト未満のサイズの小さい読み出し専用データが含まれます。 このセクシ ョ ンのデータには、すべて読み出し専用のスモール データ アンカーへの参照を使用してアクセスします。これによ り、 このセクシ ョ ンのすべてのデータに 1 つの命令でアクセスできます。 このセクシ ョ ンに配置するデータのサイズは、 -Gオプシ ョ ンで変更できます。 r (読み出し専用) および i (初期化) フラグが付けられています。

.data

このセクシ ョ ンには読み出し /書き込みデータが含まれており、 w (読み出し /書き込み) および i (初期化) フラグが付けられています。 初期化済みの RAM にマップする必要があ り ます。 ROM にはマップできません。

図 2‐2 : オブジェク ト  (実行) ファイルのセクシ ョ ン レイアウト

Text Section

Sectional Layout of an object or an Executable File

Read-Only Data Section

Small Read-Only Data Section

Small Read-Only Uninitialized Data Section

Read-Write Data Section

Small Read-Write Data Section

Small Uninitialized Data Section

Uninitialized Data Section

.text

.rodata

.sdata2

.sbss2

.data

.sdata

.sbss

.bss

Program Heap Memory Section

Program Stack Memory Section

.heap

.stack

X11005

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 22UG1043 (v2014.3) 2014 年 10 月 1 日

Page 23: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

.sdata

このセクシ ョ ンには、 8 バイ ト よ り も小さい読み出し /書き込み可能なデータが含まれます。 このセクシ ョ ンに配置するデータのサイズは、 -G オプシ ョ ンで変更できます。 このセクシ ョ ンのデータには、 すべて読み出し /書き込みのスモール データ アンカーへの参照を使用してアクセスします。 これによ り、 このセクシ ョ ンのすべてのデータに 1 つの命令でアクセスできます。 w (読み出し /書き込み) および i (初期化) フラグが付けられており、 初期化済み RAM にマップする必要があ り ます。

.sbss2

このセクシ ョ ンには、 8 バイ ト よ り も小さい読み出し専用の初期化されないデータが含まれます。 このセクシ ョ ンに配置するデータのサイズは、 -G オプシ ョ ンで変更できます。 r (読み出し ) フラグが付けられており、 ROM にマップする必要があ り ます。

.sbss

このセクシ ョ ンには、 8 バイ ト よ り も小さい初期化されないデータが含まれます。 このセクシ ョ ンに配置するデータのサイズは、 -G オプシ ョ ンで変更できます。 w (読み出し /書き込み) フラグが付けられており、 RAM にマップする必要があ り ます。

.bss

このセクシ ョ ンには、 初期化されていないデータが含まれます。 w (読み出し /書き込み) フラグが付けられており、RAM にマップする必要があ り ます。

.heap

このセクシ ョ ンには、 グローバル プログラム ヒープと して使用される初期化されていないデータが含まれます。 このセクシ ョ ンのメモ リは、 ダイナミ ッ ク メモ リ割り当てルーチンによ り割り当てられます。 RAM にマップする必要があ り ます。

.stack

このセクシ ョ ンには、 プログラム スタ ッ ク と して使用される初期化されていないデータが含まれます。 RAM にマップする必要があ り ます。 通常は、 .heap セクシ ョ ンのすぐ後に配置されます。 リ ンカーによっては、 .stack と .heap セクシ ョ ンが .bss_stack というセクシ ョ ンにマージされているよ うに見えます。

.init

このセクシ ョ ンには言語初期化コードが含まれており、 .text セクシ ョ ンと同じフラグが付けられています。初期化済みの ROM にマップする必要があ り ます。

.fini

このセクシ ョ ンには言語ク リーンアップ コードが含まれており、 .text セクシ ョ ンと同じフラグが付けられています。初期化済みの ROM にマップする必要があ り ます。

.ctors

このセクシ ョ ンにはプログラムの起動時に呼び出す必要のある関数がリ ス ト されており、.data と同じフラグが付けられています。 初期化済みの RAM にマップする必要があ り ます。

.dtors

このセクシ ョ ンにはプログラムの終了時に呼び出す必要のある関数がリ ス ト されており、.data と同じフラグが付けられています。 初期化済みの RAM にマップする必要があ り ます。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 23UG1043 (v2014.3) 2014 年 10 月 1 日

Page 24: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

.got2/.got

このセクシ ョ ンにはプログラム データへのポインターが含まれており、.data と同じフラグが付けられています。 初期化済みの RAM にマップする必要があ り ます。

.eh_frame

このセクシ ョ ンには、 例外処理用のフレーム巻き戻し情報が含まれます。 このセクシ ョ ンには、 .rodata と同じフラグが付けられており、 初期化済みの ROM にマップできます。

.tbss

このセクシ ョ ンには、初期化されないスレッ ドのローカル データが含まれており、 このデータはプログラムのメモ リイ メージの一部になり ます。 このセクシ ョ ンには、 .bssと同じフラグが付けられており、 RAM にマップする必要があり ます。

.tdata

このセクシ ョ ンには、 初期化されたスレッ ドのローカル データが含まれており、 このデータはプログラムのメモ リイ メージの一部になり ます。 初期化済みの RAM にマップする必要があ り ます。

.gcc_except_table

このセクシ ョ ンには、 言語特定のデータが含まれています。 初期化済みの RAM にマップする必要があ り ます。

.jcr

このセクシ ョ ンには、コンパイルされた Java ク ラスを登録するために必要な情報が含まれています。内容はコンパイラに特化したもので、 コンパイラ初期化関数が使用します。 初期化済みの RAM にマップする必要があ り ます。

.fixup

このセクシ ョ ンには、フ ィ ッ クスアップ ページ テーブルやフ ィ ッ クスアップ レコード テーブルを実行するために必要な情報が含まれています。 初期化済みの RAM にマップする必要があ り ます。

リンカー スクリプ ト

リ ンカー ユーティ リ ティは、 リ ンカー スク リプ トで指定したコマンドを使用してユーザー プログラムを複数のメモリ ブロ ッ クに分割します。 リ ンカー スク リプ トは、 すべての入力オブジェク ト ファ イルのすべてのセクシ ョ ンから実行ファイルへのマップを記述します。出力セクシ ョ ンは、システムのメモ リにマップされます。プログラム データを連続する メモ リに割り当てる というデフォルト操作を変更しない場合は、 リ ンカー スク リプ トは必要あ り ません。リ ンカーには、 セクシ ョ ンの内容を連続的に割り当てる、 デフォルトの リ ンカー スク リプ トが用意されています。

プロ グ ラ ムの開始ロ ケーシ ョ ンのみを変更するには、 次の例に示すよ う に、 MicroBlaze の場合は_TEXT_START_ADDR シンボル、 ARM の場合は START_ADDR シンボルを定義します。

mb-gcc <input files and flags> -Wl,-defsym -Wl,_TEXT_START_ADDR=0x100mb-ld <.o files> -defsym _TEXT_START_ADDR=0x100

$XILINX_/gnu/<procname>/<platform>/<processor_name>/lib/ldscriptsにある、 リ ンカーで使用されるデフォルト スク リプ トには次のものがあ り ます。

• elf32<procname>.x : この後に示すオプシ ョ ンのいずれも使用されていない場合のデフォルト

• elf32<procname>.xn : -n オプシ ョ ンを使用した場合

• elf32<procname>.xbn : -N オプシ ョ ンを使用した場合

• elf32<procname>.xr : -r オプシ ョ ンを使用した場合

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 24UG1043 (v2014.3) 2014 年 10 月 1 日

Page 25: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

• elf32<procname>.xu : -Ur オプシ ョ ンを使用した場合

<procname> =microblaze、<processor_name> = microblaze、 および <platform> = lin または nt とな り ます。

リ ンカー スク リプ ト を使用するには、 GCC コマンド ラ インで指定します。 次のコマンド ラ イン オプシ ョ ンを使用してください。 コンパイラには、 次のよ うに -T <script> オプシ ョ ンを使用します。

compiler -T <linker_script> <Other Options and Input Files>

リ ンカーを個別に実行する場合は、 リ ンカー スク リプ ト を次のよ うに指定します。

compiler -T <linker_script> <Other Options and Input Files>

このコマンドを使用する と、 デフォルトの リ ンカー スク リプ トの代わりに指定した リ ンカー スク リプ トが使用されます。 プログラム用のリ ンカー スク リプ トは、 IP インテグレーターおよび SDK から生成できます。

IP インテグレーターまたは SDK で、 [Tooks] → [Generate Linker Script] をク リ ッ ク します。

これでリ ンカー スク リプ ト生成ユーティ リ ティが開きます。 セクシ ョ ンから メモ リへのマップは、 こ こで行います。スタ ッ クおよびヒープのサイズと メモ リ マップも こ こで設定できます。 リ ンカー スク リプ トが生成される と、 IP インテグレーターまたは SDK 内で対応するアプリ ケーシ ョ ンをコンパイルしたと きにそのスク リプ トが自動的に GCCに入力されます。

リ ンカー スク リプ トは、 メモ リに変数または関数を割り当てるために使用できます。 これには、 C コードのセクシ ョン属性を使用します。 また、 リ ンカー スク リプ トでメモ リのセクシ ョ ンにオブジェク ト ファ イルを割り当てるこ ともできます。 これらの機能およびその他の機能については、 オンラ イン binutils マニュアルの一部である GNU リ ンカーのマニュアルを参照して ください。 GNU マニュアルへのリ ンクは付録 B 「その他のソースおよび法的通知」 にあ り ます。 MicroBlaze プロセッサの リ ンカー ス ク リ プ ト によ り割 り当てられる入力セクシ ョ ンの詳細については、 “MicroBlaze リ ンカー スク リプ トで割り当てられるセクシ ョ ン” on page 32を参照してください。

MicroBlaze コンパイラの使用法とオプシ ョ ンMicroBlaze 用の GNU コンパイラは、標準の GNU ソースに基づいています。MicroBlaze コンパイラに特定の機能およびオプシ ョ ンを次に説明し ます。 MicroBlaze コ ンパイ ラでコ ンパイルする場合、 プ リ プロセ ッ サで自動的に__MICROBLAZE__ 定義が使用されます。 この定義は、 どのよ うな条件コードでも使用できます。

MicroBlaze コンパイラ

ザイ リ ンクス MicroBlaze ソフ ト プロセッサ用の mb-gcc コンパイラでは、専用のオプシ ョ ンが追加されているだけでなく、GNU コンパイラでサポート されている一部のオプシ ョ ンが変更されています。 こ こでは、その両方のオプシ ョンについて説明します。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 25UG1043 (v2014.3) 2014 年 10 月 1 日

Page 26: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

MicroBlaze コンパイラ  オプシ ョ ン  :早見表

オプシ ョ ン名をク リ ッ クする と、 そのオプシ ョ ンの説明にジャンプします。

プロセッサ機能選択オプシ ョ ン

-mcpu=vX.YY.Z

MicroBlaze ハード ウェアのバージ ョ ン v.X.YY.Z に適したコードを生成します。 プロセッサ用に 適化された正しいコードを生成するには、 このオプシ ョ ンでプロセッサのハード ウェア バージ ョ ンを指定します。

指定するバージ ョ ンによって、 -mcpu の動作は異なり ます。

• Pr-v3.00.a:3 段プロセッサ パイプライン モードを使用します。命令を遅延スロ ッ トに移動する例外は禁止されません。

• v3.00.a および v4.00.a3 段プロセッサ パイプライン モードを使用します。 命令を遅延スロ ッ トに移動する例外は禁止されます。

• v5.00.a 以降5 段プロセッサ パイプライン モードを使用します。 命令を遅延スロ ッ トに移動する例外は禁止されません。

-mlittle-endian / -mbig-endian

コンパイルされているコードのターゲッ ト マシンのエンディアンを選択するため、 これらのオプシ ョ ンを使用します。生成されるバイナリ オブジェク ト ファ イルのエンディアンも このオプシ ョ ンに基づいて設定されます。下位ツール (as、 cc1、 cc1plus、 ld など) で該当するエンディアンを設定するため、 GCC ド ラ イバーはオプシ ョ ンを下位ツールに渡します。

デフォルトは -mbig-endian です。

注記 :複数のエンディアンをと り まぜたオブジェク ト ファ イルを リ ンク させるこ とはできません。

-mno-xl-soft-mul

32 ビッ ト乗算に対し、 ハードウェア乗算命令を使用できるよ うにします。

プロセッサ機能選択オプシ ョ ン

-mcpu=vX.YY.Z

-mno-xl-soft-mul

-mxl-multiply-high

-mno-xl-multiply-high

-mxl-soft-mul

-mno-xl-soft-div

-mxl-soft-div

-mxl-barrel-shift

-mno-xl-barrel-shift

-mxl-pattern-compare

-mno-xl-pattern-compare

-mhard-float

-msoft-float

-mxl-float-convert

-mxl-float-sqrt

General Program Options

-msmall-divides

-mxl-gp-opt

-mno-clearbss

-mxl-stack-check

アプリケーシ ョ ン実行モード  

-xl-mode-executable

-xl-mode-bootstrap

-xl-mode-novectors

MicroBlaze リンカー オプシ ョ ン  

-defsym _TEXT_START_ADDR=value

-relax

-N

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 26UG1043 (v2014.3) 2014 年 10 月 1 日

Page 27: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

MicroBlaze プロセッサには、 ハードウェア乗算リ ソースの使用をオン/オフにするオプシ ョ ンがあ り ます。 MicroBlazeでハードウェア乗算オプシ ョ ンがオンになっている場合は、 このオプシ ョ ンを使用する必要があ り ます。ハード ウェア乗算を使用する と、 アプリ ケーシ ョ ンのパフォーマンスが向上します。 このオプシ ョ ンを使用する と、 C プリプロセッサ定義 HAVE_HW_MUL が自動的に定義されます。 これによ り、 この機能が使用可能かど うかに基づいて、 ハード ウェアに適した C またはアセンブリ コードが記述されます。 MicroBlaze での乗算器オプシ ョ ンの使用については、『MicroBlaze プロセッサ リ ファレンス ガイ ド』 (UG081)[参照 3] (UG081) を参照して ください。

-mxl-multiply-high

MicroBlaze には、 32X32 ビッ ト乗算の上位 32 ビッ ト を計算する命令をイネーブルにするオプシ ョ ンがあ り ます。 このオプシ ョ ンは、 コンパイラでこれらの上位ビッ ト乗算命令を使用するよ う指示します。 このオプシ ョ ンを使用すると、 C プリプロセッサ定義 HAVE_HW_MUL_HIGH が自動的に定義されます。 これによ り、 この機能が使用可能かどうかに基づいて、 ハード ウェアに適した C またはアセンブリ コードが記述されます。 MicroBlaze での上位ビッ ト乗算命令の使用については、 『MicroBlaze プロセッサ リ ファレンス ガイ ド』 (UG081)[参照 3] を参照してください。

-mno-xl-multiply-high

上位ビッ ト乗算命令を使用しないよ う指定します。 このオプシ ョ ンがデフォルトです。

-mxl-soft-mul

MicroBlaze にハードウェア乗算器がないこ とを示します。デバイスにハード ウェア乗算器がない場合、32 ビッ ト乗算操作はソフ ト ウェア エミ ュレーシ ョ ン ルーチン __mulsi3 に置換されます。 このオプシ ョ ンがデフォルトです。

-mno-xl-soft-div

MicroBlaze にハードウェア除算器をインスタンシエートできます。除算器がある場合、このオプシ ョ ンを指定する と、コンパイルされているプログラムでハード ウェア除算命令が使用できるよ うになり ます。

プログラムに除算処理が多数含まれている場合、 このオプシ ョ ンを使用する とパフォーマンスが向上します。 このオプシ ョ ンを使用する と、 C プリプロセッサ定義 HAVE_HW_DIV が自動的に定義されます。 これによ り、 この機能が使用可能かど うかに基づいて、 ハード ウェアに適した C またはアセンブ リ コードが記述されます。 MicroBlaze でのハード ウェア除算器オプシ ョ ンの使用については、 『MicroBlaze プロセッサ リ フ ァ レンス ガイ ド』 (UG081)[参照 3](UG081) を参照してください。

-mxl-soft-div

ターゲッ トの MicroBlaze にハードウェア除算器がないこ とを示します。

このオプシ ョ ンがデフォルトです。 このオプシ ョ ンを設定する と、 すべての 32 ビッ ト除算が対応するソフ ト ウェアエ ミ ュレーシ ョ ン ルーチン (__divsi3、 __udivsi3) に置換されます。

-mxl-barrel-shift

MicroBlaze プロセッサは、 バレル シフターを組み込むよ う コンフ ィギュレーシ ョ ンできます。 プロセッサのバレルシフ ト機能を使用するには、 -mxl-barrel-shift オプシ ョ ンを使用します。

デフォルトではバレル シフターはないと判断され、 オペランドのシフ トには加算と乗算が使用されます。 バレル シフターをイネーブルにする と、特に浮動小数点ライブラ リ を使用している場合に、 アプリ ケーシ ョ ンの速度が大幅に向上します。 このオプシ ョ ンを使用する と、C プリプロセッサ定義 HAVE_HW_BSHIFT が自動的に定義されます。 これによ り、 この機能が使用可能かど うかに基づいて、 ハード ウェアに適した C またはアセンブ リ コードが記述されます。 MicroBlaze でのバレル シフターのオプシ ョ ンの使用については、 『MicroBlaze プロセッサ リ ファレンス ガイド』 (UG081)[参照 3] (UG081) を参照してください。

-mno-xl-barrel-shift

ハードウェア バレル シフ ト命令を使用しないよ う指定します。 このオプシ ョ ンがデフォルトです。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 27UG1043 (v2014.3) 2014 年 10 月 1 日

Page 28: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

-mxl-pattern-compare

コンパイラでのパターン比較命令の使用をオンにします。

パターン比較命令を使用する と、プログラムのブール演算の速度が向上します。また、パターン比較操作では、strcpy、strlen、 strcmp などの文字列処理ルーチンにおいて、バイ ト長ではなく ワード長での操作が可能になり ます。文字列処理ルーチンを多用するプログラムでは、 これによ り処理速度が大幅に向上します。 このオプシ ョ ンを使用する と、 Cプリプロセッサ定義 HAVE_HW_PCMP が自動的に定義されます。 これによ り、 この機能が使用可能かど うかに基づいて、 ハード ウェアに適した C またはアセンブ リ コードが記述されます。 MicroBlaze でのパターン比較オプシ ョ ンの使用については、 『MicroBlaze プロセッサ リ ファレンス ガイ ド』 (UG081) (UG081) [参照 3]を参照してください。

-mno-xl-pattern-compare

パターン比較命令を使用しないよ う指定します。 これがデフォルトです。

-mhard-float

コンパイラでの単精度浮動小数点命令 (fadd、 frsub、 fmul、 fdiv) の使用をオンにします。

また、 fcmp.p 命令 (p は le、 ge、 lt、 gt、 eq、 ne などの述語条件) も使用します。 これらの命令は、 ハード ウェアで FPUがイネーブルの場合に、 MicroBlaze でデコードおよび実行されます。 このオプシ ョ ンを使用する と、 C プリプロセッサ定義 HAVE_HW_FPU が自動的に定義されます。 これによ り、 この機能が使用可能かど うかに基づいて、ハード ウェアに適した C またはアセンブリ コードが記述されます。 MicroBlaze でのハードウェア浮動小数点の使用については、『MicroBlaze プロセッサ リ ファレンス ガイ ド』 (UG081) (UG081) [参照 3]を参照してください。

-msoft-float

浮動小数点演算のソフ ト ウェア エミ ュレーシ ョ ンを使用するよ う指定します。 このオプシ ョ ンがデフォルトです。

-mxl-float-convert

コンパイラでの単精度浮動小数点変換命令 (fint および flt) の使用をオンにします。ハード ウェアで FPU がイネーブルになっており、 このオプシ ョ ンの命令がイネーブルになっている と、 この命令は MicroBlaze によ りネイティブでデコード され、 実行されます。

MicroBlaze でのハード ウ ェア浮動小数点の使用については、 『MicroBlaze プロセッサ リ フ ァ レンス マニュアル』(UG081)[参照 3]を参照してください。

-mxl-float-sqrt

コンパイラでの単精度浮動小数点平方根命令 (fsqrt) の使用をオンにします。ハード ウェアで FPU がイネーブルになっており、 このオプシ ョ ンの命令がイネーブルになっている と、 この命令は MicroBlaze によ りネイティブでデコード され、 実行されます。

MicroBlaze でのハード ウ ェア浮動小数点の使用については、 『MicroBlaze プロセッサ リ フ ァ レンス マニュアル』(UG081)[参照 3]を参照してください。

一般プログラム オプシ ョ ン

-msmall-divides

ハードウェア除算器がない場合に、小さい数値の除算に対して 適化されたコードを生成します。分母と分子が 0 ~15 の間にあるよ うな符号付き整数の除算では、 このオプシ ョ ンを使用する とルッ クアップ テーブルに基づく高速の除算ができるよ うになり ます。 ハード ウェア除算器がイネーブルの場合は、 このオプシ ョ ンは無視されます。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 28UG1043 (v2014.3) 2014 年 10 月 1 日

Page 29: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

-mxl-gp-opt

プログラムに上位 16 ビッ トに 0 以外の値が含まれているアドレスがある場合、 読み込みまたは格納操作には 2 つの命令が必要です。

MicroBlaze ABI には 2 つのグローバル スモール データ領域があ り、それぞれ 64KB までのデータを保存できます。これらのデータ領域にある メモ リ ロケーシ ョ ンには、スモール データ領域アンカーおよび 16 ビッ トの即値を使用してアクセスできるので、スモール データ領域への読み込みまたは格納操作を 1 つの命令のみで実行できます。この 適化をオンにするには、 -mxl-gp-opt オプシ ョ ンを使用します。 サイズがしきい値未満の変数はこれらの領域に保存され、 少ない命令数でアドレス指定できます。 アドレスはリ ンク段階で計算されます。

注意 : このオプシ ョ ンを使用する場合、 プログラムのビルド プロセスのコンパイル コマンド と リ ンク コマンドの両

方で指定する必要があ り ます。 どちらか一方のみで使用する と、 コンパイル、 リ ンク、 またはランタイム エラーが発

生する可能性があ り ます。

-mno-clearbss

このオプシ ョ ンは、 シ ミ ュレーシ ョ ンで使用するプログラムをコンパイルする際に有益です。

C 言語のルールに基づき、初期化されていないグローバル変数は .bss セクシ ョ ンに割り当てられ、 プログラム実行開始時の値は常に 0 になり ます。 通常、 プログラム実行開始時に、 .bss セクシ ョ ンが 0 で埋められるよ うに C スタートアップ ファ イルをループで実行します。 また、 コンパイ ラを 適化した場合も、 C コードで 0 に割り当てられたグローバル変数が .bss セクシ ョ ンに割り当てられます。

シ ミ ュレーシ ョ ン環境では、上記の 2 言語機能は余分なオーバーヘッ ド となる場合があ り ます。 シ ミ ュレータによっては、 メモ リ全体を自動的に 0 にするものがあ り ます。 通常の環境であっても、 グローバル変数が開始時に 0 になっていなくても良いよ うな C コードを記述できます。そのよ うな場合にこのオプシ ョ ンが役立ちます。 このオプシ ョ ンを使用する と、 C スタート アップ ファ イルによ り .bss セクシ ョ ンが 0 に初期化されるこ とはなくな り ます。 また、 このオプシ ョ ンは.bss セクシ ョ ンに 0 に初期化されたグローバル変数を割り当てず、 .data セクシ ョ ンに移動します。 このオプシ ョ ンによ り、 アプリ ケーシ ョ ンの起動時間が短縮される場合があ り ます。 このオプシ ョ ンを使用する場合はよ く注意してください。 また、 グローバル変数を 0 に初期化するこ とを前提にしているコードを使用しない、 またはシ ミ ュレーシ ョ ン プラ ッ ト フォームが自動的にメモ リ を 0 に初期化するコードを使用しないよ うにしてください。

-mxl-stack-check

プログラムの実行中にスタ ッ ク オーバーフローが発生しているかど うかをチェッ クするよ う指定します。

コンパイラは、 各関数のプロローグ コード内に、 スタ ッ ク ポインター値と使用可能なメモ リ を比較するコードを挿入し ますが、 ス タ ッ ク ポ イ ン ターが使用可能な メ モ リ を超えている場合は、 プロ グ ラ ムはサブルーチン_stack_overflow_exit に飛びます。 このサブルーチンは、 変数 _stack_overflow_error の値を 1 に設定します。

スタ ッ ク オーバーフロー ハンド ラーと して機能する関数 _stack_overflow_exit をソース コードに含め、標準のスタ ック オーバーフロー ハンド ラーの代わり と して使用するこ とができます。

アプリケーシ ョ ン実行モード

-xl-mode-executable

mb-gcc でプログラムをコンパイルする際のデフォルト モードです。 mb-gcc を使用する場合は、 指定する必要はあ りません。 このオプシ ョ ンを使用する と、 スタート アップ ファ イル crt0.o が使用されます。

-xl-mode-bootstrap

ブート ローダーを使用して読み込むアプリ ケーシ ョ ンをコンパイルする際に使用します。通常ブート ローダーは、不揮発性メモ リにあ り、 プロセッサ リ セッ ト ベクターにマップされます。 標準実行ファ イルがこのブート ローダーで読み込まれた場合、 アプ リ ケーシ ョ ン リセッ ト ベクターがブート ローダーのリセッ ト ベクターを上書きします。 その場合、 プロセッサのリセッ ト時にブート ローダーが 初に実行されず (通常は 初に実行されるよ うになっている)、 このアプリ ケーシ ョ ンの再読み込みおよびその他必要な初期化が行われません。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 29UG1043 (v2014.3) 2014 年 10 月 1 日

Page 30: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

この状況を回避するため、 このコンパイラ オプシ ョ ンを使用する必要があ り ます。 このコンパイラ オプシ ョ ンを使用する と、 プロセッサのリセッ ト時に、 アプ リ ケーシ ョ ンではなくブート ローダーが実行されます。

上記とは異なる状況で使用されるアプ リ ケーシ ョ ンでは、 このオプシ ョ ンは機能しません。 このモードでは、 crt2.oがスタート アップ ファ イルと して使用されます。

-xl-mode-novectors

MicroBlaze ベク ターを必要と しないアプ リ ケーシ ョ ンをコンパイルする際に使用します。 通常は、 プロセッサの リセッ ト 、割り込み、 または例外機能を使用しないスタンドアロン アプリ ケーシ ョ ンで使用します。 このオプシ ョ ンを使用する と、 ベク ターの命令が含まれないので、 コード サイズが小さ くな り ます。 このモードでは、 crt3.o がスタート アップ ファ イルと して使用されます。

注意 : コマンド ラインで、複数の実行モードを指定しないでください。複数のモードを指定する と、 シンボルが複数

定義されているこ とが原因でリ ンク エラーが発生します。

位置独立コード  (PIC)

MicroBlaze 用の GNU コンパイラでは、 -fPIC および -fpic オプシ ョ ンがサポート されています。 これらのオプシ ョ ンを使用する と、 コンパイラで位置独立コード (PIC) を生成できます。 この機能は、 共有ライブラ リおよび再配置可能実行ファ イルをインプ リ メ ン トするために Linux 上で MicroBlaze に対してのみ使用されます。 生成されたコードのデータ アクセスをすべて再配置するにはグローバル オフセッ ト テーブル (GOT) が使用され、共有ライブラ リへの関数呼び出しにはプロシージャ リ ンケージ テーブル (PLT) が使用されます。 これは、 GNU ベースのプラ ッ ト フォームで再配置可能コードを生成し、 共有ライブラ リ をダイナミ ッ クに リ ンクする際の標準的な方法です。

MicroBlaze アプリケーシ ョ ン  バイナリ  インターフェイス

MicroBlaze 用の GNU コンパイラは、 『MicroBlaze プロセッサ リ ファレンス ガイ ド』 (UG081)[参照 3] で定義されている、 アプ リ ケーシ ョ ン バイナリ インターフェイス (ABI) を使用します。 レジスタおよびスタ ッ クの使用法に関する規則、 コンパイラで使用される標準メモ リ モデルの説明は、 ABI の資料を参照してください。

MicroBlaze アセンブラ

ザイ リ ンクス MicroBlaze ソフ ト プロセッサ用の mb-as アセンブラでは、標準 GNU コンパイラでサポート されているオプシ ョ ンおよび標準 GNU アセンブラでサポート されているアセンブラ指示子がサポート されています。

mb-as アセンブラでは、 imm 命令以外の MicroBlaze マシン命令セッ トの opcode がサポート されています。 imm 命令は、大きい即値が使用される場合に生成されます。 imm 命令を含むコードを記述するためのアセンブリ言語プログラマは必要あ り ません。 MicroBlaze の命令セッ ト の詳細は、 『MicroBlaze プロセッサ リ フ ァ レンス ガイ ド』 (UG081)(UG081)[参照 3]を参照してください。

mb-as アセンブラでは、即値オペランドを使用するすべての MicroBlaze 命令を定数またはラベルと して指定する必要があ り ます。命令に PC 相対オペランドが必要な場合は、mb-as アセンブラによ りそれが算出され、必要に応じて imm命令に含められます。

たとえば、 beqi (Branch Immediate if Equal) 命令には PC 相対オペランドが必要です。

アセンブリ プログラマでは、 この命令を次のよ うに使用します。

beqi r3, mytargetlabel

こ こで、 mytargetlabel は対象となる命令のラベルです。 mb-as アセンブラによ り、 命令の即値が mytargetlabel - PC として算出されます。

即値が 16 ビッ ト よ り大きい場合は、 imm 命令が自動的に挿入されます。 コンパイル時に mytargetlabel の値が不明な場合は、 常に imm 命令が挿入されます。 不要な imm 命令を削除するには、 relax オプシ ョ ンを使用してください。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 30UG1043 (v2014.3) 2014 年 10 月 1 日

Page 31: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

同様に、 命令で大きな定数のオペランドが必要な場合は、 アセンブ リ言語プログラマで imm 命令ではなくオペランドをそのまま使用する必要があ り ます。 たとえば次のコードでは、 レジスタ r3 の内容に定数 200,000 を追加し、結果をレジスタ r4 に保存します。

addi r4, r3, 200000

mb-as アセンブラは、 このオペランドに imm 命令が必要である と判断し、 自動的に挿入します。

mb-as アセンブラでは、 アセンブリのプログラムを簡単にするため、 標準の MicroBlaze 命令セッ トに加えていくつかの擬似 opcode がサポート されています。 表 2-6 に、 サポート されている擬似 opcode を示します。

MicroBlaze リンカー オプシ ョ ン

MicroBlaze ソフ ト プロセッサ用の mb-ld リ ンカーでは、GNU コンパイラでサポート されているオプシ ョ ンに加え、追加のオプシ ョ ンも導入されています。 このセクシ ョ ンでは、 これらのオプシ ョ ンについて説明します。

-defsym _TEXT_START_ADDR=value

デフォルトでは、 出力コードのテキス ト セクシ ョ ンはベース アドレス 0x0 から開始しますが、 このオプシ ョ ンを使用する と、 このデフォルト を変更できます。mb-gcc コンパイラの実行時にこのオプシ ョ ンを指定する と、出力コードのテキス ト セクシ ョ ンは value で指定したアドレスから開始するよ うになり ます。

デフォルトの開始アドレスを使用する場合は、 -defsym _TEXT_START_ADDR を設定する必要はあ り ません。

これはリ ンカー オプシ ョ ンであ り、 リ ンカーを個別に実行する場合に使用します。 リ ンカーを mb-gcc の一部と して実行する場合は、 次のオプシ ョ ンを使用してください。

-Wl,-defsym -Wl,_TEXT_START_ADDR=value

-relax

アセンブラで生成された不要な imm 命令を削除する リ ンカー オプシ ョ ンです。 アセンブラでは、 即値を算出できない命令がある と、 imm 命令が生成されます。

ほとんどの場合、 imm 命令は必要あ り ません。 -relax オプシ ョ ンを使用する と、 リ ンカーによ り不要な imm 命令が削除されます。

このオプシ ョ ンは、 リ ンカーを個別に実行した場合にのみ必要です。 リ ンカーを mb-gcc の一部と して実行する場合は、 このオプシ ョ ンは自動的に指定されます。

-N

テキス トおよびデータ セクシ ョ ンを読み出し /書き込み可能にします。 データ セグメン トはページ揃えされません。このオプシ ョ ンは、 MicroBlaze プログラムにのみ必要です。 リ ンカーを GCC コンパイラの一部と して実行する場合は、 このオプシ ョ ンが自動的に指定されます。 リ ンカーを個別に実行する場合は、 このオプシ ョ ンを指定する必要があ り ます。

このオプシ ョ ンの詳細は、 GNU のマニュアルを参照してください。

表 2‐6 : GNU アセンブラでサポート される擬似 Opcode

擬似 Opcode 説明

nop 操作は実行されません。 次の命令に置換されます。 or R0, R0, R0

la Rd, Ra, Imm 次の命令に置換されます。 addik Rd, Ra, imm; = Rd = Ra + Imm;

not Rd, Ra 次の命令に置換されます。 xori Rd, Ra, -1

neg Rd, Ra 次の命令に置換されます。 rsub Rd, Ra, R0

sub Rd, Ra, Rb 次の命令に置換されます。 rsub Rd, Rb, Ra

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 31UG1043 (v2014.3) 2014 年 10 月 1 日

Page 32: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

MicroBlaze リ ンカーでは、セクシ ョ ンを メモ リに割り当てるためにリ ンカー スク リプ トが使用されます。 これらについては、 次のセクシ ョ ンで説明します。

MicroBlaze リンカー スクリプ トで割り当てられるセクシ ョ ン

表 2-7 に、 MicroBlaze リ ンカー スク リプ トで割り当てられる入力セクシ ョ ンを示します。

リンカー スクリプ ト を記述またはカスタマイズする際のヒン ト

カスタム リ ンカー スク リプ ト を記述する場合は、 次の点に留意してください。

• ベクター セクシ ョ ンが MicroBlaze ハードウェアで定義された適切なメモリに割り当てられているこ とを確認します。

• スタ ッ クおよびヒープは .bss セクシ ョ ンに配置します。 _stack 変数をこの領域の_STACK_SIZE の後に設定し、_heap_start 変数を _STACK_SIZE の後の次のロケーシ ョ ンに設定します。 スタ ッ クおよびヒープは、 ハード ウェアおよびシ ミ ュレーシ ョ ンで初期化する必要がないので、_bss_end 変数は .bss および COMMON の後に定義します。

注記 : .bss セクシ ョ ンの境界にはスタ ッ クおよびヒープは含まれません。

• _SDATA_START__、 _SDATA_END__、 SDATA2_START、 _SDATA2_END__、 _SBSS2_START__、 _SBSS2_END__、_bss_start、 _bss_end、 _sbss_start、 および _sbss_end 変数は、 それぞれ .sdata、 .sdata2、 .sbss2、 .bss、 .sbss セクシ ョンの 初と 後に定義する必要があ り ます。

• ANSI C では、初期化されないメモ リはすべてスタート アップに初期化する必要があ り ます (スタ ッ クおよびヒープでは不要)。 提供されている標準の CRT では、 1 つの .bss セクシ ョ ンが 0 に初期化される と想定されます。 複数の .bss セクシ ョ ンがある場合は、 この CRT は使用できません。 その場合は、 すべての .bss セクシ ョ ンを初期化する CRT を作成する必要があ り ます。

表 2‐7 : リンカー スクリプ トで割り当てられるセクシ ョ ン

セクシ ョ ン 説明 

.vectors.reset リセッ ト ベクター コード

.vectors.sw_exception ソフ ト ウェア例外ベクター コード

.vectors.interrupt ハードウェア割り込みベクター コード

.vectors.hw_exception ハードウェア例外ベクター コード

.text 関数のコードおよびグローバル アセンブリ文からのプログラム命令

.rodata 読み出し専用変数

.sdata2 初期値を持つ読み出し専用の小さいスタティ ッ クおよびグローバル変数

.data 初期値を持つスタティ ッ クおよびグローバル変数。 ブート コードによ りゼロに初期化されます。

.sdata 初期値を持つ小さいスタティ ッ クおよびグローバル変数

.sbss2 初期値のない読み出し専用の小さいスタティ ッ クおよびグローバル変数。ブート コードによ りゼロに初期化されます。

.sbss 初期値のない小さいスタティ ッ クおよびグローバル変数。 ブート コードによりゼロに初期化されます。

.bss 初期値のないスタティ ッ クおよびグローバル変数。 ブート コードによ りゼロに初期化されます。

.heap ヒープ用に定義されたメモ リのセクシ ョ ン

.stack スタ ッ ク用に定義されたメモ リのセクシ ョ ン

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 32UG1043 (v2014.3) 2014 年 10 月 1 日

Page 33: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

スタートアップ ファイル 

コンパイラで実行ファ イルを生成する際、 後のリ ンク コマンドにはコンパイル済みのスタート アップ ファ イルおよびエンド ファ イルが含まれます。 スタート アップ ファ イルは、 アプ リ ケーシ ョ ン コードが実行される前に、 言語およびプラ ッ ト フォーム環境を設定します。 スタート アップ ファ イルでは、 通常次の処理が実行されます。

• 必要に応じて、 リセッ ト 、 割り込み、 および例外ベクターを設定します。

• スタ ッ ク ポインター、 スモール データ アンカー、 およびその他のレジスタを設定します。 詳細は、 33 ページの表 2-8を参照してください。

• BSS メモ リ領域を 0 にク リ アします。

• C++ コンス ト ラ ク タなどの言語初期化関数を呼び出します。

• ハードウェア サブシステムを初期化します。 たとえば、 プログラムのプロファ イルが作成される場合は、 プロファ イル タイマーを初期化します。

• main プロシージャの引数を設定し、 呼び出します。

エンド ファ イルには、プログラムの終わりに実行する必要のあるコードが含まれています。エンド ファ イルでは、通常次の処理が実行されます。

• C++ デス ト ラ ク タなどの言語ク リーンアップ関数を呼び出します。

• ハードウェア サブシステムの初期化を解除します。たとえば、プログラムのプロファ イルが作成されている場合は、 プロファ イル サブシステムをク リーンアップします。

表 2-8 には、 C ランタイム ファ イルのレジスタ名、 値、 およびその説明がまとめられています。

この後、 さまざまなアプリ ケーシ ョ ン モードで使用される初期化ファイルについて説明します。 この情報は、アプ リケーシ ョ ンのスタート アップ コードを理解したい、 または変更したいという上級者ユーザーを対象にしています。

MicroBlaze では、 C ランタイム初期化に 2 つの段階があ り ます。 初の段階では主にベクターが設定され、 その後に第 2 段階が開始します。 また、 アプリ ケーシ ョ ン モードによっては、 exit スタブも提供されます。

第 1 段階の初期化ファイル

crt0.o

ブート ローダーまたはデバッグ スタブを使用せずに、 スタンドアロンで実行されるプログラムに対して使用します。このファイルは、 リセッ ト 、 割り込み、 例外、 およびハード ウェア例外ベクターを指定し、 第 2 段階のスタート アップ ルーチン _crtinit を呼び出します。 _crtinit から戻る と、 _exit ラベルで無限ループを実行するこ とによ りプログラムを終了します。

crt1.o

アプ リ ケーシ ョ ンをデバッグする際に使用します。 ブレークポイン トおよびリセッ ト ベクター以外のすべてのベクターを指定し、 第 2 段階のスタート アップ ルーチン _crtinit を呼び出します。

表 2‐8 : C ランタイム ファイルでのレジスタの初期化

Register 値 説明

r1 _stack-16 スタ ッ ク ポインター レジスタ。 16 バイ トの 初の負のオフセッ トでスタ ッ ク領域の下部をポイン トするよ う初期化されます。この 16バイ トは、 引数を渡すのに使用されます。

r2 _SDA2_BASE 読み出し専用のスモール データ領域アンカー アドレス。

r13 _SDA_BASE_ 読み出し /書き込み可能なスモール データ領域アンカー アドレス。

その他のレジスタ 未定義 その他のレジスタの値は定義されていません。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 33UG1043 (v2014.3) 2014 年 10 月 1 日

Page 34: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

crt2.o

実行ファイルがブート ローダーで読み込まれる場合に使用します。リセッ ト ベクター以外のすべてのベクターを指定し、 第 2 段階のスタート アップ ルーチン _crtinit を呼び出します。 _crtinit から戻る と、 _exit ラベルで無限ループを実行するこ とによ りプログラムを終了します。 リセッ ト ベクターは指定されないので、 プロセッサのリセッ ト時には、ブート ローダーによ りプログラムが再度読み込まれ、 開始されます。

crt3.o

実行ファ イルでベクターを使用せず、 コード サイズを小さ くする場合に使用します。 リセッ ト ベクターのみを指定し、 第 2 段階のスタート アップ ルーチン _crtinit を呼び出します。 _crtinit から戻る と、 _exit ラベルで無限ループを実行するこ とによ りプログラムを終了します。 ほかのベクターは指定されないので、 リ ンクの段階で割り込み処理および例外処理に関連するルーチンが含まれるこ とはなく、 コード サイズが小さ くな り ます。

第 2 段階の初期化ファイル

C 標準に従い、 すべてのグローバルおよびスタティ ッ ク変数は 0 に初期化する必要があ り ます。 これは上記すべての CRT に必要な共通の機能です。 このため、 別のルーチン _crtinit が呼び出されます。 このルーチンは、 プログラムの .bss セクシ ョ ンのメモ リ を初期化します。 _crtinit ルーチンはラ ッパー ファ イルでもあ り、 main プロシージャも呼び出します。 main プロシージャを呼び出す前に、 ほかの初期化関数が呼び出される場合もあ り ます。 _crtinit ルーチンは、 次のスタート アップ ファイルによ り提供されます。

crtinit.o

このデフォルトの第 2 段階の C スタート アップ ファ イルは、 次の処理を実行します。

1. .bss セクシ ョ ンを 0 にク リ アします。

2. _program_init を呼び出します。

3. コンス ト ラ ク タ関数 (_init) を呼び出します。

4. main プロシージャの引数を設定し、 呼び出します。

5. デス ト ラ ク タ関数 (_fini) を呼び出します。

6. _program_clean を呼び出し、 戻り ます。

pgcrtinit.o

これはプロファ イルの作成時に使用され、 次の処理を実行します。

1. .bss セクシ ョ ンを 0 にク リ アします。

2. _program_init を呼び出します。

3. _profile_init を呼び出し、 プロファ イル ライブラ リ を初期化します。

4. コンス ト ラ ク タ関数 (_init) を呼び出します。

5. main プロシージャの引数を設定し、 呼び出します。

6. デス ト ラ ク タ関数 (_fini) を呼び出します。

7. _profile_clean を呼び出し、 プロファ イル ライブラ リ をク リーンアップします。

8. _program_clean を呼び出し、 戻り ます。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 34UG1043 (v2014.3) 2014 年 10 月 1 日

Page 35: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

sim-crtinit.o

コンパイラで -mno-clearbss オプシ ョ ンが設定されている場合に使用され、 次の処理を実行します。

1. _program_init を呼び出します。

2. コンス ト ラ ク タ関数 (_init) を呼び出します。

3. main プロシージャの引数を設定し、 呼び出します。

4. デス ト ラ ク タ関数 (_fini) を呼び出します。

5. _program_clean を呼び出し、 戻り ます。

sim-pgcrtinit.o

プロファイルの作成時に、 コンパイラで -mno-clearbss オプシ ョ ンが設定されている場合に使用され、次の処理を実行します。

1. _program_init を呼び出します。

2. _profile_init を呼び出し、 プロファ イル ライブラ リ を初期化します。

3. コンス ト ラ ク タ関数 (_init) を呼び出します。

4. main プロシージャの引数を設定し、 呼び出します。

5. デス ト ラ ク タ関数 (_fini) を呼び出します。

6. _profile_clean を呼び出し、 プロファ イル ライブラ リ をク リーンアップします。

7. _program_clean を呼び出し、 戻り ます。

その他のファイル

コンパイ ラは、 C++ 言語をサポートするため、 特定の標準スタート ファ イルおよびエンド ファ イルも使用します。crti.o、crtbegin.o、crtend.o、および crtn.o がそれに当たり ます。 これらの標準コンパイラ ファ イルは、 .init、 .fini、 .ctors、および .dtors セクシ ョ ンの内容を指定します。

スタートアップ ファイルの変更

初期化ファイルは、コンパイル済みのファイルおよびソース ファ イルの両方で提供されます。コンパイル済みのオブジェク ト ファ イルは、 コンパイラ ラ イブラ リ ディ レク ト リに含まれます。 MicroBlaze の GNU コンパイラの初期化ファイルのソースは、 <XILINX_>/sw/lib/microblaze/src ディ レク ト リにあ り、 <XILINX_> は Vivado インス トール ディ レク ト リ を表します。

カスタム スタート アップ ファ イルを使用するには、 ソース ディ レク ト リにあるファ イルを、 アプリ ケーシ ョ ン ソースの一部と して含める必要があ り ます。 また、 ファ イルを .o ファ イルに統合して、共有エリ アに配置するこ と も可能です。 標準フ ァ イルではな く新し く作成したオブジェ ク ト フ ァ イルを参照する場合は、 mb-gcc の実行時に -Bdirectory -name を使用します。

デフォルトのスタート アップ ファ イルが使用されないよ うにするには、 コンパイルの 後の行に -nostartfiles を追加します。

注記 : crti.o、 crtbegin.o などのコンパイラ標準 CRT ファ イルは、 ソース コードが提供されないので、 これらのファイルは、 インス トール ディ レク ト リに含まれているものをそのまま使用してください。 これらのファイルは、 後のリンク コマンドに含める必要がある場合があ り ます。

C プログラムのスタートアップ コード  サイズの縮小

C プログラムのコード サイズの制限が厳しい場合は、オーバーヘッ ドの原因となるあらゆるものを取り除く必要があり ます。このセクシ ョ ンでは、C プログラムで不要な C++ コンス ト ラ ク タまたはデス ト ラ ク タ コードによるオーバーヘッ ドを削減する方法を説明します。 次の変更を加えるこ とによ り、 コードのサイズを約 220 バイ ト縮小できます。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 35UG1043 (v2014.3) 2014 年 10 月 1 日

Page 36: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

1. 前のセクシ ョ ンで説明したよ うに、 インス トール領域からスタート アップ ファ イルのカスタム コピーを作成します。 アプ リ ケーシ ョ ンに適した crtn.s および xcrtinit.s をコピーします。 たとえば、 アプリ ケーシ ョ ンがブートローダーを使用して読み込まれ、 プロ フ ァ イルが作成される場合は、 イ ンス ト ール領域から crt2.s およびpg-crtinit.s をコピーします。

2. pg-crtinit.s から次の行を削除します。

brlid r15, __init /* Invoke language initialization functions */nop

and

brlid r15, __fini /* Invoke language cleanup functions */nop

これによ り、コンス ト ラ ク タおよびデス ト ラ ク タの処理に使用されるコードは参照されなくな り、コード サイズが小さ くな り ます。

3. これらのファイルを .o ファ イルにコンパイルして任意のディレク ト リに配置するか、 アプリ ケーシ ョ ン ソースの一部と して含めます。

4. コンパイラに -nostartfiles オプシ ョ ンを追加します。特定のフォルダーにファイルを統合する場合は、 -B directoryオプシ ョ ンも使用します。

5. アプリ ケーシ ョ ンをコンパイルします。

アプ リ ケーシ ョ ンを異なるモードで実行する場合は、 33 ページの 「スタート アップ ファ イル」 の説明に従って、 適切な CRT ファ イルを選択する必要があ り ます。

コンパイラ  ライブラリ

mb-gcc コンパイラには、 GNU C 標準ライブラ リ と GNU 数学ライブラ リが必要です。 Vivado には、 あらかじめコンパイルされたこれらのライブラ リが含まれています。 MicroBlaze のハードウェア コンフ ィギュレーシ ョ ンに基づき、MicroBlaze の CPU ド ラ イバーの該当バージ ョ ンがコピーされます。 使用するライブラ リのバージ ョ ンを選択するには、 次のフォルダーを確認します。

$XILINX_/gnu/microblaze/<platform>/microblaze-xilinx-elf/lib

ファ イル名は、コンパイラのオプシ ョ ンと ライブラ リのコンパイルに使用されたコンフ ィギュレーシ ョ ンに基づいて付けられています。 たとえば、 libc_m_bs.a は、 ハード ウェア乗算器とバレル シフターをイネーブルにしてコンパイルされた C ライブラ リです。

表 2-9に、 使用されているエンコード とそのエンコードで指定されるライブラ リのコンフ ィギュレーシ ョ ンを示します。

注意が必要なのは、 数学ライブラ リ ファ イル (libm*.a) です。 C 標準では、 倍精度の浮動小数点演算を使用するために、 sin() および cos() などの共通の数学ラ イブラ リ 関数が必要です。 しかし、 この倍精度の浮動小数点演算は、MicroBlaze のオプシ ョ ンの単精度の浮動小数点機能をフル活用できない可能性があ り ます。

表 2‐9 : コンパイラ  フラグ上のエンコード されたライブラリ  ファイル名

エンコード 説明

_bs バレル シフター用にコンフ ィギュレーシ ョ ン

_m ハードウェア乗算器用にコンフ ィギュレーシ ョ ン

_p パターン コンパレータ用にコンフ ィギュレーシ ョ ン

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 36UG1043 (v2014.3) 2014 年 10 月 1 日

Page 37: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

Newlib 数学ライブラ リには、 単精度演算を使用してこれらの数学関数をインプリ メン トするバージ ョ ンがあ り ます。これらの単精度ライブラ リでは MicroBlaze ハードウェア浮動小数点ユニッ ト (FPU) を直接使用できるので、パフォーマンスが向上する可能性があ り ます。

アプ リ ケーシ ョ ンで標準精度が必要ではな く、 パフォーマンスを向上させたい場合は、 リ ンク されたラ イブラ リのバージ ョ ンを手動で変更できます。

デフォルトでは、 CPU ド ラ イバーによ り倍精度バージ ョ ンのラ イブラ リ (libm_*_fpd.a) が IP インテグレーター プロジェク トにコピーされます。

単精度バージ ョ ンを利用するには、対応する libm_*_fps.a をコピーするカスタム CPU ド ラ イバーを作成します。 この場合、対応する libm_*_fps.a ファ イルを libm.a と してプロセッサのライブラ リ フォルダー (microblaze_0/lib など) にコピーします。

使用するライブラ リ をコピーしたら、 アプ リ ケーシ ョ ン ソフ ト ウェア プロジェク ト を再ビルド します。

スレッ ド  セーフVivado に含まれる MicroBlaze の C ライブラ リおよび数学ライブラ リは、 マルチスレッ ド環境で使用するよ うにはビルド されていません。 printf()、 scanf()、 malloc()、 free() などの共通 C ラ イブラ リ関数はスレッ ド セーフではなく、 システムで回復不可能なランタイム エラーを引き起こすこ とがあ り ます。 マルチスレッ ド環境で Vivado ラ イブラ リ を使用する場合は、 相互排他的なメカニズムを使用してください。

コマンド  ライン引数MicroBlaze プロセッサ プログラムでは、 コマンド ラ イン引数を使用できません。 コマンド ラ イン引数 argc およびargv は、 C ランタイム ルーチンで 0 に初期化されます。

割り込みハンド ラ割り込みハンド ラは、 通常のサブルーチン呼び出し とは別の方法でコンパイルされます。 割り込みハンド ラでは、 不揮発性レジスタだけでなく、 使用されている揮発性レジスタも保存する必要があ り ます。 また、 割り込みが発生した際に、 マシン ステータス レジスタ (RMSR) の値も保存する必要があ り ます。

interrupt_handler 属性

サブルーチンと割り込みハンド ラを区別するため、 mb-gcc はコードの宣言部に interrupt_handler 属性があるかど うかをチェッ ク します。 この属性は、 次のよ うに定義されています。

void function_name () __attribute__ ((interrupt_handler));

注記 :割り込みハンド ラの属性は、 プロ ト タイプ内でのみ指定し、 定義には含めません。

割り込みハンド ラは、揮発性レジスタを使用するほかの関数を呼び出すこ と もあ り ます。揮発性レジスタで正しい値を保持するため、 ハンド ラが非リーフ関数である場合は、 すべての揮発性レジスタが保存されます。

注記 :非リーフ関数とは、 ほかのサブルーチンを呼び出す関数のこ とです。

割り込みハンド ラは、 MSS (Microprocessor Software Specification) ファ イルで定義されます。 これらの定義によ り、 割り込みハンド ラ関数に属性が自動的に追加されます。

割り込みハンド ラは rtid 命令を使用して、 割り込みで中断された関数に戻り ます。

save_volatiles 属性

save_volatiles 属性は、 interrupt_handler 属性と似ていますが、割り込み処理から戻るのに rtid ではなく rtsd を使用します。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 37UG1043 (v2014.3) 2014 年 10 月 1 日

Page 38: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

この属性を使用する と、非リーフ関数の場合はすべての揮発性レジスタが保存され、 リーフ関数の場合は使用されている揮発性レジスタのみが保存されます。

void function_name () __attribute__((save_volatiles));

fast_interrupt

MicroBlaze コンパイラには、 interrupt_handler 属性に類似した fast_interrupt という属性があ り ます。高速割り込みがある と、 MicroBlaze は、 固定アドレス 0x10 に飛ぶのではなく、 割り込みルーチン アドレスに飛びます。

標準割り込みとは異なり、 fast_interrupt 属性が C 関数で使用される場合は、 MicroBlaze は 小限のレジスタしか保存しません。

void function_name () __attribute__ ((fast_interrupt));

ARM Cortex‐A9 コンパイラの使用法とオプシ ョ ンSourcery CodeBench Lite for Xilinx EABI を使用し、 ARM プロセッサをコンパイルするこ とができます。

Sourcery CodeBench には、 次のコンポーネン ト をすべて含む、 GNU ツールチェーンが含まれています。

• CodeSourcery の共通スタート アップ コード シーケンス

• CodeSourcery Debug Sprite for ARM

• GNU バイナリ ユーティ リ ティ (Binutils)

• GNU C コンパイラ (GCC)

• GNU C++ コンパイラ (G++)

• GNU C++ ランタイム ライブラ リ (Libstdc++)

• GNU デバッガー (GDB)

• Newlib C ライブラ リ

使用法

コンパイル

arm-xilinx-eabi-gcc -c file1.c -I<include_path> -o file1.oarm-xilinx-eabi-gcc -c file2.c -I<include_path> -o file2.o

表 2‐10 :割り込みハンドラの

属性 関数

interrupt_handler マシン ステータス レジスタ、 不揮発性レジスタ、 およびすべての揮発性レジスタを保存します。割り込みから戻るには rtid を使用します。割り込みハンド ラ関数がリーフ関数の場合は、 関数で使用された揮発性レジスタのみが保存されます。

save_volatiles interrupt_handler と似ていますが、割り込みから戻るのに rtid ではなく rtsd が使用されます。

fast_interrupt interrupt_handler と似ていますが、固定アドレス 0x10 に飛ぶのではなく、割り込みルーチン アドレスに直接飛びます。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 38UG1043 (v2014.3) 2014 年 10 月 1 日

Page 39: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

リンク

arm-xilinx-eabi-gcc -Wl,-T -Wl,lscript.ld -L<libxil.a path> -o "App.elf" file1.o file2.o -Wl,--start-group,-lxil,-lgcc,-lc,--end-group

上記のコマンドで使用されているフラグの説明については、次のコマンドのいずれかを使用して、 コンパイラのヘルプを参照してください。

• arm-xilinx-eabi-gcc --help

• arm-xilinx-eabi-gcc -v --help

• arm-xilinx-eabi-gcc --target-help

コンパイラ  オプシ ョ ン

ARM 関連のフ ラ グを使用し て適用でき る、 GNU コ ンパイ ラ オプシ ョ ンについては、 GNU ウ ェブ サイ トhttp://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html を参照してください。 これらのフラグは、 要件に基づき上記の手順で使用できます。

ARM の GCC コンパイ ラ オプシ ョ ンはすべて、 上記のリ ンク先に リ ス ト されています。 しかし、 実際のサポートは使用しているプロセッサ (この場合は ARM Cortex A9) およびコンパイラ ツールチェーンによって異なり ます。

次は、 その例です。

Sourcery CodeBench Lite for Xilinx EABI は、 -mhard-float (-mfloat-abi=hard) をサポート しません。 soft および softfp の浮動小数点オプシ ョ ンのみがサポート されています。

ツールチェーンの詳細については、 次の SDK インス トール パスにある資料を参照してください。

<Xilinx_Vivado_Installation_Path>\SDK\<2014.1>\gnu\arm\nt\share\doc

その他の注意事項

C++ コードのサイズ

新のオープン ソース C++ 標準ライブラ リ (libstdc++-v3) を含む GCC ツールでは、 同等の C プログラムに比べて生成されるコードおよびデータ片が大き くなる場合があ り ます。 このオーバーヘッ ドの大部分は、例外処理およびランタイム型情報のコードおよびデータによるものです。 C++ アプリ ケーシ ョ ンによっては、 これらの機能は必要あ り ません。

このオーバーヘッ ドをなく し、コード サイズを 適化するには、 -fno-exceptions および -fno-rtti オプシ ョ ンを使用します。 これらのオプシ ョ ンは、アプリ ケーシ ョ ン要件やこれらの言語の機能に精通している場合のみに使用するこ とをお勧めします。 使用可能なコンパイラ オプシ ョ ンおよびそれらのオプシ ョ ンによる影響については、 GCC のマニュアルを参照してください。

C++ プログラムには、 よ り複雑な言語機能およびライブラ リ ルーチンのため、ダイナミ ッ ク メモ リの要件 (スタ ッ クおよびヒープ サイズ) が厳し くなっている場合があ り ます。

多くの C++ ラ イブラ リ ルーチンは、 ヒープからのメモ リの割り当てを要求します。 C++ プログラムに必要なヒープサイズおよびスタ ッ ク サイズが満たされているこ とを確認してください。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 39UG1043 (v2014.3) 2014 年 10 月 1 日

Page 40: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 2 章 : GNU コンパイラ  ツール

C++ 標準ライブラリ

C++ 標準ライブラ リは、 C++ 標準によ り定義されます。 これらのプラ ッ ト フォーム機能には、デフォルトのザイ リ ンクス Vivado ソフ ト ウェア プラ ッ ト フォームでは使用できないものもあ り ます。 たとえば、 ファ イル I/O は明確に定義された STDIN/STDOUT ス ト リームでしかサポート されません。 また、 ロケール関数、 スレッ ド セーフなどの機能もサポート されません。

注記 : C++ 標準ライブラ リは、 マルチスレッ ド環境で使用するよ うに構築されていません。 new、 delete などの共通C++ 関数はスレッ ド セーフではあ り ません。 マルチスレッ ド環境で C++ 標準ライブラ リ を使用する場合は、 注意が必要です。

GNU C++ 標準ライブラ リの詳細は、 GNU の ウェブ サイ トのマニュアルを参照してください。

位置独立コード  (PIC)

MicroBlaze コンパイラでは、 再配置可能な位置独立コードを生成する -fPIC オプシ ョ ンがサポート されています。

これらの機能はザイ リ ンクスのコンパイラでサポート されていますが、 Vivado ではスタンドアロン プラ ッ ト フォームしか提供されないので、 ほかのライブラ リおよびツールではサポート されません。 位置独立コードは、 ローダーまたはデバッガーでは認識されず、 ランタイムでの再配置は実行されません。 これらのコードの機能は、 ザイ リ ンクスライブラ リ、 スタート アップ ファ イル、 およびその他のツールでサポート されません。 サードパーティ OS ベンダーのツールでは、 これらの機能を標準で使用できるものがあ り ます。

その他のオプシ ョ ンおよび機能

-fprofile-arcs など、 その他のオプシ ョ ンおよび機能は、 ザイ リ ンクスの Vivado コンパイラおよびプラ ッ ト フォームでサポート されていない可能性があ り ます。 一部の機能は、 オープン ソース GCC で定義されているよ うに試験段階であ り、 不適切に使用する と、 不正なコードが生成されるこ とがあ り ます。 特定の機能の詳細は、 GCC のマニュアルを参照してください。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 40UG1043 (v2014.3) 2014 年 10 月 1 日

Page 41: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3章

XMD (Xilinx Microprocessor Debugger)

XMD (Xilinx® Microprocessor Debugger) は、 MicroBlaze™ プロセッサまたは Dual ARM Cortex-A9 MPC プロセッサを含むシステムの検証とプログラムのデバッグを行うためのツールです。これを使用して、ハード ウェア ボード上またはサイクル精度命令セッ ト シ ミ ュレータ (ISS) で実行するプログラムをデバッグできます。

XMD は、Tcl (ツール コマンド言語) インターフェイスを提供します。 このインターフェイスは、 ターゲッ トのコマンド ラインからの制御、ターゲッ トのデバッグ、および完成したシステム全体をテス トする複雑な検証スク リプ トの実行に使用します。

XMD は、 ターゲッ トのデバッグを制御するため、 GNU デバッガー (GDB) リモート TCP プロ ト コルをサポート しています。 Eclipse ベースのソフ ト ウェア ツールである SDK (ソフ ト ウェア開発キッ ト ) に含まれる、 MicroBlaze GDB(mb-gdb) または Cortex A9 GDB (arm-xilinx-eabi-gdb) など、 一部のグラフ ィカルなデバッガーはデバッグ用にこのインターフェイスを使用します。 どちらを使用しても、同じコンピューター上またはネッ ト ワークを介した リモート コンピュータ上で実行されている XMD にデバッガーは接続します。

XMD は、 プログラムをデバッグするハード ウェア システムに関する情報を得るため、 XMP (Xilinx MicroprocessorProject) システム ファ イルまたは system.xml ファ イルのどちらか使用可能なほうのファイルを読み込みます。 この情報は、メモ リ範囲テス ト を実行したり、高速ダウンロードのための MicroBlaze と MDM (Microprocessor Debug Module)との接続を決めるためなどに使用されます。

X-Ref Target - Figure 3-1

図 3‐1 : XMD を使用したデバッグ

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 41UG1043 (v2014.3) 2014 年 10 月 1 日

Page 42: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

XMD の使用法xmd [-h] [-help] [-hw <hardware_specification_file>] [-ipcport <port_number>][-nx] [-opt <optfile>][-v] [-xmp <xmpfile>][-tcl <tcl_file> <tcl_args>]

XMD のオプシ ョ ン

ヘルプの表示

コマンドの使用方法を表示します。

コマンド :-h、 -help

ハードウェア仕様ファイル

ハードウェア コンポーネン ト を記述する XML ファ イルを指定します。

コマンド :-hw <hardware_specification_file>

ポート番号

XMD サーバーを <portnum> で指定したポート番号で開始します。XMD の内部コマンドは、 この TCP ポートを使用して出力されます。 [<port_number>] を指定しない場合は、 2345 が使用されます。

コマンド :-ipcport <port_number>

初期化ファイルを使用しない

起動時に xmd.ini ファ イルを使用しません。

コマンド :-nx

オプシ ョ ン  ファイル

ターゲッ トに接続するのに使用するオプシ ョ ン ファ イルを指定します。オプシ ョ ン ファ イルには XMD の接続コマンドが含まれます。

コマンド :-opt <connect_option_file>

Tcl ファイルの指定

実行する XMD Tcl スク リプ ト を指定します。

<tclargs> は、 Tcl スク リプ トへの引数を指定します。 この Tcl ファ イルは、 XMD で使用されます。 スク リプ トの実行が終了する と、 XMD が終了します。 -tcl の後にほかのオプシ ョ ンを指定するこ とはできません。

コマンド :-tcl <tclfile> <tclarg>

バージ ョ ン

バージ ョ ン番号を表示します。

コマンド :-v

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 42UG1043 (v2014.3) 2014 年 10 月 1 日

Page 43: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

XMP ファイル

読み込む XMP ファイルを指定します。

コマンド :-xmp <xmpfile>

XMD を起動する と、 次の処理が実行されます。

• XMD Tcl スク リプ トが指定されている場合は、 そのスク リプ ト を実行して終了します。

• XMD Tcl スク リプ トが指定されていない場合は、 XMD がインタラ クティブ モードで実行されます。 この場合、XMD は次の処理を実行します。

a. ${HOME}/.xmdrc ファ イルを作成します。 このコンフ ィギュレーシ ョ ン ファ イルを使用して、 XMD コマンドを使用するカスタム Tcl コマンドを作成できます。

b. XMD% プロンプ ト を表示します。 XMD Tcl プロンプ トから、 44 ページの 「XMD コマンド」 で説明するように、 XMD コマンドを使用してデバッグを実行できます。

XMD コンソールXMD コンソールは標準 Tcl コンソールで、使用可能な Tcl コマンドはすべてこ こで実行できます。 また、 XMD には、ファ イル名やコマンド名を自動入力したり、 コマンド履歴を保存する機能など、 編集に便利な機能があ り ます。

自動入力できる Tcl コマンドは、 <_Install_Area>/data/xmd/cmdlist ファ イルで定義されています。 コマンド履歴は $HOME/.xmdcmdhistory に保存されています。

コ メン ト名の自動入力やコマンド履歴の保存に別のファイルを使用する場合は、 $XILINX_XMD_CMD_LIST および$XILINX_XMD_CMD_HISTORY の環境変数を使用して、 デフォルト設定を上書きします。

- hw XMP ファ イルを読み込みます。 -nx オプシ ョ ンが指定されていない場合、 xmd.ini ファイルが現在のディ レク ト リにあれば、 それが使用されます。

-opt プロセッサに接続するために接続オプシ ョ ン ファ イルを使用します。

-ipcport XMD ソケッ ト サーバーを開きます。

-xmp システム XMP ファ イルを読み込みます。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 43UG1043 (v2014.3) 2014 年 10 月 1 日

Page 44: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

XMD コマンド

XMD ユーザー コマンドの一覧

次に、 XMD コマンドの一覧を示します。 コマンド名をク リ ッ クする と、 そのオプシ ョ ンの説明にジャンプします。

XMD ユーザー コマンド

bpl

ブレークポイン ト /ウォ ッチポイン ト を リ ス ト します。

bpr

ブレークポイン ト /ウォ ッチポイン ト を削除します。

ユーザー コマンド

「bpl」

「bpr」

「bps」

「close_terminal」

「con」

「connect」

「cstp」

「data_verify」

「debugconfig」

「dis」

「disconnect」

「dow」

「dow -data」

「elf_verify」

「fpga -f <bitstream>」

「mrd <address> [<number of words|half words|bytes> {w|h|b}]」

「mrd_var」

「mwr」

「profile」

「read_uart」

「rrd」

「rst」

「rwr」

「run」

「safemode [options]」

「srrd」

「stackcheck」

「state」

「stats」

「stop」

「stp」

「targets」

「terminal」

「tracestart」

「tracestop」

「watch」

「xload」

オプシ ョ ン 使用例

bpl bpl

オプシ ョ ン 使用例

bpr {all|<bp id>|<address>| <function>}bpr 0x400bpr mainbpr all

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 44UG1043 (v2014.3) 2014 年 10 月 1 日

Page 45: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

bps

<address> または <function name> の開始部分にソフ ト ウェア ブレークポイン ト またはハード ウェア ブレークポイント を設定します。 function を指定する と、 後にダウンロード された ELF ファ イルから検索されます。デフォルトは、ソフ ト ウェア ブレークポイン ト (sw) です。

close_terminal

ターミナル コマンド と MDM UART ターゲッ ト接続で開いたターミナル サーバーを閉じます。

con

現在の PC または指定のアドレス <Execute Start Address> から実行を続けます。

-block オプシ ョ ンを指定した場合は、 プロセッサがブレークポイン ト またはウォッチポイン トで停止したと きに、コマンドが戻り ます。

-timeout で値を指定する と、 タイムアウ トする時間を設定できます。

-block は、 スク リプ ト記述に便利なオプシ ョ ンです。

connect

<target_type> に接続します。 ターゲッ ト タイプには mb と mdm があ り ます。 詳細は、 58 ページの 「connect コマンドのオプシ ョ ン」 を参照してください。

cstp

指定したサイクル数だけ進めます。 このコマンドは ISS ターゲッ トでのみサポート されています。

オプシ ョ ン 使用例

bps {<address>|<function_name>} {sw | hw}

bps 0x400bps main hw

オプシ ョ ン 使用例

close_terminal close_terminal

オプシ ョ ン 使用例

con [<Execute Start Address>] [-block [-timeout <Seconds>]]

concon 0x400

オプシ ョ ン 使用例

connect <target_type(s)> connect mb mdm

オプシ ョ ン 使用例

cstp <number of cycles> cstpcstp 10

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 45UG1043 (v2014.3) 2014 年 10 月 1 日

Page 46: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

data_verify

<Binary filename> で指定されるファ イルが、 <Load Address> で指定されているアドレスでターゲッ トに正し くダウンロード されているかど うかを確認します。

debugconfig

ターゲッ トのデバッグ セッシ ョ ンを設定します。 詳細は、 68 ページの 「デバッグ セッシ ョ ンの設定」 を参照してください。

dis

逆アセンブルを実行します。 MicroBlaze でのみサポート されています。

disconnect

現在ターゲッ ト となっているプロセッサへの接続を解除し、 GDB サーバーを閉じて、 以前のターゲッ トであるプロセッサに戻り ます。

dow

指定の ELF ファ イルまたはデータ ファ イル (-data オプシ ョ ンを使用) を、現在のターゲッ トのメモ リにダウンロードします。アドレスを指定しない場合は、ELF ファ イルのヘッダーを読み込んで、ダウンロード アドレスが決ま り ます。

オプシ ョ ン 使用例

data_verify <binary_filename> <load_address>

data_verify system.dat 0x400

オプシ ョ ン 使用例

debugconfig debugconfig

debugconfig -step_mode enable_interrupt

debugconfig -step_mode {disable_interrupt | enable_interrupt}

debugconfig -memory_datawidth_matching enable

debugconfig -memory_datawidth_matching {disable | enable}

debugconfig -reset_on_run system enable

debugconfig -reset_on_run {system enable | processor enable | disable}

debugconfig -reset_on_data_dow processor enable

debugconfig -reset_on_data_dow {system enable | processor enable | disable}

オプシ ョ ン 使用例

dis [<address in hex>] [<number of words>]

dis 0x400 10

オプシ ョ ン 使用例

disconnect <target id> disconnect 0

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 46UG1043 (v2014.3) 2014 年 10 月 1 日

Page 47: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

ELF ファ イルで LOAD に指定されているセグメン トだけが、 メモ リに書き込まれます。

dow -data

ELF ファ イルでアドレスが指定される場合 (MicroBlaze がターゲッ トの場合のみ)、 位置独立 (PIC) コード と して処理され、 指定アドレスでダウンロード されます。 また、 R20 レジスタが、 PIC コードにしたがって開始アドレスに設定されます。

PIC で GOT (Global Offset Table) へのポインターを保存するために、 この R20 レジスタは予約されています。 これは、PIC 以外のコードでは不揮発であ り、 関数呼び出し全体に対し、 保存しておく必要があ り ます。

ELF ファ イルがダウンロード される と、 リセッ トが実行され、 ソフ ト ウェア ブレークポイン ト を使用して リセッ トロケーシ ョ ンでプロセッサが停止し、 ELF プログラムがメモ リに読み込まれます。 リセッ トは、 システムを既知の良好状態にするために実行されます。 リセッ トの動作は、 次のコマンドを使用して設定できます。

debugconfig -reset_on_run {system enable | processor enable | disable}

debugconfig -reset_on_data_dow{system enable | processor enable | disable}

詳細は、 68 ページの 「デバッグ セッシ ョ ンの設定」 を参照して ください。

elf_verify

executable.elf ファ イルがターゲッ トに正し くダウンロード されたかど うかを確認します。 ELF ファ イルを指定しない場合は、 ターゲッ トに 後にダウンロード された ELF ファ イルが確認されます。

fpga -f <bitstream>

FPGA デバイスのビッ ト ス ト リームを読み込みます。 オプシ ョ ンで、 ケーブル、 JTAG コンフ ィギュレーシ ョ ン、 およびデバッグ デバイス オプシ ョ ンを指定します。

詳細は、 58 ページの 「connect コマンドのオプシ ョ ン」 を参照して ください。

オプシ ョ ン 使用例

dow <filename.elf> dow executable.elf

dow <PIC filename.elf> <load_address>

dow executable.elf 0x400

オプシ ョ ン 使用例

dow -data <binary_filename> <load_address>

dow -data system.dat 0x400

オプシ ョ ン 使用例

elf_verify [<filename.elf>] elf_verify executable.elf

オプシ ョ ン 使用例

fpga -f <bitstream> fpga -f download.bit

fpga -f <bitstream> [-cable <cable_options>]|[-configdevice <configuration_options>] | [-debugdevice <device_name> ]

fpga -f download.bit -cable type xilinx_parallel

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 47UG1043 (v2014.3) 2014 年 10 月 1 日

Page 48: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

mrd <address> [<number of words|half words|bytes> {w|h|b}]

指定したアドレスから始まる メモ リ ロケーシ ョ ンからワード /バイ ト数を読み出します。デフォルトでは、1 ワード読み出します (w)。

<Global Variable Name> を指定した場合、 以前にダウンロード された ELF ファ イルのグローバル変数でポイン ト される メモ リ を読み出します。

mrd_var

<filename.elf> で指定した ELF ファ イル、 または以前にダウンロード された ELF ファ イルのグローバル変数でポイント される メモ リ を読み出します。

mwr

<address> または <Global Variable Name> で指定された位置から始まる メモ リ ロケーシ ョ ンに、 指定したワード /バイト数を書き込みます。 デフォルトでは、 1 ワード (w) 書き込みます。

profile

プロ フ ァ イル出力フ ァ イルを生成し ます。 このフ ァ イルは、 mb-gprof (MicroBlaze 用) または arm-xilinx-eabi-gprof(Cortex A9 用) でプロファイル情報を作成するために読み込まれます。

プロファ イル コンフ ィギュレーシ ョ ンのサンプリ ング周波数 (Hz)、 ヒ ス ト グラムのバイナリ サイズ、 プロファ イルデータ収集のためのメモ リ アドレスを指定します。

read_uart

read_uart start コマンドは、MDM UART インターフェイスからの出力を Tcl チャネル (TCL チャネル ID) に出力します。

read_uart stop コマンドは、 指定した Tcl チャネルへの出力を停止します。

オプシ ョ ン 使用例

mrd <address> [<number of words|half words|bytes> {w|h|b}]

mrd 0x400

mrd 0x400 10

mrd 0x400 10 h

mrd <Global Variable Name>

オプシ ョ ン 使用例

mrd_var <Global Variable Name> <filename.elf>

mrd_var global_var1 executable.elf

オプシ ョ ン 使用例

mwr <address> <values>[<number of words/half words/bytes> {w|h|b}]

mwr 0x400 0x12345678

mwr 0x400 0x1234 1 h

mwr 0x400 {0x12345678 0x87654321} 2

mwr <Global Variable Name> <values>[<number of words/half words/bytes> {w|h|b}]

オプシ ョ ン 使用例

profile [-o <GMON Output filename>] profile -o gproff.out

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 48UG1043 (v2014.3) 2014 年 10 月 1 日

Page 49: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

Tcl チャネルは、開いているファ イルまたはソケッ ト接続を示します。 read_uart コマンドを使用する前に、適切なコマンドを使用して Tcl チャネルを開いておく必要があ り ます。

rrd

すべてのレジスタまたは <reg_num> で指定した数のレジスタを読み出します。

rst

システムを リセッ ト します。

-processor オプシ ョ ンを指定する と、 現在設定されているプロセッサがリセッ ト されます。

プロセッサが実行中でない場合 (state コマンドで確認)、 プロセッサはリセッ ト時にプロセッサ リ セッ ト ロケーシ ョンで停止します。

Zynq‐7000 AP SoC デバイスの rst

Zynq®-7000 AP SoC デバイスの場合は、 rst にさ らに追加オプシ ョ ンがいくつかあ り ます。

指定されているプロセッサがソフ ト リ セッ ト を出力するよ うにします。 システムは良好な状態である必要があ り ます。

ハード ウェア ブレークポイン トは、 リ セッ ト を出力する前に bps コマンドを使用して設定できます。 これはフラ ッシュからブートするコードをデバッグするのに便利です。

オプシ ョ ン 使用例

read_uart [{start | stop}] [<TCL Channel ID>]

read_uart start

read_uart stop

read_uart start $channel_id

オプシ ョ ン 使用例

rrd [<reg_num>] rrd

rrd r1 (または) rrd R1

rrd 1

オプシ ョ ン 使用例

rst [-processor] rst

rst - processor

オプシ ョ ン 説明 使用例

rst [-processor] プロセッサを リセッ ト します。 rst - processor

[-slcr] SLCR リセッ ト を ト リガーします。 rst - slcr

[-debug_sys] DAP を介してデバッグ システム リセッ ト を トリガーします。

rst - debug_sys

[-srst] ソ フ ト リ セ ッ ト を ト リ ガーするため、 JTAGケーブルの SRST ピンをアサート します。

rst -srst

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 49UG1043 (v2014.3) 2014 年 10 月 1 日

Page 50: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

rwr

<register_number>、 <register_name>、 または <hex_value> からの書き込みを保存します。

run

プログラムを開始アドレスから実行します。 このコマン ドは リ セッ ト を実行し、 ブレークポイン ト を使用してプロセッサを リセッ ト ロケーシ ョ ンで停止し、 ELF プログラム データ セクシ ョ ンを メモ リに読み込みます。 ELF プログラム データ セクシ ョ ンを読み込むこ とによ り、 スタティ ッ ク変数が正し く初期化され、 リセッ ト を実行するこ とによ りシステムが既知の良好状態になり ます。 リセッ トの動作は、 次のコマンドを使用して設定できます。

debugconfig -reset_on_run {system enable | processor enable | disable}

debugconfig -reset_on_data_dow{system enable | processor enable | disable}

詳細は、 68 ページの 「デバッグ セッシ ョ ンの設定」 を参照して ください。

safemode [options]

セーフ モードのオン/オフや詳細の設定をした り、 セーフ モードで読み出すためのファ イルを指定します。 safemodeで使用できるオプシ ョ ンの詳細は次のとおりです。

srrd

特殊レジスタまたは<reg_name> で指定したレジスタを読み出します。

オプシ ョ ン 使用例

rwr <register_number> | register_name> |<Hex_value>

rwr pc 0x400

オプシ ョ ン 使用例

run run

オプシ ョ ン 説明 使用例

safemode [-config <mode><exception_mask>]

現在の safemode コンフ ィギュレーシ ョ ンを変更します。

safemode -config <mode><exception_mask>

safemode [{on|off}]

safemode のオン/オフを設定し ます。

safemode on safemode off

safemode [-config <exception_id><exception_addr>]

例外ハン ド ラ ID およびア ド レスを変更します。

safemode -config<exception_id>

safemode[-info] safemode に関する情報を表示します。

safemode -info

safemode [-elf <elf_file>]

デバッグする ELF ファ イルを指定します。

safemode -elf <elf_file>

オプシ ョ ン 使用例

srrd srrd

srrd [<register_name>] srrd pc

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 50UG1043 (v2014.3) 2014 年 10 月 1 日

Page 51: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

stackcheck

現在のターゲッ トで実行中のプログラムのスタ ッ ク使用情報を表示します。 ターゲッ トに 後にダウンロードされた ELF ファ イルのスタ ッ クがチェッ ク されます。

state

ターゲッ ト を指定しない場合、 すべてのターゲッ トの現在のステートが表示されます。

<target_id> を指定した場合、 そのターゲッ トのステートが表示されます。

-system <system_id> を指定した場合、そのシステムに含まれるすべてのターゲッ トの現在のステートが表示されます。

stats

ISS ターゲッ トに対する実行統計を表示します。 <filename> には、 ト レースから収集された情報が出力されるファイルを指定します。

stop

ターゲッ ト を停止します。 MicroBlaze の場合、 メモ リ または FSL アクセスでプログラムが停止した場合は、 強制停止になり ます。

stp

指定したステップ数だけ命令を進めます。

オプシ ョ ン 使用例

stackcheck stackcheck

オプシ ョ ン 使用例

state state

state [<target_id>] state <target_id>

state -system <system_id> state -system <system_id>

オプシ ョ ン 使用例

stats stats

stats [<filename>] stats trace.txt

オプシ ョ ン 使用例

stop stop

オプシ ョ ン 使用例

stp stp

stp <number of instructions> stp 10

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 51UG1043 (v2014.3) 2014 年 10 月 1 日

Page 52: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

targets

現在のターゲッ トに関する情報を リ ス ト した り、 ターゲッ ト を変更します。

terminalJTAG ベースのハイパーターミナルを mdm UART インターフェイス と通信させます。 mdm で UART インターフェイスをイネーブルにする必要があ り ます。

-jtag_uart_server オプシ ョ ンを指定した場合、 TCP サーバーが <port_no> で指定したポート番号で開きます。 任意のハイパーターミナル ユーティ リ ティ を使用して、 TCP ソケッ トで opb_mdm UART インターフェイス と通信します。 <port_number> のデフォルト値は 4321 です。

<baudrate> には JTAG UART のポートがデータを読み出す速度を指定します。 こ こで使用できる値は、 low、med、highです。 デフォルト値は med です。

XMD は JTAG UART ポートでデータを収集しているので、ボーレート を高くする とほかのデバッグ操作に影響が出る可能性があ り ます。

tracestartト レース情報の収集を開始し、 <filename> で指定したファイルに記述します。

ト レース情報の収集は、 プログラム実行のどの時点でも停止、 開始できます。 ファ イル名は、 初に tracestart を使用する場合にのみ指定します。

< p c_trace_filename>のデフォルトのファイル名は isstrace.out です。

<func_trace_filename> のデフォルトのファ イル名は fntrace.out です。

注記 : これは ISS ターゲッ トでのみサポート されています。

tracestop

ト レース情報の収集を停止します。 done を指定した場合は、 ト レース情報収集を終了します。

オプシ ョ ン 使用例

targets targets

targets <target_id> targets 0

targets -system <system_id> targets -system 1

オプシ ョ ン 使用例

terminal terminal

terminal [-jtag_uart_server] [<port_number>][<baudrate>]

terminal -jtag_uart_server 4321 high

オプシ ョ ン 使用例

tracestart tracestart

tracestart [<pc_trace_filename>] [-function_name <func_trace_filename>]

tracestart pctrace.txt

tracestart pctrace.txt -function_name fntrace.txt

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 52UG1043 (v2014.3) 2014 年 10 月 1 日

Page 53: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

注記 : これは ISS ターゲッ トでのみサポート されています。

watch指定アドレスに読み出しまたは書き込みのウォッチポイン ト を設定します。値がデータ と一致する と、プロセッサを停止します。

アドレスおよびデータは、 16 進数フォーマッ ト (0x) または 2 進数フォーマッ ト (0b) で指定できます。

ドン ト ケアの値は、 X で指定します。 連続したアドレスのみをアドレス範囲に含めるこ とができます。

data のデフォルト値は 0xXXXXXXXX です。 この値は、 任意の値に一致します。

xload

ハード ウェア仕様の XML ファ イルを読み込みます。 XMD は、 プロセッサの命令およびデータ メモ リ アドレスを取得するため XML ファ イルを読み込みます。 この情報は、 プロセッサのメモ リにダウンロード されたプログラムおよびデータを確認するために使用されます。 IP インテグレーターは、 SDK へのエクスポート プロセス中にハード ウェア仕様ファ イルを生成します。

オプシ ョ ン 使用例

tracestop tracestop

tracestop [done] tracestop done

オプシ ョ ン 使用例

watch {r | w} <address> [<data>] watch r 0x400 0x1234

watch r 0x40X 0x12X4

watch r 0b01000000XXXX 0b00010010XXXX0100

watch r 0x40X

オプシ ョ ン 使用例

xload hw <hw_spec_file> xload hw system.xml

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 53UG1043 (v2014.3) 2014 年 10 月 1 日

Page 54: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

特殊用途レジスタ名

MicroBlaze の特殊用途レジスタ名

MicroBlaze プロセッサ用の特殊用途レジスタ名は次のとおりです。

MicroBlaze の特殊用途レジスタ名の詳細、 説明、 使用法は、 『MicroBlaze プロセッサ リ ファレンス ガイ ド』 (UG081)(UG081)[参照 3] の 「MicroBlaze アーキテクチャ」 の章で 「特殊用途レジスタ」 を参照してください。

注記 : MicroBlaze を XMDSTUB モードでデバッグする場合、 アクセスできるレジスタは PC および MSR のみです。

重要な Cortex A9 のレジスタ

Cortex A9 にはコプロセッサ レジスタのセッ トがあ り ます。 それをこ こに リ ス ト します。

この章では、 これらのレジスタについて例を挙げて説明されています。 追加情報および ARM レジスタの全セッ トについては、 ARM の資料を参照して ください。

XMD リセッ ト  シーケンス

rst コマン ドが出力される と、 XMD はプロセッサまたはシステムを既知のステー ト に戻すため リ セッ ト し ます。MicroBlaze プロセッサの場合の、 rst の操作実行シーケンスは次のよ うになっています。

1. リセッ ト ロケーシ ョ ン (0x0) でハードウェア ブレークポイン ト を設定します。

2. リセッ ト信号 (システム リセッ ト またはプロセッサ リセッ ト ) を出力します。 プロセッサが実行を開始します。

3. プロセッサがリセッ ト ロケーシ ョ ンで停止したら、 ブレークポイン ト を削除します。

推奨される  XMD フロー

次に、 1 つのプログラムのデバッグ、 マルチプロセッサ環境での複数のプログラムのデバッグ、 デバッグ セッシ ョ ンでのプログラムの実行に推奨される XMD の手順を説明します。

1 つのプログラムのデバッグ

1 つのプログラムをデバッグするには、 次の手順に従います。

1. プロセッサを接続します。

pc msr ear esr zpr

fsr btr pvr0 pvr1 zpr

pvr2 pvr3 pvr4 pvr5 zpr

pvr6 pvr7 pvr8 pvr9

pvr10 pvr11 edr pid

表 3‐1 : Cortex A9 レジスタ名

ctrl dma tcm

id etc vfp

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 54UG1043 (v2014.3) 2014 年 10 月 1 日

Page 55: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

2. ELF ファ イルをダウンロード します。

3. 必要なブレークポイン トおよびウォッチポイン ト を設定します。

4. con コマンドを使用してプロセッサの実行を開始するか、stp コマンドを使用してプログラムの命令を順に実行します。

5. state コマンドを使用してプロセッサのステータスを確認します。

6. 必要に応じて stop コマンドを使用し、 プロセッサを停止します。

7. プロセッサが停止したら、 レジスタおよびメモ リに対して読み出しおよび書き込みを実行します。

8. プログラムを再実行するには、 run コマンドを使用します。

マルチプロセッサ環境での複数のプログラムのデバッグ

マルチプロセッサ環境で複数のプログラムをデバッグするには、 次の手順に従います。

1. プロセッサ 1 に接続します。

2. debugconfig コマンドを使用して リセッ トの動作を設定します。 リセッ トの動作は、 システム アーキテクチャによ り異なり ます。 詳細は、 68 ページの 「デバッグ セッシ ョ ンの設定」 を参照してください。

3. ELF ファ イルをダウンロード します。

4. 必要なブレークポイン トおよびウォッチポイン ト を設定します。

5. con コマンドを使用してプロセッサの実行を開始するか、stp コマンドを使用してプログラムの命令を順に実行します。

6. プロセッサ 2 に接続します。

7. debugconfig コマンドを使用して リセッ トの動作を設定します。 リセッ トの動作は、 システム アーキテクチャによ り異なり ます。 詳細は、 68 ページの 「デバッグ セッシ ョ ンの設定」 を参照してください。

8. ELF ファ イルをダウンロード します。

9. 必要なブレークポイン トおよびウォッチポイン ト を設定します。

10. con コマンドを使用してプロセッサの実行を開始するか、stp コマンドを使用してプログラムの命令を順に実行します。

11. targets コマンドを使用してシステムのターゲッ ト を リ ス ト します。 各ターゲッ トにはターゲッ ト ID が付けられています。 現在指定されているターゲッ トにはアスタ リ スク (*) が付いています。

12. targets <target id コマンド>を使用してターゲッ ト を切り替えます。

13. state コマンドを使用してプロセッサのステータスを確認します。

14. stop コマンドを使用して、 プロセッサを停止します。

15. プロセッサが停止したら、 レジスタおよびメモ リに対して読み出しおよび書き込みを実行します。

16. プログラムを再実行するには、 run コマンドを使用します。

デバッグ セッシ ョ ンでのプログラムの実行

1. プロセッサを接続します。

2. ELF ファ イルをダウンロード します。

3. exit 関数でブレークポイン ト を設定します。

4. con コマンドを使用してプロセッサの実行を開始します。

5. state コマンドを使用してプロセッサのステータスを確認します。

6. stop コマンドを使用して、 プロセッサを停止します。

7. プロセッサが停止したら、 レジスタおよびメモ リに対して読み出しおよび書き込みを実行します。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 55UG1043 (v2014.3) 2014 年 10 月 1 日

Page 56: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

8. プログラムを再実行するには、 run コマンドを使用します。

例外の自動チェ ック用の Safemode の使用

エラーが発生する と、プログラムで発生した例外をチェッ クする機能が XMD にはあ り ます。この場合のエラーとは、無効な命令の実行やバス エラーなどを指します。 次の手順に従ってください。

1. プログラムをダウンロード します。

2. safemode on コマンドを実行します。

3. con コマンドを使用してプロセッサの実行を開始します。

例外が発生する と、 プログラムが停止します。 GUI タイプのデバッガー (Insight GDB または SDK) を使用する場合、この機能はさらに便利です。

• SDK の場合は、 プログラムを実行する前に、 [Initialization ] タブの [Enable Safemode] チェッ クボッ クスをオンにします。

• GDB の場合は、GDB でプログラムを実行する前に、プログラムをダウンロード して、XMD コンソールで safemodeon コマンドを実行します。

例外が発生する と、 プログラムは停止し、 GUI に例外を発生させたコードが表示されます。

プロセッサのデフォルト例外チェ ック設定

表 3-2 は、 MicroBlaze の例外チェッ クのデフォルト設定を示しています。

例外設定の変更

デフォルトの例外設定を変更するには 2 通りの方法があ り ます。

1. xmdconfig [-mb_trap_mask] [MASK] コマンドを使用

表 3‐2 : MicroBlaze の例外処理設定  

例外 ID チェ ック  例外名

0 あ り 高速シンプレッ クス リ ンクによる例外

1 なし 不整列データ アクセスによる例外

2 あ り 不正な opcode によ る例外

3 あ り 命令バス エラーによる例外

4 あ り データ バス エラーによる例外

5 あ り 0 での除算による例外

6 あ り 浮動小数点ユニッ トによる例外

7 あ り 特権命令による例外

8 あ り データ格納による例外

9 あ り 命令格納による例外

10 あ り データ TLB がないこ とによる例外

11 あ り 命令 TLB がないこ とによるによる例外

12 あ り アサート エラー

13 あ り プログラム終了

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 56UG1043 (v2014.3) 2014 年 10 月 1 日

Page 57: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

現在の XMD セッシ ョ ンでのすべてのターゲッ トにマスクを設定します。 すべての XMD セッシ ョ ンに対し、 カスタムのデフォルト設定を定義するには、 ホーム ディ レク ト リにある .xmdrc ファ イルにそのコマンドを記述します。

2. safemode -config mode [MASK] コマンドを使用

現在のターゲッ トにのみマスクを設定します。 プログラムをデバッグしながら、例外チェッ クの設定を変更するのに便利な方法です。

注記 :現在のターゲッ ト との接続を解除する と、 そのターゲッ トは破棄されます。

safemode 設定の確認

現在の safemode の設定を確認するには、 safemode -info コマンドを使用します。

セーフ モードの場合、 XMD はチェッ ク したい例外ハンド ラにブレークポイン ト を設定します。

MicroBlaze プロセッサの場合、 すべての例外で PC から 0x20 までが使用できます。

スタン ドアロンまたは Xilkernel プロジェ ク ト のほとんどで設定の確認ができますが、 別のソフ ト ウェア プラ ッ トフォームが使用されている場合は、設定確認ができないこ とがあ り ます。その場合は、safemode -config <exception_id><exception_handler_addr> コマンドを使用して、 例外ハンド ラのアドレスを設定します。

XMD の ARM 用コマンド

表 3‐3 : ARM 用コマンド

コマンド 説明

mrc <CPx> <op1> <CRn> <CRm> <op2>

CRn および CRm パラ メーター、 op1 および op2 の opcode で指定されている ARM コプロセッサの CPx レジスタを読み出します。 これらのパラメーターおよび opcode の順番は、ジェネ リ ッ クの ARM MRC 命令と同じです。

dp_rrd <reg offset> ARM デバッグ アクセス ポート (DAP) で使用可能なデバッグ ポート レジスタを読み出します。

ap_rrd <reg offset> ARM デバッグ アクセス ポート (DAP) で使用可能なアクセス ポート レジスタを読み出します。

mcr <CPx> <op1> <CRn> <CRm> <op2> <word>

CRn および CRm パラ メーター、 op1 および op2 の opcode で指定されている ARM コプロセッサの CPx レジスタに書き込みます。 これらのパラメーターおよび opcode の順番は、ジェネ リ ッ クの ARM MRC 命令と同じです。

dp_rwr <reg offset> ARM デバッグ アクセス ポート (DAP) で使用可能なデバッグ ポート レジスタに書き込みます。

ap_rwr <reg offset> ARM デバッグ アクセス ポート (DAP) で使用可能なアクセス ポート レジスタに書き込みます。

mrd_phys <address> [num] [w|h|b]

[-ocm]

AHB アクセス ポートからの ARM 物理メモ リの読み出し。

num で指定されている数のバイ ト /ハーフ ワード /ワードを、 <address> で指定されているアドレスで読み出します。

デフォルト :w (ワード )

0x0 で OCM から読み出します (DDR が 0x0 に再マップされていない場合)。

dmrd <address> ARM デバッグ インターフェイスで使用可能な CoreSight メモ リ を読み出します。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 57UG1043 (v2014.3) 2014 年 10 月 1 日

Page 58: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

connect コマンドのオプシ ョ ンXMD では、 異なるターゲッ ト (プロセッサまたはペリ フェラル) でプログラムをデバッグできます。

• ターゲッ ト と通信する と き、 XMD はターゲッ トに接続し、 ID を接続に各ターゲッ トに割り当てます。

• プロセッサに接続する と き、 GDB サーバーが開始し、 GDB または SDK との通信が可能になり ます。

使用法

connect {mb | mdm | arm} <Connection_Type> [Options]

次のセクシ ョ ンではターゲッ ト別の接続オプシ ョ ンについて説明します。

MicroBlaze プロセッサのデバッグXMD では、 MDM ペリ フェラルを使用して、 JTAG を介して複数の MicroBlaze プロセッサに接続できます。XMD は、JTAG またはシ リ アル インターフェイスを介して、 XMDStub などの ROM モニターと通信します。 プログラムのデバッグには、 ビルト インのサイクル精度 MicroBlaze ISS も使用できます。 次のセクシ ョ ンでは、 これらのターゲッ トのデバッグ オプシ ョ ンについて説明します。

mwr_phys <addr> <values> [<num> <w|h|b>]

[-ocm]

AHB アクセス ポートからの ARM 物理メモ リの書き込み。

num で指定されている数のバイ ト /ハーフ ワード /ワードを、 <address> で指定されているアドレスで書き込みます。

デフォルト :w (ワード )

0x0 で OCM に書き込みます (DDR が 0x0 に再マップされていない場合)。

dmwr <address> ARM デバッグ インターフェイスで使用可能な CoreSight メモ リに書き込みます。

表 3‐4 : connect コマンドのオプシ ョ ン

オプシ ョ ン 説明

mb MicroBlaze プロセッサに接続します。

mdm MDM ペリ フェラルに接続します。

arm Cortex- A9 プロセッサおよび Coresight に接続します。

<Connection_Type> 接続方法を指定します。 ターゲッ トによって異なり ます。

[Options] 接続オプシ ョ ン

表 3‐3 : ARM 用コマンド

コマンド 説明

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 58UG1043 (v2014.3) 2014 年 10 月 1 日

Page 59: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

MDM を使用した MicroBlaze のデバッグ

MDM に接続するには、 connect mb mdm コマンドを使用し、 リモート GDB サーバーを起動します。 MDM では、ハード ウェア ブレークポイン トおよびシングル ステップのデバッグがサポート されており、ROM モニターは必要あ り ません。

59 ページの図 3-2は、 MicroBlaze MDM ターゲッ ト を説明したものです。

X-Ref Target - Figure 3-2

connect mb mdm コマンドでオプシ ョ ンを指定しない場合は、XMD によ り JTAG ケーブルを検出し、MicroBlaze-MDMシステムを含む FPGA デバイスをチェーンで接続します。

XMD が JTAG チェーンまたは FPGA デバイスを自動検出しない場合は、 次のオプシ ョ ンを使用して指定する必要があ り ます。

使用法

connect mb hw [-cable <JTAG Cable options>] {[-configdevice <JTAG chain options>]} [-debugdevice <MicroBlaze options>]

図 3‐2 : MDM を使用した MicroBlaze のデバッグ

X10843

JTAG

XMD

MicroBlaze Debug SignalsAXI Bus

Multiple MicroBlazeProcessors

MicroBlaze

MDMUART

MicroBlaze

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 59UG1043 (v2014.3) 2014 年 10 月 1 日

Page 60: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

JTAG ケーブルおよび JTAG チェーンのオプシ ョ ン

JTAG ケーブルおよびチェーンのオプシ ョ ンについてはTable 3-8, プログラム初期化オプシ ョ ン on page 75およびTable 3-9, レジスタ /メモ リのオプシ ョ ン on page 77をそれぞれ参照してください。

MicroBlaze のオプシ ョ ン

表 3-5 は MicroBlaze のオプシ ョ ンを説明しています。

MDM を使用した MicroBlaze のデバッグにおける要件

1. ハードウェア ブレークポイン ト、 ステップや停止などの MicroBlaze のハードウェア デバッグ機能を使用するには、 ハード ウェア デバッグ ポート を MDM に接続する必要があ り ます。

2. MDM で UART 機能を使用するには、システムに MDM コアをインスタンシエート して、C_USE_UART パラ メーターを設定する必要があ り ます。

注記 : MDM を使用する場合は、 XMDSTUB モードではなく executable モードでプログラムをコンパイルする必要があ り ます。 XMDStub をコンパイルするための XMDSTUB_PERIPHERAL を指定する必要はあ り ません。

表 3‐5 : MicroBlaze のオプシ ョ ン

オプシ ョ ン 説明

cpunr <CPU Number> MDM に接続された MicroBlaze プロセッサが複数ある FPGA で、デバッグする MicroBlaze プロセッサの番号を指定します。 プロセッサの番号は、 1 から開始します。

devicenr <MicroBlaze device position>

MicroBlaze プロセッサを含む FPGA デバイスの JTAG チェーン内での位置を指定します。 デバイス位置の番号は、 1 から開始します。

romemstartadr <ROM start address>

読み出し専用メモ リ (ROM) の開始アドレスを指定します。 フラ ッシュ メモ リの範囲を指定するには、 このオプシ ョ ンを使用します。 XMD は、 ソフ ト ウェア ブレークポイン ト ではな くハード ウェアブレークポイン ト を設定します。

romemsize <ROM Size in Bytes>

読み出し専用メモ リ (ROM) のサイズを指定します。

tlbstartadr <TLB start address>

変換ルッ クアサイ ド バッファー (TLB) の読み出しおよび書き込みの開始アドレスを指定します。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 60UG1043 (v2014.3) 2014 年 10 月 1 日

Page 61: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

デバッグ セッシ ョ ンの例

MDM を使用した MicroBlaze のデバッグの例

こ こでは、 MDM を使用した MicroBlaze のデバッグのセッシ ョ ン例を示します。 基本的な XMD コマンドは、 connectmb mdm コマンドを使用して MDM に接続した後に使用します。 セッシ ョ ンの 後に、 GDB リモート ターゲッ ト を使用して mb-gdb に接続します。 GDB から XMD への接続については、 第 4 章, “GNU デバッガー ,”を参照して ください。

XMD% connect mb mdmJTAG chain configuration--------------------------------------------------Device ID Code IR Length Part Name 1 0a001093 8 2 f5059093 16 XCF32P 3 01e58093 10 XC4VFX12 4 49608093 8 xc95144xl

MicroBlaze Processor Configuration:-------------------------------------Version............................7.00.aOptimisation.......................PerformanceInterconnect.......................PLBv46No of PC Breakpoints...............3No of Read Addr/Data Watchpoints...1No of Write Addr/Data Watchpoints..1Exceptions Support................offFPU Support.......................offHard Divider Support...............offHard Multiplier Support............on - (Mul32)Barrel Shifter Support.............offMSR clr/set Instruction Support....onCompare Instruction Support........onPVR Supported......................onPVR Configuration Type.............Base

Connected to MDM UART TargetConnected to “mb” target. id = 0Starting GDB server for “mb” target (id = 0) at TCP port no 1234XMD% rrd r0:00000000 r8:00000000 r16:00000000 r24:00000000 r1:00000510 r9:00000000 r17:00000000 r25:00000000 r2:00000140 r10:00000000 r18:00000000 r26:00000000 r3: a5a5a5a5 r11:00000000 r19:00000000 r27:00000000 r4:00000000 r12:00000000 r20:00000000 r28:00000000 r5:00000000 r13:00000140 r21:00000000 r29:00000000 r6:00000000 r14:00000000 r22:00000000 r30:00000000 r7:00000000 r15:00000064 r23:00000000 r31:00000000 pc:00000070 msr:00000004<--- Launching GDB from XMD% console --->XMD% start mb-gdb microblaze_0/code/executable.elfXMD%<--- From GDB, a connection is made to XMD and debugging is done from the GDB GUI --->XMD :Accepted a new GDB connection from 127.0.0.1 on port 3791XMD%XMD :GDB Closed connectionXMD% stpBREAKPOINT at

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 61UG1043 (v2014.3) 2014 年 10 月 1 日

Page 62: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

114: F1440003 sbi r10, r4, 3XMD% dis 0x114 10 114: F1440003 sbi r10, r4, 3 118: E0E30004 lbui r7, r3, 4 11C: E1030005 lbui r8, r3, 5 120: F0E40004 sbi r7, r4, 4 124: F1040005 sbi r8, r4, 5 128: B800FFCC bri -52 12C: B6110000 rtsd r17, 0 130: 80000000 Or r0, r0, r0 134: B62E0000 rtid r14, 0 138: 80000000 Or r0, r0, r0XMD% dow microblaze_0/code/executable.elfXMD% conInfo:Processor started.Type “stop” to stop processorRUNNING> stop XMD% Info:User Interrupt, Processor Stopped at 0x0000010cXMD% conInfo:Processor started.Type “stop” to stop processorRUNNING> rrd pcpc :0x000000f4 <--- With the MDM, the current PC of MicroBlaze can be read while the program is runningRUNNING> rrd pcpc :0x00000110 <--- Note: the PC is constantly changing, as the

program is runningRUNNING> stopInfo:Processor started.Type “stop” to stop processorXMD% rrd r0:00000000 r8:00000065 r16:00000000 r24:00000000 r1:00000548 r9:0000006c r17:00000000 r25:00000000 r2:00000190 r10:0000006c r18:00000000 r26:00000000 r3:0000014c r11:00000000 r19:00000000 r27:00000000 r4:00000500 r12:00000000 r20:00000000 r28:00000000 r5:24242424 r13:00000190 r21:00000000 r29:00000000 r6:0000c204 r14:00000000 r22:00000000 r30:00000000 r7:00000068 r15:0000005c r23:00000000 r31:00000000 pc:0000010c msr:00000000XMD% bps 0x100Setting breakpoint at 0x00000100XMD% bps 0x11c hwSetting breakpoint at 0x0000011cXMD% bplSW BP: addr = 0x00000100, instr = 0xe1230002 <-- Software BreakpointHW BP:BP_ID 0 : addr = 0x0000011c <--- Hardware BreakpointXMD% conInfo:Processor started.Type “stop” to stop processorRUNNING>Processor stopped at PC:0x00000100Info:Processor stopped.Type “start” to start processorXMD% conInfo:Processor started.Type “stop” to stop processorRUNNING>Info:Processor started.Type “stop” to stop processor

Cortex A9 ARM を使用した例

こ こでは、 Cortex A9 ARM のデバッグのセッシ ョ ン例を示します。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 62UG1043 (v2014.3) 2014 年 10 月 1 日

Page 63: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

XMD% connect arm hwCortexA9プロセッサ コンフ ィギュレーシ ョ ン-------------------------------------Version.............................0x00000003User ID.............................0x00000000No of PC Breakpoints................6No of Addr/Data Watchpoints.........4Connected to "arm" target. id = 64Starting GDB server for "arm" target (id = 64) at TCP port no 1234 XMD% rrdr0:0x00000000 r1:0x00000000 r2:0x00000000 r3:0x00000000r4:0x00000000 r5:0x00000000 r6:0x00000000 r7:0x00000000r8:0x00000000 r9:0x00000000 r10:0x00000000 r11:0x00000000r12:0x00000000 sp:0x00000000 lr:0x00000000 pc:0xffff0000fpscr:0x00120c20 cpsr:0x000001d3

XMDStub を使用した MicroBlaze のデバッグ

XMDStub (プロセッサ上で実行される ROM モニター) を使用して MicroBlaze に接続し、GDB サーバーを起動します。XMD は、 JTAG またはシ リ アル インターフェイスを使用して XMDStub に接続します。 デフォルト オプシ ョ ンでは、JTAG インターフェイスを使用して接続されます。

XMDStub/JTAG を使用した MicroBlaze のデバッグ用のコマンド  オプシ ョ ン

使用法

connect mb stub -comm jtag [-cable {<JTAG Cable options>}] [-configdevice <{JTAG chain options>}] [-debugdevice {<MicroBlaze options>}]

MicroBlaze オプシ ョ ン

 

XMDStub/シリアル インターフェイスを使用した MicroBlaze のデバッグ用のコマンド  オプシ ョ ン

使用法

connect mb stub -comm serial {<Serial Communication options>}

オプシ ョ ン 説明

devicenr <MicroBlaze device position>

MicroBlaze を含む FPGA デバイスの JTAG チェーン内での位置を指定します。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 63UG1043 (v2014.3) 2014 年 10 月 1 日

Page 64: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

シリアル通信オプシ ョ ン

表 3-6 に、 XMDStub/シ リアル インターフェイスを使用する MicroBlaze のオプシ ョ ンを リ ス ト します。

注記 : プログラムに UART または MDM UART に出力を書き出す print() または putnum() などの I/O 関数がある場合は、 XMD を起動したコンソールまたはターミナルに表示されます。

図 3-3 は、 MDM UART および UARTlite を使用した MicroBlaze のデバッグを示しています。

表 3‐6 : XMDStub/シリアル インターフェイスを使用した MicroBlaze のデバッグ用のコマンド  オプシ ョ ン

オプシ ョ ン 説明

-baud <serial port baud rate>

シ リ アル ポー ト のボー レー ト を bps で指定し ます。 デフ ォル ト 値は19200bps です。

-port <serial port> XMD がシ リ アル ケーブルを介して接続されている場合、 リモート ハードウェアが接続されているシ リアル ポート を指定します。 デフォルトのシ リアル ポートは、 次のとおりです。/dev/ttyS0 (Linux)Com1 (Windows)

-timeout <timeout in secs>

XMD コマンドが XMDStub からの応答を待つ時間を秒で指定します。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 64UG1043 (v2014.3) 2014 年 10 月 1 日

Page 65: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

X-Ref Target - Figure 3-3

図 3‐3 : XMDStub を使用し、 MDM UART および UARTlite を介した MicroBlaze のデバッグ

X10844

JTAG

XMD

AXI Bus

MicroBlaze

UART

RS-232 (Serial Cable)

XMD

AXI Bus

MicroBlaze

Uartlite

LocalMemory

LocalMemory

MDM

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 65UG1043 (v2014.3) 2014 年 10 月 1 日

Page 66: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

XMDStub を使用したデバッグにおける要件

XMD を使用したハード ウェア ボード上のプログラムのデバッグは、 次のよ うに行われます。

• XMD は、 JTAG またはシ リ アル接続を使用してボード上の XMDStub と通信します。 そのため、 ターゲッ トのMicroBlaze システムの MSS ファ イルで MDM または UART を XMDSTUB_PERIPHERAL で指定する必要があ ります。

Platform Generator は、 MDM または UART を含むシステムを作成できます。 XMDStub モードでサポート されている JTAG ケーブルには次のものがあ り ます。

° ザイ リ ンクス パラレル ケーブル

° プラ ッ ト フォーム USB ケーブル

• ボード上の XMDStub は、 ホス ト コンピューターとの通信に MDM または UART を使用するため、 MicroBlaze システムで MDM または UART を使用するよ うにコンフ ィギュレーシ ョ ンする必要があ り ます。

• XMDStub の実行ファイルは、システムの起動時に MicroBlaze のローカル メモ リに含まれている必要があ り ます。

XMDStub の MicroBlaze メモ リへの書き込みは、 Data2MEM によ り行われます。 MicroBlaze システムのビッ ト スト リ ームの内容をブロ ッ ク RAM に書き込むための Data2MEM ス ク リ プ ト が生成されます。 これには、DEFAULT_INIT で指定されている実行ファイルが使用されます。

• デバッグ用にボードにダウンロードする必要のあるプログラムは、 開始アドレスを 0x800 よ り大き く し、 crt1.oのスタート アップ コード と リ ンク させる必要があ り ます。

mb-gcc を -xl-mode-xmdstub オプシ ョ ンを使用して実行する と、これらの条件を満たしてプログラムをコンパイルできます。

注記 : ソース レベルのデバッグでは、プログラムのコンパイルに -g オプシ ョ ンも使用する必要があ り ます。C プログラムの機能を初めて検証する場合は、 -O2 または -O3 などの mb-gcc の 適化オプシ ョ ンを使用しないこ とをお勧めします。 これらのオプシ ョ ンを使用する と、 適化によ り コードが大幅に変わる場合があるので、 デバッグが困難になり ます。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 66UG1043 (v2014.3) 2014 年 10 月 1 日

Page 67: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

シミ ュレータを使用した MicroBlaze のデバッグ

mb-gdb および XMD を使用して、 XMD に組み込まれたサイクル精度シ ミ ュレータ上でプログラムをデバッグできます。

使用法

connect mb sim [-memsize <size>]

シミ ュレータを使用した MicroBlaze のデバッグのオプシ ョ ン

 

シミ ュレータを使用したデバッグにおける要件

XMD を使用してサイ クル精度 ISS (命令セッ ト シ ミ ュレータ ) でプログラムをデバッグするには、 プログラムをデバッグ用にコンパイルし、 crt0.o のスタート アップ コードに リ ンク させる必要があ り ます。

mb-gcc を -g オプシ ョ ンを使用して実行する と、 プログラムがデバッグ用にコンパイルされ、 デフォルトですべてのプログラムが crt0.o にリ ンク されます。

オプシ ョ ンは -xl-mode-executable です。

プログラムのメモ リ サイズは 64K を超えてはならず、 またアドレス 0 で開始する必要があ り ます。 プログラムはメモ リの 初の 64KB に格納する必要があ り ます。

注記 : シ ミ ュレータを使用したデバッグでは、 OPB ペリ フェラルのシ ミ ュレーシ ョ ンはサポート されていません。

オプシ ョ ン 説明

memsize <size> シ ミ ュレータに割り当てる メモ リ アドレス バスの幅を指定します。 プログラムは、 0 から (2size)-1 のメモ リ範囲にアクセスできます。 デフォルトのメモ リ サイズは 64 KB です。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 67UG1043 (v2014.3) 2014 年 10 月 1 日

Page 68: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

MDM ペリフェラルおよび UART を使用したデバッグ

デバッグ、 およびシステムからの情報を収集するため、 MDM ペリ フェラルに接続し、 UART インターフェイスを使用するこ とができます。

使用法

connect mdm -uart

MDM を使用したデバッグにおける要件

MDM で UART 機能を使用するには、 システムに MDM をインスタンシエート して、 C_USE_UART パラ メーターを設定する必要があ り ます。

xuart w <byte> コマンドを使用しても、 ホス トから MicroBlaze 上のプログラムに UART 入力を供給できます。 terminalコマンドを使用する と、 ハイパーターミナルのよ うなインターフェイスが開き、 UART インターフェイスからの読み出しおよび書き込みを実行できます。 read_uart コマンドを使用する と、 STDIO またはファ イルに書き込むインターフェイスが提供されます。

デバッグ セッシ ョ ンの設定

デバッグ セッシ ョ ンを設定するには、 debugconfig コマンドを使用します。 デバッガーの命令の進行方法、 メモ リのアクセス方法などを設定できます。

使用法

debugconfig [-step_mode {disable_interrupt | enable_interrupt}] [-memory_datawidth_matching {disable | enable}][-reset_on_run {system enable | processor enable | disable}][-reset_on_data_dow {system enable | processor enable | disable}]

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 68UG1043 (v2014.3) 2014 年 10 月 1 日

Page 69: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

表 3-7 は、 デバッグ設定オプシ ョ ンを示しています。

命令ステップ モードの設定

XMD では、 2 種類の命令ステップ モードがサポート されています。 モードを選択するには、 debugconfig コマンドを使用します。 サポート されている 2 つのモードは、 次のとおりです。

• 割り込みディ スエーブル

これがデフォルト モードです。 命令の進行中の割り込みはディ スエーブルになっています。

• 割り込みイネーブル

表 3‐7 :デバッグ設定オプシ ョ ン

オプシ ョ ン 説明

オプシ ョ ンなし 現在のセッシ ョ ンの現在のデバッグ設定を表示します。

-step_mode {disable_interrupt |enable_interrupt}

XMD の命令ステップ モードを指定します。 disable_interrupt がデフォル ト モードです。 命令中、 割り込みはディ スエーブルになり ます。

enable_interrupt は命令中の割り込みをイネーブルにします。 命令中に割り込みが発生する と、 その割り込みはプログラムの割り込みハンド ラによ り処理されます。

-memory_datawidth_matching {disable | enable}

XMD でのメモ リの読み出しおよび書き込みの処理方法を指定します。デフォルトでは、 enable に設定されています。 すべてのデータ幅 (バイ ト、 ハーフ ワード、 ワード )が、 適な方法で処理されます。 このオプシ ョ ンは、 データ幅アクセスに厳密に従う必要のある メモ リ コン ト ローラーやフラ ッシュ メモ リ などで特に便利です。

このオプシ ョ ンを disable に設定にする と、 XMD によ り ワード アクセスなどの 適なデータ幅アクセス方法が選択されます。

-reset_on_run[system enable | processor enable | disable]

プログラム実行時のリセッ トの処理方法を指定します。リセッ トによ り、システムはプログラム実行のための既知の一定したステートにな り、 前のプログラム実行からの影響なしに、 プログラムを正し く実行するこ とができます。 デフォルトでは、 プログラムのダウンロードおよびプログラムの実行時にシステム リセッ トが実行されます。

異なる リセッ ト タイプを設定するには、 次のよ うに入力します。debugconfig -reset_on_run processor enabledebugconfig -reset_on_run system enable

リセッ ト をディ スエーブルにするには、 次のよ うに入力します。debugconfig -reset_on_run disable

-reset_on_data_dow[system enable | processor enable | disable]

データ ダウンロードでのリセッ ト処理方法を変更します。 リ セッ トによ り、 システムはプログラム実行のための既知の一定したステートにな り、 前のプログラム実行からの影響なしに、 プログラムを正し く実行するこ とができます。デフォルトでは、プログラムのダウンロードおよびプログラムの実行時にシステム リセッ トが実行されます。

異なる リセッ ト タイプを設定するには、 次のよ うに入力します。debugconfig -reset_on_data_dow processor enabledebugconfig -reset_on_data_dow system enable

リセッ ト をディ スエーブルにするには、 次のよ うに入力します。debugconfig -reset_on_data_dow disable

-run_poll_interval <time in millisec>

run または con コマンドを使用してプロセッサが実行している と きは、一定間隔で (100ms おきに)、 プロセッサ ステート を XMD が監視します。監視頻度を下げる必要がある場合は、 このオプシ ョ ンを使用してその間隔を指定します。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 69UG1043 (v2014.3) 2014 年 10 月 1 日

Page 70: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

命令進行中の割り込みはイネーブルになっています。 XMD は次の命令にハードウェア ブレークポイン ト を設定し、 プロセッサを実行します。

命令中に割り込みが発生する と、 その割り込みは割り込みハンド ラによ り処理されます。プログラムは次の命令で停止します。

注記 : プログラムの命令メモ リは、 プロセッサの D 側インターフェイスに接続する必要があ り ます。

.XMD% debugconfigDebug Configuration for Target 0---------------------------------Step Mode....................Interrupt DisabledMemory Data Width Matching...Disabled

XMD% debugconfig -step_mode enable_interruptXMD% debugconfigDebug Configuration for Target 0---------------------------------Step Mode....................Interrupt EnabledMemory Data Width Matching...Disabled

メモリ  アクセスの設定

XMD では、 異なる メモ リ データ幅へのアクセスがサポート されています。 サポート されるデータ幅は、 ワード (32ビッ ト )、 ハーフ ワード (16 ビッ ト )、 およびバイ ト (8 ビッ ト ) です。 デフォルトでは、 メモ リの読み出しおよび書き込み処理に適切なデータ幅が XMD によ り選択されます。 debugconfig コマンドを使用する と、データ幅がメモリ処理のデータ幅と一致するよ う設定できます。この設定は、異なるデータ幅のフラ ッシュ デバイスにアクセスする場合に必要です。

XMD% debugconfigDebug Configuration for Target 0---------------------------------Step Mode....................Interrupt DisabledMemory Data Width Matching...Enabled

XMD% debugconfig -memory_datawidth_matching disableXMD% debugconfigDebug Configuration for Target 0---------------------------------Step Mode....................Interrupt DisabledMemory Data Width Matching...Disabled

マルチプロセッシング システムでのリセッ トの設定

デフォルトでは、プロセッサにプログラムがダウンロード される とシステム リセッ トが実行されます。 これは、プログラムを実行する前にプロセッサのステート を既知のものにするためです。マルチプロセッシング システムでは、プログラムのダウンロードおよび実行が複数のプロセッサで順次処理されます。

システム アーキテクチャによっては、 ダウンロード時に実行されるシステム リ セッ トによ り、 別のプロセッサにダウンロード されたプログラムがリセッ ト されてしま う こ とがあ り ます。 この動作が求められる場合とそ うでない場合があるので、 debugconfig コマンドを使用してシステム リ セッ ト をディ スエーブルにしたり、 特定のプロセッサのみでリセッ トがイネーブルになるよ うに設定します。

次に例を示します。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 70UG1043 (v2014.3) 2014 年 10 月 1 日

Page 71: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

例 1 :1 つのマスター プロセッサと複数のスレーブ プロセッサ

この例では、マスター プロセッサ上のプログラムが 初にダウンロード されて実行され、その後ほかのプロセッサへのダウンロードが実行されます。 この場合、 マスター プロセッサへのダウンロード時のシステム リ セッ ト をイネーブルにし、ほかのプロセッサへのダウンロード時にはプロセッサ リセッ トのみをイネーブルにするか、またはリセット なしにします。

例 2 :同格の2 つのプロセッサ

この例では、 ダウンロード シーケンスは任意にでき、 両方のプロセッサでプロセッサ リ セッ トのみをイネーブルにするか、 またはリセッ ト なしにします。 このよ うにする と、 一方のプロセッサへのプログラムのダウンロードがも う一方のプロセッサのシステム ステートに影響を及ぼすこ とはあ り ません。

このモデルにおける リセッ トの接続とシーケンスについては、 proc_sys_reset IP モジュールの資料を参照して ください。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 71UG1043 (v2014.3) 2014 年 10 月 1 日

Page 72: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

Cortex A9 プロセッサXMD% connect arm hw

JTAG chain configuration--------------------------------------------------Device ID Code IR Length Part Name 1 4ba00477 4 Cortex-A9 2 03727093 6 XC7Z020

CortexA9 Processor Configuration-------------------------------------Version.............................0x00000003User ID.............................0x00000000No of PC Breakpoints................6No of Addr/Data Watchpoints.........1

Connected to "arm" target. id = 64Starting GDB server for "arm" target (id = 64) at TCP port no 1234

srrd ctrlControl:08c50879 Auxiliary Control:00000045 Coprocessor Access Control:00f00000 Secure Configuration:00000000 Secure Debug Enable:00000000

srrd [reg name] 特殊レジスタ読み出し。 CortexA9 の場合、 [regname] で識別される コプロセ ッサ レジス タのセッ ト を読み出します。

[reg name] は、ctrl、debug、dma、 tcm、 id、etc、vfpのいずれかになり ます。 (デフォルトは ctrl)

mrc <CPx> <op1> <CRn> <CRm> <op2>

Cortex A9 コプロセッサ レジスタ読み出し。

rwr <register> <word> レジスタに書き込みます。

mcr <CPx> <op1> <CRn> <CRm> <op2> <word>

Cortex A9 コプロセッサ レジスタ書き込み。

mrd <address> [num] [w|h|b] メモ リの読み出しロ ッ ク。デフォルトは w (ワード ) です。

mrd_var <variable name> [ELF file]

グローバル変数での読み出し メモ リ。

mrd_phys <address> [num] [w|h|b] AHB AP を介した Cortex A9 のメモ リ読み出し。

デフォルトは w (ワード ) です。

[-force] 0x0 で OCM から読み出します (DDR が 0x0 に再マップされていない場合)。

mwr <address> <values> [<num> <w|h|b>]

メモ リの書き込み。 デフォルトは w (ワード ) です。

mwr_phys <address> <values> [<num> <w|h|b>]

AHB AP を介した Cortex A9 のメモ リ書き込み。

デフォルトは w (ワード ) です。

[-force] 0x0 で OCM に書き込みます (DDR が 0x0 に再マップされていない場合)。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 72UG1043 (v2014.3) 2014 年 10 月 1 日

Page 73: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

Non-Secure Access Control:00000000 Translation Table Base 0:00108059 Translation Table Base 1:00108059 Translation Table Base Control:00000002 Domain Access Control: ffffffff Data Fault Status:00000000 Instruction Fault Status:00000000 Fault Address:00000000 Watchpoint Fault Address:00000000 Instruction Fault Address:00000000 Secure or Non-secure Vector Base Address:00100000 Monitor Vector Base Address:00000000 Interrupt Status:00000000 FCSE PID:00000000 Context ID:00000000 User Read/Write Thread and Process ID:00000000 User Read-only Thread and Process ID:00000000 Privileged Only Thread and Process ID:00000000 Peripheral Port Memory Remap:00000000

XMD% srrd dbgUnknown CortexA9 Register name dbgXMD% srrd debugDebug ID:35137030 Debug Status and Control:02086003 Data Transfer: f8000008 Watchpoint Fault Address:00000000 Vector Catch:00000000 Debug State Cache Control:00000000 Debug State MMU Control:00000000 Breakpoint Value 0:00100000 Breakpoint Value 1:00000000 Breakpoint Value 2:00000000 Breakpoint Value 3:00000000 Breakpoint Value 4:00000000 Breakpoint Value 5:00000000 Breakpoint Control 0:004001e6 Breakpoint Control 1:00000000 Breakpoint Control 2:00000000 Breakpoint Control 3:00000000 Breakpoint Control 4:00000000 Breakpoint Control 5:00000000 Watchpoint Value 0:00000000 Watchpoint Value 1:00000000 Watchpoint Control 0:00000000 Watchpoint Control 1:00000000

DMA Identification and Status present:00100001 DMA Identification and Status queued:00000000 DMA Identification and Status running:00000000 DMA Identification and Status interrupting:00000000 DMA User Accessibility:00000000 DMA Channel Number:00000000 DMA Control:00000000 DMA Internal Start Address:00000000 DMA External Start Address:00000000 DMA Internal End Address:00000000 DMA Channel Status:00000000 DMA Context ID:00000000

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 73UG1043 (v2014.3) 2014 年 10 月 1 日

Page 74: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

Data Cache Lockdown:00000000 Instruction Cache Lockdown:00000000 Data TCM Region:00000000 Instruction TCM Region:00000000 Data TCM Non-secure Control Access:00000000 Instruction TCM Non-secure Control Access:00000000 TCM Selection:00000000 Cache Behavior Override:00000000

Main ID:413fc090 Cache Type:83338003 TCM status:00000000 TLB Type:00000402 Processor Feature 0:00001231 Processor Feature 1:00000011 Debug Feature 0:00010444 Auxiliary Feature 0:00000000 Memory Model Feature 0:00100103 Memory Model Feature 1:20000000 Memory Model Feature 2:01230000 Memory Model Feature 3:00102111 Instruction Set Feature Attribute 0:00101111 Instruction Set Feature Attribute 1:13112111 Instruction Set Feature Attribute 2:21232041 Instruction Set Feature Attribute 3:11112131 Instruction Set Feature Attribute 4:00011142 Instruction Set Feature Attribute 5:00000000

XMD% srrd etcPA:00000000 Cache Dirty Status:00000000 TLB Lockdown:00000000 Primary Region Memory Remap:00098aa4 Normal Region Memory Remap:44e048e0 Secure User and Non-secure Access Validation Control:00000000 Performance Monitor Control:00000000 Cycle Counter:00000000 Count 0:00000000 Count 1:00000000 Reset Counter:00000000 Interrupt Counter:00000000 Fast Interrupt Counter:00000000 System Validation Cache Size Mask:00000000 TLB Lockdown Index:00000000 TLB Lockdown VA:00000000 TLB Lockdown PA:000000c6 TLB Lockdown Attributes:00000000

XMD% srrd vfpFloating-Point System ID:41033094 Floating-Point Status And Control:00000000 Floating-Point Exception:40000000 Floating-Point Instruction:40000000 Floating-Point Instruction 2:40000000 Media and VFP Feature 0:10110222 Media and VFP Feature 1:01111111

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 74UG1043 (v2014.3) 2014 年 10 月 1 日

Page 75: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

XMD 内部 Tcl コマンドTcl インターフェイス モードでは、XMD コマンドが追加された Tcl シェルが起動します。XMD Tcl コマンドはすべてx という文字で開始し、 XMD で 「x?」 と入力する と表示されます。

これらの内部コマンドには、 42 ページの 「XMD のオプシ ョ ン」 に示す Tcl ラ ッパーを使用するこ とをお勧めします。Tcl ラ ッパー ファ イルによ り これらのコマンドほとんどの出力が表示され、 よ り多くのオプシ ョ ンが提供されます。Tcl ラ ッパーは以前のバージ ョ ンでも機能しますが、 x <name> コマンドは今後のリ リースで使用できなくな り ます。

次の Tcl コマンドについて説明します。

• 「プログラム初期化オプシ ョ ン」

• 「レジスタ /メモ リのオプシ ョ ン」

• 「プログラム制御オプシ ョ ン」

• 「プログラム ト レース /プロファイル オプシ ョ ン」

• 「その他のコマンド」

プログラム初期化オプシ ョ ン

表 3‐8 : プログラム初期化オプシ ョ ン

オプシ ョ ン 説明

xconnect <target> {mb|mdm} <connect type>{options}

プロセッサまたはペリ フェラルに接続します。 ターゲッ ト タイプには mb と mdm があ り ます。 オプシ ョ ンの詳細は、 58 ページの 「connect コマン ドのオプシ ョ ン」 を参照してください。

xdebugconfig <target id> [-step_mode <Step Type>] [-memory_datawidth_matching {disable |enable}] [-reset_on_run {system enable| processor enable |disable}][-reset_on_data_dow {system enable |processor enable | disable}][run_poll_interval <time in millisec>

ターゲッ ト のデバッ グ セッ シ ョ ンを設定し ます。 詳細は、68 ページの 「デバッグ セッシ ョ ンの設定」 を参照して ください。

xdisconnect [<target id>] [-cable] ターゲッ ト との接続を解除します。 ケーブルおよびすべてのターゲッ トから接続解除するには、 -cable option コマンドを使用します。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 75UG1043 (v2014.3) 2014 年 10 月 1 日

Page 76: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

xdownload <target_id> <filename> [loadaddress]xdownload <target_id> -data <filename><load_address>

指定の ELF ファ イルまたはデータ ファ イル (-data オプシ ョ ンを使用) を、 現在のターゲッ ト のメモ リ にダウンロード します。 アド レスを指定しない場合は、 ELF ファ イルのヘッダーからダウンロードするアドレスが判断されます。 アド レスを指定した場合は、 ELF ファ イルは位置独立コード(PIC コード ) と して処理されて指定のアド レスにダウンロード され、PIC コードに従って、レジスタ R20 が開始アドレスに設定されます。 XMD では、 XMDSTUB 領域 (アドレス 0x0 ~ 0x800) への書き込みを禁止する目的以外では、 バウンド チェッ クは行われません。

xrcableesn ホス ト マシンに接続されている USB ケーブルの ESN 値を返します。

xrjtagchain [-cable <cable_options>] ホ ス ト マシンに接続されているボード の JTAG デバイ スチェーン情報を返します。

xfpga -f <bitstream> [-cable <cable_options>]|[-configdevice <configuration_options>] |[-debugdevice <device_name> ]

FPGA デバイスのビッ ト ス ト リームを読み込み、またオプシ ョンで、 ケーブル コンフ ィギュレーシ ョ ンおよびデバッグ デバイス オプシ ョ ンを読み込みます。

xload_sysfile hw <hw_spec_file> ハードウェア仕様ファイルを読み込みます。

xrut [Session ID] XMD ソケ ッ ト インターフェ イスを介して通信する場合に、XMD セッシ ョ ンを認証します。 まずセッシ ョ ン ID が割り当てられ、 続く呼び出しによ りセッシ ョ ン ID が返されます。

xtargets -listSysIDxtargets -system <system_ID>[-print] [-listTgtID}xtargets -target <target_ID> {-print | -prop}

現在の XMD セッシ ョ ンのシステムおよびターゲッ ト情報を表示します。 -listSysID は既存のシステムを リ ス ト表示します。 -system <system_ID> は指定したシステムの情報を表示します。 -print はシステムの異なるターゲッ ト を表示します。

-listTgtID はシステムの既存ターゲッ ト を リ ス ト して表示します。 -target <target_ID> は指定したターゲッ ト の情報を表示します。 次のオプシ ョ ンがあ り ます。

-print : ターゲッ トの情報を表示します。

-prop : ターゲッ トのプロパティを表示します。

表 3‐8 : プログラム初期化オプシ ョ ン (続き)

オプシ ョ ン 説明

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 76UG1043 (v2014.3) 2014 年 10 月 1 日

Page 77: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

レジスタ /メモリのオプシ ョ ン

表 3‐9 : レジスタ /メモリのオプシ ョ ン

オプシ ョ ン 説明

xdata_verify <target id> <Binary filename><loadaddress>

<Binary filename> が <load address> メ モ リ に正し く ダウ ンロード されたかど うかを確認します。

xdisassemble <inst> 逆アセンブルを実行し、 32 ビッ ト命令を 1 つ表示します。

xelf_verify <target id> [<filename>.elf] <filename>.elf がメモ リ に正し く ダウンロード されているかど うかを確認します。 <filename>.elf を指定しない場合は、 後にダウンロード された ELF ファ イルが確認されます。

xrmem <target id> <address> {<number ofbytes|half|word>} {b | h | w}xrmem <target id> -var <Global Variable Name>

指定メモ リ アドレスのメモ リ ロケーシ ョ ンのワード /バイ ト数を読み出します。 デフォル ト では、 1 バイ ト読み出します(b)。 データ値のリ ス トが返されます。 データ タイプは、 メモリ アクセスのデータ幅によって異なり ます。

xwmem <target id> <address> {<number ofbytes>|half|word} {b | h | w} <value list>xwmem <target id> -var <Global Variable Name><value list>

指定メモ リ アド レスのデータ値のワード /バイ ト数を書き込みます。 デフォルトでは、 1 バイ ト書き込みます (b)。

xrreg <target id> [reg] すべてのレジスタまたは <reg> で指定したレジスタのみを読み出します。

xwreg <target id> [reg] [value] <reg> で指定したレジスタに 32 ビッ トの値を書き込みます。

xstack_check <target id> 現在のターゲッ トで実行中のプログラムのスタ ッ ク使用情報を表示します。 ターゲッ トに 後にダウンロード された ELFファ イルのスタ ッ クがチェッ ク されます。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 77UG1043 (v2014.3) 2014 年 10 月 1 日

Page 78: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

プログラム制御オプシ ョ ンX-Ref Target - Figure 3-4

表 3‐10 : プログラム制御オプシ ョ ン

オプシ ョ ン 説明

xbreakpoint <target id> {addr | function name} {sw | hw}

指定のアド レスまたは関数の開始部分にブレークポイン ト を設定します。

注記 :XMDStub ターゲッ トの場合、 imm 命令の直後の命令にブレークポイン ト がある と、 不定な結果となる場合があ り ます。

xcontinue <target id> [<Execute Start Address>][-block]

現在の PC または指定のアドレス <Execute Start Address> から実行を続けます。 -block オプシ ョ ンを指定した場合は、プロセッサがブレークポイン ト またはウォ ッチポイン ト で停止する と、 コマン ドが戻されます。-block は、 スク リプ ト記述に便利なオプシ ョ ンです。

xcycle_step <target id> [cycles] 1 ク ロ ッ ク サイ クル分進めます。 サイ クル数を指定した場合は、 そのクロ ッ ク サイクル数だけ進めます。a

a. このコマンドは、 シ ミ ュレータを使用する場合のみ使用可能です。

xlist <target id> すべてのブレークポイン トのアドレスを表示します。

xremove <target id>{<addr> | <function name> | <bp id> | all}

1 つまたは複数のブレークポイン ト /ウォ ッチポイン ト を削除します。

xreset <target id> [reset type] ターゲッ ト を リセッ ト します。 79 ページの表 3-11に示されている信号など、 特定のリセッ ト タイプを設定するこ と も可能です。

xrun <target id> プログラムを開始アドレスから実行します。

xstate <target id> プロセッサ ターゲッ トのステート (実行または停止) を返します。

xstep <target id> MicroBlaze で 1 命令分進めます。 imm 命令では、 次の命令も実行されます。 この操作では、 BIP フラグが設定され、割り込みはディ スエーブルにな り ます。 デバッ グで割 り込みを イネーブルにするには、 xcontinue をブレークポイン ト と共に使用してください。

xstop <target id> プログラムの実行を停止します。

xwatch <target id> {r | w} <address> [<data value>]

<address> で指定したアド レスに読み出し /書き込みウォ ッチポイン ト を設定し、<data value> をチェッ ク します。<data value>を指定しない場合は、 ウォ ッチポイン トは任意の値に一致します。 アドレスおよびデータは、 16 進数フォーマッ ト または2 進数フォーマッ トで指定できます。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 78UG1043 (v2014.3) 2014 年 10 月 1 日

Page 79: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 3 章 : XMD (Xilinx Microprocessor Debugger)

ハードウェアを使用した MicroBlaze のデバッグで使用される信号

プログラム ト レース/プロファイル オプシ ョ ン  

その他のコマンド

表 3‐11 :ハードウェアを使用した MicroBlaze のデバッグで使用される信号

信号名 (値) 説明

マスク不可ブレーク (0x10) ブレーク信号と同様に機能しますが、BIP フラグが設定されている場合でも機能します。 BIP フ ラ グの詳細は、 『MicroBlaze プロセ ッ サ リ フ ァ レ ン ス ガイ ド』 (UG081)(UG081) [参照 3] を参照して ください。

プロセッサ ブレーク (0x20) JTAG UART Ext_Brk 信号を使用して、 MicroBlaze の Brk 信号を High にし ます。MicroBlaze の BIP (Break-in-Progress) フラグを設定し、アドレス 0x18 にジャンプします。

プロセッサ リセッ ト (0x80) JTAG UART Debug_Rst 信号を使用して MicroBlaze を リセッ ト します。

システム リセッ ト (0x40) OPB Rst を JTAG UART Debug_SYS_Rst 信号を使用して送信し、システム全体を リセッ ト します。

表 3‐12 : プログラム ト レース/プロファイル オプシ ョ ン

オプシ ョ ン 説明

xprofile <target id> [-o <GMONOutput File>]xprofile <target id> -config [sampling_freq_hw <value>][binsize <value>] [profile_mem<start addr>]

プロファイル出力ファイルを生成します。このファイルは、mb-gprof (MicroBlaze) または arm-xilinx-eabi-gprof(Cortex A9) によ り読み出されます。

プロ フ ァ イル コンフ ィ ギュ レーシ ョ ンのサンプ リ ング周波数(Hz)、ヒ ス ト グラムのバイナリ サイズ、収集したプロファ イル データのメモ リ アドレスを指定します。

xstats <target id> {options} 現在のセッシ ョ ンのシ ミ ュレーシ ョ ン統計を表示します。 reset オプシ ョ ンを使用する と、 シ ミ ュレーシ ョ ン統計を リセッ トできます。a

a. このコマンドは、 ISS を使用する場合のみ使用可能です。

xtracestart <target id> ト レース情報の収集を開始します。

xtracestop <target id> ト レース情報の収集を停止します。 (a)

表 3‐13 : その他のコマンド

コマンド 説明

xclean ケーブルを使用しているザイ リ ンクス リ ソースをすべてク リーンアップします。

xhelp XMD コマンドを リ ス ト表示します。

xverbose 詳細モードのオン/オフを切り替えます。 XMD からのデバッグ情報を表示します。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 79UG1043 (v2014.3) 2014 年 10 月 1 日

Page 80: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 4章

GNU デバッガーこの章では、 MicroBlaze プロセッサおよび Cortex A9 プロセッサ用のザイ リ ンクス® GNU デバッガー (GDB) の一般的な使用法について説明します。

概要GDB は、さまざまな開発段階で MicroBlaze システムをデバッグおよび検証するためのインターフェイスを提供する、高性能で柔軟性の高いツールです。また、プロセッサとの通信するための基本エンジンに XMD (Xilinx MicroprocessorDebugger) を使用します。

ツールの概要

ツールの使用法

MicroBlaze GDB の場合

mb-gdb <options> executable-file

ARM Coretx A9 GDB の場合

arm-xilinx-eabi-gdb <options> executable

ツールのオプシ ョ ン

GNU デバッガーでよ く使用されるオプシ ョ ンは、 次のとおりです。

-command=FILE 指定したファイルから GDB コマンドを実行します。 バッチおよびスク リプ ト モードでデバッグを実行する際に使用します。

-batch オプシ ョ ンを処理した後、 終了します。 バッチおよびスク リプ ト モードでデバッグを実行する際に使用します。

-nx 初期化ファイル .gdbinit を読み込みません。 XMD への接続で問題が発生した場合は (GDBは XMD ターゲッ トから接続/接続解除)、 このオプシ ョ ンを使用して GDB を起動するか、.gdbinit ファ イルを削除してください。

-nw GUI インターフェイスを使用しません。

-w GUI インターフェイスを使用します (デフォルト )。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 80UG1043 (v2014.3) 2014 年 10 月 1 日

Page 81: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 4 章 : GNU デバッガー

GDB を使用したデバッグ フロー

1. コマンド プロンプ ト またはターミナルを開きます。

2. このセッシ ョ ンでは、 <Vivado_SDK_Installation_Path>\SDK\<2014.1> から settings64.bat を実行します。

3. 「XMD」 と入力し、 XMD を起動します。

4. プロセッサを接続します。 この操作によ り、 ターゲッ トの GDB サーバーが開きます。次は、 その例です。

XMD% connect arm hwConnected to "arm" target. id = 64Starting GDB server for "arm" target (id = 64) at TCP port no 1234

5. XMD コマンドの詳細については、 第 3 章 「XMD (Xilinx Microprocessor Debugger)」 を参照してください。

6. も う 1 度コマンド プロンプ ト を開いて別のセッシ ョ ンを開始し、 手順 2 を繰り返します。

7. このセッシ ョ ンでは、 MicroBlaze または ARM Cortex A9 MP コアのいずれか、 使用しているほうのターゲッ トに合ったコマンドを使用して GDB を開始します。 次は、 その例です。

arm-xilinx-eabi-gdb -nw executable.elf

8. XMD のリモート GDB サーバーに接続するため、GDB で target remote <hostname>:<TCP port num> を実行します。たとえば、 TCP ポート番号が 1234 の場合は次のよ うに実行します。

<GDB> target remote localhost:1234

9. プログラムおよびデバッグ アプリ ケーシ ョ ンをダウンロード します。 GDB で、 プログラムをダウンロードするために load コマンドを実行します。

<GDB> load

MicroBlaze GDB のターゲッ トMicroBlaze GNU デバッガーおよび XMD ツールでは、 リモー ト ターゲッ ト を使用できます。 リ モー ト デバッグはXMD を介して行います。 XMD サーバー プログラムは、 シ ミ ュレータまたはハード ウェアを使用して、 ホス ト コンピューター上で起動できます。

サイクル精度命令セッ ト シ ミ ュレータ (ISS) およびハードウェア インターフェイスは、MicroBlaze システムの完全な検証を実行する高性能のデバッグ ツールです。 mb-gdb は、 TCP/IP ソケッ ト接続で GDB リモート プロ ト コルを使用して、 XMD に接続します。

シミ ュレータ

XMD シ ミ ュレータは MicroBlaze システムのサイクル精度 ISS で、シ ミ ュレーシ ョ ンされた MicroBlaze システムのステート を GDB に示します。

ハードウェア

ハード ウェア上でのデバッグでは、 シ リ アル ケーブルまたは JTAG ケーブルを介して、 マイ ク ロプロセッサ デバッグ モジュール (mdm) デバッグ コア、 またはハード ウェア ボード上で実行される xmdstub プログラムと XMD は通信し、 実行中の MicroBlaze システムのステート を GDB に示します。

XMD の詳細は、 第 3 章 「XMD (Xilinx Microprocessor Debugger)」 を参照してください。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 81UG1043 (v2014.3) 2014 年 10 月 1 日

Page 82: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 4 章 : GNU デバッガー

MicroBlaze をデバッグするためのコンパイル

プログラムをデバッグするには、 プログラムをコンパイルする際にデバッグ情報を生成する必要があ り ます。 このデバッグ情報はオブジェク ト ファイルに保存され、各変数および関数のデータ型、ソースの行番号に対応する実行コードのアドレスなどが記述されています。 適切な修飾子を指定する と、 ザイ リ ンクス MicroBlaze ソフ ト プロセッサ用の mb-gcc コンパイラによ り この情報が含まれます。

mb-gcc の -g オプシ ョ ンを使用する と、 ソース レベルでのデバッグを実行できます。 mb-gcc が実行ファイルにデバッグ情報を追加するので、 コードをデバッグしやすくな り ます。 また、 ソース、 アセンブ リ、 またはその混合でのデバッグが可能になり ます。

注記 : C プログラムの機能を初めて検証する場合は、-O2 または -O3 などの mb-gcc の 適化オプシ ョ ンを使用しないこ とをお勧めします。 これらのオプシ ョ ンを使用する と、 適化によ り コードが大幅に変わる場合があるので、 デバッグが困難になり ます。

注記 : XMDSTUB を使用し てハード ウ ェ ア モード で XMD を使用し てデバ ッ グする場合は、 mb-gcc の-xl-mode-xmdstub オプシ ョ ンを指定してください。 特定のターゲッ ト用にコンパイルする方法は、 第 3 章を参照してください。

ARM Cortex A9 のターゲッ トARM Cortex A9 MP コアのデバッグは、arm-xilinx-eabi-gdb、およびGDB リモート TCP プロ ト コルを介した XMD でサポート されています。 リモート デバッグは XMD を介して行います。

ARM Cortex A9 MP コアに接続するには、 次の手順に従ってください。

1. 第 3 章 「XMD (Xilinx Microprocessor Debugger)」 の説明に従って XMD を起動し、 connect arm hw コマンドを使用してボードに接続します。

2. 81 ページの 「GDB を使用したデバッグ フロー」 にある手順に従って実行します。

arm-xilinx-eabi-gdb によ り XMD への接続が開始されます。接続が完了する と、 XMD を開始したシェル ウ ィンド ウにメ ッセージが表示されます。 これでデバッガーが XMD に接続され、 デバッグを始めるこ とができます。

GDB コマンドについては、 次の SDK インス トール ディ レク ト リに含まれている refcard.pdf を参照してください。

<Xilinx_Vivado_Installation_Path>\SDK\<2014.1>\gnu\arm\nt\share\doc\ xilinx-arm-xilinx-eabi\pdf

GDB コマンドに関する参考資料mb-gdb の使用に関してヘルプを開くには、 コンソール モードで 「help」 と入力します。

GDB のコンソール ウ ィンド ウを開くには、 GDB で [View] → [Console] をク リ ッ ク します。

GDB の使用法についてのオンライン マニュアルは、 GNU のウェブ サイ ト を参照して ください。 mb-gdb Insight GUIについては、 Red Hat Insight のウェブ サイ ト を参照して ください。 付録 B 「その他のソースおよび法的通知」 に、 これらの資料へのリ ンクがあ り ます。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 82UG1043 (v2014.3) 2014 年 10 月 1 日

Page 83: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 4 章 : GNU デバッガー

表 4-1 は、 よ く使用される mb-gdb コマンドをま とめ、説明したものです。 このコマンドに対応する GUI コマンドは、mb-gdb GUI ウ ィンド ウのアイコンで確認できます。 info target、 monitor info など一部のコマンドは、 コンソール モードでしか使用できません。

表 4‐1 : よ く使用される  GDB のコンソール コマンド

コマンド 説明

load <program> ターゲッ トにプログラムを読み込みます。

b main main 関数にブレークポイン ト を設定します。

c ブレークポイン トの後、 プログラムの実行を再開します。

run コマンドを使用しないでください。

l 現時点でのプログラムのリ ス ト を表示します。

n 1 行進めます。 関数呼び出しがあっても、 停止せずに次の行まで実行します。

s 1 行進めます。 関数呼び出しがある場合は、 その関数の次の行で停止します。

stepi アセンブリ 1 行分進めます。

info reg レジスタ値を表示します。

info target 命令数と実行されたサイクル数を表示します (ビルト イン シ ミ ュレータのみ)。

p <xyz> <xyz> データの値を表示します。

hbreak main main() 関数にハードウェア ブレークポイン ト を設定します。

watch <gvar1> グローバル変数 gvar1 にウォッチポイン ト を設定します。

rwatch <gvar1> グローバル変数 gvar1 に読み出しウォッチポイン ト を設定します。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 83UG1043 (v2014.3) 2014 年 10 月 1 日

Page 84: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 5章

フラッシュ  メモリのプログラム

概要フラ ッシュには、 次のものをプログラムできます。

• アプリ ケーシ ョ ンの実行イ メージ

• FPGA のハードウェア ビッ ト ス ト リーム

• ファ イル システム イ メージ、 サンプル データやアルゴ リズム テーブルなどのデータ ファ イル

アプリ ケーシ ョ ンの実行イ メージが も一般的です。デザインのプロセッサのリセッ トが完了する と、ブロ ッ ク RAMのプロセッサのリセッ ト位置に保存されている実行コードが開始します。 通常ブロッ ク RAM のサイズは数 KB でソフ ト ウェア アプリ ケーシ ョ ンのイ メージ全体を保存するには小さすぎるので、 フラ ッシュ メモ リ (単位は MB) を使用します。 小型のブート ローダーはブロ ッ ク RAM にフ ィ ッ トするよ う設計されています。 プロセッサはリセッ ト時にこのブート ローダーを実行し、 ソフ ト ウェア アプリ ケーシ ョ ン イ メージがフラ ッシュから外部メモ リへと コピーされます。 この後、 制御はブート ローダーからソフ ト ウェア アプリ ケーシ ョ ンへと移り、 実行が継続されます。

プロジェク トで作成したソフ ト ウェア アプリ ケーシ ョ ンのフォーマッ トは、 ELF (Executable Linked Format) です。 フラ ッシュから ソフ ト ウェア アプリ ケーシ ョ ンをブート ロードする場合、ELF イ メージを、SREC (モ ト ローラ S レコード ) などのブート ロード可能なイ メージ フォーマッ トに変換する必要があ り ます。 こ うする と、 ブート ローダーをシンプルに、 またサイズも小さ く抑えるこ とができます。 Vivado® Design Suite では、 グラフ ィカル インターフェイスおよびコマンド ライン オプシ ョ ンを使用して、 SREC フォーマッ トでブート ローダを作成できます。

IP インテグレーターを介したフラッシュのプログラム

IP インテグレーター インターフェイスには、 外部共通フラ ッシュ インターフェイス (CFI) に準拠したパラレル フラ ッシュ デバイスをボードにプログラムし、外部メモ リ コン ト ローラー (EMC) IP コアを介して接続するためのダイアログ ボッ クスがあ り ます。 このプログラ ミ ング ソ リ ューシ ョ ンは、 汎用性を持たせて、 さまざまなフラ ッシュ デバイスおよびレイアウ トに対応するよ う設計されています。

フラ ッシュ メモ リのプログラムは、デバッガーからプロセッサへの接続を使用して行われます。IP インテグレーターによ り、小型のインシステム フラ ッシュ プログラム スタブがターゲッ ト プロセッサにダウンロード され、実行されます。 インシステム プログラム スタブの動作には、 8KB 以上のメモ リが必要です。 ホス ト Tcl スク リプ トは、 コマンドおよびデータを使用してインシステム フラ ッシュ プログラム スタブを駆動し、 フラ ッシュのプログラ ミ ングを完了させます。 フラ ッシュ プログラマは、 プログラムされるイ メージ ファ イルを処理せず、 そのままフラ ッシュ メモ リにプログラムします。ファ イルの内容が正し くプログラムされるよ う、 ソフ ト ウェアおよびハードウェア アプリケーシ ョ ンを設定する必要があ り ます。

サポート されるフラッシュ  デバイスフラ ッシュ プログラマは、フラ ッシュ デバイス との通信に共通フラ ッシュ インターフェイス (CFI) を使用するので、フラ ッシュ デバイスが CFI に準拠している必要があ り ます。 必要な幅のメモ リ インターフェイスを形成するため、

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 84UG1043 (v2014.3) 2014 年 10 月 1 日

Page 85: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 5 章 : フラッシュ  メモリのプログラム

フラ ッシュ デバイスのレイアウ ト も重要です。 次の表示は、 サポート されているフラ ッシュ レイアウ トおよびコンフ ィギュレーシ ョ ンが リ ス ト されています。 フラ ッシュのレイアウ トが表 5-1 のコンフ ィギュレーシ ョ ンと一致しない場合は、フラ ッシュのプログラム セッシ ョ ンをカスタマイズする必要があ り ます。詳細は、 86 ページンの 「フラ ッシュのプログラム設定のカスタマイズ」 を参照してください。

物理レイアウ ト、 ジオメ ト リ情報、 およびコマンド セッ ト などの論理情報は、 CFI を使用して決ま り ます。 フラ ッシュ プログラマは、 CFI で規定されたコマンド セッ トのみを使用するフラ ッシュ デバイスで使用できます。 CFI で規定されているコマンド セッ トは表 5-2 にまとめられています。

デフォルトでは、 フラ ッシュ プログラマはセクター マップが CFI テーブルに保存されているものと一致するフラ ッシュ デバイスのみをサポート します。 フラ ッシュ ベンダーによっては、 ト ップ ブート とボ ト ム ブートのフラ ッシュデバイスを提供している と ころがあ り ますが、 両方に同じ CFI テーブルが使用されます。 デバイスのブート ト ポロジを識別するフ ィールドは、 CFI 規格の対象外です。 このため、 このフ ィールドがあるフラ ッシュ デバイスを使用する場合は、 フラ ッシュ プログラマに問題が生じます。

ブート ト ポロジを識別するフ ィールドに関する問題を回避する方法は、 86 ページンの 「フラ ッシュのプログラム設定のカスタマイズ」 を参照してください。

フラ ッシュ デバイスをプログラムする際は、 まず次の点を確認してください。

• フラ ッシュ プログラム スタブがプログラムを実行する と き、フラ ッシュ デバイスがリセッ ト状態になっている。

• フラ ッシュのセクターはすべて保護されていない状態である。

フラ ッシュ デバイスがロ ッ ク されていたり、 プログラムできる状態でない場合、 フラ ッシュ プログラム スタブがフラ ッシュのロ ッ クを解除したり初期化するこ とはなく、 エラー メ ッセージが表示されます。

注記 : フラ ッシュ プログラマでは、 各フラ ッシュ コマンドを DBA (Device Base Address) 値でオフセッ トする必要のあるデュアル ダイ フ ラ ッシュ デバイ スは、 現在のと こ ろサポー ト されていません。 インテル社の StrataFlash®Embedded Memory (P30) ファ ミ リのフラ ッシュ メモ リの 512Mb デバイスなどがその例です。

表 5‐1 :サポート されるフラッシュ  コンフ ィギュレーシ ョ ン

x8 のみに対応したデバイス (8 ビッ ト データ バスを形成)

x16/x8 対応のデバイスを x8 モードに設定 (8 ビッ ト データ バスを形成)

x32/x8 対応のデバイスを x8 モードに設定 (8 ビッ ト データ バスを形成)

x16/x8 対応のデバイスを x16 モードに設定 (16 ビッ ト データ バスを形成)

x8 対応のデバイスのペア (16 ビッ ト データ バスを形成)

x8 対応のデバイス 4 個 (32 ビッ ト データ バスを形成)

x16 対応のデバイスのペア (32 ビッ ト データ バスを形成)

x32/x8 対応のデバイスを x32 モードに設定 (32 ビッ ト データ バスを形成)

x32 のみに対応したデバイス (32 ビッ ト データ バスを形成)

表 5‐2 : CFI で規定されたコマンド  セッ ト

CFI ベンダー ID OEM スポンサー インターフェイス名

1 インテル/シャープ インテル/シャープ拡張コマンド セッ ト

2 AMD/富士通 AMD/富士通標準コマンド セッ ト

3 インテル インテル標準コマンド セッ ト

4 AMD/富士通 AMD/富士通拡張コマンド セッ ト

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 85UG1043 (v2014.3) 2014 年 10 月 1 日

Page 86: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 5 章 : フラッシュ  メモリのプログラム

フラッシュ  プログラマのパフォーマンスイ メージのプログラム速度には、 次の要因が影響します。

• フラ ッシュ プログラマは JTAG を使用してインシステム プログラム スタブと通信します。 このため、 大抵の場合、 JTAG ケーブルのバンド幅によってフラ ッシュのプログラム速度が制限されてしまいます。

• システムで使用可能であれば、 外部メモ リ をスク ラ ッチ パッ ド メモ リ と して使用するのがベス トです。 デバッガーでフラ ッシュ イ メージ データを数回に分けるこ とな く一度にダウンロードできます。

• MicroBlaze ソフ ト プロセッサを使用する場合は、できるだけ高速なコンフ ィギュレーシ ョ ンをインプリ メン トするよ うにします。 バレル シフターや乗算器などの機能をオフにする と、 プログラム速度を改善できます。

フラッシュのプログラム設定のカスタマイズフラ ッシュのプログラムでは、 ハード ウェアの違い、 フラ ッシュ コマンド セッ トの違い、 メモ リ サイズの制限などを考慮する必要があ り ます。 このセクシ ョ ンでは、 フラ ッシュのプログラムのアルゴ リズムについて簡単に説明します。 アルゴ リズムを理解する と、 特定の要件に合わせてプログラム設定をカスタマイズできます。

[Program Flash] ボタンをク リ ッ ク し、ハード ウェア プラ ッ ト フォーム プロジェク ト を選択する と、次の処理が実行されます。

1. flash.tcl ファ イルが <hardware platform project>/settings フォルダーに作成されます。 このファイルには、 フラ ッシュのプログラム セッシ ョ ンを記述するパラ メーターが含まれており、フラ ッシュ プログラマの Tcl ファ イルで使用されます。

2. IP インテグレーターが XMD を起動し、フラ ッシュ プログラマ Tcl のスク リプ トで次のコマンドが実行されます。

xmd -nx -hw <hardware platform project>/system.xml -tcl flashwriter.tcl <hardware platform project>/settings/flash.tcl.

このフラ ッシュ プログラマのホス ト Tcl は、 インス トール ディレク ト リにあ り ます。 [Program Flash] ボタンをクリ ッ ク したと きにカスタマイズした Tcl が実行されるよ うにするには、 <hardware platform project>/tmp ディ レクト リに flashwriter.tcl のコピーを保存して、 デフォルトの flashwriter.tcl ファ イルと置き換えます。 XMD はまずプロジェク ト ディレク ト リで指定ファイルを検索し、 その後インス トール ディ レク ト リで検索します。

3. フラ ッシュ プログラマ Tcl のスク リプ トは、インス トール ディ レク ト リから <hardware platform project>/tmp ディレク ト リに、 フラ ッシュ プログラマ アプリ ケーシ ョ ンのソース ファ イルをコピーします。 このスク リプ トは、ダイアログ ボッ クスで指定したスク ラ ッチ パッ ド メモ リ アドレスからアプ リ ケーシ ョ ンがローカルで実行されるよ う コンパイルします。 ユーザーのソースをコンパイルするには、 ローカルに保存されている flashwriter.tclのコピーを変更します。

4. スク リプ トは、フラ ッシュ プログラマをプロセッサにダウンロード し、 メモ リのメールボッ クスを介してフラ ッシュ プログラマと通信します。 つま り、 フラ ッシュ プログラマのアドレス空間の変数に対応する メモ リ ロケーシ ョ ンにパラ メーターを書き込み、 フラ ッシュ プログラマを実行させます。

5. スク リプ トは、 各操作の終わりにコールバッ ク関数をフラ ッシュ プログラマが実行するのを待ち、 このコールバッ ク関数の始めにブレークポイン ト を設定して、アプリ ケーシ ョ ンを停止させます。フラ ッシュ プログラマが停止する と、 ホス ト Tcl は結果を処理し、 必要に応じてコマンドをさ らに実行します。

6. 実行中、 フラ ッシュ プログラマは、 イ メージを保存するのに必要な数のフラ ッシュ ブロ ッ クだけを消去します。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 86UG1043 (v2014.3) 2014 年 10 月 1 日

Page 87: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 5 章 : フラッシュ  メモリのプログラム

7. 使用可能なスク ラ ッチ パッ ド メモ リの容量に応じて、フラ ッシュ ライターがス ト リーミ ング バッファーを割り当て、 イ メージ ファ イルをス ト リーミ ング手法で複数回に分けてプログラムします。 このス ト リーミ ング バッファーは、 フラ ッシュ プログラム内に割り当てられます。 スク ラ ッチ パッ ド メモ リにイ メージすべてをプログラムするのに十分なメモ リ量がある場合は、 プログラムは短時間で完了します。

8. プログラムが終了する と、フラ ッシュ プログラマ Tcl が、フラ ッシュ プログラマに終了コマンドを送信し、XMDセッシ ョ ンを終了させます。

カスタム フロー

IP インテグレーターは、 ハード ウェア プロジェク ト ディレク ト リにフラ ッシュ設定および一時ファ イルを保存します。 ワークスペースに複数のハードウェア プロジェク トがある場合は、 フラ ッシュ プログラマのダイアログ ボッ クスが開くので、 そこでハード ウェア プラ ッ ト フォームを選択します。 次に説明する手順では、<IP integrator project> は、 ハード ウェア プラ ッ ト フォーム プロジェク ト を指します。

1. <IP integrator project> ディ レク ト リの下に 「tmp」 とい う名前のサブディ レク ト リ を作成します。

注記 : このフォルダーが既にある場合は、 この手順を飛ばします。

2. <edk_install>/data/xmd/flashwriter.tcl にある flashwriter.tcl をコピーし、 <IP integrator project>/tmp ディ レク ト リに保存します。

3. プロジェク ト内に sw_services ディ レク ト リ を作成します。

4. <edk_install>/data/xmd/flashwriter ディレク ト リ全体を sw_services ディレク ト リにコピーします。

5. プロジェク ト ディレク ト リにコピーした flashwriter.tcl の次の行を変更します。

set flashwriter_src [file join $xilinx_edk “data” “xmd” “flashwriter” “src”]

これを次のよ うに変更します。

set flashwriter_src [file join “..”“sw_services” "flashwriter" "src"]

これで、IP インテグレーターの [Program Flash Memory] ダイアログ ボッ クスで [Program Flash] ボタンをク リ ッ ク したと きに、 sw_services ディレク ト リにコピーしたスク リプ ト と ソースが使用されるよ うにな り ます。必要に応じて、 これらのファイルをカスタマイズします。

<IP integrator project>/settings/flash.tcl を GUI で上書きしたくな く、 flash.tcl で指定されている値のみを使用したい場合は、 コマンド ラインで次のコマンドを実行します。

xmd -nx -hw system.xml -tcl tmp/flashwriter.tcl settings/flash.tcl

表 5-3 には、 <IP integrator project> ディ レク ト リで使用可能なパラ メーターがリ ス ト されています。

表 5‐3 : フラ ッシュのプログラムのパラメーター

変数 関数

EXTRA_COMPILER_FLAGS MicroBlaze の場合、 ハード ウェア機能のサポート をオンにするコンパイラ オプシ ョ ンを指定します。 たとえば、 ハード ウェア乗算器をイネーブルにした場合は、 -mno-xl-soft-mul をこ こに追加します。

FLASH_BASEADDR フラ ッシュ メモ リ バンクのベース アドレス

FLASH_BOOT_CONFIG 詳細は、88 ページンの 「競合するセクター レイアウ トでのフラ ッシュ デバイスの処理」 を参照してください。

FLASH_FILE プログラムするファ イルへの完全パス

FLASH_PROG_OFFSET プログラムを実行するフラ ッシュ メモ リ バンクのオフセッ ト

PROC_INSTANCE プログラムに使用するプロセッサのインスタンス名

SCRATCH_BASEADDR プログラム中に使用されるスク ラ ッチ パッ ド メモ リのベース メモ リ

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 87UG1043 (v2014.3) 2014 年 10 月 1 日

Page 88: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 5 章 : フラッシュ  メモリのプログラム

ブート ローダー アプリケーシ ョ ン用に ELF ファイルを  SREC に手動で変換する方法

ELF フ ァ イルを SREC フ ォーマ ッ ト に手動で変換する場合は、 コマン ド ラ イ ンを使用でき ます。 た と えば、myexecutable.elf という ソフ ト ウェア アプリ ケーシ ョ ン イ メージを変換する場合は、 OS のコンソール (Windows ではCygwin) で ELF ファ イルを含むフォルダーに移動し、 次のコマンドを入力します。

<platform>-objcopy -O srec myexecutable.elf myexecutable.srec

<platform> には、 使用しているプロセッサが MicroBlaze であれば mb が入り ます。

これによ り、 SREC ファ イルが生成されます。 mb-objcopy は Vivado に含まれる GNU バイナリ ユーティ リ ティです。

操作上の注意点と回避策

ザイリンクス プラッ ト フォーム フラ ッシュ  モードの処理

ザイ リ ンクス プラ ッ ト フォーム フラ ッシュ メモ リ デバイスは、同期モードで初期化します。デバイスの操作を実行する前に、 このメモ リ デバイスは非同期に設定しておく必要があ り ます。 ザイ リ ンク ス ソフ ト ウェア開発キッ ト(SDK) を使用している場合は、 ターゲッ ト デバイスをザイ リ ンクス プラ ッ ト フォーム フラ ッシュ と して処理するよう、 フラ ッシュ プログラ ミ ング インターフェイスに指示をするチェッ クボッ クスがあるので、 それをオンにします。この設定で、 プログラ ミ ング前にデバイスを非同期に設定する、プログラマの内部折り返しを有効にするこ とができます。

Read‐Reset コマンドの 0xF0 でフラッシュ  デバイスを処理

CFI の仕様では、 Read-Reset (読み出し - リ セッ ト ) コマン ドは 0xFF/0xF0 に定義されています。 デフォル ト では、 フラ ッシュ プログラマは 0xFF を Read-Reset コマン ド と して使用します。 一部のデバイスで、 Read-Reset コマン ドを0xF0 にしなければならないものがあ り ますが。フラ ッシュ プログラマは自動的にこの判断をするこ とができません。このため、 新しいデバイスをプログラムする と きに問題に直面する場合があ り ます。

も しエラーが発生した場合は、 86 ページの 「フラ ッシュのプログラム設定のカスタマイズ」 にある手順に従って、cfi.c ファ イルの #define FRR_CMD 0xFF を #define FRR_CMD 0xF0 に変更します。

競合するセクター レイアウトでのフラッシュ  デバイスの処理

フラ ッシュ ベンダーによっては、 あるセクター マップを CFI テーブルに保存し、 別のセクター マップをフラ ッシュデバイスのブート ト ポロジに応じてフラ ッシュ デバイスに保存します。 ブート ト ポロジ情報は CFI で規格化されていないので、 フラ ッシュ デバイスで使用されているレイアウ ト をフラ ッシュ プログラマが判断するこ とはできません。

SCRATCH_LEN スク ラ ッチ パッ ド メモ リの長さ (バイ ト )

TARGET_TYPE プログラムに使用するプロセッサ インスタンスのタ イプ(MicroBlaze または Cortex A9)

XILINX_PLATFORM_FLASH ザイ リ ンクス プラ ッ ト フォーム フラ ッシュ XL フラ ッシュ デバイスを使用

XMD_CONNECT XMD でプロセッサに接続するために使用される接続コマンド

表 5‐3 : フラ ッシュのプログラムのパラメーター (続き)

変数 関数

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 88UG1043 (v2014.3) 2014 年 10 月 1 日

Page 89: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

第 5 章 : フラッシュ  メモリのプログラム

フラ ッシュ デバイスのセクター レイアウ トが、そのデバイスの CFI テーブルに保存されているものと異なる場合は、カスタム フラ ッシュ プログラム フローを作成する必要があ り ます。 フラ ッシュ デバイスが ト ップ ブートかボ ト ムブートかを判断する必要があ り ます。

ト ップ ブート フラ ッシュ デバイスではフラ ッシュの 後のセクターが 小のセクターであ り、ボ ト ム ブート フラ ッシュ デバイスでは 初のセクターが 小のセクターです。

ト ップ ブートかボ ト ム ブートかが判断できたら、 ファ イルをコピーし、 カスタム プログラム フローを作成します。

• ボ ト ム ブート フラ ッシュの場合は、 etc/flash_params.tcl ファ イルに次の行を追加します。

set FLASH_BOOT_CONFIG BOTTOM_BOOT_FLASH

• ト ップ ブート フラ ッシュの場合は、 次の行を追加します。

set FLASH_BOOT_CONFIG TOP_BOOT_FLASH

その後、 次のコマンドを使用してフラ ッシュ プログラムを実行します。

xmd -tcl flashwriter.tcl

ブート ト ポロジに応じて、 セクター マップが並べ替えられます。

AMD/富士通コマンド  セッ トのデータ  ポーリング アルゴリズム

ADM/富士通コマンド セッ ト をサポートするフラ ッシュ デバイスでは、 プログラムおよび消去に DQ7 データ ポーリング アルゴ リズムが使用されます。

フラ ッシュ デバイスによっては、データ ポーリ ング DQ7 ビッ トの動作を制御するのにコンフ ィギュレーシ ョ ン レジスタが使用されます。 コンフ ィギュレーシ ョ ン レジスタ機能のあるフラ ッシュ デバイス と しては、AT49BV322A(T)、AT49BV162A(T)、 AT49BV163A(T) などがあ り ます。

DQ7 は消去中は 0 を出力し、消去が終了したら 1 を出力するよ う規定されています。 また、プログラム中は反転したデータを出力し、プログラムが終了したら実際のデータを出力する必要があ り ます。フラ ッシュ デバイスのコンフ ィギュレーシ ョ ンが [Program Flash Memory] ダイアログ ボッ クスで指定したものと異なる場合は、プログラムでエラーが発生する可能性があ り ます。

消去および終了時に DQ7 が正しい値を出力するよ う、 コンフ ィギュレーシ ョ ンを リセッ トする方法は、 フラ ッシュデバイスのデータシート を参照してください。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 89UG1043 (v2014.3) 2014 年 10 月 1 日

Page 90: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

付録 A

GNU ユーティ リテ ィこの付録では、 Vivado® Design Suite で使用可能な GNU ユーティ リ ティについて説明します。

MicroBlaze プロセッサ用の汎用ユーティ リテ ィ

cpp

C および C++ コード のプ リ プロセ ッサ。 プ リ プロセ ッサは GCC (GNU コ ンパイ ラ ) によ り 自動的に実行され、file-include、 define などの指示子をインプリ メン ト します。

gcov 

GCC と共に使用し、 ユーザー プログラムのテス ト範囲のプロファイル作成および解析を実行します。 gprof プロファイル作成プログラムでも使用できます。

注記 : gcov は IP インテグレーターまたは SDK ではサポート されていませんが、 カスタム テス ト フローを実行する必要があるケース用に提供されています。

MicroBlaze プロセッサ用ユーティ リテ ィMicroBlaze™ 用ユーティ リ ティには接頭辞 mb が付いていおり、 次のものがあ り ます。

mb‐addr2line

実行ファ イルのデバッグ情報を使用して、 プログラム アドレスを対応する行番号とファ イル名に変換するプログラム。

mb‐ar 

アーカイブからファ イルを作成、 変更、 および抽出するプログラム。 アーカイブは、 通常ライブラ リのオブジェク トファ イルなどの複数のファイルを含むファイルです。

mb‐as 

アセンブラ プログラム。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 90UG1043 (v2014.3) 2014 年 10 月 1 日

Page 91: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

付録 A : GNU ユーティ リテ ィ

mb‐c++ 

mb-gcc と同じ クロス コンパイラで、プログラム言語が C++ に設定されている場合に実行されます。mb-g++ と同じです。

mb‐c++filt 

アセンブリ リ ス トの C++ および Java 関数名をデマングルするプログラム。

mb‐g++ 

mb-gcc と同じ クロス コンパイラで、プログラム言語が C++ に設定されている場合に実行されます。mb-c++ と同じです。

mb‐gasp

アセンブラ プログラムのマクロ プリプロセッサ。

mb‐gcc

C および C++ プログラムのクロス コンパイラ。 ファ イル拡張子から、 使用されているプログラム言語を自動的に認識します。

mb‐gdb

プログラムのデバッガー。

mb‐gprof

プログラムの各部分にどれだけの時間がかかるかを解析するプロファ イル生成プログラム。 ランタイムを 適化するのに有益です。

mb‐ld

リ ンカー プログラム。 ラ イブラ リ ファ イルとオブジェク ト ファ イルを結合し、 必要な リ ロケーシ ョ ンを実行して、実行ファイルを生成します。

mb‐nm

オブジェク ト ファ イルのシンボルを リ ス トするプログラム。

mb‐objcopy

オブジェク ト ファ イルの内容をあるフォーマッ トから別のフォーマッ トに変換するプログラム。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 91UG1043 (v2014.3) 2014 年 10 月 1 日

Page 92: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

付録 A : GNU ユーティ リテ ィ

mb‐objdump

オブジェク ト ファ イルの情報を表示するプログラム。 プログラムのデバッグにおいて有益で、 正しいコードおよびデータが正しいメモ リ ロケーシ ョ ンにあるかど うかを検証するのに使用されます。

mb‐ranlib

アーカイブ ファ イルのインデッ クスを作成し、 アーカイブ ファ イルに追加するプログラム。 アーカイブで示されるライブラ リへのリ ンク プロセスを高速化できます。

mb‐readelf

ELF (Executable Linked Format) ファ イルの情報を表示するプログラム。

mb‐size

オブジェク ト ファ イルの各セクシ ョ ンのサイズを リ ス トするプログラム。 コードおよびデータのスタティ ッ ク メモリ要件を判断するのに便利です。

mb‐strings

バイナリ ファ イルの内容を判断するのに便利なプログラム。 オブジェク ト ファ イルに含まれる表示可能な文字列をリ ス ト します。

mb‐strip

オブジェク ト ファ イルからシンボルを削除するプログラム。 ファ イル サイズを削減し、 ファ イル内のシンボル情報が見られないよ うにするために使用します。

その他のプログラムおよびファイル次の Tcl および Tk シェルは、 さまざまなフロン ト エンド プログラムから起動されます。

• cygitclsh30

• cygitkwish30

• cygtclsh80

• cygwish80

• tix4180

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 92UG1043 (v2014.3) 2014 年 10 月 1 日

Page 94: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

付録 B

その他のソースおよび法的通知

ザイリンクス リソースアンサー、 資料、 ダウンロード、 フォーラムなどのサポート リ ソースは、 次のザイ リ ンクス サポート サイ ト を参照してください。

ソリューシ ョ ン  センターデバイス、 ツール、 IP のサポートについては、 ザイ リ ンクス ソ リ ューシ ョ ン センターを参照して ください。 ト ピックには、 デザイン アシスタン ト 、 アドバイザリ、 ト ラブルシュート ヒ ン ト などが含まれます。

参考資料このガイ ドでは、 次の Vivado® Design Suite ガイ ドが参照されています。

1. 『ソフ ト ウェア開発キッ ト (SDK) ヘルプ』 (UG782)

2. 『Zynq-7000 All Programmable SoC テクニカル リ ファレンス マニュアル』 (UG585) (UG585)

3. 『MicroBlaze プロセッサ ユーザー ガイ ド』 (UG081)

 その他のザイリンクス資料

• 『Vivado Design Suite ユーザー ガイ ド : エンベデッ ド ハードウェア デザイン』 (UG898) (UG898)

• 『Vivado Design Suite チュート リ アル : エンベデッ ド ハードウェア デザイン』 (UG940) (UG940)

• 『基本的なソフ ト ウェア プラ ッ ト フォームの生成リ ファレンス ガイ ド』 (UG1138)

• 『Zynq-7000 All Programmable SoC ソフ ト ウェア開発ガイ ド』 (UG821) (UG821)

その他のリソース

• GNU のウェブ サイ ト :http://www.gnu.org

• Red Hat Insight のウェブ サイ ト :http://sources.redhat.com/insight.

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 94UG1043 (v2014.3) 2014 年 10 月 1 日

Page 95: エンベデッド システム ツール リファレンス マニュ … › support › documentation › sw_manuals...エンベデッド システム ツール リファレンス

付録 B : その他のソースおよび法的通知

法的通知The information disclosed to you hereunder (the “Materials”) is provided solely for the selection and use of Xilinx products.To the maximum extentpermitted by applicable law:(1) Materials are made available "AS IS" and with all faults, Xilinx hereby DISCLAIMS ALL WARRANTIES ANDCONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and (2) Xilinx shall not be liable (whether in contract or tort,including negligence, or under any other theory of liability) for any loss or damage of any kind or nature related to, arising under, or in connectionwith, the Materials (including your use of the Materials), including for any direct, indirect, special, incidental, or consequential loss or damage(including loss of data, profits, goodwill, or any type of loss or damage suffered as a result of any action brought by a third party) even if suchdamage or loss was reasonably foreseeable or Xilinx had been advised of the possibility of the same.Xilinx assumes no obligation to correct anyerrors contained in the Materials or to notify you of updates to the Materials or to product specifications.You may not reproduce, modify, distribute,or publicly display the Materials without prior written consent.Certain products are subject to the terms and conditions of Xilinx’s limited warranty,please refer to Xilinx’s Terms of Sale which can be viewed at http://www.xilinx.com/legal.htm#tos; IP cores may be subject to warranty and supportterms contained in a license issued to you by Xilinx.Xilinx products are not designed or intended to be fail-safe or for use in any applicationrequiring fail-safe performance; you assume sole risk and liability for use of Xilinx products in such critical applications, please refer to Xilinx’sTerms of Sale which can be viewed at http://www.xilinx.com/legal.htm#tos.

© Copyright 2014 Xilinx, Inc. Xilinx, the Xilinx logo, Artix, ISE, Kintex, Spartan, Virtex, Vivado, Zynq, and other designated brands includedherein are trademarks of Xilinx in the United States and other countries.All other trademarks are the property of their respective owners.

この資料に関するフ ィードバッ クおよびリ ンクなどの問題につきましては、 [email protected] まで、 または各ページの

右下にある [フ ィードバッ ク送信] ボタンをク リ ッ クする と表示されるフォームからお知らせください。 フ ィードバッ クは日本語で

入力可能です。 いただきましたご意見を参考に早急に対応させていただきます。 なお、 このメール アドレスへのお問い合わせは受

け付けており ません。 あらかじめご了承ください。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com 95UG1043 (v2014.3) 2014 年 10 月 1 日