137 lines
4.6 KiB
Plaintext
137 lines
4.6 KiB
Plaintext
# Speichere diese Datei als:
|
|
# /home/mf/Yocto/DCM/layers/meta-dcm/recipes-kernel/linux/linux-stm32mp-dcm_%.bbappend
|
|
|
|
# Überschreibe die problematische do_compile-Funktion vollständig
|
|
do_compile() {
|
|
bbplain "Verwende angepasstes do_compile für DCM-Board"
|
|
|
|
# Verwende Standard-Build-Verzeichnis
|
|
BUILD_DIR="${B}"
|
|
KERNEL_SRC="${S}"
|
|
|
|
# Ermittle Anzahl der Kerne für parallele Kompilierung
|
|
PARALLEL_JOBS="${@oe.utils.cpu_count()}"
|
|
|
|
# Baue Kernel und DTBs in einem Schritt
|
|
cd ${KERNEL_SRC}
|
|
bbplain "Baue Kernel und DTBs parallel mit ${PARALLEL_JOBS} Jobs..."
|
|
make O=${BUILD_DIR} ARCH=arm CROSS_COMPILE=${TARGET_PREFIX} -j ${PARALLEL_JOBS} zImage dtbs
|
|
|
|
# Überprüfe Erfolg
|
|
if [ -f "${BUILD_DIR}/arch/arm/boot/zImage" ]; then
|
|
bbplain "Kernel-Image erfolgreich erstellt!"
|
|
else
|
|
bbfatal "Fehler beim Erstellen des Kernel-Images!"
|
|
fi
|
|
|
|
# Überprüfe DTB
|
|
if [ -f "${BUILD_DIR}/arch/arm/boot/dts/st/stm32mp157c-dcm.dtb" ]; then
|
|
bbplain "DTB erfolgreich erstellt!"
|
|
else
|
|
bbwarn "DTB wurde nicht erstellt. Prüfe, ob deine DTS-Datei korrekt ist."
|
|
fi
|
|
}
|
|
|
|
# Funktion zum Hinzufügen unserer DTS
|
|
do_prepare_dts() {
|
|
# Überprüfe die Verzeichnisstruktur
|
|
bbplain "Kernel-Quellverzeichnis: ${S}"
|
|
|
|
# Erstelle das ST-Verzeichnis im Kernel-Quellverzeichnis
|
|
mkdir -p ${S}/arch/arm/boot/dts/st
|
|
|
|
# Kopiere unsere DTS-Datei in das Kernel-Quellverzeichnis
|
|
if [ -f ${TOPDIR}/../layers/meta-dcm/recipes-kernel/linux/linux-stm32mp/stm32mp157c-dcm.dts ]; then
|
|
bbplain "Kopiere DTS-Datei ins Kernel-Quellverzeichnis"
|
|
cp -f ${TOPDIR}/../layers/meta-dcm/recipes-kernel/linux/linux-stm32mp/stm32mp157c-dcm.dts ${S}/arch/arm/boot/dts/st/
|
|
|
|
# Überprüfe Erfolg
|
|
if [ -f "${S}/arch/arm/boot/dts/st/stm32mp157c-dcm.dts" ]; then
|
|
bbplain "DTS-Datei erfolgreich kopiert"
|
|
else
|
|
bbfatal "Fehler beim Kopieren der DTS-Datei"
|
|
fi
|
|
else
|
|
bbfatal "DTS-Datei nicht gefunden!"
|
|
fi
|
|
|
|
# Aktualisiere die Makefile
|
|
if [ -f ${S}/arch/arm/boot/dts/st/Makefile ]; then
|
|
if ! grep -q "stm32mp157c-dcm.dtb" ${S}/arch/arm/boot/dts/st/Makefile; then
|
|
bbplain "Füge stm32mp157c-dcm.dtb zur Makefile hinzu"
|
|
sed -i 's/stm32mp157c-dk2.dtb \\/stm32mp157c-dk2.dtb \\\n\tstm32mp157c-dcm.dtb \\/g' ${S}/arch/arm/boot/dts/st/Makefile
|
|
else
|
|
bbplain "stm32mp157c-dcm.dtb ist bereits in der Makefile enthalten"
|
|
fi
|
|
else
|
|
bbwarn "Makefile nicht gefunden im ST-Verzeichnis"
|
|
fi
|
|
|
|
# Überprüfe, ob stm32mp157.dtsi existiert
|
|
if [ ! -f "${S}/arch/arm/boot/dts/st/stm32mp157.dtsi" ]; then
|
|
bbplain "stm32mp157.dtsi nicht gefunden, suche im Kernel-Quellbaum..."
|
|
DTSI_FILES=$(find ${S} -name "stm32mp157.dtsi")
|
|
|
|
if [ -n "$DTSI_FILES" ]; then
|
|
DTSI_FILE=$(echo "$DTSI_FILES" | head -1)
|
|
cp -f "$DTSI_FILE" ${S}/arch/arm/boot/dts/st/
|
|
bbplain "stm32mp157.dtsi kopiert nach ${S}/arch/arm/boot/dts/st/"
|
|
else
|
|
bbwarn "stm32mp157.dtsi nicht gefunden, erstelle eine Dummy-Version"
|
|
|
|
# Erstelle eine minimale stm32mp157.dtsi
|
|
cat > ${S}/arch/arm/boot/dts/st/stm32mp157.dtsi <<EOF
|
|
// Minimale stm32mp157.dtsi
|
|
/ {
|
|
compatible = "st,stm32mp157";
|
|
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
|
|
// Minimale Definitionen für einen gültigen Device Tree
|
|
cpus {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
cpu0: cpu@0 {
|
|
compatible = "arm,cortex-a7";
|
|
device_type = "cpu";
|
|
reg = <0>;
|
|
};
|
|
};
|
|
|
|
soc {
|
|
compatible = "simple-bus";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
};
|
|
};
|
|
EOF
|
|
bbplain "Dummy stm32mp157.dtsi erstellt"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# Führe die DTS-Vorbereitung vor der Konfiguration aus
|
|
addtask prepare_dts before do_configure after do_patch
|
|
|
|
# Überschreibe die Installation, um zusätzliche DTBs zu installieren
|
|
do_install:append() {
|
|
# Stelle sicher, dass unsere DTBs installiert werden
|
|
DTB_PATH="${B}/arch/arm/boot/dts/st/stm32mp157c-dcm.dtb"
|
|
if [ -f "$DTB_PATH" ]; then
|
|
install -d ${D}/${KERNEL_IMAGEDEST}
|
|
install -m 0644 $DTB_PATH ${D}/${KERNEL_IMAGEDEST}/
|
|
else
|
|
bbwarn "DTB nicht gefunden: $DTB_PATH"
|
|
fi
|
|
}
|
|
|
|
# Deaktiviere einzelne DTB-Builds, um Fehler zu vermeiden
|
|
KERNEL_DTB_LINK_NAME = ""
|
|
|
|
# Setz SCMVERSION auf "n", damit .scmversion nicht verwendet wird
|
|
SCMVERSION = "n"
|
|
|
|
# Unterdrücke QA-Warnung für buildpaths
|
|
INSANE_SKIP:${PN}-src += "buildpaths"
|