The dante enablement project demostrates the pro audio Dante software running on TI ARM Cortex-A15 platformsa in loopback mode. There are 2 types of loopback in the demo: 1) ARM-only loopback: In this loopback type, audio samples received from network will loopback in ARM GPU and out to netowrk. 2) DSP loopback: In DSP loopback, the audi samples will be offloaded to DSP and loopback in DSP back to ARM GPU, then out to network There are 5 patch files provided: - Patch 1 is needed by the DEP container. - Patches 2 through 4 are needed for kernel optimizations for interrupt pacing, and additional overhead removal for the scheduling - Patch 5 is needed for the DSP loopback application. 1) 0001-linux-KConfig-Enable-Dante-required-CGROUP-and-Names.patch Dante Enabled Platform (DEP) container requires RT-Linux and CGROUP and Namespace support. Hence, this patch file reflects the needed features in RT-Linux kernel which are not included in the default setting. The change is based on kernel 4.19.59 (Linux Processor SDK 06.01 release). RT-Linux kernel needs to rebuilt after the patch file is applied. 2) 0002-k2g-defconfig-disable-RPS-and-XPS.patch k2g: defconfig: disable RPS and XPS 3) 0003-soc-ti-knav_qmss-k2g-make-rx-tx-irq-no-thread-on-rt.patch Networking RX/TX IRQs are simple and used to schedule NAPI, so making them NOTHREAD allows to avoid additional scheduling IRQ |- threaded irq <--avoid |-schedule NAPI (ksoftirqd) 4) 0004-drivers-net-ethernet-ti-netcp_core.c-tx-tmr.patch This patch is needed for interrupt pacing enable for Transmit and Receive a. Apply patch to PLSDK: $ cd /board-support/linux-rt-[version] $ patch < 0001-linux-KConfig-Enable-Dante-required-CGROUP-and-Names.patch $ patch < 0002-k2g-defconfig-disable-RPS-and-XPS.patch $ patch < 0003-soc-ti-knav_qmss-k2g-make-rx-tx-irq-no-thread-on-rt.patch $ patch < 0004-drivers-net-ethernet-ti-netcp_core.c-tx-tmr.patch b. Rebuilt rt-linux Add the SDK's toolchain to the PATH environment variable and build the kernel image $ export PATH=/linux-devkit/sysroots/x86_64-arago-linux/usr/bin:$PATH $ cd /board-support/linux-rt- $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- tisdk_k2g-evm-rt_defconfig $ make -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage $ make -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules $ cd $ make cmem-mod $ make uio_module_drv Copy arch/arm/boot/zImage to the /boot/zImage on K2G SD card Install the Kernel modules onto SD card at rootfs mount point $make ARCH=arm INSTALL_MOD_PATH= modules_install Copy UIO driver module to the SD card in the rootfs $cp /board-support/extra-drivers/uio-module-drv/uio-module-drv.ko /lib/modules//extra/uio-module-drv.ko Copy CMEM driver module to the SD card in the rootfs $cp /board-support/extra-drivers/cmem-mod/module/cmemk.ko /lib/modules//extra/cmemk.ko Please see detailed build instruction in PLSDK Kernel User Guide: http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Foundational_Components_Kernel_Users_Guide.html 2) dante-loopback-dsp.patch This patch file is only needed if doing DSP loopback. This patch enables the offload of audio samples to DSP, and back to ARM GPU. The offload of audio samples allows further processing of audio samples in DSP core. The change is based on DEP 0.9 Beta release. a. Apply patch on DEP package installed on K2G # copy dante-loopback-dsp.patch to /home/root/dep # cd /home/root/dep/example # patch < -p5 dante-loopback-dsp.patch b. Build loopback example for ARM-only # cd /home/root/dep/example/audio # make clean # make 3. Build loopback example with DSP enablement # cd /home/root/dep/example/audio # make -f Makefile.opcl clean # make -f Makefile.opcl