2020-04-20 18:31:11 +08:00
|
|
|
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
|
|
|
|
======================
|
|
|
|
|
2022-01-26 04:26:44 +08:00
|
|
|
Section promoted to
|
|
|
|
https://thesofproject.github.io/latest/getting_started/build-guide/build-with-zephyr.html
|
2020-04-20 21:29:03 +08:00
|
|
|
|
|
|
|
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
|
2020-04-22 00:59:08 +08:00
|
|
|
|
|
|
|
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.
|