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

エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

UG1043 (v2015.1) 2015 年 4 月 1 日

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

Page 2: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

改訂履歴

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

日付 バージョ ン 改訂内容

2015 年 4 月 1 日 2015.1 Vivado® Design Suite 2015.1 リ リース

GNU デバッガーに関する情報を削除

第 3 章「Xilinx System Debugger」を追加し、SDK System Debugger および Xilinx System Debugger(XSDB) に関する情報を記載

第 4 章「フラ ッシュ メモ リのプログラム」 のプログラム フラ ッシュ コマンド ライン インターフェイスに関する情報をアップデート

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

Page 3: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

目次

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

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

Vivado Design Suite の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

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

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

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

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

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

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

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

第 3章 : Xilinx System DebuggerSDK System Debugger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Xilinx System Debugger コマンド ライン インターフェイス (XSDB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

XSDB コマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

XSDB を使用したスク リプ トの実行. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

XSDB を使用したアプリ ケーシ ョ ンの実行. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

サーバー モードでの XSDB を使用したアプリ ケーシ ョ ンの実行. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64XMD vs XSDB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

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

プログラム フラ ッシュ ユーティ リ ティ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

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

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

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

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

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

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

参考資料 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

ト レーニング リ ソース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

法的通知 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

Page 4: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 1章

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

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

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

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

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

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

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

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

Page 5: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

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

ハードウェア開発

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

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

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

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

X-Ref Target - Figure 1-1

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

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

Page 6: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

ソフ トウェア開発

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

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

検証

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Page 8: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

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

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

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

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

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

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

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

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

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

• プロジェク ト管理機能

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

• エラー ナビゲーシ ョ ン

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

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

GNU コンパイラ  ツール

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

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

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

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

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

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

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

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

Xilinx System Debugger (XSDB) hw_server およびその他の TCF サーバー用のコマンド ラ イン インターフェイスで、 Xilinx Microprocessor Debugger (XMD) に代わるものです。

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

プログラム フラ ッシュ ユーティ リ ティ

ソフ ト ウェアおよびデータを使用してオンボードのシ リ アルおよびパラレルフラ ッシュ デバイスを削除してプログラムできるよ うにします。

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

Page 9: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

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

Xilinx System Debugger (XSDB)

Xilinx System Debugger (XSDB) は、hw_server およびその他の TCF サーバー用のコマンド ライン インターフェイスで、Xilinx Microprocessor Debugger (XMD) に代わるものです。 XSDB は TCF サーバーと通信するので、 TCF サーバーでサポート される機能を 大限に活用できます。

XSDB では、 FPGA のプログラム、 ターゲッ トへのプログラムのダウンロード と実行、 およびその他の高度な機能がサポート されます。 詳細は、 第 3 章 「Xilinx System Debugger」 を参照して ください。

SDK System Debugger

ザイ リ ンクスによ りカスタマイズされた System Debugger は、オープン ソース ツールから作成されて、ザイ リ ンクスSDK に統合されています。 この SDK デバッガーを使用する と、 実行中にプログラムに何が起こっているのかを確認できるよ うになり ます。 プロセッサを停止するブレークポイン ト またはウォッチポイン ト を設定し、プログラム実行をステップ スルーしていって、 プログラム変数およびスタ ッ クを確認し、 システム内のメモ リ内容を確認できます。

SDK デバッガーでは、 Xilinx System Debugger (XSDB) を使用したデバッグがサポー ト されます。 詳細は、 第 3 章「Xilinx System Debugger」 を参照してください。

注記 : GDB フローは廃止予定となっており、 今後のデバイスでは使用できな く なる予定です。 System Debugger はDigilent ケーブルを使用した ARM での使用のみに使用できます。

プログラム フラ ッシュ  ユーティ リテ ィ

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

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

Page 10: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 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 10UG1043 (v2015.1) 2015 年 4 月 1 日

Page 11: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 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)

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

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

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

Page 12: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

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

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

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

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

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

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

注記 : この章では、 「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 12UG1043 (v2015.1) 2015 年 4 月 1 日

Page 13: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

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

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

ライブラリ

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

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

言語タイプ

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

GCC コンパイ ラを使用する場合、 プログラムの言語は13 ページの表 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 13UG1043 (v2015.1) 2015 年 4 月 1 日

Page 14: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 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 14UG1043 (v2015.1) 2015 年 4 月 1 日

Page 15: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 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 15UG1043 (v2015.1) 2015 年 4 月 1 日

Page 16: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 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 最適化

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

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

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

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

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

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

Page 17: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 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 17UG1043 (v2015.1) 2015 年 4 月 1 日

Page 18: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 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

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

Page 19: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

初期化ファイル検索順序

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

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

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

3. 次のライブラ リ

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 プロセッサそれぞれに対して規定されている予約済みメモ リ ロケーシ ョ ンがまとめられています。 これらのメモ リ ロケーシ ョ ンの詳細は、 使用するプロセッサの リ ファレンス マニュアルを参照してください。

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

Page 20: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

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

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

I/O メモリ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

開始アドレス

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

0x50

Cortex A9 ARM

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

Page 21: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 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 21UG1043 (v2015.1) 2015 年 4 月 1 日

Page 22: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 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 22UG1043 (v2015.1) 2015 年 4 月 1 日

Page 23: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 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 23UG1043 (v2015.1) 2015 年 4 月 1 日

Page 24: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 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 プロセッサの リ ンカー ス ク リプ ト によ り割り当てられる入力セクシ ョ ンの詳細については、第 2 章の 「MicroBlaze リ ンカー スク リプ トで割り当てられるセクシ ョ ン」 を参照してください。

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

MicroBlaze コンパイラ

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

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

Page 25: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

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

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

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

-mcpu=vX.YY.Z

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

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

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

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

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

-mlittle-endian / -mbig-endian

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

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

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

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

-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

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

-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 25UG1043 (v2015.1) 2015 年 4 月 1 日

Page 26: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

-mno-xl-soft-mul

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

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) を参照して ください。

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

Page 27: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

-mno-xl-barrel-shift

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

-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]を参照してください。

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

Page 28: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

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

-msmall-divides

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

-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 をソース コードに含め、標準のスタ ック オーバーフロー ハンド ラーの代わり と して使用するこ とができます。

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

Page 29: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

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

-xl-mode-executable

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

-xl-mode-bootstrap

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

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

上記とは異なる状況で使用されるアプ リ ケーシ ョ ンでは、 このオプシ ョ ンは機能しません。 このモードでは、 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] を参照してください。

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

Page 30: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

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 オプシ ョ ンを使用してください。

同様に、 命令で大きな定数のオペランドが必要な場合は、 アセンブ リ言語プログラマで 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 で指定したアドレスから開始するよ うになり ます。

表 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 30UG1043 (v2015.1) 2015 年 4 月 1 日

Page 31: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

デフォルトの開始アドレスを使用する場合は、 -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 のマニュアルを参照してください。

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

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

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

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

セクシ ョ ン 説明 

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

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

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

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

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

.rodata 読み出し専用変数

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

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

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

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

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

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

Page 32: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

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

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

• ベクター セクシ ョ ンが 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 を作成する必要があ り ます。

スタートアップ ファイル 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

セクシ ョ ン 説明 

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

Page 33: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

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

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

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

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

crt0.o

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

crt1.o

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

crt2.o

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

crt3.o

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

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

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

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

レジスタ 値 説明

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

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

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

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

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

Page 34: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

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 を呼び出し、 戻り ます。

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 を呼び出し、 戻り ます。

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

Page 35: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

その他のファイル

コンパイ ラは、 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 バイ ト縮小できます。

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

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

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

および

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

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

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

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

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

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

Page 36: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

アプリ ケーシ ョ ンを異なるモードで実行する場合は、 32 ページの 「スタート アップ ファ イル」 の説明に従って、 適切な 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 のオプシ ョ ンの単精度の浮動小数点機能をフル活用できない可能性があ り ます。

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 に初期化されます。

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

エンコード 説明

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

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

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

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

Page 37: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

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

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

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));表 2‐10 :割り込みハンドラーの使用法

属性 関数

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

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

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

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

Page 38: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

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

リンク

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

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

Page 39: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

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

その他の注意事項

C++ コードのサイズ

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

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

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

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

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 39UG1043 (v2015.1) 2015 年 4 月 1 日

Page 40: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3章

Xilinx System Debugger

Xilinx® System Debugger を使用する と、 実行中にプログラムに何が起こっているのかを確認できるよ うにな り ます。プロセッサを停止するブレークポイン ト またはウォ ッチポイン ト を設定し、 プログラム実行をステップ スルーしていって、 プログラム変数およびスタ ッ クを確認するこ とで、 システム内のメモ リ内容を確認できます。

Xilinx System Debugger では、 SDK およびコマンド ラ イン インターフェイス (CLI) を使用したデバッグがサポート されます。

SDK System Debugger

SDK System Debugger では、ザイ リ ンクス の hw_server が基本的なデバッグ エンジンと して使用されます。 SDK では各ユーザー インターフェイス アクシ ョ ンが一連の TCF コマンドに変換され、システム デバッガーからの出力が処理され、 デバッグされている現在のプログラムのステートが表示されます。 SDK ではザイ リ ンクス hw_server を使用してハード ウェア上のプロセッサと通信します。 次の図はこのデバッグ ワークフローを示しています。

ワークフローは、 次のコンポーネン トから構成されます。

• 実行可能な ELF ファ イル : ユーザー アプリ ケーシ ョ ンをデバッグするには、 デバッグ用にコンパイルされたELF (Executable and Linkable Format) ファ イルを使用する必要があ り ます。 デバッグ ELF ファ イルには、 デバッ

X-Ref Target - Figure 3-1

図 3‐1 :デバッグ ワークフロー

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

Page 41: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

ガーへの追加のデバッグ情報が含まれ、ソース コード とその元のソースから生成された 2 進数間が直接関連付けられます。

