Führen Sie bootgen unter Debian GNU / Linux, Ubuntu aus

Einführung

bootgen ist ein von Xilinx bereitgestelltes Entwicklungstool, das Binärdateien integriert, um Geräte-Boot-Images zu generieren. Es wird hauptsächlich für die folgenden Zwecke verwendet.

  1. Generieren Sie ein Boot-Image (boot.bin) für ein System-on-Chip (SoC) wie Zynq oder ZynqMP Referenz: ["Erstellen von Debian GNU / Linux (Version v2018.2) für Ultra96 (BOOT.BIN Edition)" @Qiita] [Erstellen von BOOT.BIN]
  2. Konvertieren Sie die Bitstream-Datei (xxxx.bit) in eine Binärdatei (xxxx.bin), wenn Sie das FPGA konfigurieren Referenz: ["Beispiel für die Konfiguration von FPGA mit Debian GNU / Linux (Version v2018.2) für UltraZed" @Qiita] [Beispiel für die Konfiguration]

Weitere Informationen zu bootgen finden Sie im [Bootgen-Benutzerhandbuch] ug1283.

Übrigens ist dieses Bootgen ein Programm, das ursprünglich in Xilinx Vivado und Xilinx SDK enthalten war, und es funktioniert nur in der Umgebung, in der Xilinx Vivado oder Xilinx SDK zum Ausführen installiert ist. Ab 2019.2 wurde es außerdem unpraktisch, da das Xilinx SDK in Vitis integriert wurde und nur bootgen separat installiert wurde.

Glücklicherweise ist bootgen von Xilinx auf Github erhältlich.

Wenn Sie dies erstellen, funktioniert bootgen in Ihrer bevorzugten Umgebung. Glücklicherweise funktioniert es nicht nur mit der x86-Architektur, sondern auch mit der arm64-Architektur. Daher wird es in ["Bereitstellen eines Boot-Images für Debian GNU / Linux (Version 2019.1) für UltraZed / Ultra96 / Ultra96-V2"] ZynqMP-FPGA-Linux eingeführt. In einer solchen Umgebung kann bootgen auf dem Ziel so ausgeführt werden, wie es ist, was praktisch ist. Dieser Artikel enthält ein Beispiel für das Erstellen und Ausführen unter Debian GNU / Linux oder Ubuntu.

Wie man normal baut und installiert

Vorbereitung

Zum Erstellen benötigen Sie einen Compiler und OpenSSL v1.1.1.

Beim Selbstkompilieren müssen Sie die OpenSSL-Entwicklungsumgebung in der von Ihnen erstellten Umgebung installieren. Verwenden Sie für Debian GNU / Linux und Ubuntu apt install, um das libssl-dev-Paket zu installieren. Beim Cross-Compilieren muss die OpenSSL-Entwicklungsumgebung für die Zielarchitektur in der zu erstellenden Umgebung installiert werden, was unerwartet problematisch ist. Dieser Artikel behandelt nicht das Cross-Kompilieren.

herunterladen

Laden Sie das folgende Github-Repository herunter (klonen Sie es).

shell# git clone https://github.com/Xilinx/bootgen
Cloning into 'bootgen'...
remote: Enumerating objects: 146, done.
remote: Counting objects: 100% (146/146), done.
remote: Compressing objects: 100% (95/95), done.
remote: Total 146 (delta 58), reused 138 (delta 50), pack-reused 0
Receiving objects: 100% (146/146), 386.16 KiB | 466.00 KiB/s, done.
Resolving deltas: 100% (58/58), done.

Bauen

Normalerweise können Sie bootgen erstellen, indem Sie den Befehl make ausführen.

shell# cd bootgen
shell# 
shell# make
  :
  (Unterlassung)
  :
