boards/intel/adsp/doc/intel_adsp_generic.html · boards/intel/adsp/doc/intel_adsp_generic.rst 공식 원문 ↗

Zephyr 3.7.0 · Boards · Intel ADSP

Intel ADSP cAVS와 ACE

Intel Audio DSP의 공통 build·sign·remote flash·debug 절차입니다.

Official pathboards/intel/adsp/doc/intel_adsp_generic.html
Source fileboards/intel/adsp/doc/intel_adsp_generic.rst
Source versionZephyr 3.7.0
TranslationFull · reviewed

본문 기준: Zephyr 3.7.0 LTS3 · 이후 유지보수 패치는 별도입니다.

Part 1

요약·해설

cAVS와 ACE 기반 Intel ADSP에서 Zephyr firmware를 build하고 SOF rimage로 서명해 local 또는 remote host에서 실행합니다.

Families

cAVS · ACE

Signing

SOF rimage

Remote ports

9999 log · 10000 requests

Part 2

접을 수 있는 영어 원문 전체

영어 원문 전체 펼치기
원문 SHA-256 CAD72B38B56BA7A5AE78D89027D174F3F172030D8FB9A26FC28752EB7CEE46F2
.. _intel_adsp_generic:

Intel ADSP cAVS and ACE
#######################

Intel's Audio and Digital Signal Processing (ADSP) hardware offerings
include the Converged Audio Voice Speech (cAVS) series and its successor,
the Audio and Context Engine (ACE). These Xtensa-based ADSPs can be integrated
into a variety of Intel products. The below table lists (some of) the Intel
microprocessor(s) that each version of the Intel ADSP is compatible with.

+----------+-----------------------------+
| ADSP     | Microprocessor              |
+==========+=============================+
| cAVS 1.5 | Apollo Lake                 |
+----------+-----------------------------+
| cAVS 1.8 | Whiskey Lake                |
+----------+-----------------------------+
| cAVS 2.5 | Tiger Lake                  |
+----------+-----------------------------+
| ACE 1.5  | Meteor Lake                 |
+----------+-----------------------------+

Intel open-sources firmware for its ADSP hardware under the Sound Open Firmware
(`SOF`_) project. SOF can be built with either Zephyr or Cadence's proprietary
Xtensa OS (XTOS) and run on a variety of Intel and non-Intel platforms.

The Intel `UP Xtreme`_ product line has the publicly
available reference boards for Zephyr's Intel ADSP support. This guide uses the
`UP Xtreme i11-0001 series`_ (:ref:`intel_adsp_cavs25`) board as an example.
However, the instructions are generic and will work on other boards unless
otherwise stated. You will be referred to the documentation for your specific
board in these cases.

System requirements
*******************

Setting Up Target Board
-----------------------

You can only flash Zephyr to the ADSP by using Zephyr's Python tool in a Linux
host running on the board's main CPU. It is possible (and recommended) for users
to build the binary locally on their development machine and flash remotely,
but the board itself must be capable of running the Python script that receives
the binary sent over the network by West and flashes it. You should install a
version of Linux that supports or comes with the current version of Python that
Zephyr requires. Consider using Ubuntu 20.04, which comes with Python 3.8
installed.

Note that if you plan to use SOF on your board, you will need to build and
install the modified Linux SOF kernel instead of the default kernel. It is
recommended you follow the `SOF instructions`_ to build and run SOF on Zephyr.

UP Xtreme users can refer to the `UP Community wiki`_ for help installing a
Linux operating system on their board.

Signing Tool
------------

As firmware binary signing is mandatory on Intel products from Skylake onwards,
you will also need to set up the SOF rimage signing tool and key.

.. code-block:: shell

   cd zephyrproject
   west config manifest.project-filter -- +sof
   west update
   cd modules/audio/sof/tools/rimage