• デバッグ コンフ ィギュレーシ ョ ン : デバッグ セッシ ョ ンを開始するには、 SDK でデバッグ コンフ ィギュレーシ ョ ンを作成する必要があ り ます。 このコンフ ィギュレーシ ョ ンには、 実行ファイル名、 デバッグするプロセッサ ターゲッ ト 、 およびその他の情報など、 デバッグ セッシ ョ ンを開始するの必要なオプシ ョ ンが含まれます。

• SDK の [Debug] パースペクティブ : [Debug] パースペクティブを使用する と、 ワークベンチでプログラムのデバッグまたは実行が管理できます。 プログラムの実行は、 ブレークポイン ト を設定し、 起動したプログラムを一時停止し、 コードをステップ スルーし、 変数の内容を検証するこ とで制御できます。

コードの修正、 実行ファイルの構築、 プログラムのデバッグといったサイクルは、 SDK で繰り返すこ とができます。

注記 : コンパイル後にソースを編集する と、 デバッグ情報がそのソースに直接関連付けられているので、 その行番号はステップ実行されなくな り ます。 同様に、 適化された 2 進数をデバッグしても、 実行ト レースで予想外にジャンプしてしま う こ とがあ り ます。

SDK System Debugger の詳細は、 ソフ ト ウェア開発キッ ト (SDK) ヘルプ [参照 1] を参照してください。

Xilinx System Debugger コマンド ライン  インターフェイス (XSDB)Xilinx System Debugger コマンド ライン インターフェイス (XSDB) は、ザイ リ ンクス hw_server およびその他のザイ リンクスで使用される TCF サーバーに、 使用しやすいインタラ クティブなスク リプ ト記述可能なコマンド ライン インターフェイスを提供します。 XSDB は TCF サーバーと対話するので、 TCF サーバーでサポート される機能を 大限に利用できます。 XSDB コマンドは、 主に Xilinx Microprocessor Debugger (XMD) からのものです。 XMD の場合と同様、 XSDB スク リプ ト言語は Tcl (Tool Command Language) に基づいています。

XMD と XSDB の違いは、 次のとおりです。

• システム全体との対話が可能

• ハード化されたプログラマブル ロジッ クのソフ ト ウェア エンジニアの観点をサポート

• パフォーマンス計測機能を提供

• hw_server とその他の TCF サーバーを統合

XSDB コマンドXSDB では、 ターゲッ ト メモ リ /レジスタへのアクセス、 プログラムのダウンロードおよび実行、 および FPGA のコンフ ィギュレーシ ョ ンなどの基本的なデバッグ機能とは別に、加工なしの JTAG アクセス、サーバー モードなどもサポート されます。 XSDB でサポート される機能は、 次のよ うなコマンド カテゴ リに大まかに分類されます。

• 「接続」

• 「ブレークポイン ト 」

• 「ダウンロード」

• 「JTAG」

• 「メモ リ 」

• 「その他」

• 「レジスタ」

• 「 リ セッ ト 」

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

Page 42: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

• 「実行」

• 「ス ト リーム」

接続

Xilinx System Debugger CLI (XSDB) 接続コマンドを使用する と、 hw_server から接続または接続解除して、 アクティブターゲッ ト を リ ス ト または選択できます。

使用できるコマンドは、 次のとおりです。

• 「connect」

• 「disconnect」

• 「targets」

• 「gdbremote connect」

• 「gdbremote disconnect」

connect

hw_server に接続します。 XMD と異な り、 XSDB の connect コマンドではハード ウェアのデバッグ ターゲッ トには接続されないので、 デバッグ ターゲッ トに対してコマンドを実行する前に、 ユーザーが targets コマンドを使用して使用可能なターゲッ ト を リ ス ト し、 デバッグ ターゲッ ト を選択する必要があ り ます。

connect コマンドにオプシ ョ ンを何も付けない場合、 XSDB は localhost:3121 で hw_server を起動し、 接続します。

connect コマンドでは、 hw_server への接続のチャネル ID が戻されます。

1 度に複数の TCF サーバーに接続するこ とができます。 この接続間を切り替える と、 さまざまなターゲッ ト を同時にデバッグできます。

使用法

connect [Options]

オプシ ョ ン

• ホス ト localhost およびポート 3121 で hw_server に接続します。

connect -host localhost -port 3121

• 前の例と同じ接続を実行します。

connect -url tcp:localhost:3121

オプシ ョ ン 説明

-host <host name/ip> ホス ト マシンの名前/IP アドレス

-port <port num> TCP ポート番号

-url <url> hw_server の URL 記述

-list オープン接続を リ ス ト

-set <channel-id> アクティブ接続を設定

-new 同じ URL に存在するものがあっても新しい接続を作成

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

Page 43: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

disconnect

hw_server からの接続を解除します。 connect コマンド と同様、 disconnect ではデバッグ ターゲッ トへの接続は閉じられませんが、 hw_server への接続が閉じられます。

使用法

アクティブ チャネルからの接続を解除します。

disconnect

特定のチャネルからの接続を解除します。

disconnect <channel-id>

targets

使用可能なターゲッ ト を リ ス ト した り、 ターゲッ ト をアクティブ ターゲッ ト と して選択できます。 XSDB では、 ターゲッ ト ID がシーケンシャルで、 ターゲッ トが表示されるよ うになったら割り当てられます。 ターゲッ トは -filter オプシ ョ ンを使用する とプログラムで選択されます。 これについては、 次の例に示します。

使用法

使用可能なターゲッ ト を リ ス ト します。

Targets [options]

<target id> をアクティブ ターゲッ ト と して選択します。

targets <target id>

オプシ ョ ン

オプシ ョ ン 説明

-set 現在のターゲッ ト を リ ス トの単一のエン ト リに設定。これは、 -filter オプシ ョンと一緒に使用する と便利で、 リ ス トが空の場合や複数のエン ト リが含まれる場合は、 エラーになり ます。

-regexp フ ィルター マッチングに regexp を使用

-nocase 大文字/小文字に関係なく フ ィルター マッチングを使用

-filter <filter-expression>

プロパティに基づいてどのターゲッ ト を リ ス トに含めるかを制御するフ ィルター式を指定。 フ ィルター式は、 Tcl の expr 構文と類似しています。 ターゲッ ト プロパティは名前で参照されます (Tcl 変数には $ 構文を使用してアクセスされます)。 文字列は、 クォーテーシ ョ ンで囲む必要があ り ます。 演算子 ==、 !=、 <=、 >=、<、 >、 &&、 || と () がサポート されます。 これらの演算子は、 Tcl の expr 演算子と同じよ うに動作します。文字列マッチング演算子 =~ および !~ は、regexpか文字列マッチのいずれかを使用して、 LHS (Left Hand Side) 文字列を RHS(Right Hand Side) パターンに一致させます。

-target-properties ターゲッ ト プロパティを含む Tcl リ ス ト を表示

-index <index> JTAG スキャン チェーン位置に基づいてターゲッ ト を含有。これは -filter{jtag_device_index==<index>} と指定するのと同じこ とです。

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

Page 44: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

• すべてのターゲッ ト を リ ス ト します。

targets

• ARM で始ま り #1 で終わる名前のターゲッ ト を リ ス ト します。

targets -filter {name =~ "ARM*#1"}

• ID 2 のターゲッ ト を現在のターゲッ トに設定します。

targets 2

• 現在のターゲッ ト を ARM で始ま り #1 で終わる名前のターゲッ トに設定します。

targets -set -filter {name =~ "ARM*#1"}

• 現在のターゲッ ト を MicroBlaze で始まる名前で 初の JTAG デバイスにあるターゲッ トに設定します。

targets -set -filter {name =~ "MicroBlaze*"} -index 0

gdbremote connect

GDB リモート サーバーに接続しよ う と します。

使用法

gdbremote connect [options] server

オプシ ョ ン

ポート 5555 で実行される GDB サーバーに接続します。

gdbremote connect localhost:5555

gdbremote disconnect

現在または指定したターゲッ トの GDB リモート サーバーの接続を解除します。

使用法

gdbremote disconnect [target-id]

ブレークポイン ト

ブレークポイン ト /ウォ ッチポインを追加、 削除、 イネーブル、 ディ スエーブル、 またはリ ス ト します。 XSDB では、アドレスおよびソース行でブレークポイン ト /ウォ ッチポイン トがサポート されます。

• 「bpadd」

• 「bpremove」

• 「bpenable」

• 「bpdisable」

• 「bplist」

オプシ ョ ン 説明

-architecture <name> リモート サーバーが提供しないデフォルト アーキテクチャを指定

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

Page 45: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

bpadd

ブレークポイン ト /ウォ ッチポイン ト を追加します。本書では、シンプルにするため、ブレークポイン トおよびウォッチポイン ト をま とめてブレークポイン ト と記述します。

ブレークポイン トは、 hw_server の接続の有無に関係なく追加でき、 ユーザーまたは XSDB が終了して削除されるまで保持されます。 ブレークポイン トが設定できるのは、 アドレス、 ファ イル、 またはファイル行です。

bpadd では、 ブレークポイン トの ID が戻されます。

使用法

bpadd <Options>

オプシ ョ ン

• アドレス 0x100000 にブレークポイン ト を設定します。 ブレークポイン ト タイプは hw_server によ り選択されます。

bpadd -addr 0x100000

• test.c:23 にハードウェア ブレークポイン ト を設定します。

bpadd -file test.c -line 23 -type hw

• 変数 fooVar に Read_Write ウォッチポイン ト を設定します。

bpadd -addr &fooVar -type hw -mode 0x3

bpremove

ブレークポイン ト を削除します。 このコマンドを使用する と、現在の XSDB セッシ ョ ンから設定されたブレークポイン トのみが削除できます。

使用法 

bpremove <id-list>

オプシ ョ ン 説明

-addr <breakpoint-address> ブレークポイン ト を設定するアドレスを指定

-file <file-name> ブレークポイン ト を設定するファイル名を指定

-line <line-number> ブレークポイン ト を設定するファイル内の行番号を指定

-type <breakpoint-type> ブレークポイン ト タイプを指定。 タイプに使用できる値は、次のいずれかになり ます。

