155 lines
4.8 KiB
BlitzBasic
155 lines
4.8 KiB
BlitzBasic
# DCM-Kernel - Saubere Version ohne Packaging-Konflikte
|
|
|
|
SUMMARY = "Linux Kernel für STM32MP157C DCM Board"
|
|
DESCRIPTION = "Angepasster Linux Kernel 6.6 für das DCM Board"
|
|
LICENSE = "GPL-2.0-only"
|
|
LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
|
|
|
|
# Standard Kernel-Klasse verwenden
|
|
inherit kernel
|
|
|
|
# Kernel-Version und Quelle
|
|
LINUX_VERSION = "6.6"
|
|
LINUX_SUBVERSION = ".48"
|
|
LINUX_TARGET = "stm32mp"
|
|
LINUX_RELEASE = "r1"
|
|
|
|
KERNEL_VERSION = "${LINUX_VERSION}${LINUX_SUBVERSION}"
|
|
PV = "${LINUX_VERSION}${LINUX_SUBVERSION}-${LINUX_TARGET}-${LINUX_RELEASE}"
|
|
|
|
# Git-Repository
|
|
SRCREV = "3682d604ecbdd233bb7e38b8e18f0496d78a8969"
|
|
SRC_URI = "git://github.com/STMicroelectronics/linux.git;protocol=https;branch=v6.6-stm32mp"
|
|
|
|
# DCM-spezifische Dateien
|
|
FILESEXTRAPATHS:prepend := "${THISDIR}/linux-stm32mp:"
|
|
SRC_URI += "file://fragment-01-dcm.config"
|
|
SRC_URI += "file://0002-fix-stm32-rifsc-debugfs.patch"
|
|
SRC_URI += "file://0003-fix-atmel-isi-v4l2-api-compatibility.patch"
|
|
SRC_URI += "file://0004-fix-microchip-isc-base-api-compatibility.patch"
|
|
|
|
S = "${WORKDIR}/git"
|
|
|
|
# Architektur und Maschine - strikt begrenzt
|
|
COMPATIBLE_MACHINE = "stm32mp157c-dcm"
|
|
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
|
|
|
# Kernel-Konfiguration
|
|
KERNEL_DEFCONFIG = "stm32_defconfig"
|
|
KERNEL_CONFIG_FRAGMENTS:append = " ${WORKDIR}/fragment-01-dcm.config"
|
|
|
|
# Nur uImage - WICHTIG: Verhindert zImage-Paket-Erstellung
|
|
KERNEL_IMAGETYPE = "uImage"
|
|
KERNEL_IMAGETYPES = "uImage"
|
|
KERNEL_ALT_IMAGETYPE = ""
|
|
|
|
# Keine Device Trees
|
|
KERNEL_DEVICETREE = ""
|
|
|
|
# U-Boot-Parameter
|
|
UBOOT_ENTRYPOINT = "0xC2000040"
|
|
UBOOT_LOADADDRESS = "0xC2000040"
|
|
KERNEL_EXTRA_ARGS += "LOADADDR=${UBOOT_LOADADDRESS}"
|
|
|
|
# Dependencies
|
|
DEPENDS += "u-boot-tools-native"
|
|
DEPENDS += "rsync-native"
|
|
|
|
# Package-Name
|
|
# PN = "linux-stm32mp-dcm"
|
|
|
|
# Provides - minimal
|
|
# PROVIDES += "kernel-headers"
|
|
|
|
# Explizite Paket-Kontrolle
|
|
# PACKAGES = "${PN} ${PN}-dev ${PN}-dbg kernel-image kernel-headers"
|
|
|
|
# Kernel-Module explizit bereitstellen
|
|
# RPROVIDES:${PN} += "kernel-modules"
|
|
# RPROVIDES:${PN} += "kernel-headers"
|
|
|
|
# Standard-Kernel-Module-Verhalten wiederherstellen
|
|
# FILES:kernel-modules = "/lib/modules/${KERNEL_VERSION}/kernel"
|
|
# RDEPENDS:kernel-modules = "${PN}"
|
|
|
|
# Verhindere automatische zImage-Paket-Erstellung
|
|
python __anonymous() {
|
|
# Entferne zImage aus KERNEL_IMAGETYPES falls vorhanden
|
|
imagetypes = d.getVar('KERNEL_IMAGETYPES') or ""
|
|
imagetypes = imagetypes.replace('zImage', '').strip()
|
|
d.setVar('KERNEL_IMAGETYPES', imagetypes)
|
|
|
|
# Setze KERNEL_IMAGETYPE explizit
|
|
d.setVar('KERNEL_IMAGETYPE', 'uImage')
|
|
}
|
|
|
|
# DTS-Vorbereitung
|
|
do_prepare_dts() {
|
|
bbplain "Bereite DCM DTS vor..."
|
|
|
|
mkdir -p ${S}/arch/arm/boot/dts/st
|
|
|
|
if [ -f ${THISDIR}/linux-stm32mp/stm32mp157c-dcm.dts ]; then
|
|
bbplain "Kopiere DCM DTS-Datei"
|
|
cp -f ${THISDIR}/linux-stm32mp/stm32mp157c-dcm.dts ${S}/arch/arm/boot/dts/st/
|
|
else
|
|
bbfatal "DCM DTS-Datei nicht gefunden"
|
|
fi
|
|
|
|
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 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
|
|
fi
|
|
fi
|
|
}
|
|
|
|
addtask prepare_dts after do_patch before do_configure
|
|
|
|
# Explizite uImage-Erstellung
|
|
do_compile:append() {
|
|
bbplain "Erstelle uImage explizit"
|
|
|
|
if [ -f "${B}/arch/arm/boot/zImage" ]; then
|
|
bbplain "Erstelle uImage aus zImage"
|
|
|
|
mkimage -A arm -O linux -T kernel -C none \
|
|
-a ${UBOOT_LOADADDRESS} -e ${UBOOT_ENTRYPOINT} \
|
|
-n "Linux Kernel ${KERNEL_VERSION}" \
|
|
-d ${B}/arch/arm/boot/zImage \
|
|
${B}/arch/arm/boot/uImage
|
|
|
|
if [ -f "${B}/arch/arm/boot/uImage" ]; then
|
|
bbplain "uImage erfolgreich erstellt"
|
|
else
|
|
bbfatal "uImage-Erstellung fehlgeschlagen"
|
|
fi
|
|
else
|
|
bbfatal "zImage nicht gefunden für uImage-Erstellung"
|
|
fi
|
|
}
|
|
|
|
# QA-Überprüfungen - alle problematischen unterdrücken
|
|
INSANE_SKIP:${PN} += "buildpaths packages-list installed-vs-shipped"
|
|
INSANE_SKIP += "installed-vs-shipped"
|
|
INSANE_SKIP:kernel-image += "packages-list"
|
|
INSANE_SKIP:kernel-headers += "packages-list"
|
|
|
|
# Oder alle QA-Checks für dieses Paket deaktivieren
|
|
# ERROR_QA:remove = "installed-vs-shipped"
|
|
# WARN_QA:remove = "installed-vs-shipped"
|
|
|
|
# Nur diese Zeilen am Ende hinzufügen:
|
|
RPROVIDES:${PN}-dev += "kernel-headers"
|
|
PROVIDES += "kernel-headers"
|
|
|
|
# Headers-Paket explizit erstellen
|
|
PACKAGES += "kernel-headers"
|
|
FILES:kernel-headers = "${includedir}/*"
|
|
RPROVIDES:kernel-headers = "kernel-headers"
|
|
|
|
# STM32MP-spezifische Pakete bereitstellen
|
|
RPROVIDES:${PN} += "kernel-imagebootfs"
|
|
PACKAGES += "kernel-imagebootfs"
|
|
FILES:kernel-imagebootfs = ""
|