Follow the instructions in the rimage :file:`README.md` to build the tool on
your system. You can either copy the executable to a directory in your PATH or
use ``west config rimage.path /path/to/rimage-build/rimage``; see more details
in the output of ``west sign -h``. Running directly from the build directory
makes you less likely to use an obsolete rimage version by mistake.

Platform-specific configuration files are located in the ``rimage/config/``
subdirectory. For a different configuration directory you can use:
``west config build.cmake-args -- -DRIMAGE_CONFIG_PATH=/path/to/my/rimage/config``.


Xtensa Toolchain (Optional)
---------------------------

The Zephyr SDK provides GCC-based toolchains necessary to build Zephyr for
the cAVS and ACE boards. However, users seeking greater levels of optimization
may desire to build with the proprietary Xtensa toolchain distributed by
`Cadence`_ instead. The following instructions assume you have purchased and
installed the toolchain(s) and core(s) for your board following their
instructions.

First, make sure to set the ``$HOME/.flexlmrc`` file or
``XTENSAD_LICENSE_FILE`` variable as instructed by Cadence.
Next, set the following environment variables:

.. code-block:: shell

   export XTENSA_TOOLCHAIN_PATH=$HOME/xtensa/XtDevTools/install/tools
   export XTENSA_BUILDS_DIR=$XTENSA_TOOLCHAIN_PATH/../builds
   export ZEPHYR_TOOLCHAIN_VARIANT=xcc
   export TOOLCHAIN_VER=RG-2017.8-linux
   export XTENSA_CORE=cavs2x_LX6HiFi3_2017_8

The bottom three variables are specific to each version of cAVS / ACE; refer to
your board's documentation for their values.

Programming and Debugging
*************************

Building
--------

Build as usual.

.. zephyr-app-commands::
   :zephyr-app: samples/hello_world
   :board: intel_adsp/cavs25
   :goals: build

Signing
-------

``west build`` tries to sign the binary at the end of the build. If you need
to sign the binary yourself, you can invoke ``west sign`` directly. Read the
``west`` logs to find the ``west sign`` invocation; you can copy and modify
the command logged for your own purposes. Run ``west sign -h`` for more
details.

The build tries to provide as many default rimage parameters are possible. If
needed, there are several ways to override them depending on your specific
situation and use case. They're often not mutually exclusive but to avoid
undocumented rimage precedence rules it's best to use only one way at a time.

- For local, interactive use prefer ``rimage.extra-args`` in west config, see
  ``west sign -h``. The WEST_CONFIG_LOCAL environment variable can point at a
  different west configuration file if needed.

- You can add or overwrite a ``$platform.toml`` file(s) in your
  ``rimage/config/`` directory

- For board-specific needs you can define WEST_SIGN_OPTS in
  ``boards/my/board/board.cmake``, see example in
  ``soc/intel/adsp/common/CMakeLists.txt``

Starting with Zephyr 3.6.0, ``west flash`` does not invoke ``west sign``
anymore and you cannot pass rimage parameters to ``west flash`` anymore. To
see an up-to-date list of all arguments to the Intel ADSP runner, run the
following after you have built the binary:

.. code-block:: console

   west flash --context

Remote Flashing to cAVS-based ADSP
----------------------------------

As mentioned previously, the recommended way to run and monitor the output of
Zephyr on cAVS boards is remotely. The Linux host on the main CPU may freeze up
and need to be restarted if a flash or runtime error occurs on the ADSP. From
this point onward, we will refer to the board as the "remote host" and your
development machine as the "local host".

Copy the below scripts to the cAVS board.
:zephyr_file:`soc/intel/intel_adsp/tools/remote-fw-service.py` will receive
the binary sent over the network by West and invoke
:zephyr_file:`soc/intel/intel_adsp/tools/cavstool.py` (referred to as the
"cAVS tool"), which performs the flash and captures the log. Start
:file:`remote-fw-service.py`.