• auto - hw_server で自動ブレークポイン ト タイプを選択 (デフォルト )• hw - ハードウェア ブレークポイン ト

• sw - ソフ ト ウェア ブレークポイン ト

-mode <breakpoint-mode> ブレークポイン ト を ト リ ガーするアクセス モードを指定。 モードは bitwiseか次のいずれかにできます。

• 0x1 - ブレークポイン ト位置から読み出しで ト リガー

• 0x1 - ブレークポイン ト位置から書き込みで ト リガー

• 0x4 - ブレークポイ ト位置の命令実行でト リガー。行番号およびアドレスのブレークポイン トの場合は、 これがデフォルトです。

• 0x8 - ブレークポイン ト位置のデータ変更 (明示的な書き込みではない) でト リガー

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

Page 46: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

オプシ ョ ン

• ブレークポイン ト 0 を削除します。

bpremove 0

• ブレークポイン ト 1 と 2 を削除します。

bpremove 1 2

bpenable

ブレークポイン ト をイネーブルにします。 このコマンドを使用する と、 現在の XSDB セッシ ョ ンから設定されたブレークポイン トのみをイネーブルにできます。

使用法 

bpenable <id-list>

オプシ ョ ン

• ブレークポイン ト 0 をイネーブルにします。

bpenable 0

• ブレークポイン ト 1 と 2 をイネーブルにします。

bpenable 1 2

bpdisable

ブレークポイン ト をディ スエーブルにします。 このコマンドを使用する と、現在の XSDB セッシ ョ ンから設定されたブレークポイン トのみをディ スエーブルにできます。

使用法 

bpdisable <id-list>

オプシ ョ ン

オプシ ョ ン 説明

<id-list> bpadd コマンドで戻されるブレークポイン ト ID のリ ス ト。ブレークポイン トID は、 bplist コマンドでも取得できます。

オプシ ョ ン 説明

<id-list> bpadd コマンドで戻されるブレークポイン ト ID のリ ス ト。ブレークポイン トID は、 bplist コマンドでも取得できます。

オプシ ョ ン 説明

<id-list> bpadd コマンドで戻されるブレークポイン ト ID のリ ス ト。ブレークポイン トID は、 bplist コマンドでも取得できます。

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

Page 47: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

• ブレークポイン ト 0 をディ スエーブルにします。

bpdisable 0

• ブレークポイン ト 1 と 2 をディ スエーブルにします。

bpdisable 1 2

bplist

すべてのブレークポイン ト を リ ス ト します。 このコマンドを実行する と、現在の XSDB セッシ ョ ンからのブレークポイン ト セッ ト と、 その他のデバッグ ク ライアン トからのブレークポイン ト セッ トが リ ス ト されます。

使用法 

bplist

ダウンロード

ELF ファ イル/2 進数ファイルをターゲッ トにダウンロード して、 FPGA をコンフ ィギュレーシ ョ ンします。

• 「dow」

• 「fpga」

dow

ELF ファ イル/2 進数ファイルをアクティブ ターゲッ トにダウンロード します。

使用法

dow [options] <file>

オプシ ョ ン

fpga

FPGA をビッ ト ス ト リームを使用してコンフ ィギュレーシ ョ ンします。 FPGA デバイスは、 fpga コマンドを実行する前に target コマンドを使用して選択しておく必要があ り ます。

使用法

fpga [options] <bitstream-file>

オプシ ョ ン 説明

[-clear] <file> ELF フ ァ イル <file> をアクテ ィブ ターゲッ ト にダウンロード。 -clear オプシ ョ ンを使用する と、 ELF ダウンロード中に bss のよ うなロードできないセクシ ョ ンをク リ アにできます。

-data <file> <addr> <addr> で指定したアクティブ ターゲッ ト アドレスに 2 進数ファ イル <file>をダウンロード

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

Page 48: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

オプシ ョ ン

JTAG

加工なしの JTAG シフ ト、 デバイス プロパティの取得/設定、 JTAG ケーブルのロ ッ ク /アンロ ッ クなどを実行します。

• 「jtag targets」

• 「jtag sequence」

• 「jtag device_properties」

• 「jtag lock」

• 「jtag unlock」

• 「jtag claim」

• 「jtag disclaim」

• 「jtag frequency」

jtag targets

JTAG ターゲッ ト を リ ス トするか、 JTAG ターゲッ ト間を切り替えます。

使用法

jtag targets

オプシ ョ ン

jtag sequence

JTAG シーケンス オブジェ ク ト を作成します。 新しいシーケンス オブジェ ク ト を作成します。 作成した後は、 そのシーケンスは空です。 使用できるシーケンス オブジェク ト コマンドは、 次のとおりです。

オプシ ョ ン

オプシ ョ ン 説明

-file <bitstream-file> ビッ ト ス ト リームを含むファイルを指定

-partial 現在のコンフ ィギュレーシ ョ ンを 初にク リ アせずに FPGA をコンフ ィギュレーシ ョ ン

オプシ ョ ン 説明

<target id> <target id> をアクティブ JTAG ターゲッ ト と して選択

オブジェク ト  コマンド オプシ ョ ン 説明

sequence state <new-state> [count]

JTAG ステート マシンを <new-state> に移動してから、 <count> 個の JTAG ク ロ ッ クを生成。 <clock> が指定されていて、 <new-state> がループ ステー ト (RESET、 IDLE、IRSHIFT、 IRPAUSE、 DRSHIFT または DRPAUSE) でない場合は、 同じステート マシンが RESET ステートに向かって移動します。

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

Page 49: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

sequence irshift [options] bits [data]sequence drshift [options] bits [data]

データを IRSHIFT または DRSHIFT ステートにシフ ト イン。 データは、 後の引数として指定されるか、 -tdi オプシ ョ ンが指定される場合はその -tdi オプシ ョ ンで指定された引数に基づいて、 すべて 0 かすべて 1 になり ます。

-tdi <value> SHIFT ステー ト のすべてのク ロ ッ クに使用されるTDI 値を指定

-binary <data> のフォーマッ ト を 2 進数に指定 (ファ イルからのデータや 2 進数フォーマッ トからのデータなど)

-integer <data> のフォーマッ ト を整数に指定。 データの 下位ビッ ト (LSB) が 初にシフ ト されます。

-bits <data> のフォーマッ ト を 2 進数のテキス ト文字列に指定。 文字列の 初のビッ トが 初にシフ ト されます。

-hex <data> のフォーマッ ト を 2 進数文字列に指定。 文字列の 初のバイ トの 下位ビッ ト (LSB) が 初にシフ ト されます。

-capture シフ ト 中に TDO データをキャプチャ し、 sequencerun コマンドで表示

-state <new-state> シフ トが終了した後に入力するステート を指定。 デフォルトは RESET です。

sequence delay usec sequence コマンド間に遅延を生成。 JTAG ク ロ ッ クは遅延中に生成されません。 遅延は、少なく と も <usec> マイクロ秒になるこ とが保証されますが、 JTAG ク ロ ッ クの生成がなければ遅延をサポート しないケーブルの場合はそれよ り長くなる こ とがあ ります。

sequence get_pin pin <pin> の値を取得。 サポート されるピンはケーブルによって異なり ます。

sequence set_pin pin value

<pin> の値を <value> に設定。 サポート されるピンはケーブルによって異なり ます。

sequence atomic enable

ア ト ミ ッ ク シーケンスを設定またはク リ ア。これは、正確なタイ ミ ングまたはエラーで実行されるよ うに保証されるシーケンスを作成する際に便利です。ア ト ミ ッ ク シーケンスは、エラーのリ スクを 小限にするため、できるだけ短くする必要があ り ます。

sequence run [options]

現在選択している JTAG ターゲッ トに対して JTAG 操作を順番に実行。 このコマンドでは、 -capture オプシ ョ ンを使用した shift コマンドから と get_pins コマンドからの結果が戻されます。

-binary 戻り値を 2 進数にフォーマッ ト。 シフ ト アウ ト される 初のビッ トは、 初に戻されたバイ トの LSB です。

-bits 戻り値を 2 進数テキス ト文字列にフォーマッ ト。 シフ ト アウ ト される 初のビッ トは、 文字列の 初の文字です。

-hex 戻り値を 16 進数テキス ト 文字列にフォーマッ ト。シフ ト アウ ト される 初のビッ トは、 初に戻された文字列の 初のバイ トの LSB です。

-single すべての戻り値を 1 つのデータ と して統合。 このオプシ ョ ンを指定しない場合、 戻り値は shift -captureと get_pin に対して 1 つのエン ト リ を含むリ ス トにな り ます。

オブジェク ト  コマンド オプシ ョ ン 説明

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

Page 50: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

set seqname [jtag sequence]

$seqname state RESET

$seqname drshift -capture -tdi 0 256

set result [$seqname run]

$seqname delete

jtag device_properties

デバイス プロパティを取得または設定します。

使用法

jtag device_properties [options]

オプシ ョ ン

• idcode 0x4ba00477 に関連付けられたデバイス プロパティを戻します。

jtag device_properties 0x4ba00477

• idcode 0x4ba00477 のデバイス プロパティを設定します。

jtag device_properties {idcode 0x4ba00477 mask 0xffffffff name arm_dap irlen 4}

jtag lock

JTAG スキャン チェーンをロ ッ ク します。

使用法

jtag lock [options]

sequence clear シーケンスからすべてのコマンドを削除

sequence delete シーケンスを削除

オプシ ョ ン 説明

<idcode> 指定した <idcode> に関連付けられた JTAG デバイス プロパティを取得

key value JTAG デバイス プロパティを設定

オブジェク ト  コマンド オプシ ョ ン 説明

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

Page 51: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

オプシ ョ ン

注記 : これによ りデッ ド ロ ッ クになる可能性があるので、ク ライアン トでは複数のスキャン チェーンでロ ッ クを使用しないよ うにしてください。

jtag unlock

現在の JTAG ターゲッ ト を含む JTAG スキャン チェーンのロ ッ クを解除します。

