blob: 835020d4c03c2de0a2712325f5d279587410284c [file] [log] [blame]
.. _Up_Squared_Audio_DSP:
Up Squared Audio DSP
####################
System Requirements
*******************
Prerequisites
=============
The Zephyr SDK 0.11 or higher is required.
Since firmware binary signing for Audio DSP is mandatory on Intel products
form Skylake onwards the signing tool and key are needed.
``up_squared`` board is running Linux with `SOF Diagnostic Driver`_ built and
loaded.
Signing tool
------------
rimage is Audio DSP firmware image creation and signing tool. The tool is used
by `Sound Open Firmware`_ to generate binary firmware signed images.
For the building instructions refer to `rimage Build Instructions`_.
Signing keys
------------
The key used is Intel Open Source Technology Center (OTC) community key.
It can be freely used by anyone and intended for firmware developers.
Please download and store private key from the location:
https://github.com/thesofproject/sof/blob/master/keys/otc_private_key.pem
For more information about keys refer to `rimage keys`_.
Setup up_squared board
----------------------
To setup Linux on ``up_squared`` board refer to
`Getting Started with Ubuntu Core on an UP Squared Board`_.
After installing Linux build and install `SOF Diagnostic Driver`_.
Programming and Debugging
*************************
Build Zephyr application
========================
Applications can be build in the usual way (see :ref:`build_an_application`
for more details). The only additional step required is signing. For example,
for building ``hello_world`` application following steps are needed.
#. Building Zephyr application ``hello_world``
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: intel_adsp_cavs15
:goals: build
#. Sign and create firmware image
.. code-block:: console
west sign -t rimage -- -k <path to otc_private_key.pem>
Loading image to Audio DSP
==========================
`SOF Diagnostic Driver`_ provide interface for firmware loading. Python tools
in the board support directory use the interface to load firmware to ``ADSP``.
Assume that the up_squared board's host name is ``cavs15`` (It also can be an
ip address), and the user account is ``user``. Then copy the python tool to the
``up_squared`` board from your build environment::
$ scp boards/xtensa/intel_adsp/tools/cavstool.py user@cavs15:
Note that the ``/dev/hda`` device file created by the diagnostic driver must
be readable and writable by the process. So we simply by running the
loader script as root:
.. code-block:: console
cavs15$ sudo ./cavstool.py
Cavstool_server.py is a daemon which accepts a firmware image from a remote host
and loads it into the ADSP. After successful firmware download, the daemon also
sends any log messages or output back to the client.
Running and Debugging
=====================
While the python script is running on ``up_squared`` board, you can start load
image and run the application by:
.. code-block:: console
west flash --remote-host cavs15
or
.. code-block:: console
west flash --remote-host 192.168.x.x
Then you can see the log message immediately:
.. code-block:: console
Hello World! intel_adsp_cavs15
Integration Testing With Twister
================================
The ADSP hardware also has integration for testing using the twister
tool. The ``cavstool_client.py`` script can be used as the
``--device-serial-pty`` handler, and the west flash script should take
a path to the same key file used above.
.. code-block:: console
./scripts/twister --device-testing -p intel_adsp_cavs15 \
--device-serial-pty $ZEPHYR_BASE/soc/xtensa/intel_adsp/tools/cavstool_client.py,cavs15,-l \
--west-flash "--remote-host=cavs15,--pty"
And if you install the SOF software stack in rather than the default path,
you also can specify the location of the rimage tool, signing key and the
toml config, for example:
.. code-block:: console
./scripts/twister --device-testing -p intel_adsp_cavs15 \
--device-serial-pty $ZEPHYR_BASE/soc/xtensa/intel_adsp/tools/cavstool_client.py,cavs15,-l \
--west-flash "--remote-host=cavs15,--pty\
--rimage-tool=/path/to/rimage_tool,\
--key=/path/to/otc_private_key.pem,\
--config-dir=/path/to/config_dir"
.. target-notes::
.. _Getting Started with Ubuntu Core on an UP Squared Board: https://software.intel.com/en-us/articles/getting-started-with-ubuntu-core-on-an-up-squared-board
.. _SOF Diagnostic Driver: https://github.com/thesofproject/sof-diagnostic-driver
.. _Sound Open Firmware: https://github.com/thesofproject/sof
.. _rimage Build Instructions: https://github.com/thesofproject/rimage#building
.. _rimage keys: https://github.com/thesofproject/sof/tree/master/rimage/keys