.. code-block:: console

   scp -r $ZEPHYR_BASE/soc/intel/intel_adsp/tools/cavstool.py username@remotehostname
   scp -r $ZEPHYR_BASE/soc/intel/intel_adsp/tools/remote-fw-service.py username@remotehostname
   ssh username@remotehostname
   sudo ./remote-fw-service.py

:file:`remote-fw-service.py` uses ports 9999 and 10000 on the remote host to
communicate. It forwards logs collected by :file:`cavstool.py` on port 9999
(referred to as its "log port") and services requests on port 10000
(its "requests port"). When you run West or Twister on your local host,
it sends requests using the :zephyr_file:`soc/intel/intel_adsp/tools/cavstool_client.py`
script (referred to as "cAVS tool client"). It also uses ports 9999 and 10000 on
your local host, so be sure those ports are free.

Flashing with West is simple.

.. code-block:: console

   west flash --remote-host remotehostname --pty remotehostname

Running tests with Twister is slightly more complicated.

.. code-block:: console

   twister -p intel_adsp/cavs25 --device-testing --device-serial-pty="$ZEPHYR_BASE/soc/intel/intel_adsp/tools/cavstool_client.py,-s,remotehostname,-l" --west-flash="--remote-host=remotehostname" -T samples/hello_world

If your network is set up such that the TCP connection from
:file:`cavstool_client.py` to :file:`remote-fw-service.py` is forwarded through
an intermediate host, you may need to tell :file:`cavstool_client.py` to connect
to different ports as well as a different hostname. You can do this by appending
the port numbers to the intermediate host name.

.. code-block:: console

   west flash --remote-host intermediatehost:reqport --pty remotehostname:logport
   twister -p intel_adsp/cavs25 --device-testing --device-serial-pty="$ZEPHYR_BASE/soc/intel/intel_adsp/tools/cavstool_client.py,-s,remotehostname:logport,-l" --west-flash="--remote-host=remotehostname:reqport" -T samples/hello_world

You can also save this information to a hardware map file and pass that to
Twister.

.. code-block:: console

   twister -p intel_adsp/cavs25 --hardware-map cavs.map --device-testing -T samples/hello_world

Here's a sample ``cavs.map``:

.. code-block:: console

   - connected: true
     id: None
     platform: intel_adsp/cavs25
     product: None
     runner: intel_adsp
     serial_pty: "/home/zephyrus/zephyrproject/zephyr/soc/intel/intel_adsp/tools/cavstool_client.py,-s,remotehostname:logport,-l"
     runner_params:
     - --remote-host=remotehostname:reqport

Any of the arguments you would pass to Twister or West, you can pass with the
hardware map. As mentioned previously, you can see the Intel ADSP runner
arguments by passing the ``--context`` flag while flashing with West.

Refer to :ref:`twister_script` for more information on hardware maps.

Local Flashing to cAVS-based ADSP
---------------------------------

You can also directly flash the signed binary with the cAVS tool on the board.
This may be useful for debugging.

.. code-block:: console

   sudo ./cavstool.py zephyr.ri

You should see the following at the end of the log if you are successful:

.. code-block:: console

   ***** Booting Zephyr OS vx.x.x-xxx-gxxxxxxxxxxxx *****
   Hello World! intel_adsp

Flashing to ACE-based ADSP
--------------------------

Flashing is not yet supported for platforms with ACE-based ADSP, as these
platforms are not yet publicly available.

Debugging
---------

As Zephyr doesn't (yet) support GDB for the Intel ADSP platforms, users are
recommended to take advantage of Zephyr's built-in :ref:`coredump` and
:ref:`logging_api` features.

Troubleshooting
***************

You can pass verbose flags directly to the Intel ADSP scripts:

.. code-block:: console

   sudo ./remote-fw-service.py -v
   sudo ./cavstool.py zephyr.ri -v

To see a list of their arguments:

.. code-block:: console

   sudo ./remote-fw-service.py --help
   sudo ./cavstool.py --help