使用法

jtag unlock

jtag claim

JTAG デバイスをクレームします。

使用法

jtag claim <mask>

オプシ ョ ン

注記 :現在のと ころ、 クレームは hw_server デバッガーによる ARM DAP デバイスおよび MicroBlaze を含む FPGA デバイスのマイクロプロセッサの制御を無効にするため使用されています。

jtag disclaim

JTAG デバイスを拒否します。

オプシ ョ ン 説明

[timeout] 現在の JTAG ターゲッ ト を含む JTAG スキャン チェーンをロッ ク。

スキャン チェーンがロ ッ クできるよ うになるまで待ってから、 ロ ッ ク して ください。 <timeout> を指定する と、 待機時間が <timeout> ミ リ秒までに制限されます。

jtag lock を使用する と、 ほかのク ライアン トがスキャン チェーンの JTAG シフ ト やステー ト 変更を実行する こ とはな く な り ます。 その他のスキャンチェーンは並列に使用できます。

jtag run_sequence コマンドを実行する と、シーケンスのすべてのコマンドが順番通りに実行されるので、jtag lock は複数の jtag run_sequence コマンドを割り込みなしに実行する必要がある場合にのみ必要です。

オプシ ョ ン 説明

<mask> 現在の JTAG デバイスのクレーム マスクを設定。

このコマンドでは、 現在の JTAG デバイスのクレーム マスクを設定しよ う とします。<mask> のビッ トが既にクレーム マスクで設定されている と、「alreadyclaimed」 エラーが戻されます。

クレーム マスクを使用する と、 ク ライアン トが JTAG デバイスを使用して制御を交渉できるよ うにな り ます。 これは次の点が jtag lock と異な り ます。

• スキャン チェーンのデバイス専用 • クレーム中にクライアン トが JTAG 操作を実行可能

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

Page 52: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

使用法

jtag disclaim <mask>

jtag frequency

JTAG 周波数を取得または設定します。

使用法

jtag frequency [options]

オプシ ョ ン

メモリ

ターゲッ ト メモ リ空間に対して読み出し /書き込みします。

• 「mrd」

• 「mwr」

これらのコマンドに -force オプシ ョ ンを使用する と、 アクセス保護を上書きできます。

注記 : ARM ターゲッ トの場合、 APU ターゲッ ト を選択する と物理メモ リにアクセスできます。

mrd

アクティブ ターゲッ トのメモ リ アドレスを読み出します。

使用法

mrd [options] <address> [num]

オプシ ョ ン

オプシ ョ ン 説明

-list 現在のスキャン チェーンに対してサポート される JTAG ク ロ ッ ク周波数のリス ト を取得

frequency 現在のスキャン チェーンの JTAG ク ロ ッ ク周波数のリ ス ト を設定

オプシ ョ ン 説明

-force アクセス保護を上書き。 デフォルトでは、 予約済みおよび無効なアドレス範囲へのアクセスがブロ ッ ク されます。

-size <access-size> アクセス サイズは、 次のいずれかの値 : b = バイ ト アクセス

h = ハーフワード アクセス

w = ワード アクセス

デフ ォル ト ア ク セス サイ ズは w で、 ア ド レ スは メ モ リ 読み出し前にaccess-size に揃えられます。

-value コンソールの結果を表示する代わりに Tcl の値のリ ス ト を表示

-bin 2 進数フォーマッ トでターゲッ トから読み出したデータを表示

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

Page 53: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

注記 : APU ターゲッ ト を選択し、 ARM DAP および MEM-AP アドレス空間にアクセスします。

• 0x0 のワードを読み出します。

mrd 0x0

• 0x0 の 10 ワードを読み出します。

mrd 0x0 10

• 0x0 の 10 ワードを読み出し、 Tcl の値のリ ス ト を戻します。

mrd -value 0x0 10

• アドレス 0x1 の 3 バイ ト を読み出します。

mrd -size b 0x1 3

• アドレス 0x1 の 2 ハーフバイ ト を読み出します。

mrd -size h 0x2 2

• アドレス 0x0 の 100 ワードを読み出し、 その 2 進数データを mem.bin に書き込みます。

mrd -bin -file mem.bin 0 100

• Zynq の APB-AP CSW を読み出します。 上位 8 ビッ ト (0x1) で APB-AP を選択し、 下位 8 ビッ ト (0x0) は CSW のアドレスになり ます。

mrd -arm-dap 0x100

• Zynq の APB-AP TAR を読み出します。 上位 8 ビッ ト (0x0) で AHB-AP を選択し、 下位 8 ビッ ト (0x0) は TAR のアドレスになり ます。

mrd -arm-dap 0x04

• DAP APB-AP のアドレス 0x80090088 を読み出します。 0x80090088 は Zynq の Cortex-A9#0 の DBGDSCR レジスタに該当します。 AP 1 で APB-AP を選択します。

mrd -arm-ap 1 0x80090088

• DAP AHB-AP のアドレス 0xe000d000 を読み出します。 0xe000d000 は、 Zynq の QSPI デバイスに該当します。 AP0 で AHB-AP を選択します。

mrd -arm-ap 0 0xe000d000

mwr

アクティブ ターゲッ トのメモ リ アドレスに書き込みます。

使用法

• <values> のリ ス トから <num> ワードを <address> で指定されたアクティブ ターゲッ ト メモ リ アドレスに書き込みます。

mwr [options] <address> <values> [num]

-file <file-name> ターゲッ トから読み出された 2 進数データを <file-name> に書き込み

-arm-dap ARM DAP アドレス空間にアクセス。 DAP アドレス空間は 0x0 - 0xfffc で、 上位 8 ビッ トで 1 つの AP が選択され、 下位 8 ビッ トはその AP のレジスタ アドレスになり ます。

-arm-ap <ap-num> ARM MEM-AP アドレス空間にアクセス。 ap-num は DAP 内の AP を選択します。 アドレスはその AP を使用してアクセス可能などのアドレスにでもできます。

オプシ ョ ン 説明

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

Page 54: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

• <num> ワードを指定しない場合、 リ ス トからの <values> すべてが <address> で指定されたアドレスから順番に書き込まれます。 <num> が <values> リ ス ト のサイズよ り大きい場合、 リ ス トの 後のワードが残りのアドレス位置に使用されます。

• 2 進数ファイルからの <num> 値を <address> で指定したアクティブ ターゲッ ト メモ リ アドレスに書き込みます。

mwr [options] <address> [num]

• <num> ワードを指定しない場合、 ファ イルからのデータすべてが <address> で指定されたアドレスから順番に書き込まれます。

オプシ ョ ン

注記 : APU ターゲッ ト を選択し、 ARM DAP および MEM-AP アドレス空間にアクセスします。

• 0x1234 をアドレス 0x0 に書き込みます。

mwr 0x0 0x1234

• 値のリ ス トから 4 ワードをアドレス 0x0 に書き込みます。

mwr 0x0 {0x12 0x23 0x34 0x45}

• 値のリ ス トから 4 ワードをアドレス 0x0 に書き込み、残りの 6 つのアドレス位置にリ ス トから 後のワードを使用します。

mwr 0x0 {0x12 0x23 0x34 0x45} 10

• リ ス トから 3 バイ ト をアドレス 0x1 で書き込みます。

mwr -size b 0x1 {0x1 0x2 0x3} 3

• リ ス トから 2 ハーフバイ ト をアドレス 0x2 で書き込みます。

mwr -size h 0x2 {0x1234 0x5678} 2

• 2 進数ファイルの mem.bin から 100 ワードを読み出して、 ターゲッ ト アドレス 0x0 でデータを書き込みます。

mwr -bin -file mem.bin 0 100

オプシ ョ ン 説明

-force アクセス保護を上書き。 デフォルトでは、 予約済みおよび無効なアドレス範囲へのアクセスがブロ ッ ク されます。

-size <access-size> アクセス サイズは、 次のいずれかの値 : b = バイ ト アクセス

h = ハーフワード アクセス

w = ワード アクセス

デフ ォル ト のア ク セス サイズは w で、 ア ド レ スは メ モ リ 書き込み前にaccess-size に揃えられます。

-bin ファ イルからの 2 進数データを読み出して、 ターゲッ ト アドレス空間に書き込み

-file <file-name> ターゲッ ト アド レス空間に書き込む前にどの 2 進数データを読み出すファイルを指定

-arm-dap ARM DAP アドレス空間にアクセス。

DAP アドレス空間は 0x0 - 0xfffc で、 上位 8 ビッ トで 1 つの AP が選択され、下位 8 ビッ トはその AP のレジスタ アドレスになり ます。

-arm-ap <ap-num> ARM MEM-AP アドレス空間にアクセス。

<ap-num> で DAP 内の AP を選択します。 address はその AP を使用してアクセス可能などのアドレスにでもできます。

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

Page 55: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

• 0x80000042 を Zynq の APB-AP CSW に書き込みます。 上位 8 ビッ ト (0x1) で APB-AP を選択し、 下位 8 ビッ ト(0x0) は CSW のアドレスにな り ます。

mwr -arm-dap 0x100 0x80000042

• 0xf8000120 を Zynq の APB-AP TAR に書き込みます。 上位 8 ビッ ト (0x0) で AHB-AP を選択し、 下位 8 ビッ ト(0x0) は TAR のアドレスにな り ます。

mwr -arm-dap 0x04 0xf8000120

• 0x03186003 を DAP APB-AP のアドレス 0x80090088 に書き込みます。 0x80090088 は Zynq の Cortex-A9#0 のDBGDSCR レジスタに該当します。 AP 1 で APB-AP を選択します。

mwr -arm-ap 1 0x80090088 0x03186003

• 0x80020001 を DAP AHB-AP のアドレス 0xe000d000 に書き込みます。 0xe000d000 は Zynq の QSPI デバイスに該当します。 AP 0 で AHB-AP を選択します。

mwr -arm-ap 0 0xe000d000 0x80020001

その他

次に示すよ うに、 こ こにはその他のカテゴ リに該当しないコマンドが含まれます。

