アプリケーションのコンパイルと実行

この付録には、次の内容が含まれます。

注記: コードを変更した場合は (ハードウェア関数への変更を含む)、ソフトウェアのみのコンパイルを実行し直して、変更によってプログラムに悪影響が出ないかどうかを確認すると有益です。ソフトウェアのみのコンパイルは、フルシステム コンパイルよりもかなり高速です。

MicroBlaze プロセッサでのアプリケーションのコンパイルと実行

SDSoC™ 環境の MicroBlaze™ プラットフォームは、Vivado® ツールおよび SDK を使用した標準 MicroBlaze プロセッサ システム ビルドで、ローカル メモリ バス (LMB)、MicroBlaze Debug Module (MDM)、UART、および AXI タイマーを使用した自己完結型システムにする必要があります。

SDSoC 環境には、MicroBlaze プロセッサ用の標準 SDK ツールチェーンが含まれます。これには、スタンドアロン (ベアメタル) および FreeRTOS アプリケーションを開発するための microblaze-xilinx-elf も含まれます。

デフォルトでは、MicroBlaze プラットフォームをターゲットにするプロジェクトの場合は、SDSoC システム コンパイラで SD カード イメージが生成されません。アプリケーションの必要に応じてビットストリームと該当する ELF 実行ファイルをパッケージできます。

アプリケーションを実行するには、ELF が MicroBlaze コアにダウンロードできるようになる前にビットストリームがデバイスにプログラムされている必要があります。SDSoC 環境には、MCS ファイルを作成し、ELF ファイルをビットストリームに挿入し、SD カードからシステムをブートするための Vivado ツールと SDK の機能が含まれています。

Arm プロセッサでのアプリケーションのコンパイルと実行

注記: コードを変更した場合は (ハードウェア関数への変更を含む)、ソフトウェアのみのコンパイルを実行し直して、変更によってプログラムに悪影響が出ないかどうかを確認すると有益です。ソフトウェアのみのコンパイルは、フル システム コンパイルよりもかなり高速で、ソフトウェアのみのデバッグの方が、ハードウェアおよびソフトウェア デバッグよりも論理プログラム エラーをすばやく見つけることができます。

SDSoC 環境には Zynq®-7000 SoC 内の Arm® Cortex™-A9 CPU 用に 2 つの異なるツールチェーンが含まれます。

arm-linux-gnueabihf
Linux アプリケーションの開発には、次を実行します。
arm-none-eabi
スタンドアロン (ベアメタル) および FreeRTOS アプリケーション開発用

Zynq デバイス内の Arm Cortex-A53 CPU の場合、SDSoC 環境に 2 つのツールチェーンが含まれます。

aarch64-linux-gnu
Linux アプリケーションの開発には、次を実行します。
aarch64-none-elf
スタンドアロン (ベアメタル) アプリケーション開発用

Zynq UltraScale+™ MPSoC に含まれる Arm Cortex-R5 CPU の場合、SDSoC 環境に含まれるツールチェーンは armr5-none-eabi です。これで、スタンドアロン (ベアメタル) アプリケーションが開発されます。

GNU ツールチェーンは、プロジェクト作成中にオペレーティング システムを選択すると定義されます。SDSoC システム コンパイラ (sdscc/sds++sds++ と表記) は、CPU のコードをコンパイルする際に、ハードウェア関数に関係しないすべてのソース ファイルも含め、対応するツールチェーンを自動的に起動します。

SDSoC システム コンパイラでは、デフォルトで sd_card というプロジェクト サブディレクトリに SD カード イメージが生成されます。Linux アプリケーションの場合、このディレクトリには次のファイルが含まれます。

README.TXT
アプリケーションの実行方法の簡単な説明が含まれます。
BOOT.BIN
FSBL (第 1 段階ブートローダー)、ブート プログラム (U-Boot)、および FPGA ビットストリームが含まれます。
image.ub
Linux ブート イメージが含まれます。プラットフォームは、次を含めて作成できます。
  • uImage
  • devicetree.dtb
  • uramdisk.image.gz ファイル
<app>.elf
アプリケーション バイナリ実行ファイル

アプリケーションを実行する手順は、次のとおりです。

  1. sd_card ディレクトリの内容を SD カードにコピーし、ターゲット ボードに挿入します。
  2. ターゲットに対するシリアル ターミナル接続を開いて、ボードに電源を投入します。

    Linux が起動され、root として自動的にログインされ、Bash シェルが表示されます。SD カードは /mnt に割り当てられます。このディレクトリから、<app>.elf を実行できます。