echo Building executable file: bootgen...
Building executable file: bootgen...
g++ -std=c++0x -O -Wall -Wno-reorder -Wno-deprecated-declarations   -o bootgen \
bif.tab.o bif.yy.o reginit.tab.o reginit.yy.o cmdoptions.tab.o cmdoptions.yy.o \
authentication.o authentication-zynq.o authentication-zynqmp.o authkeys.o binar\
y.o binfile.o bitutils.o options.o bifoptions.o bootheader.o bootheader-zynq.o \
bootheader-zynqmp.o bootimage.o bootimage-zynq.o bootimage-zynqmp.o checksum.o \
elftools.o encryption.o encryptutils.o encryptionkeys.o encryption-zynq.o encry\
ption-zynqmp.o hash.o imageheadertable.o imageheadertable-zynq.o imageheadertab\
le-zynqmp.o Keccak-compact.o logger.o readimage.o readimage-zynq.o readimage-zy\
nqmp.o verifyimage.o main.o mcsfile.o outputfile.o parsing.o partition.o partit\
ionheadertable.o partitionheadertable-zynq.o partitionheadertable-zynqmp.o regi\
nit.o -lssl -lcrypto
shell# 
shell# file bootgen
bootgen: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamica\
lly linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildI\
D[sha1]=9ea6dc2ff0979a37bd4e6

Installation

Kopieren Sie das erstellte Bootgen an einen Ort in Ihrem Ausführungspfad. Hier wird es nach / usr / local / bin kopiert.

shell# cp bootgen /usr/local/bin
shell# which bootgen
/usr/local/bin/bootgen

So installieren Sie als Debian-Paket

Vorbereitung

Zum Erstellen benötigen Sie einen Compiler und OpenSSL v1.1.1. Sie benötigen auch verschiedene Tools, um das Debian-Paket zu erstellen.

shell$ sudo apt install debhelper quilt dh-exec libssl-dev
  :
  (Unterlassung)
  :

herunterladen

Platzieren Sie ein Repository, das bootgen zu einem Debian-Paket macht, unter der folgenden URL. Dieses Repository habe ich unter https://github.com/Xilinx/bootgen gespalten und verschiedene Dateien zum Erstellen des Debian-Pakets hinzugefügt. Beachten Sie, dass der Zweig 2019.2-Develop ist und nicht Master.

shell$ git clone -b 2019.2-develop https://github.com/ikwzm/bootgen.git
Cloning into 'bootgen'...
remote: Enumerating objects: 160, done.
remote: Counting objects: 100% (160/160), done.
remote: Compressing objects: 100% (104/104), done.
remote: Total 160 (delta 63), reused 150 (delta 53), pack-reused 0
Receiving objects: 100% (160/160), 389.17 KiB | 397.00 KiB/s, done.
Resolving deltas: 100% (63/63), done.

Bauen

Erstellen Sie das Debian-Paket mit Debian / Rules Binary.

shell$ cd bootgen
shell$ sudo debian/rules binary
  :
  (Unterlassung)
  :
dpkg-deb: building package 'bootgen' in '../bootgen_2019.2-1_arm64.deb'.
dpkg-deb: building package 'bootgen-dbgsym' in '../bootgen-dbgsym_2019.2-1_arm64.deb'.

Wenn bootgen_2019.2-1_arm64.deb im nächsthöheren Verzeichnis erstellt wird, ist der Build erfolgreich.

shell$ dpkg --info ../bootgen_2019.2-1_arm64.deb
 new Debian package, version 2.0.
 size 202168 bytes: control archive=596 bytes.
     338 bytes,    10 lines      control
     192 bytes,     3 lines      md5sums
 Package: bootgen
 Version: 2019.2-1
 Architecture: arm64
 Maintainer: ikwzm <[email protected]>
 Installed-Size: 758
 Depends: libc6 (>= 2.17), libgcc1 (>= 1:3.0), libssl1.1 (>= 1.1.1), libstdc++6 (>= 5.2)
 Section: utils
 Priority: optional
 Homepage: <https://github.com/Xilinx/bootgen>
 Description: Bootgen for Xilinx Zynq and ZU+SoCs

Installation

Installieren Sie Debian Packege mit dpkg.