• 「loadhw」

• 「unloadhw」

• 「xsdbserver start」

• 「xsdbserver stop」

• 「xsdbserver disconnect」

loadhw

Vivado ハードウェア デザインを読み込んで、 現在のターゲッ トのメモ リ マップを設定します。 現在のターゲッ トがプロセッサ グループの親の場合、 すべての子プロセッサにメモ リ マップが設定されます。 現在のターゲッ トがプロセッサの場合、その親のすべての子プロセッサにメモ リ マップが設定されます。 このコマンドを実行する と、ハードウェア デザイン オブジェク トが戻されます。

使用法

loadhw [options]

オプシ ョ ン

• design.hdf とい う名前のハードウェア デザインを読み込んで、APU ターゲッ トのすべての子プロセッサのメモ リマップを設定します。

targets -filter {name =~ "APU"}

loadhw design.hdf

• design.hdf とい う名前のハードウェア デザインを読み込んで、XC7Z045 を親とするすべての子プロセッサのメモリ マップを設定します。

targets -filter {name =~ "xc7z045"}

loadhw design.hdf

オプシ ョ ン 説明

-hw ハードウェア デザイン ファ イルを指定

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

Page 56: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

unloadhw

loadhw コマンドで開いている Vivado ハードウェア デザインを閉じて、現在のターゲッ トのメモ リ マップをク リ アにします。 現在のターゲッ トがプロセッサ グループの親の場合、 すべての子プロセッサのメモ リ マップがク リ アになり ます。 現在のターゲッ トがプロセッサの場合、 その親のすべての子プロセッサのメモ リ マップがク リ アにな り ます。 このコマンドでは、 ユーザーが明示的に設定したメモ リ マップはク リ アにな り ません。

使用法

unloadhw

xsdbserver start

XSDB コマンド サーバー リ スナーを開始します。 XSDB コマンド サーバーを使用する と、 外部プロセスを XSDB に接続してコマンドを評価できるよ うになり ます。 XSDB サーバーは接続されたソケッ トから 1 度に 1 行のコマンドを読み出します。評価が終了したら、okay か error で始まる行が戻され、その後に結果か、エラーの場合はバッ クスラ ッシュで囲まれた文字列が続きます。

使用法

xsdbserver start [options]

オプシ ョ ン

• ダイナミ ッ クにアロケート されたポート を使用して XSDB サーバー リ スナーを開始します。

xsdbserver start

• ポート 2000 を使用して XSDB サーバー リ スナーを開始し、 このホス トに入ってく る接続のみを許可します。

xsdbserver start -host localhost -port 2000

xsdbserver stop

XSDB コマンド サーバー リ スナーを停止して、 接続されたク ライアン トがある場合は接続を解除します。

使用法

xsdbserver stop

xsdbserver disconnect

現在の XSDB サーバー接続を解除します。

使用法

xsdbserver disconnect

オプシ ョ ン 説明

-host <addr> 入ってく る接続を聴くためのネッ ト ワーク インターフェイスを制限

-port <port> 聴くポート を指定。 このオプシ ョ ンを指定しない場合、 またはポートが 0 の場合、 ダイナミ ッ クにアロケート されたポート番号が使用されます。

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

Page 57: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

レジスタ

ターゲッ ト レジスタに対して読み出し /書き込みをします。

• 「rrd」

• 「rwr」

これらのコマンドを使用する と、 汎用レジスタ、 ARM コプロセッサなどのシステム レジスタにアクセスできます。Zynq の IOU レジスタには、 APU ターゲッ トでこれらのコマンドを実行する とアクセスできます。

rrd では、 レジスタの値ではなく、 レジスタ定義を読み込むこ とができます。

rrd

レジスタ定義またはアクティブ ターゲッ トの値を読み出します。

使用法

rrd [options] [reg]

オプシ ョ ン

• 上位レジスタまたはグループを読み出します。

rrd

• レジスタ r0 を読み出します。

rrd r0

• グループ usr のレジスタ r8 を読み出します。

rrd usr r8

• 上位レジスタまたはグループの定義を読み出します。

Rrd -defs

rwr

アクティブ ターゲッ トのレジスタに書き込みます。

使用法 

<reg> で指定したアクティブ ターゲッ ト レジスタに <value> を書き込みます。 <reg> には、 上位レジスタおよびグループ内のレジスタを指定できます。

rwr <reg> <value>

オプシ ョ ン 説明

-defs 値ではなく レジスタ定義を読み出し

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

Page 58: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

• 0x0 をレジスタ r8 に書き込みます。

rwr r8 0x0

• 0x0 をグループ usr のレジスタ r8 に書き込みます。

rwr usr r8 0x0

リセッ ト

ターゲッ ト を リセッ トするコマンドです。

• 「rst」

rst

アクティブ ターゲッ ト を リセッ ト します。 このコマンドは、 プロセッサやプロセッサ グループ、 またはシステム全体を リセッ トするために使用できます。

使用法

rst [options]

オプシ ョ ン

実行

プログラムの実行、 ターゲッ ト ステート、 および逆アセンブルのコマンドです。

• 「con」

• 「stop」

• 「state」

• 「stp」

• 「stpi」

• 「nxt」

• 「nxti」

• 「stpout」

• 「dis」

オプシ ョ ン 説明

-processor アクティブ プロセッサ ターゲッ ト を リセッ ト

-cores アクティブ プロセッサ グループを リセッ ト 。 この リセッ ト タイプは、 Zynqでのみサポート されます。 プロセッサ グループはプロセッサと OCM のよ うなオンチップ ペリ フェラルのセッ ト と して定義されます。

-system アクティブ システムを リセッ ト

-srst アクティブ ターゲッ トのシステム リ セッ ト を生成。 JTAG を使用する場合、これはアクティブ ターゲッ トに関連付けられた JTAG ケーブルの SRST ピンでパルスが生成される と実行されます。

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

Page 59: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

con

アクティブ ターゲッ ト を再開します。

使用法

con

stop

アクティブ ターゲッ ト を停止します。

使用法

stop

state

現在の実行ステート を表示します。

使用法

state

stp

制御がソース コードの別の行に属する命令に到達するまでアクティブ ターゲッ トの実行を再開します。 関数が呼び出される と、 その関数コードの 初の行で停止します。 行番号情報がない場合は、 エラーになり ます。

<count> が 1 よ り大きい場合、 <count> 回繰り返されます。 <count> のデフォルト値は、 1 です。

使用法

stp [count]

stpi

単一のマシン命令を実行します。 命令が関数呼び出しの場合、 その関数コードの 初の命令で停止します。 <count>が 1 よ り大きい場合、 <count> 回繰り返されます。 <count> のデフォルト値は、 1 です。

使用法

stpi [count]

nxt

制御がソース コードの別の行に属する命令に到達するまでアクテ ィブ ターゲッ ト の実行を再開しますが、 フルスピードで呼び出された関数を実行します。 行番号情報がない場合は、 エラーになり ます。 <count> が 1 よ り大きい場合、 <count> 回繰り返されます。 <count> のデフォルト値は、 1 です。

使用法

nxt [count]

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

Page 60: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

nxti

単一のマシン命令をステップオーバーします。命令が関数呼び出しの場合、制御が関数から戻るまで実行を続行します。 <count> が 1 よ り大きい場合、 <count> 回繰り返されます。 <count> のデフォルト値は、 1 です。

使用法

nxti [count]

stpout

制御が現在の関数から戻るまで現在のターゲッ トの実行を再開します。<count> が 1 よ り大きい場合、<count> 回繰り返されます。 <count> のデフォルト値は、 1 です。

使用法

stpout [count]

dis

<address> で指定されたアド レスで <num> 命令を逆アセンブルします。 現在の PC で命令を逆アセンブルするには、キーワード pc を使用します。 <num> のデフォルト値は、 1 です。

使用法

dis <address> [num]

• 現在の PC 値で命令を逆アセンブルします。

dis

• 現在の PC 値で 2 つの命令を逆アセンブルします。

dis pc 2

• アドレス 0x0 で 2 つの命令を逆アセンブルします。

dis 0x0 2

スト リーム

JTAG UART (MDM または ARM DCC) に接続するコマンドです。

• 「jtagterminal」

• 「readjtaguart」

jtagterminal

JTAG ベースのハイパーターミナルを開始/停止して、ARM DCC または MDM UART インターフェイス と通信します。

注記 : このコマンドを実行する前に MDM または ARM プロセッサ ターゲッ ト を選択して ください。

使用法

jtagterminal [Options]

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

Page 61: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

オプシ ョ ン

readjtaguart

ARM DCC または MDM UART TX インターフェイスからの読み出しを開始/停止します。 JTAG UART 出力は、 stdoutに表示できるか、 ファ イルにリダイレク トできます。

注記 : このコマンドを実行する前に MDM または ARM プロセッサ ターゲッ ト を選択して ください。

使用法

readjtaguart [OPTIONS]

オプシ ョ ン

• JTAG UART からの読み出しを開始し、 stdout に出力を表示します。

readjtaguart

• JTAG UART からの読み出しを開始し、 test.log に出力を表示します。

set fp [open test.log w]

readjtaguart -start -handle $fp

• JTAG UART からの読み出しを停止します。

readjtaguart -stop

オプシ ョ ン 説明

-start JTAG UART ターミナルを開始 (デフォルト )

-stop JTAG UART ターミナルを停止

オプシ ョ ン 説明

-start JTAG UART 出力の読み出しを開始

-stop JTAG UART 出力の読み出しを停止

-handle <file-handle> データを リダイレク トするファ イル ハンドルを指定。ファ イル ハンドルを指定しない場合、 データは stdout に表示されます。

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

Page 62: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

XSDB を使用したスクリプ トの実行XSDB は、ユーザー スク リプ ト をインタラ クティブではないモードで実行できます。 これは、次のよ うに実行できます。

% xsdb <script.tcl> [args]

XSDB はインタラ クティブではないモードで script.tcl を実行して、 スク リプ トが終わる と終了します。 スク リプ トに従った引数はすべてそのスク リプ トに渡されます。

