Vitisは、Cで書いたアプリケーションプログラムをFPGAのロジックに変換して、AIや画像処理やサーバー処理などを高速に実行できる出来るらしいです。 Xilinxでサンプルのベクトル和プログラムvaddが用意されているので、このvaddをVitisを使ってFPGAで走らせてみたいと思います。 2022.2版を参考できる情報が少なく、めっちゃ苦労しました。 また、初学者として用語やファイル名が沢山でてくるので、まとめてみました。
必要なもの
- Ultra96V2と周辺
- 電源(Avnetの電源を使っています)
- UART-USB変換器(DSD TECH SH-U09C5 USB to TTL UARTコンバーター( FTDIチップサポート付き 5V 3.3V 2.5V 1.8V TTLサポートを使っています。 しかし、この場合ケーブルを自作せねばなりません。(その2参照))
- uBuntu PCかWindowsであればVMWare等仮想環境を入れてuBuntuを入れる。
- 私のuBuntuは2020.04.6で、ちゃんと動作しました。
- ハードディスクは最低でも500GBあったほうがいいです。 Vitisのインストール時に270GB必要になります。 vaddの簡単なサンプルの1つのプロジェクトで、PetaLinuxが41GBでVitisが7.3GB作ります。 Vivadoは0.1GB以下。 Vitisでビルドを始めると、1プロジェクト約73GB位でした。 なので、最初は500GBでもいいですが、本格的にするには個人的には2TBくらい欲しいかな。
- SSDがいいです。 私のPCはHDDなので書込が遅いのでビルドにめっちゃ時間がかかります。
- メモリは最低でも16GB以上あったほうがいいです。 私の古いPCは搭載最大容量の8GBですが、Vitisで簡単なvaddのサンプルをビルドする際でも、8GBで足りずhddをswapとして使うのでめっちゃ遅いです。 8GBでもまだ止まっていないですが、Vitisのビルドのswapに5GB使っているのでHDDへのアクセスが多くHDDの故障が心配です。 私のPCの場合はコアが2つで、8GBとswap 5GB使っていて、タスクが1つしか走っていない時は、メモリ使用やswapも減るので、1コアx6GB位あったほうがいいと思います。 Vitisでは使うコア数も指定出来るので、使うコア数x6GBかな。 まあ個人的には最低32GB、Vitis用にバリバリ使うなら12コア以上で128GBがいいかな。
- Vitis 2022.2 インストール
- Vivado:VitisをインストールしたらVivadoも一緒に入ってくるので、『組込みLinux Vitis Unified Software Platform 2022.2インストールと起動方法』を参照
- PetaLinux 2022 別途インストール
- XRT(Xilinx Runtime) 2022 別途インストール
開発フロー
こんな感じで開発します。 Vitisを使うには、VivadoもPetaLinuxもXRTも使います。
| 開発ステップ | 生成されるファイル | 実施内容 |
|---|---|---|
| 1. Vivado ハード構成構築 | .bit(FPGAの基本ハード構成、Vitisに渡す) .xsa(PetaLinuxとVitisに渡すハード構成:ハードウェプラットフォーム) | 1. Avnetのボードサポートファイルを入手して格納 2. ブロックダイヤグラムを作成 3. ビットストリーム作成(.bit) 4. ハードウェアプラットフォームExport(.xsa) |
| 2. PetaLlinux Linux関連構築 | image.ub (Kernelイメージ) zynqmp_fsbl.elf (1stブートローダー) bl31.elf (ARM用のセキュアブートローダーの一種) pmufw.elf u-boot.elf (U-BOOT) system.dtb (デバイスツリーブロブ) rootfs.tar.gz (ルートファイルシステム) rootfs.cpio sysroots (SDK) 等 | 1. Vivadoで生成した.xsaを取り込んでPetaLinuxプロジェクト作成。 2. Kernel, rootfs, u-boot, busybox等のmenuconfigを設定して一括ビルド。(個別ビルドも可能) 3. Sysroot(SDK)をビルド *Vitis用アプリ開発にはKernelモジュールの生成が必要なので、SDKが必要。 |
| 3. 個別編集 | .bifファイルを作成 | 1.ブート時に読み込むファイルの順番を指定する。 BOOT.BINを生成する際に使われる。 |
| 4. Vitis プラットフォーム作成 Target Platform | 1.Vivadoで生成した .xsaを取り込んでプラットフォームプロジェクト作成 2.以下ファイルを指定してプラットフォームビルド ・bifファイル ・各種Bootフィアル ・rootfs.cpio ・SysrootディレクトリPATH |
|
| 5. Vitis Accelerated Application作成 | vector_add (ユーザー空間の実行ファイル) krnl_vadd.xo(多分、ユーザーアプリがKernel空間のXRTにアクセスする実行ファイル) binary_container_1.xcbin (BitstreamやXRTやkrnl_vadd.xo等が含まれている) | 1. Vitisプラットフォームを指定してアプリケーションプロジェクトを作成 |
| ファイルの格納場所 | 入れるファイル | |
| 6. microSDに各種ファイルを入れ | /BOOT/パーティション | boot.scr (PetaLinux生成) BOOT.BIN (Vitis生成)* image.ub(Vitis生成)* *これらは最初にPetaLinuxが生成しますが、最終的にVitisのディレクトリから取り出します。 BOOT.BINはPetaLinuxで生成されたものから64byteほど増えています。 image.ubは同じものです。 |
| /ROOTFS/パーティション | rootfs.tar.gz を展開する(PetaLinux生成) | |
| /ROOTFS/パーティションのホームディレクトリ 私の場合は初期値のままなので、/ROOTFS/home/petalinux/ | binary_container_1.xcbin vector_add |
用語
Vitisを使う時に色々な用語やファイル名がでてきてわかりにくいので、ここにまとめておきます。
並びもばらばらで抜けもありますが、今後も理解しながら充実させていきます。
| 用語 | 説明 |
|---|---|
| 0000:00:00.0 | Kernelメッセージに表示されました。 ドメイン番号:最初の4桁 バス番号:次の2桁 デバイス番号:次の2桁 ファンクション番号:最後の番号 0000:00:00.0は、デバイスのPCIeのアドレス |
| ACAP | Adaptive Compute Acceleration Platform |
| ACE | AXI coherency extension AXIプロトコルの拡張 AMBA 4.0 |
| ACP | Acceleration Coherency Port APUとFPGAの接続 SCUにある128bitのAXIスレーブ |
| AES-GCM | AESは、Advanced Encryption Standard で共通鍵暗号アルゴリズム。 GCMは、認証タグ付き暗号文利用モード(暗号化と認証の両方の機能を持つ) Galois Counter Mode ガロア認証:暗号文が改ざんされていないことを検知する。 カウンターモード:処理の並列化が可能。 |
| AFI | Application Firmware Image. |
| AHB | Advanced High-Performance Bus AMBA 2.0/3.0 シングルチャンネル共有バス 読み出しデータバスと書込データバスが別 |
| AIE | Adaptive Intelligent Engine Versal SoCなどに搭載されている。 |
| AMBA | Advanced Microcontroller Bus Architecture オンチップバス規格の一つ。 AMBA 5.0 AXI, AHB, APB. ASBなどの総称。 |
| AP | Access Port |
| APB | Advanced Peripheral Bus 低速の周辺バス AMBA 1.0/2.0 |
| APU | Application Processing Unit Xilinxの場合は、Linux等のアプリを実行するプロセッサのことでCortex-A53コアの事。 一般的にはAccelerated Processing Unitで、CPUとGPUと一つにしたプロセッサのAMDの呼称。 |
| ASB | Advanced System Bus システム・バス AMBA 1.0/2.0 |
| ASG | WLCSP |
| ATCM | interface TCMの一種 |
| ATF | ARM Trusted Firmware |
| AXI | Advanced eXtensible Interface バスの規格でなく接続インターフェースの規格 マスタースレーブ通信Peer to Peer マルチチャンネルで同時に複数のアクセスが出来る バースト転送 AMBA 3.0/4.0 4つのチャンネルで接続。アドレス・チャネル,読み出しチャネル,書き込みチャネル,書き込み応答チャネル 各チャンネルは2線ハンドシェイク アドレスは各データ塊の先頭アドレスしか送らないので転送量が少ない。 スレーブでアドレス生成して格納。 高性能化するには2次キャッシュに接続する。 マルチプロセッサの場合AXIがバスが占有されないのでAHBより良い。 |
| AXLF | Accelerator Link Format ホストCPUとFPGA上のアクセラレーターの接続インターフェースを記述するのに使われるバイナリフォーマット。 |
| BD | Block Design |
| BDF | Board Design File Xilinx Vivado HLx toolsで使用される |
| BIST | Built-in Self-Test 永続故障によるハードのランダムフォルトを検出する。 RPUに含まれる |
| BPU | Battery Power Domain |
| BSP | Board Support Package 開発ボード上でOSを正常に可動させる為に必要なソフトウェア一式と設定が入っている。 XilinxのBSPはLinuxやボード上のデバイスを利用するドライバやライブラリ等が含まれる。 Xilinx BSP=HDF+Bitstream |
| BTCM | interface TCMの一種 |
| CAS | Column Address Strobe DDRなどDRAMメモリアクセス:列アドレスを取得する信号。 RASと併用する。 |
| CCI | Cache-coherent interconnect (CCI) ACE-Lite ports |
| CCIRGMII | Videoデータを転送するインターフェース Camera and Camcorder Interface (CCI) CCIRGMII stands for "Camera and Camcorder Interface (CCI) Reduced Gigabit Media Independent Interface (RGMII) |
| CLB | Configurable Logic Block =4 LUTs (for Zynq UltraScale+) |
| CMA | Continuous Memory Access |
| CSG | FCCSP |
| CSU | Configuration Security Unit ROM を内蔵しFSBLを実行しコンフィギュレーションを行う。 ロジックが改ざんされないように、AES-GCMやRSA等暗号復元ロジックも搭載している。 |
| d-cache | Data cache マイクロプロセッサ内部に設けられた高速な記憶装置であるキャッシュメモリの一種で、データを一時的に保管する領域。 |
| D-PHY | 通信の物理層 Data(1,2,4)とCLK HS(High Speed)、差動200mV、Max2.5Gbps、30cm LP(Low Power)、SE1.2V、Max10Mbps、30cm D-PHY ver3.0 9Gbps |
| DAP | Debug Access Port APとDPをセットにしたもの |
| DCM | Digital Clock Manager 古い仕組み MMCMを使う。 |
| DFX | Dynamic Function eXchange |
| Distributed RAM | FPGA内に分散して配置されるRAM |
| DKMS | Dynamic Kernel Module Support |
| DLL | Delay Locked Loop クロック周波数を設定した倍率の周波数に変換する。 PLLと違って発振器でなく、入力クロックを遅延させて次のクロックのエッジの位相を合わせてクロックを作り出す。 |
| DP | Debug port |
| DPACC ,APACC | Access Command? DPとAPのプライベート命令(35bit長) ◆コマンド [34:3]:データ [2:1]:レジスタオフセットアドレスの[3:2] [0]:RD(1) or WR(0) ◆レスポンス [34:3]:データ [2:0]:Ack |
| DPU | Deep Learning Processing Unit |
| DRM | Direct Rendering Manager Kernlドライバー DRM KMSはディスプレイパイプラインを設定する。 |
| DTG | Xilinx Device Tree Generator ハードウェアプロジェクトからdtsを生成する。 |
| EBR | EBR SRAM |
| EDA | Electronic Design Automation FPGAの設計作業ツール。 |
| EMIO | Extended Multiplexed Input/Output Zynq で使用される。 |
| FPD-DMA | Full-Power domain |
| FPU | Floating Point Unit 浮動小数点 |
| GEM | RubyのPackage manager .gem形式で保存されている。 |
| GEM | Graphics Execution Manager DRMドライバーはGEMメモリマネージャーを付く買う |
| GFC | Gigabit Frame Checker |
| GIC | Generic Interrupt Controller |
| GPLL | Global Phase Locked Loop |
| Graph API | SNSなどで使われるGraph DatabaseにアクセスするAPI |
| GTH | Gigabit Transceiver Hard IP Zynq UltraScale+ GTH (16.3Gb/s) |
| GTM | Gigabit Transceiver Module Versal プレミアムシリーズ GTM (112Gb/s) チップ間 チップと光モジュール間 |
| GTP | Gigabit Transceiver Platform(コスト重視:低消費電力) Artix™ 7 GTP (6.6Gb/s) Spartan™ 6 GTP (3.2Gb/s) |
| GTR | Gigabit Transceiver Zynq UltraScale+™ GTR (6Gb/s) |
| GTX | Transceiver(ミッドレンジ) Zynq 7000 GTX (12.5Gb/s) Kintex 7 GTX (12.5Gb/s) |
| GTY | Gigabit Transceiver Yellow Zynq UltraScale+ GTY (32.75Gb/s) チップ間、チップと光モジュール間 |
| GTZ | Gigabit Transceiver Zynq UltraScale+(ミッドレンジ) 7 シリーズ GTZ (28.05Gb/s): 28nm FPGA で最高レート |
| HADDR | アドレス・バス |
| HBM | High Bandwidth Memory |
| HD | High-Density bank 1.8V |
| HDF | ハード情報 |
| HDL | Hardware Definition Language VHDL、SystemVerilog |
| HLS | High Level Synthesis 高位合成ツールの事。 C/C++で記述したコードをFPGAで処理できる。(VHDLやVerilogで記述しなくても良い) |
| HP | High-Performance bank 1.2V |
| HPC | High Performance Computing 複雑で膨大な演算を高速で処理すること。 XilinxでのHPC0は高速データ転送と信号処理のHigh Performance I/Oバンク。 PCIe、DDR等をサポートする HP0は、LDVSやHSTLを含むGPIO用のHigh Performance I/Oバンク。 |
| HPM | High Performance Master AXIインターフェース |
| HPPL | High Performance Peripheral Libraries |
| HPS | hardware platform specification |
| HRDATA | 読み出しデータ・バス |
| HSI | High-Speed Serial Interface |
| HSSIO | High Speed Serial I/O |
| HWDATA | 書き込みデータ・バス |
| i-cache | Instruction cache マイクロプロセッサ内部に設けられた高速な記憶装置であるキャッシュメモリの一種で、プログラムを一時的に保管する領域。 |
| Interlaken | スケーラブル(レーン数)な外部高速チップ間通信 LogiCORE™ IP UltraScale™が必要 UltraScale+ 最大帯域150G 12.5Gb/s ~ 25.78125Gb/s で最大 6 レーン Versal ACAP 最大帯域600Gbps(48 transceiver必要) Virtex UltraScale 25g_6l_gty 25.78125 |
| IOP | PSが使用するI/O。USB, Ethernet, CAN, UARTなど。 PSが使用するGPIOはMIO. |
| IPI | Inter-Processor Interrupt |
| KDS | Kernel Driver Stack FPGAで実行するAccelerated Applicationとユーザーアプリケーションと通信するドライバインターフェース。 以下の3つを含む 1.ユーザー空間ランタイムライブラリ 2.Kernel空間ドライバ 3.FPGA上のFirwareランタイム |
| KMS | Kernel Mode Setting |
| LBG | BGA |
| LFG | BGA |
| LC | Logic Cell 他のデバイスのLogic Element相当。 LUTとは異なる。 LUTよりカウント数が多い。 |
| LPD-DMA | Low Power Domain |
| LPD-PL | LPDからPL |
| LUT | Look Up Table マルチプレクサとFlip Flopからなる。 Intel系は4入力 Xilinx系は5か6入力 |
| LVDS | Low Voltage Differential Signal 低電圧作動信号 HDMIやDisplayPortなどにも使われる高速通信方式。 |
| MCS | Micro Controller System MicroBlaze(Soft processor)の事。 |
| MEM-AP | Memory Access Port デバッグ用のメモリ空間(レジスタ等)にアクセスするポート |
| MicroBlaze | XilinxのFPGA上に作ることが出来る、ソフトマイクロプロセッサ。 32bit、32レジスタ |
| MIO | Multiplexed I/O ZynqのPS(FPGAでない部分)部と直接接続できるI/Oピン |
| MIPI | Mobile Industry Processor Interface 2008年制定。 スマートフォンや、産業機器、車載用途など主にカメラ周りの製品内で使われるインターフェース。 D-PHYの物理層とDSI/CSI-2プロトコルを使う。 |
| MMCM | Mixed-Mode Clock Manager PLLのSuperset 1クロックから複数の周波数を生成できる。 11.2ps単位で位相シフトできる。 PLLとの違い 1.最小最大の周波数範囲が狭い 2.分数除算がある 3.ダイナミック位相シフト可能 4.4つの出力クロックに対して補数出力あり PLLと共通 1.パワーダウンモード 2.周波数号お世 3.入力クロック切替 |
| MMU | Memory Management Unit 物理アドレスと論理アドレスの変換(=ページング)とキャッシュの設定をする。 |
| MRC | Memory Resource Controller Xilinxデバイスに搭載されている。 メモリー領域を分けてKernelに割り当てることができる。 |
| NRZ | Non Return to Zero 伝送路符号の一種 差動でなくSE |
| OCM | On-Chip Memory(RAM) FPGAのOCMは通常外部メモリより高速。 |
| ONFI3.1 | Open NAND Flash Interface |
| OpenCL | マルチコアCPUやGPU、Cellプロセッサ、DSPなどによる異種混在の計算資源を利用した並列コンピューティングのためのクロスプラットフォームなAPI。 |
| PAM | Pluggable Authentication Modules 各ソフト共通で利用できる認証システム |
| PL | Programmable Logic FPGAの部分 |
| PL-LPD | PLからLPD間 |
| PLL | Phase Locked Loop クロック周波数を設定した倍率の周波数に変換する |
| PMU | Platform Management Unit 電源シーケンスの管理 PS電源レールの改ざんを防ぐ電源安全ルーチンの実装 |
| PMUFW | Platform Management Unit Firmware PMU Processorのテンプレートアプリを供給する。 PMUFW は、FSBL が提供する設定オブジェクトを待つ。 XSDB コマンド mwr 0xaddress 0xvalue: Memory 64bit Write? after 1000 : 1000 μs 待つ? dow file_name : download? con : 実行 |
| PS | Processing System ARMコア側の部分のこと |
| PS-GTR | Gigabit Transceiver SubsystemとPSの接続 |
| PSU | psu_cortexa3_0 |
| QEMU | Quick Emulator |
| QoR | Quality of Result 論理合成ツールで優れた設計品質の事 |
| QoR | Quality of Result 結果の品質 |
| RAS | Row Address Strobe DDRなどDRAMメモリアクセス:行アドレスを取得する信号。 CASと併用する。 |
| RF | Radio Frequency Giga bit Ethernet の無線化など |
| RPU | Realtime Processing Unit リアルタイム動作するCortex-R5のコアの事 |
| RTL | Register Transfer Language レジスタ転送言語 HDLと呼ばれることもある。 Verilogなどの事。 これをコンパイルするとネットリストになる。 |
| sbc | Single Board Computer |
| SCU | Snoop Control Unit |
| SE | Single Ended 差動でなく片側がGNDでもう一方が信号。 UART、RS232Cなど。 |
| SEV | Send Event 命令 |
| SMMU | System Memory Management Unit アドレス空間を仮想化してI/OやDMAを扱えるデバイスのアイソレーションを図り、DMA attackを回避する |
| sstate-cache | Shared State cache ビルド時間を短縮する |
| Sysroot | ターゲットで動作するKernelと同じバージョンの、ヘッダーファイル群やKernelモジュール用Cライブラリーなどが含まれたディレクトリとフィアル群。 |
| TCF | Target Communication Framework Linux ユーザー空間アプリをデバッグする為のLinux内のサーバー。 XSDBコマンドを使ってデバッグ出来る。 XILINXのJTAGサーバ(hw_server:デバッグエンジン)のこと。 |
| TCM | Tightly Coupled Memory PSに近いので低遅延でアクセスできる。 |
| TCM | Tightly Coupled Memory Memory map https://docs.xilinx.com/r/en-US/ug1085-zynq-ultrascale-trm/Lock-step-Operation |
| TTC | Triple Timer Counter |
| ULPI | USB3.0に接続 |
| v++ | Vitis Compiler |
| vadd | Vector Add XilinxがVitis用に提供しているベクトル和を計算するファイル。 PL用とPC用が生成され、それぞれ同じ結果に成るか確認できる。 このファイルを使い、VitisのHLSが正常に動作しているか確認できる。 vadd.xclbin |
| VCU | Video Control Unit |
| VPL | Vitis Programming Language C++をベースとしてFPGAをプログラムするHigh Level ハードウェア記述言語 |
| WFE | Wait for event 内部通信方法 |
| WRPLL | Wide-Range Phase-Locked Loop |
| xbutil | Xilinx Binary Utility xbsakは廃止予定でxbutilに置き換わる。 XRTに含まれるコマンドラインユーティリティ。 以下の4つのコマンド program examine configure reset 以下のコマンドは2022.2では使用できない。 query load validate |
| XML-RPC | XML形式のデータをHTTPでやり取りするためのプロトコル。 XML-RPCサーバが必要。 |
| XPE | Xilinx Power Estimator |
| XRT | Xilinx Run Tim OpenCLのAPIやCPU-FPGA間のドライバが含まれている。 ApplicationからFPGAをconfigurationするにはXRTが必要。 |
| XSA | Xilinx Support Archive Vivadoで生成し、Vitisで使用できるファイル。 ハードウェアコンポーネント。 ソフトウェアコンポーネントのSPFMファイルと名前を一致させる必要がある。 アクセラレーションプラットフォームには、ハードウェアコンポーネントとソフトウェアコンポーネントの両方が必要。 |
| XSCT | Xilinx Software Command-Line Tool ユーザーはコマンド ラインから SDK ツールにアクセスできる。 XSDBコマンド等が使える。 |
| XSDB | Xilinx Software Debugger hw_server およびその他の TCF サーバー用のコマンドライン インターフェイス |
| zocl | Zynq OpenCL Zynq/ZynqMPで使われるOpenCL API PSとPL間のSMMUベース共有仮想メモリとCMAベースの共有物理メモリをサポートする。 |
| zyxclmm_drm | DRMと相互作用するXilinx's Zynq Linux distributionのKernelモジュール |
| エンベディットVitisプラットフォーム向け共通イメージ | ハードウェアプラットフォームとソフトウェアプラットフォームからビルドされた最終プラットフォーム。 ハード情報とソフト情報のファイル群が含まれている。 (.xpfmファイル) |
| ソフトウェアプラットフォーム | Vitisで使用するために、PetaLinuxで生成(.spfmファイル)するソフトウェア情報のファイル群。 |
| ハードウェアプラットフォーム | Vitis用にVivadoで作成(.xsaファイル)するハードウェア構成ファイル群を集めたもの。 |
ファイル名
| 拡張子 | 関係ソフト | 説明 |
|---|---|---|
| Vivado | ディレクトリ | |
| Vivado | ディレクトリ | |
| Vivado | ディレクトリ | |
| Vivado | ディレクトリ | |
| Vivadoでプロジェクトを作った時に生成される | Xilinx Project プロジェクトファイル。 ダブルクリックするとプロジェクトが開く。 |
|
| ディレクトリ ハード定義が入っているらしい。 Vivado 2022で合成したが、.sdkディレクトリは生成されなかった。 |
||
| Vivado | ディレクトリ | |
| Vivado | ディレクトリ 各種プロジェクトのソースフィアルを入れるディレクトリ。 |
|
| VivadoでFile/Export/Export Platformで生成して、PetaLinuxで使う | Xilinx Support Archive Vitis のAccelerated Applicationにするには、 spfmと同じファイル名でないといけない。 |
|
| u-boot-dtb.elf | u-boot.elfにデバイスツリーdtbが含まれている。 | |
| u-boot.bin | u-bootイメージの最終形。 ATF, PMUFW, FSBL, U-Boot イメージが入る。 ◆従来のファイル名 boot/bl31.elf boot/u-boot.elf boot/system.dtb |
|
| u-boot-dtb.bin | u-boot.binにデバイスツリーdtbが含まれている。 | |
| image.ub | bootable kernel image とデバイスツリーを含む - Image(Linux Kernel) - zynq.dtb(Device Tree Blob) image.ubは、BOOT.BIN、boot.scrと一緒に/BOOT/に入れる Fit image name petalinux-configで設定。 |
|
| zynqmp_fsbl.elf | Fist Stage Boot Loader |
|
| bl31.elf | ARM Trusted Firmware BL:Boot Loader |
|
| pmufw.elf | Platform Management Unit Firmware Vivadoで.hdlから生成される |
|
| system.dtb | Vivadoがソースを作成し、PetaLinuxがビルド | システムのデバイスツリーブロブ(バイナリ)。 Overlayを使えるようになっている。 |
| BOOT.BIN | BOOT.BINには、以下が入る。 - pmufw.elf(Platform Management Unit Firmware) - fsbl.elf(First Stage Boot Loader) - bl31.elf(ARM Trusted Firmware) - u-boot.elf - Bitstream <---BOOT.BINからPLを起動する場合。 BOOT.BINとimage.ubとboot.scrをSDカードのFAT32第一パーティションに入れてブートする。 ルートFS はext4パーティションにrootfs.tar.gzを解凍して入れる。(sudo) 初期値ではPetaLinuxはu-boot.elfからJTAG/BOOT.BINを作る。 bootgenはu-boot.elfからsymbolsを取り除く。 BOOT.BINにu-boot-dtb.elfを使うことも出来る。 |
|
| uboot.elf | u-boot-spl.binと同様で、fsbl.elfや.binとマージさせるためのu-bootイメージファイル。 Second Stage Boot Loader |
|
| linux.bif | Boot Image Format BOOT.BIN のレイアウトを定義します。 Bootgen のブート コンポーネント構造を記述する BIF (linux.bif) 起動順に記載する。 ZynqとVersalは記述文法が異なる。 コメントは、/* */ か //。 |
|
| sysroot | Kernel空間で動作するKernelモジュール(ドライバ)生成するために使用するKernelヘッダーファイルやCライブラリ群とディレクトリ群。 | |
| plm.elf | ||
| pmc_cdo.bin | ||
| image.gz | ||
| .bin | 全FPGAデバイスで使用 | 未処理の実行可能バイナリファイル |
| .dtb | 全FPGAデバイスで使用 | Device Tree Blob デバイスツリーをコンパイルしたバイナリファイル |
| .gz | 全FPGAデバイスで使用 | 未処理の実行可能バイナリファイル |
| .elf | 全FPGAデバイスで使用 | Executable Linking FIle 複数の実行ファイルをリンクした実行可能バイナリファイル |
| .int | 全FPGAデバイスで使用 | レジスタ初期化ファイル |
| .nky | 全FPGAデバイスで使用 | AES暗号化鍵 |
| .pub | 全FPGAデバイスで使用 | RSA暗号化鍵 |
| .pem | 全FPGAデバイスで使用 | RSA暗号化鍵 |
| .sig | 全FPGAデバイスで使用 | Signature Bootgen または HSM によって生成される署名ファイル。 |
| .bit | Zynq-7000 Zynq UltraScale+ MPSoC Versal以外FPGA | BIT ファイル ヘッダーを除くビットストリーム |
| .rbt | Zynq-7000 Zynq UltraScale+ MPSoC Versal以外FPGA | BIT ファイル ヘッダーを除くビットストリーム |
| .bdf | Board Definition File ボードで使用する端子設定情報を含むファイル。 |
|
| .pl | lgm_port2.pl | |
| .dtd | board.dtd part0_pins.dtd preset.dtd |
|
| .xdc | Xilinx Design Constraintファイル Xilinxの場合、ピン配や設定も.xdcでTcl文法で記述する。 |
|
| .bd | Block Design ファイル VivadoでCreate HDL Wrapperした時にVerilog Wrapperファイルと共に生成される。 |
|
| インターフェース名.xml | ||
| インターフェース名_rtl.xml | ||
| xgui/IP名_バージョン.tcl | 自分のIP | |
| RTLソース | 自分のIP | |
| component.xml | 自分のIP | |
| IP中のXILINX IP名/IP中のXILINX IP名.xci | 自分のIP | |
| .bb fsbl-firmware.bb plm-fimeware.bb | PetaLinux | BitBakeのレシピファイル fsbl.bb (旧レシピ) plm.bb (旧レシピ) |
| .bbclass | PetaLinux | BitBakeのclass |
| xilinx_zynqmp_defconfig | ||
| .mcs | Micro Controller Systemファイル MicroBlaze向けPROMに書き込む為のファイル |
|
| .wic | FlashメモリやSDから起動する為のパーティション構造も入ったイメージファイル。 パーティション構造定義wksファイルを参照して作る。(Linux、Windows、Mac共通) ◆解凍方法 $ xz -d petalinux-cdimage.wic.xz |
|
| .wsk | OpenEmbedded Kickstart .wicを作る時の設定ファイル。 |
|
| .xclbin | Vitisで生成される。 | Xilinx Compiled Binary 以下を含む 1. PLに展開するFPGAユーザープログラムのBitstream(VerilogやVHDLで記述) 2. PS部のハード設定 3. ハードウェアカーネル(.xo)(C/C++等で記述) v++(Vitis Compiler)で生成される。 .xclbinは、Xilinx runtime APIかXRTかOpenCLでruntimeにFPGAにロードされる。 |
| .xo | Xilinx object ハードウェアカーネル XilinxのFPGA開発としてのハードウェアカーネルとは、ユーザーが開発したFPGAで実行される関数部分の事。 Cプログラム等を高速に実行するためにVitisで.xoとして生成され、他のハードとリンクされxclbinファイルのFPGA Bitstreamとなって、FPGAにロードされる。 FPGA1個に対して、関数が複数あれば、.xoファイルは複数個存在するが、xclbinは1個歯科存在しない。 |
|
| bblayer.conf | ||
| prserve.sqlite3 | ||
| components/yoct/conf/local.conf | MACHINEがリストされている | |
| components/yoct/conf/bblayers.conf | ||
| system.bit | FPGAの内部接続を設定するBitstream。 Optionally PL (FPGA) bitstream Block Design等で生成。 |
|
| Software Platform file Vitis のAccelerated Applicationにするには、 xsaと同じファイル名でないといけない。 |
||
| .saif | Simulation Active File | |
| .xpfm | Vitisで作る | Xilinx Platform ファイル |

コメント