If flashing fails at ``west sign`` with errors related to unparsed keys, try
reinstalling the latest version of the signing tool. For example:

.. code-block:: shell

   error: 1 unparsed keys left in 'adsp'
   error: 1 unparsed arrays left in 'adsp'

If you get an "Address already in use" error when starting
:file:`remote-fw-service.py` on the board, you may have another instance of the
script running. Kill it.

.. code-block:: console

   $ sudo netstat -peanut | grep 9999
   tcp   0   0 0.0.0.0:9999   0.0.0.0:*   LISTEN   0   289788   14795/python3
   $ sudo kill 14795

If West or Twister successfully sign and establish TCP connections
with :file:`remote-fw-service.py` but hang with no output afterwards,
there are two possibilities: either :file:`remote-fw-service.py` failed
to communicate, or :file:`cavstool.py` failed to flash. Log into
the remote host and check the output of :file:`remote-fw-service.py`.

If a message about "incorrect communication" appears, you mixed up the port
numbers for logging and requests in your command or hardware map. Switch them
and try again.

.. code-block:: shell

   ERROR:remote-fw:incorrect monitor communication!

If a "load failed" message appears, that means the flash failed. Examine the
log of ``west flash`` and carefully check that the arguments to ``west sign``
are correct.

.. code-block:: console

   WARNING:cavs-fw:Load failed?  FW_STATUS = 0x81000012
   INFO:cavs-fw:cAVS firmware load complete
   --

Sometimes a flash failure or network miscommunication corrupts the state of
the ADSP or :file:`remote-fw-service.py`. If you are unable to identify a
cause of repeated failures, try restarting the scripts and / or power cycling
your board to reset the state.

Users - particularly, users of the Xtensa toolchain - should also consider
clearing their Zephyr cache, as caching issues can occur from time to time.
Delete the cache as well as any applicable build directories and start from
scratch. You can try using the "pristine" option of West first, if you like.

.. code-block:: console

   rm -rf build twister-out*
   rm -rf ~/.ccache ~/.cache/zephyr

Xtensa toolchain users can get more detailed logs from the license server by
exporting ``FLEXLM_DIAGNOSTICS=3``.

.. _SOF: https://thesofproject.github.io/latest/index.html

.. _Chromebooks: https://www.hp.com/us-en/shop/pdp/hp-chromebook-x360-14c-cc0047nr

.. _UP Xtreme: https://up-board.org/up-xtreme/

.. _UP Xtreme i11-0001 series: https://up-shop.org/up-xtreme-i11-boards-0001-series.html

.. _SOF instructions: https://thesofproject.github.io/latest/getting_started/build-guide/build-with-zephyr.html

.. _UP Community wiki: https://github.com/up-board/up-community/wiki/Ubuntu

.. _Cadence: https://www.cadence.com/en_US/home/tools/ip/tensilica-ip.html

Part 3

한국어 전문 번역

Intel ADSP cAVS와 ACE

Intel의 Audio and Digital Signal Processing(ADSP) hardware에는 Converged Audio Voice Speech(cAVS) series와 그 후속인 Audio and Context Engine(ACE)이 있습니다. 이 Xtensa 기반 ADSP는 다양한 Intel product에 통합할 수 있습니다. 다음 표는 각 Intel ADSP version과 호환되는 Intel microprocessor의 일부를 보여 줍니다.

ADSPMicroprocessor
cAVS 1.5Apollo Lake
cAVS 1.8Whiskey Lake
cAVS 2.5Tiger Lake
ACE 1.5Meteor Lake

Intel은 ADSP hardware firmware를 Sound Open Firmware(SOF) project로 공개합니다. SOF는 Zephyr 또는 Cadence의 proprietary Xtensa OS(XTOS)로 build할 수 있고 다양한 Intel·non-Intel platform에서 실행됩니다.