ini および rc ファイル

XSDB では、 起動時に ini および rc ファ イルの読み込みがサポート されます。 現在のディ レク ト リで xsdb.ini を検索して、 ファ イルが存在する場合はそれを読み込みます。 XSDB では、 Linux の場合 $HOME/.xsdbrc、 Windows の場合 $USERPROFILE/.xsdbrc も検索し、 ファ イルが存在する場合はそれを読み込みます。

XSDB を使用したアプリケーシ ョ ンの実行次は、 XSDB を使用してプログラムをデバッグする方法を示した XSDB セッシ ョ ンの例です。 このセクシ ョ ンでは、SDK を使用してプロジェク ト を作成する方法に精通しているものと仮定して説明します。

xsdb% connect

xsdb% tcfchan#0

xsdb% targets

1 APU

2 ARM Cortex-A9 MPCore #0 (Suspended)

3 ARM Cortex-A9 MPCore #1 (Suspended)

4 xc7z020

xsdb% targets 2

xsdb% rst

xsdb% Info:ARM Cortex-A9 MPCore #0 (target 2) Stopped at 0xffffff28 (Suspended)

xsdb% Info:ARM Cortex-A9 MPCore #1 (target 3) Stopped at 0xffffff34 (Suspended)

xsdb% source ZC702_hw_platform/ps7_init.tcl

xsdb% ps7_init

xsdb% ps7_post_config

xsdb% dow hello_arm0/Debug/hello_arm0.elf

Downloading Program -- hello_arm0/Debug/hello_arm0.elf

section, .text:0x00100000 - 0x001018cf

section, .init:0x001018d0 - 0x001018e7

section, .fini:0x001018e8 - 0x001018ff

section, .rodata:0x00101900 - 0x00101917

section, .data:0x00101918 - 0x00101d8b

section, .eh_frame:0x00101d8c - 0x00101d8f

section, .mmu_tbl:0x00104000 - 0x00107fff

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

Page 63: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

section, .init_array:0x00108000 - 0x00108007

section, .fini_array:0x00108008 - 0x0010800b

section, .bss:0x0010800c - 0x00108027

section, .heap:0x00108028 - 0x0010a02f

section, .stack:0x0010a030 - 0x0010d82f

100% 0MB 5.2MB/s 00:00

Setting PC to Program Start Address 0x00100000

Successfully downloaded /wrk/ptx_1/users/sadanan/CR/dsv/hello_arm0/Debug/hello_arm0.elf

xsdb% mrd 0x100000 10

100000 :EA00003D

100004 :EA000025

100008 :EA000028

10000C:EA000035

100010 :EA00002F

100014 :E320F000

100018 :EA000000

10001C:EA00000F

100020 :E92D500F

100024 :ED2D0B10

xsdb% bpadd -addr &main

0

xsdb% bplist

Breakpoints set during this Debug session

