Yocto Linux Kernel development
Introduction
This guide helps you develop and customise the Linux kernel for ADSP-SC5xx processors. Whether you’re debugging driver issues, adding new hardware support, or optimizing performance, this page walks you through compiling and rebuilding the kernel outside of the full Yocto build system.
While Yocto automates the entire build process, direct kernel development allows for faster iteration during development. You can quickly compile changes, test them on your hardware, and integrate them back into your Yocto layer once they’re stable.
What you’ll learn:
How to obtain and compile the ADSP Linux kernel source
Building kernel images and device trees for different boards
Creating fitImage boot files with your custom kernel
Integrating your changes back into Yocto
Prerequisites
Before starting kernel development, ensure you have:
Cross-compilation toolchain installed (from the SDK or your host package manager)
Basic understanding of Linux kernel development concepts
Minimal build requirements: kernel.org build requirements
Additional kernel development resources:
ADSP Linux Kernel
Obtain kernel sourcecode
git clone https://github.com/analogdevicesinc/lnxdsp-linux.git
Build
default configuration for SC598
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make sc598-som-ezkit_defconfig
default configuration for SC589-mini
ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make sc589-mini_defconfig
compile kernel device tree and kernel image for SC598
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make -j`nproc` Image.gz modules dtbs
compile kernel device tree and kernel image for SC589
ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make -j`nproc` zImage modules dtbs
Rebuild fitImage
Currently, the default boot format used is fitImage. Here is shared example how to rebuild fitImage with newly compiled kernel.
mkdir new_fit_image
cd new_fit_image
cp <buildir>/tmp/deploy/images/adsp-sc598-som-ezkit/fit-image.its ./
cp <buildir>/tmp/deploy/images/adsp-sc598-som-ezkit/adsp-sc5xx-ramdisk-adsp-sc598-som-ezkit.cpio.gz ./
cp <kernel_buildir>/arch/arm64/boot/dts/adi/sc598-som-ezkit.dtb ./
cp <kernel_buildir>/arch/arm64/boot/Image.gz ./
mkimage -f fit-image.its fitImage
boot fitImage with your preferred boot method.
Notes
kernel modules compiled need to be copied to filesystem in use, if NFS boot is used copy NFS boot directory
after changes/modifications to kernel is done create a patch and add to your yocto layer or create custom repository and point recipe to that
apply required patches from meta-adi Yocto layer kernel recipe