Intel UP Xtreme product line에는 Zephyr Intel ADSP support용으로 공개된 reference board가 있습니다. 이 guide는 UP Xtreme i11-0001 series의 intel_adsp/cavs25 board를 예로 사용합니다. 별도 언급이 없다면 절차는 다른 board에도 적용되며, 차이가 있는 경우 해당 board 문서를 따라야 합니다.

System requirement

Target board 설정

Zephyr를 ADSP에 flash하려면 board main CPU에서 실행되는 Linux host의 Zephyr Python tool을 사용해야 합니다. Development machine에서 binary를 local build하고 remote flash하는 방식을 사용할 수 있으며 권장됩니다. 다만 board 자체는 West가 network로 보낸 binary를 받아 flash하는 Python script를 실행할 수 있어야 합니다. Zephyr가 요구하는 현재 Python version을 지원하거나 포함하는 Linux를 설치하십시오. 원문은 Python 3.8을 포함한 Ubuntu 20.04를 예로 듭니다.

Board에서 SOF를 사용할 계획이라면 default kernel이 아니라 수정된 Linux SOF kernel을 build·install해야 합니다. SOF build with Zephyr 지침을 따라 SOF를 build·run하는 것을 권장합니다. UP Xtreme 사용자는 UP Community wiki에서 Linux 설치 도움을 받을 수 있습니다.

Signing tool

Skylake 이후 Intel product에서는 firmware binary signing이 필수이므로 SOF rimage signing tool과 key를 설정해야 합니다.

cd zephyrproject
west config manifest.project-filter -- +sof
west update
cd modules/audio/sof/tools/rimage

rimage/README.md 지침에 따라 tool을 build합니다. Executable을 PATH directory에 복사하거나 west config rimage.path /path/to/rimage-build/rimage를 사용할 수 있습니다. 자세한 내용은 west sign -h 출력을 확인하십시오. Build directory에서 직접 실행하면 오래된 rimage version을 실수로 사용할 가능성이 줄어듭니다.

Platform-specific configuration file은 rimage/config/에 있습니다. 다른 directory를 사용하려면 west config build.cmake-args -- -DRIMAGE_CONFIG_PATH=/path/to/my/rimage/config를 설정합니다.

Xtensa toolchain 선택 사용

Zephyr SDK는 cAVS·ACE board용 Zephyr build에 필요한 GCC 기반 toolchain을 제공합니다. 더 높은 optimization이 필요하면 Cadence가 배포하는 proprietary Xtensa toolchain을 사용할 수 있습니다. 다음 절차는 사용자가 해당 board용 toolchain과 core를 구입해 설치했다고 가정합니다.

Cadence 지침에 따라 $HOME/.flexlmrc file 또는 XTENSAD_LICENSE_FILE variable을 먼저 설정하고 다음 environment variable을 지정합니다.

export XTENSA_TOOLCHAIN_PATH=$HOME/xtensa/XtDevTools/install/tools
export XTENSA_BUILDS_DIR=$XTENSA_TOOLCHAIN_PATH/../builds
export ZEPHYR_TOOLCHAIN_VARIANT=xcc
export TOOLCHAIN_VER=RG-2017.8-linux
export XTENSA_CORE=cavs2x_LX6HiFi3_2017_8

마지막 세 variable은 cAVS·ACE version마다 다르므로 해당 board 문서의 값을 사용합니다.

Programming과 Debugging

Build

일반적인 방식으로 hello_world를 build합니다.

west build -b intel_adsp/cavs25 samples/hello_world

Signing

west build는 build 마지막에 binary signing을 시도합니다. 직접 서명해야 한다면 west sign을 실행할 수 있습니다. West log에서 실제 west sign invocation을 찾아 복사·수정할 수 있으며 west sign -h에서 자세한 내용을 확인합니다.

