sof/zephyr
Dobrowolski, PawelX 2cdf38c47e module_adapter: native_system_agent: Introduce call and interface
This is part of fw which helps loaded module in communication with adsp
Also it provides basic operations for creation of component driver
Common part for native loadable modules and iadk is put together and
remade into native API. That way system services are using generic
methods defined in native system service.

Signed-off-by: Dobrowolski, PawelX <pawelx.dobrowolski@intel.com>
2023-07-12 16:41:18 +01:00
..
include ipc4: zephyr: remove useless member in struct sof for native driver 2023-07-11 13:55:01 +01:00
lib platform: ace: Add pm notifiers to support Zephyr's D3 transition 2023-06-28 15:32:16 +03:00
scripts xtensa-build-zephyr.py: add new rimage_west_configuration() 2023-05-26 10:47:51 +03:00
CMakeLists.txt module_adapter: native_system_agent: Introduce call and interface 2023-07-12 16:41:18 +01:00
FindZephyr-sdk.cmake .github: de-hardcode zephyr SDK version in sparse build 2022-10-10 11:29:05 +01:00
Kconfig zephyr_dma_domain: Give semaphore resources based on sched_comp's state upon cancel 2023-05-16 14:01:23 +03:00
README zephyr: replace obsolete README section with link to sof-docs 2022-02-07 10:43:28 +00:00
docker-build.sh zephyr/docker-build.sh: upgrade CMake to 3.21 or above 2022-12-16 15:19:44 -08:00
docker-run.sh workflows: Zephyr build-linux upgraded Docker container with Zephyr SDK 2023-05-20 01:45:42 +03:00
edf_schedule.c schedule: remove schedule_task_complete() 2023-03-06 12:14:14 +00:00
lib.c zephyr: Add zephyr lib.c standalone file 2022-11-11 15:57:50 +02:00
module.yml zephyr: module: point to where the app is 2022-07-18 14:22:01 +01:00
schedule.c header: rtos: use rtos specific version of alloc.h 2022-09-12 11:44:27 +01:00
wrapper.c zephyr: wrapper: halt the system in fatal error handler 2023-06-06 17:39:58 +03:00

README

SOF with Zephyr RTOS
====================

SOF currently uses the Cadence Xtos/HAL and it's own kernel functions as
its RTOS. SOF is moving to use Zephyr as it's RTOS in parallel to current
releases using xtos.

The initial "alpha" of SOF on Zephyr will use the Zephyr RTOS for boot, IRQs,
scheduling and memory allocation. Subsequent release will use more Zephyr
functionality as code is moved from SOF to Zephyr (i.e. EDF scheduler updates
copied from SOF to Zephyr).

Building SOF on Zephyr
======================

Section promoted to
https://thesofproject.github.io/latest/getting_started/build-guide/build-with-zephyr.html

Testing on Qemu
===============

Get the SOF qemu sof-v4.2 branch here.

git@github.com:thesofproject/qemu.git

Configure as

./configure' '--prefix=.' '--target-list=xtensa-softmmu,x86_64-softmmu' \
             '--enable-gtk' '--enable-sdl' '--enable-spice' \
             '--audio-drv-list=alsa' '--enable-libusb' \
             '--enable-usb-redir' '--enable-coroutine-pool' \
             '--disable-opengl' '--enable-fdt'

 Then run make.

FW can be tested as follows using the qemu helper script.

 ./xtensa-host.sh apl \
     -r ../../sof/sof/build_apl_gcc/src/arch/xtensa/rom-apl.bin \
     -k ../../zephyrproject/zephyr/build/zephyr/zephyr.ri

Where -r and -k are used to specify the ROM and kernel files.

The ROMS can be built from the SOF repo by running

./scripts/xtensa-build-all.sh  -r -a

Using console
-------------

Using logging and simulator backend with processing printk (LOG_PRINTK)
can bring console in qemu.

 - Enable xtensa simulator logging backend (LOG_BACKEND_XTENSA_SIM).
 - Enable printk processing(LOG_PRINTK)
 - Add "-semihosting" to qemu command line. Make sure it goes through scripts to real qemu.