shell$ sudo dpkg --install ../bootgen_2019.2-1_arm64.deb
Selecting previously unselected package bootgen.
(Reading database ... 85254 files and directories currently installed.)
Preparing to unpack ../bootgen_2019.2-1_arm64.deb ...
Unpacking bootgen (2019.2-1) ...
Setting up bootgen (2019.2-1) ...
shell$ which bootgen
/usr/bin/bootgen
shell$ bootgen


****** Xilinx Bootgen v2019.2
  **** Build date : Jan 16 2020-08:00:00
    ** Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.

------------------------------------------------------------------------------+
                       COMMAND LINE OPTIONS                                   |
-------------------------------+----------------------------------------------+
 -arch              [options]  | Xilinx Architecture                          |
                               | options: [zynq, zynqmp, fpga]                |
-------------------------------+----------------------------------------------+
 -image            <filename>  | Input Boot Image File (.bif)                 |
-------------------------------+----------------------------------------------+
 -o                <filename>  | Output filename in MCS/BIN format            |
-------------------------------+----------------------------------------------+
 -w                 [options]  | Overwrite mode                               |
                               | options: [on, off]                           |
-------------------------------+----------------------------------------------+
 -encrypt           [options]  | AES Key storage in chip (Zynq only)          |
                               | options: [bbram, efuse]                      |
-------------------------------+----------------------------------------------+
 -p                  <string>  | Part name                                    |
-------------------------------+----------------------------------------------+
 -efuseppkbits     <filename>  | Generate PPK hash for e-fuse                 |
