Exécutez bootgen sur Debian GNU / Linux, Ubuntu

introduction

bootgen est un outil de développement fourni par Xilinx qui intègre des fichiers binaires pour générer des images de démarrage de périphérique. Il est principalement utilisé aux fins suivantes.

  1. Générez une image de démarrage (boot.bin) pour un système sur puce (SoC) tel que Zynq ou ZynqMP Référence: ["Construire Debian GNU / Linux (version v2018.2) pour Ultra96 (BOOT.BIN)" @Qiita] [Construire BOOT.BIN]
  2. Convertissez le fichier bitstream (xxxx.bit) en fichier binaire (xxxx.bin) lors de la configuration de FPGA Référence: ["Exemple de configuration de FPGA avec Debian GNU / Linux (version v2018.2) pour UltraZed" @Qiita] Exemple de configuration

Pour plus d'informations sur bootgen, reportez-vous au [Guide de l'utilisateur de Bootgen] ug1283.

À propos, ce bootgen est un programme initialement inclus dans Xilinx Vivado et Xilinx SDK, et il ne fonctionne que dans l'environnement où Xilinx Vivado ou Xilinx SDK est installé pour s'exécuter. De plus, à partir de 2019.2, cela devenait gênant car le SDK Xilinx était intégré à Vitis et seul bootgen était installé séparément.

Heureusement, bootgen est disponible sur github par Xilinx.

Si vous construisez ceci, bootgen fonctionnera dans votre environnement préféré. Heureusement, cela fonctionne non seulement sur l'architecture x86 mais aussi sur l'architecture arm64, donc il sera introduit dans ["Fournir une image de démarrage pour Debian GNU / Linux (version v2019.1) pour UltraZed / Ultra96 / Ultra96-V2"] ZynqMP-FPGA-Linux. Dans un tel environnement, bootgen peut être exécuté sur la cible tel quel, ce qui est pratique. Cet article fournit un exemple de construction et d'exécution sur Debian GNU / Linux ou Ubuntu.

Comment construire et installer normalement

Préparation

Vous avez besoin du compilateur et d'OpenSSL v1.1.1 pour construire.

Lors de l'auto-compilation, vous devez installer l'environnement de développement OpenSSL dans l'environnement que vous créez. Pour Debian GNU / Linux et Ubuntu, utilisez apt install pour installer le paquet libssl-dev. Lors de la compilation croisée, il est nécessaire d'installer l'environnement de développement OpenSSL pour l'architecture cible dans l'environnement à générer, ce qui est inopinément gênant. Cet article ne traite pas de la compilation croisée.

Télécharger

Téléchargez (clonez) le référentiel github suivant.

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.

Construire

Vous pouvez généralement créer bootgen en exécutant la commande make.

shell# cd bootgen
shell# 
shell# make
  :
  (Omission)
  :
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

Copiez le bootgen intégré dans un emplacement de votre chemin d'exécution. Ici, il est copié dans / usr / local / bin.

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

Comment installer en tant que paquet Debian

Préparation

Vous avez besoin du compilateur et d'OpenSSL v1.1.1 pour construire. Vous avez également besoin de divers outils pour construire le paquet Debian.

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

Télécharger

Placez un référentiel qui fait de bootgen un paquet Debian à l'URL suivante. Ce référentiel est celui que j'ai créé sur https://github.com/Xilinx/bootgen et ajouté divers fichiers pour construire le paquet Debian. Notez que la branche est 2019.2-develop, pas 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.

Construire

Construisez le paquet Debian avec le binaire debian / rules.

shell$ cd bootgen
shell$ sudo debian/rules binary
  :
  (Omission)
  :
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'.

Si bootgen_2019.2-1_arm64.deb est créé dans le répertoire supérieur suivant, la construction est réussie.

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

Installez Debian Packege en utilisant 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                                        |
------------------------------------------------------------------------------+

référence

Recommended Posts

Exécutez bootgen sur Debian GNU / Linux, Ubuntu
Exécutez le pilote Lima sur Debian GNU / Linux pour Ultra96 / Ultra96-V2
Exécutez Debian (Linux) et LXQt sur Athlon 200GE (AMD)
Exécuter X Window sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (pilote vidéo)
Exécuter X Window sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (Gnome Desktop)
Exécutez XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (Installation)
Exécutez XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (Build)
Exécutez Jupyter sur Ubuntu sous Windows
Exécutez XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (Build) [Unfinished]
Exécutez XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (Installation) [Inachevé]
Linux sur Windows -1-: Présentation de Debian
Exécutez XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (édition Vitis)
Installez et exécutez Dropbox sur Ubuntu 20.04
Exécutez un serveur Linux avec GCP
Exécutez XGBoost sur Bash sur Ubuntu sous Windows
Exécutez le client VMware Horizon sur Debian
[Note] Exécutez Django sur Amazon Linux 2
Exécutez Yocto sur Ubuntu en utilisant QEMU.
Exécutez cron sur Amazon Linux (défini sur Linux)
Ubuntu Linux 20.04
Exécuter X Window sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (édition fbdev)
Exécuter X Window sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (présentation)
Comment installer php7.4 sur Linux (Ubuntu)
Sur Ubuntu Linux, définissez Tab sur q
Exécutez Linux avec l'architecture ARM à l'aide de QEMU
Compilation du noyau Linux (Linux 5.x sur Ubuntu 20.04)
Exécutez XRT (Xilinx Runtime) sur Debian GNU / Linux pour Ultra96 / Ultra96-V2 (Présentation)
Installer Linux Debian sur l'onglet Flèches Q584 / H
Configurer Golang avec goenv sur GNU / Linux
[Note] Installez wxPython 3.x sur Linux Mint (Ubuntu)
Shebang sur Ubuntu 20.04
mémo Linux (ubuntu)
Comment exécuter MeCab sur Ubuntu 18.04 LTS Python
Exécutez Tensorflow à partir de Jupyter Notebook sur Bash sur Ubuntu sous Windows
Installez Apache 2.4 sur Ubuntu 19.10 Eoan Ermine et exécutez CGI
Je souhaite utiliser OpenJDK 11 avec Ubuntu Linux 18.04 LTS / 18.10
Installez Docker sur Arch Linux et exécutez-le à distance
Multiplier PDF par OCR en ligne de commande sous Linux (Ubuntu)
Démoniser les processus sous Linux
Installez TensorFlow sur Ubuntu
jblas sur Arch Linux
Linux (WSL) sous Windows
Routeur NAT sur Linux
Exécutez Django sur PythonAnywhere
Installez PySide2 sur Ubuntu
Exécutez mysqlclient sur Lambda
Installez JModelica sur Ubuntu
Développer .NET sur Linux
Wake on LAN sous Linux
Exécutez OpenMVG sur Mac
Surveiller le trafic sous Linux
Mettre à jour vscode sur Linux
construire Python sur Ubuntu
Installez Python 3.3 sur Ubuntu 12.04
Installation de pyenv sur ubuntu 16.04