.. _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 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``. Note that the ``/dev/hda`` device file created by the diagnostic driver must be readable and writable by the process. This can be accomplished via a simple chmod, via a udev handler that associates the device with a particular user or group, or simply by running the loader script as root: .. code-block:: console $ sudo chmod 777 /dev/hda $ boards/xtensa/intel_adsp_cavs15/tools/fw_loader.py -f Debugging ========= The only way to debug application is using logging. Logging and ADSP logging backend needs to be enabled in the application configuration. ADSP logging backend writes logs to the ring buffer in the shared memory. As above, the ``adsplog`` tool requires appropriate permissions, in this case to the sysfs "resource4" device on the appropriate PCI device. This can likewise be managed via any filesystem, setuid or udev trick the operator prefers. .. code-block:: console $ boards/xtensa/intel_adsp_cavs15/tools/adsplog.py ERROR: Cannot open /sys/bus/pci/devices/0000:00:0e.0/resource4 for reading $ sudo chmod 666 /sys/bus/pci/devices/0000:00:0e.0/resource4 $ boards/xtensa/intel_adsp_cavs15/tools/adsplog.py Hello World! intel_adsp_cavs15 Integration Testing With Twister ================================ The ADSP hardware also has integration for testing using the twister tool. The ``adsplog`` 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. Remember to pass the ``--no-history`` argument to ``adsplog.py``, because by default it will dump the current log buffer, which may contain output from a previous test run. .. code-block:: console $ZEPHYR_BASE/scripts/twister --device-testing -p intel_adsp_cavs15 \ --device-serial-pty $ZEPHYR_BASE/boards/xtensa/intel_adsp_cavs15/tools/adsplog.py,--no-history \ --west-flash $ZEPHYR_BASE/boards/xtensa/intel_adsp_cavs15/tools/flash.sh,$PATH_TO_KEYFILE.pem .. 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