Application Layer

Application Layer represents the built-in FW modules (processing components), loadable FW modules and example templates with application libraries required for modules integration. Application layer content is assumed to be open source and only proprietary 3rd party components should remain private.


scale max 1280 width

package "SOF" {

  package "Application layer" as APP_CUSTOMIZATION {

    package "Example Loadable Module" as LOADABLE_MODULE {
      component "3rd Party Post-Processing" as PROCESSING_3RD_PARTY
      component "WoV" as WOV_MODULE
      component "ACA" as ACA_MODULE
      component "Other modules" as OTHER_MODULES

      PROCESSING_3RD_PARTY -[hidden]right- WOV_MODULE
      WOV_MODULE -[hidden]right- ACA_MODULE
      ACA_MODULE -[hidden]right- OTHER_MODULES

    package "Built-in Module" as BUILTIN_MODULE {
      component "Copier" as COPIER
      component "SRC" as SRC
      component "Mixers" as MIXERS
      component "History Buffer/KPB" as HISTORY_BUFFER
      component "Probe" as PROBE

      COPIER -[hidden]right- SRC
      SRC -[hidden]right- MIXERS
      MIXERS -[hidden]right- HISTORY_BUFFER
      HISTORY_BUFFER -[hidden]right- PROBE


  package "System Services" as SYS_SERVICES {

    interface "System Services" as SS

    package "Media Processing Pipelines Services extension" as KERNEL_EXTENSION {
        component "Communication" as COMMUNICATION
        component "Pipelines and Component Infrastructure" as PIPELINE_COMPONENT_INFRASTRUCTURE
        component "AVS Scheduling" as AVS_SCHEDULERS


    package "Zephyr" as ZEPHYR {
        component "Services" as SERVICES

    SS -[hidden]down- KERNEL_EXTENSION
    SS -[hidden]down- ZEPHYR

    KERNEL_EXTENSION -[hidden]right- ZEPHYR

  WOV_MODULE .down. SS
  ACA_MODULE .down. SS


Figure 43 Application Layer

Modules in Application Layer

The built-in modules are built together with base firmware and they have direct access to all firmware drivers and service APIs. When built-in module is enabled in configuration, it is guaranteed to exist in firmware binary.

The loadable modules are built separately from base firmware and they are loaded dynamically as a separate binary, depending on the host audio configuration. To build, use LMDK(Loadable Module Development Kit) which is standalone kit containing all required files.

All the application layer module access base firmware services are via the System Services ABI.

NOTE: The built-in modules are utility components provided by the base firmware/kernel.

Examples of built-in modules:

  • Audio built-in components: Copiers, Mixers, Volume, SRC, etc.

Example how to build a loadable module:


The probe module is special module in FW infrastructure that allows to inject or extract data from a specified probe point. The traditional client platforms use HDA DMAs to transfer data in and out of such module.

Loadable Modules

The loadable modules are build into separate binaries from the main SOF build. To communicate with them is used native system agent and to control is used module api Component & Module Interfaces.