359
Bearbeitungen
Cfr34x (Diskussion | Beiträge) (Erste Schritte) |
Cfr34x (Diskussion | Beiträge) (Generell erweitert) |
||
* Bitfile soll aus dem Linux in die programmierbare Logik (PL) geladen werden können (nicht nur im FSBL!)
Der erste Versuch erfolgt auf einem Zybo-Board.
== Status▼
▲== Status ==
* Linux läuft mit openSUSE-Userspace \o/
== Installationsanleitung ==
* [https://github.com/Xilinx/linux-xlnx linux-xlnx] (getesteter Commit: 047a00be376f4aa99d4c0b2f8937fb7c8fbf5272)
* [https://github.com/Xilinx/u-boot-xlnx u-boot-xlnx] (getesteter Commit: 21812b5fd359d8756d619a15b49b6079ae3f9f36)
Weiteres:
* Linux-Userspace: hier kann im Prinzip jede armv7-kompatible Distribution verwendet werden. Wir haben einen aktuellen Snapshot (vom 06. Mai 2018) von OpenSUSE Tumbleweed verwendet: [http://download.opensuse.org/ports/armv7hl/tumbleweed/images/openSUSE-Tumbleweed-ARM-JeOS.armv7-rootfs.armv7l-Current.tar.xz rootfs-Download]
Für Vivado kann folgendes Wrapper-Skript (''vivado_2018.1'') verwendet werden:
<nowiki>#!/bin/bash
cmd=$@
while [ ! -z "$1" ]
do
shift
done
source /opt/Xilinx/Vivado/2018.1/settings64.sh
exec $cmd</nowiki>
Der Aufruf von Vivado erfolgt dann mit
vivado_2018.1 vivado
=== Bauen von U-Boot ===
<nowiki>git clone https://github.com/Xilinx/u-boot-xlnx.git
cd u-boot-xlnx</nowiki>
Hier wird ein Wrapper-Skript für ''make'' erstellt, das dafür sorgt, dass die richtige Umgebung für Cross-Kompilierung verwendet wird. Das folgende Skript sollte ''make_wrap_zynq.sh'' heißen:
<nowiki>#!/bin/sh
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
make $@</nowiki>
Wir laden eine Standardkonfiguration...
./make_wrap_zynq.sh zynq_zybo_config
... und kompilieren diese (mit 4 parallelen Prozessen):
./make_wrap_zynq.sh -j4
Dies erstellt folgende relevante Ausgabedateien:
* ''spl/boot.bin'': der first-stage bootloader (FSBL) für den Zynq + u-boot-SPL
* ''u-boot.img'': das eigentliche u-boot-Binary
=== Bauen des Linux-Kernels ===
<nowiki>git clone https://github.com/Xilinx/linux-xlnx.git
cd linux-xlnx</nowiki>
Hier wird wieder ein Wrapper-Skript ''make_wrap_zynq.sh'' erstellt. Zu beachten ist, dass der Pfad zu den ''u-boot''-Tools angegeben werden muss:
<nowiki>#!/bin/sh
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH="/home/thomas/Software/u-boot-xlnx/tools/:$PATH"
make LOADADDR=0x8000 $@</nowiki>
Wir laden eine Standardkonfiguration...
./make_wrap_zynq.sh zynq_zybo_defconfig
... kompilieren diese (mit 4 parallelen Prozessen) ...
./make_wrap_zynq.sh -j4
... und installieren die Module in einen temporären Ordner:
./make_wrap_zynq.sh INSTALL_MOD_PATH=/tmp/zynq_modules modules_install
|
Bearbeitungen