sof/zephyr
Kai Vehmanen 9c9ad34464 zephyr: move Zephyr IDC implementation to zephyr_idc.c
SOF uses IDC (Intra DSP Communication) protocol to orchestrate
work across multiple DSP cores.

The interface in sof/drivers/idc.h defines the protocol and
also provides a high-level interface for drivers. On Zephyr,
the SOF IDC protocol is used, but the actual communication
is implemented on top of Zephyr P4WQ workqueue interface,
instead of directly calling into drivers.

Move the Zephyr implementation from src/schedule/ into
src/idc/ which is more suitable place for this code.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2022-05-06 10:21:00 +01:00
..
include/sof timer: Use Zephyr timer API 2022-03-16 12:02:29 +00:00
CMakeLists.txt zephyr: move Zephyr IDC implementation to zephyr_idc.c 2022-05-06 10:21:00 +01:00
Kconfig zephyr: enable cached heap by default for Intel cAVS platforms 2021-10-15 09:28:28 +01: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: match UID with 'adduser' instead of 'chgrp -R' 2022-04-26 22:08:53 +01:00
edf_schedule.c zephyr: (cosmetic) fix indentation 2021-09-07 13:34:31 +01:00
module.yml zephyr/module.yml: add URL, name: and comment out default values 2021-07-13 15:56:49 +01:00
schedule.c zephyr: schedule: enable multi-core scheduling 2021-05-05 11:03:35 +01:00
wrapper.c codec_adapter: rename DECLARE_CODEC_ADAPTER and comp_driver 2022-05-04 16:01:23 +01: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.