Build는 가능한 한 많은 default rimage parameter를 제공합니다. 필요하면 상황과 use case에 따라 여러 방식으로 override할 수 있습니다. 서로 배타적이지 않은 경우가 많지만 문서화되지 않은 rimage precedence rule을 피하려면 한 번에 한 방식만 사용하는 것이 좋습니다.

  • Local interactive 사용에는 west config의 rimage.extra-args를 우선 사용합니다. 필요하면 WEST_CONFIG_LOCAL environment variable로 다른 west configuration file을 가리킬 수 있습니다.
  • rimage/config/ directory의 $platform.toml file을 추가하거나 덮어쓸 수 있습니다.
  • Board-specific 요구에는 boards/my/board/board.cmake에서 WEST_SIGN_OPTS를 정의할 수 있습니다. 예시는 soc/intel/adsp/common/CMakeLists.txt에 있습니다.

Zephyr 3.6.0부터 west flash는 더 이상 west sign을 호출하지 않으며 rimage parameter도 전달할 수 없습니다. Binary build 후 Intel ADSP runner의 최신 인수 목록을 확인합니다.

west flash --context

cAVS 기반 ADSP에 remote flash

cAVS board에서 Zephyr를 실행하고 출력을 감시하는 권장 방법은 remote 방식입니다. ADSP flash 또는 runtime error가 발생하면 main CPU의 Linux host가 멈춰 restart해야 할 수 있습니다. 이후 board를 remote host, development machine을 local host라고 부릅니다.

soc/intel/intel_adsp/tools/remote-fw-service.py와 cavstool.py를 cAVS board로 복사합니다. remote-fw-service.py는 West가 network로 보낸 binary를 받고, flash와 log capture를 수행하는 cAVS tool cavstool.py를 호출합니다.

scp -r $ZEPHYR_BASE/soc/intel/intel_adsp/tools/cavstool.py username@remotehostname
scp -r $ZEPHYR_BASE/soc/intel/intel_adsp/tools/remote-fw-service.py username@remotehostname
ssh username@remotehostname
sudo ./remote-fw-service.py

remote-fw-service.py는 remote host의 port 9999와 10000을 사용합니다. cavstool.py가 수집한 log는 9999(log port)로 전달하고 request는 10000(requests port)에서 처리합니다. Local host의 West·Twister는 cAVS tool client인 cavstool_client.py로 request를 보내며 local host에서도 9999와 10000을 사용하므로 두 port가 비어 있어야 합니다.

West remote flashing은 다음과 같습니다.

west flash --remote-host remotehostname --pty remotehostname

Twister test는 다음과 같이 실행합니다.

twister -p intel_adsp/cavs25 --device-testing --device-serial-pty="$ZEPHYR_BASE/soc/intel/intel_adsp/tools/cavstool_client.py,-s,remotehostname,-l" --west-flash="--remote-host=remotehostname" -T samples/hello_world

cavstool_client.py에서 remote-fw-service.py로 가는 TCP connection이 intermediate host를 통해 forwarding된다면 hostname과 함께 다른 port도 지정해야 할 수 있습니다. Intermediate hostname 뒤에 port number를 붙입니다.

west flash --remote-host intermediatehost:reqport --pty remotehostname:logport
twister -p intel_adsp/cavs25 --device-testing --device-serial-pty="$ZEPHYR_BASE/soc/intel/intel_adsp/tools/cavstool_client.py,-s,remotehostname:logport,-l" --west-flash="--remote-host=remotehostname:reqport" -T samples/hello_world

이 정보를 hardware map file에 저장하고 Twister에 전달할 수도 있습니다.

twister -p intel_adsp/cavs25 --hardware-map cavs.map --device-testing -T samples/hello_world

cavs.map 예시는 다음과 같습니다.

- connected: true
  id: None
  platform: intel_adsp/cavs25
  product: None
  runner: intel_adsp
  serial_pty: "/home/zephyrus/zephyrproject/zephyr/soc/intel/intel_adsp/tools/cavstool_client.py,-s,remotehostname:logport,-l"
  runner_params:
  - --remote-host=remotehostname:reqport

