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.
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.
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é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.
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
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
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)
:
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.
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
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 |
------------------------------------------------------------------------------+
Recommended Posts