Zynq - Boot: Unterschied zwischen den Versionen
Nick (Diskussion | Beiträge) |
Nick (Diskussion | Beiträge) |
||
| Zeile 87: | Zeile 87: | ||
image.ub #device tree, kernel und rootfs | image.ub #device tree, kernel und rootfs | ||
== TFTP-Server == | === TFTP-Server === | ||
TFTP-Server starten danach den Zynq mit Ethernet starten. | TFTP-Server starten danach den Zynq mit Ethernet starten. | ||
*TFTP-Server [https://wiki.xnick.de/index.php/Python_-_PyPXE_Server Python - PyPXE Server] | *TFTP-Server [https://wiki.xnick.de/index.php/Python_-_PyPXE_Server Python - PyPXE Server] | ||
Version vom 3. September 2021, 07:04 Uhr
JTAG boot
- Mit XSCT Konsole
- Mit petalinux
petalinux-boot --jtag --u-boot # Upload von fsbl, devicetree, u-boot
petalinux-boot --jtag --kernel # Upload von fsbl.elf, system.dtb (devicetree),
u-boot.elf, uImage, rootfs.cpio.gz.u-boot, boot.scr
SD-Card boot
- Vorbereiten der SD-Karte für Boot
BOOT.bin
Erstellen BOOT.bin (fpga, fsbl, u-boot):
petalinux-package --boot --fsbl images/linux/fsbl.elf --u-boot images/linux/u-boot.elf --fpga images/linux/design_minimal_wrapper.bit
Auf SD-Karte kopieren.
Linux
Nötige Daten zum booten von Linux mit der SD-Karte:
images/linux/BOOT.bin #fpga, fsbl, u-boot images/linux/boot.src #boot script
Zusätzlich Variante 1 oder Variante 2 auf SD-Karte kopieren.
- Variante 1: (Flattened Image Tree)
images/linux/image.ub #device tree, kernel und rootfs
- Variante 2:
images/linux/system.dtb #device tree images/linux/uImage #kernel images/linux/rootfs.cpio.gz.u-boot #rootfs
TFTP-Boot
Für TFTP-boot muss der Zynq erst fsbl und u-boot laden, entweder über SD-Karte, Flash oder JTAG. Das u-boot lädt die Dateien übers Netzwerk vom TFTP-Server.
Das U-Boot Bootskript boot.scr enthält die Downloadanleitung für das u-boot:
Variante 1: (Flattened Image Tree)
echo
echo *********************
echo Load and program FPGA
echo *********************
setenv loadbit_addr_r 0x1000000
tftpboot ${loadbit_addr_r} 1_design_minimal_wrapper.bit
fpga loadb 0 ${loadbit_addr_r} ${filesize}
echo
echo ****************
echo Load Linux files
echo ****************
setenv image_addr_r 0x10000000
tftpboot ${image_addr_r} image.ub
echo
echo **************
echo Starting Linux
echo **************
bootm ${image_addr_r}
Mit mkimage das boot.scr.uimg erzeugen:
mkimage -A arm -O linux -T script -C none -n boot.scr -d boot.scr boot.scr.uimg
Neben dem boot.scr.uimg müssen zusätzlich folgende Dateien im TFTP-Server Verzeichniss liegen:
system.dtb #device tree uImage #kernel rootfs.cpio.gz.u-boot #rootfs
Variante 2:
echo
echo *********************
echo Load and program FPGA
echo *********************
setenv loadbit_addr_r 0x1000000
tftpboot ${loadbit_addr_r} 1_design_minimal_wrapper.bit
fpga loadb 0 ${loadbit_addr_r} ${filesize}
echo
echo ****************
echo Load Linux files
echo ****************
setenv fdt_addr_r 0x1f00000
setenv kernel_addr_r 0x2000000
setenv ramdisk_addr_r 0x3100000
tftpboot ${fdt_addr_r} 3_devicetree.dtb
tftpboot ${kernel_addr_r} 4_uImage
tftpboot ${ramdisk_addr_r} 5_rootfs.cpio.gz.u-boot
echo
echo **************
echo Starting Linux
echo **************
bootm ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
Mit mkimage das boot.scr.uimg erzeugen:
mkimage -A arm -O linux -T script -C none -n boot.scr -d boot.scr boot.scr.uimg
Neben dem boot.scr.uimg muss zusätzlich folgende Datei im TFTP-Server Verzeichniss liegen:
image.ub #device tree, kernel und rootfs
TFTP-Server
TFTP-Server starten danach den Zynq mit Ethernet starten.
- TFTP-Server Python - PyPXE Server
- TFTP-Server Windows
Probleme
| Fehler | Lösung |
|---|---|
|
Upload fsbl.elf und u-boot.elf |
Die Ausgabe vom u-boot.elf erfolgt über UART 1 (nicht UART 0) |