ID 0 BreakpointType Auto Location &main Enabled 1 AccessMode 4 ContextNames {{ARM Cortex-A9 MPCore #0}}

Status: target 2 HitCount 0

xsdb% con

Info:ARM Cortex-A9 MPCore #0 (target 2) Running

xsdb% Info:ARM Cortex-A9 MPCore #0 (target 2) Stopped at 0x10054c (Breakpoint)

xsdb% bpstatus 0

target 2:HitCount 1 Address 1049932 Size 1 BreakpointType Hardware

xsdb% rrd

r0:00000000 r1:00000000 r2:00108028 r3:00101d8c

r4:00000003 r5:0000001e r6:0000ffff r7: f8f0000c

r8:0000767b r9: ffffffff r10:00000000 r11:00000000

r12:0010c020 sp:0010c030 lr:001010a4 pc:0010054c

cpsr:600000df usr fiq irq

abt und svc mon

vfp cp15 Jazelle

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

Page 64: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

xsdb% rrd cp15 c1 sctlr

sctlr:08c5187d

xsdb% rrd pc

pc:0010054c

xsdb% dis

0010054c: push {r11,lr}

xsdb% stp

Info:ARM Cortex-A9 MPCore #0 (target 2) Stopped at 0x100554 (Step)

xsdb% bpadd -addr &exit

1

xsdb% con

Info:ARM Cortex-A9 MPCore #0 (target 2) Running

xsdb% Info:ARM Cortex-A9 MPCore #0 (target 2) Stopped at 0x101570 (Breakpoint)

xsdb% exit

サーバー モードでの XSDB を使用したアプリケーシ ョ ンの実行次は、 XSDB サーバーを使用したデバッグ セッシ ョ ン例です。

1. XSDB を起動して、 サーバーを開始します。

xsdb% xsdbserver start

2. ホス ト localhost およびポート 41915 を使用した XSDB サーバーに接続します。

3. telnet を使用して XSDB サーバーに接続し、 XSDB サーバーに対してコマンドを実行します。 各コマンドの結果が okay か fail の後に示されます。

telnet localhost 41915

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

XSDB Server Protocol Version 0.1

connect

okay tcfchan#0

targets 2

okay

rst

okay

source ZC702_hw_platform/ps7_init.tcl

okay

ps7_init

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

Page 65: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

okay

ps7_post_config

okay

dow hello_arm0/Debug/hello_arm0.elf

okay

bpadd -addr &main

okay 0

bpadd -addr &exit

okay 1

bplist

okay Breakpoints set during this Debug session\nID 0 BreakpointType Auto Location &main Enabled 1 AccessMode 4 ContextNames {{ARM Cortex-A9 MPCore #0}}\n Status: target 2 HitCount 0\nID 1 BreakpointType Auto Location &exit Enabled 1 AccessMode 4 ContextNames {{ARM Cortex-A9 MPCore #0}}\n Status: target 2 HitCount 0\n

con

okay

state

okay Stopped:(Breakpoint)

rrd pc

okay pc:0010054c\n

bplist

okay Breakpoints set during this Debug session\nID 0 BreakpointType Auto Location &main Enabled 1 AccessMode 4 ContextNames {{ARM Cortex-A9 MPCore #0}}\n Status: target 2 HitCount 1\nID 1 BreakpointType Auto Location &exit Enabled 1 AccessMode 4 ContextNames {{ARM Cortex-A9 MPCore #0}}\n Status: target 2 HitCount 0\n

con

okay

state

okay Stopped:(Breakpoint)

rrd pc

okay pc:00101570\n

xsdbserver stop

Connection closed by foreign host.

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

Page 66: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 3 章 : Xilinx System Debugger

XMD vs XSDB

このセクシ ョ ンでは、 XMD および XSDB コマンドの主な違いを使用方法の観点から説明します。

connect

XMD と XSDB の主な違いの 1 つは、 ターゲッ ト をデバッグするための接続の構築方法が異なる こ とにあ り ます。XMD では、 たとえばプロセッサ ターゲッ トのよ うに、 デバッグ ターゲッ トに接続するために connect コマンドがあり ますが、 XSDB では connect コマンドを実行する と、 hw_server サーバーへの接続が開きます。 すべての使用可能なターゲッ ト を リ ス ト してデバッグ ターゲッ ト を選択するには、 そのターゲッ トに対してデバッグ コマンドを実行する前に targets コマンドを使用する必要があ り ます。

targets

XMD では、ターゲッ ト ID に決まった値があ り ますが (例 : 0 で始まる MB ターゲッ ト ID および 64 で始まる Cortex-A9ターゲッ ト ID など)、 XSDB の場合、 ターゲッ ト ID はシーケンシャルです。 ターゲッ トにはスキャン チェーンで検出された順番に ID が付きます。 スキャン チェーンが connect コマンド中に部分的になる と、 新しいターゲッ トが表示されるよ うになったと きに ID を割り当てます。

ターゲッ ト をプログラムで選択させるため、XSDB では targets コマンドに -filter オプシ ョ ンを付けるこ とができます。次は、 -filter オプシ ョ ンの使用例です。

targets -filter {name =~ "ARM*#1"} -set

fpga

XMD では、 FPGA デバイス番号は fpga コマンドの一部と して指定できますが、 XSDB では、 FPGA デバイスは fpgaコマンドで FPGA をプログラムする前に targets コマンドで選択しておく必要があ り ます。

Ctrl + c

XMD では、 Ctrl + c でアプリ ケーシ ョ ンが即座に終了されますが、 XSDB の場合は、 FPGA のプログラム、 ファ イルのダウンロードなどの長く実行されるコマンドを終了するために使用されます。 XSDB は Ctrl + c を 2 回押すと終了されます。

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

Page 67: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 4章

フラッシュ  メモリのプログラム

概要プログラム フラ ッシュ ユーティ リ ティは、 ボードのフラ ッシュ メモ リ を消去およびプログラムするために使用できます。 また、ブランク チェッ クおよび検証など、削除およびプログラム機能を検証するのに便利なその他のオプシ ョンもあ り ます。 ブランク チェッ クをオンにする と、 フラ ッシュからの内容を読み出して、 フラ ッシュ パーツが空かど うかがチェッ ク されます。 同様に、 検証機能を使用する と、 データを読み戻して、 プログラムされたデータ と比較して、 そのデータが正し く書き込まれたかど うかが確認されます。

Zynq デバイス

プログラム フラ ッシュ ユーティ リ ティでは、 QSPI、 NAND、および NOR などのタイプのフラ ッシュのプログラムがサポート されます。 QSPI は、 QSPI Single、 QSPI Dual Parallel、 および QSPI Dual Stacked などのさまざまなコンフ ィギュレーシ ョ ンで使用できます。 NAND および NOR タイプの場合は、 FSBL ファ イルを指定する必要があ り ます。

Bootgen からのブート イ メージをプログラムできます。Bootgen では、FSBL (First Stage Boot Loader)、ビッ ト ス ト リーム (Zynq® の PL 部分をコンフ ィギュレーシ ョ ンするため)、 アプ リ ケーシ ョ ン、 RTOS、 およびその他のデータ ファイルなどのコンポーネン トがま とめられます。

Zynq の場合、 プロセッサがリセッ トから抜け出すと、 BootROM で制御されるので、 フラ ッシュからの FSBL がオンチップ メモ リにコピーされて、 制御が渡されます。 FSBL が実行を開始する と、 フラ ッシュからのビッ ト ス ト リームがコピーされ PL がコンフ ィギュレーシ ョ ンされます。PL がコンフ ィギュレーシ ョ ンされたら、FSBL で次のパーティシ ョ ン (たとえばアプリ ケーシ ョ ン) がフラ ッシュから DDR へコピーされ、 制御がアプリ ケーシ ョ ンに渡され、 アプリ ケーシ ョ ンの実行が開始されます。Linux を読み込むには、 も う 1 つのパーティシ ョ ンと して U-Boot を使用できます。

その他のデバイス

フラ ッシュは、Parallel Flash (BPI) と Serial Flash (SPI) に広く分類されます。SPI フラ ッシュも BPI フラ ッシュも Micron、Spansion などのさまざまなメーカーから取得できます。 フラ ッシュでは、 次をプログラムできます。

• アプリ ケーシ ョ ンの実行イ メージ

• FPGA のハードウェア ビッ ト ス ト リーム

• ファ イル システム イ メージ、 サンプル データやアルゴ リズム テーブルなどのデータ ファ イル

アプリ ケーシ ョ ンの実行イ メージが も一般的です。デザインのプロセッサのリセッ トが完了する と、ブロ ッ ク RAMのプロセッサのリセッ ト位置に保存されている実行コードが開始します。 通常ブロッ ク RAM のサイズは数 KB でソフ ト ウェア アプリ ケーシ ョ ンのイ メージ全体を保存するには小さすぎるので、 フラ ッシュ メモ リ (単位は MB) を使用します。 小型のブート ローダーはブロ ッ ク RAM にフ ィ ッ トするよ う設計されています。 プロセッサはリセッ ト時にこのブート ローダーを実行し、 ソフ ト ウェア アプリ ケーシ ョ ン イ メージがフラ ッシュから外部メモ リへと コピーされます。 この後、 制御はブート ローダーからソフ ト ウェア アプリ ケーシ ョ ンへと移り、 実行が継続されます。

プロジェク トで作成したソフ ト ウェア アプリ ケーシ ョ ンのフォーマッ トは、 ELF (Executable Linked Format) です。 フラ ッシュから ソフ ト ウェア アプリ ケーシ ョ ンをブート ロードする場合、ELF イ メージを、SREC (モ ト ローラ S レコー

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

Page 68: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 4 章 : フラッシュ  メモリのプログラム

ド ) などのブート ロード可能なイ メージ フォーマッ トに変換する必要があ り ます。 こ うする と、 ブート ローダーをシンプルに、 またサイズも小さ く抑えるこ とができます。

プログラム フラッシュ  ユーティ リテ ィプログラム フラ ッシュは、 ソフ ト ウェアおよびデータを使用してオンボードのシ リ アルおよびパラレル フラ ッシュデバイスを削除してプログラムできるよ うにするコマンド ラ イン ユーティ リ ティです。

使用法

program_flash <flash options> <cable device options>

フラ ッシュ  オプシ ョ ン

オプショ ン 説明

-f <image file> フラ ッシュ メモ リに書き込まれるイ メージ (bin/mcs のみ)

-offset <address> イ メージの書き込まれるフラ ッシュ メモ リ内のオフセッ ト

-no_erase プログラム前にフラ ッシュ メモ リの消去なし

-blank_check フラ ッシュ メモ リが消去されたかど うかを確認

-verify フラ ッシュ メモ リが正し くプログラムされたかど うかを確認

-fsbl <fsbl file> NAND および NOR フラ ッシュ タイプの場合のみ (Zynq のみ)

-erase_sector <size> 消去セクターフラ ッシュが 64KB (バイ ト ) 以外のフラ ッシュの場合

-flash_type <type> サポート されるフラ ッシュ メモ リ タイプ : • Zynq デバイス

° qspi_single

° qspi_dual_parallel

° qspi_dual_stacked

° nand_8

° nand_16

° nor

• その他のデバイス

すべてのフラ ッシュ タイプを リ ス トするには、 -partlist コマンド ライン オプシ ョ ンを使用します。

-partlist <bpi|spi> <micron|spansion>

その他 (Zynq 以外) のデバイスのフラ ッシュ パーツをすべて リ ス ト

• program_flash -partlist - すべてのフラ ッシュを リ ス ト

• program_flash -partlist bpi micron - すべての Micron BPI フラ ッシュを リ ス ト

• program_flash -partlist spi spansion - Spansion SPI フラ ッシュを リ ス ト

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

Page 69: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 4 章 : フラッシュ  メモリのプログラム

ケーブルおよびデバイス オプシ ョ ン

その他の注意事項

サポート されるフラッシュ  パーツ  (Zynq デバイス以外)

次の表は、 Zynq デバイス以外でサポー ト されるフラ ッシュ パーツをすべて リ ス ト しています。 パーツ名情報は、-flash_type コマンド ライン オプシ ョ ンを使用して渡されます。リ ス トには、Micron 社および Spansion 社からの BPIx8、BPIx16、 および SPI タイプのフラ ッシュが含まれます。 フラ ッシュは、 -partlist コマンド ライン オプシ ョ ンを使用する と、 タイプ別 (BPI/SPI) または製造業者別 (Spansion/Micron) でフ ィルターするこ とができます。

オプシ ョ ン 説明

-cable type <type of cable> esn <cable esn>url <URL>

• type <type of cable> - ケーブル タイプ (xilinx_tcf) を指定。

• esn <cable esn> - ホス ト マシンに接続された USB ケーブルの Electronic Serial Number (ESN) を指定。 このオプシ ョ ンを使用する と、 複数のケーブルがホス ト マシンに接続されている場合に、 USB ケーブルを識別できるよ うになり ます。

• url <URL> - hw_server/TCF エージェン トの URL 記述

-debugdevice deviceNr <device position in jtag chain>

-deviceNr - デバイスの JTAG チェーンの位置。 デバイス位置の番号は、 1 から開始します。

表 4‐1 :サポート されるフラッシュ  パーツ  (Zynq デバイス以外)

S.No. 製造業者 パーツ名 (‐flash_type)

1 : Spansion s29gl128p-bpi-x16

2 : Spansion s29gl256p-bpi-x16

3 : Spansion s29gl512p-bpi-x16

4 : Spansion s29gl01gp-bpi-x16

5 : Spansion s29gl128s-bpi-x16

6 : Spansion s29gl256s-bpi-x16

7 : Spansion s29gl512s-bpi-x16

8 : Spansion s29gl01gs-bpi-x16

9 : Spansion s29gl128p-bpi-x8

10 : Spansion s29gl256p-bpi-x8

11 : Spansion s29gl512p-bpi-x8

12 : Spansion s29gl01gp-bpi-x8

13 : Micron 28f640p30t-bpi-x16

14 : Micron 28f640p30b-bpi-x16

15 : Micron 28f128p30t-bpi-x16

16 : Micron 28f128p30b-bpi-x16

17 : Micron 28f256p30t-bpi-x16

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

Page 70: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 4 章 : フラッシュ  メモリのプログラム

18 : Micron 28f256p30b-bpi-x16

19 : Micron 28f512p30t-bpi-x16

20 : Micron 28f512p30e-bpi-x16

21 : Micron 28f512p30b-bpi-x16

22 : Micron 28f00ap30t-bpi-x16

23 : Micron 28f00ap30e-bpi-x16

24 : Micron 28f00ap30b-bpi-x16

25 : Micron 28f00bp30e-bpi-x16

26 : Micron 28f640p33t-bpi-x16

27 : Micron 28f640p33b-bpi-x16

28 : Micron 28f128p33t-bpi-x16

29 : Micron 28f128p33b-bpi-x16

30 : Micron 28f256p33t-bpi-x16

31 : Micron 28f256p33b-bpi-x16

32 : Micron 28f512p33t-bpi-x16

33 : Micron 28f512p33e-bpi-x16

34 : Micron 28f512p33b-bpi-x16

35 : Micron 28f00ap33t-bpi-x16

36 : Micron 28f00ap33e-bpi-x16

37 : Micron 28f00ap33b-bpi-x16

38 : Micron 28f128g18f-bpi-x16

39 : Micron mt28gu256aax1e-bpi-x16

40 : Micron mt28gu512aax1e-bpi-x16

41 : Micron mt28gu01gaax1e-bpi-x16

42 : Micron 28f064m29ewh-bpi-x16

43 : Micron 28f064m29ewl-bpi-x16

44 : Micron 28f064m29ewt-bpi-x16

45 : Micron 28f064m29ewb-bpi-x16

46 : Micron 28f128m29ew-bpi-x16

47 : Micron 28f256m29ew-bpi-x16

48 : Micron 28f512m29ew-bpi-x16

49 : Micron 28f00am29ew-bpi-x16

50 : Micron 28f00bm29ew-bpi-x16

51 : Micron 28f064m29ewh-bpi-x8

52 : Micron 28f064m29ewl-bpi-x8

53 : Micron 28f064m29ewt-bpi-x8

表 4‐1 :サポート されるフラッシュ  パーツ  (Zynq デバイス以外)

S.No. 製造業者 パーツ名 (‐flash_type)

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

Page 71: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 4 章 : フラッシュ  メモリのプログラム

54 : Micron 28f064m29ewb-bpi-x8

55 : Micron 28f128m29ew-bpi-x8

56 : Micron 28f256m29ew-bpi-x8

57 : Micron 28f512m29ew-bpi-x8

58 : Micron 28f00am29ew-bpi-x8

59 : Micron 28f00bm29ew-bpi-x8

60 : Spansion s70gl02gp-bpi-x16

61 : Spansion s70gl02gs-bpi-x16

62 : Spansion s25fl032p-spi-x1_x2_x4

63 : Spansion s25fl064p-spi-x1_x2_x4

64 : Spansion s25fl132k-spi-x1_x2_x4

65 : Spansion s25fl164k-spi-x1_x2_x4

66 : Spansion s25fl128sxxxxxx0-spi-x1_x2_x4

67 : Spansion s25fl128sxxxxxx1-spi-x1_x2_x4

68 : Spansion s25fl256sxxxxxx0-spi-x1_x2_x4

69 : Spansion s25fl256sxxxxxx1-spi-x1_x2_x4

70 : Spansion s25fl512s-spi-x1_x2_x4

71 : Micron mt25qu512-spi-x1_x2_x4

72 : Micron mt25qu512-spi-x1_x2_x4_x8

73 : Micron mt25ql512-spi-x1_x2_x4

74 : Micron mt25ql512-spi-x1_x2_x4_x8

75 : Micron mt25ql01g-spi-x1_x2_x4

76 : Micron mt25ql01g-spi-x1_x2_x4_x8

77 : Micron mt25ql02g-spi-x1_x2_x4

78 : Micron mt25ql02g-spi-x1_x2_x4_x8

79 : Micron mt25qu01g-spi-x1_x2_x4

80 : Micron mt25qu01g-spi-x1_x2_x4_x8

81 : Micron mt25qu02g-spi-x1_x2_x4

82 : Micron mt25qu02g-spi-x1_x2_x4_x8

83 : Micron n25q128-3.3v-spi-x1_x2_x4

84 : Micron n25q128-1.8v-spi-x1_x2_x4

85 : Micron n25q256-3.3v-spi-x1_x2_x4

86 : Micron n25q256-1.8v-spi-x1_x2_x4_x8

87 : Micron n25q256-1.8v-spi-x1_x2_x4

88 : Micron n25q32-3.3v-spi-x1_x2_x4

89 : Micron n25q32-1.8v-spi-x1_x2_x4

表 4‐1 :サポート されるフラッシュ  パーツ  (Zynq デバイス以外)

S.No. 製造業者 パーツ名 (‐flash_type)

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

Page 72: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 4 章 : フラッシュ  メモリのプログラム

ブート ローダー アプリケーシ ョ ン用に ELF ファイルを  SREC に変換する方法

mb-objcopy ユーティ リ テ ィ を使用する と、 ELF ファ イルから SREC フォーマッ ト ファ イルを作成できます。 SRECフォーマッ ト アプリ ケーシ ョ ンは、 特定のオフセッ トでフラ ッシュに格納できます。 SREC ブート ローダーでは、 これらのアプリ ケーシ ョ ンを読み込んで、 ロード して、 実行できます。 たとえば、 myexecutable.elf ファ イルを含むフォルダーに移動して次を実行します。

mb-objcopy -O srec myexecutable.elf myexecutable.srec

これによ り、 SREC ファ イルが生成されます。 mb-objcopy は SDK. に含まれる GNU バイナリ ユーティ リ ティです。

プログラム用に SREC/ELF/BIT ファイルを  BIN/MCS ファイルへ変換する方法

ザイ リ ンクス Bootgen ユーティ リ ティ を使用する と、 さまざまなファイルから BIN/MCS ファ イルを作成できます。

bootgen -arch fpga -image <input.bif> -o <output.bin/mcs> -interface <options>

Bootgen オプシ ョ ン

1. ELF ファ イルを BIN ファ イルに変換します。

bootgen -arch fpga -image elf_bin_all.bif -o boot.bin -interface spi

elf_bin_all.bif ファ イルの内容は次のとおりです。

image:

{

90 : Micron n25q64-3.3v-spi-x1_x2_x4

91 : Micron n25q64-1.8v-spi-x1_x2_x4

オプシ ョ ン 説明

-image <input.bif> 入力ファ イルに関する情報を含むブート イ メージ フォーマッ ト ファ イルを入力

-o <output.bin/mcs> 出力ファイル パスおよびフォーマッ ト

• -o output.bin - output という名前の BIN ファ イル

• -o output.mcs - output という名前の MCS ファ イル

-interface <options> フラ ッシュからプログラムしてブートするインターフェイス• spi• bpix8• bpix16• smapx8• smapx16• smapx32

表 4‐1 :サポート されるフラッシュ  パーツ  (Zynq デバイス以外)

S.No. 製造業者 パーツ名 (‐flash_type)

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

Page 73: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

第 4 章 : フラッシュ  メモリのプログラム

hello.elf

}

2. SREC ファ イルを BIN ファ イルに変換します。

bootgen -arch fpga -image srec_bin_all.bif -o boot.bin -interface spi

srec_bin_all.bif ファ イルの内容は次のとおりです。

image:

{

hello.elf.srec

}

3. BIT ファ イルを BIN ファ イルに変換します。

bootgen -arch fpga -image bit_bin_all.bif -o boot.bin -interface spi

bit_bin_all.bif ファ イルの内容は次のとおりです。

image:

{

system.bit

}

Zynq デバイスのイメージの作成

ザイ リ ンクス Bootgen は、Zynq デバイスのイ メージを作成するために使用します。さまざまなコンポーネン トがま とめられて、ブート イ メージが作成されます。 コンポーネン トはオプシ ョ ンで暗号化したり、認証したり、チェッ クサム計算したりできます。 ブート イ メージを作成するには、 さまざまなオプシ ョ ンがあ り ます。

詳細は、 『Zynq-7000 All Programmable SoC ソフ ト ウェア開発者向けガイ ド』 (UG821) [参照 7] を参照してください。

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

Page 74: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

付録 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.com74UG1043 (v2015.1) 2015 年 4 月 1 日

Page 75: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

付録 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

オブジェク ト ファ イルの内容をあるフォーマッ トから別のフォーマッ トに変換するプログラム。

mb‐objdump

オブジェク ト ファ イルの情報を表示するプログラム。プログラムのデバッグにおいて有益で、正しいコードおよびデータが正しいメモ リ ロケーシ ョ ンにあるかど うかを検証するのに使用されます。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com75UG1043 (v2015.1) 2015 年 4 月 1 日

Page 76: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

付録 A : GNU ユーティ リテ ィ

mb‐ranlib

アーカイブ ファ イルのインデッ クスを作成し、アーカイブ ファ イルに追加するプログラム。アーカイブで示されるライブラ リへのリ ンク プロセスを高速化できます。

mb‐readelf

ELF (Executable Linked Format) ファ イルの情報を表示するプログラム。

mb‐size

オブジェク ト ファ イルの各セクシ ョ ンのサイズを リ ス トするプログラム。コードおよびデータのスタティ ッ ク メモ リ要件を判断するのに便利です。

mb‐strings

バイナリ ファ イルの内容を判断するのに便利なプログラム。オブジェク ト ファ イルに含まれる表示可能な文字列を リ ス ト します。

mb‐strip

オブジェク ト ファ イルからシンボルを削除するプログラム。ファ イル サイズを削減し、ファ イル内のシンボル情報が見られないよ うにするために使用します。

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com76UG1043 (v2015.1) 2015 年 4 月 1 日

Page 77: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

付録 A : GNU ユーティ リテ ィ

その他のプログラムおよびファイル次の Tcl および Tk シェルは、 さまざまなフロン ト エンド プログラムから起動されます。

• cygitclsh30

• cygitkwish30

• cygtclsh80

• cygwish80

• tix4180

エンベデッ ド  システム ツール リファレンス マニュアルjapan.xilinx.com77UG1043 (v2015.1) 2015 年 4 月 1 日

Page 78: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

付録 B

その他のソースおよび法的通知

ザイリンクス リソースアンサー、 資料、 ダウンロード、 フォーラムなどのサポート リ ソースは、 ザイ リ ンクス サポート サイ ト を参照してください。

ソリューシ ョ ン  センターデバイス、 ツール、 IP のサポートについては、 ザイ リ ンクス ソ リ ューシ ョ ン センターを参照して ください。 ト ピックには、 デザイン アシスタン ト 、 アドバイザリ、 ト ラブルシュート ヒ ン ト などが含まれます。

参考資料このガイ ドでは、 次の Vivado® Design Suite ガイ ドが参照されています。

1. 『ソフ ト ウェア開発キッ ト (SDK) ヘルプ』 (UG782)

2. 『Zynq-7000 All Programmable SoC テクニカル リ ファレンス マニュアル』 (UG585 : 英語版、 日本語版)

3. 『MicroBlaze プロセッサ ユーザー ガイ ド』 (UG081)

 その他のザイリンクス資料

4. 『Vivado Design Suite ユーザー ガイ ド : エンベデッ ド プロセッサ ハードウェア デザイン』 (UG898) (UG898)

5. 『Vivado Design Suite チュート リ アル : エンベデッ ド プロセッサ ハードウェア デザイン』 (UG940) (UG940)

6. 『基本的なソフ ト ウェア プラ ッ ト フォームの生成リ ファレンス ガイ ド』 (UG1138)

7. 『Zynq-7000 All Programmable SoC ソフ ト ウェア開発者向けガイ ド』 (UG821 : 英語版、 日本語版)

その他のリソース

8. GNU のウェブ サイ ト :http://www.gnu.org

9. Red Hat Insight のウェブ サイ ト :http://sources.redhat.com/insight.

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

Page 79: エンベデッド システム ツール リファレンス マニュアル …エンベデッド システム ツール リファレンス マニュアル UG1043 (v2015.1) 2015 年

付録 B : その他のソースおよび法的通知

ト レーニング リソースザイ リ ンクスでは、本書に含まれるコンセプ ト を説明するさまざまな ト レーニング コースおよびオンライン ビデオを提供しています。 次のリ ンクから関連する ト レーニング リ ソースを参照してください。

1. Zynq 開発ツールの概要

2. ザイ リ ンクス SDK の System Performance ツールの概要

3. ザイ リ ンクス SDK を使用して 5 分で 「Hello World」 を作成

4. ザイ リ ンクス SDK を使用した Zynq ベアメ タル アプリ ケーシ ョ ン開発

法的通知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 2015 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 79UG1043 (v2015.1) 2015 年 4 月 1 日