sof/zephyr
Tomasz Leman 71fd3b34ea zephyr: power: preventing lower power states
D3 (PM_STATE_SOFT_OFF) state can be only entered after IPC request from
host. That why this prevent should be permanent.

D0i3 (PM_STATE_RUNTIME_IDLE) can be entered if host allows it and under
special conditions. State is prevented by default. Host will remove this
prevent with dedicated IPC message.

Signed-off-by: Tomasz Leman <tomasz.m.leman@intel.com>
2022-11-04 20:48:41 +02:00
..
include zephyr: cpu: moving outside of the wrapper 2022-10-26 13:27:25 +01:00
CMakeLists.txt Introduce Zephyr DMA domain as experimental feature 2022-11-02 12:34:34 +00:00
FindZephyr-sdk.cmake .github: de-hardcode zephyr SDK version in sparse build 2022-10-10 11:29:05 +01:00
Kconfig Introduce Zephyr DMA domain as experimental feature 2022-11-02 12:34:34 +00: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: move exec_as_sof_uid() to new sudo-cwd.sh 2022-10-10 11:29:05 +01:00
docker-run.sh zephyr/docker-run.sh: log all '*zephyr*' images and align columns 2022-10-10 11:29:05 +01:00
edf_schedule.c zephyr: edf-schedule: (cosmetic) make two variables static 2022-10-03 12:23:39 +03: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: power: preventing lower power states 2022-11-04 20:48:41 +02: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.