-------------------------------+----------------------------------------------+
 -generate_hashes              | Generate SHA hashes (PKCS#1v1.5)             |
-------------------------------+----------------------------------------------+
 -spksignature     <filename>  | Generate SPK signature file                  |
-------------------------------+----------------------------------------------+
 -fill             <hex-byte>  | Fill byte for padding                        |
-------------------------------+----------------------------------------------+
 -split             [options]  | Split partitions to diff files               |
                               | options: [bin, mcs]                          |
-------------------------------+----------------------------------------------+
 -padimageheader    [options]  | Pad header tables                            |
                               | options: [0, 1]                              |
-------------------------------+----------------------------------------------+
 -process_bitstream [options]  | Outputs bitstream in bin/mcs format          |
                               | options: [bin, mcs]                          |
-------------------------------+----------------------------------------------+
 -generate_keys     [options]  | Generate authentication keys                 |
                               | options: [pem, rsa, obfuscatedkey]           |
-------------------------------+----------------------------------------------+
 -dual_qspi_mode    [options]  | Generate 2 output files for Dual QSPI        |
                               | options: [parallel, stacked <size>]          |
-------------------------------+----------------------------------------------+
 -log               [options]  | Generate log file                            |
                               | options: [error, warning, info, debug, trace]|
-------------------------------+----------------------------------------------+
 -zynqmpes1                    | Generate boot image for (1.0)ES1             |
-------------------------------+----------------------------------------------|
 -nonbooting                   | Generate an intermediate boot image          |
-------------------------------+----------------------------------------------|
 -encryption_dump              | Generate encryption log file                 |
-------------------------------+----------------------------------------------+
 -verify                       | Verify BootImage authentication              |
-------------------------------+----------------------------------------------+
 -h | -help                    | Print the help summary                       |
-------------------------------+----------------------------------------------+
 -bif_help                     | Print the BIF help summary                   |
-------------------------------+----------------------------------------------+
 Note     : For more info on bootgen options, use the command                 |
            bootgen -help <option>                                            |
 Example  : bootgen -help efuseppkbits                                        |
------------------------------------------------------------------------------+

Referenz

Recommended Posts

Führen Sie bootgen unter Debian GNU / Linux, Ubuntu aus
Führen Sie den Lima-Treiber unter Debian GNU / Linux für Ultra96 / Ultra96-V2 aus
Führen Sie Debian (Linux) & LXQt auf Athlon 200GE (AMD) aus.
Führen Sie X Window unter Debian GNU / Linux für Ultra96 / Ultra96-V2 (Videotreiber) aus.
Führen Sie X Window unter Debian GNU / Linux für Ultra96 / Ultra96-V2 (Gnome Desktop) aus.
Führen Sie XRT (Xilinx Runtime) unter Debian GNU / Linux für Ultra96 / Ultra96-V2 aus (Installation)
Führen Sie XRT (Xilinx Runtime) unter Debian GNU / Linux für Ultra96 / Ultra96-V2 (Build) aus.
Führen Sie Jupyter unter Ubuntu unter Windows aus
Führen Sie XRT (Xilinx Runtime) unter Debian GNU / Linux für Ultra96 / Ultra96-V2 (Build) aus [Unfinished]
Führen Sie XRT (Xilinx Runtime) unter Debian GNU / Linux für Ultra96 / Ultra96-V2 aus (Installation) [Unfinished]
Linux unter Windows -1-: Einführung in Debian
Führen Sie XRT (Xilinx Runtime) unter Debian GNU / Linux für Ultra96 / Ultra96-V2 (Vitis Edition) aus.
Installieren Sie Dropbox und führen Sie es unter Ubuntu 20.04 aus
Führen Sie einen Linux-Server mit GCP aus
Führen Sie XGBoost unter Bash unter Ubuntu unter Windows aus
Führen Sie den VMware Horizon Client unter Debian aus
[Hinweis] Führen Sie Django unter Amazon Linux 2 aus
Führen Sie Yocto unter Ubuntu mit QEMU aus.
Führen Sie cron unter Amazon Linux aus (unter Linux eingestellt).
Ubuntu Linux 20.04
Führen Sie X Window unter Debian GNU / Linux für Ultra96 / Ultra96-V2 (fbdev Edition) aus.
Führen Sie X Window unter Debian GNU / Linux für Ultra96 / Ultra96-V2 aus (Übersicht)
Wie installiere ich php7.4 unter Linux (Ubuntu)
Setzen Sie unter Ubuntu Linux Tab auf q
Führen Sie Linux mit ARM-Architektur mit QEMU aus
Kompilieren des Linux-Kernels (Linux 5.x unter Ubuntu 20.04)
Führen Sie XRT (Xilinx Runtime) unter Debian GNU / Linux für Ultra96 / Ultra96-V2 aus (Übersicht).
Installieren Sie Linux Debian auf der Registerkarte Pfeile Q584 / H.
Richten Sie golang mit goenv unter GNU / Linux ein
[Hinweis] Installieren Sie wxPython 3.x unter Linux Mint (Ubuntu)
Shebang auf Ubuntu 20.04
Linux (Ubuntu) Memo
So führen Sie MeCab unter Ubuntu 18.04 LTS Python aus
Führen Sie Tensorflow von Jupyter Notebook unter Bash unter Ubuntu unter Windows aus
Installieren Sie Apache 2.4 unter Ubuntu 19.10 Eoan Ermine und führen Sie CGI aus
Ich möchte OpenJDK 11 mit Ubuntu Linux 18.04 LTS / 18.10 verwenden
Installieren Sie Docker unter Arch Linux und führen Sie es remote aus
Multiplizieren Sie PDF mit OCR in der Befehlszeile unter Linux (Ubuntu).
Prozesse unter Linux dämonisieren
Installieren Sie TensorFlow unter Ubuntu
jblas unter Arch Linux
Linux (WSL) unter Windows
NAT-Router unter Linux
Führen Sie Django auf PythonAnywhere aus
Installieren Sie PySide2 unter Ubuntu
Führen Sie mysqlclient auf Lambda aus
Installieren Sie JModelica unter Ubuntu
Entwickeln Sie .NET unter Linux
Wake on Lan unter Linux
Führen Sie OpenMVG auf einem Mac aus
Überwachen Sie den Datenverkehr unter Linux
Aktualisieren Sie vscode unter Linux
Build Python auf Ubuntu
Installieren Sie Python 3.3 unter Ubuntu 12.04
Installation von pyenv unter Ubuntu 16.04