Twister·West에 전달하는 인수는 hardware map에도 넣을 수 있습니다. West flash의 --context flag로 Intel ADSP runner 인수를 확인할 수 있으며 hardware map의 자세한 내용은 Twister 문서를 참고합니다.

cAVS 기반 ADSP에 local flash

Signed binary를 board의 cAVS tool로 직접 flash할 수도 있으며 debugging에 유용합니다.

sudo ./cavstool.py zephyr.ri

성공하면 log 끝에 다음 내용이 표시됩니다.

***** Booting Zephyr OS vx.x.x-xxx-gxxxxxxxxxxxx *****
Hello World! intel_adsp

ACE 기반 ADSP에 flash

Zephyr 3.7.0 원문 기준으로 ACE 기반 ADSP platform은 아직 공개되지 않았으므로 flashing도 지원되지 않습니다.

Debugging

Zephyr는 아직 Intel ADSP platform의 GDB를 지원하지 않으므로 built-in coredump와 logging API를 활용하는 것이 권장됩니다.

Troubleshooting

Verbose와 help

Intel ADSP script에 verbose flag를 직접 전달할 수 있습니다.

sudo ./remote-fw-service.py -v
sudo ./cavstool.py zephyr.ri -v

인수 목록은 다음과 같이 확인합니다.

sudo ./remote-fw-service.py --help
sudo ./cavstool.py --help

Signing tool key parse error

west sign 단계에서 unparsed key 관련 error로 flashing이 실패하면 최신 signing tool을 다시 설치합니다. 예시는 다음과 같습니다.

error: 1 unparsed keys left in 'adsp'
error: 1 unparsed arrays left in 'adsp'

Address already in use

Board에서 remote-fw-service.py 시작 시 이 error가 나면 다른 instance가 실행 중일 수 있습니다. Process를 찾아 종료합니다.

$ sudo netstat -peanut | grep 9999
tcp   0   0 0.0.0.0:9999   0.0.0.0:*   LISTEN   0   289788   14795/python3
$ sudo kill 14795

TCP 연결 뒤 출력 없이 멈춤

West·Twister가 signing과 remote-fw-service.py TCP connection에는 성공했지만 이후 출력 없이 멈추면 remote-fw-service.py의 communication failure 또는 cavstool.py flash failure일 수 있습니다. Remote host에 login해 service 출력을 확인합니다.

incorrect communication message가 보이면 command나 hardware map에서 log port와 requests port를 뒤바꾼 것입니다. 서로 바꿔 다시 시도합니다.

ERROR:remote-fw:incorrect monitor communication!

load failed가 보이면 flash가 실패한 것입니다. west flash log와 west sign 인수를 세밀히 확인합니다.

WARNING:cavs-fw:Load failed?  FW_STATUS = 0x81000012
INFO:cavs-fw:cAVS firmware load complete
--

반복 실패와 cache

Flash failure나 network miscommunication은 ADSP 또는 remote-fw-service.py state를 손상할 수 있습니다. 반복 실패 원인을 찾지 못하면 script를 다시 시작하거나 board 전원을 껐다 켜 state를 reset합니다.

특히 Xtensa toolchain 사용자는 cache 문제에 대비해 Zephyr cache와 관련 build directory를 지우고 처음부터 시작해야 할 수 있습니다. 먼저 West의 pristine option을 시도할 수도 있습니다.

rm -rf build twister-out*
rm -rf ~/.ccache ~/.cache/zephyr

Xtensa toolchain 사용자는 FLEXLM_DIAGNOSTICS=3을 export해 license server의 더 자세한 log를 얻을 수 있습니다.

Source

출처

영어 원문에는 문단, 문서 지시문, 표, 코드, 코드 심벌, 경로를 그대로 보존했습니다.