# 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 = ""